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

#ifndef _LOGIC_SECTION_DATA_MANAGE_H_
#define _LOGIC_SECTION_DATA_MANAGE_H_


#include "SectionDefine.h"
#include "LogicSectionConfigDataManage.h"
#include "CommonTypes.h"
#include "../DataManage/DeviceDataManage.h"



#ifdef __cplusplus
extern "C" {
#endif

	/*add by qw.liu 2022-02-23 增加记录列车资源状态*/
typedef struct S_LogicTrainResStruct
{
	UINT16 wTrainId;			/*列车ID*/
	UINT8  chTrainApplyState;   /*列车申请状态*/
	UINT8  chLogicResUsable;	/*列车资源可用状态	0x55 可用 0xaa 不可用*/
	UINT8  chLogicReturnState;	/*折返逻辑区段标志	0x55 折返 0xaa 非折返*/
	UINT8  chLogicUnlockState;	/*列车申请释放标志  0x55 申请 0xaa 未申请*/
	UINT8 chTrainLevel; /*列车级别 本联锁列车默认0 相邻联锁VBTC 为0x03*/
	UINT32 dwRcvUnlockCmdCyc;	/*本联锁接收到解锁命令周期*/
}LogicTrainResStruct;


/*add by cgh 2023-10-11*/
typedef struct S_LogSecLockBelLogRouteStruct
{
	UINT16 wLogSecLockBelLogRouteId;			/*逻辑区段锁闭所属逻辑进路ID*/
	UINT8  chLogSecLockBelLogRouteState;        /*逻辑区段锁闭所属逻辑进路状态*/
	UINT8  wLogSecLockBelLogRouteDir;           /*逻辑区段被逻辑进路锁闭的方向*/
	
}LogSecLockBelLogRouteStruct;

typedef struct S_LogicSectionDataStruct
{
    UINT16              LogicSectionId;									/*逻辑区段ID (初始化字段)*/
	UINT16              BelongAxisSecId;								/*所属计轴区段ID (初始化字段)*/
	UINT8               PreOccupyState;									/*逻辑区段之前占用状态(空闲/占用) (动态字段)*/
	UINT8               CurOccupyState;									/*逻辑区段当前占用状态(空闲/占用) (动态字段)*/
	UINT8               LinShiXianSuSetFlag;							/*逻辑区段临时限速设置状态(无效/设置/未设置)(动态字段)*/	
	UINT8               chLinShiXianSuSetSpeed;							/*逻辑区段临时限速设置速度值(动态字段)*/
	UINT8               zcMaskData;										/* 接收ZC码位状态,bit0:UT bit1:CT */
	UINT8               maskCount;										/* 逻辑区段占用的需要两个码位，设置一个码位，则累加1次，到2次 */
    UINT8               OccupyState;									/*逻辑区段初始化状态（空闲/占用）（动态字段）*/
	UINT8               TXOccupyState;                                  /*逻辑区段通信车占用初始化状态（空闲/占用）（动态字段）*/       /*TSCI合并添加 20221208-lc*/
	UINT8				LogLockState;								    /*逻辑区段锁闭状态*/
	UINT8				LogLockDir;									    /*锁闭方向*/
	UINT16				LogLockBelongRoute;							    /*逻辑区段锁闭所属进路*/
	UINT32				LogUnlockStartCycNum;						    /*逻辑区段延时解锁起始周期号*/
	UINT16				wPLockBelongRouteId;							/*防护锁闭的进路编号*/
	UINT16 OtherCiPLockBelongRouteId;                                   /*其它控区发送的区段防护锁闭所属进路ID (动态字段)*/
	UINT8               chTrainInfoSum;									/*add by qw.liu 2022-02-23 增加列车信息数量*/
	LogicTrainResStruct szTrainResData[LOGIC_SECTION_RES_SUM_MAX];      /*add by qw.liu 2022-02-23 增加列车资源信息结构体*/

	UINT8 cResReqOtherCIId;												/*发送资源请求的其他联锁ID*/
	UINT16 wResReqTrainId;												/*发送资源请求的列车ID*/
	UINT8 chResShareFlag;												/*公共资源标志  0x55 公共资源 0xAA非公共资源*/
	UINT16 JumpLockTrainId;							/*申请跳跃锁闭命令的列车ID（动态字段）*/
	UINT8 LogJumpLockState;							/*逻辑区段跳跃锁闭状态 0x55 未锁闭，0xAA 锁闭（动态字段）*/
	UINT8 LogJumpLockDelayUnlockFlag;				/*逻辑区段跳跃锁闭延时解锁设置标志 0x55 未设置，0xaa 设置（动态字段）*/
	UINT32 LogSecJumpDelayUnlockStartCyc;		/*逻辑区段跳跃锁闭延时解锁起始周期号 (动态字段)*/
	UINT8 LogSecJumpLockPermFlag;					/*逻辑区段跳跃锁闭允许标志 0x55 允许，0xaa 禁止 (动态字段)*/
	UINT8 chXianSuRemoveState;												/*限速切除状态*/
	UINT8 chArbState;								/*逻辑区段ARB状态*/
	UINT32 LogErrlockStartCycNum;						    /*逻辑区段延时设置故障锁闭起始周期号*/
	UINT8  chLogicProResUsable;	                   /*逻辑区段防护锁闭资源可用状态	0x55 可用 0xaa 不可用*/
	UINT8  chLogicSpksFLockState;	                  /*逻辑区段被SPKS封锁状态	0x55 未封锁 0xaa 封锁*/
	UINT8 chLogSecLockBelLogRouteSum;                  /*逻辑区段锁闭所属逻辑进路数量*//* add 20231010 cgh*/
	LogSecLockBelLogRouteStruct szLogSecLockBelLogRouteData[LOGSEC_RELATE_ROUTE_SUM_MAX];/*逻辑区段锁闭所属逻辑进路数据*//* add 20231010 cgh*/

	UINT8 LogSecLogLockState;								    /*逻辑区段逻辑锁闭状态*//* add 20231012 cgh*/
	UINT8 LogSecLogLockDir;								    /*逻辑区段逻辑锁闭方向*//* add 20231013 cgh*/

	UINT8 chAblRelLogSecUsableFlag;			/*ABL列车关联逻辑区段允许使用标志*/
	UINT8 cRouteLeaveLogFlag;         /*第一离去区段ABL列车检查是否通过（相邻联锁发送发）*/
} LogicSectionDataStruct;

/* 临时限速结构体 */
typedef struct S_TsrDataStruct
{
	UINT8 cSpeed;/* 限速值：公里每小时 */
	UINT8 cLogSecSum;/* 逻辑区段数量 */
	UINT16 szLogSecId[TSR_SEC_MAX_SUM];/* 逻辑区段ID */
} TsrDataStruct;

/*******************************全局变量声明*******************************/
extern LogicSectionDataStruct LogicSectionDataStru[LOGIC_SECTION_SUM_MAX];   /*定义逻辑区段数据结构体*/
extern UINT8 WholeLineLinShiXianSuFlag;      /*全线临时限速标志，默认无*/
/*
* 功能描述： 获取逻辑区段数据
* 参数说明： void    
* 返回值  ： 0: 获取数据失败
*			>0: 逻辑当前总数
*/
LogicSectionDataStruct* GetLogicSecData(void);

/*
* 功能描述： 获取指定ID逻辑区段之前占用状态
* 参数说明： const UINT16 logSectionId, 逻辑区段ID    
* 返回值  ： 0: 获取数据失败
*			>0: 之前占用状态      
*/
UINT8 GetLogSecPreOccupyState(const UINT16 logSectionId);

/*
* 功能描述： 获取指定ID逻辑区段当前占用状态
* 参数说明： const UINT16 logSectionId, 逻辑区段ID    
* 返回值  ： 0: 获取数据失败
*			>0: 当前占用状态      
*/
UINT8 GetLogSecCurOccupyState(const UINT16 logSectionId);

/*
* 功能描述： 获取指定ID逻辑区段当前CT或UT占用状态
* 参数说明： const UINT16 logSectionId, 逻辑区段ID    
* 返回值  ： 0: 获取数据失败
*			>0: 当前占用状态      
*/
UINT8 GetLogSecCurCtOrUtOccupyState(const UINT16 logSectionId);

/*
* 功能描述： 获取指定ID逻辑区段临时限速设置状态
* 参数说明： const UINT16 logSectionId, 逻辑区段ID
* 返回值  ： 0: 获取数据失败
*			>0: 当前临时限速设置状态   
*/
UINT8 GetLogSecLinShiXianSuSetState(const UINT16 logSectionId);

/*
* 功能描述： 设置指定ID逻辑区段当前占用状态
* 参数说明： const UINT16 logSectionId, 逻辑区段ID
*			 const UINT8 curOccupyState, 当前占用状态
* 返回值  ： 无
*			       
*/
void SetLogSecCurOccupyState(const UINT16 logSectionId, const UINT8 curOccupyState);

/*
* 功能描述： 设置指定ID逻辑区段之前占用状态
* 参数说明： const UINT16 logSectionId, 逻辑区段ID
*			 const UINT8 curOccupyState, 之前占用状态
* 返回值  ： 无
*			      
*/
void SetLogSecPreOccupyState(const UINT16 logSectionId, const UINT8 curOccupyState);


/*
* 功能描述： 设置指定ID逻辑区段临时限速设置状态
* 参数说明： const UINT16 logSectionId, 逻辑区段ID
*			 const UINT8 linShiXianSuSetState, 临时限速设置状态
* 返回值  ： 无
*			        
*/
void SetLogSecLinShiXianSuState(const UINT16 logSectionId, const UINT8 linShiXianSuSetState);

/*
* 功能描述： 设置指定码位对应的逻辑区段占用状态
* 参数说明： const UINT16 logSectionId, 逻辑区段ID
*			 const UINT8 occupyStateMask, 当前占用码位
* 返回值  ： 无
*			        
*/
void SetLogSecMask(const UINT16 logSectionId, const UINT8 occupyStateMask);


/*
* 功能描述： 获取指定逻辑区段占用状态
* 参数说明： const UINT16 logSectionId, 逻辑区段ID
*			 
* 返回值  ： 0: 设置失败
*			 1: 设置成功      
*/
UINT8 GetLogSecOccupyState(const UINT16 logSectionId);
/*
* 功能描述： 设置指定ID逻辑区段占用状态
* 参数说明： const UINT16 logSectionId, 逻辑区段ID
*			 const UINT8 curOccupyState, 当前占用状态
* 返回值  ： 无
*			     
*/
void SetLogSecOccupyState(const UINT16 logSectionId, const UINT8 curOccupyState);

/*
* 功能描述： 设置指定ID逻辑区段通信车（有位置RM车）占用状态
* 参数说明： const UINT16 logSectionId, 逻辑区段ID
*			 const UINT8 curOccupyState, 当前占用状态
* 返回值  ： 无
*备注：增加逻辑区段通信车（有位置RM车）占用状态设置函数，A by yt 2022年5月19日
*/
void SetLogSecTXOccupyState(const UINT16 logSectionId, const UINT8 curOccupyState);

/*
* 功能描述： 获取指定ID逻辑区段通信车占用状态
* 参数说明： const UINT16 logSectionId, 逻辑区段ID
*
* 返回值  ： 0: 设置失败
*			 0x55：无车占用
*			 0xaa：通信车占用
*/
UINT8 GetLogSecTXOccupyState(const UINT16 logSectionId);

/*
* 功能描述： 获取全线临时限速标志
* 参数说明： 无
*			 
* 返回值  ： 全线临时限速标志    
*/
UINT8 GetWholeLineLinShiXianSuFlag(void);

/*
* 功能描述： 设置全线临时限速标志
* 参数说明： UINT8 flag,限速标志
*			 
* 返回值  ： 无
*			        
*/
void SetWholeLineLinShiXianSuFlag(UINT8 flag);

/*
* 功能描述： 获取指定逻辑区段锁闭状态
* 参数说明： const UINT16 logSectionId, 逻辑区段ID
*			 
* 返回值  ： 0: 获取失败
*			 1: 逻辑区段锁闭状态     
*/
UINT8 GetLogSecLockState(const UINT16 logSectionId);


/*
* 功能描述： 获取指定逻辑区段锁闭方向
* 参数说明： const UINT16 logSectionId, 逻辑区段ID
*			 
* 返回值  ： 0: 获取失败
*			 >0: 逻辑区段锁闭方向     
*/
UINT8 GetLogSecLockDir(const UINT16 logSectionId);

/*
* 功能描述： 设置指定逻辑区段锁闭状态
* 参数说明： const UINT16 logSectionId, 逻辑区段ID
*			 
* 返回值  ： 无
*			 
*/
void SetLogSecLockState(const UINT16 logSectionId,const UINT8 lockState,const UINT16 routeId,const UINT8 lockDir);

/*
* 功能描述： 获取指定逻辑区段锁闭所属进路
* 参数说明： const UINT16 logSectionId, 逻辑区段ID
*
* 返回值  ： 0: 获取失败
*			 >0: 逻辑区段锁闭所属进路
*/
UINT16 GetLogSecLockBelongRoute(const UINT16 logSectionId);

/*
* 功能描述： 获取指定ID逻辑区段之前CT/UT占用状态
* 参数说明： const UINT16 logSectionId, 逻辑区段ID    
* 返回值  ： 0: 获取数据失败
*			>0: 之前CT/UT占用状态      
*/
UINT8 GetLogSecPreCtOrUtOccupyState(const UINT16 logSectionId);

/*
* 功能描述： 设置指定逻辑区段延时解锁起始周期号
* 参数说明： const UINT16 logSectionId, 逻辑区段ID
*			 const UINT32 startCycNum 起始周期号
* 返回值  ： 无
*			   
*/
void SetLogUnlockStartCycNum(const UINT16 logSectionId, const UINT32 startCycNum);

/*
* 功能描述： 设置非本联锁指定ID逻辑区段锁闭状态
* 参数说明： const UINT16 logSectionId, 逻辑区段ID
*			 const UINT8 lockState, 锁闭状态
*            const UINT16 routeId, 进路ID
*            const UINT8 lockDirection, 锁闭方向
* 返回值  ： 无
*			       
*/
void SetLogSecLockStateOtherCI(const UINT16 logSectionId, const UINT8 lockState, const UINT16 routeId, const UINT8 lockDirection);

/*
* 功能描述： 获取指定逻辑区资源列车信息
* 参数说明： const UINT16 logSectionId, 逻辑区段ID
*
* 返回值  ： NULL:  获取失败
*			 !NULL: 逻辑区资源列车信息
*/
LogicTrainResStruct *GetLogSecTrainInfoById(const UINT16 wLogSectionId, const UINT16 wTrnId);

/*
* 功能描述： 获取指定逻辑区所有资源列车信息
* 参数说明： const UINT16 logSectionId, 逻辑区段ID
*
* 返回值  ： NULL:  获取失败
*			 !NULL: 逻辑区资源列车信息
*/
LogicTrainResStruct *GetLogSecTrainInfo(const UINT16 wLogSectionId);

/*
* 功能描述： 移出指定逻辑区资源列车信息
* 参数说明： const UINT16 logSectionId, 逻辑区段ID
*
* 返回值  ： 无
*
*/
void RemoveLogSecTrainInfoById(const UINT16 wLogSectionId, const UINT16 wTrnId);

/*
* 功能描述： 获取指定逻辑区资源列车数量
* 参数说明： const UINT16 logSectionId, 逻辑区段ID
*
* 返回值  ： 资源列车数量
*/
UINT8 GetLogSecTrainInfoSum(const UINT16 wLogSectionId);

/*
* 功能描述： 获取是否发送列车逻辑区段锁闭标志
* 参数说明： const UINT16 logSectionId, 逻辑区段ID
*
* 返回值  ： CI_ERROR	：不发送
*		  ： CI_SUCCESS ：发  送
*/
UINT8 GetLogSecTrainLockSendFlag(const UINT16 wLogSectionId, const UINT16 wTrnId);

/*
* 功能描述： 获取是列车逻辑区段折返状态
* 参数说明： const UINT16 logSectionId, 逻辑区段ID
*
* 返回值  ： CI_ERROR	：错误
*		  ： CI_SUCCESS ：发  送
*/
UINT8 GetLogSecTrainReturnState(const UINT16 wLogSectionId, const UINT16 wTrnId);

/*
* 功能描述： 设置是列车逻辑区段折返状态
* 参数说明： const UINT16 logSectionId, 逻辑区段ID
*
* 返回值  ： CI_ERROR	：错误
*		  ： CI_SUCCESS ：发  送
*/
void SetLogSecTrainReturnState(const UINT16 wLogSectionId, const UINT16 wTrnId, const UINT8 chResReturnState);

/*
* 功能描述： 列车申请逻辑区段请求
* 参数说明： const UINT16 logSectionId, 逻辑区段ID
*
* 返回值  ： VOID
* 创    建： qw.liu 2022-03-03
*/
void AddLogSecTrainRes(const UINT16 wLogSectionId, const UINT16 wTrnId);

/*
* 功能描述： 相邻联锁列车申请逻辑区段请求
* 参数说明： const UINT16 logSectionId, 逻辑区段ID,
*					const UINT16 wTrnId 申请列车ID
* 返回值  ： VOID
*/
void AddLogSecTrainResFromCI(const UINT16 wLogSectionId, const UINT16 wTrnId);
/*
* 功能描述： 设置逻辑进路逻辑区段资源的列车ID
* 参数说明： const UINT16 wLogRouteId, 逻辑进路ID
*            const UINT16 wTrainId 列车编号
* 返回值  ： 无
*/
void SetLogRouteLogSecResTrainId(const UINT16 wLogRouteId, const UINT16 wTrainId);


/*
* 功能描述： 其他TIOC列车申请逻辑区段请求
* 参数说明： const UINT16 logSectionId, 逻辑区段ID
*			 const UINT8 cTrainSum，列车数量
*	         UINT16* pTrainId，列车编号
* 返回值  ： VOID
* 创    建： qw.liu 2022-03-03
*/
void AddLogSecOtherTIOCTrainRes(const UINT16 wLogSectionId, const UINT8 cTrainSum, UINT16* pTrainId);
#if 1
/*
* 功能描述： 删除指定逻辑区段列车资源
* 参数说明： UINT16 wLogSecId,   逻辑区段ID
*			 UINT16 wTrainId  删除列车资源下标
* 返回值  ：
*/
void RemoveLgcSecResTrain(UINT16 wLogSecId, UINT16 wTrainId);
#endif
/*
* 功能描述： 列车申请逻辑区段请求
* 参数说明： const UINT16 logSectionId, 逻辑区段ID
*
* 返回值  ： VOID
*/
void SetLogSecTrainLockApply(const UINT16 wLogSectionId, const UINT16 wTrnId);

/*
* 功能描述： 获取指定列车逻辑区段锁闭关联逻辑进路ID
* 参数说明： const UINT16 wLogSectionId, 逻辑区段ID
*			 const UINT16 wTrnId		申请列车ID
* 返回值  ：=0，不存在该车逻辑进路；>0 该车逻辑进路ID
*/
UINT16 GetLogSecBelongLogRouteId(const UINT16 wLogSectionId, const UINT16 wTrnId);
/*
* 功能描述： 逻辑进路列车申请逻辑区段请求
* 参数说明： const UINT16 wLogSectionId, 逻辑区段ID
*			 const UINT16 wTrnId		申请列车ID
* 返回值  ： VOID
*/
void SetLogRouteLogSecTrainLockApply(const UINT16 wLogSectionId, const UINT16 wTrnId);
#if 0
/*
* 功能描述：  列车释放逻辑区段资源请求
* 参数说明： const UINT16 logSectionId, 逻辑区段ID
*			 const UINT16 wTrnId，列车ID
* 返回值  ： VOID
*/
void LogSecTrainLockRelease(const UINT16 wLogSectionId, const UINT16 wTrnId);
#endif

/*
* 功能描述：设置指定逻辑区段防护锁闭所属进路ID
* 参数说明：const UINT16 wLogSectionId 逻辑区段ID
*           const UINT16 wPLockRouteId 防护锁闭所属进路ID
* 返 回 值：无
* Created By LQ 2024.06.11
*/
void SetLogSecPLockRouteId(const UINT16 wLogSectionId, const UINT16 wPLockRouteId);

/*
* 功能描述： 获取指定逻辑防护区段锁闭所属进路
* 参数说明： const UINT16 logSectionId, 逻辑区段ID
*
* 返回值  ： 0: 获取失败
*			 >0: 逻辑区段锁闭所属进路
*/
UINT16 GetLogSecPLockRouteId(const UINT16 logSectionId);

/*
* 功能描述： 列车逻辑区段可用状态
* 参数说明： const UINT16 wLogSectionId, 逻辑区段ID
*			 const UINT16 wTrnId		 列车ID
*			 const UINT8  chUseState	 状态可用
* 返回值  ： VOID
*/
void SetLogSecTrainUseState(const UINT16 wLogSectionId, const UINT16 wTrnId, const UINT8 chUseState);

/*
* 功能描述： 获取指定逻辑区资源列车信息
* 参数说明： const UINT16 logSectionId, 逻辑区段ID
*
* 返回值  ： NULL:  获取失败
*			 !NULL: 逻辑区资源列车信息
*/
UINT16 GetLogSecTrainIdByIndex(const UINT16 wLogSectionId, const UINT8 chIndex);

/*
* 功能描述： 获取列车逻辑区段申请状态
* 参数说明： const UINT16 wLogSectionId, 逻辑区段ID
*			 const UINT16 wTrnId		 列车ID
* 返回值  ： 0失败 0x55:已申请 0xaa:未申请
*/
UINT8 GetLogSecTrainApply(const UINT16 wLogSectionId, const UINT16 wTrnId);

/*
* 功能描述： 列车逻辑区段释放状态
* 参数说明： const UINT16 wLogSectionId, 逻辑区段ID
*			 const UINT16 wTrnId		 列车ID
*			 const UINT8  chUseState	 状态可用
* 			 const UINT8 chTrainlevel 列车级别：本联锁解锁命令：0  相邻联锁设置VBTV级为0X03 其他设置UR 0X01
* 返回值  ： VOID
*/
void SetLogSecTrainRelease(const UINT16 wLogSectionId, const UINT16 wTrnId, const UINT8 chTrainlevel);


/*
* 功能描述： 获取列车逻辑区段释放状态
* 参数说明： const UINT16 wLogSectionId, 逻辑区段ID
*			 const UINT16 wTrnId		 列车ID
* 返回值  ： 0失败 0x55:已申请 0xaa:未申请
*/
UINT8 GetLogSecTrainRelease(const UINT16 wLogSectionId, const UINT16 wTrnId);
/*
* 功能描述： 获取逻辑区段资源释放状态（有列车申请过，则返回已申请）
* 参数说明： const UINT16 wLogSectionId, 逻辑区段ID
* 返回值  ： 0失败 0x55:已申请 0xaa:未申请
*/
UINT8 GetLogSecReleaseFlag(const UINT16 wLogSectionId);

/*
* 功能描述： 获取逻辑区段释放列车级别
* 参数说明： const UINT16 wLogSectionId, 逻辑区段ID
*			 const UINT16 wTrnId		 列车ID
* 返回值  ： 0本联锁列车  0x03:相邻联锁VBTC 0x01:相邻联锁非VBTC
*/
UINT8 GetLogSecReleaseTrainLevel(const UINT16 wLogSectionId, const UINT16 wTrnId);

/*
* 功能描述： 清空逻辑区段列车资源信息
* 参数说明： UINT16 wLogSecId,   逻辑区段ID
* 返回值  ：
* 修改：保留逻辑进路的列车信息
*/
void ClearLgcSecResTrain(UINT16 wLogSecId);

/*
* 功能描述： 获取逻辑区段发送资源请求的其他联锁ID
* 参数说明： const UINT16 logSectionId, 逻辑区段ID
*
* 返回值  ： 0u	：错误
*		  ： 其他 ：联锁ID
*/
UINT8 GetLogSecResReqOtherCIId(const UINT16 wLogSectionId);
/*
* 功能描述： 设置逻辑区段发送资源请求的其他联锁ID
* 参数说明： const UINT16 logSectionId, 逻辑区段ID
*			const UINT8 cOtherId,其他联锁ID
*
*/
void SetLogSecResReqOtherCIId(const UINT16 wLogSectionId, const UINT8 cOtherId);

/*
* 功能描述： 获取逻辑区段发送其他CI资源请求的列车ID
* 参数说明： const UINT16 logSectionId, 逻辑区段ID
*
* 返回值  ： 0u	：错误
*		  ： 其他 ：列车ID
*/
UINT16 GetLogSecResReqTrainId(const UINT16 wLogSectionId);

/*
* 功能描述： 设置逻辑区段发送其他CI资源请求的列车ID
* 参数说明： const UINT16 logSectionId, 逻辑区段ID
*			const UINT16 wTrainId,列车ID
*
*/
void SetLogSecResReqTrainId(const UINT16 wLogSectionId, const UINT16 wTrainId);

/**
* @brief 设置逻辑区段所有资源的折返状态
* @param UINT16 wLogicId
* @param UINT8 chFlag
* @return 无
*/
void SetLogSecAllTrainReturnState(const UINT16 wLogicId, const UINT8 chFlag);

/**
* @brief 设置所有逻辑区段占用状态
* @param 无
* @return 无
*/
void SetAllLgcOccupyState(void);

/*
* 功能描述： 拷贝逻辑区段列车资源信息
* 参数说明： UINT16 wLogSecId,   逻辑区段ID
* 返回值  ：
*/
void CpyLgcSecResTrain(UINT16 wLogSecId, UINT8 chTrainSum, LogicTrainResStruct *pstLgcResInfo);

/*
* 功能描述： 获取指定逻辑区段延时解锁起始周期号
* 参数说明： const UINT16 logSectionId, 逻辑区段ID
*
* 返回值  ： 0:  获取失败
*			 >0: 逻辑区段延时解锁起始周期号
*/
UINT32 GetLogUnlockStartCycNum(const UINT16 logSectionId);

/*
* @brief： 获取指定ID逻辑区段共享资源标志
* @param： const UINT16 wLgcSecId, 逻辑区段ID
* @return  ： 0x55: 共享资源
*			  0xaa: 非共享资源
*             CI_ERROR:失败
*/
UINT8 GetLogSecResShareFlag(const UINT16 wLgcSecId);

/*
* @brief： 设置指定ID逻辑区段共享资源标志
* @param： const UINT16 wLgcSecId, 逻辑区段ID
* @param： const UINT16 chShrFlag, 公共资源标志
* @return 无
*/
void SetLogSecResShareFlag(const UINT16 wLgcSecId, const UINT8 chShrFlag);

/*
* 功能描述： 获取临时限速数量
* 参数说明：
* 返回值  ： 限速数量
*/
extern UINT8 GetTsrSum(void);


/*
* 功能描述： 获取指定逻辑区段反位内最小临时限速值
* 参数说明：UINT16* minSpeed	最小临时限速值(出参)
*			UINT16 logSum		逻辑区段数量(入参)
*			UINT16 szLogId[]	逻辑区段ID(入参)
* 返回值  ： CI_ERROR	获取失败
*			CI_SUCCESS	获取成功
*/
UINT8 GetBackUpVobcMinTsr(UINT16* minSpeed, UINT16 logSum, UINT16 szLogId[]);

/*
* 功能描述： 设置临时限速数量
* 参数说明： UINT8 cTsrSum 限速区段数量
* 返回值  ： 限速数量
*/
void SetTsrSum(UINT8 cTsrSum);

/*
* 功能描述： 获取临时限速数据
* 参数说明：
* 返回值  ： 限速数据
*/
extern TsrDataStruct* GetTsrData(void);

/*
* 功能描述： 设置临时本地临时限速数据
* 参数说明： UINT8 cTsrSum 限速数量
*			 TsrDataStruct* TsrData 限速数据
* 返回值  ： CI_ERROR失败;CI_SUCCESS 成功
*/
extern UINT8 SetLocalTsrData(UINT8 cTsrSum, TsrDataStruct* pTsrData, UINT8 cAllLineTsrState, UINT8 cAllLineTsrSpeed);

/*
* 功能描述： 清除本TIOC的逻辑区段临时限速标志
* 参数说明：
* 返回值  ：
*/
extern void ClearLocalTiocLogSecTsr(void);

/*
* 功能描述： 获取指定ID逻辑区段申请或释放跳跃锁闭命令的列车ID
* 参数说明： const UINT16 logSectionId, 逻辑区段ID
* 返回值  ： 0: 获取数据失败
*			>0: 列车ID
*/
UINT16 GetLogSecJumpLockTrainId(const UINT16 logSectionId);

/*
* 功能描述： 设置指定ID逻辑区段申请或释放跳跃锁闭命令的列车ID
* 参数说明： const UINT16 logSectionId, 逻辑区段ID
*			 const UINT16 trainId, 列车ID
* 返回值  ： 无
*
*/
void SetLogSecJumpLockTrainId(const UINT16 logSectionId, const UINT16 trainId);

/*
* 功能描述： 清除指定ID逻辑区段申请跳跃锁闭命令的列车ID
* 参数说明： const UINT16 logSectionId, 逻辑区段ID
* 返回值  ： 无
*
*/
void ClearLogSecJumpLockTrainId(const UINT16 logSectionId);

/*
* 功能描述： 判断跳跃锁闭释放命令列车ID与跳跃锁闭申请的列车ID是否相同
* 参数说明： const UINT16 logSectionId, 逻辑区段ID
*			 const UINT16 trainId, 列车ID
* 返回值  ： CI_ERROR 不是同一列车
CI_SUCCESS 是同一列车
*
*/
UINT8 JudgeLogSecJumpLockRelTrainId(const UINT16 logSectionId, const UINT16 trainId);

#if 0


/*HERE
* 功能描述： 获取指定ID逻辑区段跳跃锁闭申请标志
* 参数说明： const UINT16 logSectionId, 逻辑区段ID
* 返回值  ： 0: 获取数据失败
*			>0: 跳跃锁闭申请标志
*/
UINT8 GetLogSecJumpLockApplyFlag(const UINT16 logSectionId);

/*
* 功能描述： 设置指定ID逻辑区段跳跃锁闭申请标志
* 参数说明： const UINT16 logSectionId, 逻辑区段ID
*			 const UINT8 jumpLockApplyFlag, 跳跃锁闭申请标志
* 返回值  ： 无
*
*/
void SetLogSecJumpLockApplyFlag(const UINT16 logSectionId, const UINT8 jumpLockApplyFlag);

/*
* 功能描述： 获取指定ID逻辑区段跳跃锁闭取消申请标志
* 参数说明： const UINT16 logSectionId, 逻辑区段ID
* 返回值  ： 0: 获取数据失败
*			>0: 跳跃锁闭申请标志
*/
UINT8 GetLogSecJumpLockRelaseFlag(const UINT16 logSectionId);

/*
* 功能描述： 设置指定ID逻辑区段跳跃锁闭取消申请标志
* 参数说明： const UINT16 logSectionId, 逻辑区段ID
*			 const UINT8 jumpLockCancelApplyFlag, 跳跃锁闭取消申请标志
* 返回值  ： 0: 设置失败
*			 1: 设置成功
*/
void SetLogSecJumpLockRelaseFlag(const UINT16 logSectionId, const UINT8 jumpLockCancelApplyFlag);

/*
* 功能描述： 获取指定ID逻辑区段跳跃锁闭申请周期号
* 参数说明： const UINT16 logSectionId, 逻辑区段ID
* 返回值  ： 0: 获取数据失败
*			>0: 跳跃锁闭申请周期号
*/
UINT32 GetLogSecJumpLockApplyCylce(const UINT16 logSectionId);

/*
* 功能描述： 设置指定ID逻辑区段跳跃锁闭申请周期号
* 参数说明： const UINT16 logSectionId, 逻辑区段ID
*			 const UINT32 jumpLockApplyCycle, 跳跃锁闭申请周期号
* 返回值  ： 无
*/
void SetLogSecJumpLockApplyCylce(const UINT16 logSectionId, const UINT32 jumpLockApplyCycle);


#endif
/*
* 功能描述： 获取指定ID逻辑区段跳跃锁闭状态
* 参数说明： const UINT16 logSectionId, 逻辑区段ID
* 返回值  ： 0: 获取数据失败
*			>0: 跳跃锁闭状态
*/
UINT8 GetLogSecJumpLockState(const UINT16 logSectionId);

/*
* 功能描述： 设置指定ID逻辑区段跳跃锁闭状态
* 参数说明： const UINT16 logSectionId, 逻辑区段ID
*			 const UINT8 jumpLockState, 跳跃锁闭状态
* 返回值  ： 无
*
*/
void SetLogSecJumpLockState(const UINT16 logSectionId, const UINT8 jumpLockState);

/*
* 功能描述： 获取指定ID逻辑区段跳跃锁闭延时解锁起始周期号
* 参数说明： const UINT16 logSectionId, 逻辑区段ID
* 返回值  ： 0: 获取数据失败
*			>0: 跳跃锁闭延时解锁起始周期号
*/
UINT32 GetLogSecJumpDelayUnlocStartCyc(const UINT16 logSectionId);

/*
* 功能描述： 设置指定ID逻辑区段跳跃锁闭延时解锁起始周期号
* 参数说明： const UINT16 logSectionId, 逻辑区段ID
*			 const UINT32 startCycNum, 起始周期号
* 返回值  ： 无
*
*/
void SetLogSecJumpDelayUnlocStartCyc(const UINT16 logSectionId, const UINT32 startCycNum);

/*
* 功能描述： 获取指定ID逻辑区段跳跃锁闭延时解锁设置标志
* 参数说明： const UINT16 logSectionId, 逻辑区段ID
* 返回值  ： 0: 获取数据失败
*			>0: 跳跃锁闭延时解锁设置标志
*/
UINT8 GetLogSecJumpDelayUnlockFlag(const UINT16 logSectionId);

/*
* 功能描述： 设置指定ID逻辑区段跳跃锁闭延时解锁设置标志
* 参数说明： const UINT16 logSectionId, 逻辑区段ID
*			 const UINT8 jumpDelayUnlockFlag, 延时解锁设置标志
* 返回值  ： 无
*
*/
void SetLogSecJumpDelayUnlockFlag(const UINT16 logSectionId, const UINT8 jumpDelayUnlockFlag);

/*
* 功能描述： 获取指定ID逻辑区段跳跃锁闭允许标志
* 参数说明： const UINT16 logSectionId, 逻辑区段ID
* 返回值  ： 0: 获取数据失败
*			>0: 跳跃锁闭允许标志
*/
UINT8 GetLogSecJumpLockPermFlag(const UINT16 logSectionId);

/*
* 功能描述： 设置指定ID逻辑区段跳跃锁闭允许标志
* 参数说明： const UINT16 logSectionId, 逻辑区段ID
*			 const UINT8 jumpLockPermFlag, 跳跃锁闭允许标志
* 返回值  ： 无
*
*/
void SetLogSecJumpLockPermFlag(const UINT16 logSectionId, const UINT8 jumpLockPermFlag);

/*
* 功能描述： 逻辑区段跳跃锁闭命令逻辑处理
* 参数说明： const UINT16 logSectionId, 逻辑区段ID
*			 const UINT8 jumpLockState, 跳跃锁闭状态
* 返回值  ： 无
*
*/
void LogJumpLockCmdManage(const UINT16 logSectionId, const UINT8 jumpLockState);

/*
* 功能描述： 获取临时限速跟随数据
* 参数说明： pData 数据地址
*			 dwIndex 数据索引
* 返回值  ： 写入后的数据索引
*/
UINT32 GetTsrFollowData(UINT8* pData, UINT32 dwIndex);
/*
* 功能描述： 设置临时限速跟随数据
* 参数说明： pData 数据地址
*			 dwIndex 数据索引
* 返回值  ： 解析后的数据索引
*/
UINT32 SetTsrFollowData(UINT8* pData, UINT32 dwIndex);

/**
* @brief 逻辑区段是否有隐藏车
* @param wLgcId 逻辑区段ID
* @return CI_SUCCESS无隐藏车；CI_ERROR有隐藏车
* @note 此函数仅在判断逻辑区段为CT占用后调用
*/
UINT8 IsLogicHaveNoSupicTrain(UINT16 wLgcId);

/*
* @brief 设置逻辑区段限速切除状态
* @details 设置限速切除后，点式进路不检查限速状态
* @param const UINT16 routeId 进路ID
*        const UINT8 chCiId   CiID
* @return 无
*/
void SetLgcXianSuRemoveState(const UINT16 wLgcId, const UINT8 chXianSuRemoveStt);

#if 0
/*
* 功能描述： 获取逻辑区段限速切除状态
* 参数说明： const UINT16 logSectionId, 逻辑区段ID
*
* 返回值  ： 0u	：错误
*		  ： 其他 ：限速切除状态
*/
UINT8 GetLgcXianSuRemoveState(const UINT16 wLogSectionId);
#endif

/*
* 功能描述： 设置其他TIOC指定ID逻辑区段临时限速设置状态
* 参数说明： const UINT16 logSectionId, 逻辑区段ID
*			 const UINT8 linShiXianSuSetState, 临时限速设置状态
* 返回值  ： 无
*
*/
void SetLogSecXSSttOtherTioc(const UINT16 logSectionId, const UINT8 linShiXianSuSetState);

/*
* 功能描述： 清除指定逻辑区段关联物理区段锁闭所属进路的限速确认状态
* 参数说明： const UINT16 logSectionId, 逻辑区段ID
* 返回值  ： 无
*
*/
void ClearLgcSecBelongRtXsCfm(const UINT16 wLgcSecId);

/*
* 功能描述： 获取是列车逻辑区段资源可用状态
* 参数说明： const UINT16 logSectionId, 逻辑区段ID
*
* 返回值  ： LOGIC_SECTION_RES_UNUSABLE	：错误
*		  ： LOGIC_SECTION_RES_USABLE ：发  送
*/
UINT8 GetLogSecTrainResUsableState(const UINT16 wLogSectionId, const UINT16 wTrnId);

/*
* 功能描述： 获取指定逻辑区资源列车信息
* 参数说明： const UINT16 logSectionId, 逻辑区段ID
*
* 返回值  ： NULL:  获取失败
*			 !NULL: 逻辑区资源列车信息
*/
UINT8 GetLgcSecResCanAdd(const UINT16 wLogSectionId, const UINT16 wTrnId);
#if 0
/*
* @func： 逻辑区段是否包含可用资源检查
* @param： UINT16 wLgcSecId, 逻辑区段ID

* @return CI_ERROR   不可用
*		  CI_SUCCESS 可用
*/
UINT8 LgcHaveUseableRes(UINT16 wLgcSecId);
#endif

/*
* 功能描述： 获取指定逻辑区段ARB状态
* 参数说明： const UINT16 wLgcId, 逻辑区段ID
*
* 返回值  ： 0: 获取失败
*			 >0: 逻辑区段ARB状态
*/
UINT8 GetLgcArbState(const UINT16 wLgcId);

/*
* 功能描述： 设置制定逻辑区段ARB状态
* 参数说明： const UINT16 wLgcId, 逻辑区段ID
*			const UINT8 chArb ARB状态
* 返回值  ： 无
*/
void SetLgcArbState(const UINT16 wLgcId, const UINT8 chArb);

/*
* 功能描述： 设置逻辑区段ARB状态处理
* 参数说明： 无
* 返回值  ： 无
*/
void SetLgcArbStateProc(void);
/*
* 功能描述： 获取指定逻辑区段延时故障锁闭起始周期号
* 参数说明： const UINT16 logSectionId, 逻辑区段ID
*
* 返回值  ： 0:  获取失败
*			 >0: 逻辑区段延时故障锁闭起始周期号
*/
UINT32 GetLogDelayErrlockStartCycNum(const UINT16 logSectionId);
/*
* 功能描述： 设置指定逻辑区段延时故障锁闭起始周期号
* 参数说明： const UINT16 logSectionId, 逻辑区段ID
*			 const UINT32 startCycNum 起始周期号
* 返回值  ： 无
*
*/
void SetLogDelayErrlockStartCycNum(const UINT16 logSectionId, const UINT32 startCycNum);

/**
* @brief 获取逻辑区段是否有隐藏车
* @param wLgcId 逻辑区段ID
* @return CI_SUCCESS无隐藏车；CI_ERROR有隐藏车
* @note 获取所有列车查看是否有可疑列车
*/
UINT8 GetLogicSupicTrainStat(UINT16 wLgcId);

/*
* 功能描述： 获取列车是否在逻辑区段或保护区段锁闭所处进路中
* 参数说明： const UINT16 logSectionId, 逻辑区段ID
*
* 返回值  ： CI_ERROR:  不在
*			 CI_SUCCESS:在
*/
UINT8 GetTrainInLgcPRLock(const UINT16 wLogSectionId, const UINT16 wMinTailPointBelongLogSecId);

/*
* 功能描述： 设置逻辑区段保护锁闭资源可用状态
* 参数说明： const UINT16 wLogSectionId, 逻辑区段ID
*			 const UINT8  chUseState	 可用状态
* 返回值  ： VOID
* by cgh 20230630 单独记录保护锁闭资源状态
*/
void SetLogSecProResUseState(const UINT16 wLogSectionId, const UINT8 chUseState);

/*
* 功能描述： 获取逻辑区段保护锁闭资源可用状态
* 参数说明： const UINT16 logSectionId, 逻辑区段ID
*
* 返回值  ： LOGIC_SECTION_PRO_RES_UNUSABLE	：不可用
*		  ： LOGIC_SECTION_PRO_RES_USABLE   ：可用
* * by cgh 20230630 单独记录保护锁闭资源状态
*/
UINT8 GetLogSecProResUseState(const UINT16 wLogSectionId);

/*
* 功能描述： 获取指定逻辑区段锁闭方向是否应该取反
* 参数说明： const UINT16 wLogSectionId, 逻辑区段ID
*
* 返回值  ： CI_ERROR: 不取反
*			 CI_SUCCESS: 取反
* by cgh 20230802 给ATS组锁闭方向码位时使用
*/
UINT8 GetLogSecLockDirOpposedFlag(const UINT16 wLogSectionId);

/*
* 功能描述： 获取指定逻辑区段是否具备资源对顶的前提条件
* 参数说明： const UINT16 wLogSectionId, 逻辑区段ID
*
* 返回值  ： CI_ERROR: 不具备
*			 CI_SUCCESS: 具备
* by cgh 20230802 给IVOC组包资源对顶信息
*/
UINT8 GetLogSecHaveResOpp(const UINT16 wLogicSecId);

/*
* 功能描述： 清除区段防护锁闭状态
* 参数说明： const UINT16 logicSecId, 逻辑区段ID
* 返回值:	无
*/
void ClearLogicSecPLock(const UINT16 logicSecId);

/*
* 功能描述： 设置逻辑区段SPKS封锁状态
* 参数说明： const UINT16 wLogSectionId, 逻辑区段ID
*			 const UINT8  chLogicSpksFLockState	 逻辑区段SPKS封锁状态
* 返回值  ： VOID
* by cgh 20230919
*/
void SetLogSecSpksFLockState(const UINT16 wLogSectionId, const UINT8 chLogicSpksFLockState);

/*
* 功能描述： 获取逻辑区段SPKS封锁状态
* 参数说明： const UINT16 logSectionId, 逻辑区段ID
*
* 返回值  ： LOGIC_SECTION_SPKS_FLOCK_NO	：未封锁
*		  ： LOGIC_SECTION_SPKS_FLOCK_YES   ：封锁
* by cgh 20230919
*/
UINT8 GetLogSecSpksFLockState(const UINT16 wLogSectionId);

/*
* 功能描述： 获取指定ID逻辑区段锁闭所属逻辑进路数量
* 参数说明：const UINT16 wLgcId, 逻辑区段ID
* 返回值  ： 0: 获取数据失败
*			>0: 逻辑区段锁闭所属逻辑进路数量
* 创建	  ： cgh 2023-10-10
*/
UINT8 GetLogSecLockBelLogRouteSum(const UINT16 wLgcId);

/*
* 功能描述： 获取指定ID逻辑区段锁闭所属逻辑进路数据
* 参数说明： const UINT16 wLgcId, 逻辑区段ID
* 返回值  ： NULL: 获取数据失败
*			!NULL: 逻辑区段锁闭所属逻辑进路数据
* 创建	  :  cgh 2023-10-10
*/
LogSecLockBelLogRouteStruct* GetLogSecLockBelLogRouteData(const UINT16 wLgcId);

/*
* 功能描述： 从指定逻辑区段删除指定逻辑进路ID
* 参数说明： const UINT16 logSectionId, 逻辑区段ID
const UINT16 wLogRouteId, 逻辑进路ID
*
* 返回值  ： CI_ERROR 删除失败   Ci_SUCCESSS 删除成功
* 创建	  ： fan 2023-10-11
*/
UINT8 DelLogSecBelongLogRouteId(const UINT16 logSectionId, const UINT16 wLogRouteId);

/*
* 功能描述： 从指定逻辑区段增加指定逻辑进路ID
* 参数说明： const UINT16 logSectionId, 逻辑区段ID
const UINT16 wLogRouteId, 逻辑进路ID
*
* 返回值  ： CI_ERROR 增加失败 Ci_SUCCESSS 增加成功
* 创建	  ： fan 2023-10-11
*/
UINT8 AddLogSecBelongLogRouteId(const UINT16 logSectionId, const UINT16 wLogRouteId);



/*
* 功能描述： 获取指定逻辑区段逻辑锁闭状态
* 参数说明： const UINT16 wLogSectionId, 逻辑区段ID
*
* 返回值  ： 0: 获取失败
*			 >0: 逻辑区段逻辑锁闭状态
* by cgh 20231012
*/
UINT8 GetLogSecLogLockState(const UINT16 wLogSectionId);

/*
* 功能描述： 获取指定逻辑区段逻辑锁闭方向
* 参数说明： const UINT16 wLogSectionId, 逻辑区段ID
*
* 返回值  ： 0: 获取失败
*			 >0: 逻辑区段逻辑锁闭方向
* by cgh 20231013
*/
UINT8 GetLogSecLogLockDir(const UINT16 wLogSectionId);

/*
* 功能描述： 设置指定逻辑区段锁闭状态与方向
* 参数说明： const UINT16 logSectionId, 逻辑区段ID
*            const UINT8 chLogLockState 逻辑区段逻辑锁闭状态
*			 const UINT8 chLogLockDir 逻辑区段逻辑锁闭方向
* 返回值  ： 无
* by cgh 20231012
*/
void SetLogSecLogLockState(const UINT16 wLogSectionId, const UINT8 chLogLockState, const UINT8 chLogLockDir);




#if 0
/*
* 功能描述： 获取逻辑进路中某一区段是否具备资源对顶前提
* 参数说明： const UINT16 wLogSectionId, 逻辑区段ID
*
* 返回值  ： CI_ERROR: 不是最后一个逻辑区段
*			 CI_SUCCESS: 是最后一个逻辑区段
* by cgh 20231016
*/
UINT8 CheckLogRouteSecHaveResOpp(const UINT16 wLogicSecId);
#endif


/**
* @brief 设置逻辑区段锁闭所属逻辑进路
* @param const UINT16 wLogRouteId 逻辑进路ID
* @param const UINT16 wLogRouteRelatePsdId 逻辑进路关联屏蔽门ID
* @return 无
* @note：by cgh 20231011
*/
void SetLogSecRelateLogRouteData(const UINT16 wLogRouteId, const UINT16 wLogSecId);

/*
* 功能描述： 设置非联锁指定ID逻辑区段的逻辑锁闭状态与方向
* 参数说明： const UINT16 logSectionId 逻辑区段ID
*            const UINT8 chLogLockState 逻辑区段逻辑锁闭状态
*			 const UINT8 chLogLockDir 逻辑区段逻辑锁闭方向
*            const UINT8 cLogLockBelLogRouteSum 逻辑区段逻辑锁闭所属逻辑进路数量
* 返回值  ： 无
* Created By LQ 2023/10/20
*/
void SetLogSecLogLockStateOtherCi(const UINT16 wLogSectionId, const UINT8 chLogLockState, const UINT8 chLogLockDir, const UINT8 cLogLockBelLogRouteSum);

/*
* 功能描述： 查找指定逻辑区段内是否关联指定指定逻辑进路
* 参数说明： const UINT16 logSectionId, 逻辑区段ID
*					const UINT16 wLogRouteId, 逻辑进路ID
* 返回值  ：CI_SUCCESS逻辑区段关联该逻辑进路；CI_ERROR不关联
* 创建	  ： fan 2023-10-11
*/
UINT8 CheckLogRouteIdBelLogSec(const UINT16 logSectionId, const UINT16 wLogRouteId);

/**
* @brief 按照方向获取计轴区段内指定ID列车资源可用的逻辑区段
* @param const UINT16 wAxleId 计轴区段ID
*        const UINT16 wTrainId 列车ID
*        const UINT8 cDir 逻辑方向
*        UINT16 pOutLgcSec[TRAIN_INCLUDE_RES_MAX_SUM]  资源可用的逻辑区段ID数组（出参）
* @return <UINT8_MAX 资源可用的逻辑区段数量
*         UINT8_MAX 获取失败
* @note Created By LQ 2024.04.02
*/
UINT8 GetResUsableLogSecNumInAxis(const UINT16 wAxleId, const UINT16 wTrainId, const UINT8 cDir, UINT16 pOutLgcSec[TRAIN_INCLUDE_RES_MAX_SUM]);

/**
* @brief 逻辑区段是否在临时限速中
* @param wLogSecId 逻辑区段ID
* @return UINT8_MAX 数据异常
*		  0 不在临时限速中
*	      >0 临时限速取值
* @note by cgh 20240411
*/
UINT8 IsInTsrLogSecIdBuf(UINT16 wLogSecId);

/*
* 功能描述： 获取指定ID逻辑区段ABL接近可用标志
* 参数说明： const UINT16 logSectionId, 逻辑区段ID
* 返回值  ： 0: 获取数据失败
*			>0: ABL列车关联逻辑区段允许使用标志
*/
UINT8 GetLogSecAblUseFlag(const UINT16 logSectionId);

/*
* 功能描述： 设置指定ID逻辑区段ABL接近可用标志
* 参数说明： const UINT16 logSectionId, 逻辑区段ID
*			 const UINT8 ablUseFlag, ABL接近可用标志
* 返回值  ： 无
*
*/
void SetLogSecAblUseFlag(const UINT16 logSectionId, const UINT8 ablUseFlag);

/*
* 功能描述： 获取指定ID逻辑区段临时限速取值
* 参数说明： const UINT16 logSectionId, 逻辑区段ID
* 返回值  ： UINT8_MAX: 获取数据失败
*			>0: 临时限速取值
* BY CGH 20240415
*/
UINT8 GetLogSecXiansuSpeed(const UINT16 logSectionId);

/*
* 功能描述： 设置指定ID逻辑区段临时限速取值
* 参数说明： const UINT16 logSectionId, 逻辑区段ID
*			 const UINT8 ablUseFlag, 临时限速取值
* 返回值  ： 无
* BY CGH 20240415
*/
void SetLogSecXiansuSpeed(const UINT16 logSectionId, const UINT8 chXiansuSpeed);

/*
* 功能描述：设置其它CI发送的逻辑区段防护锁闭所属进路ID
* 参数说明：const UINT16 wLogSectionId 逻辑区段ID
*           const UINT16 wPLockRouteId 防护锁闭所属进路ID
* 返 回 值：无
* Created By LQ 2024.06.11
*/
void SetLogSecOtherCiPLockRouteId(const UINT16 wLogSectionId, const UINT16 wPLockRouteId);

/*
* 功能描述：获物其它CI发送的逻辑区段防护锁闭所属进路ID
* 参数说明：const UINT16 wLogSectionId 逻辑区段ID
* 返 回 值：其它CI发送的逻辑区段防护锁闭所属进路ID
* Created By LQ 2024.06.11
*/
UINT16 GetLogSecOtherCiPLockRouteId(const UINT16 wLogSectionId);

/*
* 功能描述：获取指定ID逻辑区段防护锁闭所属进路命令发送标志
* 参数说明：const UINT16 wLogSecId 逻辑区段ID
* 返回值  ：CI_ERROR 0 不发送
*			CI_SUCCESS 1 发送
* Created By LQ 2024.06.11
*/
UINT8 GetLogSecPLockRouteCmdSendFlag(const UINT16 wLogSecId);


/*
* 功能描述：设置进路离去区段的ABL列车条件检查标志
* 参数说明：UINT16 wLogSectionId 离去逻辑区段ID
*           UINT8 setFlag  离去区段的ABL列车条件检查标志
* 返回值  ：无
*/
void SetRouteLeaveLogSecFlag(UINT16 wLogSectionId, UINT8 setFlag);

/*
* 功能描述： 获取逻辑区段的ABL列车条件检查标志
* 参数说明： const UINT16 wLogSectionId 离去逻辑区段ID
* 返回值  ： >0 离去区段的ABL列车条件检查标志
*             0 获取失败
*/
UINT8 GetRouteLeaveLogFlag(const UINT16 wLogSectionId);

/*
* 功能描述： 获取指定ID逻辑区段锁闭所属逻辑进路数组
* 参数说明： const UINT16 wLgcId, 逻辑区段ID
*	        OUT LogSecLockBelLogRouteStruct szLogSecLockBelLogRouteData[LOGSEC_RELATE_ROUTE_SUM_MAX]  指定ID逻辑区段锁闭所属逻辑进路数组
* 返回值  ： 指定ID逻辑区段锁闭所属逻辑进路数目
* 创建	  :  cgh 2024-09-10
*/
UINT8 GetLogSecLockBelLogRouteBuf(const UINT16 wLgcId, OUT LogSecLockBelLogRouteStruct szLogSecLockBelLogRouteData[LOGSEC_RELATE_ROUTE_SUM_MAX]);

/*
* 功能描述： 设置互联互通其它联锁逻辑区段锁闭状态
* 参数说明：UINT16 wLogSectionId, 物理区段ID
			const UINT8 lockState,锁闭状态
* 返回值  ：无
* by cgh 20250117
*/
void SetLogSecLockStateHlht(UINT16 wLogSectionId, const UINT8 lockState);

/*
* 功能描述：设置互联互通其它联锁逻辑区段上电锁闭状态
* 参数说明：UINT16 wLogSectionId 逻辑区段ID
*			const UINT8 lockState 上电锁闭状态
* 返 回 值：无
*/
void SetLogSecStartLockStateHlht(UINT16 wLogSectionId, const UINT8 lockState);

/*
* 功能描述：设置互联互通其它联锁逻辑区段的锁闭方向
* 参数说明：UINT16 wLogSectionId, 逻辑区段ID
			const UINT8 lockDir,锁闭方向
* 返回值  ：无
* by cgh 20250117
*/
void SetLogSecLockDirHlht(UINT16 wLogSectionId, const UINT8 lockDir);

/*
* 功能描述：设置互联互通其它联锁逻辑区段保护锁闭所属的进路ID
* 参数说明：UINT16 wLogSectionId, 逻辑区段ID
			const UINT16 routeId,保护锁闭所属的进路ID
* 返回值  ：无
* by 20250117
*/
void SetLogSecPLockRouteIdHlht(UINT16 wLogSectionId, const UINT16 routeId);

/*
* 功能描述：设置互联互通其它联锁逻辑区段锁闭所属的进路ID
* 参数说明：UINT16 wLogSectionId, 逻辑区段ID
			const UINT16 routeId,锁闭所属的进路ID
* 返回值  ：无
* by 20250117
*/
void SetLogSecRLockRouteIdHlht(UINT16 wLogSectionId, const UINT16 routeId);

/*
* 功能描述： 设置逻辑区段关联的所有逻辑进路状态
* 参数说明： const UINT16 wLogSectionId, 逻辑区段ID
* 返回值  ： VOID
* by cgh 20250416
*/
void SetLogSecRelAllLogRouteState(const UINT16 wLogSectionId);

#ifdef __cplusplus
}
#endif

#endif
