/********************************************************
* 
* 文 件 名： DeviceRelayDataProcess.h   
* 版权说明： 北京交控科技有限公司 
* 创建时间： 2012-09-21
* 作    者： 联锁组
* 功能描述： 设备间数据管理头文件  
* 函数包括： 
* 使用注意：
* 修改记录：   
*
********************************************************/ 
#ifndef _DEVICE_RELAY_DATA_PROCESS_H_
#define _DEVICE_RELAY_DATA_PROCESS_H_

#include "../DataManage/DeviceDataManage.h"
#include "CommonTypes.h"
#include "../System/CiSystemDefine.h"
#include "../System/SystemParameterManage.h"
#include "../Relay/RelayConfigDataManage.h"
#include "../Relay/RelayDataManage.h"
#include "../Signal/SignalConfigDataManage.h"
#include "../Signal/SignalDataManage.h"
#include "../Switch/SwitchConfigDataManage.h"
#include "../Switch/SwitchDataManage.h"
#include "../Section/PhysicalSectionDataManage.h"
#include "../Section/PhysicalSectionConfigDataManage.h"
#include "../Section/AxisSectionConfigDataManage.h"
#include "../Section/AxisSectionDataManage.h"
#include "../Section/LogicSectionConfigDataManage.h"
#include "../Section/LogicSectionDataManage.h"
#include "../psd/PSDConfigDataManage.h"
#include "../psd/PSDDataManage.h"
#include "../esb/ESBConfigDataManage.h"
#include "../esb/ESBDataManage.h"
#include "../error/ErrorDataManage.h"
#include "../ParsePack/CiInterfaceDefine.h"
#include "../ParsePack/ParsePackAtsData.h"
#include "../ParsePack/ParsePackVobcData.h"
#include "../Route/RouteDataManage.h"
#include "../Route/RouteConfigDataManage.h"
#include "../Garagedoor/GaragedoorConfigDataManage.h"
#include "../Garagedoor/GaragedoorDataManage.h"
#include "../WashMachine/WashMachineConfigDataManage.h"
#include "../WashMachine/WashMachineDataManage.h"
#include "../ParsePack/ParsePackOcData.h"
#include "ReverseCutDataManage.h"
#include "ReverseCutConfigDataManage.h"

#ifdef __cplusplus
extern "C" {
#endif
    




/******************************信号机相关继电器处理****************************/

/*
* 功能描述： 信号机继电器状态->逻辑状态
* 参数说明： const UINT32 curCycleNum, 当前周期号
* 返回值  ： 0: 更新失败
*			 1: 更新成功      
*/
void SignalRelayToDeviceStateProc(void);


/*
* 功能描述： 信号机逻辑状态->继电器状态
* 参数说明： void
* 返回值  ： 0: 更新失败
*			 1: 更新成功      
*/
void SignalDeviceToRelayStateProc(void);


/*
* 功能描述： 根据信号机驱动信息驱动指定ID信号机继电器
* 参数说明： const UINT16 signalId
* 返回值  ： 0:设置失败
*			 >0:设置成功   
*/
UINT8 SetSignalRelayState(const UINT16 signalId);


/*
* 功能描述： 根据继电器采集数据获取指定ID信号机的当前显示颜色
* 参数说明： const UINT16 signalId
* 返回值  ： 0: 获取错误
*			 >0: 当前显示颜色   
*/
UINT8 GetSignalShowColor(const UINT16 signalId);

/*
* 功能描述： 信号机双系板卡故障，信号机当前设置颜色
* 参数说明：
UINT16 signalId：信号机id
UINT8 ocId  OC ID
* 返回值  ： 信号机颜色
*/
UINT8 GetOcBoardFaultSignalColor(UINT16 signalId, UINT8 ocId);

/*
* 功能描述： 信号机亮灯情况下，OC给全灭，信号机颜色设置
* 参数说明：
		UINT16 signalId：信号机id
* 返回值  ： 信号机颜色
*/
UINT8 SetSignalColorOcAllOff(const UINT16 signalId);

/******************************道岔相关继电器处理****************************/

/*
* 功能描述： 更新道岔逻辑状态
* 参数说明： const UINT32 curCycleNum, 当前周期号
* 返回值  ： 0: 更新失败
*			 1: 更新成功      
*/
void SwitchRelayToDeviceStateProc(void);
/* zt 删除单轨相关代码 2022-02-15 */
/*
* 功能描述： 更新道岔继电器状态
* 参数说明： void
* 返回值  ： 0: 更新失败
*			 1: 更新成功      
*/
void SwitchDeviceToRelayStateProc(void);


/******************************区段相关继电器处理****************************/

/*
* 功能描述： 更新物理区段占用状态
* 参数说明： const UINT32 curCycleNum, 当前周期号
* 返回值  ： void      
*/
void PhySecRelayToDeviceStateProc(void);

/*
* 功能描述： 更新区段计轴复位继电器状态
* 参数说明： void
* 返回值  ： void     
*/
void PhySecResetToRelayStateProc(void);
/*
* 功能描述： 更新区段计轴复位继电器状态
* 参数说明： void
* 返回值  ： void     
*/
void PhySecResetToRelayStateProc_Vir(UINT8 virCIid);
/*
* 功能描述： 更新所有区段计轴复位继电器状态
* 参数说明： void
* 返回值  ： void     
*/
void UpDataAllPhySecResetRelay_VirCI(void);

/******************************站台相关继电器处理****************************/

/*
* 功能描述： 更新屏蔽门逻辑状态
* 参数说明： void
* 返回值  ： 0: 更新失败
*			 1: 更新成功      
*/
void PsdRelayToDeviceStateProc(void);
#if 0
/*
* 功能描述： 屏蔽门状态转移处理函数
* 参数说明： void
* 返回值  ： void     
*/
void PsdStateTransferProc(void);
#endif
/*
* 功能描述： 更新屏蔽门继电器状态
* 参数说明： void
* 返回值  ： 0: 更新失败
*			 1: 更新成功      
*/
UINT8 PsdDeviceToRelayStateProc(void);

/*
* 功能描述： 更新洗车机继电器状态
* 参数说明： void
* 返回值  ： 0: 更新失败
*			 1: 更新成功      
*/
UINT8 WashMachineDevToRelayStaProc(void);

/*
* 功能描述： 更新紧急停车按钮逻辑状态
* 参数说明： void
* 返回值  ： 0: 更新失败
*			 1: 更新成功      
*/
UINT8 EsbRelayToDeviceStateProc(void);

/*
* 功能描述： 更新车库门的逻辑状态
* 参数说明： void
* 返回值  ： 0: 更新失败
*			 1: 更新成功
*/
UINT8 GaragedoorRelayToDevStaProc(void);

/*
* 功能描述： 更新车库门的逻辑开关门状态(仅配置开门、旁路继电器)
* 参数说明： void
* 返回值  ： 0u: 更新失败
*			 1: 更新成功
*/
UINT8 GDRelayToDeviceStateOnlyOpenPL(const UINT16 garagedoorId);

/*
* 功能描述： 更新车库门继电器状态
* 参数说明： void
* 返回值  ： 0: 更新失败
*			 1: 更新成功      
*/
void GaragedoorDevToRelayStaProc(void);

/*
* 功能描述： 更新洗车机的逻辑状态
* 参数说明： void
* 返回值  ： 0: 更新失败
*			 1: 更新成功
*/
UINT8 WashMachineToDeviceStateProc(void);
/*
* 功能描述： 更新Spks按钮逻辑状态
* 参数说明： void
* 返回值  ： 0: 更新失败
*			 1: 更新成功      
*/
UINT8 SpksRelayToDeviceStateProc(void);
/*
* 功能描述： 根据继电器采集数据获取指定ID信号机的显示颜色
* 参数说明： const UINT16 signalId
* 返回值  ： 0: SIGNAL_SHOWCOLOUR_INVALID
*			 >0: 当前显示颜色   
*/
UINT8 GetRelayToDeviceSignalColor(const UINT16 signalId);
/*
* 功能描述： 根据继电器采集数据获取指定ID信号机的显示颜色-没有配置DDJ的特殊处理
* 参数说明： const UINT16 signalId
* 返回值  ： 0: SIGNAL_SHOWCOLOUR_INVALID
*			 >0: 当前显示颜色   
*/
UINT8 GetNoDDJSignalColor(const UINT16 signalId);

/*
* 功能描述： 更新防淹门的设备逻辑状态
* 参数说明： void
* 返回值  ： void
*/
void FloodGateRelayToDeviceStateProc(void);


/*
* 功能描述： 更新防淹门继电器状态
* 参数说明： void
* 返回值  ： 无     
*/
void FloodGateDeviceToRelayStateProc(void);

/*
* 功能描述： 更新进路的调车同意逻辑状态
* 参数说明： void
* 返回值  ： void
* BY CGH 20250523
*/
void RouteDCTYRelayToDeviceStateProc(void);

/*
* 功能描述： 更新调车同意继电器状态
* 参数说明： void
* 返回值  ： 无     
*/
void RouteDCTYToRelayStateProc(void);

/*
* 功能描述： 设置只有采集列车信号继电器状态的信号机颜色
* 参数说明： const UINT16 signalId :信号机ID
* 返回值  ： 无  
*/
void SetNoDriveSignalCurColor(const UINT16 signalId);

/*
* 功能描述： OC信号机设备采集状态->逻辑状态
* 参数说明： void
* 返回值  ： void
*
*/
void OcSignalDeviceInput(void);

/*
* 功能描述： OC道岔设备采集状态->逻辑状态
* 参数说明： void
* 返回值  ： void
*/
void OcSwitchDeviceInput(void);


/*
* 功能描述： OC信号机设备输出处理
* 参数说明： void
* 返回值  ： void
*/
void OcSignalDeviceOutput(void);

/*
* 功能描述： OC道岔设备输出处理
* 参数说明： void
* 返回值  ： void
*/
void OcSwitchDeviceOutput(void);

/*
* 功能描述： 获取OC信号机设备颜色
* 参数说明：
		UINT16 signalId：信号机id
* 返回值  ： void
*/
UINT8 GetOcSignalColor(UINT16 signalId);

/*
* 功能描述： 获取OC道岔设备颜色
* 参数说明：
		UINT16 signalId：信号机id
* 返回值  ： void
*/
UINT8 GetOcSwitchState(UINT16 switchId);

/*
* 功能描述： 间隙探测脉冲接口方式启动驱动处理
* 参数说明： UINT16 startJXTCRelayId 启动继电器
             UINT16 stopJXTCRelayId 停止继电器 
			 UINT16 psdId 屏蔽门ID
* 返回值  ： 无 
*/
void ProcessJXTCPulseInterfStartDrv (UINT16 startJXTCRelayId, UINT16 stopJXTCRelayId, UINT16 psdId);

/*
* 功能描述： 间隙探测脉冲接口方式停止驱动处理
* 参数说明： UINT16 startJXTCRelayId 启动继电器
             UINT16 stopJXTCRelayId 停止继电器 
			 UINT16 psdId 屏蔽门ID
* 返回值  ： 无 
*/
void ProcessJXTCPulseInterfStopDrv(UINT16 startJXTCRelayId, UINT16 stopJXTCRelayId, UINT16 psdId);


/******************************OC spks指示灯输出处理****************************/
/*
* 功能描述： OC spks指示灯和spks旁路指示灯输出处理
* 参数说明： void
* 返回值  ： void
*/
void SpksDisplayDrivOutput(void);

/***********************OC SPKS关联的门禁解锁继电器输出处理****************************/
/*
* 功能描述： OC spks关联的门禁解锁输出处理
* 参数说明： void
* 返回值  ： void
*/
void SpksMenjinJSDrivOutput(void);

/*
* 功能描述： OC 门禁关联的spks是否激活逻辑判断
* 参数说明： void
* 返回值  ： void
*/
UINT8 MJrelSpksMJStateProcess(UINT16 spksId);

/******************************OC esb指示灯输出处理****************************/
/*
* 功能描述： OC esb指示灯和esb旁路指示灯输出处理
* 参数说明： void
* 返回值  ： void
*/
void EsbDisplayDrivOutput(void);


/******************************OC 扣车旁路指示灯输出处理****************************/
/*
* 功能描述： OC 扣车和扣车旁路指示灯输出处理
* 参数说明： void
* 返回值  ： void
*/
void DetainDisplayDrivOutput(void);

/*
* 功能描述： 检查取消自动触发标志是否执行
* 参数说明： const UINT16 routeId :进路ID
*            const UINT16 phySecId :物理区段ID
* 返回值  ： CI_ERROR  检查失败
*            CI_SUCCESS 检查成功
*/
UINT8 CheckCancleAutoFlag(const UINT16 routeId,const UINT16 phySecId);

/*
* 功能描述： 更新联络线设备采集状态至逻辑状态
* 参数说明： void
* 返回值  ： 无
*			      
*/
void ConnectLineRelayToDevStateProc(void);

/*
* 功能描述： 设置联络线道岔定反表继电器驱动状态
* 参数说明： const UINT16 devId 设备ID
*            const UINT16 dbRelayId 定表继电器ID
*            const UINT16 fbRelayId 反表继电器ID
* 返回值  ： 无
*			      
*/
void SetConnectSwitchPosRelayDrvSta(const UINT16 devId, const UINT16 dbRelayId, const UINT16 fbRelayId);

/*
* 功能描述： 更新联络线设备逻辑状态至继电器驱动状态
* 参数说明： void
* 返回值  ： 无
*			      
*/
void UpdateConnectDriveRelayOutput(void);

/*
* 功能描述： 检查是否混线状态
* 参数说明： 
*                     
* 返回值  ： 1：不是混线状态
*            0：混线状态
*			      
*/
UINT8 CheckRelayHunXiandState(const UINT16 relayId);

/*
* 功能描述：计轴总复位表示灯驱动输出处理
* 参数说明： void
* 返回值  ： void
*/
void PhyZFWBsRelayDriveOutput(void);

/*
* 功能描述： 驱动扣车指示灯、扣车旁路指示灯
* 参数说明：const UINT16 signalCutDetainRelayId, 扣车旁路继电器ID
*           const UINT16 cutDetainDisplayId, 扣车旁路表示灯继电器ID
*           const UINT16 signalDetainRelayId, 扣车继电器ID
*           const UINT16 signalDetainDisplayId, 扣车表示灯继电器ID
*           const UINT16 signalId, 信号机ID
*
* 返回值  ： 无
*
*/
void DriveDetainBsRelay(const UINT16 signalId, const UINT16 signalCutDetainRelayId, const UINT16 cutDetainDisplayId, const UINT16 signalDetainRelayId, const UINT16 signalDetainDisplayId);


/*
* 功能描述： 更新倒切装置状态
* 参数说明： void
* 返回值  ： 无
*/
void RvrsCutRlyToDvicSttPrc(void);

/*
* 功能描述： 更新是否可倒切原因
* 参数说明： void
* 返回值  ： 无
*/
void ReverseCutReasonProcess(void);


/*
* 功能描述： TIOC影子模式设备输出处理
* 参数说明： void
* 返回值  ： void
*/
void TiocSysShadowDeviceOutputProc(void);


/*
* 功能描述： 处理物理区段上的占用落到计轴区段
* 参数说明： void
* 返回值  ： void
*/
void ProcessPhyOCcStateToAxisSection(void);

/*
* 功能描述： 获取ESB当前需要设置的状态
* 参数说明：UINT16 esbId ESB ID
*
* 返回值  ： ESB_STATE_VALID_YES：设置状态为有效
*            ESB_STATE_VALID_NO：设置状态为无效
*			 CI_ERROR: 获取失败
* cgh-合并CID-2349-3：
*/
UINT8 GetEsbCurNeedSetState(UINT16 esbId);
/*
* 功能描述： OC ESS和PEP操作下的闪灯、稳灯和蜂鸣器继电器驱动输出处理
* 参数说明： void
* 返回值  ： void
* cgh-合并CID-2349-3：
*/
void EsbRelateDelayDriveOutputProc(void);


/*
* 功能描述： OC ESS和PEP操作下的闪灯、稳灯和蜂鸣器继电器驱动输出状态机管理函数
* 参数说明： UINT16 esbId ESB ID
* 返回值  ： void
* cgh-合并CID-2349-3：
*/
void EsbRelateDelayDriveStateManage(UINT16 esbId);

/*
* 功能描述： 检查是否驱动超时
* 参数说明： const UINT16 relayId 继电器ID
*
* 返回值  ： 1：不是驱动超时状态
*            0：驱动超时
* cgh-合并CID-2349-4：
*/
UINT8 CheckRelayDriveOutTimeState(const UINT16 relayId);
/*
* 功能描述： 检查是否驱动超时
* 参数说明： const UINT16 psdId 屏蔽门ID
*            const UINT8 psdDriveState psd驱动状态
* 返回值  ： 0xff：不是驱动超时状态
*            0x55 驱动开门未开门
*            0xaa 驱动关门未关门
* cgh-合并CID-2349-4：
*/
UINT8 CheckPsdDriveOutTimeState(const UINT16 psdId);

/*
* 功能描述：获取继电器是否驱动采集不一致
* 参数说明： const UINT16 relayId, 继电器ID
			 const UINT8 foreNodeColl 前采状态
			 const UINT8 backNodeColl 后采状态
* 返回值  ： 0: 驱动采集不一致
*			>0: 一致
*cgh-合并CID-2349-4：
*/
UINT8 CheckRelayDriAndCollDiffSeat(const UINT16 relayId, const UINT8 foreNodeColl, const UINT8 backNodeColl);

/*
* 功能描述：获取PSD是否驱动采集不一致
* 参数说明： const UINT16 psdId, PSD ID
* 返回值  ：  0xff: 无报警
*			  0x55: 开门驱动采集不一致
*             0xaa: 关门驱动采集不一致
*cgh-合并CID-2349-4：
*/
UINT8 CheckPsdDriAndCollDiff(const UINT16 psdId);


/*
* 功能描述： 总Spks按钮指示灯处理
* 参数说明： UINT16 spksId ID
* 返回值  ： void
*/
void TotalSpksOutsideDisPlayProc(UINT16 spksId);

/*
* 功能描述： 室外SPKS指示灯驱动
* 参数说明： UINT16  contrlspksId spksId ID
*            UINT32 spksflockStartNum  spks作用起始周期
* 返回值  ： void
*/

void SpksOutsideDisPlayDriv(UINT16 contrlspksId, UINT32 spksflockStartNum);

/*
* 功能描述： 判断硬件扣车是否执行
* 参数说明： const UINT16 detainCutRelayId     旁路继电
			 const UINT16 signalDetainRelayId  扣车继电器

* 返回值  ： CI_ERROR:   不执行
*            CI_SUCCESS: 执行
*
*/
UINT8 CheakDeatainState(UINT16 detainCutRelayId, UINT16 signalDetainRelayId);

/*
* 功能描述： 获取具备虚拟ESB当前需要设置的状态
* 参数说明：UINT16 esbId ESB ID
*
* 返回值  ： ESB_STATE_VALID_YES：设置状态为有效
*            ESB_STATE_VALID_NO：设置状态为无效
*			 CI_ERROR: 获取失败
* cgh-合并CID-3037-1：
*/
UINT8 GetVirEsbCurNeedSetState(UINT16 esbId);
/*
* 功能描述： 虚拟ESB逻辑处理函数
* 参数说明： 无
* 返回值  ： void
* cgh-合并CID-3037-1：
*/
void VirtualEsbLogicProcess(void);
/*
* 功能描述： OC ESS和PEP操作下的闪灯、稳灯和蜂鸣器继电器驱动输出状态机管理函数
* 参数说明： UINT16 esbId ESB ID
* 返回值  ： void
* 备注：cgh-合并CID-3037-1：。
*/
void VirEsbRelateDelayDriStaManage(UINT16 esbId);
/*
* 功能描述： 获取复示信号机驱动颜色
* 参数说明： const UINT8 signalColor, 主体信号机颜色
* 返回值  ： 0x01 :驱红灭，0x02:驱黄，0x04:驱绿
*cgh-合并CID-3037-3：
*/
UINT8 GetFushiSignalDriveColor(const UINT8 signalColor);

/*
* 功能描述： 站台清客确认按钮闪灯稳灯继电器驱动处理
* 参数说明： const UINT16 psdId, 屏蔽门ID
* 返回值  ： 无
*cgh-合并CID-3037-7：
*/
void StationCearPassenagerProcess(const UINT16 psdId);

/*
* 功能描述： 更新屏蔽门对应清客确认箱关门按钮及指示灯逻辑状态
* 参数说明： const UINT16 wPsdId 屏蔽门ID
* 返回值  ： 0u: 更新失败
*			 1: 更新成功
* * cgh修改成都四线清客需求
*/
UINT8 PsdCleFarePCBRelToDevStaProc(const UINT16 wPsdId);

/*
* 功能描述： 更新屏蔽门对应清客确认箱发车按钮及指示灯逻辑状态
* 参数说明： const UINT16 wPsdId 屏蔽门ID
* 返回值  ： 0u: 更新失败
*			 1: 更新成功
* cgh修改成都四线清客需求
*/
UINT8 PsdCleFarePDBRelToDevStaProc(const UINT16 wPsdId);

/*
* 功能描述： 清客确认箱发车按钮指示灯闪灯处理
* 参数说明： const UINT16 psdId, 屏蔽门ID
* 返回值  ： 无
*cgh修改成都四线清客需求
*/
void PsdCleFarePDBFlashProcess(const UINT16 psdId);

/*
* 功能描述： 自复式扣车按钮处理
* 参数说明： const UINT16 signalId 信号机ID
* 返回值  ： 无
*/
void SignalZfsDetainBtnPro(const UINT16 signalId);

/*
* 功能描述： 自复式取消扣车按钮处理
* 参数说明： const UINT16 signalId 信号机ID
* 返回值  ： 无
*/
void SignalZfsCancelDetainBtnPro(const UINT16 signalId);

/*
* 功能描述： 自复式取消扣车按钮按下状态处理
* 参数说明： const UINT16 wSignalId 信号机ID
*            const UINT16 wCancelDetBtnRelayId 取消扣车按钮采集继电器ID
* 返回值  ： 无
* Created By LQ 2024.05.09
*/
void DetZfsCancelBtnPressStateProc(const UINT16 wSignalId, const UINT16 wCancelDetBtnRelayId);

/*
* 功能描述： 自复式取消扣车按钮激活标志处理
* 参数说明： const UINT16 wSignalId 信号机ID
*            const UINT16 wCancelDetBtnRelayId 取消扣车按钮采集继电器ID
* 返回值  ： 无
* Created By LQ 2024.05.09
*/
void DetZfsCancelBtnActFlagProc(const UINT16 wSignalId, const UINT16 wCancelDetBtnRelayId);

/*
* 功能描述：驱动自复式扣车相关指示灯
* 参数说明：const UINT16 signalId 信号机ID
*           const UINT16 signalDetDisRelayId 扣车表示灯继电器ID
*           const UINT16 signalDetCutDisRelayId 扣车旁路表示灯继电器
* 返 回 值：无
* Modified By LQ 2025.07.03
*/
void DriveZfsDetainBsRelay(const UINT16 signalId, const UINT16 signalDetDisRelayId, const UINT16 signalDetCutDisRelayId);

/*
* 功能描述：自复式紧急停车按钮处理
* 参数说明：UINT16 esbId ESB ID
* 返回值  ：无
*/
void EsbZfsBtnProc(UINT16 esbId);

/*
* 功能描述：自复式取消紧急停车按钮处理
* 参数说明：UINT16 esbId ESB ID
* 返回值  ：无
*/
void EsbZfsCancelBtnProc(UINT16 esbId);

/*
* 功能描述：自复式紧急停车按钮取消按钮按下状态处理
* 参数说明：const UINT16 wEsbId ESB ID
*           const UINT16 wCancelEsbRelayId  ESB取消按钮采集继电器ID
* 返回值  ：无
* Created By LQ 2024.05.09
*/
void EsbZfsCancelBtnPressStateProc(const UINT16 wEsbId, const UINT16 wCancelEsbRelayId);

/*
* 功能描述：自复式紧急停车按钮取消按钮有效标志处理
* 参数说明：const UINT16 wEsbId ESB ID
*           const UINT16 wCancelEsbRelayId  ESB取消按钮采集继电器ID
* 返回值  ：无
* Created By LQ 2024.05.09
*/
void EsbZfsCancelBtnValidFlagProc(const UINT16 wEsbId, const UINT16 wCancelEsbRelayId);

/*
* 功能描述： 根据SPKS状态更新逻辑区段SPKS封锁状态
* 参数说明： 无
* 返回值  ： 无
* by cgh 20230919 逻辑区段封锁状态仅用于给ATS显示
*/
void SpksRelayToLogSecFlockStatus(void);

/*
* 功能描述： 屏蔽门再开/关门按钮指示灯处理
* 参数说明： const UINT16 psdId, 屏蔽门ID
* 返回值  ： 无
* 成都13、27、30新需求——2023.09.21
*/
void PsdOpenAndCloseBsdProc(const UINT16 psdId);

/*
* 功能描述： 检查继电器是否驱动超时-带超时时间参数
* 参数说明： const UINT16 relayId 继电器ID
*					const UINT32 dwTimeOutCycCount   最大时间
* 返回值  ： 1：不是驱动超时状态
*            0：驱动超时
* by cgh 20230923
*/
UINT8 CheckRelayDriveOutTime(const UINT16 wRelayId, const UINT32 dwTimeOutCycCount);

/*
* 功能描述： 声光报警器输出处理
* 参数说明： void
* 返回值  ： void
* 成都三线新需求：声光报警器——2023.09.23 by LQ
*/
void SGBJDriveOutputProc(void);

/*
* 功能描述： 设置继电器驱动起始周期
* 参数说明： const UINT16 relayId 继电器ID
* 返回值  ： 无
* by cgh 20230930
*/
void SetRelayDriveStartCyc(const UINT16 wRelayId);

/*
* 功能描述： 设置所有道岔单独位置
* 参数说明： UINT16 switchCurSum 道岔总数
* 返回值  ： 无
*/
void SetAllSingleSwitchCurPosition(UINT16 switchCurSum);

/*
* 功能描述： 设置道岔当前逻辑位置
* 参数说明： UINT16 switchCurSum 道岔总数
* 返回值  ： 无
*/
void UpdataSwitchCurPostion(UINT16 switchCurSum);

/*
* 功能描述： 根据道岔当前逻辑位置选择清理相关内容
* 参数说明： UINT16 switchCurSum 道岔总数
* 返回值  ： 无
*/
void ClearSwitchMessageByCurPostion(UINT16 switchCurSum);

/*
* 功能描述： 洗车机工作模式继电器状态处理
* 参数说明： const UINT16 washMachineId 洗车机ID
* 返回值  ： 0u: 更新失败
*			 1: 更新成功
* by cgh 20231108
*/
UINT8 WashMachineWorkModeRelayProc(const UINT16 washMachineId);

/*
* 功能描述： 更新降级模式洗车继电器状态
* 参数说明： const UINT16 washMachineId 洗车机ID
* 返回值  ： CI_ERROR: 更新失败
*			 CI_SUCCESS: 更新成功
* by cgh 20231113
*/
UINT8 DownWashDevToRelayStaProc(const UINT16 washMachineId);

/*
* 功能描述： 降级模式洗车线关联进路状态检查
* 参数说明： const UINT16 wRouteId 进路ID
*			 const UINT8 chCheckType 进路检查类型
* 返回值  ： CI_ERROR: 更新失败
*			 CI_SUCCESS: 更新成功
* by cgh 20231113
*/
UINT8 DownWashRelRouteStateCheck(const UINT16 wRouteId, const UINT8 chCheckType);

/*
* 功能描述： 处理驱采两个继电器ID是否混线状态
* 参数说明：const UINT16 drvRelayId	驱动继电器ID
*			const UINT16 collectRelayId		采集继电器ID
*
*/
void ProcessCoupleRelayHunXianState(const UINT16 drvRelayId, const UINT16 collectRelayId);

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

/*
* 功能描述： 屏蔽门视频清客驱动状态处理
* 参数说明： const UINT16 wPsdId, 屏蔽门ID
* 返回值  ： 无
* by cgh 20231214
*/
void PsdVideoQkDriveStateProc(const UINT16 wPsdId);

/*
* 功能描述：道岔采集容忍处理(对存在锁闭状态的道岔采集四开增加3周期的容忍)
* 参数说明： const UINT16 switchId 道岔ID
* 返回值  ：  道岔容忍后位置
* Create: fan 20250317
*/
UINT8 GetSwitchCollToleratePos(const UINT16 switchId);

/*
* 功能描述：检查道岔是否满足容忍条件
* 参数说明： const UINT16 switchId 道岔ID
* 返回值  ：  CI_SUCCESS满足融合条件  CI_ERROR不满足容忍 需要立即四开
* Create: fan 20250317
*/
UINT8 CheckSwitchCollTolerateState(UINT16 switchId);

/*
* 功能描述：宁象市域铁路紧急停车按钮处理
* 参数说明：UINT16 esbId ESB ID
* 返 回 值：无
* Created By LQ 2025.03.28
*/
void EsbNXRailBtnProc(UINT16 esbId);

/*
* 功能描述：宁象市域铁路紧急停车取消按钮处理
* 参数说明：UINT16 esbId ESB ID
* 返 回 值：无
* Created By LQ 2025.03.28
*/
void EsbNXRailCancelBtnProc(UINT16 esbId);

/*
* 功能描述：宁象市域铁路紧急停车取消按钮有效标志处理
* 参数说明：const UINT16 wEsbId ESB ID
*           const UINT16 wCancelEsbRelayId  ESB取消按钮采集继电器ID
* 返回值  ：无
* Created By LQ 2025.03.30
*/
void EsbNXRailCancelBtnValidFlagProc(const UINT16 wEsbId, const UINT16 wCancelEsbRelayId);

/*
* 功能描述：宁象市域铁路紧急停车旁路按钮处理
* 参数说明：UINT16 esbId ESB ID
* 返 回 值：无
* Created By LQ 2025.03.30
*/
void EsbNXRailCutBtnProc(UINT16 esbId);

/*
* 功能描述：宁象市域铁路紧急停车旁路按钮按下状态处理
* 参数说明：const UINT16 wEsbId ESB ID
*           const UINT16 wCutEsbRelayId  紧急旁路按钮采集继电器ID
* 返回值  ：无
* Created By LQ 2025.03.30
*/
void EsbNXRailCutBtnPressStateProc(const UINT16 wEsbId, const UINT16 wCutEsbRelayId);

/*
* 功能描述：宁象市域铁路ESB指示灯和ESB旁路指示灯输出处理
* 参数说明：const UINT16 wEsbId ESB ID
* 返 回 值：无
* Created By LQ 2025.03.30
*/
void EsbNXRailDisplayDrivOutput(const UINT16 wEsbId);

/*
* 功能描述：屏蔽门异常打开处理
* 参数说明：无
* 返 回 值：无
* Created By LQ 2025.05.23
*/
void PsdExceptOpenProc(void);

/*
* 功能描述：自复式扣车旁路按钮处理
* 参数说明：const UINT16 signalId 信号机ID
* 返 回 值：无
* Created By LQ 2025.06.20
*/
void SignalZfsDetainCutBtnPro(const UINT16 signalId);

/*
* 功能描述：自复式扣车旁路按钮按下状态处理
* 参数说明：const UINT16 wSignalId 信号机ID
*           const UINT16 wDetCutBtnRelayId 扣车旁路按钮采集继电器ID
* 返 回 值：无
* Created By LQ 2025.06.20
*/
void ZfsDetCutBtnPressStateProc(const UINT16 wSignalId, const UINT16 wDetCutBtnRelayId);

/*
* 功能描述：自复式扣车旁路按钮有效状态处理
* 参数说明：const UINT16 wSignalId 信号机ID
*           const UINT16 wDetCutBtnRelayId 扣车旁路按钮采集继电器ID
* 返 回 值：无
* Created By LQ 2025.06.20
*/
void ZfsDetCutBtnValidStateProc(const UINT16 wSignalId, const UINT16 wDetCutBtnRelayId);

/*
* 功能描述：获取SPKS按钮采集容忍结果
* 参数说明：const UINT16 wSpksId SPKS编号
* 返 回 值：CI_ERROR 0 容忍结束
*           CI_SUCCESS 1 继续容忍
* Created By LQ 2025.06.26
*/
UINT8 GetSpksBtnCollTolerateRet(const UINT16 wSpksId);

/*
* 功能描述：获取Psd门开继电器采集容忍结果
* 参数说明：const UINT16 wPsdId PSD编号
* 返 回 值：CI_ERROR 0 容忍结束
*           CI_SUCCESS 1 继续容忍
* Created By LQ 2025.06.26
*/
UINT8 GetPsdRelayCollTolerateRet(const UINT16 wPsdId);

/*
* 功能描述：获取Esb采集容忍结果
* 参数说明：const UINT16 wEsbId ESB编号
* 返 回 值：CI_ERROR 0 容忍结束
*           CI_SUCCESS 1 继续容忍
* Created By LQ 2025.06.26
*/
UINT8 GetEsbCollTolerateRet(const UINT16 wEsbId);

/*
* 功能描述：获取扣车按钮1采集容忍结果
* 参数说明：const UINT16 wSignalId 信号机编号
* 返 回 值：CI_ERROR 0 容忍结束
*           CI_SUCCESS 1 继续容忍
* Created By LQ 2025.06.26
*/
UINT8 GetFstDetBtnCollTolerateRet(const UINT16 wSignalId);

/*
* 功能描述：获取扣车按钮2采集容忍结果
* 参数说明：const UINT16 wSignalId 信号机编号
* 返 回 值：CI_ERROR 0 容忍结束
*           CI_SUCCESS 1 继续容忍
* Created By LQ 2025.06.26
*/
UINT8 GetSndDetBtnCollTolerateRet(const UINT16 wSignalId);

/*
* 功能描述：清除物理区段复位起始周期
* 参数说明：无
* 返 回 值：无
* 注：解决复位指令执行期间，总复位未按下一直下发复位指令的问题
* Created By fan 2026.03.24
*/
void CleanPhySecResetStartCycNum(void);

#ifdef __cplusplus
}
#endif

#endif
