/********************************************************
* 
* 文 件 名： DeviceDataManage.h   
* 版权说明： 北京交控科技有限公司 
* 创建时间： 2012-09-21
* 作    者： 联锁组
* 功能描述： 设备间数据管理头文件  
* 函数包括： 
* 使用注意：
* 修改记录：   
*		20141205 燕房线需求追加SPKS对应封锁处理
*
********************************************************/ 
#ifndef _DEVICE_DATA_MANAGE_H_
#define _DEVICE_DATA_MANAGE_H_

#include "CommonTypes.h"

/*区间雨雪信息结构体*/
typedef struct S_AreaSnowInfoStruct
{
	UINT16 wAreaId;	 /*区间ID*/
	UINT8 cAreaSnowLevel;  /*区间湿轨级别*/
} AreaSnowInfoStruct;

#include "../System/CiSystemDefine.h"
#include "../error/ErrorDataManage.h"
#include "../Transmit/TransmitStateDataManage.h"

#include "../Route/RouteConfigDataManage.h"
#include "../Route/RouteDataManage.h"

#include "../Section/AxisSectionConfigDataManage.h"
#include "../Section/AxisSectionDataManage.h"
#include "../Section/LogicSectionConfigDataManage.h"
#include "../Section/LogicSectionDataManage.h"
#include "../Section/PhysicalSectionConfigDataManage.h"
#include "../Section/PhysicalSectionDataManage.h"
#include "../Section/PhysicalSectionDataManage.h"

#include "../Signal/SignalDataManage.h"

#include "../Switch/SwitchConfigDataManage.h"
#include "../Switch/SwitchDataManage.h"

#include "../Overlap/OverlapConfigDataManage.h"
#include "../Overlap/OverlapDataManage.h"

#include "../AutoReturn/AutoReturnDefine.h"
#include "../AutoReturn/AutoReturnConfigDataManage.h"

#include "../AllAutoReturn/AllAutoReturnDefine.h"
#include "../AllAutoReturn/AllAutoReturnConfigDataManage.h"
#include "../ReverseRoute/ReverseRouteConfigDataManage.h"
#include "../spks/SpksConfigDataManage.h"
#include "../spks/SpksDataManage.h"
#include "../esb/ESBDataManage.h"
#include "../Garagedoor/GaragedoorDataManage.h"
#include "../WashMachine/WashMachineDataManage.h"

#include "../PSD/PSDConfigDataManage.h"
#include "../PSD/PSDDataManage.h"
#include "../DiffLineDev/DiffLineDevConfigDataManage.h"
#include "../AutoRoute/AutoRouteDataManage.h"
#include "../AutoReturn/AutoReturnDataManage.h"
#include "../AllAutoReturn/AllAutoReturnDataManage.h"
#include "../LogicProcess/InterlockLogicCheck.h"
#include "../ParsePack/ParsePackAtsData.h"
#include "../VirtualDevice/VirtualDevDefine.h"

/*--------------------------------------------------------------------------
 * 其他联锁条件状态定义
 *--------------------------------------------------------------------------*/
/* 其他联锁条件检查配置状态相关定义 */
#define LOCAL_AREA_SNOW_SUM_MAX   ((UINT8)20)     /*本控区及相邻控区发送的区间雨雪站台数量*/
#define ALL_AREA_SNOW_SUM_MAX     ((UINT8)254)    /*TMC发送的全线区间雨雪站台数量*/

/* 1	信号机	
开放0x55
关闭0xaa
同级开放0xbb（该信号机开放颜色与始端信号机相同）
*/
#define OTHER_CI_SIGNAL_STATUS_OPEN ((UINT8)0x55)
#define OTHER_CI_SIGNAL_STATUS_CLOSE ((UINT8)0xAA)
#define OTHER_CI_SIGNAL_STATUS_SAME ((UINT8)0xbb)

/* 2	道岔	定位0x55 反位0xaa */
#define OTHER_CI_SWTICH_STATUS_DINGWEI ((UINT8)0x55)
#define OTHER_CI_SWTICH_STATUS_FANWEI ((UINT8)0xAA)

/* 3	屏蔽门	打开0x55 关闭0xaa 正常VOBC打开屏蔽门 0xff*/
#define OTHER_CI_PSD_STATUS_OPEN ((UINT8)0x55)
#define OTHER_CI_PSD_STATUS_CLOSE ((UINT8)0xAA)
#define OTHER_CI_PSD_STATUS_OCCUPY_OPEN ((UINT8)0xFF)

/* 4	紧急关闭按钮	实施0xaa 未实施0x55 */
#define OTHER_CI_ESB_STATUS_VALID ((UINT8)0xAA)
#define OTHER_CI_ESB_STATUS_UNVALID ((UINT8)0x55)


/* 5	封锁作业开关	实施0x55 未实施0xaa */
#define OTHER_CI_SPKS_YES ((UINT8)0x55)
#define OTHER_CI_SPKS_NO ((UINT8)0xAA)

/* 6	车库门	打开0x55 关闭0xAA */
#define OTHER_CI_GARAGEDOOR_OPEN ((UINT8)0x55)
#define OTHER_CI_GARAGEDOOR_CLOSE ((UINT8)0xAA)


/* 7	洗车机故障状态	故障0x55 未故障0xaa */
#define OTHER_CI_WASH_READ_YES ((UINT8)0x55)
#define OTHER_CI_WASH_READ_NO ((UINT8)0xAA)

/* 8	物理区段占用状态	空闲0x55 占用0xaa */
#define OTHER_CI_PHYSICAL_OCCU_YES ((UINT8)0xAA)
#define OTHER_CI_PHYSICAL_OCCU_NO  ((UINT8)0x55)

/* 9	洗车线同意洗车	同意0xAA 未同意0x55 */
#define OTHER_CI_WASH_LINE_ALLOW_YES ((UINT8)0xAA)
#define OTHER_CI_WASH_LINE_ALLOW_NO  ((UINT8)0x55)

/* 10	洗车同意通过	不同意0x55 同意0xaa */
#define OTHER_CI_DOWNWASH_ALLOW_PASS_NO ((UINT8)0x55)
#define OTHER_CI_DOWNWASH_ALLOW_PASS_YES ((UINT8)0xAA)

/* 11	进路	进路信号关闭0x55 信号开放0xaa */
#define OTHER_CI_ROUTE_STATUS_OPEN_NO ((UINT8)0x55)
#define OTHER_CI_ROUTE_STATUS_OPEN_YES ((UINT8)0xAA)

#define VOBCTOCIAUTORTN_INDICT_MASK_VALID ((UINT8)0x55)		/*VOBC给CI的无人折返灯码位有效*/
#define VOBCTOCIAUTORTN_INDICT_MASK_INVALID ((UINT8)0xAA)		/*VOBC给CI的无人折返灯码位无效*/

#define OTHER_CI_FLOOD_GATE_OPEN			((UINT8)0x55)	/*防淹门开门*/
#define OTHER_CI_FLOOD_GATE_CLOSE		((UINT8)0xaa)	/*防淹门关门*/

#define OTHER_CI_CONNECT_SWITCH_YES          ((UINT8)0xaa) /*联络线道岔状态满足：旁路+单锁+定位*/
#define OTHER_CI_CONNECT_SWITCH_NODSUO_YES   ((UINT8)0x5a) /*联络线道岔状态满足：旁路+定位*/
#define OTHER_CI_CONNECT_SWITCH_NO           ((UINT8)0x55) /*联络线道岔状态不满足*/

#define CICI_RELAY_INTERFACE_CONFIRM_NO		((UINT8)0x55)	/*相邻联锁继电接口未确认*/
#define CICI_RELAY_INTERFACE_CONFIRM_YES	((UINT8)0xaa)	/*相邻联锁继电接口已确认*/

#define ZFWJ_HUN_XIAN_NO     ((UINT8)0x00)  /*计轴总复位不是混线状态*/
#define ZFWJ_HUN_XIAN_YES    ((UINT8)0x01)  /*计轴总复位混线状态*/
#define CANCEL_SWITCH_BLOCK_LINK  ((UINT8)0x55)  /*取消转辙机封连报警*/
#define RECOVER_SWITCH_BLOCK_LINK ((UINT8)0xaa)  /*恢复转辙机封连报警*/

/* 物理区段封锁状态 其他联锁条件增加物理区段封锁检查  */
#define OTHER_CI_PHYSICAL_FENGSUO_YES ((UINT8)0xAA)  /*检查封锁0xaa ，封锁之后不影响信号开放*/
#define OTHER_CI_PHYSICAL_FENGSUO_NO  ((UINT8)0x55)  /*检查未封锁0x55，封锁之后信号不开*/
/*中央联锁控制结构体*/
typedef struct S_CtrlPowerStruct
{
	UINT8  virCiId;			/*虚拟联锁ID*/
	UINT16 ctrlDeviceId;	/*控制设备ID*/
	UINT8 ctrlDeviceType;	/*控制设备类型*/
	UINT8 ctrlPowerState;	/*控制权状态*/
}CtrlPowerStruct;

/*全线通信车信息结构体*/
typedef struct S_LineCommTrainStruct
{
	UINT8  cCommTrainNum;  /*全线通信车数量*/
	UINT16 szCommTrainNumID[TRAIN_SUM_MAX];	 /*全线通信车ID数组*/
}LineCommTrainStruct;


/*******************************全局变量声明*******************************/
extern UINT8 AllSignalBrightFlag;					                  /*全站亮灯标志*/

extern UINT8 AllSwitchYLockFlag;						                  /*全站引导总锁标志*/

extern UINT8 StartFLockFlag;								                  /*全站封锁标志*/

extern UINT8 StartLockFlag;								                  /*上电锁闭标志*/

extern UINT8 LSXianSuCancelBtnIsValidFlag;          /*临时限速人工解除标志*/

extern UINT8 LabourCancelLinShiXianState;                          /*人工取消临时限速迁移状态*/

extern UINT8 StopCheckState;							                  /*停止检查未设置*/

extern UINT16 JkjRelayId;													                  /*应急盘继电器ID*/

extern UINT8 PlatOverFlag;										                  /*平台宕机标志*/

extern UINT8 ciMode;										                  /* 联锁控模式 */

extern UINT8 g_AllTsrFlag;												  /* 临时限速标志 */

extern UINT8 g_AllSnowModel;                                                 /*全线雨雪模式命令*/

extern UINT8 g_AllSnowLevel;                                                 /*全线湿轨级别：0-默认值；1-一级；2-二级*/

extern UINT8 g_IteLineCutState;                                          /*ITE全线切除状态：0x55：切除ITE；0xAA：使用ITE；0xFF：默认值*/

extern UINT8 g_AllLineTsrState;                                          /*全线临时限速状态*/

extern UINT8 g_AllLineTsrSpeed;																/*全线临时限速速度*/

extern UINT8 JkjRelayValid;                                                 /*JKJ应急盘继电器无效*/

extern UINT32 JkjRelayValidCycNum;                                                              /*JKJ应急盘继电器有效周期*/

extern UINT8 ciTrainTestStatus;                                              /*试车线联锁状态非试车中*/

extern UINT8 psdPangluFlag;                            /*站台安全门按钮旁路状态*/

extern UINT8 generalResetFlag;                        /*计轴总复位标志无效*/

extern UINT32 ZFWValidCycNum;                                                              /*ZFW总复位继电器有效周期*/

extern UINT32 ZFWCmdStartCycNum;                                                            /*ZFW命令收到周期*/

extern UINT8 g_cTsrSureFlag;													/* 临时限速确认标志 */

extern UINT8 comm_Train_Test_SQAJ_SCX_State;				/*试车线与车辆段采用通信接口时试车线SQAJ状态*/
extern UINT8 comm_Train_Test_YSKJ_SCX_State;				/*试车线与车辆段采用通信接口时试车线YSKJ状态*/
extern UINT8 comm_Train_Test_SQJ_CLD_State;				/*试车线与车辆段采用通信接口时车辆段SQJ状态*/
extern UINT8 comm_Train_Test_TYSJ_CLD_State;				/*试车线与车辆段采用通信接口时车辆段TYSJ状态*/

extern UINT8 ZCToCIAutoRtnIndict_Flash_Sta;			/*ZC给CI的无人折返灯闪灯状态*/
extern UINT8 ZCToCIAutoRtnIndict_Steady_Sta;		/*ZC给CI的无人折返灯稳灯状态*/
extern UINT8 AutoTriggerFlag;                                             /*自动触发标志初始化为未设置*/

extern UINT8 CiCiRelayInterfaceConfirmFlag;/*继电接口确认标志*/
extern UINT8 ZFWJRelayHunXianFlag; /*计轴总复位混线标志*/
extern UINT8 SwitchBlockLinkState; /*初始值为恢复封连报警状态：此时报警有效*/

extern CtrlPowerStruct ctrlpowerFlag[VIRTUAL_CI_MAX];

extern UINT8 LocalAreaSnowNum;  /*本地区间雨雪站台数量*/
extern AreaSnowInfoStruct szLocalAreaSnow[LOCAL_AREA_SNOW_SUM_MAX];  /*本地区间雨雪数组*/

extern LineCommTrainStruct gStrLineCommTrain;  /*全线通信车结构体*/

extern UINT32 gFlyProtectOverCyc;										                  /*飞车宕机报警起始周期*/
extern UINT8 g_LocalSnowModel;     /*本地雨雪模式命令*/

extern UINT8 gLocalAreaIteCutNum;  /*本地区间ITE切除数量*/
extern UINT16 gSzLocalAreaIteCutId[ALL_AREA_SNOW_SUM_MAX];  /*本地区间ITE切除ID数组*/

/******************************联锁标志数据管理****************************/

/*
* 功能描述： 获取电解封标志
* 参数说明： void
* 返回值  ：CI_START_FLOCK_YES    
			CI_START_FLOCK_NO
*/
UINT8 GetStartFLockFlag(void);

/*
* 功能描述： 设置上电解封标志
* 参数说明： void
* 返回值  ：CI_START_FLOCK_YES    
			CI_START_FLOCK_NO
            CI_START_FLOCK_ERROR
*/
void SetStartFLockFlag(UINT8 setFlag);

/*
* 功能描述： 获取上电解锁标志
* 参数说明： void
* 返回值  ：CI_START_LOCK_NO    
			CI_START_LOCK_YES 
*/
UINT8 GetStartLockFlag(void);

/*
* 功能描述： 设置上电解锁标志
* 参数说明： void
* 返回值  ：CI_START_LOCK_NO    
			CI_START_LOCK_YES
            CI_START_LOCK_ERROR
*/
void SetStartLockFlag(UINT8 setFlag);





/*
* 功能描述： 获取人工取消临时限速的状态
* 参数说明： void
* 返回值  ：LINSHIXIANSU_COMM_GOOD_STATE     
			LINSHIXIANSU_COMM_BAD_NO_LABOURCANCLE_STATE
			LINSHIXIANSU_COMM_BAD_YES_LABOURCANCLE_STATE
*/
UINT8 GetLabourCancelLinShiXianState(void);

/*
	功能描述：人工取消临时限速状态迁移处理
	参数说明：setFlag  状态
	返回值：无
*/
void LabourCancelLSXianStaMoveProc(UINT8 setFlag);
/*
	功能描述：人工取消临时限速状态迁移处理
	参数说明：setFlag  状态,UINT8 virCIid 虚拟联锁ID
	返回值：无
*/
void LaborCancelLSXSXStaMoveProc_Vir(UINT8 setFlag,UINT8 virCIid);


/*
* 功能描述： 获取全站引导总锁标志
* 参数说明： void
* 返回值  ：CI_ALL_SWITCH_YLOCK_NO  
			CI_ALL_SWITCH_YLOCK_YES 
*/
UINT8 GetAllSwitchYLockFlag(void);



/*
* 功能描述： 设置全站引导总锁标志
* 参数说明： void
* 返回值   ：CI_ALL_SWITCH_YLOCK_NO  
			CI_ALL_SWITCH_YLOCK_YES 
*/
void SetAllSwitchYLockFlag(UINT8 setFlag);

/*
* 功能描述： 获取全站亮灯标志
* 参数说明： void
* 返回值  ：CI_ALL_SIGNAL_BRIGHT_NO   
			CI_ALL_SIGNAL_BRIGHT_YES 
*/
UINT8 GetAllSignalBrightFlag(void);


/*
* 功能描述： 设置全站亮灯标志
* 参数说明： void
* 返回值  ：CI_ALL_SIGNAL_BRIGHT_NO   
			CI_ALL_SIGNAL_BRIGHT_YES 
*/
void SetAllSignalBrightFlag(UINT8 setFlag);

/*
* 功能描述： 获取计轴总复位标志
* 参数说明： void
* 返回值  ：CI_PHYSEC_GENERAL_RESET_NO   
			CI_PHYSEC_GENERAL_RESET_YES 
*/
UINT8 GetPhySecGeneralResetFlag(void);

/*
* 功能描述： 设置计轴总复位标志
* 参数说明： void
* 返回值  ：CI_ALL_SIGNAL_BRIGHT_NO   
			CI_ALL_SIGNAL_BRIGHT_YES 
*/
void SetPhySecGeneralResetFlag(UINT8 setFlag);

/******************************进路数据交叉管理****************************/

/*
* 功能描述： 找到进路内第一个正常锁闭区段
* 参数说明： UINT16 routeId
* 返回值  ： UINT16 区段ID
*            = 0 无效
*            > 0 区段ID
*/
UINT16 GetRouteFirstNormalLockSection(UINT16 RouteId);

/*
* 功能描述： 找到进路内第一个延时锁闭区段
* 参数说明： UINT16 routeId,    进路号

* 返回值  ： UINT16 区段ID
*            = 0 无效
*            > 0 区段ID
*/
UINT16 GetRouteFirstDelayLockSection(UINT16 RouteId);

/*
* 功能描述： 检查进路物理区段已解锁
* 参数说明： UINT16 routeId 进路号
*	返回值：1：是
*         0: 否
*/	
UINT8 CheckRoutePhySecHaveUnLock(const UINT16 routeId);

/*
* 功能描述： 进路区段封锁无效检查
* 参数说明：
*            UINT16 routeId,    进路号
* 返回值  ： CI_ERROR    区段封锁有效
*            CI_SUCCESS  区段封锁无效
*/
UINT8 RouteSecFlockVainCheck(const UINT16 routeId);
/*
* 功能描述： 进路保护区段封锁无效检查
* 参数说明：
*            UINT16 routeId,    进路号
* 返回值  ： CI_ERROR    区段封锁有效
*            CI_SUCCESS  区段封锁无效
*/
UINT8 RouteOverlapSecFlockVainCheck(const UINT16 routeId);



/*
* 功能描述：进路有车接近处理
* 参数说明： const UINT16 routeId, 进路ID
* 返回值  ： FUNCTION_SUCCESS：成功
*            FUNCTION_ERROR  ：失败   
*/
UINT8 RouteHaveTrainNear(const UINT16 routeId);



/* 找到进路有效折返信号机 */
/*
* 功能描述： 找到进路有效折返信号机
* 参数说明： UINT16 routeId
* 返回值  ： UINT16 信号机ID
*            = 0 无效
*            > 0 信号机ID
*/
UINT16 GetValidReturnSinalId(UINT16 const routeId,UINT16 const setionId);

/*
功能描述: 	驱动进路内本地道岔处理
输入参数:	const UINT16 routeId 进路ID
输出参数:	const UINT8 DrivFlag 道岔驱动标志
返回值:		无
edit cgh 20241203
*/
void RouteDrvInnerSwitch(const UINT16 routeId, const UINT8 DrivFlag);

/*
功能描述: 	驱动带动道岔处理
输入参数:	const UINT16 routeId 进路ID
	        		UINT8 DrivFlag 道岔驱动标志
输出参数:	无
返回值:		无
*/
void RouteDrvAssocSwitch(const UINT16 routeId, const UINT8 DrivFlag);

/*
功能描述: 	进路锁闭驱动本联锁道岔处理
输入参数:	const UINT16 routeId 进路ID
	         		UINT8 NeedForDrvRoutAssoSwit 是否需要驱动带动道岔
输出参数:	无
返回值:		CI_SUCCESS,如果道岔锁闭处理成功
				CI_ERROR,如果道岔锁闭处理失败
*/
UINT8 RouteLockDriveSwitch(const UINT16 routeId, const UINT8 NeedForDrvRoutAssoSwit);

/*
* 功能描述： 列车驶入进路状态
* 参数说明： const UINT16 routeId, 进路ID
* 返回值  ： CI_ERROR; CI_SUCCESS
* edit cgh 20250113
*/
UINT8 GetTrainEnteringRouteState(const UINT16 routeId);


/******************************信号机数据交叉管理****************************/

/*
* 功能描述： 驱动信号机开放
* 参数说明： const UINT16 signalId , 信号机ID
*			 const UINT16 routeId , 进路ID
* 返回值  ： 0:失败
*			 1:成功 
*/
void DriveSignalOpen(const UINT16 signalId, const UINT16 routeId);

/*
* 功能描述： 驱动信号机关闭
* 参数说明： const UINT16 signalId, 信号机ID
* 返回值  ： 0:失败
*			 1:成功  
*/
UINT8 DriveSignalClose(const UINT16 signalId);

/******************************道岔数据交叉管理****************************/

/*
* 功能描述： 道岔可提前动作有效性检查
* 参数说明： UINT16 switchId，道岔Id
*			 UINT8	oper_src,操作来源
*			 UINT8 sendLevel，发送级别
* 返回值  ： CI_SUCCESS: 更新失败
*			 CI_ERROR: 更新成功
* add 20221009 适配进路可提前扳动道岔功能
*/
UINT8 GetSwitchMoveEarlyValidState(UINT16 switchId, UINT8	oper_src, UINT8 sendLevel);

/*
* 功能描述： 道岔可动作有效性检查
* 参数说明： UINT16 switchId，道岔Id
*			 UINT8	oper_src,操作来源
*			 UINT8 sendLevel，发送级别
* 返回值  ： CI_SUCCESS: 更新失败
*			 CI_ERROR: 更新成功   
* modify 20221009 适配进路可提前扳动道岔功能   
*/
UINT8 GetSwitchMoveValidState(UINT16 switchId,UINT8	oper_src,UINT8 sendLevel);

/* zt 删除单轨相关代码 2022-02-15 */

/*
* 功能描述： 道岔强扳可动作有效性检查
* 参数说明： UINT16 switchId 道岔ID
*            UINT8 sendLevel 给ATS和现地发送级别
* 返回值  ： CI_SUCCESS: 更新失败
*			 CI_ERROR: 更新成功      
*/
UINT8 GetSwitchForceMoveValidState(UINT16 switchId,UINT8 sendLevel);

/* zt 删除单轨相关代码 2022-02-15 */

/*
* 功能描述： 获取道岔锁闭状态
* 参数说明： void
* 返回值  ： 0: 获取失败
*			 >0: 道岔锁闭状态      
*/
UINT8 GetSwitchRouteLockState(UINT16 switchId);

/*
* 功能描述： 道岔驱动处理
* 参数说明： const UINT16 switchId, 道岔ID
*			 const UINT8 switchPos, 道岔位置
*            const UINT32 curCycleNum, 当前周期号
* 返回值  ： void      
*/
UINT8 SwitchDriveProcess(const UINT16 switchId, const UINT8 switchPos);


/*
功能描述:
	清除进路关联道岔期望驱动位置
输入参数:
	const UINT16 routeId 进路ID 
输出参数:	
	无.
返回值:
	无
*/
void ClearRouteSwitchDrivePos(const UINT16 routeId);


/*
功能描述:
	清除保护区段关联道岔期望驱动位置
输入参数:
	const UINT16 routeId 进路ID 
输出参数:	
	无.
返回值:
	无
*/
void ClearOverlapSwitchDrivePos(const UINT16 overlapId);

/*
功能描述:
	清除保护区段关联道岔单操位置
输入参数:
	const UINT16 routeId 进路ID 
输出参数:	
	无.
返回值:
	无
*/
void ClearOverlapSwitchDanCaoPos(const UINT16 overlapId);

/*
功能描述:
	清除进路关联道岔单操位置
输入参数:
	const UINT16 routeId 进路ID 
输出参数:	
	无.
返回值:
	无
*/
void ClearRouteSwitchDanCaoPos(const UINT16 routeId);

/*
功能描述:
	清除非进路关联道岔期望驱动位置
输入参数:
	无
输出参数:	
	无.
返回值:
	CI_SUCCESS 成功
	CI_ERROR 失败
*/
UINT8 ClearNonRouteSwitchDrivePos(UINT8 nonRouteId);

/*
功能描述:
	清除非进路关联道岔单操位置
输入参数:
	const UINT16 routeId 进路ID 
输出参数:	
	无.
返回值:
	CI_SUCCESS 成功
	CI_ERROR 失败
*/
UINT8 ClearNonRouteSwitchDanCaoPos(UINT8 nonRouteId);


/******************************区段数据交叉管理****************************/


/*
* 功能描述： 获取物理区段ARB信息
* 参数说明： void
* 返回值  ： AXIS_SECTION_ARB_NO  未ARB
*			 AXIS_SECTION_ARB_YES ARB
*/
UINT8 GetArbState(UINT16 phySectionId);

#if 0
/*
* 功能描述： 获取物理区段内逻辑区段占用融合信息
* 参数说明： void
* 返回值  ： 
*			 SECTION_OCCUPY_NO
*			 SECTION_OCCUPY_YES    
*/
/*暂时预留*/
UINT8 GetLogicSecMergyOccuState(UINT16 phySectionId);
#endif

/*
* 功能描述： 获取物理区段内逻辑区段占用信息
* 参数说明： void
* 返回值  ： 
*			 SECTION_OCCUPY_NO
*			 SECTION_OCCUPY_YES    
*/
UINT8 GetLogicSecOccuState(UINT16 phySectionId);


/******************************屏蔽门数据交叉管理****************************/

#if 0
/*
* 功能描述：计算指定屏蔽门开放导致其关联出站进路信号关闭的出站进路
* 参数说明： const UINT16 doorId  屏蔽门ID
*            const UINT8 PsdOpenedBeforeFlag 屏蔽门开之前标志  1:屏蔽门开之前  0:屏蔽门开之后
* 返回值  ： 无    
*/
void CalculatePsdOpenedLeadToSignalCloseRoute(const UINT16 doorId,const UINT8 PsdOpenedBeforeFlag);
#endif



/******************************自动折返进路数据交叉管理****************************/

/*
* 功能描述： 自动折返进路的折出进路是否可以办理有效性检查
* 参数说明： const UINT16 routeId, 进路Id
* 返回值  ： CI_ERROR: 数据无效
*			 CI_SUCCESS: 数据有效
*/
UINT8 GetAutoReturnRebackRouteValid(const UINT16 routeId);

/*
* 功能描述： 自动折返进路的折出进路是否可以办理有效性检查
* 参数说明： const UINT16 routeId, 进路Id
* 返回值  ：
AUTO_RETURN_ROUTE_TYPE_IN           0x55       折返
AUTO_RETURN_ROUTE_TYPE_OUT          0xAA        折出
AUTO_RETURN_ROUTE_TYPE_VAIN         0xFF        无效
*/
UINT8 GetAutoReturnRouteType(const UINT16 autoReturnId, const UINT16 routeId);


/******************************overlap数据交叉管理****************************/
/*
* 功能描述： 获取指定ID保护区段组锁闭状态
* 参数说明： const UINT16 overlapId, 保护区段ID    
* 返回值  ： 0: 未锁闭
*			 1: 锁闭 
*/
UINT8 GetOverlapLockState(const UINT16 overlapId);

/******************************自动进路数据交叉管理****************************/
/*
* 功能描述： 进路自动属性有效性检查
* 参数说明： const UINT16 routeId, 进路ID
* 返回值  ： UINT8 
*/
UINT8 AutoSignalOrRouteValid(const UINT16 routeId);

/*
* 功能描述： 信号机临时限速计算(按照关联进路计算)
* 参数说明： void
* 返回值  ： void   
*/
void RouteSignalLSXianSuCalculate(void);


/*
* 功能描述： 信号机临时限速计算(按照信号机关联限速区段计算)
* 参数说明： void
* 返回值  ： void   
*/
void OutStationSignalLSXSCalculate(void);

/*
* 功能描述： 信号机临时限速计算
* 参数说明： void
* 返回值  ： void
*/
void SignalLinShiXianSuFlagCalculate(void);

/******************************车辆段数据交叉管理****************************/
/*
* 功能描述： 获取停止检查标志
* 参数说明： void
* 返回值  ： UINT8 停止检查标志
*/
UINT8 GetStopCheckFlag(void);

/*
* 功能描述： 设置停止检查逻辑处理
* 参数说明： void
* 返回值  ：    
*/
void SetStopCheckFlag(void);

/*
* 功能描述： 取消停止检查逻辑处理
* 参数说明： void
* 返回值  ：    
*/
void CancelStopCheckFlag(void);

/*
* 功能描述： 获取应急盘继电器ID
* 参数说明： void
* 返回值  ：    
*/
UINT16 GetJkjRelayId(void);

/*
* 功能描述： 获取宕机标志
* 参数说明： void
* 返回值  ： 
*/
UINT8 GetPlatOverFlag(void);

/*
* 功能描述： 设置宕机标志
* 参数说明： void
* 返回值  ： 
*/
void SetPlatOverFlag(void);

/*
* 功能描述： 引导总锁开放引导信号机逻辑管理
* 参数说明： void
* 返回值  ： void   
*/
void YLockSignalOpenManage(void);

/*
* 功能描述： 全自动折返进路的折出进路是否可以办理有效性检查
* 参数说明： const UINT16 routeId, 进路Id
* 返回值  ： CI_ERROR: 数据无效
*			 CI_SUCCESS: 数据有效
*/
UINT8 GetAllAutoReturnOutRouteValid(const UINT16 routeId);

/*
* 功能描述： 全自动折返进路的折出进路是否可以办理有效性检查
* 参数说明： const UINT16 routeId, 进路Id
* 返回值  ：
        AUTO_RETURN_ROUTE_TYPE_IN           0x55       折返
        AUTO_RETURN_ROUTE_TYPE_OUT          0xAA        折出
        AUTO_RETURN_ROUTE_TYPE_VAIN         0xFF        无效
*/
UINT8 GetAllAutoReturnRouteType(const UINT16 allAutoReturnId, const UINT16 routeId);




/******************************反向进路相关计算****************************/
/*
* 功能描述： 设置指定ID反向进路包含自动信号进路自动属性失效标志
* 参数说明： const UINT16 routeId, 进路ID
*            const UINT8 autoSigPropertyLoseEfficacyFlag, 进路自动信号属性失效设置标志
* 返回值  ： 无
*            
*/
void SetRevrRouteAutoSigInvalidFlag(const UINT16 routeId, const UINT8 autoSigPropertyLoseEfficacyFlag);



/*****************************区域封锁相关计算****************************/
/*
* 功能描述： 设置SPKS状态以及区段封锁
* 参数说明： spksId  spksStatus 状态
* 返回值  ： 无
*/
void SetPhySecSpksFLockBySpksId(UINT16 spksId,UINT8 spksStatus);


/******************************其他联锁相关计算****************************/
/*
* 功能描述： 获取其他联锁条件设备状态,将状态转换为对应检查的条件
* 参数说明： UINT16 devType 设备类型
*            UINT16 devId 设备ID
*			 UINT16 const chkDevStatus 设备状态
* 返回值  ： 0   失败
*			 >0  设备状态 
*/
UINT8 GetOtherCiDevStatus(UINT16 const devType,UINT16 const devId,UINT16 const chkDevStatus);

/*
* 功能描述： 根据设备类型获取其他联锁条件检查失败时错误类型
* 参数说明： UINT16 devType 设备类型
* 返回值  ： 0   设备状态类型
*/
UINT8 GetOtherCiCheckDevStateType(UINT16 const devType);


/******************************模式相关计算****************************/
/*
* 功能描述： 获取联锁模式标志
* 参数说明： void
* 返回值  ：联锁模式 0x55: 站控 0xAA:中控 0x71:控制台 0xFF:紧急站控
*/
UINT8 GetCiModeFlag(void);

/*
* 功能描述： 设置联锁模式标志
* 参数说明： 联锁模式 0x55: 站控 0xAA:中控 0x71:控制台 0xFF:紧急站控
* 返回值  ：void
*/
void SetCiModeFlag(UINT8 setFlag);

/*
* 功能描述： 获取全站临时限速标志
* 参数说明： void
* 返回值  ：0x55: 有效 0xAA:无效
*/
UINT8 GetAllTsrFlag(void);

/*
* 功能描述： 设置全站临时限速标志
* 参数说明： 0x55: 有效 0xAA:无效
* 返回值  ：void
*/
void SetAllTsrFlag(UINT8 setFlag);

/******************************试车线联锁状态****************************/

/*
* 功能描述： 获取试车线联锁状态
* 参数说明： void
* 返回值  ： 试车线联锁状态
            CI_TRAIN_TEST_OFF		0xFF	非试车中
            CI_TRAIN_TEST_START		0x01	按下试车请求按钮
            CI_TRAIN_TEST_ON		0x02	试车中
            CI_TRAIN_TEST_STOP		0x03	结束试车
*/
UINT8 GetCiTrainTestStatus(void);

/*
* 功能描述： 设置试车线联锁状态
* 参数说明：  试车线联锁状态
            CI_TRAIN_TEST_OFF		0xFF	非试车中
            CI_TRAIN_TEST_START		0x01	按下试车请求按钮
            CI_TRAIN_TEST_ON		0x02	试车中
            CI_TRAIN_TEST_STOP		0x03	结束试车
* 返回值  ：void
*/
void SetCiTrainTestStatus(UINT8 flag);

/*
* 功能描述： 车辆段联锁获取SQJ状态
* 参数说明： void
* 返回值  ：SQJ状态
*			0x55 设备状态有效
*			0xAA 设备状态无效
*/
UINT8 GetCommTrainTestCLDSQJStatus(void);

/*
* 功能描述： 试车线联锁获取YSKJ状态
* 参数说明： void
* 返回值  ：YSKJ状态
*			0x55 设备状态有效
*			0xAA 设备状态无效
*/
UINT8 GetCommTrainTestSCXYSKJStatus(void);

/*
* 功能描述： 车辆段联锁获取TYSJ状态
* 参数说明： void
* 返回值  ：TYSJ状态
*			0x55 设备状态有效
*			0xAA 设备状态无效
*/
UINT8 GetCommTrainTestCLDTYSJStatus(void);

/*
* 功能描述： 试车线联锁获取SQAJ状态
* 参数说明： void
* 返回值  ：SQAJ状态
*			0x55 设备状态有效
*			0xAA 设备状态无效
*/
UINT8 GetCommTrainTestSCXSQAJStatus(void);

/*
* 功能描述： 设置通信接口的试车线SQAJ状态
* 参数说明： 试车线SQAJ状态
*               COMM_TRAIN_TEST_DEV_STATE_INVALID		0xAA	无效状态
*               COMM_TRAIN_TEST_DEV_STATE_INVALID		0x55	有效状态
* 返回值  ：void
*/
void SetCommTrainTestSCXSQAJStatus(UINT8 flag);

/*
* 功能描述： 设置通信接口的车辆段TYSJ状态
* 参数说明： 车辆段TYSJ状态
*               COMM_TRAIN_TEST_DEV_STATE_INVALID		0xAA	无效状态
*               COMM_TRAIN_TEST_DEV_STATE_INVALID		0x55	有效状态
* 返回值  ：void
*/
void SetCommTrainTestCLDTYSJStatus(UINT8 flag);

/*
* 功能描述： 设置通信接口的试车线YSKJ状态
* 参数说明： 试车线YSKJ状态
*               COMM_TRAIN_TEST_DEV_STATE_INVALID		0xAA	无效状态
*               COMM_TRAIN_TEST_DEV_STATE_INVALID		0x55	有效状态
* 返回值  ：void
*/
void SetCommTrainTestSCXYSKJStatus(UINT8 flag);

/*
* 功能描述： 设置通信接口的车辆段SQJ状态
* 参数说明： 车辆段SQJ状态
*               COMM_TRAIN_TEST_DEV_STATE_INVALID		0xAA	无效状态
*               COMM_TRAIN_TEST_DEV_STATE_INVALID		0x55	有效状态
* 返回值  ：void
*/
void SetCommTrainTestCLDSQJStatus(UINT8 flag);

/*
* 功能描述： 设置自动触发标志
* 参数说明： UINT8 setFlag  需设置的自动触发标志  
* 返回值  ：无
*/
void SetAutoTriggerFlag(UINT8 setFlag);

/*
* 功能描述： 设置自动触发标志管理
* 参数说明：UINT8 virCIid  虚拟联锁ID
*           UINT8 setFlag  需设置的自动触发标志
* 返回值  ：无
*cgh-合并ECI11.0:
*/
void SetAutoTriggerLogicManage(UINT8 virCIid, UINT8 setFlag);
/*
* 功能描述： 获取自动触发标志
* 参数说明： 无
* 返回值  ：自动触发标志
*/
UINT8 GetAutoTriggerFlag(void);
/*
* 功能描述： 列车是否已占压触发区段
* 参数说明： const UINT16 routeId  进路ID
* 返回值  ：CI_SUCCESS: 未占压
*			 CI_ERROR: 占压 
*/
UINT8 RouteTriggerOccu(const UINT16 routeId);
/*
* 功能描述： 判断是否满足取消属性条件
*            满足取消标志，则反馈报警，不取消则不报警
* 参数说明： UINT16 routeId  进路ID
* 返回值  ：CI_SUCCESS: 未取消
*			 CI_ERROR: 已取消
*/
UINT8 CancleAutoFlag(UINT16 routeId);
/*
* 功能描述： 判断是否满足设置跳跃锁闭条件
*            满足设置跳跃锁闭，否则不设置跳跃锁闭
* 参数说明： UINT16 axisSectionId  计轴区段ID
* 返回值  ：CI_SUCCESS: 满足条件
*			 CI_ERROR: 不满足条件
*/
UINT8 CheckJumpLockApply(UINT16 axisSectionId);

/*
* 功能描述： 检查指定进路内的指定逻辑区段ID前（包含指定逻辑区段ID）的区段无UT占用
* 参数说明： UINT16 routeId, 进路ID
*            UINT16 physicalId,  逻辑区段ID
* 返回值  ： CI_ERROR   有UT占用
*            CI_SUCCESS 无UT占用
*/
UINT8 CheckBeforLogSecinRouteHaveNoUT(UINT16 routeId, UINT16 logSectionId);

/*
* 功能描述： 判断是否满足设置逻辑区段跳跃锁闭条件
*            满足设置逻辑区段跳跃锁闭，否则不设置跳跃锁闭
* 参数说明： UINT16 logSectionId  逻辑区段ID
* 返回值  ：CI_SUCCESS: 满足条件
*			 CI_ERROR: 不满足条件
*/
UINT8 CheckLogJumpLockApply(UINT16 logSectionId);

/*
* 功能描述： 物理区段侵限无效检查
* 参数说明： 
*            UINT16 const physicalId,    物理区段ID

* 返回值  ： CI_ERROR   侵限
*            CI_SUCCESS 侵限不满足
*/
UINT8 PhysicalIntruSecVainCheck(UINT16 const physicalId);

/* 功能描述： 判断保护区段ID是否属于进路的保护区段
* 参数说明： const UINT16 routeId, 进路ID
*            const UINT16 expLkOverlapId, 期望保护区段ID
* 返回值  ： 0: 指定保护区段不属于进路的保护区段
*            1: 指定保护区段属于进路的保护区段
*/
UINT8 checkExpOverlapBelongToRtOrNot(const UINT16 routeId, const UINT16 expLkOverlapId);

/*
* 功能描述： JKJ应急盘继电器有效标志
* 参数说明： void
* 返回值  ：JKJ_REYLAY_INVALID              0x55      JKJ继电器无效
*           JKJ_REYLAY_VALID                0xaa      JKJ继电器有效
*/
UINT8 GetCiJkjFlag(void);

/*
* 功能描述： 设置JKJ应急盘继电器有效标志
* 参数说明： JKJ_REYLAY_INVALID              0x55      JKJ继电器无效
*            JKJ_REYLAY_VALID                0xaa      JKJ继电器有效
* 返回值  ：void
*/
void SetCiJkjFlag(UINT8 setFlag);

/*
* 功能描述： 获取JKJ有效状态有效周期号
* 参数说明： 
* 返回值  ： JkjRelayValidCycNum     
*/
UINT32 GetJkjRelayValidCycNum(void);

/*
* 功能描述： 设置JKJ继电器状态有效周期号
* 参数说明： const UINT32 updateCycNum, 继电器更新周期号
* 返回值  ： 0: 设置失败
*			 1: 设置成功      
*/
void SetJkjRelayValidCycNum(const UINT32 updateCycNum);

/*
* 功能描述： 获取ZFW有效状态有效周期号
* 参数说明： 
* 返回值  ： ZFWValidCycNum    
*/
UINT32 GetZFWValidCycNum(void);

/*
* 功能描述： 设置ZFW总复位状态有效周期号
* 参数说明： const UINT32 updateCycNum, 总复位有效更新周期号
* 返回值  ： 0: 设置失败
*			 1: 设置成功      
*/
void SetZFWValidCycNum(const UINT32 updateCycNum);

/*
* 功能描述： 获取ZFW收到命令周期号
* 参数说明： 
* 返回值  ： ZFWCmdStartCycNum    
*/
UINT32 GetZFWcmdStartCycNum(void);

/*
* 功能描述： 设置ZFW总复位命令开始周期号
* 参数说明： const UINT32 updateCycNum, 总复位命令更新周期号
* 返回值  ： 0: 设置失败
*			 1: 设置成功      
*/
void SetZFWcmdStartCycNum(const UINT32 updateCycNum);

/*
功能描述: 	计轴区段跳跃锁闭驱动道岔处理
输入参数:	const UINT16 axisSecId 计轴区段ID
输出参数:	无
返回值:		CI_SUCCESS,如果道岔锁闭处理成功
				CI_ERROR,如果道岔锁闭处理失败
*/
UINT8 JumpLockDriveSwitch(const UINT16 axisSecId);

/*
功能描述: 	驱动计轴区段内道岔处理
输入参数:	const UINT16 axisSecId 计轴区段ID
输出参数:	const UINT8 DrivFlag 道岔驱动标志
返回值:		无
*/
void AxisSecDrvInnerSwitch(const UINT16 axisSecId, const UINT8 DrivFlag);



/*
* 功能描述： 继电接口下检查非本联锁的进路内，属于本联锁的物理区段是否都已解锁
* 参数说明： UINT16 routeId 进路号
*	返回值：1：是
*         0: 否
*/	
UINT8 CheckNoLocalCiRoutePhySecUnLock(const UINT16 routeId);

/*
* 功能描述： 进路是否有物理区段属于其它联锁
* 参数说明： UINT16 routeId 进路号
*			 , UINT8 *pOtherCiId 其它联锁ID
*	返回值：1：是
*         0: 否
*/	
UINT8 RouteHavePhySecBelongOtherCi(const UINT16 routeId, UINT8 *pOtherCiId);

/*
* 功能描述： 检查进路属于本联锁的物理区段已解锁
* 参数说明： UINT16 routeId 进路号
*	返回值：1：是
*         0: 否
*/	
UINT8 CheckLocalCiRoutePhySecUnLock(const UINT16 routeId);

/*
* 功能描述： 设置计轴总复位是否混线状态
* 参数说明： void    
* 返回值  ： 无
*
*/
void SetZfwjHunXianFLag(UINT8 setFlag);

/*
* 功能描述： 获取计轴总复位是否混线状态
* 参数说明： void    
* 返回值  ： 无
*
*/
UINT8 GetZfwjHunXianFLag(void);

/*
* 功能描述： 设置指定虚拟联锁全站引导总锁标志
* 参数说明： void
* 返回值   ：CI_ALL_SWITCH_YLOCK_NO  
			CI_ALL_SWITCH_YLOCK_YES 
*/
void AllSwitchYLock_UseVirCI(UINT8 virCIid,UINT8 setFlag);

/*
* 功能描述： 获取转辙机封连报警状态
* 参数说明： void
* 返回值  ： SwitchBlockLinkState 转辙机封连报警状态
*			          
*/
UINT8 GetCancelOrRcvrBlockLinkSta(void);

/*
* 功能描述： 设置转辙机封连报警取消和恢复状态
* 参数说明： UINT8 blockLinkState 封连报警状态
* 返回值  ： 无
*			          
*/
void SetCancelOrRcvrBlockLinkSta(UINT8 blockLinkState);

/*
* 功能描述： 找到进路内第一个延时锁闭逻辑区段
* 参数说明： UINT16 routeId,    检查数据数组

* 返回值  ： UINT16 区段ID
*            = 0 无效
*            > 0 区段ID
*/
UINT16 GetRouteFirstDelayLockLogId(UINT16 routeId);

/*
* 功能描述： 检查进路逻辑区段已全部解锁
* 参数说明： UINT16 routeId 进路号
*	返回值：1：是
*         0: 否
*/	
UINT8 CheckRouteLogSecHaveUnLock(const UINT16 routeId);

/*
* 功能描述： 设置故障锁闭的物理区段包含的逻辑区段故障锁闭
* 参数说明： UINT16 routeId 进路
*	返回值：1：是
*         0: 否
*/
void SetPhyIncludeLogLockState(const UINT16 phyId, const UINT8 lockState,  const UINT16 routeId);

/*
* 功能描述： 检查物理区段内的逻辑区段已全部解锁
* 参数说明： UINT16 routeId 进路号
*	返回值：CI_SUCCESS：全部解锁
*           CI_ERROR: 存在本进路的锁闭逻辑区段
*/	
UINT8 CheckPhyInLogUlock(const UINT16 phyId, const UINT16 routeId, UINT16* belongRoute);



/*
* 功能描述： 检查道岔关联的逻辑区段的占用状态
* 参数说明： UINT16 switchId，道岔Id
*            UINT16* logOccOrLockId 逻辑区段ID
*			 UINT8* pState 逻辑区段状态
* 返回值  ： CI_SUCCESS: 关联逻辑区段都空闲
*			 CI_ERROR: 关联逻辑区段存在占用
* modify 20221009 增加输出参数pState
*/
UINT8 GetSwitchLogSecOccState(UINT16 switchId, UINT16* logOccOrLockId, UINT8* pState);

/*
* 功能描述： 检查道岔所属物理区段关联的逻辑区段的占用状态
* 参数说明： UINT16 switchId，道岔Id
*            UINT16* logOccOrLockId 逻辑区段ID
*			 UINT8* pState 逻辑区段状态
* 返回值  ： CI_SUCCESS: 检查通过
*			 CI_ERROR: 检查不通过
* add 20221009 适配进路提前驱动道岔功能
*/
UINT8 GetSwitchSecOccState(UINT16 switchId, UINT16* logOccOrLockId, UINT8* pState);

/*
* 功能描述： 检查道岔关联的逻辑区段的锁闭状态
* 参数说明： UINT16 switchId，道岔Id
*            UINT16* logOccOrLockId 逻辑区段ID
*			 UINT8* pState 逻辑区段状态
* 返回值  ： CI_SUCCESS: 关联逻辑区段都未锁闭
*			 CI_ERROR: 关联逻辑区段有占用
* modify 20221009 增加输出参数pState
*/
UINT8 GetSwitchLogSecLockState(UINT16 switchId, UINT16* logOccOrLockId, UINT8* pState);
/*
* 功能描述： 找到进路内第一个正常锁闭逻辑区段
* 参数说明： UINT16 routeId,    检查数据数组
* 返回值  ： UINT16 区段ID
*            = 0 无效
*            > 0 逻辑区段ID
*/
UINT16 GetRouteFirstNormalLockLogId(UINT16 RouteId);

/*
* 功能描述： 设置进路逻辑区段资源的列车ID
* 参数说明： const UINT16 routeId, 进路ID
*            const UINT16 wTrainId 列车编号
* 返回值  ： 无
* 创  建  ： qw.liu 2022-03-03
*/
void SetRouteLogicSecResTrainId(const UINT16 routeId, const UINT16 wTrainId);

/*
* 功能描述：获取进路有车接近处理时占压逻辑区段ID
* 参数说明： const UINT16 routeId, 进路ID
* 返回值  ： 物理区段编号
*/
UINT16 GetRouteHaveTrainNearLogSecId(const UINT16 routeId);

/*
* 功能描述： 检查进路锁闭且未处于引导锁闭状态
* 参数说明： const UINT16 routeId, 进路ID
*
* 返回值  ： CI_ERROR	：ID有误或未锁闭或引导锁闭
*		  ： CI_SUCCESS ：非引导锁闭
*/
UINT8 CheckRouteStateNotYinDaoLock(UINT16 routeId);

/*
* 功能描述：获取进路准备进入进路列车信息
* 参数说明： const UINT16 routeId, 进路ID pTrainNum预进入数量 wszTrainId 预进入ID
* 返回值  ： CI_ERROR :获取失败
*			 CI_SUCCESS:获取成功
*/
UINT8 GetRouteReadyEnterTrainInfo(const UINT16 wRouteId, UINT8 * pTrainNum, UINT16 wszTrainId[]);

/*
* 功能描述：获取进路内外方第一逻辑区段均具有资源的列车信息
* 参数说明：const UINT16 routeId 进路ID
*           UINT8* pTrainNum 预进入数量
*           UINT16 szTrainId[LOGIC_SECTION_RES_SUM_MAX] 预进入ID
* 返 回 值：0 获取失败
*			1 获取成功
* Created By LQ 2024.12.02
*/
UINT8 GetRouteInOutFstLgcTrainInfo(const UINT16 wRouteId, UINT8* pTrainNum, UINT16 szTrainId[LOGIC_SECTION_RES_SUM_MAX]);

/*
* 功能描述： 设置其他联锁进路逻辑区段资源ID
* 参数说明： const UINT16 routeId, 进路ID
*            const UINT16 wTrainId 列车编号
* 返回值  ： 无
* 创  建  ： qw.liu 2022-03-03
*/
void SetLgcSecResTrnIdOtherTiocRt(const UINT16 routeId, const UINT16 wTrainId);

/*
* 功能描述：获取进路不为进路资源的列车信息
* 参数说明： const UINT16 routeId, 进路ID pTrainNum 列车数量 wszTrainId 列车IDBuf
* 返回值  ： CI_ERROR :获取失败
*			 CI_SUCCESS:获取成功
*/
UINT8 GetRouteNotEnterTrainInfo(const UINT16 wRouteId, UINT8 * pTrainNum, UINT16 wszTrainId[]);

/*
* 功能描述： 释放保护区段资源
* 参数说明： const UINT16 wOverlapId, 保护区段ID
* 返回值  ： 无
* 创  建  ： qw.liu 2022-06-10
*/
void ReleaseOverlapRes(const UINT16 wOverlapId);

/*
* 功能描述：获取临时限速确认标志
* 参数说明：无
* 返回值  ： 限速确认标志
*/
extern UINT8 GetTsrSureFlag(void);
/*
* 功能描述：设置临时限速确认标志
* 参数说明：cTsrSureFlag 限速确认标志
* 返回值  ： 无
*/
extern void SetTsrSureFlag(UINT8 cTsrSureFlag);

/*
* 功能描述： 人工解锁故障占压时解锁进路
* 参数说明： UINT16 wPhySecId,    物理区段ID

* 返回值  ： CI_ERROR
*			 CI_SUCCESS
*/
UINT8 CancelOutFirstFaultOccUnlock(UINT16 wPhySecId);

/**
* @brief 计算列车前方逻辑区段序列
* @param wTrainId         列车ID
* @param pLogicSecSum     输出的逻辑区段数量
* @param szLogicSecIdBuf  输出的逻辑区段序列
* @return CI_SUCCESS成功；CI_ERROR失败
* @create 2022.8.23
*/
UINT8 CalTrainFrontLogicSecSeq(IN const UINT16 wTrainId, OUT UINT16 * pLogicSecSum, OUT UINT16 szLogicSecIdBuf[TRAIN_INCLUDE_RES_MAX_SUM]);

/**
* @brief 获取列车可用逻辑区段序列
* @param wTrainId         列车ID
* @param pLogicSecSum     输出的逻辑区段数量
* @param szLogicSecIdBuf  输出的逻辑区段序列
* @return CI_SUCCESS成功；CI_ERROR失败
* @create 2022.8.23
*/
UINT8 GetTrainUsableLogicSec(IN const UINT16 wTrainId, OUT UINT16 * pLogicSecSum, OUT UINT16 szLogicSecIdBuf[TRAIN_INCLUDE_RES_MAX_SUM]);


/*
* 功能描述： 获取全线雨雪模式命令
* 参数说明： void
* 返回值  ：0x55: 有效 0xAA:无效
*/

extern UINT8 GetAllSnowModel(void);
/*
* 功能描述： 设置全线雨雪模式命令
* 参数说明： 0x55: 有效 0xAA:无效
* 返回值  ：void
*/
extern void SetAllSnowModel(UINT8 setmodle);

/*
* 功能描述：获取全线湿轨等级
* 参数说明：无
* 返 回 值：0 默认值
*           1 湿轨一级
*           2 湿轨二级
* Created By LQ 2025.05.28
*/
UINT8 GetAllSnowLevel(void);

/*
* 功能描述：设置全线湿轨等级
* 参数说明：UINT8 cLevel 湿轨级别
* 返 回 值：无
* Created By LQ 2025.05.28
*/
void SetAllSnowLevel(UINT8 cLevel);

/*
* 功能描述：获取ITE全线切除状态
* 参数说明：void
* 返 回 值：0x55 切除ITE
*           0xAA 使用ITE
*           0xFF 默认值
* Created By LQ 2024.07.12
*/
UINT8 GetIteLineCutState(void);

/*
* 功能描述：设置ITE全线切除状态
* 参数说明：UINT8 cSetState 待设置的ITE全线切除状态
* 返 回 值：无
* Created By LQ 2024.07.12
*/
void SetIteLineCutState(UINT8 cSetState);

/*
* 功能描述： 获取全线临时限速状态
* 参数说明： void
* 返回值  ：0x55: 有效 0xAA:无效
*/

extern UINT8 GetAllLineTsrState(void);

/*
* 功能描述： 设置全线临时限速状态
* 参数说明： 0x55: 有效 0xAA:无效
* 返回值  ：void
*/
extern void SetAllLineTsrState(UINT8 cSetState);

/*
* 功能描述： 获取全线临时限速速度
* 参数说明： void
* 返回值  ：全线临时限速速值
*/

extern UINT8 GetAllLineTsrSpeed(void);

/*
* 功能描述： 设置全线临时限速速度
* 参数说明： UINT8 cSpeed 速度值
* 返回值  ： void
*/
extern void SetAllLineTsrSpeed(UINT8 cSpeed);

/*
* 功能描述： 获取物理区段内逻辑区段占用信息
* 参数说明： void
* 返回值  ：
*			 LOGICSECTION_OCCUPY_UT
*			 LOGICSECTION_OCCUPY_CT
*			 LOGICSECTION_OCCUPY_NO
*/
UINT8 GetPhySecUtOrCtOccuState(UINT16 phySectionId);


/*
* 功能描述： 设置指定ID联锁控制权标志
* 参数说明： const UINT8 virCiId        虚拟联锁ID
			 const UINT8 ctrlPowerFlag  控制状态
			 const UINT16 ctrlPowerId   控制设备编号
			 const UINT8 ctrlDeviceType 控制设备类型


* 返回值  ： viod
*
*/
void SetCtrlPower(const UINT8 virtualCiId, const UINT8 ctrlPowerFlag, const UINT16 ctrlPowerId, const UINT8 ctrlDeviceType);
/*
* 功能描述： 释放指定ID联锁控制权标志
* 参数说明： const UINT8 virCiId        虚拟联锁ID
			 const UINT8 ctrlPowerFlag  控制状态
			 const UINT16 ctrlPowerId   控制设备编号
			 const UINT8 ctrlDeviceType 控制设备类型


* 返回值  ： viod
*
*/
void ReleaseCtrlPower(const UINT8 virtualCiId, const UINT8 ctrlPowerFlag, const UINT16 ctrlPowerId, const UINT8 ctrlDeviceType);

/*
* 功能描述： 取消自动触发标志管理
* 参数说明： UINT8 virCIid 虚拟联锁ID
*            UINT8 setFlag  需设置的自动触发标志
* 返回值  ：无
* cgh-合并CID-3037-4：
*/
void CancelAutoTriggerLogicManage(UINT8 virCIid, UINT8 setFlag);
/*
* 功能描述： 设置指定进路自动触发标志管理
* 参数说明：UINT8 virCIid  虚拟联锁ID
			UINT16 routeId 进路ID
*           UINT8 setFlag  需设置的自动触发标志
* 返回值  ：无
*/
void SetSigleRouteAutoTriggerManage(UINT8 virCIid, UINT16 routeId, UINT8 setFlag);
/*
* 功能描述： 取消指定进路的自动触发标志管理
* 参数说明： UINT8 virCIid 虚拟联锁ID
*            UINT16 routeId 进路ID
*            UINT8 setFlag  需设置的自动触发标志
* 返回值  ：无
* cgh-合并CID-3037-4：
*/
void CancelSigleRouteAutoTrigger(UINT8 virCIid, UINT16 routeId, UINT8 setFlag);
/*
* 功能描述： 设置站台轨关联的屏蔽门清客标志
* 参数说明：UINT16 phySecId  物理区段ID
*           UINT8 setFlag  需设置的清客标志
* 返回值  ：无
* cgh-合并CID-3037-7：
*/
void SetClearPassenagerManage(UINT16 phySecId, UINT8 setFlag);

/*
* 功能描述： 设置进路部分逻辑区段资源的列车ID
* 参数说明： const UINT16 routeId, 进路ID
*            const UINT16 wTrainId 列车编号
* 返回值  ： 无
* 创  建  ： qw.liu 2022-03-03
* @note 集成 bug 20220420 编码规范：删除冗余变量，空语句增加注释
*/
void SetRouteHalfLogSecResTrainId(const UINT16 routeId, const UINT16 wTrainId);

/*
*功能描述:清除进路部分关联道岔期望驱动位置
*
*输入参数: const UINT16 routeId 进路ID
*
*输出参数:无.
*
*返回值:无
*
*/
void ClearRouteHalfSwitchDrivePos(const UINT16 routeId);

/*
*功能描述:清除进路部分关联道岔期望驱动位置
*
*输入参数: const UINT16 routeId 进路ID
*
*输出参数:无.
*
*返回值:无
*
*/
void ClearRouteHalfSwitchDanCaoPos(const UINT16 routeId);

/*
*功能描述:清除逻辑进路关联道岔期望驱动位置
*输入参数: const UINT16 routeId 进路ID
*输出参数:无.
*返回值:无
*/
void ClearLogRouteSwitchDrivePos(const UINT16 logRouteId);

/*
*功能描述:清除逻辑进路关联道岔单操驱动位置
*输入参数: const UINT16 routeId 进路ID
*输出参数:无.
*返回值:无
*/
void ClearLogRouteSwitchDanCaoPos(const UINT16 logRouteId);

/*
* 功能描述： 检查进路部分路径锁闭道岔位置正确
* 参数说明： const UINT16 routeId, 进路ID
* 返回值  ： UINT8
*	CI_SUCCESS:进路道岔位置正确
*	CI_ERROR:进路道岔位置有误
*/
UINT8 ChekRouteHalfSwPosRight(const UINT16 routeId);

/*
* 功能描述： 检查进路部分路径锁闭是否有道岔驱动超时
* 参数说明： const UINT16 routeId, 进路ID
* 返回值  ： UINT8
CI_SUCCESS:进路无道岔驱动超时
CI_ERROR:进路有道岔驱动超时
*/
UINT8 ChekRouteHalfSwDrvOvTime(const UINT16 routeId);
/*
* 功能描述： 设置物理区段包含的全部逻辑区段锁闭状态
* 参数说明： const UINT16 phyId 物理区段ID, const UINT8 lockState  锁闭状态
*	返回值：1：是
*         0: 否
*/
void SetPhyIncAllLogLockState(const UINT16 phyId, const UINT8 lockState);

/*
功能描述: 	进路部分锁闭驱动道岔处理
输入参数:	const UINT16 routeId 进路ID
输出参数:	无
返回值:		CI_SUCCESS,如果道岔锁闭处理成功
CI_ERROR,如果道岔锁闭处理失败
*/
UINT8 RouteLockHalfDriveSwitch(const UINT16 routeId);

/*
功能描述: 	驱动进路部分锁闭道岔处理
输入参数 : const UINT16 routeId 进路ID
输出参数 : const UINT8 DrivFlag 道岔驱动标志
返回值 : 无
*/
void RouteHalfDrvInnerSwitch(const UINT16 routeId, const UINT8 DrivFlag);

/*
功能描述: 	引导总锁下重开引导信号处理
输入参数 : const UINT16 signalId 信号机ID
输出参数 : const UINT8 yLockState 引导总锁状态
返回值 : 无
*/
void LeadzLockOpenSignal(const UINT16 signalId, const UINT8 yLockState);

/*
功能描述: 	引导总锁下重开引导信号新功能处理
输入参数 : const UINT16 signalId 信号机ID
输出参数 : const UINT8 yLockState 引导总锁状态
返回值 : 无
*/
void LeadzLockNewOpenManage(const UINT16 signalId, const UINT8 yLockState);

/*
功能描述: 	场段，既有CBTC区域又有非CBTC区域，检查进路空闲，处理引导信号重开
输入参数 : const UINT16 signalId 信号机ID
输出参数 : const UINT8 yLockState 引导总锁状态
返回值 : 无
*/
void LeadzLockSignalOpenRouteCheck(const UINT16 signalId, const UINT8 yLockState);

/*
* 功能描述： 进路是否有逻辑区段属于其它联锁
* 参数说明： UINT16 routeId 进路号
*			 , UINT8 *pOtherCiId 其它联锁ID
*	返回值：1：执行成功
*         0: 执行失败
* by cgh 20231007
*/
UINT8 RouteHaveLogSecBelongOtherCi(const UINT16 routeId, UINT8* pOtherCiId);

/*
* 功能描述： 检查进路属于本联锁的逻辑区段已解锁
* 参数说明： UINT16 routeId 进路号
*	返回值：1：是
*         0: 否
* by cgh 20231007
*/
UINT8 CheckLocalCiRouteLogSecUnLock(const UINT16 routeId);

/*
* 功能描述： 继电接口下检查非本联锁的进路内，属于本联锁的逻辑区段是否都已解锁
* 参数说明： UINT16 routeId 进路号
*	返回值：1：是
*         0: 否
* by cgh 20231007
*/
UINT8 CheckRouteLogSecUnLock(const UINT16 routeId);

/*
* 功能描述： 找到逻辑进路内第一个正常逻辑锁闭的逻辑区段
* 参数说明： const UINT16 wLogRouteId 逻辑进路ID
* 返回值  ： = 0 无效
*            > 0 逻辑区段ID
* by cgh 20231012
*/
UINT16 GetLogRouteFirNormalLockLogId(const UINT16 wLogRouteId);

/*
* 功能描述： 检查逻辑区段是否被指定逻辑进路锁闭
* 参数说明： const UINT16 wLogSection 逻辑区段ID
			 const UINT16 wLogRouteId 逻辑进路ID
* 返回值  ： CI_ERROR  否
*			 CI_SUCCESS 是
* by cgh 20231012
*/
UINT8 CheckLogSecLockBelLogRoute(const UINT16 wLogSection, const UINT16 wLogRouteId);

/*
* 功能描述： 设置物理区段包含的逻辑区段逻辑锁闭状态
* 参数说明： const UINT16 wPhySecId, 物理区段ID
			 const UINT8 chLockState, 逻辑锁闭状态
			 const UINT16 wLogRouteId  逻辑进路ID
*	返回值：无
* by cgh 20231013
*/
void SetPhyIncLogSecLogLockState(const UINT16 wPhySecId, const UINT8 chLockState, const UINT16 wLogRouteId);

/*
* 功能描述： 获取逻辑区段被逻辑进路锁闭的逻辑进路方向
* 参数说明： const UINT16 wLogSection 逻辑区段ID
			 const UINT16 wLogRouteId 逻辑进路ID
* 返回值  ： 逻辑进路方向
* by cgh 20231013
*/
UINT8 GetLogSecLogLockBelRouteDir(const UINT16 wLogSection, const UINT16 wLogRouteId);

/*
* 功能描述： 检查逻辑进路逻辑区段已全部解锁
* 参数说明： UINT16 wLogRouteId 逻辑进路号
* 返回值：CI_SUCCESS：是
*           CI_ERROR: 否
* by cgh 20231013
*/
UINT8 CheckLogRouteLogSecHaveUnLock(const UINT16 wLogRouteId);

/*
* 功能描述： 检查物理区段包含的逻辑区段的进路锁闭状态
* 参数说明： const UINT16 wPhySecId 物理区段ID
*            UINT16* pLogSecLockId 锁闭的逻辑区段ID
*			 UINT8* pState 逻辑区段锁闭状态
* 返回值  ： CI_SUCCESS 关联逻辑区段都未锁闭
*			 CI_ERROR 关联逻辑区段存在锁闭
* Created By LQ 2023/10/17
*/
UINT8 CheckPSecIncLSecLockState(const UINT16 wPhySecId, UINT16* pLogSecLockId, UINT8* pState);

/*
* 功能描述： 检查物理区段包含的逻辑区段的逻辑进路锁闭状态
* 参数说明： const UINT16 wPhySecId 物理区段ID
*            UINT16* pLogSecLockId 锁闭的逻辑区段ID
*			 UINT8* pState 逻辑区段逻辑锁闭状态
* 返回值  ： CI_SUCCESS 关联逻辑区段都未锁闭
*			 CI_ERROR 关联逻辑区段存在锁闭
* Created By LQ 2023/10/17
*/
UINT8 CheckPSecIncLSecLogicLockState(const UINT16 wPhySecId, UINT16* pLogSecLockId, UINT8* pState);

/*
* 功能描述： 获取指定调车进路开放状态
* 参数说明： const UINT16 wRouteId, 进路ID
* 返回值  ： 0: 获取数据失败
*           >0: 进路开放
* by cgh 20231113
*/
UINT8 GetDiaoCheRouteOpenState(const UINT16 wRouteId);

/*
* 功能描述：设置本地区间雨雪站台信息
* 参数说明：const UINT8 cAreaSnowNum 区间雨雪数量
*			const AreaSnowInfoStruct pAreaSnowBuf[LOCAL_AREA_SNOW_SUM_MAX] 区间雨雪数组
* 返回值  ：无
*/
void SetLocalAreaSnowInfo(const UINT8 cAreaSnowNum, const AreaSnowInfoStruct pAreaSnowBuf[LOCAL_AREA_SNOW_SUM_MAX]);

/*
* 功能描述：获取本地区间雨雪站台数量
* 参数说明：无
* 返回值  ：区间雨雪站台数量
*/
UINT8 GetLocalAreaSnowNum(void);

/*
* 功能描述：获取本地区间雨雪信息
* 参数说明：无
* 返回值  ：区间雨雪信息
*/
AreaSnowInfoStruct* GetLocalAreaSnow(void);


/*
* 功能描述： 检查进路内第一个锁闭的区段是不是故障锁闭
* 参数说明： UINT16 routeId,    进路ID
*           UINT16 区段ID    第一个锁闭的区段ID（出参）
* 返回值  ：  0 第一个锁闭的区段不是故障锁闭
*            1 第一个锁闭的区段是故障锁闭
*/
UINT8 RouteFirstLockErrCheck(UINT16 routeId);

/*
* 功能描述：获取全线通信车数据
* 参数说明：无
* 返 回 值：全线通信车结构体
* Created By LQ 2024.07.14
*/
LineCommTrainStruct GetLineCommTrainData(void);

/*
* 功能描述：处理全线通信车数据
* 参数说明：UINT8 cLineCtNum 全线通信车数量
*           UINT16 szLineCtId[TRAIN_SUM_MAX] 全线通信ID数组
* 返 回 值：无
* Created By LQ 2024.07.14
*/
void ProcessLineCommTrainData(UINT8 cLineCtNum, UINT16 szLineCtId[TRAIN_SUM_MAX]);

/*
* 功能描述：清除全线通信车数据
* 参数说明：无
* 返 回 值：无
* Created By LQ 2024.07.14
*/
void ClearLineCommTrainData(void);

/*
* 功能描述： 设置飞车宕机报警开始周期
* 参数说明： UINT32 dwFlyProtectOverCyc 宕机结束冗余周期号
* 返回值  ：
*/
void SetFlyProtectOverCyc(UINT32 dwFlyProtectOverCyc);

/*
* 功能描述：获取飞车宕机起始周期,未设置返回0
* 参数说明： void
* 返回值  ：
*/
UINT32 GetFlyProtectOverCyc(void);

/*
* 功能描述： 获取本地雨雪模式命令
* 参数说明： void
* 返回值  ：0x55: 无效 0xAA:有效
* by cgh 20241030
*/

UINT8 GetLocalSnowModel(void);

/*
* 功能描述： 设置本地雨雪模式命令
* 参数说明：UINT8 setmodle 本地雨雪模式
* 返回值  ：void
* by cgh 20241030
*/
void SetLocalSnowModel(UINT8 setmodle);

/*
* 功能描述:进路锁闭道岔单操检查
* 输入参数:	const UINT16 routeId 进路ID
* 输出参数:	无
* 返回值:		CI_SUCCESS :成功
* 			    CI_ERROR: 失败
* by cgh 20241203
*/
UINT8 RouteLockSwitchDanCaoCheck(const UINT16 routeId);

/*
* 功能描述： 道岔征用有效性检查
* 参数说明： const UINT16 wSwitchId，道岔Id
*	         const UINT8 functionId, 函数ID
*	         const UINT8 chSendLevel，发送等级
* 返回值  ： CI_SUCCESS: 检查成功
*			 CI_ERROR: 检查失败
* by cgh 20241205
*/
UINT8 GetSwitchUsingValidState(const UINT16 wSwitchId, const UINT8 chFunctionId, const UINT8 chSendLevel);

/*
* 功能描述： 指定ID联锁控制权默认状态处理
* 参数说明： const UINT8 virtualCiId     虚拟联锁ID
* 返回值  ： viod
* by cgh 20250305
*/
void DefaultCtrlPowerDeal(const UINT8 virtualCiId);

/*
* 功能描述：获取本地区间ITE切除数量
* 参数说明：无
* 返 回 值：本地区间ITE切除数量
* Created By LQ 2025.04.15
*/
UINT8 GetLocalAreaIteCutNum(void);

/*
* 功能描述：获取本地区间ITE切除ID数组
* 参数说明：无
* 返 回 值：本地区间ITE切除ID数组
* Created By LQ 2025.04.15
*/
UINT16* GetLocalAreaIteCutId(void);

/*
* 功能描述：清除本地区间ITE切除信息
* 参数说明：无
* 返 回 值：无
* Created By LQ 2025.04.15
*/
void ClearLocalAreaIteCutInfo(void);

/*
* 功能描述：设置本地区间ITE切除信息
* 参数说明：const UINT8 cAreaIteCutNum 区间ITE切除数量
*			const UINT16 pAreaIteCutIdBuf[ALL_AREA_SNOW_SUM_MAX] 区间ID数组
* 返 回 值：无
* Created By LQ 2025.04.15
*/
void SetLocalAreaIteCutInfo(const UINT8 cAreaIteCutNum, const UINT16 pAreaIteCutIdBuf[ALL_AREA_SNOW_SUM_MAX]);

/*
* 功能描述：获取进路内第一个锁闭的逻辑区段ID
* 参数说明：UINT16 wRouteId 进路ID
* 返 回 值：0 无锁闭的逻辑区段
*          >0 第一个锁闭的逻辑区段ID
* Created By LQ 2025.05.08
*/
UINT16 GetRouteFirstLockedLogSecId(UINT16 wRouteId);

/*
功能描述:
	清除逻辑区段关联道岔单操位置
输入参数:
	const UINT16 逻辑区段ID
输出参数:
	无.
返回值:
	无
add by mpt 20260403
*/
void ClearLogSeceSwitchDanCaoPos(const UINT16 logicSecId);

/*
功能描述:
	清除计轴区段关联道岔单操位置
输入参数:
	const UINT16 计轴区段ID
输出参数:
	无.
返回值:
	无
add by mpt 20260403
*/
void ClearAxisSeceSwitchDanCaoPos(const UINT16 axisSecId);

#endif
