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

#ifndef _WASHMACHINE_DATA_MANAGE_H_
#define _WASHMACHINE_DATA_MANAGE_H_


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

#ifdef __cplusplus
extern "C" {
#endif

/*洗车机数据结构体*/
typedef struct S_WashMachineDataStruct
{
    UINT16 CurVobcId;														/*当前洗车的VOBC ID（动态字段）*/
	UINT16 WashMachineId;                 	                                /*洗车机ID (初始化字段)*/
	UINT8 WashMachineReadyState;    										/*洗车机就绪状态(动态字段:采集)、洗车同意标志：合肥根据按下持续时间计算*/
	UINT8 WashMachineRequestVerifyState;    								/*洗车机请求确认状态(动态字段:采集)*/
	UINT8 TrainEmergencyStopState;                                          /*列车紧急停车状态(动态字段:采集)*/
	UINT8 HeadWashAllowState;                                               /*允许车头清洗状态(动态字段:采集)*/
	UINT8 TailWashAllowState;     										    /*允许车尾清洗状态(动态字段:采集)*/
	UINT8 WashTrainRequestDrvState;                                         /*洗车请求驱动状态(动态字段:驱动)*/
	UINT8 TrainHeadStopSteadyDrvState;                                      /*车头停稳驱动状态(动态字段:驱动)*/
	UINT8 TrainTailStopSteadyDrvState;                                      /*车尾停稳驱动状态(动态字段:驱动)*/
	UINT8 TrainOutWashTrainPortAllowState;                                  /*允许出洗车库状态(动态字段:采集)*/
	UINT8 PauseTrainWashRequestDrvState;                                    /*暂停洗车请求驱动状态(动态字段:驱动)*/
	UINT8 PaseWashMachineRequesDrvtState;                                   /*通过洗车机请求驱动状态(动态字段:驱动)*/
	UINT8 WashMachineWorkModeDrvtState;                                     /*洗车机工作模式设置驱动状态(动态字段:驱动)*/
	UINT32	WashWorkModeRelayDrvCycle;									/*洗车模式继电器驱动起始周期号*/
	UINT8	WashmachineXTACurState;		/*洗车同意按钮当前状态，洗车同意按钮继电器吸起为按钮按下，按下：0xaa  抬起：0x55*/
	UINT8	WashmachineXTAPreState;		/*洗车同意按钮上周期状态，按下：0xaa  抬起：0x55*/
	UINT8	WashmachineXTALogicState;	/*洗车机按钮逻辑状态 按下：0xaa  抬起：0x55，不同意只能由现地更新，同意由一个上升沿接着一个下降沿且逻辑状态为不同意时更新*/
	UINT32	WashmachineXTAPressDownCycle;/*上升沿，洗车机洗车同意按钮按下起始周期，当前按下，上周期抬起，更新[按下周期],只有按钮逻辑状态为同意时，才计时*/
	UINT8   WashModeState;                 /*洗车模式(动态字段:采集)*/
	UINT8   chSetWashWorkModeBack;             /*设置洗车机工作模式反馈(动态字段:采集)*/
	UINT8   chDownWashAllowState;              /*降级模式洗车同意状态(动态字段:采集)*/
	UINT8   chDownWashAllowPassState;          /*降级模式洗车同意通过状态(动态字段:采集)*/
} WashMachineDataStruct;


extern WashMachineDataStruct WashMachineDataStru[WASHMACHINE_SUM_MAX];       /*定义洗车机数据结构体*/
/*
* 功能描述： 获取指定ID洗车机数据
* 参数说明： 
* 返回值  ： WashMachineDataStruct *
*/
WashMachineDataStruct *GetWashMachineData(void);

/*
* 功能描述： 获取指定ID洗车机就绪状态
* 参数说明： const UINT16 WashMachineId, 洗车机ID    
* 返回值  ： 0: 获取数据失败
*			>0: 洗车机就绪状态     
*/
UINT8 GetWashMachineReadyState(const UINT16 WashMachineId);

/*
* 功能描述： 设置指定ID洗车机就绪状态
* 参数说明： const UINT16 WashMachineId, 洗车机ID    
             const UINT8 state,设置状态
* 返回值  ： 0: 设置失败
*			 1: 设置成功     
*/
UINT8 SetWashMachineReadyState(const UINT16 WashMachineId,const UINT8 state);




/*
* 功能描述： 获取指定ID洗车机请求确认状态
* 参数说明： const UINT16 WashMachineId, 洗车机ID    
* 返回值  ： 0: 获取数据失败
*			>0: 请求确认状态    
*/
UINT8 GetWashMachineRequestVerifySta(const UINT16 WashMachineId);

/*
* 功能描述： 设置指定ID洗车机请求确认状态
* 参数说明： const UINT16 WashMachineId, 洗车机ID    
             const UINT8 state,设置状态
* 返回值  ： 0: 设置失败
*			 1: 设置成功     
*/
UINT8 SetWashMachineRequestVerifySta(const UINT16 WashMachineId,const UINT8 state);



/*
* 功能描述： 获取指定ID洗车机列车紧急停车状态
* 参数说明： const UINT16 WashMachineId, 洗车机ID    
* 返回值  ： 0: 获取数据失败
*			>0: 列车紧急停车状态    
*/
UINT8 GetTrainEmergencyStopState(const UINT16 WashMachineId);
/*
* 功能描述： 设置指定ID洗车机列车紧急停车状态
* 参数说明： const UINT16 WashMachineId, 洗车机ID    
             const UINT8 state,设置状态
* 返回值  ： 0: 设置失败
*			 1: 设置成功     
*/
UINT8 SetTrainEmergencyStopState(const UINT16 WashMachineId,const UINT8 state);



/*
* 功能描述： 获取指定ID洗车机允许车头清洗状态
* 参数说明： const UINT16 WashMachineId, 洗车机ID    
* 返回值  ： 0: 获取数据失败
*			>0: 允许车头清洗状态    
*/
UINT8 GetHeadWashAllowState(const UINT16 WashMachineId);
/*
* 功能描述： 设置指定ID洗车机允许车头清洗状态
* 参数说明： const UINT16 WashMachineId, 洗车机ID    
             const UINT8 state,设置状态
* 返回值  ： 0: 设置失败
*			 1: 设置成功     
*/
UINT8 SetHeadWashAllowState(const UINT16 WashMachineId,const UINT8 state);



/*
* 功能描述： 获取指定ID洗车机允许车尾清洗状态
* 参数说明： const UINT16 WashMachineId, 洗车机ID    
* 返回值  ： 0: 获取数据失败
*			>0: 允许车尾清洗状态    
*/
UINT8 GetTailWashAllowState(const UINT16 WashMachineId);
/*
* 功能描述： 设置指定ID洗车机允许车尾清洗状态
* 参数说明： const UINT16 WashMachineId, 洗车机ID    
             const UINT8 state,设置状态
* 返回值  ： 0: 设置失败
*			 1: 设置成功     
*/
UINT8 SetTailWashAllowState(const UINT16 WashMachineId,const UINT8 state);

/*
* 功能描述： 获取指定ID洗车机允许出洗车库状态
* 参数说明： const UINT16 WashMachineId, 洗车机ID    
* 返回值  ： 0: 获取数据失败
*			>0: 允许出洗车库状态     
*/
UINT8 GetTrainOutWashPortAllowSta(const UINT16 WashMachineId);
/*
* 功能描述： 设置指定ID洗车机允许允许出洗车库状态
* 参数说明： const UINT16 WashMachineId, 洗车机ID    
             const UINT8 state,设置状态
* 返回值  ： 0: 设置失败
*			 1: 设置成功     
*/
UINT8 SetTrainOutWashPortAllowSta(const UINT16 WashMachineId,const UINT8 state);




/*
* 功能描述： 获取指定ID洗车机洗车请求驱动状态
* 参数说明： const UINT16 WashMachineId, 洗车机ID    
* 返回值  ： 0: 获取数据失败
*			>0: 洗车请求驱动状态     
*/
UINT8 GetWashTrainRequestDrvState(const UINT16 WashMachineId);
/*
* 功能描述： 设置指定ID洗车机洗车请求驱动状态
* 参数说明： const UINT16 WashMachineId, 洗车机ID  
*			 const UINT8 drvState, 驱动状态
* 返回值  ： 无
*			   
*/
void SetWashTrainRequestDrvState(const UINT16 WashMachineId, const UINT8 drvState);



/*
* 功能描述： 获取指定ID洗车机车头停稳驱动状态
* 参数说明： const UINT16 WashMachineId, 洗车机ID    
* 返回值  ： 0: 获取数据失败
*			>0: 车头停稳驱动状态    
*/
UINT8 GetTrainHeadStopSteadyDrvState(const UINT16 WashMachineId);
/*
* 功能描述： 设置指定ID洗车机车头停稳驱动状态
* 参数说明： const UINT16 WashMachineId, 洗车机ID  
*			 const UINT8 drvState, 驱动状态
* 返回值  ： 无
*			      
*/
void SetTrainHeadStopSteadyDrvState(const UINT16 WashMachineId, const UINT8 drvState);

/*
* 功能描述： 获取指定ID洗车机车尾停稳驱动状态
* 参数说明： const UINT16 WashMachineId, 洗车机ID    
* 返回值  ： 0: 获取数据失败
*			>0: 车尾停稳驱动状态  
*/
UINT8 GetTrainTailStopSteadyDrvState(const UINT16 WashMachineId);
/*
* 功能描述： 设置指定ID洗车机车尾停稳驱动状态
* 参数说明： const UINT16 WashMachineId, 洗车机ID  
*			 const UINT8 drvState, 驱动状态
* 返回值  ： 无
*			        
*/
void SetTrainTailStopSteadyDrvState(const UINT16 WashMachineId, const UINT8 drvState);

/*
* 功能描述： 获取指定ID洗车机的当前洗车VOBC ID
* 参数说明： const UINT16 WashMachineId, 洗车机ID    
* 返回值  ： 0: 获取数据失败
*			>0: 当前洗车VOBC ID    
*/
UINT16 GetWashMachineCurVobcID(const UINT16 WashMachineId);

/*
* 功能描述： 设置指定ID洗车机的当前洗车VOBC ID
* 参数说明： const UINT16 WashMachineId, 洗车机ID
*            const UINT16 curVobcId，当前洗车VOBC ID  
* 返回值  ： 无
*			 
*/
void SetWashMachineCurVobcID(const UINT16 WashMachineId,const UINT16 curVobcId);

/*
* 功能描述： 获取指定ID洗车机暂停洗车请求驱动状态
* 参数说明： const UINT16 WashMachineId, 洗车机ID    
* 返回值  ： 0: 获取数据失败
*			>0: 暂停洗车请求驱动状态     
*/
UINT8 GetPauseTrainWashRequestDrvSta(const UINT16 WashMachineId);

/*
* 功能描述： 设置指定ID洗车机暂停洗车请求驱动状态
* 参数说明： const UINT16 WashMachineId, 洗车机ID  
*			 const UINT8 drvState, 驱动状态
* 返回值  ：void    
*/
void SetPauseTrainWashRequestDrvSta(const UINT16 WashMachineId, const UINT8 drvState);

/*
* 功能描述： 获取指定ID通过洗车机请求驱动状态
* 参数说明： const UINT16 WashMachineId, 洗车机ID    
* 返回值  ： 0: 获取数据失败
*			>0: 通过洗车机请求驱动状态     
*/
UINT8 GetPassWashMachineReqDrvSta(const UINT16 WashMachineId);

/*
* 功能描述： 设置指定ID通过洗车机请求驱动状态
* 参数说明： const UINT16 WashMachineId, 洗车机ID  
*			 const UINT8 drvState, 驱动状态
* 返回值  ：无
*			       
*/
void SetPassWashMachineReqtDrvSta(const UINT16 WashMachineId, const UINT8 drvState);

/*
* 功能描述： 设置指定ID洗车机工作模式设置驱动状态
* 参数说明： const UINT16 WashMachineId, 洗车机ID
*			 const UINT8 drvState, 驱动状态
* 返回值  ：无
*by cgh 20231108
*/
void SetWashMachineWorkModeDrvState(const UINT16 WashMachineId, const UINT8 drvState);

/*
* 功能描述： 获取指定ID洗车机洗车模式设置驱动状态
* 参数说明： const UINT16 WashMachineId, 洗车机ID
* 返回值  ： 0XFF: 获取数据失败
*			0x01\0x02\0x00: 洗车模式设置驱动状态
* by cgh 20231108
*/
UINT8 GetWashMachineWorkModeDrvState(const UINT16 WashMachineId);

/*
* 功能描述： 设置指定ID洗车机工作模式反馈状态
* 参数说明： const UINT16 WashMachineId, 洗车机ID
*			 const UINT8 chBackState, 反馈状态
* 返回值  ：无
*by cgh 20231108
*/
void SetWashWorkModeBackState(const UINT16 WashMachineId, const UINT8 chBackState);

/*
* 功能描述： 获取指定ID洗车机洗车模式反馈状态
* 参数说明： const UINT16 WashMachineId, 洗车机ID
* 返回值  ： 0: 获取数据失败
*			>0: 洗车模式反馈状态
* by cgh 20231108
*/
UINT8 GetWashWorkModeBackState(const UINT16 WashMachineId);

/*
* 功能描述： 设置指定ID洗车机降级模式洗车同意状态
* 参数说明： const UINT16 WashMachineId, 洗车机ID
*			 const UINT8 chDownWashAllowState, 降级模式洗车同意状态
* 返回值  ：无
*by cgh 20231113
*/
void SetDownWashAllowState(const UINT16 WashMachineId, const UINT8 chDownWashAllowState);

/*
* 功能描述： 获取指定ID洗车机降级模式洗车同意状态
* 参数说明： const UINT16 WashMachineId, 洗车机ID
* 返回值  ： 0: 获取数据失败
*			>0: 降级模式洗车同意状态
* by cgh 20231108
*/
UINT8 GetDownWashAllowState(const UINT16 WashMachineId);

/*
* 功能描述： 设置指定ID洗车机降级模式洗车同意通过状态
* 参数说明： const UINT16 WashMachineId, 洗车机ID
*			 const UINT8 chBackState, 降级模式洗车同意通过状态
* 返回值  ：无
*by cgh 20231113
*/
void SetDownWashAllowPassState(const UINT16 WashMachineId, const UINT8 chDownWashAllowPassState);

/*
* 功能描述： 获取指定ID洗车机降级模式洗车同意通过状态
* 参数说明： const UINT16 WashMachineId, 洗车机ID
* 返回值  ： 0: 获取数据失败
*			>0: 降级模式洗车同意通过状态
* by cgh 20231108
*/
UINT8 GetDownWashAllowPassState(const UINT16 WashMachineId);


/****************************************************新增********************************************/

/*
* 功能描述：获取指定ID洗车机洗车同意按钮当前状态
* 参数说明： const UINT16 washMachineId, 洗车机ID
*            const UINT8 xtaState, 洗车同意按钮状态
* 返回值  ： 0: 设置数据失败
*           >0: 设置数据成功
*/
UINT8 GetWashmachineXTACurState(const UINT16 washMachineId);
/*
* 功能描述：设置指定ID洗车机洗车同意按钮当前状态
* 参数说明： const UINT16 washMachineId, 洗车机ID
*            const UINT8 xtaState, 洗车同意按钮状态
* 返回值  ： 0: 设置数据失败
*           >0: 设置数据成功
*/
UINT8 SetWashmachineXTACurState(const UINT16 washMachineId, const UINT8 xtaState);

/*
* 功能描述：获取指定ID洗车机洗车同意按钮之前状态
* 参数说明： const UINT16 washMachineId, 洗车机ID
*            const UINT8 xtaState, 洗车同意按钮状态
* 返回值  ： 0: 设置数据失败
*           >0: 设置数据成功
*/
UINT8 GetWashmachineXTAPreState(const UINT16 washMachineId);
/*
* 功能描述：设置指定ID洗车机洗车同意按钮之前状态
* 参数说明： const UINT16 washMachineId, 洗车机ID
*            const UINT8 xtaState, 洗车同意按钮状态
* 返回值  ： 0: 设置数据失败
*           >0: 设置数据成功
*/
UINT8 SetWashmachineXTAPreState(const UINT16 washMachineId, const UINT8 xtaState);


/*
* 功能描述：获取指定ID洗车机洗车同意按钮逻辑状态
* 参数说明： const UINT16 washMachineId, 洗车机ID
*            const UINT8 xtaState, 洗车同意按钮状态
* 返回值  ： 0: 设置数据失败
*           >0: 设置数据成功
*/
UINT8 GetWashmachineXTALogicState(const UINT16 washMachineId);
/*
* 功能描述：设置指定ID洗车机洗车同意按钮逻辑状态
* 参数说明： const UINT16 washMachineId, 洗车机ID
*            const UINT8 xtaState, 洗车同意按钮状态
* 返回值  ： 0: 设置数据失败
*           >0: 设置数据成功
*/
UINT8 SetWashmachineXTALogicState(const UINT16 washMachineId, const UINT8 xtaState);

/*
* 功能描述：设置指定ID洗车机洗车同意按钮按下起始周期号
* 参数说明： const UINT16 washMachineId, 洗车机ID
*            const UINT32 startCycNum, 起始周期号
* 返回值  ： 0: 设置数据失败
*           >0: 设置数据成功
*/
UINT8 SetWashMachineXTAPressDownCyc(const UINT16 washMachineId, const UINT32 startCycNum);
/*
* 功能描述： 获取指定ID洗车机洗车同意按钮按下起始周期号
* 参数说明： const UINT16 doorId，洗车机ID
* 返回值  ： 0: 获取数据失败
*           >0: 起始周期号
*/
UINT32 GetWashMachineXTAPressDownCyc(const UINT16 washMachineId);

/*
* 功能描述：设置指定ID洗车机洗车模式逻辑状态
* 参数说明： const UINT16 washMachineId, 洗车机ID
*            const UINT8 modeState, 洗车模式状态
* cgh-合并CID-3037-9：
*
*/
void SetWashModeState(const UINT16 washMachineId, const UINT8 modeState);

/*
* 功能描述：获取指定ID洗车机洗车模式逻辑状态
* 参数说明： const UINT16 washMachineId, 洗车机ID
*
* 返回值  ： 0: 获取数据失败
*           >0: 洗车模式
* cgh-合并CID-3037-9：
*/
UINT8 GetWashModeState(const UINT16 washMachineId);

/*
* 功能描述： 获取指定ID洗车机洗车模式驱动继电器驱动开始周期号
* 参数说明： const UINT16 washMachineId, 洗车机ID
* 返回值  ： 0: 获取数据失败
*			>0: 驱动起始周期号
* by cgh 20231208
*/
UINT32 GetWashWorkModeRelayDrvCycle(const UINT16 washMachineId);

/*
* 功能描述： 设置指定ID洗车机洗车模式驱动继电器驱动开始周期号
* 参数说明： const UINT16 washMachineId, 洗车机ID
*			 const UINT32 CycNum, 继电器驱动起始周期号
* 返回值  ： 无
*by cgh 20231208
*/
void SetWashWorkModeRelayDrvCycle(const UINT16 washMachineId, const UINT32 CycNum);

#ifdef __cplusplus
}
#endif

#endif
