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

#ifndef _SIGNAL_DATA_MANAGE_H_
#define _SIGNAL_DATA_MANAGE_H_


#include "SignalDefine.h"
#include "SignalConfigDataManage.h"

#include "CommonTypes.h"
#include "../2oo2/2oo2InterfaceDataManage.h"
#include "../System/CiSystemDefine.h"
#include "../Relay/RelayDataManage.h"
#include "../LogRecord/LogRecord.h"


#ifdef __cplusplus
extern "C" {
#endif




/*信号机动态数据结构体*/
typedef struct S_SignalDataStruct
{
    UINT16 SignalId;      	   /*信号机ID (配置字段)*/
	UINT16 AutoRouteId;		   /* 自动信号进路ID配置字段 */
	UINT8 LinShiXianSuSetFlag; /*信号机临时限速设置状态(无效/设置/未设置)(动态字段)*/		
	UINT8 FLockState;          /*信号机封锁状态(未封锁/封锁) (动态字段)*/
	UINT8 LightExtinctState;   /*信号机亮灭状态(亮灯/灭灯) (动态字段)*/
	UINT8 PreColor;            /*信号机之前显示颜色 (动态字段) */
	UINT8 CurColor;            /*信号机当前显示颜色 (动态字段) */
	UINT8 OldDriveColor;       /*驱动信号机颜色变化之前,驱动信号机显示颜色 (动态字段) */
	UINT8 PreDriveColor;       /*之前(上周期)驱动信号机显示颜色 (动态字段) */
	UINT8 PreChangedDriveColor;		/*上一次变化的驱动颜色，用于给OC信号机颜色赋值 by shl*/
	UINT8 CurDriveColor;       /*当前(本周期)驱动信号机显示颜色 (动态字段) */
    UINT32 DriveNewSigStartCycNum;  /*信号机驱动新显示色开始周期*/    
	UINT32 DriveSigOpenStartCycNum;   /*驱动信号机开放起始周期 (动态字段)*/
	UINT32 DriveSigCloseStartCycNum;  /*驱动信号机关闭起始周期 (动态字段)*/
	UINT32 CollSigOpenStartCycNum;    /*采集信号机开放起始周期 (动态字段)*/
	UINT8 DsBreakFlag;         /*红灯丝断丝标志 (动态字段) */
	UINT8 GreenDsBreakFlag;       /*绿灯丝断丝标志*/
	UINT8 YellowDsBreakFlag;       /*黄灯丝断丝标志*/
	UINT8 WhiteDsBreakFlag;       /*白灯丝断丝标志*/
	UINT8 RedYellowDsBreakFlag;    /*红黄断丝标志*/
	UINT8 RedWhiteDsBreakFlag;    /*红白断丝标志*/
	UINT8 GreenYellowDsBreakFlag;  /*绿黄断丝*/
	UINT8 DoubleGreenDsBreakFlag;  /*双绿断丝*/
	UINT8 DoubleYellowDsBreakFlag;  /*双黄断丝*/
	UINT8 BlueDsBreakFlag;  /*蓝灯断丝*/
	UINT8 SignalCrossState;		/*通信车跨压通过信号机状态(动态字段)*/
    UINT8 SignalLeadProperty;   /*信号机引导属性 (初始化字段)*/
	UINT8 SignalLeadRouteCbtcFlag;	/*信号机包含的所有的进路是否既有CBTC场段区域的进路，也有非CBTC场段区域进路的标志(初始化字段)*/
	UINT8 SignalYLockOpenState; /*引导总锁信号开放状态（开放/关闭） (动态字段) */
    UINT8 AtsDetainFlag;           /*Ats人工扣车标志 (动态字段)*/
	UINT8 AtsDetainFlagAuto;        /*ATS自动扣车标志 (动态字段)*/
    UINT8 XiandiDetainFlag;           /*现地扣车标志 (动态字段)*/
	UINT8 RealyDetainFlag;            /*硬线（继电器）扣车标志 (动态字段)*/
	UINT8 DetainBtnActivateFlag;      /*扣车按钮1激活标志，0x55未激活，0xaa激活*/
	UINT8 DetainBtnErrFlag;     /*扣车按钮1故障标志，0x55未故障，0xaa故障*/
	UINT8 CancelDetainBtnErrFlag;     /*取消扣车按钮1故障标志，0x55未故障，0xaa故障*/
	UINT32 DetainBtnPressCycNum;      /*扣车按钮1按下周期*/
	UINT32 DetainSndBtnPressCycNum;      /*扣车按钮2按下周期*/
	UINT32 CancelDetainBtnPressCycNum;   /*取消扣车按钮正常按下周期*/
	UINT32 CancelDetainErrTrigPressCycNum;   /*取消扣车按钮误触发按下周期*/
	UINT8 CancelDetainBtnValidFlag;   /*取消扣车按钮有效标志，0x55无效，0xaa有效*/
	UINT8 CancelDetainRelayDownState;  /*取消扣车按钮采集继电器落下状态，0x55：正常采集落下，0xaa：通信异常落下*/
	UINT8 PLockCommand;/*互联互通保护区段锁闭命令*/
    UINT32 RelayActaionStartCycNum;  /*信号机继电器动作开始周期*/    
	UINT32 DiffColorOpenStartCycNum;/*信号机颜色已经开放，但不是目标的驱动开放颜色，记录该过渡态的起始周期。例如：驱动绿灯，但ZXJ故障，导致一直是黄灯。CI容忍一定周期后，会驱动关闭*/
	UINT32 SignalLightOnStateCycCount; /*信号机收到强制点灯强制灭灯状态持续计数值*/
	UINT8 ProSecValid;/*互联互通保护区段有效性*/
	UINT8 RelayDetainCmd;		/*硬线扣车命令*/
	UINT8 NeighbourSignalDetainDrive;/*邻站信号机扣车驱动命令*/
	UINT8 MaintainLightState;   /*信号机维修点灯状态*/
	UINT16 wSignalLightUpLinkIdSum;		/*点灯link数量*/		/* add 2022.3.4 */
	UINT16 szSignalLightUpLinkIdBuf[MAX_SIGNAL_LIGHTUPLINK_NUM];/*点灯linkID数组*//* add 2022.3.4 */
	UINT16 wSignalLightUpTrainId;   /*信号机点灯区段接近列车ID*/
	UINT8 EngineerVehicleNearState; /*工程车接近状态*/
	UINT8 EngineerVehicleCrossClose; /*工程车跨压关闭*/
	UINT16 EnginVehicCroCloBelongRoute;/*工程车跨压关闭所属进路*/
	UINT8  SignalBoardState;            /*OC信号机板卡状态*/
	UINT32 OcSignalStartCycNum;      /*OC信号机全灭灯容忍开始周期*/
	UINT8 LogRouteSignalErrCloseFlag;		/*逻辑进路驱动信号机异常关闭标志(逻辑进路异常关闭使用)*/
	UINT8 VobcCroSigInPhyOccSta;			/*列车跨压，信号机内方第一区段占压状态*/
	UINT8 cSleepTrainLightUpFlag;       /*休眠车点亮信号机标志：0x55 无效，0xAA 有效*/
	UINT8 cInHumidRailFlag;       /*信号机湿轨标志：0x55 无效，0xAA 有效*/
	UINT8 cDetCutBtnState;  /*扣车旁路按钮状态：0x55 无效，0xAA 有效*/
	UINT32 DetCutBtnPressCycNum;   /*扣车旁路按钮正常按下周期*/
	UINT32 DetCutBtnErrTrigPressCycNum;   /*扣车旁路按钮误触发按下周期*/
	UINT8 cDetCutBtnErrFlag;     /*扣车旁路按钮故障标志：0x55未故障，0xaa故障*/
	UINT8 cDetCutBtnRelayDownState;  /*扣车旁路按钮采集继电器落下状态：0x55：正常采集落下，0xaa：通信异常落下*/
} SignalDataStruct;

extern SignalDataStruct SignalDataStru[SIGNAL_SUM_MAX];   /*定义信号机数据结构体*/
/*
* 功能描述： 获取指定ID信号数据
* 参数说明：    
* 返回值  ： 
            SignalDataStruct*
*/
SignalDataStruct *GetSignalData(void);

/*
* 功能描述： 获取指定ID信号机封锁状态
* 参数说明： const UINT16 signalId, 信号机ID
* 返回值  ： 0: 获取数据失败
*			>0: 封锁状态        
*/
UINT8 GetSignalFLockState(const UINT16 signalId);

/*
* 功能描述： 设置指定ID信号机封锁状态
* 参数说明： const UINT16 signalId, 信号机ID
*			 const UINT8 fLockState, 封锁状态
* 返回值  ： 无
*			       
*/
void SetSignalFLockState(const UINT16 signalId, const UINT8 fLockState);

/*
* 功能描述： 获取指定ID信号机亮灭状态
* 参数说明： const UINT16 signalId, 信号机ID
* 返回值  ： 0: 获取数据失败
*			>0: 亮灭状态        
*/
UINT8 GetSignalLightExtinctState(const UINT16 signalId);

/*
* 功能描述： 设置指定ID信号机亮灭状态
* 参数说明： const UINT16 signalId, 信号机ID
*			 const UINT8 lightExtinctState, 亮灭状态
* 返回值  ： 0: 设置失败
*			 1: 设置成功      
*/
UINT8 SetSignalLightExtinctState(const UINT16 signalId, const UINT8 lightExtinctState);
/*
* 功能描述： 设置相邻联锁指定ID信号机亮灭状态
* 参数说明： const UINT16 signalId, 信号机ID
*			 const UINT8 ligheCloseState, 亮灭状态
* 返回值  ： 0: 设置失败
*			 1: 设置成功      
*/
UINT8 SetNearCISigLightExtinctState(const UINT16 signalId, const UINT8 lightExtinctState);

/*
* 功能描述： 获取指定ID信号机之前显示颜色
* 参数说明： const UINT16 signalId, 信号机ID
* 返回值  ： 0: 获取数据失败
*			>0: 之前显示颜色        
*/
UINT8 GetSignalPreColor(const UINT16 signalId);

/*
* 功能描述： 获取指定ID信号机当前显示颜色
* 参数说明： const UINT16 signalId, 信号机ID
* 返回值  ： 0: 获取数据失败
*			>0: 之前显示颜色        
*/
UINT8 GetSignalCurColor(const UINT16 signalId);

/*
* 功能描述： 设置指定ID信号机当前显示颜色
* 参数说明： const UINT16 signalId, 信号机ID
*			 const UINT8 curColor, 当前显示颜色
* 返回值  ： 0: 设置失败
*			 1: 设置成功      
*/
UINT8 SetSignalCurColor(const UINT16 signalId, const UINT8 curColor);
/*
* 功能描述： 设置相邻联锁指定ID信号机当前显示颜色
* 参数说明： const UINT16 signalId, 信号机ID
*			 const UINT8 curColor, 当前显示颜色
* 返回值  ： 0: 设置失败
*			 1: 设置成功      
*/
UINT8 SetNearCISignalCurColor(const UINT16 signalId, const UINT8 curColor);

/*
* 功能描述： 获取指定ID信号机之前驱动显示颜色
* 参数说明： const UINT16 signalId, 信号机ID
* 返回值  ： 0: 获取数据失败
*			>0: 驱动显示颜色        
*/
UINT8 GetSignalPreDriveColor(const UINT16 signalId);

/*
* 功能描述： 设置指定ID信号机之前驱动显示颜色
* 参数说明： const UINT16 signalId, 信号机ID
*			 const UINT8 driveColor, 驱动显示颜色
* 返回值  ： 0: 设置失败
*			 1: 设置成功      
*/
UINT8 SetSignalPreDriveColor(const UINT16 signalId, const UINT8 driveColor);

/*
* 功能描述： 获取指定ID信号机当前驱动显示颜色
* 参数说明： const UINT16 signalId, 信号机ID
* 返回值  ： 0: 获取数据失败
*			>0: 驱动显示颜色        
*/
UINT8 GetSignalCurDriveColor(const UINT16 signalId);

/*
* 功能描述： 设置指定ID信号机当前驱动显示颜色
* 参数说明： const UINT16 signalId, 信号机ID
*			 const UINT8 driveColor, 驱动显示颜色
* 返回值  ： 无
*			       
*/
void SetSignalCurDriveColor(const UINT16 signalId, const UINT8 driveColor);

/*
* 功能描述： 获取指定ID信号机灯丝断丝标志
* 参数说明： const UINT16 signalId, 信号机ID
* 返回值  ： 0: 获取数据失败
*			>0: 断丝标志        
*/
UINT8 GetSignalDsBreakFlag(const UINT16 signalId);

/*
* 功能描述： 获取指定ID信号机绿灯丝断丝标志
* 参数说明： const UINT16 signalId, 信号机ID
* 返回值  ： 0: 获取数据失败
*			>0: 断丝标志        
*/
UINT8 GetSignalGreenDsBreakFlag(const UINT16 signalId);

/*
* 功能描述： 获取指定ID信号机黄灯丝断丝标志
* 参数说明： const UINT16 signalId, 信号机ID
* 返回值  ： 0: 获取数据失败
*			>0: 断丝标志        
*/
UINT8 GetSignalYellowDsBreakFlag(const UINT16 signalId);

/*
* 功能描述： 获取指定ID信号机白灯丝断丝标志
* 参数说明： const UINT16 signalId, 信号机ID
* 返回值  ： 0: 获取数据失败
*			>0: 断丝标志        
*/
UINT8 GetSignalWhiteDsBreakFlag(const UINT16 signalId);

/*
* 功能描述： 获取指定ID信号机蓝灯丝断丝标志
* 参数说明： const UINT16 signalId, 信号机ID
* 返回值  ： 0: 获取数据失败
*			>0: 断丝标志
*/
UINT8 GetSignalBlueDsBreakFlag(const UINT16 signalId);

/*
* 功能描述： 获取指定ID信号机红黄灯丝断丝标志
* 参数说明： const UINT16 signalId, 信号机ID
* 返回值  ： 0: 获取数据失败
*			>0: 断丝标志        
*/
UINT8 GetSignalRedYellowDsBreakFlag(const UINT16 signalId);

/*
* 功能描述： 获取指定ID信号机红白灯丝断丝标志
* 参数说明： const UINT16 signalId, 信号机ID
* 返回值  ： 0: 获取数据失败
*			>0: 断丝标志        
*/
UINT8 GetSignalRedWhiteDsBreakFlag(const UINT16 signalId);

/*
* 功能描述： 获取指定ID信号机绿黄灯丝断丝标志
* 参数说明： const UINT16 signalId, 信号机ID
* 返回值  ： 0: 获取数据失败
*			>0: 断丝标志        
*/
UINT8 GetSignalGreenYellowDsBreakFlag(const UINT16 signalId);

/*
* 功能描述： 获取指定ID信号机双绿灯丝断丝标志
* 参数说明： const UINT16 signalId, 信号机ID
* 返回值  ： 0: 获取数据失败
*			>0: 断丝标志        
*/
UINT8 GetSignalDoubleGreenDsBreakFlag(const UINT16 signalId);

/*
* 功能描述： 获取指定ID信号机双黄灯丝断丝标志
* 参数说明： const UINT16 signalId, 信号机ID
* 返回值  ： 0: 获取数据失败
*			>0: 断丝标志        
*/
UINT8 GetSigDoubleYellowDsBreakFlag(const UINT16 signalId);

/*
* 功能描述： 获取指定ID信号机驱动开放起始周期号
* 参数说明： const UINT16 signalId, 信号机ID
* 返回值  ： 0: 获取数据失败
*			>0: 驱动开放起始周期号        
*/
UINT32 GetSignalDriveOpenStartCycNum(const UINT16 signalId);

/*
* 功能描述： 获取指定ID信号机驱动关闭起始周期号
* 参数说明： const UINT16 signalId, 信号机ID
* 返回值  ： 0: 获取数据失败
*			>0: 驱动关闭起始周期号        
*/
UINT32 GetSignalDriveCloseStartCycNum(const UINT16 signalId);

/*
* 功能描述： 获取指定ID信号机驱动新信号起始周期号
* 参数说明： const UINT16 signalId, 信号机ID
* 返回值  ： 0: 获取数据失败
*			>0: 驱动新信号起始周期号        
*/
UINT32 GetSignalDriveNewSigStartCycNum(const UINT16 signalId);
/*
* 功能描述： 获取指定ID信号机驱动信号机颜色变化之前,驱动信号机显示颜色
* 参数说明： const UINT16 signalId, 信号机ID
* 返回值  ： 0: 获取数据失败
*			>0: 驱动显示颜色        
*/
UINT8 GetSignalOldDriveColor(const UINT16 signalId);


/*
* 功能描述： 检查信号机显示颜色有效
* 参数说明： const UINT8 showColor, 信号机显示颜色
* 返回值  ： 0: 显示无效
*			 1: 显示有效      
*/
UINT8 CheckSignalShowColorValid(const UINT8 showColor);

/*
* 功能描述： 检查信号机驱动颜色有效
* 参数说明： const UINT8 drvColor, 信号机驱动颜色
* 返回值  ： 0: 驱动无效
*			 1: 驱动有效      
*/
UINT8 CheckSignalDriveColorValid(const UINT8 drvColor);


/*
* 功能描述： 获取信号机颜色开放关闭状态
* 参数说明： UINT8 signalColor
* 返回值  ： 0: 获取失败
*			>0: 获取成功      
*/
UINT8 GetSignalOpenCloseState(UINT8 signalColor);


/*
* 功能描述： 获取通信车跨压通过信号机状态
* 参数说明： const UINT16 signalId, 信号机ID
* 返回值  ： 0: 获取失败
*			>0: 获取成功      
*/
UINT8 GetSignalCrossState(const UINT16 signalId);


/*
* 功能描述： 设置通信车跨压通过信号机状态
* 参数说明： const UINT16 signalId, 信号机ID
* 返回值  ： 0: 设置失败
*			>0: 设置成功      
*/
UINT8 SetSignalCrossState(const UINT16 signalId, const UINT8 signalCrossState);

/*
* 功能描述： 获取引导总锁信号机开放状态
* 参数说明： const UINT16 signalId, 信号机ID
* 返回值  ： 0: 获取失败
*			>0: 获取成功      
*/
UINT8 GetSignalYLockOpenState(const UINT16 signalId);


/*
* 功能描述： 获取信号机包含的所有的进路是否既有CBTC场段区域的进路，也有非CBTC场段区域进路的标志
* 参数说明： const UINT16 signalId, 信号机ID
* 返回值  ： 0: 获取失败
*			>0: 获取成功
*/
UINT8 GetSignalLeadRouteCbtcFlag(const UINT16 signalId);

/*
* 功能描述： 设置引导总锁信号机开放状态
* 参数说明： const UINT16 signalId, 信号机ID
*            const UINT8 setState, 状态
* 返回值  ： 无
*			       
*/
void SetSignalYLockOpenState(const UINT16 signalId, const UINT8 setState);

/*
* 功能描述： 获取指定ID信号机扣车标志
* 参数说明： const UINT16 signalId, 信号机ID
* 返回值  ： 0: 获取数据失败
*			>0: 扣车标志      
*/
UINT8 GetSignalDetainFlag(const UINT16 signalId);

/*
* 功能描述： 设置指定ID信号机扣车状态
* 参数说明： const UINT16 signalId, 信号机ID
*            const UINT8 setState, 设置状态
* 返回值  ： 无
*			         
*/
void SetSignalDetainState(const UINT16 signalId, const UINT8 setState);

/*
* 功能描述： 设置指定ID信号机扣车标志
* 参数说明： const UINT16 signalId, 信号机ID
*            const UINT8 setState, 设置状态
* 返回值  ： CI_ERROR
*			 CI_SUCCESS       
*/
UINT8 SetSignalDetainFlag(const UINT16 signalId, const UINT8 setState);

/*
* 功能描述： 获取自动信号对应的进路ID
* 参数说明： const UINT16 signalId, 信号机ID   
* 返回值  ： 0: 获取数据失败
*			>0: 信号机ID      
*/
UINT16 GetSignalAutoRouteId(const UINT16 signalId);

/*
* 功能描述： 设置自动信号对应的进路ID
* 参数说明： const UINT16 signalId, 信号机ID   
*			 const UINT16 routeId
* 返回值  ： 0：设置失败 1 成功
*/
UINT8 SetSignalAutoRouteId(const UINT16 signalId,const UINT16 routeId);

/*
* 功能描述： 获取指定ID信号机临时限速设置标志
* 参数说明： const UINT16 signalId, 信号机ID
* 返回值  ： 0: 获取数据失败
*			>0: 临时限速设置状态    
*/
UINT8 GetSignalLinShiXianSuSetFlag(const UINT16 signalId);


/*
* 功能描述： 设置指定ID信号机设置指定ID信号机临时限速标志
* 参数说明： const UINT16 signalId, 信号机ID
*            const UINT8 setState, 设置状态
* 返回值  ： 无
*			        
*/
void SetSignalLinShiXianSuSetFlag(const UINT16 signalId, const UINT8 linShiXianSuSetState);

/*
* 功能描述： 获取指定ID信号机异常关闭标志
* 参数说明： const UINT16 signalId, 信号机ID
* 返回值  ：无
*			       
*/
UINT8 GetSignalPLockCommand(const UINT16 signalId);


/*
* 功能描述： 设置指定ID信号机异常关闭标志
* 参数说明： const UINT16 signalId, 信号机ID
			 const UINT8 curColor, 当前显示颜色
			 const UINT8 setState，当前设置状态
* 返回值  ： 无
*			      
*/
void SetSignalPLockCommand(const UINT16 signalId, const UINT8 pLockCommand);

/*
* 功能描述： 获取信号机互联互通保护区段有效性
* 参数说明： const UINT16 signalId, 信号机ID
* 返回值  ： 0: 获取数据失败
*			>0: 保护区段有效性属性
*/
UINT8 GetSignalProSecValid(const UINT16 signalId);


/*
* 功能描述： 设置信号机互联互通保护区段有效性
* 参数说明：
const UINT16 signalId, 信号机ID
const UINT8 proSecValid:保护区段有效性
* 返回值:
*		无
*		 
*/
void SetSignalProSecValid(const UINT16 signalId, const UINT8 proSecValid);

/*
* 功能描述： 设置信号机颜色已经开放，但不是目标的驱动开放颜色，记录该过渡态的起始周期
* 参数说明：
	const UINT16 signalId, 信号机ID
	const UINT32 cycNum:起始周期号
* 返回值:
*		0: 设置失败
*		1: 设置成功
*/
UINT8 SetSignalDiffColorOpenStartCyc(const UINT16 signalId,const UINT32 cycNum);

/*
* 功能描述： 获取信号机颜色已经开放，但不是目标的驱动开放颜色，记录该过渡态的起始周期
* 参数说明： const UINT16 signalId, 信号机ID
* 返回值  ： 0: 获取数据失败
*			>0: 起始周期号        
*/
UINT32 GetSignalDiffColorOpenStartCyc(const UINT16 signalId);

/*
* 功能描述： 设置指定ID信号机采集开放起始周期号
* 参数说明：
	const UINT16 signalId, 信号机ID
	const UINT32 cycNum:起始周期号
* 返回值:
*		0: 设置失败
*		1: 设置成功
*/
UINT8 SetSignalCollOpenStartCycNum(const UINT16 signalId,const UINT32 cycNum);

/*
* 功能描述： 获取指定ID信号机采集开放起始周期号
* 参数说明： const UINT16 signalId, 信号机ID
* 返回值  ： 0: 获取数据失败
*			>0: 驱动开放起始周期号        
*/
UINT32 GetSignalCollOpenStartCycNum(const UINT16 signalId);

/*
* 功能描述： 获取信号机硬线扣车状态
* 参数说明： const UINT16 signalId, 信号机ID
* 返回值  ： 0: 获取失败
*			>0: 获取成功      
*/
UINT8 GetSignalRelayDetainFlag(const UINT16 signalId);

/*
* 功能描述： 设置信号机硬线扣车状态
* 参数说明： const UINT16 signalId, 信号机ID
* 返回值  ： 无
*			      
*/
void SetSignalRelayDetainFlag(const UINT16 signalId, const UINT8 signalRelayDetainState);

#if 0
/*
* 功能描述： 获取信号机硬线扣车命令
* 参数说明： const UINT16 signalId, 信号机ID
* 返回值  ： 0: 获取失败
*			>0: 获取成功      
*/
UINT8 GetSignalRelayDetainCmd(const UINT16 signalId);
#endif
/*
* 功能描述： 设置信号机硬线扣车命令
* 参数说明： const UINT16 signalId, 信号机ID
* 返回值  ： 0: 设置失败
*			>0: 设置成功      
*/
UINT8 SetSignalRelayDetainCmd(const UINT16 signalId, const UINT8 signalRelayDetainCmd);

/*
* 功能描述： 获取邻站信号机扣车驱动
* 参数说明： const UINT16 signalId, 信号机ID
* 返回值  ： 0: 获取失败
*			>0: 获取成功      
*/
UINT8 GetSignalNeighbourDetainDrive(const UINT16 signalId);


/*
* 功能描述： 设置邻站信号机扣车驱动
* 参数说明： const UINT16 signalId, 信号机ID
*			const UINT8 drive，扣车驱动
* 返回值  ：无
*			       
*/
void SetSignalNeighbourDetainDrive(const UINT16 signalId, const UINT8 drive);

/*
* 功能描述： 获取指定ID信号机之前变化的驱动显示颜色
* 参数说明： const UINT16 signalId, 信号机ID
* 返回值  ： 0: 获取数据失败
*			>0: 变化驱动显示颜色
*/
UINT8 GetSignalPreChangedDriveColor(const UINT16 signalId);

/*
* 功能描述： 设置指定ID信号机之前变化驱动显示颜色
* 参数说明： const UINT16 signalId, 信号机ID
*			 const UINT8 driveColor, 驱动显示颜色
* 返回值  ： 0: 设置失败
*			 1: 设置成功
*/
UINT8 SetSignalPreChangedDriveColor(const UINT16 signalId, const UINT8 driveColor);
/*
* 功能描述： 设置维修点灯状态
* 参数说明： const UINT16 signalId, 信号机ID
*			 const UINT8 maintainState, 维修点灯状态
* 返回值  ： void
*/
void SetSignalMaintainState(const UINT16 signalId, const UINT8 maintainState);
/*
* 功能描述： 获取维修点灯状态
* 参数说明： const UINT16 signalId, 信号机ID
*			
* 返回值  ： 0: 设置失败
*		    >0: 维修点灯状态 
*/
UINT8 GetSignalMaintainState(const UINT16 signalId);

/*
* 功能描述： 获取信号机点灯区段link数目
* 参数说明： const UINT16 signalId, 信号机ID
* 返回值  ： 点灯区段link数目
* create ：2022.3.4
*/
UINT16 GetSignalLightUpLinkIdSum(const UINT16 signalId);

/*
* 功能描述： 获取信号机点灯区段LINK
* 参数说明： const UINT16 signalId, 信号机ID
* 返回值  ： 点灯区段link
* create ：2022.3.4
*/
UINT16 * GetSignalLightUpLinkIdBuf(const UINT16 signalId);

/**
* @brief 计算信号机点灯link序列
* @param wSignalId 信号机编号
* @param pLinkNum 输出的link数量
* @param szLinkIdBuf 输出的link序列
* @return CI_SUCCESS成功；CI_ERROR失败
* @create 2022.3.4
*/
UINT8 CalSignalLightUpLinkSeq(IN const UINT16 wSignalId, OUT UINT16 * pLinkNum, OUT UINT16 szLinkIdBuf[]);

/**
* @brief 设置信号机点灯LinkID数组
* @param UINT16 wSignalId
* @param UINT16 wLinkSum
* @param UINT16 szLinkBuf[]
* @return CI_SUCCESS成功；CI_ERROR失败
* @create 2022.3.4
*/
UINT8  SetSignalLightUpLinkIdBuf(const UINT16 wSignalId, UINT16 wLinkSum, const UINT16 szLinkBuf[]);

/**
* @brief 刷新信号机点灯link
* @return CI_SUCCESS成功；CI_ERROR失败
* @create 2022.3.4
*/
UINT8 RefreshSignalLightUpLink(void);

/**
* @brief 刷新信号机亮灭状态
* @return CI_SUCCESS成功；CI_ERROR失败
* @create 2022.3.4
*/
UINT8 RefreshSignalLightUpState(void);

/**
* @brief 信号机点灯处理
* @return CI_SUCCESS成功；CI_ERROR失败
* @create 2022.3.4
*/
UINT8 SignalLightUpProc(void);

/*
* 功能描述： 设置信号机点灯区段接近列车ID
* 参数说明： const UINT16 signalId, 信号机ID
*			 const UINT8 maintainState, 维修点灯状态
* 返回值  ： void
*/
void SetSignalLightUpTrainId(const UINT16 signalId, const UINT16 wTrainId);

/*
* 功能描述： 获取信号机点灯区段接近列车ID
* 参数说明： const UINT16 signalId, 信号机ID
* 返回值  ： 其他点灯区段接近列车ID
*            0:失败
*/
UINT16 GetSignalLightUpTrainId(const UINT16 signalId);

/*
* 功能描述： 设置信号机工程车接近状态
* 参数说明： const UINT16 signalId, 信号机ID
* 返回值  ： 0: 设置失败
*			>0: 设置成功
* cgh-合并CID-2341-5：
*/
void SetSigEngineerVehicleNearSte(const UINT16 signalId, const UINT8 sigEngineerVehicleNearState);

/*
* 功能描述： 获取信号机工程车接近状态
* 参数说明： const UINT16 signalId, 信号机ID
* 返回值  ： 0: 获取失败
*			>0:信号机工程车接近状态
* cgh-合并CID-2341-5：
*/
UINT8 GetSigEngineerVehicleNearSte(const UINT16 signalId);

/*
* 功能描述： 设置信号机工程车跨压关闭状态
* 参数说明： const UINT16 signalId, 信号机ID
* 返回值  ： 0: 设置失败
*			>0: 设置成功
* cgh-合并CID-2341-5：
*/
void SetSigEnginVehicCrossCloseSte(const UINT16 signalId, const UINT8 sigEngineerVehicCrossCloseSte);

/*
* 功能描述： 获取信号机工程车跨压关闭状态
* 参数说明： const UINT16 signalId, 信号机ID
* 返回值  ： 0: 设置失败
*			>0: 设置成功
* cgh-合并CID-2341-5：
*/
UINT8 GetSigEnginVehicCrossCloseSte(const UINT16 signalId);

/*
* 功能描述： 设置信号机工程车跨压关闭所属进路
* 参数说明： const UINT16 signalId, 信号机ID
			 const UINT16 routeId 进路ID
*cgh-合并CID-2341-5：
*/
void SetEnginVehicCroCloBelongRoute(const UINT16 signalId, const UINT16 routeId);

/*
* 功能描述： 获取信号机工程车跨压关闭所属进路
* 参数说明： const UINT16 signalId, 信号机ID
* 返回值  ： 0: 设置失败
*			>0:  信号机工程车跨压关闭所属进路
* cgh-合并CID-2341-5：
*/
UINT16 GetEnginVehicCroCloBelongRoute(const UINT16 signalId);
/*
* 功能描述： OC-设置指定ID信号机当前显示颜色
* 参数说明： const UINT16 signalId, 信号机ID
*			 const UINT8 curColor, 当前显示颜色
*返回值：无
*
*/
void OcSetSignalCurColor(const UINT16 signalId, const UINT8 curColor);
/*
* 功能描述： 获取OC信号机板卡状态
* 参数说明： const UINT16 signalId, 信号机ID
* 返回值  ： 0: 获取失败
*			>0:  OC信号机板卡状态     
*/
UINT8 GetSignalBoardState(const UINT16 signalId);

/*
* 功能描述： 设置OC信号机板卡状态
* 参数说明： const UINT16 signalId, 信号机ID   
*            const UINT8 boardState 信号机板卡状态
             
*/
void SetSignalBoardState(const UINT16 signalId, const UINT8 boardState);

/*
* 功能描述： 获取OC信号机全灭灯容忍起始周期
* 参数说明： const UINT16 signalId, 信号机ID
* 返回值  ： 0: 获取失败
*			>0:  OC信号机全灭灯容忍起始周期    
*/
UINT32 GetOcSignalStartCycNum(const UINT16 signalId);

/*
* 功能描述： 设置OC信号机全灭灯容忍起始周期
* 参数说明： const UINT16 signalId, 信号机ID   
             
*/
void SetOcSignalStartCycNum(const UINT16 signalId, const UINT32 startCycNum);
/*
* 功能描述： 获取信号机继电器开始动作起始周期
* 参数说明： const UINT16 signalId, 信号机ID
* 返回值  ： 继电器开始动作起始周期 
*/
UINT32 GetSigRelayActStartCycNum(const UINT16 signalId);

/*
* 功能描述： 获取信号机扣车按钮1激活标志
* 参数说明： const UINT16 signalId, 信号机ID
* 返回值  ： 0: 获取失败
*			>0: 获取成功
*/
UINT8 GetSignalDetainBtnActFlag(const UINT16 signalId);

/*
* 功能描述： 设置信号机扣车按钮1激活标志
* 参数说明： const UINT16 signalId, 信号机ID
* const UINT8 signalZFSBtnActFlag 按钮激活标志
* 返回值  ： 无
*
*/
void SetSignalDetainBtnActFlag(const UINT16 signalId, const UINT8 signalZFSBtnActFlag);

/*
* 功能描述： 设置信号机自复式取消扣车按钮1故障标志
* 参数说明： const UINT16 signalId, 信号机ID
*            const UINT8 signalZFSBtnErrFlag 信号机自复式按钮故障标志
* 返回值  ： 无
*
*/
void SetSignalCancelDetainBtnErrFlag(const UINT16 signalId, const UINT8 signalZFSBtnErrFlag);

/*
* 功能描述： 获取信号机自复式取消扣车按钮1故障标志
* 参数说明： const UINT16 signalId, 信号机ID
* 返回值  ： 0: 获取失败
*			>0: 获取成功
*/
UINT8 GetSignalCancelDetainBtnErrFlag(const UINT16 signalId);

/*
* 功能描述： 设置信号机扣车按钮1按下周期
* 输入参数： const UINT16 signalId  信号机ID
*            const UINT32 startCycNum 周期号
* 输出参数：无
* 返回值  ：无
*/
void SetDetainBtnPressCycNum(const UINT16 signalId, const UINT32 startCycNum);

/*
* 功能描述： 获取信号机扣车按钮1按下周期
* 输入参数： const UINT16 signalId  信号机ID
* 输出参数： 无
* 返回值  ： 信号机扣车按钮1按下周期
*/
UINT32 GetDetainBtnPressCycNum(const UINT16 signalId);

/*
* 功能描述： 设置信号机取消扣车按钮按下周期
* 输入参数： const UINT16 signalId  信号机ID
*            const UINT32 startCycNum 周期号
* 输出参数：无
* 返回值  ：无
*/
void SetCancelDetainBtnPressCycNum(const UINT16 signalId, const UINT32 startCycNum);

/*
* 功能描述： 获取信号机取消扣车按钮按下周期
* 输入参数： const UINT16 signalId  信号机ID
* 输出参数： 无
* 返回值  ： 信号机取消扣车按钮按下周期
*/
UINT32 GetCancelDetainBtnPressCycNum(const UINT16 signalId);

/*
* 功能描述： 设置信号机自复式取消扣车按钮1有效标志
* 参数说明： const UINT16 signalId, 信号机ID
*            const UINT8 signalZFSBtnValidFlag 信号机自复式按钮有效标志
* 返回值  ： 无
*/
void SetCancelDetainBtnValidFlag(const UINT16 signalId, const UINT8 signalZFSBtnValidFlag);

/*
* 功能描述： 获取信号机自复式取消扣车按钮1有效标志
* 参数说明： const UINT16 signalId, 信号机ID
* 返回值  ： 0: 获取失败
*			>0: 获取成功
*/
UINT8 GetCancelDetainBtnValidFlag(const UINT16 signalId);

/*
* 功能描述： 设置信号机自复式扣车按钮1故障标志
* 参数说明： const UINT16 signalId, 信号机ID
*            const UINT8 signalZFSBtnErrFlag 信号机自复式按钮故障标志
* 返回值  ： 无
*
*/
void SetSignalDetainBtnErrFlag(const UINT16 signalId, const UINT8 signalZFSBtnErrFlag);

/*
* 功能描述： 获取信号机自复式扣车按钮1故障标志
* 参数说明： const UINT16 signalId, 信号机ID
* 返回值  ： 0: 获取失败
*			>0: 获取成功
*/
UINT8 GetSignalDetainBtnErrFlag(const UINT16 signalId);

/*
* 功能描述： 检查当前信号机显示颜色是否合法
* 参数说明： const UINT8 chSignalCurColor 信号机当前显示颜色
* 返回值  ： CI_SUCCESS: 合法
*			 CI_ERROR: 不合法
* by cgh 20230719 相邻联锁传递信号机当前显示颜色时进行接口校验
*/
UINT8 CheckSignalCurColor(const UINT8 chSignalCurColor);

/*
* 功能描述： 判断指定ID信号机是否中心扣车
* 参数说明： const UINT16 signalId, 信号机ID
* 返回值  ：	aa: 中心扣车
*           55: 未人工扣车
*           5a: 未自动扣车
*/
UINT8 GetSignalATSDetainFlag(const UINT16 signalId);

/*
* 功能描述： 判断指定ID信号机是否现地扣车
* 参数说明： const UINT16 signalId, 信号机ID
* 返回值  ：	CI_ERROR: 现地扣车
*           CI_SUCCESS: 未现地扣车
*/
UINT8 GetSignalLocalDetainFlag(const UINT16 signalId);

/*
* 功能描述：设置逻辑进路驱动信号机异常关闭标志
* 参数说明： const UINT16 signalId, 信号机ID
* 返回值  ： LOG_ROUTE_SIGNAL_CLOSE_ERR：异常关闭
*			 LOG_ROUTE_SIGNAL_CLOSE_NOERR：未异常关闭
*/
UINT8 GetLogRouteSignalErrCloseFlag(const UINT16 signalId);

/*
* 功能描述：设置逻辑进路驱动信号机异常关闭标志
* 参数说明： const UINT8 wFlag, 异常关闭标志
*			 const UINT16 signalId, 信号机ID
* 返回值  ： void
*/
void SetLogRouteSignalErrCloseFlag(const UINT16 signalId, const UINT8 wFlag);

/*
* 功能描述： 获取指定ID信号机软件扣车标志
* 参数说明： const UINT16 signalId, 信号机ID
* 返回值  ： 0: 获取数据失败
*			>0: 扣车标志
*/
UINT8 GetSignalSoftDetainFlag(const UINT16 signalId);

/*
* 功能描述： 获取信号机列车跨压内方第一区段占压状态
* 参数说明： const UINT16 signalId, 信号机ID
* 返回值  ： 0: 获取失败
*			>0:信号机列车跨压内方第一区段占压状态
*/
UINT8 GetSigVobcCrossInPhyOccSta(const UINT16 signalId);

/*
* 功能描述： 设置信号机列车跨压内方第一区段占压状态
* 参数说明： const UINT16 signalId, 信号机ID
*			 const UINT8 SigVobcCrossInPhyOccSta  设置占压状态
* 返回值  ： 无
*/
void SetSigVobcCrossInPhyOccSta(const UINT16 signalId, const UINT8 SigVobcCrossInPhyOccSta);

/*
* 功能描述：设置信号机取消扣车按钮误触发按下周期
* 输入参数：const UINT16 signalId  信号机ID
*           const UINT32 startCycNum 周期号
* 输出参数：无
* 返回值  ：无
* Created By LQ 2024.04.11
*/
void SetCancelDetErrTrigPressCycNum(const UINT16 signalId, const UINT32 startCycNum);

/*
* 功能描述：获取信号机取消扣车按钮误触发按下周期
* 输入参数：const UINT16 signalId  信号机ID
* 输出参数：无
* 返回值  ：信号机取消扣车按钮误触发按下周期
* Created By LQ 2024.04.11
*/
UINT32 GetCancelDetErrTrigPressCycNum(const UINT16 signalId);

/*
* 功能描述：设置信号机取消扣车按钮采集继电器落下状态
* 参数说明：const UINT16 signalId, 信号机ID
*           const UINT8 cRelayDownState 继电器落下状态
* 返回值  ：无
* Created By LQ 2024.04.11
*/
void SetCancelDetainRelayDownState(const UINT16 signalId, const UINT8 cRelayDownState);

/*
* 功能描述：获取信号机取消扣车按钮采集继电器落下状态
* 参数说明：const UINT16 signalId, 信号机ID
* 返回值  ：0 获取失败
*			0x55 正常落下
*           0xaa 通信异常落下
* Created By LQ 2024.04.11
*/
UINT8 GetCancelDetainRelayDownState(const UINT16 signalId);

/*
* 功能描述：休眠车终端信号机亮灭状态处理
* 参数说明：const UINT16 wSignalId 信号机ID
* 返 回 值：无
* Created By LQ 2024.08.21
*/
void SleepTrainSignalLightUpProc(const UINT16 wSignalId);

/*
* 功能描述：获取休眠车点亮信号机标志
* 参数说明：const UINT16 signalId 信号机ID
* 返 回 值：0x55 无效
*			0xAA 有效
* Created By LQ 2024.08.21
*/
UINT8 GetSleepTrainLightUpSignalFlag(const UINT16 signalId);

/*
* 功能描述：设置休眠车点亮信号机标志
* 参数说明：const UINT16 signalId, 信号机ID
*			const UINT8 cLightUpFlag  点亮标志
* 返 回 值：无
* Created By LQ 2024.08.21
*/
void SetSleepTrainLightUpSignalFlag(const UINT16 signalId, const UINT8 cLightUpFlag);

/*
* 功能描述：获取信号机湿轨标志
* 参数说明：const UINT16 signalId 信号机ID
* 返 回 值：0x55 无效
*			0xAA 有效
* Created By LQ 2024.09.20
*/
UINT8 GetSignalInHumidRailFlag(const UINT16 signalId);

/*
* 功能描述：设置信号机湿轨标志
* 参数说明：const UINT16 signalId 信号机ID
*			const UINT8 cInHumidRailFlag  信号机湿轨标志
* 返 回 值：无
* Created By LQ 2024.09.20
*/
void SetSignalInHumidRailFlag(const UINT16 signalId, const UINT8 cInHumidRailFlag);

/*
* 功能描述： 整合指定ID信号机当前断丝标志
* 参数说明： const UINT16 signalId, 信号机ID
* 返回值  ：
bit7：1表示存在红灯断丝；0未断丝
bit6：1表示存在蓝灯断丝；0未断丝
bit5~bit4：11表示存在绿灯断丝；00未断丝，其他非法
bit3~bit2：11表示存在黄灯断丝；00未断丝，其他非法
bit1~bit9：11表示存在白灯断丝；00未断丝，其他非法
* Created By fan 2025.05.06
*/
UINT8 GetSignalCurBreakFlag(const UINT16 signalId);

/*
* 功能描述： 设置相邻联锁指定ID信号机当前断丝标志
* 参数说明： const UINT16 signalId, 信号机ID
*			 const UINT8 curDsFlag, 相邻联锁发送断丝标志
* 返回值  ：无
* Created By fan 2025.05.06
*/
void SetNearCISignalCurDsFlag(const UINT16 signalId, const UINT8 curDsFlag);

/*
* 功能描述：设置互联互通CI指定ID信号机蓝灯断丝标志
* 参数说明：const UINT16 wSignalId 信号机ID
*			const UINT8 cFlag 断丝标志
* 返 回 值：无
* Created By LQ 2025.05.31
*/
void SetHlhtCiSignalBlueDsBreakFlag(const UINT16 wSignalId, const UINT8 cFlag);

/*
* 功能描述：设置信号机扣车旁路按钮状态
* 参数说明：const UINT16 signalId, 信号机ID
*           const UINT8 cFlag 旁路按钮状态
* 返 回 值：无
* Created By LQ 2025.06.19
*/
void SetDetCutBtnState(const UINT16 signalId, const UINT8 cState);

/*
* 功能描述：获取信号机扣车旁路按钮状态
* 参数说明：const UINT16 signalId 信号机ID
* 返 回 值：0: 获取失败
*			>0: 获取成功
* Created By LQ 2025.06.19
*/
UINT8 GetDetCutBtnState(const UINT16 signalId);

/*
* 功能描述：设置信号机扣车旁路按钮正常按下周期
* 参数说明：const UINT16 signalId  信号机ID
*           const UINT32 startCycNum 周期号
* 返 回 值：无
* Created By LQ 2025.06.19
*/
void SetDetCutBtnPressCycNum(const UINT16 signalId, const UINT32 startCycNum);

/*
* 功能描述：获取信号机扣车旁路按钮正常按下周期
* 参数说明：const UINT16 signalId  信号机ID
* 返 回 值： 信号机扣车旁路按钮按下正常周期
* Created By LQ 2025.06.19
*/
UINT32 GetDetCutBtnPressCycNum(const UINT16 signalId);

/*
* 功能描述：设置信号机扣车旁路按钮误触发按下周期
* 参数说明：const UINT16 signalId  信号机ID
*           const UINT32 startCycNum 周期号
* 返 回 值：无
* Created By LQ 2025.06.19
*/
void SetDetCutBtnErrTrigPressCycNum(const UINT16 signalId, const UINT32 startCycNum);

/*
* 功能描述：获取信号机扣车旁路按钮误触发按下周期
* 输入参数：const UINT16 signalId  信号机ID
* 输出参数：无
* 返回值  ：信号机扣车旁路按钮误触发按下周期
* Created By LQ 2025.06.19
*/
UINT32 GetDetCutBtnErrTrigPressCycNum(const UINT16 signalId);

/*
* 功能描述：设置信号机扣车旁路按钮故障标志
* 参数说明：const UINT16 signalId 信号机ID
*           const UINT8 cBtnErrFlag 信号机扣车旁路按钮故障标志
* 返 回 值：无
* Created By LQ 2025.06.19
*/
void SetSignalDetCutBtnErrFlag(const UINT16 signalId, const UINT8 cBtnErrFlag);

/*
* 功能描述：获取信号机扣车旁路按钮故障标志
* 参数说明：const UINT16 signalId 信号机ID
* 返 回 值：0: 获取失败
*		   >0: 获取成功
* Created By LQ 2025.06.19
*/
UINT8 GetSignalDetCutBtnErrFlag(const UINT16 signalId);

/*
* 功能描述：设置信号机扣车旁路按钮采集继电器落下状态
* 参数说明：const UINT16 signalId 信号机ID
*           const UINT8 cRelayDownState 继电器落下状态
* 返 回 值：无
* Created By LQ 2025.06.19
*/
void SetDetCutBtnRelayDownState(const UINT16 signalId, const UINT8 cRelayDownState);

/*
* 功能描述：获取信号机扣车旁路按钮采集继电器落下状态
* 参数说明：const UINT16 signalId 信号机ID
* 返回值  ：0 获取失败
*			0x55 正常落下
*           0xaa 通信异常落下
* Created By LQ 2025.06.19
*/
UINT8 GetDetCutBtnRelayDownState(const UINT16 signalId);

/*
* 功能描述：设置信号机扣车按钮2按下周期
* 输入参数：const UINT16 signalId  信号机ID
*           const UINT32 startCycNum 周期号
* 输出参数：无
* 返 回 值：无
* Created By LQ 2025.06.26
*/
void SetDetainSndBtnPressCycNum(const UINT16 signalId, const UINT32 startCycNum);

/*
* 功能描述：获取信号机扣车按钮2按下周期
* 输入参数：const UINT16 signalId  信号机ID
* 输出参数：无
* 返 回 值：信号机扣车按钮2按下周期
* Created By LQ 2025.06.26
*/
UINT32 GetDetainSndBtnPressCycNum(const UINT16 signalId);

#ifdef __cplusplus
}
#endif

#endif
