/****************************************************************************************************
* 文件名   :  APP_TrainDataManage.h
* 版权说明 :  交控科技股份有限公司
* 版本号   :  1.0
* 创建时间 :  2021.06.15
* 作者     :  OC组
* 功能描述 :  列车管理模块实现头文件
* 使用注意 :
*
* 修改记录 :
*
**************************************************************************************************/
#ifndef TRAIN_DATA_MANAGE_H_
#define TRAIN_DATA_MANAGE_H_
#include "TrainDefine.h"
#include "../Section/LinkConfigDataManage.h"


#ifdef __cplusplus
extern "C"
{
#endif

#define FINDHEADSAFEFLAG		1U		/*查询列车安全车头位置*/
#define FINDTAILSAFEFLAG		2U		/*查询列车安全车尾位置*/
#define CALSAFEPOSFLAG          1U      /*查询安全位置时调用*/
#define CALOTHERFLAG            2U       /*查询其他时调用*/

#define TRAIN_ENTER_ROUTE_NO	1u		/* 列车未驶入进路 */
#define TRAIN_ENTER_ROUTE_HEAD	2u		/* 列车驶入进路但未跨压信号机 */
#define TRAIN_ENTER_ROUTE_CROSS	3u		/* 列车跨压信号机 */
#define TRAIN_ENTER_ROUTE_FULL	4u		/* 列车完全驶入进路 */
#define TRAIN_ENTER_ROUTE_TAIL	5u		/* 列车车头驶出进路 */

/*列车安全位置结构体*/
typedef struct S_TrainSafeLoc
{
	UINT16 wHeadLink;					/*安全车头所处link*/
	UINT32 dwHeadOffset;				/*安全车头所处link偏移量*/
	UINT8 chHeadDir;					/*安全车头方向*/
	UINT16 wTailLink;					/*安全车尾所处link*/
	UINT32 dwTailOffset;				/*安全车尾所处link偏移量*/
	UINT8 chTailDir;					/*安全车尾方向*/
	UINT8 chHeadFlag;					/*安全车头所处岔区不连通且占用标志*/
}TrainSafeLocStru;

typedef struct S_TrainMa
{
	UINT8 chMaDir;						/*MA方向*/
	struct_PathPoint strMaStart;		/*MA起点*/
	struct_PathPoint strMaEnd;			/*MA终点*/
}TrainMaStru;

typedef struct
{
	UINT16 wEaTrainId;					/*疏散列车ID*/
	UINT8 chAgreeState;					/*允许状态*/
	UINT32 dwBuildCyc;					/*建立周期号*/
}TrainEaStru;

/*ABL级别下列车关联逻辑区段信息结构体*/
typedef struct S_ABLTrainRelLogStru
{
	UINT16 wAblRelLogSecId;				/*ABL列车关联逻辑区段ID*/
	UINT8 chAblRelLogSecDir;				/*ABL列车关联逻辑区段锁闭方向*/
}ABLTrainRelLogStru;

/*ABL级别下列车关联PSD信息结构体*/
typedef struct S_ABLTrainRelPsdStru
{
	UINT16 wAblRelPsdId;				/*ABL列车查询范围内关联PSDID*/
	UINT8 chAblRelPsdSta;				/*ABL列车查询范围内关联PSD状态*/
}ABLTrainRelPsdStru;

/*ABL级别下列车关联ESB信息结构体*/
typedef struct S_ABLTrainRelEsbStru
{
	UINT16 wAblRelEsbId;				/*ABL列车查询范围内关联PSDID*/
	UINT8 chAblRelEsbSta;				/*ABL列车查询范围内关联PSD状态*/
}ABLTrainRelEsbStru;

/*ABL级别下列车关联道岔信息结构体*/
typedef struct S_ABLTrainRelSwitchStru
{
	UINT16 wAblRelSwitchId;				/*ABL列车查询范围内关联道岔ID*/
	UINT8 chAblRelSwitchSta;				/*ABL列车查询范围内关联道岔状态*/
}ABLTrainRelSwitchStru;

/*ABL级别下列车关联保护区段信息结构体*/
typedef struct S_ABLTrainRelProSecStru
{
	UINT16 wAblRelProSecId;						/*ABL列车查询范围内关联保护区段ID*/
	UINT8 chAblRelProSecDir;					/*ABL列车查询范围内关联保护区段方向*/
}ABLTrainRelProSecStru;

/*ABL级别下列车关联区段限速信息结构体*/
typedef struct S_ABLTrainRelXianSuStru
{
	UINT16 wAblRelXianSuPhySecId;				/*ABL列车查询范围内限速物理区段ID*/
	UINT16 chAblRelXianSuValue;					/*ABL列车查询范围内限速物理区段限速值*/
}ABLTrainRelXianSuStru;

/*ABL级别下列车关联所有进路信息结构体*/
typedef struct S_ABLTrainRelAllRouteStru
{
	UINT16 wAblRelRouteId;				/*ABL列车脚下以及前方进路ID*/
	UINT8 chAblRelTrainInFlag;			/*ABL列车所有进路中是否为车脚下进路标志*/
}ABLTrainRelAllRouteStru;

/*ABL级别下列车信息结构体*/
typedef struct S_ABLTrainInfoStru
{
	UINT8 chAblRelLogSecNum;				/*ABL列车关联逻辑区段数量*/
	ABLTrainRelLogStru ablTrainRelLogData[TRAIN_ABL_LOGSEC_SUM];	/*ABL列车关联逻辑区段信息*/
	
	UINT8 chABLRelReturnLogNum;			/*ABL列车关联折返逻辑区段数量*/
	UINT16 wABLRelReturnLogBuf[TRAIN_ABL_RETURNLOGSEC_SUM];		/*ABL列车关联折返逻辑区段ID*/

	UINT8 chABLRelPsdNum;					/*ABL列车查询范围内PSD数量*/	
	ABLTrainRelPsdStru ablTrainRelPsdData[TRAIN_ABL_PSD_SUM];		/*ABL列车查询范围内PSD信息*/

	UINT8 chABLRelEsbNum;			/*ABL列车查询范围内ESB数量*/
	ABLTrainRelEsbStru ablTrainRelEsbData[TRAIN_ABL_ESB_SUM];		/*ABL列车查询范围内ESBID(已激活)*/

	UINT8 chABLRelSwitchNum;					/*ABL列车查询范围内道岔数量*/
	ABLTrainRelSwitchStru ablTrainRelSwitchData[TRAIN_ABL_SWITCH_SUM];		/*ABL列车查询范围内道岔信息*/

	UINT8 chABLRelProSecNum;					/*ABL列车查询范围内保护区段数量*/
	ABLTrainRelProSecStru ablTrainRelProSecData[TRAIN_ABL_PROSEC_SUM];		/*ABL列车查询范围内保护区段信息*/

	UINT8 chABLRelXianSuNum;					/*ABL列车查询范围内限速物理区段数量*/
	ABLTrainRelXianSuStru ablTrainRelXiansuData[TRAIN_ABL_XIANSUSEC_SUM];		/*ABL列车查询范围内限速物理区段信息*/

	UINT8 chAblAllRouteNum;					/*ABL车脚下到前方所有进路数量*/
	ABLTrainRelAllRouteStru wAblAllRouteData[TRAIN_ABL_ALLROUTE_SUM];		/*ABL列车脚下到前方所有进路信息*/


	UINT16 wAblMaxHeadLogSecId;          /*列车大前车头所在逻辑区段ID*/
	UINT16 wAblOccuLogSecIdBuff[TRAIN_ABL_LOGSEC_SUM];  /*ABL列车脚下逻辑区段数组*/
	UINT8  wAblOccuLogSeNum;             /*ABL列车脚下逻辑区段数量*/
	UINT16 wAblNoOccuFarLogId;     /*ABL列车脚下进路最远的未占用逻辑区段ID*/

}ABLTrainInfoStru;

/*前车ATP位置信息结构体*/
typedef struct S_HeadTrainAtpLocStru
{
	UINT8 chTrainDir;	                /*列车运行方向（最小安全后端指向车头）*/
	UINT16 wTrainMaxHeadLink;			/*列车最大安全前端所处Link*/
	UINT32 dwTrainMaxHeadOffset;		/*列车最大安全前端偏移量*/
	UINT16 wTrainMinTailLink;			/*列车最小安全后端所处link*/
	UINT32 dwTrainMinTailOffset;		/*列车最小安全后端偏移量*/
}HeadTrainAtpLocStru;

/*前车ITE位置信息结构体*/
typedef struct S_HeadTrainIteLocStru
{
	UINT16 wTrainMaxHeadLink;			/*列车最大安全前端所处Link*/
	UINT32 dwTrainMaxHeadOffset;		/*列车最大安全前端偏移量*/
	UINT16 wTrainMinTailLink;			/*列车最小安全后端所处link*/
	UINT32 dwTrainMinTailOffset;		/*列车最小安全后端偏移量*/
	UINT8 chTrainDir;	                /*列车运行方向*/
	UINT16 wLocHeadLoss;                /*位置向前方向误差*/
	UINT16 wLocTailLoss;                /*位置向后方向误差*/
}HeadTrainIteLocStru;

/*前车位置信息结构体*/
typedef struct S_HeadTrainLocStru
{
	UINT32 wHeadVobcId;                       /*前车ID*/
	UINT8 chHeadTrainLocFlag;                 /*位置标识*/
	HeadTrainAtpLocStru strHeadTrainAtpLoc;   /*ATP位置信息*/
	HeadTrainIteLocStru strHeadTrainIteLoc;   /*ITE位置信息*/
}HeadTrainLocStru;

typedef struct S_TrainIteDataStruct
{
	UINT16 wTrainHeadLinkId;  /*列车车头所处link ID*/
	UINT32 dwTrainHeadLinkOffset;  /*列车车头所处link偏移量*/
	UINT16 wTrainTailLinkId;  /*列车车尾所处link ID*/
	UINT32 dwTrainTailLinkOffset;  /*列车车尾所处link偏移量*/
	UINT8 cTrainDir;  /*列车运行方向*/
	UINT16 wForWardOffset;  /*位置向前方向误差（cm）*/
	UINT16 wBackOffset;  /*位置向后方向误差（cm）*/
} TrainIteDataStruct;

/*向后跳跃信息结构体*/
typedef struct S_JumpBackInfoStru
{
	UINT8 chJumpBackApplyState;                 /*向后跳跃申请状态*/
	UINT8 chJumpBackReplyState;                 /*向后跳跃回复状态*/
	UINT32 dwJumpBackApplySn;                  /*向后跳跃申请序列号*/
}JumpBackInfoStru;

/*列车信息结构体*/
typedef struct S_TrainInfoStru
{
	UINT16	wTrainId;                   /*列车ID*/
	UINT8	chTrainInZone;				/*列车是否在本控区*/
	UINT8	chTrainLevel;               /*列车运行级别*/
	UINT8	chTrainModel;               /*列车运行模式*/
	UINT32	dwIvocCycle;                /*IVOC应用周期   */
	UINT8	chTrainDir;	                /*列车运行方向（最小安全后端指向车头）*/
	UINT8	chTrainDir_MaxTail;	        /*列车运行方向（最大安全后端）*/
	UINT8	chTrainDir_MinHead;	        /*列车运行方向（最小安全前端）*/
	UINT8	chTrainDir_MaxHead;	        /*列车运行方向（最大安全前端）*/
	UINT16  wTrainMaxHeadLink;			/*列车最大安全前端所处Link*/
	UINT32  dwTrainMaxHeadOffset;		/*列车最大安全前端偏移量*/
	UINT16	wTrainMinHeadLink;			/*列车最小安全前端所处link*/
	UINT32	dwTrainMinHeadOffset;		/*列车最小安全前端偏移量*/
	UINT16  wTrainMaxTailLink;			/*列车最大安全后端所处Link*/
	UINT32  dwTrainMaxTailOffset;		/*列车最大安全后端偏移量*/
	UINT16	wTrainMinTailLink;			/*列车最小安全后端所处link*/
	UINT32	dwTrainMinTailOffset;		/*列车最小安全后端偏移量*/
	UINT8	chSpeedDir;                 /*速度方向*/
	UINT16  wTrainSpeed;                /*速度方向*/
	UINT8	chTrainZeroState;			/*列车零速状态*/
	UINT8	chTransmitStat;				/*与列车传输状态*/
	UINT8	chHeadScreenStat;			/*列车前筛标志*/
	UINT8	chTailScreenStat;			/*列车后筛标志*/
	TrainSafeLocStru strSafeLoc;		/*列车安全位置*/
	UINT32 dwDelayTime;					/*消息延迟时间*/
	UINT16 wGroupOtherTrainId;			/* 编组另一列车ID*/
	UINT8 chGroupRunState;				/* 编组列车状态: 1非编组 2编组建立 3编组运行 4编组折返 5编组解耦*/
	UINT8 chGroupTrainReat;				/* 编组前后车关系: 0x55本车为编组前车 0xaa本车编组后车 0x5a非编组*/
	UINT8 chMsgFromTiocId;				/*通信车消息来源TIOC编号*/
	UINT8 chSwState;					/*列车休眠状态*/
	UINT16 wSleepLink;					/*列车休眠所处休眠轨link*/
	UINT8 chWakeState;					/*列车唤醒状态*/
	UINT8 chTrainReportState;			/*列车汇报的区间湿轨报警信息（bit0：列车是否发生空滑(1-是，0-否)；bit1：列车是否处于零速(1-是，0-否)；
                                                                      bit2：列车是否处于中心设置的湿轨模式(1-是，0-否)；bit3：列车是否处于MMI设置的湿轨模式(1-是，0-否)）；*/
	UINT8 chDynCmd;						/*动态测试命令*/
	UINT8 chDynRpl;						/*动态测试回复*/
	UINT8 chScreenApply;				/*筛选申请*/
	UINT8 chTrainHeadScreenConfirm;		/*人工确认前筛*/
	UINT8 chTrainTailScreenConfirm;		/*人工确认尾筛*/
	UINT8 chAtsScreenConfirm;			/*远程筛选确认*/
	UINT8 chStopSteadyState;			/*列车停准停稳状态*/
	UINT8 chSleepCancleFlag;			/*清除休眠车标志*/
	UINT32 dwTransBadCyc;				/*通信中断周期*/
	UINT8 chEaNum;						/*通信列车回复的区间疏散数量*/
	TrainEaStru strTrainEaInfo[EA_MAX_NUM];			/*列车恢复区间疏散信息*/
	UINT8 chEaCmd;						/*区间疏散命令*/
	UINT8 chTrainCanUct;				/*列车包络可转为UCT标志，仅在休眠状态从休眠转为未休眠置为FLAG_SET，其余时间均为FLAG_UNSET*/
	UINT8 chActive;						/*列车激活端*/
	UINT8 chRrmRqst;					/*进入RRM申请*/
	UINT8 chRrmState;					/*RRM授权状态*/
	UINT8 chRrmReson;					/*不允许进入RRM的原因*/
	UINT8 chRrmResonFromOtherRc;		/*其它RC不允许进入RRM的原因*/
	UINT16 wAtsLgcStation;				/*下一逻辑站台*/
	UINT16 wNextTioc;					/*下一TIOC编号，用作RRM*/
	UINT8 chDerailment;					/*脱轨状态*/

	UINT16 wHeadAxisId;			/*前方计轴编号*/
	UINT8 wHeadITEResult;		/*前方ITE识别结果 0x55：无列车    0xaa：有列车*/
	UINT16 wTailAxisId;			/*后方计轴编号*/
	UINT8 wTailITEResult;		/*后方ITE识别结果 0x55：无列车    0xaa：有列车*/
	UINT8 chNvramPosFlag;		/*NVNAM位置标识 0x55：列车使用NVRAM位置    0xaa：列车未使用NVRAM位置*/
	ABLTrainInfoStru strAblTrainNeedData; /*ABL级别下列车需要数据*/
	HeadTrainLocStru strHeadTrainLocData;      /*前车位置信息数据*/
	TrainIteDataStruct szTrainIteData[TRAIN_INC_ITE_SUM_MAX];  /*ITE汇报的列车位置数据*/
	UINT16 wTrainHeadSigId;          /*前车信号机ID*/
	UINT16 wTrainHeadTrainId;          /*前车ID*/
	UINT8 chTrainLocReverseRouteFlag; /*列车位置反向进路标志*/
	UINT8	chAblTrainDir;	                /*ABL列车运行方向（最小安全后端指向车头）*/
	UINT16  wAblTrainMaxHeadLink;			/*ABL列车最大安全前端所处Link*/
	UINT32  dwAblTrainMaxHeadOffset;		/*ABL列车最大安全前端偏移量*/
	UINT16	wAblTrainMinTailLink;			/*ABL列车最小安全后端所处link*/
	UINT32	dwAblTrainMinTailOffset;		/*ABL列车最小安全后端偏移量*/
	UINT8 chVirHeadScreenPassFlag;          /*虚拟前筛通过标志*/
	UINT8 chVirTailScreenPassFlag;          /*虚拟后筛通过标志*/
	UINT16 wEnterLjkLinkId;                 /*列车驶入列检库所在LINK*/
	UINT32 dwTrainFullEnterLjkCycNum;       /*列车完全驶入列检库周期号*/
	UINT8 chTrainPosMonitorState;           /*列车位置监督状态:0x55 有效；0xAA 无效；0xCC 位置不一致*/
	UINT16 wTrainPosMonitorInLink;          /*列车位置监督有效时所处link*/
	UINT32 dwStartFlyCycNum;				/*列车飞车开始周期号*/
	UINT8 chEaCmdState;                     /*区间疏散命令状态*/
	JumpBackInfoStru strJumpBackData;		/*列车向后跳跃数据*/
}TrainInfoStru;

/*动态测试结构体*/
typedef struct
{
	UINT16 wTrainId;					/*动态测试列车编号*/
	UINT16 wLinkId;						/*动态测试link*/
}TrainDyInfoStru;

/*远程筛选结构体*/
typedef struct
{
	UINT16 wTrainId;						/*列车ID*/
	UINT8 chScType;						/*筛选类别*/
	UINT16 wLgcId;						/*逻辑区段ID*/
}TrainAtsScreenStru;

typedef struct
{
	UINT16 wTrainId;						/*列车ID*/
	UINT8  flyProtectSecCnt;						/*计轴数目 */
	UINT16 flyProtectSec[TRAIN_FLYALARM_SECNUM_MAX];
}TrainFlyProtectStru;

/*******************************全局变量声明*******************************/
extern TrainInfoStru gstTrainInfo[TRAIN_SUM_MAX];
extern UINT16 gszTrainId[TRAIN_SUM_MAX];
extern UINT16 gTrainSum;
extern UINT8 gDyTestNum;
extern TrainDyInfoStru gszDyTestInfo[TRAIN_DYN_TEST_SUM_MAX];
extern UINT8 gAtsScreenNum;
extern TrainAtsScreenStru gszAtsScreenInfo[TRAIN_SUM_MAX];
extern UINT8 gFlyTrainCnt;
extern TrainFlyProtectStru gFlyTrainData[SHUT_DOWN_TRAIN_NUMMAX];

extern UINT8 gNvramFlyTrainCnt;  /*使用NVRAM且位置监督无效的飞车列车数量*/
extern UINT16 gNvramFlyTrainId[SHUT_DOWN_TRAIN_NUMMAX];  /*飞使用NVRAM且位置监督无效的飞车列车ID*/

/*==================================================================================
*函数功能：初始化列车信息结构体。
*函数描述：该函数实现列车信息结构体的初始化。
*入口参数;无
*出口参数;无
*返回值:无
*关键变量：
*备注：
1、创建，2021年6月19日
=====================================================================================*/
UINT8 TrainDataModuleInit(void);

/*
* 功能描述： 获取列车信息结构体
* 参数说明： void
* 返回值  ： TrainInfoStru * 列车信息结构体
* 创建: qw.liu 2022-02-24
*/
TrainInfoStru * GetTrainInfoData(void);

/*
* 功能描述： 获取列车总数
* 参数说明： void
* 返回值  ： UINT16 初始化的列车总数
* 创建: qw.liu 2022-02-25
*/
UINT16 GetTrainSum(void);

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

/*
* 功能描述： 获取指定列车索引
* 参数说明： const UINT16 wTrainId, 列车ID
* 返回值  ： TRAIN_SUM_MAX: 获取数据失败
*			 <TRAIN_SUM_MAX: 列车索引
* 创建: qw.liu 2022-02-24
*/
UINT16 GetTrainBufIndex(const UINT16 wTrainId);

/*
* 功能描述： 获取指定列车通信状态
* 参数说明： const UINT16 wTrainId, 列车ID
* 返回值  ： 0: 获取数据失败
*			 0x55: 通信状态良好
*			 0xAA: 丢失通信
*			 0xFF: 通信状态未知
* 创建: qw.liu 2022-02-24
*/
UINT8 GetTrainTransitmitStat(const UINT16 wTrainId);

/*
* 功能描述： 获取指定列车最小安全前端偏移量
* 参数说明： const UINT16 wTrainId, 列车ID
* 返回值  ： 列车零速状态
* 创建: 2022.3.2
*/
UINT8 GetTrainZeroState(const UINT16 wTrainId);

/*
* 功能描述： 获取指定列车通信状态
* 参数说明： const UINT16 wTrainId, 列车ID
* 返回值  ： 0: 获取数据失败
*			 0x03: UR
*			 0x04: ABL
*			 0x01: VBTC
*			 0x02: ITC
*			 0xff : 默认/清除状态
* 创建: qw.liu 2022-02-24
*/
UINT8 GetTrainLevel(const UINT16 wTrainId);

/*
* 功能描述： 获取指定列车等级
* 参数说明： const UINT16 wTrainId, 列车ID
* 返回值  ： 列车速度
*
* 创建: qw.liu 2022-02-25
*/
UINT16 GetTrainSpeed(const UINT16 wTrainId);

/*
* 功能描述： 获取指定列车运行方向(最小安全后端)
* 参数说明： const UINT16 wTrainId, 列车ID
* 返回值  ： 0: 获取数据失败
*			 0x55: 运行方向上行
*			 0xAA: 运行方向下行
*			 0xFF: 列车默认运行方向
* 创建: qw.liu 2022-02-24
*/
UINT8 GetTrainDir(const UINT16 wTrainId);

/*
* 功能描述： 获取指定列车最大安全后端的运行方向
* 参数说明： const UINT16 wTrainId, 列车ID
* 返回值  ： 0: 获取数据失败
*			 0x55: 运行方向上行
*			 0xAA: 运行方向下行
*			 0xFF: 列车默认运行方向
*/
UINT8 GetTrainDir_MaxTail(const UINT16 wTrainId);

/*
* 功能描述： 获取指定列车最大安全前端运行方向
* 参数说明： const UINT16 wTrainId, 列车ID
* 返回值  ： 0: 获取数据失败
*			 0x55: 运行方向上行
*			 0xAA: 运行方向下行
*			 0xFF: 列车默认运行方向
*/
UINT8 GetTrainDir_MaxHead(const UINT16 wTrainId);

/*
* 功能描述： 获取指定列车最小安全前端的运行方向
* 参数说明： const UINT16 wTrainId, 列车ID
* 返回值  ： 0: 获取数据失败
*			 0x55: 运行方向上行
*			 0xAA: 运行方向下行
*			 0xFF: 列车默认运行方向
*/
UINT8 GetTrainDir_MinHead(const UINT16 wTrainId);


/*
* 功能描述： 获取指定列车前筛标志
* 参数说明： const UINT16 wTrainId, 列车ID
* 返回值  ： 0: 获取数据失败
*			 0x55: 前端筛选通过
*			 0xAA: 前端未筛选通过
* 创建: wsd 2022-03-10
*/
UINT8 GetTrainHeadScrStat(const UINT16 wTrainId);
/*
* 功能描述： 获取指定列车后筛标志
* 参数说明： const UINT16 wTrainId, 列车ID
* 返回值  ： 0: 获取数据失败
*			 0x55: 后端筛选通过
*			 0xAA: 后端未筛选通过
* 创建: wsd 2022-03-10
*/
UINT8 GetTrainTailScrStat(const UINT16 wTrainId);
/*
* 功能描述： 获取指定列车速度方向
* 参数说明： const UINT16 wTrainId, 列车ID
* 返回值  ： 0: 获取数据失败
*			 0x55: 速度方向上行
*			 0xAA: 速度方向下行
* 创建: qw.liu 2022-02-24
*/
UINT8 GetTrainSpeedDir(const UINT16 wTrainId);

/*
* 功能描述： 获取指定列车是否在本控区
* 参数说明： const UINT16 wTrainId, 列车ID
* 返回值  ： 0: 获取数据失败
*			 0x55: 列车在本控区
*			 0xAA: 列车不在本控区
* 创建: qw.liu 2022-02-24
*/
UINT8 GetTrainInCtrlZone(const UINT16 wTrainId);

/*
* 功能描述： 获取指定列车最大安全前端linkId
* 参数说明： const UINT16 wTrainId, 列车ID
* 返回值  ： 0: 获取数据失败
*			 linkID
* 创建: qw.liu 2022-02-24
*/
UINT16 GetTrainMaxHeadLink(const UINT16 wTrainId);

/*
* 功能描述： 获取指定列车最大安全后端linkId
* 参数说明： const UINT16 wTrainId, 列车ID
* 返回值  ： 0: 获取数据失败
*			 linkID
* 创建: qw.liu 2022-02-24
*/
UINT16 GetTrainMaxTailLink(const UINT16 wTrainId);

/*
* 功能描述： 获取指定列车最大安全前端偏移量
* 参数说明： const UINT16 wTrainId, 列车ID
* 返回值  ： 0: 获取数据失败
*			 link偏移量
* 创建: qw.liu 2022-02-24
*/
UINT32 GetTrainMaxHeadOffset(const UINT16 wTrainId);

/*
* 功能描述： 获取指定列车最大安全后偏移量
* 参数说明： const UINT16 wTrainId, 列车ID
* 返回值  ： 0: 获取数据失败
*			 link偏移量
* 创建: qw.liu 2022-02-24
*/
UINT32 GetTrainMaxTailOffset(const UINT16 wTrainId);

/*
* 功能描述： 设置指定列车通信状态
* 参数说明： const UINT16 wTrainId, 列车ID
*			 const UINT8 chTrainmitStat 通信状态
* 返回值  ：CI_ERROR: 设置数据失败
CI_SUCCESS:设置数据成功
* 0x55 : 通信状态良好
* 0xAA : 丢失通信
* 0xFF : 通信状态未知
* 创建 : qw.liu 2022 - 02 - 24
*/
UINT8 SetTrainTransmitStat(const UINT16 wTrainId, const UINT8 chTrainmitStat);

/*
* 功能描述： 设置指定列车运行等级
* 参数说明： const UINT16 wTrainId, 列车ID
*			 const UINT8 chTrainLevel 列车运行等级
* 返回值  ： 0: 获取数据失败
1:	设置数据成功
*			 0x01: UR
*			 0x02: ABL
*			 0x03: VBTC
* 创建 : qw.liu 2022 - 02 - 24
*/
UINT8 SetTrainLevel(const UINT16 wTrainId, const UINT8 chTrainLevel);

/*
* 功能描述： 设置指定列车运行方向
* 参数说明： const UINT16 wTrainId, 列车ID
*			 const UINT8 chTrainDir 列车运行方向
* 返回值  ： 0: 获取数据失败
1:	设置数据成功
*			0x55: 运行方向上行
*			 0xAA: 运行方向下行
*			 0xFF: 列车默认运行方向
* 创建 : qw.liu 2022 - 02 - 24
*/
UINT8 SetTrainDir(const UINT16 wTrainId, const UINT8 chTrainDir);

/*
* 功能描述： 设置指定列车是否在本控区
* 参数说明： const UINT16 wTrainId, 列车ID
*			 const UINT8 chTrainCtrlZonStat 是否在本控区
* 返回值  ： 0: 获取数据失败
*			 1:	设置数据成功
*			0x55: 在本控区
*			0xAA: 不在本控区
* 创建 : qw.liu 2022 - 02 - 24
*/
UINT8 SetTrainInCtrlZoneStat(const UINT16 wTrainId, const UINT8 chTrainCtrlZonStat);

/*
* 功能描述： 设置指定列车最大安全前端所处LinkId
* 参数说明： const UINT16 wTrainId, 列车ID
*			 const UINT8 wTrainHeadLinkId 列车最大安全前端Lk
* 返回值  ： 0: 获取数据失败
*			 1:	设置数据成功
* 创建 : qw.liu 2022 - 02 - 24
*/
UINT8 SetTrainMaxHeadLink(const UINT16 wTrainId, const UINT16 wTrainHeadLinkId);

/*
* 功能描述： 设置指定列车最大安全前端所处LinkId Off
* 参数说明： const UINT16 wTrainId, 列车ID
*			 const UINT8 dwTrainHeadOff 列车安全前端Off
* 返回值  ： 0: 获取数据失败
*			 1:	设置数据成功
* 创建 : qw.liu 2022 - 02 - 24
*/
UINT8 SetTrainMaxHeadOffset(const UINT16 wTrainId, const UINT32 dwTrainHeadOff);

/*
* 功能描述： 设置指定列车最大安全后端所处LinkId
* 参数说明： const UINT16 wTrainId, 列车ID
*			 const UINT8 wTrainTailLinkId 列车安全后端所处Lk
* 返回值  ： 0: 获取数据失败
*			 1:	设置数据成功
* 创建 : qw.liu 2022 - 02 - 24
*/
UINT8 SetTrainMaxTailLink(const UINT16 wTrainId, const UINT16 wTrainTailLinkId);

/*
* 功能描述： 设置指定列车最大安全后端所处LinkId Off
* 参数说明： const UINT16 wTrainId, 列车ID
*			 const UINT8 dwTrainTailOff 列车安全后端Off
* 返回值  ： 0: 获取数据失败
*			 1:	设置数据成功
* 创建 : qw.liu 2022 - 02 - 24
*/
UINT8 SetTrainMaxTailOffset(const UINT16 wTrainId, const UINT32 dwTrainTailOff);

/*
* 功能描述： 设置指定列车速度
* 参数说明： const UINT16 wTrainId, 列车ID
*			 const UINT8 wTrainTailLinkId 列车安全后端所处Lk
* 返回值  ： 0: 获取数据失败
* 1 : 设置数据成功
* 创建 : qw.liu 2022 - 02 - 26
*/
UINT8 SetTrainSpeed(const UINT16 wTrainId, const UINT16 wTrainSpd);

/*
* 功能描述： 设置指定列车速度方向
* 参数说明： const UINT16 wTrainId, 列车ID
*			 const UINT8 dwTrainTailOff 列车安全后端Off
* 返回值  ： 0: 获取数据失败
*			 1:	设置数据成功
* 创建 : qw.liu 2022 - 02 - 26
*/
UINT8 SetTrainSpeedDir(const UINT16 wTrainId, const UINT8 chSpdDir);

/*
* 功能描述： 设置指定列车安全车头所处link
* 参数说明： const UINT16 wTrainId, 列车ID
*			 const UINT16 wLinkId
* 返回值  ：CI_ERROR: 设置数据失败
CI_SUCCESS:设置数据成功
* 创建 : 2022.3.1
*/
UINT8 SetTrainSafeHeadLink(const UINT16 wTrainId, const UINT16 wLinkId);

/*
* 功能描述： 设置指定列车安全车头所处link偏移量
* 参数说明： const UINT16 wTrainId, 列车ID
*			 const UINT32 dwOffset  偏移量
* 返回值  ：CI_ERROR: 设置数据失败
CI_SUCCESS:设置数据成功
* 创建 : 2022.3.1
*/
UINT8 SetTrainSafeHeadOffset(const UINT16 wTrainId, const UINT32 dwOffset);

/*
* 功能描述： 设置指定列车安全车头方向
* 参数说明： const UINT16 wTrainId, 列车ID
*			 const UINT8 chDir
* 返回值  ：CI_ERROR: 设置数据失败
CI_SUCCESS:设置数据成功
* 创建 : 2022.3.1
*/
UINT8 SetTrainSafeHeadDir(const UINT16 wTrainId, const UINT8 chDir);

/*
* 功能描述： 设置指定列车安全车头所处link
* 参数说明： const UINT16 wTrainId, 列车ID
*			 const UINT16 wLinkId
* 返回值  ：CI_ERROR: 设置数据失败
CI_SUCCESS:设置数据成功
* 创建 : 2022.3.1
*/
UINT8 SetTrainSafeTailLink(const UINT16 wTrainId, const UINT16 wLinkId);

/*
* 功能描述： 设置指定列车安全车头所处link偏移量
* 参数说明： const UINT16 wTrainId, 列车ID
*			 const UINT32 dwOffset  偏移量
* 返回值  ：CI_ERROR: 设置数据失败
CI_SUCCESS:设置数据成功
* 创建 : 2022.3.1
*/
UINT8 SetTrainSafeTailOffset(const UINT16 wTrainId, const UINT32 dwOffset);

/*
* 功能描述： 设置指定列车安全车尾方向
* 参数说明： const UINT16 wTrainId, 列车ID
*			 const UINT8 chDir
* 返回值  ：CI_ERROR: 设置数据失败
CI_SUCCESS:设置数据成功
* 创建 : 2022.3.1
*/
UINT8 SetTrainSafeTailDir(const UINT16 wTrainId, const UINT8 chDir);

/*
* 功能描述： 获取指定列车最小安全前端linkId
* 参数说明： const UINT16 wTrainId, 列车ID
* 返回值  ： 0: 获取数据失败
*			 linkID
* 创建: 2022.3.2
*/
UINT16 GetTrainMinHeadLink(const UINT16 wTrainId);

/*
* 功能描述： 获取指定列车最小安全后端linkId
* 参数说明： const UINT16 wTrainId, 列车ID
* 返回值  ： 0: 获取数据失败
*			 linkID
* 创建: 2022.3.2
*/
UINT16 GetTrainMinTailLink(const UINT16 wTrainId);

/*
* 功能描述： 获取指定列车最小安全前端偏移量
* 参数说明： const UINT16 wTrainId, 列车ID
* 返回值  ： 0: 获取数据失败
*			 link偏移量
* 创建: 2022.3.2
*/
UINT32 GetTrainMinHeadOffset(const UINT16 wTrainId);

/*
* 功能描述： 获取指定列车最小安全后偏移量
* 参数说明： const UINT16 wTrainId, 列车ID
* 返回值  ： 0: 获取数据失败
*			 link偏移量
* 创建: 2022.3.2
*/
UINT32 GetTrainMinTailOffset(const UINT16 wTrainId);

/*
* 功能描述： 设置指定列车消息延迟时间
* 参数说明： const UINT16 wTrainId, 列车ID
*			 const UINT32 dwDelayTime
* 返回值  ：CI_ERROR: 设置数据失败
CI_SUCCESS:设置数据成功
* 创建 : 2022.3.1
*/
UINT8 SetTrainMsgDelayTime(const UINT16 wTrainId, const UINT32 dwDelayTime);

/**
* @brief 计算消息延迟时间
* @param UINT32 CurrentOwnSN 本方的当前周期号
* @param UINT32 SNPeriod 本方的通信周期，在CI系统中，认为是应用的周期
* @param UINT32 srcRecvCiMsgSN,对方上次收到的本方的序号
* @param UINT32 srcCrntOwnMsgSN,对方发送最近数据时其当前的序号
* @param UINT32 srcPreOwnMsgSN,对方上次收到本方数据时其当时的序号
* @param UINT32 srcPeriod,对方的通信周期
* @return 消息延迟时间
*/
INT32 CalVobcMsgDelayTime(
	const UINT32 CurrentOwnSN,
	const UINT32 SNPeriod,
	const UINT32 srcRecvCiMsgSN,
	const UINT32 srcCrntOwnMsgSN,
	const UINT32 srcPreOwnMsgSN,
	const UINT32 srcPeriod);

/*
* 功能描述： 获取指定列车消息延迟时间
* 参数说明： const UINT16 wTrainId, 列车ID
* 返回值  ： 0: 获取数据失败
*			 消息延迟时间
* 创建: 2022.3.2
*/
UINT32 GetTrainMsgDelayTime(const UINT16 wTrainId);

/*
* 功能描述： 设置指定列车最小安全前端所处LinkId
* 参数说明： const UINT16 wTrainId, 列车ID
*			 const UINT8 wTrainHeadLinkId 列车最大安全前端Lk
* 返回值  ： 0: 获取数据失败
*			 1:	设置数据成功
* 创建 : qw.liu 2022 - 02 - 24
*/
UINT8 SetTrainMinHeadLink(const UINT16 wTrainId, const UINT16 wTrainHeadLinkId);

/*
* 功能描述： 设置指定列车最小安全前端所处LinkId Off
* 参数说明： const UINT16 wTrainId, 列车ID
*			 const UINT8 dwTrainHeadOff 列车安全前端Off
* 返回值  ： 0: 获取数据失败
*			 1:	设置数据成功
* 创建 : qw.liu 2022 - 02 - 24
*/
UINT8 SetTrainMinHeadOffset(const UINT16 wTrainId, const UINT32 dwTrainHeadOff);

/*
* 功能描述： 设置指定列车最小安全后端所处LinkId
* 参数说明： const UINT16 wTrainId, 列车ID
*			 const UINT8 wTrainTailLinkId 列车安全后端所处Lk
* 返回值  ： 0: 获取数据失败
*			 1:	设置数据成功
* 创建 : qw.liu 2022 - 02 - 24
*/
UINT8 SetTrainMinTailLink(const UINT16 wTrainId, const UINT16 wTrainTailLinkId);
/*
* 功能描述： 设置指定列车最小安全后端所处LinkId Off
* 参数说明： const UINT16 wTrainId, 列车ID
*			 const UINT8 dwTrainTailOff 列车安全后端Off
* 返回值  ： 0: 获取数据失败
*			 1:	设置数据成功
* 创建 : qw.liu 2022 - 02 - 24
*/
UINT8 SetTrainMinTailOffset(const UINT16 wTrainId, const UINT32 dwTrainTailOff);

/*
* 功能描述： 设置指定列车零速状态
* 参数说明： const UINT16 wTrainId, 列车ID
*			 const UINT8 chTrainZeroStt 列车零速状态
* 返回值  ： 0: 获取数据失败
1:	设置数据成功
*			0x55: 运行零速
*			0xAA: 运行非零速
* 创建 : qw.liu 2022 - 02 - 24
*/
UINT8 SetTrainZeroState(const UINT16 wTrainId, const UINT8 chTrainZeroStt);


/*
* 功能描述： 获取指定列车安全车头所处link
* 参数说明： const UINT16 wTrainId, 列车ID
* 返回值  ：安全车头所处link
* 创建 : 2022.3.1
*/
UINT16 GetTrainSafeHeadLink(const UINT16 wTrainId);

/*
* 功能描述： 获取指定列车安全车头所处link偏移量
* 参数说明： const UINT16 wTrainId, 列车ID
* 返回值  ：安全车头所处link偏移量
* 创建 : 2022.3.1
*/
UINT32 GetTrainSafeHeadOffset(const UINT16 wTrainId);

/*
* 功能描述： 获取指定列车安全车头方向
* 参数说明： const UINT16 wTrainId, 列车ID
* 返回值  ：安全车头方向
* 创建 : 2022.3.1
*/
UINT8 GetTrainSafeHeadDir(const UINT16 wTrainId);

/*
* 功能描述： 获取指定列车安全车尾所处link
* 参数说明： const UINT16 wTrainId, 列车ID
* 返回值  ：安全车尾所处link
* 创建 : 2022.3.1
*/
UINT16 GetTrainSafeTailLink(const UINT16 wTrainId);

/*
* 功能描述： 获取指定列车安全车头所处link偏移量
* 参数说明： const UINT16 wTrainId, 列车ID
* 返回值  ：安全车尾所处link偏移量
* 创建 : 2022.3.1
*/
UINT32 GetTrainSafeTailOffset(const UINT16 wTrainId);

/*
* 功能描述： 获取指定列车安全车尾方向
* 参数说明： const UINT16 wTrainId, 列车ID
* 返回值  ：安全车头方向
* 创建 : 2022.3.1
*/
UINT8 GetTrainSafeTailDir(const UINT16 wTrainId);

/**
* @brief 查询列车处于进路位置（使用列车大前、小后）
* @param UINT16 wTrainId 列车ID
* @param UINT16 wRouteId 进路ID
* @return 0：查询失败
*			1：列车未驶入进路
*			2：列车车头驶入进路但未跨压
*			3：列车跨压始端信号机
*			4：列车完全驶入进路
*			5：列车车头出清进路
*/
UINT8 dsuTrainCrossSignal(const UINT16 wTrainId, const UINT16 wRouteId);

/*
* 功能描述： 清除列车信息
* 参数说明： void
* 返回值  ： void
* 创建: qw.liu 2022-03-04
*/
void ClearTrainInfo(UINT16 wTrainId);

/*
* 功能描述：清除指定列车ITE信息
* 参数说明：const UINT16 wTrainId 列车ID
*           const UINT16 wIteLogId Ite逻辑ID
* 返 回 值：void
* Created By LQ 2024.06.06
*/
void ClearTrainIteInfo(const UINT16 wTrainId, const UINT16 wIteLogId);

/*
* 功能描述： 清除后备列车发送信息
* 参数说明： void
* 返回值  ： void
*/
void ClearBackUpTrainInfo(UINT16 wTrainId);

/*
* 功能描述： 设置指定列车安全车头是否处于占用不连通岔区
* 参数说明： const UINT16 wTrainId, 列车ID
*			 const UINT8 chFlag
* 返回值  ：CI_ERROR: 设置数据失败
CI_SUCCESS:设置数据成功
* 创建 : 2022.3.1
*/
UINT8 SetTrainSafeHeadFlag(const UINT16 wTrainId);

/*
* 功能描述： 获取指定列车安全车头处于占用不连通岔区标志
* 参数说明： const UINT16 wTrainId, 列车ID
* 返回值  ：列车安全车头处于占用不连通岔区标志
TRAIN_HEAD_FLAG_YES:列车安全车头处于占用且不连通岔区
TRAIN_HEAD_FLAG_NO:列车安全车头不处于占用且不连通岔区
* 创建 : 2022.3.1
*/
UINT8 GetTrainSafeHeadFlag(const UINT16 wTrainId);

/**
* @brief 计算消息延迟时间
* @param UINT16 wTrainId
* @return 消息延迟时间
*/
UINT32 GetVobcMsgDelayTime(UINT16 wTrainId);

/**
* @brief 获取列车跟随数据
* @param UINT8 *pDataBuff 跟随数据存储缓冲区
* @param UINT32 curIndex 当前索引
* @return 计算后的索引
*/
UINT32 GetTrainTransferData(OUT UINT8 *pDataBuff, IN UINT32 curIndex);

/**
* @brief 设置列车跟随数据
* @param UINT8 *pDataBuff 跟随数据存储缓冲区
* @param UINT32 curIndex 当前索引
* @return 计算后的索引
*/
UINT32 SetTrainTransferData(OUT UINT8 *pDataBuff, IN UINT32 curIndex);

/*
* 功能描述： 设置指定列车编组时另一列车ID
* 参数说明： const UINT16 wTrainId, 列车ID
*			 const UINT16 wGroupOtherTrainId 另一辆编组列车ID
* 返回值  ： 0: 获取数据失败	1:	设置数据成功
* 创建 : wsd 2022 - 06 - 16
*/
UINT8 SetGroupTrainOtherId(const UINT16 wTrainId, const UINT16 wGroupOtherTrainId);

/*
* 功能描述： 获取指定列车编组时另一列车ID
* 参数说明： const UINT16 wTrainId, 列车ID
* 返回值  ：获取成功：（0x1400-0x14ff）或0xffff
*			获取失败：0
* 创建: wsd 2022-06-16
*/
UINT16 GetGroupTrainOtherId(const UINT16 wTrainId);

/*
* 功能描述： 设置指定列车编组运行状态
* 参数说明： const UINT16 wTrainId, 列车ID
*			 const UINT8 chGroupRunState 编组运行状态
* 返回值  ： 0: 获取数据失败	1:	设置数据成功
* 创建 : wsd 2022 - 06 - 16
*/
UINT8 SetGroupTrainRunState(const UINT16 wTrainId, const UINT8 chGroupRunState);

/*
* 功能描述： 获取指定列车编组状态
* 参数说明： const UINT16 wTrainId, 列车ID
* 返回值  ：获取成功：1非编组，2编组建立，3编组运行，4编组折返，5编组解编
*			获取失败：0
* 创建: wsd 2022-06-16
*/
UINT8 GetGroupTrainRunState(const UINT16 wTrainId);

/*
* 功能描述： 设置指定列车编组运行前后车关系
* 参数说明： const UINT16 wTrainId, 列车ID
*			 const UINT8 chGroupRunState 编组运行状态
* 返回值  ： 0: 设置数据失败 1:	设置数据成功
* 创建 : wsd 2022 - 06 - 16
*/
UINT8 SetGroupTrainRelation(const UINT16 wTrainId, const UINT8 chGroupTrainReat);
/*
* 功能描述： 获取指定列车编组运行前后车关系
* 参数说明： const UINT16 wTrainId, 列车ID
* 返回值  ：获取成功：0x55本车为编组前车 0xaa本车为编组后车 0x5a 不是编组车
*			获取失败：0
* 创建: wsd 2022-06-16
*/
UINT8 GetGroupTrainRelation(const UINT16 wTrainId);

/*
* 功能描述：列车A和列车B互为编组运行车判断
* 参数说明： const UINT16 wTrainA, 编组列车A，编组列车B
* 返回值  ： 0 :不是编组运行车
*			 1:是编组运行车
* 创建: wsd 2022-06-16
*/
UINT8 isTwoGroupRunTrain(const UINT16 wTrainA, const UINT16 wTrainB);

/*
* 功能描述： 检查指定ID列车是否为编组前车
* 参数说明： const UINT16 wTrainId, 列车ID
* 返回值  ：0 不是编组前车
1 是编组前车
* 创建: wsd 2022-06-16
*/
UINT8 isGroupHeadTrain(const UINT16 wTrainId);

/**
* @brief 查询列车处于进路位置 使用列车最小前，最小后
* @param UINT16 wTrainId 列车ID
* @param UINT16 wRouteId 进路ID
* @return 0：查询失败
*			1：列车未驶入进路
*			2：列车车头驶入进路但未跨压
*           3：列车跨压信号
*			4：列车完全驶入进路
*			5：列车车头出清进路
*/
UINT8 dsuTrainMinHeadCrossSignal(const UINT16 wTrainId, const UINT16 wRouteId);

/**
* @brief 获取计轴区段上的通信列车
* @param UINT16 wAcId 计轴区段编号
* @param UINT16 szTrainId[TRAIN_SUM_MAX] 通信列车ID
* @return 计轴区段上通信列车数量
* @note：
*/
extern UINT8 GetTrainInAc(UINT16 wAcId, UINT16 szTrainId[TRAIN_SUM_MAX]);

/**
* @brief 判断列车车尾是否向参考点行驶
* @param UINT16 wTrainId 列车ID
* @param struct_PathPoint strPoint 参照点
* @return CI_SUCCESS:列车车尾向参考点行驶，CI_ERROR:列车车尾驶离参考点
* @note：
*/
extern UINT8 IsTrainMoveToPoint(UINT16 wTrainId, struct_PathPoint strPoint);

/*
* 功能描述： 设置指定列车消息来源TIOC编号
* 参数说明： const UINT16 wTrainId, 列车ID
*			 const UINT8 chTiocId TIOC编号
* 返回值  ： 无
*/
extern void SetTrainMsgFromTiocId(const UINT16 wTrainId, const UINT8 chTiocId);

/*
* 功能描述： 获取指定列车来源TIOC编号
* 参数说明： const UINT16 wTrainId, 列车ID
* 返回值  ： 来源TIOC编号
*/
extern UINT8 GetTrainMsgFromTiocId(const UINT16 wTrainId);

/*
* 功能描述： 相邻TIOC通信中断，列车处理
* 参数说明： UINT8 chTiocId 相邻TIOC编号
* 返回值  ： 无
*/
extern void NeighborOutTrainProc(UINT8 chTiocId);

/*
* 功能描述： 相邻TIOC通信良好，列车处理
* 参数说明： UINT8 chTiocId 相邻TIOC编号
* 返回值  ： 无
*/
extern void NeighborGoodTrainProc(UINT8 chTiocId);

/*
* 功能描述： 设置指定列车休眠状态
* 参数说明： const UINT16 wTrainId, 列车ID
*			 const UINT8 chState 休眠状态
* 返回值  ： 无
*/
extern void SetTrainSleepState(const UINT16 wTrainId, const UINT8 chState);

/*
* 功能描述： 获取指定列车休眠状态
* 参数说明： const UINT16 wTrainId, 列车ID
* 返回值  ： 列车休眠状态
*/
extern UINT8 GetTrainSleepState(const UINT16 wTrainId);

/*
* 功能描述： 设置指定列车休眠LinkId
* 参数说明： const UINT16 wTrainId, 列车ID
*			 const UINT16 wLinkId link编号
* 返回值  ： 无
*/
extern void SetTrainSleepLink(const UINT16 wTrainId, const UINT16 wLinkId);

/*
* 功能描述： 获取指定列车休眠link
* 参数说明： const UINT16 wTrainId, 列车ID
* 返回值  ： 列车休眠link
*/
extern UINT16 GetTrainSleepLink(const UINT16 wTrainId);

/*
* 功能描述： 设置指定列车模式
* 参数说明： const UINT16 wTrainId, 列车ID
*			 const UINT8 chMode 模式
* 返回值  ： 无
*/
extern void SetTrainMode(const UINT16 wTrainId, const UINT8 chMode);

/*
* 功能描述： 获取指定列车模式
* 参数说明： const UINT16 wTrainId, 列车ID
* 返回值  ： 列车模式
*/
extern UINT8 GetTrainMode(const UINT16 wTrainId);

/*
* 功能描述： 设置指定列车唤醒状态
* 参数说明： const UINT16 wTrainId, 列车ID
*			 const UINT8 chState 唤醒状态
* 返回值  ： 无
*/
extern void SetTrainWakeState(const UINT16 wTrainId, const UINT8 chState);

/*
* 功能描述： 获取指定列车唤醒状态
* 参数说明： const UINT16 wTrainId, 列车ID
* 返回值  ： 列车唤醒状态
*/
extern UINT8 GetTrainWakeState(const UINT16 wTrainId);

/*
* 功能描述： 设置指定列车汇报状态
* 参数说明： const UINT16 wTrainId, 列车ID
*			 const UINT8 chState 列车汇报状态
* 返回值  ： 无
*/
extern void SetTrainReportState(const UINT16 wTrainId, const UINT8 chState);

/*
* 功能描述： 获取指定列车唤醒状态
* 参数说明： const UINT16 wTrainId, 列车ID
* 返回值  ： 列车汇报状态
*/
extern UINT8 GetTrainReportState(const UINT16 wTrainId);
/*
* 功能描述： 设置指定列车动态测试命令
* 参数说明： const UINT16 wTrainId, 列车ID
*			 const UINT8 chCmd 动态测试命令
* 返回值  ： 无
*/
extern void SetTrainDynCmd(const UINT16 wTrainId, const UINT8 chCmd);

/*
* 功能描述： 获取指定列车动态测试命令
* 参数说明： const UINT16 wTrainId, 列车ID
* 返回值  ： 列车动态测试命令
*/
extern UINT8 GetTrainDynCmd(const UINT16 wTrainId);

/*
* 功能描述： 设置指定列车动态测试回复
* 参数说明： const UINT16 wTrainId, 列车ID
*			 const UINT8 chRpl 动态测试回复
* 返回值  ： 无
*/
extern void SetTrainDynRpl(const UINT16 wTrainId, const UINT8 chRpl);

/*
* 功能描述： 获取指定列车动态测试回复
* 参数说明： const UINT16 wTrainId, 列车ID
* 返回值  ： 列车动态测试回复
*/
extern UINT8 GetTrainDynRpl(const UINT16 wTrainId);

/*
* 功能描述： 将列车移除出动态测试列表
* 参数说明： const UINT16 wTrainId 列车ID
* 返回值  ： 无
*/
extern void DelTrainDyTesting(const UINT16 wTrainId);

/*
* 功能描述： 设置指定列车筛选申请状态
* 参数说明： const UINT16 wTrainId, 列车ID
*			 const UINT8 chApply 列车筛选申请状态
* 返回值  ： 无
*/
extern void SetTrainScreenApply(const UINT16 wTrainId, const UINT8 chApply);

/*
* 功能描述： 获取指定列车筛选申请状态
* 参数说明： const UINT16 wTrainId, 列车ID
* 返回值  ： 列车筛选申请状态
*/
extern UINT8 GetTrainScreenApply(const UINT16 wTrainId);

/*
* 功能描述： 设置指定列车前筛确认状态
* 参数说明： const UINT16 wTrainId, 列车ID
*			 const UINT8 chReq 列车前筛确认状态
* 返回值  ： 无
*/
extern void SetTrainHeadScreenConfirm(const UINT16 wTrainId, const UINT8 chReq);

/*
* 功能描述： 获取指定列车前筛确认状态
* 参数说明： const UINT16 wTrainId, 列车ID
* 返回值  ： 列车前筛确认状态
*/
extern UINT8 GetTrainHeadScreenConfirm(const UINT16 wTrainId);

/*
* 功能描述： 设置指定列车后筛确认状态
* 参数说明： const UINT16 wTrainId, 列车ID
*			 const UINT8 chReq 列车后筛确认状态
* 返回值  ： 无
*/
extern void SetTrainTailScreenConfirm(const UINT16 wTrainId, const UINT8 chReq);

/*
* 功能描述： 获取指定列车后筛确认状态
* 参数说明： const UINT16 wTrainId, 列车ID
* 返回值  ： 列车后筛确认状态
*/
extern UINT8 GetTrainTailScreenConfirm(const UINT16 wTrainId);

/*
* 功能描述： 列车模块主处理
* 参数说明： 无
* 返回值  ： 无
* note：无
*/
extern void TrainMainProc(void);

/*
* 功能描述： 设置指定列车远程筛选确认状态
* 参数说明： const UINT16 wTrainId, 列车ID
*			 const UINT8 chReq 列车远程筛选确认状态
* 返回值  ： 无
*/
extern void SetTrainAtsScreenConfirm(const UINT16 wTrainId, const UINT8 chReq);

/*
* 功能描述： 获取指定列车远程筛选确认状态
* 参数说明： const UINT16 wTrainId, 列车ID
* 返回值  ： 列车远程筛选确认状态
*/
extern UINT8 GetTrainAtsScreenConfirm(const UINT16 wTrainId);

/*
* 功能描述： 获取需要远程筛选的列车数量
* 参数说明： 无
* 返回值  ： 需要远程筛选的列车数量
*/
extern UINT8 GetAtsScreenNum(void);

/*
* 功能描述： 获取需要远程筛选的列车ID
* 参数说明： 无
* 返回值  ： 需要远程筛选的列车ID
*/
extern UINT16 GetAtsScreenTrainIdByIndex(const UINT8 chIndex);

/*
* 功能描述： 获取需要远程筛选的列车所处逻辑区段ID
* 参数说明： 无
* 返回值  ： 需要远程筛选的列车所处逻辑区段ID
*/
extern UINT16 GetAtsScreenLgcIdByIndex(const UINT8 chIndex);

/*
* 功能描述： 获取需要远程筛选类别
* 参数说明： 无
* 返回值  ： 远程筛选类别
*/
extern UINT8 GetAtsScreenTypeByIndex(const UINT8 chIndex);

/*
* 功能描述： 设置指定列车停准停稳状态
* 参数说明： const UINT16 wTrainId, 列车ID
*			 const UINT8 chState 列车停准停稳状态
* 返回值  ： 无
*/
extern void SetTrainStopSteadyState(const UINT16 wTrainId, const UINT8 chState);

/*
* 功能描述： 获取指定列车停准停稳状态
* 参数说明： const UINT16 wTrainId, 列车ID
* 返回值  ： 列车停准停稳状态
*/
extern UINT8 GetTrainStopSteadyState(const UINT16 wTrainId);

/*
* 功能描述： 设置指定列车能否清除休眠状态
* 参数说明： const UINT16 wTrainId, 列车ID
*			 const UINT8 chState 列车能否清除休眠状态
* 返回值  ： 无
*/
extern void SetTrainSleepCancleFlag(const UINT16 wTrainId, const UINT8 chState);

/*
* 功能描述： 获取指定列车能否清除休眠状态
* 参数说明： const UINT16 wTrainId, 列车ID
* 返回值  ： 列车能否清除休眠状态
*/
extern UINT8 GetTrainSleepCancleFlag(const UINT16 wTrainId);

/*
* 功能描述： 获取指定列车反馈区间疏散数量
* 参数说明： const UINT16 wTrainId, 列车ID
* 返回值  ： 区间疏散数量
*/
extern UINT8 GetTrainEaNum(const UINT16 wTrainId);

/*
* 功能描述： 获取指定列车反馈区间疏散信息
* 参数说明： const UINT16 wTrainId, 列车ID
* 返回值  ： 区间疏散信息
*/
extern TrainEaStru * GetTrainEaInfo(const UINT16 wTrainId);

/*
* 功能描述： 获取指定列车区间疏散命令
* 参数说明： const UINT16 wTrainId, 列车ID
* 返回值  ： 区间疏散命令
*/
extern UINT8 GetTrainEaCmd(const UINT16 wTrainId);

/*
* 功能描述： 设置指定列车区间疏散命令
* 参数说明： const UINT16 wTrainId, 列车ID
*			 const UINT8 chCmd 区间疏散命令
* 返回值  ： 无
*/
extern void SetTrainEaCmd(const UINT16 wTrainId, const UINT8 chCmd);

/*
* 功能描述： 设置指定列车区间疏散反馈数量
* 参数说明： const UINT16 wTrainId, 列车ID
*			 const UINT8 chEaNum 区间疏散反馈数量
* 返回值  ： 无
*/
extern void SetTrainEaNum(const UINT16 wTrainId, const UINT8 chEaNum);

/*
* 功能描述： 设置指定列车区间疏散反馈信息
* 参数说明： const UINT16 wTrainId, 列车ID
*			 pEaInfo 区间疏散反馈信息
* 返回值  ： 无
*/
extern void SetTrainEaInfo(const UINT16 wTrainId, const TrainEaStru * pEaInfo);

/*
* 功能描述： 获取指定列车包络能否转为UCT
* 参数说明： const UINT16 wTrainId, 列车ID
* 返回值  ： FLAG_UNSET:可转为UCT；FLAG_SET:不可转为UCT
* note：休眠车包络不可转为UCT
*/
extern UINT8 GetTrainCanUct(const UINT16 wTrainId);

/*
* 功能描述： 将所有列车置为可转为UCT
* 参数说明： 无
* 返回值  ： 无
* note：休眠车包络不可转为UCT
*/
extern void ClearTrainCanUctFlag(void);

/*
* 功能描述： 设置指定列车当前激活端
* 参数说明： const UINT16 wTrainId, 列车ID
*			 const UINT8 chActive 列车激活端
* 返回值  ： 无
*/
extern void SetTrainActive(const UINT16 wTrainId, const UINT8 chActive);

/*
* 功能描述： 获取指定列车当前激活端
* 参数说明： const UINT16 wTrainId, 列车ID
* 返回值  ： 列车当前激活端
*/
extern UINT8 GetTrainActive(const UINT16 wTrainId);

/*
* 功能描述： 设置指定列车RRM申请
* 参数说明： const UINT16 wTrainId, 列车ID
*			 const UINT8 chRqst 列车进入RRM申请
* 返回值  ： 无
*/
extern void SetTrainRrmRqst(const UINT16 wTrainId, const UINT8 chRqst);

/*
* 功能描述： 获取指定列车RRM申请
* 参数说明： const UINT16 wTrainId, 列车ID
* 返回值  ： 列车RRM申请
*/
extern UINT8 GetTrainRrmRqst(const UINT16 wTrainId);

/*
* 功能描述： 设置指定列车RRM允许状态
* 参数说明： const UINT16 wTrainId, 列车ID
*			 const UINT8 chState 列车进入RRM允许状态
* 返回值  ： 无
*/
extern void SetTrainRrmState(const UINT16 wTrainId, const UINT8 chState);

/*
* 功能描述： 获取指定列车RRM允许状态
* 参数说明： const UINT16 wTrainId, 列车ID
* 返回值  ： 列车RRM允许状态
*/
extern UINT8 GetTrainRrmState(const UINT16 wTrainId);

/*
* 功能描述： 设置指定列车RRM不允许原因
* 参数说明： const UINT16 wTrainId, 列车ID
*			 const UINT8 chReson 列车进入RRM不允许原因
* 返回值  ： 无
*/
extern void SetTrainRrmReson(const UINT16 wTrainId, const UINT8 chReson);

/*
* 功能描述： 获取指定列车RRM不允许原因
* 参数说明： const UINT16 wTrainId, 列车ID
* 返回值  ： 列车RRM不允许原因
*/
extern UINT8 GetTrainRrmReson(const UINT16 wTrainId);

/*
* 功能描述： 获取指定列车下一逻辑站台ID
* 参数说明： const UINT16 wTrainId, 列车ID
* 返回值  ： 列车下一逻辑站台ID
*/
extern UINT16 GetTrainAtsLgcStation(const UINT16 wTrainId);

/*
* 功能描述： 设置指定列车下一逻辑站台ID
* 参数说明： const UINT16 wTrainId, 列车ID
*			 const UINT16 wLgcStation 列车下一逻辑站台ID
* 返回值  ： 无
*/
extern void SetTrainAtsLgcStation(const UINT16 wTrainId, const UINT16 wLgcStation);

/*
* 功能描述： 获取指定列车下一控区ID
* 参数说明： const UINT16 wTrainId, 列车ID
* 返回值  ： 列车下一控区ID
*/
extern UINT16 GetTrainNextTioc(const UINT16 wTrainId);

/*
* 功能描述： 设置指定列车下一控区ID
* 参数说明： const UINT16 wTrainId, 列车ID
*			 const UINT16 wNextTioc 列车下一控区ID(带0x3c）
* 返回值  ： 无
*/
extern void SetTrainNextTioc(const UINT16 wTrainId, const UINT16 wNextTioc);

/*
* 功能描述： 设置指定列车脱轨状态
* 参数说明： const UINT16 wTrainId, 列车ID
*			 const UINT8 chState 列车脱轨状态
* 返回值  ： 无
*/
extern void SetTrainDerailment(const UINT16 wTrainId, const UINT8 chState);

/*
* 功能描述： 获取指定列车脱轨状态
* 参数说明： const UINT16 wTrainId, 列车ID
* 返回值  ： 列车脱轨状态
*/
extern UINT8 GetTrainDerailment(const UINT16 wTrainId);

/*
* 功能描述： 判断列车位置是否有效
* 参数说明： const UINT16 wTrainId, 列车ID
* 返回值  ： CI_ERROR:列车位置无效；CI_SUCCESS:列车位置有效
*/
extern UINT8 IsTrainPosValid(const UINT16 wTrainId);

/*
* 功能描述： 检查列车脚下资源是否齐全、运行方向是否与ATS下发的运行方向匹配
* 输入参数： const UINT16 wTrainId  列车ID
*            const UINT8 cQueryDir 逻辑区段对应的查询方向（逻辑方向）
*            const UINT8 cLogSecSum 逻辑区段序列数量
*            const UINT16 pLogSecIdBuff[] 逻辑区段ID数组
*            const UINT8 cFunctionId 函数ID
*            const UINT8 cSendLevel 报警发送级别
* 输出参数： UINT8* pHalfRouteSwitchMoveFlag 半截进路道岔可动标志
*            UINT16 *pTrainOccLogSecSum 列车脚下逻辑区段数量
*            UINT16 pTrainOccLogSecID[] 列车脚下逻辑区段ID数组
* 返回值  ：CI_SUCCESS：检查通过
			CI_ERROR: 检查不通过
*/
UINT8 TrainResAndDirCheck(const UINT16 wTrainId, const UINT8 cQueryDir, const UINT8 cLogSecSum, const UINT16 pLogSecIdBuff[],
	UINT8* pHalfRouteSwitchMoveFlag, UINT16* pTrainOccLogSecSum, UINT16 pTrainOccLogSecID[], const UINT8 cFunctionId, const UINT8 cSendLevel);

/*
* 功能描述： 列车资源回收
* 参数说明： 无
* 返回值  ： 无
* note：降级列车完全驶入进路后，回收列车资源
*/
void TrainResRecycle(void);

/*
* 功能描述： 获取指定列车是否满足回收资源时间
* 参数说明： const UINT16 wTrainId, 列车ID
* 返回值  ： CI_ERROR 不满足（未超时/未计时） CI_SUCCESS 满足（超时）
*/
UINT8 GetTrainResRecycleOTStat(const UINT16 wTrainId);

/*
* 功能描述： 设置列车各点的运行方向
* 参数说明： const UINT16 wTrainId, 列车ID
*			 const UINT8 chTrainDir 列车运行方向（已获取的，最小后端指向车头）
* 返回值  ： CI_ERROR 设置失败  CI_SUCCESS 设置成功
*/
UINT8 SetTrainOtherPointDir(const UINT16 wTrainId, const UINT8 chTrainDir);

/*
* 功能描述： 校验列车小后方向是否符合其他三点计算
* 参数说明： const UINT16 wTrainId, 列车ID
*			 const UINT8 chTrainDir 列车运行方向（已获取的，最小后端指向车头）运营方向
* 返回值  ： CI_ERROR 设置失败  CI_SUCCESS 设置成功
*/
UINT8 CheckTrainDirToOtherPointDir(LOD_STRU pMaxHead, LOD_STRU pMinHead, LOD_STRU pMaxTail, LOD_STRU pMinTail, const UINT8 chTrainDir);

/*
* 功能描述：设置列车前方计轴器编号
*输入参数：wTrainId 列车id wHeadAxis 前方计轴id
*返回值： void
*Created: fan 2024.2.21
*/
void SetHeadAxisId(const UINT16 wTrainId, const UINT16 wHeadAxis);

/*
* 功能描述：设置列车前方ITE识别结果
*输入参数：wTrainId 列车id devState 前方ITE识别结果
*返回值： void
*Created: fan 2024.2.21
*/
void SetHeadITEResult(const UINT16 wTrainId, const UINT8 devState);

/*
* 功能描述：设置列车后方计轴器编号
*输入参数：wTrainId 列车id wTailAxis 后方计轴id
*返回值： void
*Created: fan 2024.2.21
*/
void SetTailAxisId(const UINT16 wTrainId, const UINT16 wTailAxis);

/*
* 功能描述：设置列车后方ITE识别结果
*输入参数：wTrainId 列车id devState 后方ITE识别结果
*返回值： void
*Created: fan 2024.2.21
*/
void SetTailITEResult(const UINT16 wTrainId, const UINT8 devState);

/**
* 功能描述：获取IVOC提供给RC的后方方计轴编号和ITE识别结果
*输入参数：wTrainID 列车id
*返回参数：UINT8 * devState （0x55无列车 0xAA有列车)
*返回值：UINT16 AxisId
*Created: fan 2024.2.21
*/
UINT16 GetTrainTailITEScreen(const UINT16 wTrainId, UINT8* devState);
/*
* 功能描述：获取IVOC提供给RC的前方计轴编号和ITE识别结果
*输入参数：wTrainId 列车id
*返回参数：UINT8 *devState （0x55无列车 0xAA有列车)
*返回值：UINT16 AxisId 前方计轴器编号
*Created: fan 2024.2.21
*/
UINT16 GetTrainHeadITEScreen(const UINT16 wTrainId, UINT8* devState);

/*
* 功能描述： 设置指定列车其它RC远程RM不允许原因
* 参数说明： const UINT16 wTrainId, 列车ID
*			 const UINT8 chReson 列车其它RC远程RM不允许原因
* 返回值  ： 无
*/
void SetTrainOtherRcRrmReson(const UINT16 wTrainId, const UINT8 chReson);

/*
* 功能描述： 获取指定列车RRM不允许原因
* 参数说明： const UINT16 wTrainId, 列车ID
* 返回值  ： 列车其它RC远程RM不允许原因
*/
UINT8 GetTrainOtherRcRrmReson(const UINT16 wTrainId);

/*
* 功能描述： 设置指定列车ABL列车关联逻辑区段数量
* 参数说明： const UINT16 wTrainId, 列车ID
*			 const UINT8 chAblRelLogSecNum	ABL列车关联逻辑区段数量
* 返回值  ：无
*/
void SetTrainAblRelLogSecNum(const UINT16 wTrainId, const UINT8 chAblRelLogSecNum);

/*
* 功能描述： 获取指定列车ABL列车关联逻辑区段数量
* 参数说明： const UINT16 wTrainId, 列车ID
* 返回值  ：指定列车ABL列车关联逻辑区段数量
*/
UINT8 GetTrainAblRelLogSecNum(const UINT16 wTrainId);

/*
* 功能描述： 设置指定列车ABL列车关联逻辑区段信息
* 参数说明： const UINT16 wTrainId, 列车ID
*			 ABLTrainRelLogStru ablTrainRelLogData[TRAIN_ABL_LOGSEC_SUM]	列车ABL列车关联逻辑区段信息
* 返回值  ： void
*/
void SetTrainAblRelLogSecData(const UINT16 wTrainId, ABLTrainRelLogStru ablTrainRelLogData[TRAIN_ABL_LOGSEC_SUM]);

/*
* 功能描述： 获取指定列车ABL列车关联逻辑区段信息
* 参数说明： const UINT16 wTrainId, 列车ID
* 返回值  ：指定列车ABL列车关联逻辑区段信息
*/
ABLTrainRelLogStru* GetTrainAblRelLogData(const UINT16 wTrainId);

/*
* 功能描述： 设置指定列车ABL列车关联折返逻辑区段数量
* 参数说明： const UINT16 wTrainId, 列车ID
*			 const UINT8 chAblRelReturnLogNum	ABL列车关联折返逻辑区段数量
* 返回值  ：无
*/
void SetTrainAblRelReturnLogNum(const UINT16 wTrainId, const UINT8 chAblRelReturnLogNum);

/*
* 功能描述： 获取指定列车ABL列车关联折返逻辑区段数量
* 参数说明： const UINT16 wTrainId, 列车ID
* 返回值  ：指定列车ABL列车关联折返逻辑区段数量
*/
UINT8 GetTrainAblRelReturnLogNum(const UINT16 wTrainId);

/*
* 功能描述： 设置指定列车ABL列车关联折返逻辑区段ID
* 参数说明： const UINT16 wTrainId, 列车ID
*			 UINT16 ablTrainRelReturnLogIdBuf[TRAIN_ABL_RETURNLOGSEC_SUM]	列车ABL列车关联折返逻辑区段ID
* 返回值  ： void
*/
void SetTrainAblRelReturnLogId(const UINT16 wTrainId, UINT16 ablTrainRelReturnLogIdBuf[TRAIN_ABL_RETURNLOGSEC_SUM]);

/*
* 功能描述： 获取指定列车ABL列车关联折返逻辑区段ID
* 参数说明： const UINT16 wTrainId, 列车ID
* 返回值  ：指定列车ABL列车关联折返逻辑区段ID
*/
UINT16* GetTrainAblRelReturnLogId(const UINT16 wTrainId);

/*
* 功能描述： 设置指定列车ABL列车查询范围内PSD数量
* 参数说明： const UINT16 wTrainId, 列车ID
*			 const UINT8 chAblRelPsdNum	ABL列车查询范围内PSD数量
* 返回值  ：无
*/
void SetTrainAblRelPsdNum(const UINT16 wTrainId, const UINT8 chAblRelPsdNum);

/*
* 功能描述： 获取指定列车ABL列车查询范围内PSD数量
* 参数说明： const UINT16 wTrainId, 列车ID
* 返回值  ：指定列车ABL列车查询范围内PSD数量
*/
UINT8 GetTrainAblRelPsdNum(const UINT16 wTrainId);

/*
* 功能描述： 设置指定列车ABL列车查询范围内PSD信息
* 参数说明： const UINT16 wTrainId, 列车ID
*			 ABLTrainRelPsdStru ablTrainRelPsdData[TRAIN_ABL_PSD_SUM]	列车ABL列车查询范围内PSD信息
* 返回值  ： void
*/
void SetTrainAblRelPsdData(const UINT16 wTrainId, ABLTrainRelPsdStru ablTrainRelPsdData[TRAIN_ABL_PSD_SUM]);

/*
* 功能描述： 获取指定列车ABL列车查询范围内PSD信息
* 参数说明： const UINT16 wTrainId, 列车ID
* 返回值  ：指定列车ABL列车查询范围内PSD信息
*/
ABLTrainRelPsdStru* GetTrainAblRelPsdData(const UINT16 wTrainId);

/*
* 功能描述： 设置指定列车ABL列车查询范围内ESB数量
* 参数说明： const UINT16 wTrainId, 列车ID
*			 const UINT8 chAblRelEsbNum	ABL列车查询范围内ESB数量
* 返回值  ：无
*/
void SetTrainAblRelEsbNum(const UINT16 wTrainId, const UINT8 chAblRelEsbNum);

/*
* 功能描述： 获取指定列车ABL列车查询范围内ESB数量
* 参数说明： const UINT16 wTrainId, 列车ID
* 返回值  ：指定列车ABL列车查询范围内ESB数量
*/
UINT8 GetTrainAblRelEsbNum(const UINT16 wTrainId);

/*
* 功能描述： 设置指定列车ABL列车查询范围内ESBID
* 参数说明： const UINT16 wTrainId, 列车ID
*			 UINT16 ablTrainRelEsbIdBuf[TRAIN_ABL_ESB_SUM]	列车ABL列车查询范围内ESBID
* 返回值  ： void
*/
void SetTrainAblRelEsbId(const UINT16 wTrainId, ABLTrainRelEsbStru ablTrainRelEsbIdBuf[TRAIN_ABL_ESB_SUM]);

/*
* 功能描述： 获取指定列车ABL列车查询范围内ESBID
* 参数说明： const UINT16 wTrainId, 列车ID
* 返回值  ：指定列车ABL列车查询范围内ESBI数据
*/
ABLTrainRelEsbStru* GetTrainAblRelEsbData(const UINT16 wTrainId);

/*
* 功能描述： 设置指定列车ABL列车查询范围内道岔数量
* 参数说明： const UINT16 wTrainId, 列车ID
*			 const UINT8 chAblRelSwitchNum	ABL列车查询范围内道岔数量
* 返回值  ：无
*/
void SetTrainAblRelSwitchNum(const UINT16 wTrainId, const UINT8 chAblRelSwitchNum);

/*
* 功能描述： 获取指定列车ABL列车查询范围内道岔数量
* 参数说明： const UINT16 wTrainId, 列车ID
* 返回值  ：指定列车ABL列车查询范围内道岔数量
*/
UINT8 GetTrainAblRelSwitchNum(const UINT16 wTrainId);

/*
* 功能描述： 设置指定列车ABL列车查询范围内道岔信息
* 参数说明： const UINT16 wTrainId, 列车ID
*			 ABLTrainRelSwitchStru ablTrainRelSwitchData[TRAIN_ABL_SWITCH_SUM]	列车ABL列车查询范围内道岔信息
* 返回值  ： void
*/
void SetTrainAblRelSwitchData(const UINT16 wTrainId, ABLTrainRelSwitchStru ablTrainRelSwitchData[TRAIN_ABL_SWITCH_SUM]);

/*
* 功能描述： 获取指定列车ABL列车查询范围内道岔信息
* 参数说明： const UINT16 wTrainId, 列车ID
* 返回值  ：指定列车ABL列车查询范围内道岔信息
*/
ABLTrainRelSwitchStru* GetTrainAblRelSwitchData(const UINT16 wTrainId);

/*
* 功能描述： 设置指定列车ABL列车查询范围内保护区段数量
* 参数说明： const UINT16 wTrainId, 列车ID
*			 const UINT8 chAblRelProSecNum	ABL列车查询范围内保护区段数量
* 返回值  ：无
*/
void SetTrainAblRelProSecNum(const UINT16 wTrainId, const UINT8 chAblRelProSecNum);

/*
* 功能描述： 获取指定列车ABL列车查询范围内保护区段数量
* 参数说明： const UINT16 wTrainId, 列车ID
* 返回值  ：指定列车ABL列车查询范围内保护区段数量
*/
UINT8 GetTrainAblRelProSecNum(const UINT16 wTrainId);

/*
* 功能描述： 设置指定列车ABL列车查询范围内保护区段信息
* 参数说明： const UINT16 wTrainId, 列车ID
*			 ABLTrainRelProSecStru ablTrainRelProSecData[TRAIN_ABL_PROSEC_SUM]	列车ABL列车查询范围内保护区段信息
* 返回值  ： void
*/
void SetTrainAblRelProSecData(const UINT16 wTrainId, ABLTrainRelProSecStru ablTrainRelProSecData[TRAIN_ABL_PROSEC_SUM]);

/*
* 功能描述： 获取指定列车ABL列车查询范围内保护区段信息
* 参数说明： const UINT16 wTrainId, 列车ID
* 返回值  ：指定列车ABL列车查询范围内保护区段信息
*/
ABLTrainRelProSecStru* GetTrainAblRelProSecData(const UINT16 wTrainId);

/*
* 功能描述： 设置指定列车ABL列车查询范围内限速物理区段数量
* 参数说明： const UINT16 wTrainId, 列车ID
*			 const UINT8 chAblRelXianSuNum	ABL列车查询范围内限速物理区段数量
* 返回值  ：无
*/
void SetTrainAblRelXianSuNum(const UINT16 wTrainId, const UINT8 chAblRelXianSuNum);

/*
* 功能描述： 获取指定列车ABL列车查询范围内限速物理区段数量
* 参数说明： const UINT16 wTrainId, 列车ID
* 返回值  ：指定列车ABL列车查询范围内限速物理区段数量
*/
UINT8 GetTrainAblRelXianSuNum(const UINT16 wTrainId);

/*
* 功能描述： 设置指定列车ABL列车查询范围内限速物理区段信息
* 参数说明： const UINT16 wTrainId, 列车ID
*			 ABLTrainRelXianSuStru ablTrainRelXiansuData	列车ABL列车查询范围内限速物理区段信息
* 返回值  ： void
*/
void SetTrainAblRelXiansuData(const UINT16 wTrainId, ABLTrainRelXianSuStru ablTrainRelXiansuData);

/*
* 功能描述： 清空指定列车ABL列车查询范围内限速物理区段信息
* 参数说明： const UINT16 wTrainId, 列车ID
* 返回值  ： void
*/
void ClearTrainAblRelXiansuData(const UINT16 wTrainId);

/*
* 功能描述： 设置指定列车ABL列车指定限速物理区段信息
* 参数说明： const UINT16 wTrainId, 列车ID
*			 const UINT8 chIndex 指定索引
*			 ABLTrainRelXianSuStru ablTrainRelXiansuData	列车ABL列车查询范围内限速物理区段信息
* 返回值  ： void
*/
void SetTrainAblRelIndexXiansuData(const UINT16 wTrainId, const UINT8 chIndex, ABLTrainRelXianSuStru ablTrainRelXiansuData);

/*
* 功能描述： 获取指定列车ABL列车查询范围内限速物理区段信息
* 参数说明： const UINT16 wTrainId, 列车ID
* 返回值  ：指定列车ABL列车查询范围内限速物理区段信息
*/
ABLTrainRelXianSuStru* GetTrainAblRelXiansuData(const UINT16 wTrainId);

/*
* 功能描述： 设置指定列车ABL车脚下到前方所有进路数量
* 参数说明： const UINT16 wTrainId, 列车ID
*			 const UINT8 chAblAllRouteNum	ABL车脚下到前方所有进路数量
* 返回值  ：无
*/
void SetTrainAblAllRouteNum(const UINT16 wTrainId, const UINT8 chAblAllRouteNum);

/*
* 功能描述： 获取指定列车ABL车脚下到前方所有进路数量
* 参数说明： const UINT16 wTrainId, 列车ID
* 返回值  ：指定列车ABL车脚下到前方所有进路数量
*/
UINT8 GetTrainAblAllRouteNum(const UINT16 wTrainId);

/*
* 功能描述： 设置指定列车ABL列车脚下到前方所有进路信息
* 参数说明： const UINT16 wTrainId, 列车ID
*			 ABLTrainRelAllRouteStru ablTrainRelAllRouteData[TRAIN_ABL_ALLROUTE_SUM]	列车ABL列车脚下到前方所有进路信息
* 返回值  ： void
*/
void SetTrainAblRelAllRouteData(const UINT16 wTrainId, ABLTrainRelAllRouteStru ablTrainRelAllRouteData[TRAIN_ABL_ALLROUTE_SUM]);

/*
* 功能描述： 获取指定列车ABL列车脚下到前方所有进路信息
* 参数说明： const UINT16 wTrainId, 列车ID
* 返回值  ：指定列车ABL列车脚下到前方所有进路信息
*/
ABLTrainRelAllRouteStru* GetTrainAblRelAllRouteData(const UINT16 wTrainId);

/*
* 功能描述： 设置指定列车NVRAM位置标识
* 参数说明： const UINT16 wTrainId, 列车ID
*			 const UINT8 chState NVRAM位置标识
* 返回值  ： 无
* BY CGH 20240417
*/
void SetTrainNvramPosFlag(const UINT16 wTrainId, const UINT8 chState);

/*
* 功能描述： 获取指定列车NVRAM位置标识
* 参数说明： const UINT16 wTrainId, 列车ID
* 返回值  ： 列车NVRAM位置标识
* BY CGH 20240417
*/
UINT8 GetTrainNvramPosFlag(const UINT16 wTrainId);

/*
* 功能描述： 设置指定列车前车位置信息
* 参数说明： const UINT16 wTrainId, 列车ID
*			 HeadTrainLocStru strHeadTrainLocData  前车位置信息数据
* 返回值  ： void
* by cgh 20240606
*/
void SetTrainHeadTrainLocData(const UINT16 wTrainId, HeadTrainLocStru strHeadTrainLocData);

/*
* 功能描述： 获取指定列车前车位置信息
* 参数说明： const UINT16 wTrainId, 列车ID
* 返回值  ： NULL 获取失败
*            非NULL 前车位置信息数据
* by cgh 20240606
*/
HeadTrainLocStru GetTrainHeadTrainLocData(const UINT16 wTrainId);

/*
* 功能描述： 获取列车ITE汇报的数据
* 参数说明： const UINT16 wTrainId, 列车ID
*			 HeadTrainLocStru strHeadTrainLocData  ITE汇报的数据
* 返回值  ： void
* by cgh 20240606
*/
TrainIteDataStruct* GetTrainIteData(const UINT16 wTrainId);

/*
* 功能描述：设置列车ITE数据——车头所处linkID
* 参数说明：const UINT16 wTrainId 列车ID
*			const UINT16 wIteLogId ITE逻辑ID
*           const UINT16 wHeadLinkId 列车车头所处linkID
* 返 回 值：无
* Created By LQ 2024.06.06
*/
void SetIteTrainHeadLinkId(const UINT16 wTrainId, const UINT16 wIteLogId, const UINT16 wHeadLinkId);

/*
* 功能描述：设置列车ITE数据——车头所处link偏移量
* 参数说明：const UINT16 wTrainId 列车ID
*			const UINT16 wIteLogId ITE逻辑ID
*           const UINT32 dwHeadLinkOffset 列车车头所处link偏移量
* 返 回 值：无
* Created By LQ 2024.06.06
*/
void SetIteTrainHeadLinkOffset(const UINT16 wTrainId, const UINT16 wIteLogId, const UINT32 dwHeadLinkOffset);

/*
* 功能描述：设置列车ITE数据——车尾所处linkID
* 参数说明：const UINT16 wTrainId 列车ID
*			const UINT16 wIteLogId ITE逻辑ID
*           const UINT16 wTailLinkId 列车车尾所处linkID
* 返 回 值：无
* Created By LQ 2024.06.06
*/
void SetIteTrainTailLinkId(const UINT16 wTrainId, const UINT16 wIteLogId, const UINT16 wTailLinkId);

/*
* 功能描述：设置列车ITE数据——车尾所处link偏移量
* 参数说明：const UINT16 wTrainId 列车ID
*			const UINT16 wIteLogId ITE逻辑ID
*           const UINT32 dwTailLinkOffset 列车车尾所处link偏移量
* 返 回 值：无
* Created By LQ 2024.06.06
*/
void SetIteTrainTailLinkOffset(const UINT16 wTrainId, const UINT16 wIteLogId, const UINT32 dwTailLinkOffset);

/*
* 功能描述：设置列车ITE数据——列车方向
* 参数说明：const UINT16 wTrainId 列车ID
*			const UINT16 wIteLogId ITE逻辑ID
*           const UINT8 cTrainDir 列车方向
* 返 回 值：无
* Created By LQ 2024.06.06
*/
void SetIteTrainDir(const UINT16 wTrainId, const UINT16 wIteLogId, const UINT8 cTrainDir);

/*
* 功能描述：设置列车ITE数据——位置向前方向误差
* 参数说明：const UINT16 wTrainId 列车ID
*			const UINT16 wIteLogId ITE逻辑ID
*           const UINT16 wForWardOffset 位置向前方向误差
* 返 回 值：无
* Created By LQ 2024.06.06
*/
void SetIteTrainForWardOffset(const UINT16 wTrainId, const UINT16 wIteLogId, const UINT16 wForWardOffset);

/*
* 功能描述：设置列车ITE数据——位置向后方向误差
* 参数说明：const UINT16 wTrainId 列车ID
*			const UINT16 wIteLogId ITE逻辑ID
*           const UINT16 wBackOffset 位置向后方向误差
* 返 回 值：无
* Created By LQ 2024.06.06
*/
void SetIteTrainBackOffset(const UINT16 wTrainId, const UINT16 wIteLogId, const UINT16 wBackOffset);

/*
* 功能描述： 设置指定列车前方信号机ID
* 参数说明： const UINT16 wTrainId, 列车ID
*			const UINT16 wTrainSigId 前方信号机ID
* 返回值  ： 无
* BY CGH 20240710
*/
void SetTrainHeadSigId(const UINT16 wTrainId, const UINT16 wTrainSigId);

/*
* 功能描述： 获取指定列车前方信号机ID
* 参数说明： const UINT16 wTrainId, 列车ID
* 返回值  ： 列车前方信号机ID
* BY CGH 20240710
*/
UINT16 GetTrainHeadSigId(const UINT16 wTrainId);

/*
* 功能描述： 设置指定列车车身所处位置反向进路标志
* 参数说明： const UINT16 wTrainId, 列车ID
*			 const UINT8 chFlag 列车车身所处位置反向进路标志
* 返回值  ： 无
* BY CGH 20240711
*/
void SetTrainLocReverseRouteFlag(const UINT16 wTrainId, const UINT8 chFlag);

/*
* 功能描述： 获取指定列车车身所处位置反向进路标志
* 参数说明： const UINT16 wTrainId, 列车ID
* 返回值  ： 列车车身所处位置反向进路标志
* BY CGH 20240711
*/
UINT8 GetTrainLocReverseRouteFlag(const UINT16 wTrainId);

/*
* 功能描述： 设置指定Abl列车最小安全后端指向车头的运行方向
* 参数说明： const UINT16 wTrainId, 列车ID
*			 const UINT8 chTrainDir 列车运行方向
* 返回值 : 无
* by cgh 20240711
*/
void SetAblTrainDir(const UINT16 wTrainId, const UINT8 chTrainDir);

/*
* 功能描述： 设置指定Abl列车最大安全前端所处LinkId
* 参数说明： const UINT16 wTrainId, 列车ID
*			 const UINT8 wTrainHeadLinkId 列车最大安全前端Lk
* 返回值 : 无
* by cgh 20240711
*/
void SetAblTrainMaxHeadLink(const UINT16 wTrainId, const UINT16 wTrainHeadLinkId);

/*
* 功能描述： 设置指定Abl列车最大安全前端所处LinkId Off
* 参数说明： const UINT16 wTrainId, 列车ID
*			 const UINT8 dwTrainHeadOff 列车安全前端Off
* 返回值 : 无
* by cgh 20240711
*/
void SetAblTrainMaxHeadOffset(const UINT16 wTrainId, const UINT32 dwTrainHeadOff);

/*
* 功能描述： 设置指定Abl列车最小安全后端所处LinkId
* 参数说明： const UINT16 wTrainId, 列车ID
*			 const UINT8 wTrainTailLinkId 列车安全后端所处Lk
* 返回值 : 无
* by cgh 20240711
*/
void SetAblTrainMinTailLink(const UINT16 wTrainId, const UINT16 wTrainTailLinkId);

/*
* 功能描述： 设置指定Abl列车最小安全后端所处LinkId Off
* 参数说明： const UINT16 wTrainId, 列车ID
*			 const UINT8 dwTrainTailOff 列车安全后端Off
* 返回值 : 无
* by cgh 20240711
*/
void SetAblTrainMinTailOffset(const UINT16 wTrainId, const UINT32 dwTrainTailOff);

/*
* 功能描述： 获取指定Abl列车运行方向（最小安全后端）
* 参数说明： const UINT16 wTrainId, 列车ID
* 返回值  ： 0x55: 与逻辑方向同向
*			 0xAA: 与逻辑方向反向
*			 0xFF: 无效方向
* by cgh 20240711
*/
UINT8 GetAblTrainDir(const UINT16 wTrainId);
/*
* 功能描述： 获取指定Abl列车最大安全前端linkId
* 参数说明： const UINT16 wTrainId, 列车ID
* 返回值  ： 0: 获取数据失败
*			 linkID
* by cgh 20240711
*/
UINT16 GetAblTrainMaxHeadLink(const UINT16 wTrainId);

/*
* 功能描述： 获取指定Abl列车最小安全后端linkId
* 参数说明： const UINT16 wTrainId, 列车ID
* 返回值  ： 0: 获取数据失败
*			 linkID
* by cgh 20240711
*/
UINT16 GetAblTrainMinTailLink(const UINT16 wTrainId);

/*
* 功能描述： 获取指定Abl列车最大安全前端偏移量
* 参数说明： const UINT16 wTrainId, 列车ID
* 返回值  ： 0: 获取数据失败
*			 link偏移量
* by cgh 20240711
*/
UINT32 GetAblTrainMaxHeadOffset(const UINT16 wTrainId);

/*
* 功能描述： 获取指定Abl列车最小安全后偏移量
* 参数说明： const UINT16 wTrainId, 列车ID
* 返回值  ： 0: 获取数据失败
*			 link偏移量
* by cgh 20240711
*/
UINT32 GetAblTrainMinTailOffset(const UINT16 wTrainId);

/*
* 功能描述： 设置指定列车前车ID
* 参数说明： const UINT16 wTrainId, 列车ID
*			const UINT16 wHeadTrainId 前车ID
* 返回值  ： 无
* BY CGH 20240710
*/
void SetTrainHeadTrainId(const UINT16 wTrainId, const UINT16 wHeadTrainId);

/*
* 功能描述： 获取指定列车前车ID
* 参数说明： const UINT16 wTrainId, 列车ID
* 返回值  ： 列车前车ID
* BY CGH 20240710
*/
UINT16 GetTrainHeadTrainId(const UINT16 wTrainId);

/*
* 功能描述：检查列车是否存在CT包络
* 参数说明：const UINT16 wTrainId 列车ID（不带0x14）
* 返 回 值：CI_SUCCESS 1 存在CT包络
*           CI_ERROR 0 不存在CT包络
* Created By LQ 2024.07.25
*/
UINT8 CheckTrainRelCtEnvelope(const UINT16 wTrainId);

/*
* 功能描述： 设置指定ABL列车车头所在逻辑区段
* 参数说明： const UINT16 wTrainId, 列车ID
*			const UINT16 logsecId  逻辑区段ID
* 返回值  ： void
*/
void SetTrainAblMaxHeadLogId(const UINT16 wTrainId, const UINT16 logsecId);

/*
* 功能描述： 获取指定ABL列车车头所在逻辑区段
* 参数说明： const UINT16 wTrainId, 列车ID
* 返回值  ： 0：获取失败
*           >0：逻辑区段ID
*/
UINT16 GetTrainAblMaxHeadLogId(const UINT16 wTrainId);

/*
* 功能描述： 设置指定列车ABL列车脚下逻辑区段数据
* 参数说明： const UINT16 wTrainId, 列车ID
*           const UINT8 chAblRelXianSuNum	ABL列车脚下逻辑区段数量
*			const UINT16* chAblOcculogIdbuff	ABL列车脚下逻辑区段数组
* 返回值  ：无
*/
void SetTrainAblOcculogData(const UINT16 wTrainId, const UINT8 chAblOcculogNum, const UINT16* chAblOcculogIdbuff);


/*
* 功能描述： 获取指定ABL列车脚下逻辑区段数量
* 参数说明： const UINT16 wTrainId, 列车ID
* 返回值  ： 0：获取失败
*           >0：逻辑区段数量
*/
UINT8 GetTrainAblOcculogIdSum(const UINT16 wTrainId);

/*
* 功能描述： 获取指定ABL列车脚下逻辑区段ID数组
* 参数说明： const UINT16 wTrainId, 列车ID
* 返回值  ： NULL：获取失败
*           !=NULL：逻辑区段ID数组
*/
UINT16* GetTrainAblOcculogIdBuff(const UINT16 wTrainId);


/*
* 功能描述： 设置指定ABL列车最远端空闲所在逻辑区段
* 参数说明： const UINT16 wTrainId, 列车ID
*			const UINT16 logsecId  逻辑区段ID
* 返回值  ： void
*/
void SetTrainAblNoOccuFarLogId(const UINT16 wTrainId, const UINT16 logsecId);

/*
* 功能描述： 获取指定ABL列车最远端空闲所在逻辑区段
* 参数说明： const UINT16 wTrainId, 列车ID
* 返回值  ： 0：获取失败
*           >0：逻辑区段ID
*/
UINT16 GetTrainAblNoOccuFarLogId(const UINT16 wTrainId);

/*
* 功能描述： 设置指定列车虚拟前筛通过标志
* 参数说明： const UINT16 wTrainId, 列车ID
*			 const UINT8 chFlag 列车虚拟前筛通过标志
* 返回值  ： 无
* BY CGH 20240815
*/
void SetTrainVirHeadScreenPassFlag(const UINT16 wTrainId, const UINT8 chFlag);

/*
* 功能描述： 获取指定列车虚拟前筛通过标志
* 参数说明： const UINT16 wTrainId, 列车ID
* 返回值  ： 列车虚拟前筛通过标志
* BY CGH 20240815
*/
UINT8 GetTrainVirHeadScreenPassFlag(const UINT16 wTrainId);

/*
* 功能描述： 设置指定列车虚拟后筛通过标志
* 参数说明： const UINT16 wTrainId, 列车ID
*			 const UINT8 chFlag 列车虚拟后筛通过标志
* 返回值  ： 无
* BY CGH 20240815
*/
void SetTrainVirTailScreenPassFlag(const UINT16 wTrainId, const UINT8 chFlag);

/*
* 功能描述： 获取指定列车虚拟后筛通过标志
* 参数说明： const UINT16 wTrainId, 列车ID
* 返回值  ： 列车虚拟后筛通过标志
* BY CGH 20240815
*/
UINT8 GetTrainVirTailScreenPassFlag(const UINT16 wTrainId);

/*
* 功能描述： 设置指定列车驶入列检库所在LINK
* 参数说明： const UINT16 wTrainId, 列车ID
*			 const UINT16 列车驶入列检库所在LINK
* 返回值  ： 无
* BY CGH 20240815
*/
void SetTrainEnterLjkLinkId(const UINT16 wTrainId, const UINT16 wLinkId);

/*
* 功能描述： 获取指定列车驶入列检库所在LINK
* 参数说明： const UINT16 wTrainId, 列车ID
* 返回值  ： 列车驶入列检库所在LINK
* BY CGH 20240815
*/
UINT16 GetTrainEnterLjkLinkId(const UINT16 wTrainId);

/*
* 功能描述： 设置指定列车完全驶入列检库周期号
* 参数说明： const UINT16 wTrainId, 列车ID
*			 const UINT32 dwCycNum 列车完全驶入列检库周期号
* 返回值  ： 无
* BY CGH 20240815
*/
void SetTrainFullEnterLjkCycNum(const UINT16 wTrainId, const UINT32 dwCycNum);

/*
* 功能描述： 获取指定列车完全驶入列检库周期号
* 参数说明： const UINT16 wTrainId, 列车ID
* 返回值  ： 列车完全驶入列检库周期号
* BY CGH 20240815
*/
UINT32 GetTrainFullEnterLjkCycNum(const UINT16 wTrainId);

/*
* 功能描述：设置指定列车位置监督状态
* 参数说明：const UINT16 wTrainId 列车ID
*	 		const UINT8 cMonitorState 监督状态
* 返 回 值：无
* Created By LQ 2024.08.15
*/
void SetTrainPosMonitorState(const UINT16 wTrainId, const UINT8 cMonitorState);

/*
* 功能描述：获取指定列车位置监督状态
* 参数说明：const UINT16 wTrainId 列车ID
* 返 回 值：0x55 位置监督状态无效
*           0xAA 位置监督状态有效
*           0xCC 位置监督不一致
* Created By LQ 2024.08.15
*/
UINT8 GetTrainPosMonitorState(const UINT16 wTrainId);

/*
* 功能描述：设置指定列车位置监督所处link
* 参数说明：const UINT16 wTrainId 列车ID
*	 		const UINT16 wLinkId link ID
* 返 回 值：无
* Created By LQ 2024.08.15
*/
void SetTrainPosMonitorInLink(const UINT16 wTrainId, const UINT16 wLinkId);

/*
* 功能描述：获取指定列车位置监督所处link
* 参数说明：const UINT16 wTrainId 列车ID
* 返 回 值：1300 获取失败
*           其它 位置监督所处link
* Created By LQ 2024.08.15
*/
UINT16 GetTrainPosMonitorInLink(const UINT16 wTrainId);

/*
* 功能描述：列车位置监督处理
* 参数说明：无
* 返 回 值：无
* Created By LQ 2024.08.15
*/
void TrainPosMonitorProc(void);

/*
* 功能描述：列车位置监督通用条件检查
* 参数说明：const UINT16 wTrainId 列车ID
* 返 回 值：0 失败
*           1 成功
* Created By LQ 2024.08.18
*/
UINT8 TrainPosMonitorCommonCheck(const UINT16 wTrainId);

/*
* 功能描述：列车位置监督起始条件检查
* 参数说明：const UINT16 wTrainId 列车ID
* 返 回 值：0 失败
*           1 成功
* Created By LQ 2024.08.21
*/
UINT8 TrainPosMonitorBeginCheck(const UINT16 wTrainId);

/*
* 功能描述：列车位置监督状态检查（正线或试车线）
* 参数说明：const UINT16 wTrainId 列车ID
*           UINT16* pMonitorLinkId 监督有效时列车所处link（出参）
*           UINT8* pMonitorFailState 监督检查失败后需要设置的状态（出参）
* 返 回 值：0 失败
*           1 成功
* Created By LQ 2024.08.21
*/
UINT8 ZXorSCXTrainPosMonitorCheck(const UINT16 wTrainId, UINT16* pMonitorLinkId, UINT8* pMonitorFailState);

/*
* 功能描述：列车位置监督状态占用检查（车辆段BG1）
* 参数说明：const UINT16 wBGLinkId  BG link ID
* 返 回 值：0 失败
*           1 成功
* Created By LQ 2024.08.18
*/
UINT8 BGTrainPosMonitorOccCheck(const UINT16 wBGLinkId);

/*
* 功能描述：检查AG列车靠近BG端的虚拟筛选标志是否有效
* 参数说明：const UINT16 wAGAxleSecId AG计轴区段ID
*           const UINT16 wAGLinkId AG link ID
*           const UINT16 wBGLinkId  BG link ID
* 返 回 值：0 失败
*           1 成功
* Created By LQ 2024.08.18
*/
UINT8 CheckAGToBGTrainVirScreen(const UINT16 wAGAxleSecId, const UINT16 wAGLinkId, const UINT16 wBGLinkId);

/*
* 功能描述：列车位置监督状态占用检查（车辆段AG）
* 参数说明：const UINT16 wAGLinkId  AG link ID
* 返 回 值：0 失败
*           1 成功
* Created By LQ 2024.08.18
*/
UINT8 AGTrainPosMonitorOccCheck(const UINT16 wAGLinkId);

/*
* 功能描述：列车位置监督状态检查（车辆段）
* 参数说明：const UINT16 wTrainId 列车ID
*           UINT16* pMonitorLinkId 监督有效时列车所处link（出参）
*           UINT8* pMonitorFailState 监督检查失败后需要设置的状态（出参）
* 返 回 值：0 失败
*           1 成功
* Created By LQ 2024.08.21
*/
UINT8 CLDTrainPosMonitorCheck(const UINT16 wTrainId, UINT16* pMonitorLinkId, UINT8* pMonitorFailState);

/*
* 功能描述：休眠唤醒轨相邻区段占用检查（车辆段）
* 参数说明：const UINT16 wSWLinkId  休眠唤醒轨linkID
* 返 回 值：0 失败
*           1 成功
* Created By LQ 2024.08.19
*/
UINT8 CLDSWAdjacentSecOccCheck(const UINT16 wSWLinkId);
/*
* 功能描述：列车大前小后物理区段ABL标志更新
* 参数说明：无
* 返 回 值：无
* Created By fan 2024.08.20
*/
void TrainPhyAblTagUpdate(void);

/*
* 功能描述：BG远程筛选AG UT占用检查
* 参数说明：const UINT16 wLinkId  BGlinkID
* 返 回 值：0 失败
*           1 成功
* by cgh 20240903
*/
UINT8 BGAtsScreenAgUtCheck(const UINT16 wLinkId);

/*
* 功能描述： 设置指定列车开始飞车起始周期
* 参数说明： const UINT16 wTrainId, 列车ID
*			 const UINT32 dwCycNum 列车开始飞车起始周期
* 返回值  ： 无
* BY fan 20241017
*/
void SetTrainStartFlyProtectCycNum(const UINT16 wTrainId, const UINT32 dwCycNum);

/*
* 功能描述： 设置指定列车开始飞车起始周期
* 参数说明： const UINT16 wTrainId, 列车ID
* 返回值  ： UINT32 列车开始飞车起始周期
* BY fan 20241017
*/
UINT32 GetTrainStartFlyProtectCycNum(const UINT16 wTrainId);

/**
* 功能描述： 添加飞车数据
* 参数说明：UINT16 wTrainID  UINT16 envelopeId包络id
* 返回值  ： 无
* BY fan 20241018
*/
void elm_AddFlyingTrain(UINT16 wTrainID, UINT16 envelopeId);

/*
* 功能描述： 获取飞车数量
* 参数说明：无
* 返回值  ： UINT8 flyProtectTrainNum
* BY fan 20241018
*/
UINT8  GetFlyProtectNum(void);

/*
* 功能描述： 获取飞车数据
* 参数说明：UINT8 chIndex 索引
* 返回值  ： TrainFlyProtectStru*  gFlyTrainData
* BY fan 20241018
*/
TrainFlyProtectStru * GetFlyProtectData(UINT8 chIndex);

/**
* @brief 获取飞车宕机跟随数据
* @param UINT8 *pDataBuff 跟随数据存储缓冲区
* @param UINT32 curIndex 当前索引
* @return 计算后的索引
*/
UINT32 GeFlyProtectTransferData(OUT UINT8 *pDataBuff, IN UINT32 curIndex);

/**
* @brief 设置飞车宕机跟随数据
* @param UINT8 *pDataBuff 跟随数据存储缓冲区
* @param UINT32 curIndex 当前索引
* @return 计算后的索引
*/
UINT32 SeFlyProtectTransferData(IN UINT8 *pDataBuff, IN UINT32 curIndex);

/*
* 功能描述： 设置指定列车飞车防护起始周期
* 参数说明： const UINT16 wTrainId, 列车ID
*			 const UINT32 dwCycNum 列车开始飞车起始周期
* 返回值  ： 无
* by cgh 20241028
*/
void SetTrainFlyProStartCycNum(const UINT16 wTrainId, const UINT32 dwCycNum);

/*
* 功能描述：设置指定列车区间疏散命令状态
* 参数说明：const UINT16 wTrainId 列车ID
*	 		const UINT8 chEaCmdState 区间疏散命令状态
* 返 回 值：无
* by cgh 20250310
*/
void SetTrainEaCmdState(const UINT16 wTrainId, const UINT8 chEaCmdState);

/*
* 功能描述：获取指定列车区间疏散命令状态
* 参数说明：const UINT16 wTrainId 列车ID
* 返 回 值：0x55 区间疏散命令状态有效
*           0xAA 区间疏散命令状态有效
* by cgh 20250310
*/
UINT8 GetTrainEaCmdState(const UINT16 wTrainId);

/*
* 功能描述：试车线非试车期间清除飞车信息
* 参数说明：无
* 返 回 值：无
* Created By LQ 2025.04.02
*/
void ScxClearFlyProtectInfo(void);

/*
* 功能描述：AG列车驶出AG检查
* 参数说明：const UINT16 wLinkId  link ID
* 返 回 值：CI_ERROR  不是AG列车正常驶出AG
*           CI_SUCCESS 是AG列车正常驶出AG
* BY CGH 202050718
*/
UINT8 AgTrainLeaveAgCheck(const UINT16 wLinkId);
/*
* 功能描述：设置指定列车向后跳跃允许状态
* 参数说明：const UINT16 wTrainId 列车ID
*	 		const UINT8 chJumpBackReplyState 向后跳跃允许状态
* 返 回 值：无
* by fan 20250725
*/
void SetTrainJumpBackReplyState(const UINT16 wTrainId, const UINT8 chJumpBackReplyState);

/*
* 功能描述：获取指定列车向后跳跃允许状态
* 参数说明：const UINT16 wTrainId 列车ID
* 返 回 值：0x55 允许 0xAA 不允许 0x00 无申请/默认值
* by fan 20250725
*/
UINT8 GetTrainJumpBackReplyState(const UINT16 wTrainId);

/*
* 功能描述：设置指定列车向后跳跃申请状态
* 参数说明：const UINT16 wTrainId 列车ID
*	 		const UINT8 chJumpBackApplyState 向后跳跃允许状态
* 返 回 值：无
* by fan 20250725
*/
void SetTrainJumpBackApplyState(const UINT16 wTrainId, const UINT8 chJumpBackApplyState);

/*
* 功能描述：获取指定列车向后跳跃申请状态
* 参数说明：const UINT16 wTrainId 列车ID
* 返 回 值：0x55 申请 0xAA 未申请
* by fan 20250725
*/
UINT8 GetTrainJumpBackApplyState(const UINT16 wTrainId);

/*
* 功能描述：设置指定列车向后跳跃申请序列号
* 参数说明：const UINT16 wTrainId 列车ID
*	 		const UINT32 dwJumpBackSN向后跳跃申请序列号
* 返 回 值：无
* by fan 20250725
*/
void SetTrainJumpBackApplySN(const UINT16 wTrainId, const UINT32 dwJumpBackSN);

/*
* 功能描述：获取指定列车向后跳跃申请序列号
* 参数说明：const UINT16 wTrainId 列车ID
* 返 回 值：UINT32 申请序列号
* by fan 20250725
*/
UINT32 GetTrainJumpBackApplySN(const UINT16 wTrainId);

/*
* 功能描述： 清除列车安全车头方向
* 参数说明： const UINT16 wTrainId, 列车ID
* 返回值  ：void
* by cgh 20250818
*/
void ClearTrainSafeHeadDir(const UINT16 wTrainId);

/*
* 功能描述： 清除列车安全车尾方向
* 参数说明： const UINT16 wTrainId, 列车ID
* 返回值  ：void
* by cgh 20250818
*/
void ClearTrainSafeTailDir(const UINT16 wTrainId);

/*
* 功能描述： 检查列车是否完全在同一休眠唤醒轨
* 参数说明： const UINT16 wTrainId, 列车ID
* 返回值  ： CI_ERROR: 列车不完全在同一休眠唤醒轨
*		     CI_SUCCESS: 列车完全在同一休眠唤醒轨
* by cgh 20250915
*/
UINT8 CheckTrainIsSwTrack(const UINT16 wTrainId);

/*
* 功能描述： 检查列车是否为可追踪UT场景
* 参数说明： const UINT16 wEnvelopeID, 包络ID
* 返回值  ： CI_ERROR: 否
*		     CI_SUCCESS: 是
* by cgh 20250915
*/
UINT8 CheckTrainIsFollowUt(const UINT16 wEnvelopeID);

/*
* 功能描述：获取使用NVRAM且位置监督无效的飞车ID
* 参数说明：UINT8 chIndex 索引
* 返 回 值：UINT16* gNvramFlyTrainId 使用NVRAM且位置监督无效的飞车ID
* Created By LQ 2025.09.15
*/
UINT16* GetNvramFlyProtectId(void);

/*
* 功能描述：获取使用NVRAM且位置监督无效的飞车数量
* 参数说明：无
* 返 回 值：UINT8 gNvramFlyTrainCnt 使用NVRAM且位置监督无效的飞车数量
* Created By LQ 2025.09.15
*/
UINT8  GetNvramFlyProtectNum(void);

/**
* 功能描述：添加使用NVRAM且位置监督无效的飞车数据
* 参数说明：UINT16 wTrainID 列车ID
* 返 回 值：无
* Created By LQ 2025.09.15
*/
void AddNvramFlyingTrain(UINT16 wTrainID);

/**
* 功能描述：清除使用NVRAM且位置监督无效的飞车数据
* 参数说明：无
* 返 回 值：无
* Created By LQ 2025.09.15
*/
void ClearNvramFlyingTrain(void);

#ifdef __cplusplus
}
#endif
#endif
