/********************************************************
*                                                                                                            
* 文 件 名： WashMachineConfigDataManage.h   
* 版权说明： 北京交控科技有限公司 
* 创建时间： 2014-12-24
* 作    者： 联锁组
* 功能描述： 全自动洗车机数据管理头文件  
* 函数包括：
* 使用注意：
* 修改记录：   
*
********************************************************/ 

#ifndef _WASHMACHINE_CONFIG_DATA_MANAGE_H_
#define _WASHMACHINE_CONFIG_DATA_MANAGE_H_


#include "WashMachineDefine.h"
#include "CommonTypes.h"
#include "../System/CiSystemDefine.h"
#include "../System/SystemParameterManage.h"


#ifdef __cplusplus
extern "C" {
#endif


/*洗车机配置数据结构体*/
typedef struct S_WashMachineConfigDataStruct
{
    UINT16 WashMachineId;                									/*洗车机ID (配置字段)*/
    UINT8 BelongCiId;           											/*所属联锁ID*/	
	UINT8 BelongVirCiId;           											/*所属联锁ID*/	
	UINT16 WashMachineReadyRelayId;    									    /*洗车机就绪继电器(配置字段:采集继电器)*/
	UINT16 WashMachineRequestVerifyRelayId;    								/*洗车机请求确认继电器ID (配置字段:采集继电器)*/
	UINT16 TrainEmergencyStopRelayId;                                       /*列车紧急停车继电器(配置字段:采集继电器)*/
	UINT16 HeadWashAllowRelayId;                                            /*允许车头清洗继电器(配置字段:采集继电器)*/
	UINT16 TailWashAllowRelayId;     										/*允许车尾清洗继电器(配置字段:采集继电器)*/
	UINT16 WashTrainRequestRelayId;                /*洗车请求继电器(配置字段:驱动继电器)，合肥用作洗车同意继电器*/
	UINT16 TrainHeadStopSteadyRelayId;                                      /*车头停稳继电器(配置字段:驱动继电器)*/
	UINT16 TrainTailStopSteadyRelayId;                                      /*车尾停稳继电器(配置字段:驱动继电器)*/
	UINT16 TrainPassRequestRelayId;                                         /*通过请求继电器(配置字段:驱动继电器)*/
	UINT16 TrainOutWashPortAllowRelayId;                               /*允许列车出库继电器(配置字段:采集继电器)*/
	UINT16 PauseTrainWashRequestRelayId;                                    /*暂停洗车继电器(配置字段:驱动继电器)*/	
	UINT16 WashModeBackRelayId;                                             /*全自动洗车模式反馈继电器(配置字段:采集继电器)*/
	UINT16 WashModeRelayId;													/*全自动自动洗车模式继电器（配置字段:驱动继电器)*/
	UINT16 wDownWashAllowRelayId;											/*降级模式洗车同意按钮继电器ID(配置字段:采集继电器)*/
	UINT16 wDownWashAllowLightRelayId;										/*降级模式洗车同意指示灯继电器ID（配置字段:驱动继电器)*/
	UINT16 wDownWashAllowPassRelayId;										/*降级模式洗车同意通过按钮继电器ID(配置字段:采集继电器)*/
	UINT16 wDownWashRelateRoute1Id;											/*降级模式洗车线控制台表示灯1关联进路ID*/
	UINT8 wDownWashRelateRoute1CheckType;									/*降级模式洗车线控制台表示灯1关联进路状态检查类型*/
	UINT16 wDownWashRelRoute1LightRelayId;									/*降级模式洗车线控制台表示灯1继电器ID（配置字段:驱动继电器)*/
	UINT16 wDownWashRelateRoute2Id;											/*降级模式洗车线控制台表示灯2关联进路ID*/
	UINT8 wDownWashRelateRoute2CheckType;									/*降级模式洗车线控制台表示灯2关联进路状态检查类型*/
	UINT16 wDownWashRelRoute2LightRelayId;									/*降级模式洗车线控制台表示灯2继电器ID（配置字段:驱动继电器)*/
} WashMachineConfigDataStruct;


/*******************************全局变量声明*******************************/
extern WashMachineConfigDataStruct WashMachineConfigDataStru[WASHMACHINE_SUM_MAX];   /*定义洗车机数据配置结构体,cgh-合并CID-2539-1：此处声明不进行初始化，统一放到InitAllStaticDataStr函数中进行初始化，为解决生成内核过大得问题*/
extern UINT16 LocalCiWashMachineIdBuf[WASHMACHINE_SUM_MAX];                    /*定义本地联锁洗车机映射数组*/
extern UINT16 WashMachineCurSum;                                                /*洗车机当前总数*/
/*
* 功能描述： 获取洗车机当前总数
* 参数说明： void    
* 返回值  ： 0: 获取数据失败
*			>0: 洗车机当前总数
*/
UINT16 GetWashMachineSum(void);

/*
* 功能描述： 获取指定数组下标对应的洗车机ID
* 参数说明： const UINT16 bufIndex, 数组下标    
* 返回值  ： 0: 获取数据失败
*			>0: 洗车机ID    
*/
UINT16 GetWashMachineId(const UINT16 bufIndex);

/*
* 功能描述： 获取指定ID洗车机索引号
* 参数说明： const UINT16 washMachineId, 洗车机ID
* 返回值  ： SWITCH_SUM_MAX: 获取数据失败
*			<SWITCH_SUM_MAX: 查找成功
*/
UINT16 GetWashMachineIdConfigBufIndex(const UINT16 washMachineId);

/*
* 功能描述： 获取指定ID洗车机所属联锁ID
* 参数说明： const UINT16 washMachineId, 洗车机ID
* 返回值  ： 0: 获取数据失败
*			>0: 所属联锁ID      
*/
UINT8 GetWashMachineBelongCiId(const UINT16 washMachineId);

/*
* 功能描述： 获取指定ID洗车机工作就绪继电器ID
* 参数说明： const UINT16 washMachineId, 洗车机ID
* 返回值  ： 0: 获取数据失败
*			>0: 工作就绪继电器ID   
*/
UINT16 GetWashMachineReadyRelayId(const UINT16 washMachineId);

/*
* 功能描述： 获取指定ID洗车机请求确认继电器ID 
* 参数说明： const UINT16 washMachineId, 洗车机ID 
* 返回值  ： 0: 获取数据失败
*			>0: 请求确认继电器ID    
*/
UINT16 GetWashMachineReqVerifyRelayId(const UINT16 washMachineId);



/*
* 功能描述： 获取指定ID洗车机列车紧急停车继电器
* 参数说明： const UINT16 washMachineId, 洗车机ID  
* 返回值  ： 0: 获取数据失败
*			>0: 列车紧急停车继电器    
*/
UINT16 GetTrainEmergencyStopRelayId(const UINT16 washMachineId);


/*
* 功能描述： 获取指定ID洗车机允许车头清洗继电器
* 参数说明： const UINT16 washMachineId, 洗车机ID  
* 返回值  ： 0: 获取数据失败
*			>0: 允许车头清洗继电器   
*/
UINT16 GetHeadWashAllowRelayId(const UINT16 washMachineId);


/*
* 功能描述： 获取指定ID洗车机允许车尾清洗继电器
* 参数说明： const UINT16 washMachineId, 洗车机ID  
* 返回值  ： 0: 获取数据失败
*			>0: 允许车尾清洗继电器   
*/
UINT16 GetTailWashAllowRelayId(const UINT16 washMachineId);


/*
* 功能描述： 获取指定ID洗车机允许出洗车库继电器
* 参数说明： const UINT16 washMachineId, 洗车机ID  
* 返回值  ： 0: 获取数据失败
*			>0: 允许出洗车库继电器  
*/
UINT16 GetTrainOutWashPortAllowRelay(const UINT16 washMachineId);


/*
* 功能描述： 获取指定ID洗车机洗车请求继电器
* 参数说明： const UINT16 washMachineId, 洗车机ID  
* 返回值  ： 0: 获取数据失败
*			>0: 洗车请求继电器 
*/
UINT16 GetWashTrainRequestRelayId(const UINT16 washMachineId);


/*
* 功能描述： 获取指定ID洗车机车头停稳继电器
* 参数说明： const UINT16 washMachineId, 洗车机ID  
* 返回值  ： 0: 获取数据失败
*			>0: 车头停稳继电器
*/
UINT16 GetTrainHeadStopSteadyRelayId(const UINT16 washMachineId);

/*
* 功能描述： 获取指定ID洗车机车尾停稳继电器
* 参数说明： const UINT16 washMachineId, 洗车机ID  
* 返回值  ： 0: 获取数据失败
*			>0: 车尾停稳继电器
*/
UINT16 GetTrainTailStopSteadyRelayId(const UINT16 washMachineId);

/*
* 功能描述：	整理读入的洗车机配置数据
* 参数说明：	无
* 返回值  ：	CI_SUCCESS,整理成功
*				CI_ERROR,整理失败
*/
UINT8 WashMachineConfigDataManage(void);

/*
* 功能描述： 获取指定ID洗车机暂停洗车继电器
* 参数说明： const UINT16 washMachineId, 洗车机ID  
* 返回值  ： 0: 获取数据失败
*			>0: 暂停洗车继电器ID
*/
UINT16 GetPauseTrainWashRelayId(const UINT16 washMachineId);

/*
* 功能描述： 获取指定ID洗车机通过请求继电器
* 参数说明： const UINT16 washMachineId, 洗车机ID  
* 返回值  ： 0: 获取数据失败
*			>0: 通过请求继电器
*/
UINT16 GetPassRequestRelayId(const UINT16 washMachineId);

/*
* 功能描述： 获取指定ID洗车机所属虚拟联锁ID
* 参数说明： const UINT16 washMachineId, 洗车机ID
* 返回值  ： 0: 获取数据失败
*			>0: 所属联锁ID      
*/
UINT8 GetWashMachineBelongVirCiId(const UINT16 washMachineId);

/*
* 功能描述： 获取指定ID洗车机洗车模式反馈继电器
* 参数说明： const UINT16 washMachineId, 洗车机ID
* 返回值  ： 0: 获取数据失败
*			>0: 洗车模式反馈继电器
* by cgh 20231109
*/
UINT16 GetWashModeBackRelayId(const UINT16 washMachineId);

/*
* 功能描述： 获取指定ID洗车机洗车模式继电器ID
* 参数说明： const UINT16 washMachineId, 洗车机ID
* 返回值  ： 0: 获取数据失败
*			>0: 全自动自动洗车模式继电器
* by cgh 20231109
*/
UINT16 GetWashModeRelayId(const UINT16 washMachineId);

/*
* 功能描述： 获取指定ID洗车机降级模式洗车同意按钮继电器ID
* 参数说明： const UINT16 washMachineId, 洗车机ID
* 返回值  ： 0: 获取数据失败
*			>0: 降级模式洗车同意按钮继电器ID
* by cgh 20231109
*/
UINT16 GetDownWashAllowRelayId(const UINT16 washMachineId);

/*
* 功能描述： 获取指定ID洗车机降级模式洗车同意指示灯继电器ID
* 参数说明： const UINT16 washMachineId, 洗车机ID
* 返回值  ： 0: 获取数据失败
*			>0: 降级模式洗车同意指示灯继电器ID
* by cgh 20231109
*/
UINT16 GetDownWashAllowLightRelayId(const UINT16 washMachineId);

/*
* 功能描述： 获取指定ID洗车机降级模式洗车同意通过按钮继电器ID
* 参数说明： const UINT16 washMachineId, 洗车机ID
* 返回值  ： 0: 获取数据失败
*			>0: 降级模式洗车同意通过按钮继电器ID
* by cgh 20231109
*/
UINT16 GetDownWashAllowPassRelayId(const UINT16 washMachineId);

/*
* 功能描述： 获取指定ID洗车机降级模式洗车线控制台表示灯1关联进路ID
* 参数说明： const UINT16 washMachineId, 洗车机ID
* 返回值  ： 0: 获取数据失败
*			>0: 降级模式洗车线控制台表示灯1关联进路ID
* by cgh 20231109
*/
UINT16 GetDownWashRelateRoute1Id(const UINT16 washMachineId);

/*
* 功能描述： 获取指定ID洗车机降级模式洗车线控制台表示灯1关联进路状态检查类型
* 参数说明： const UINT16 washMachineId, 洗车机ID
* 返回值  ： 0: 获取数据失败
*			>0: 降级模式洗车线控制台表示灯1关联进路状态检查类型
* by cgh 20231109
*/
UINT8 GetDownWashRelRoute1CheckType(const UINT16 washMachineId);

/*
* 功能描述： 获取指定ID洗车机降级模式洗车线控制台表示灯1继电器ID
* 参数说明： const UINT16 washMachineId, 洗车机ID
* 返回值  ： 0: 获取数据失败
*			>0: 降级模式洗车线控制台表示灯1继电器ID
* by cgh 20231109
*/
UINT16 GetDownWashRelRoute1LightRelay(const UINT16 washMachineId);

/*
* 功能描述： 获取指定ID洗车机降级模式洗车线控制台表示灯2关联进路ID
* 参数说明： const UINT16 washMachineId, 洗车机ID
* 返回值  ： 0: 获取数据失败
*			>0: 降级模式洗车线控制台表示灯2关联进路ID
* by cgh 20231109
*/
UINT16 GetDownWashRelateRoute2Id(const UINT16 washMachineId);

/*
* 功能描述： 获取指定ID洗车机降级模式洗车线控制台表示灯2关联进路状态检查类型
* 参数说明： const UINT16 washMachineId, 洗车机ID
* 返回值  ： 0: 获取数据失败
*			>0: 降级模式洗车线控制台表示灯2关联进路状态检查类型
* by cgh 20231109
*/
UINT8 GetDownWashRelRoute2CheckType(const UINT16 washMachineId);

/*
* 功能描述： 获取指定ID洗车机降级模式洗车线控制台表示灯2继电器ID
* 参数说明： const UINT16 washMachineId, 洗车机ID
* 返回值  ： 0: 获取数据失败
*			>0: 降级模式洗车线控制台表示灯2继电器ID
* by cgh 20231109
*/
UINT16 GetDownWashRelRoute2LightRelay(const UINT16 washMachineId);

#ifdef __cplusplus
}
#endif

#endif
