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

#ifndef _ROUTE_CONFIG_DATA_MANAGE_H_
#define _ROUTE_CONFIG_DATA_MANAGE_H_


#include "CommonTypes.h"
#include "RouteDefine.h"
#include "../System/CiSystemDefine.h"
#include "../System/SystemParameterManage.h"




#ifdef __cplusplus
extern "C" {
#endif

/*进路条件道岔结构体*/
typedef struct S_Route_Condition_Switch
{
    UINT16 SwitchId;      		                                                    /*道岔ID (配置字段)*/
	UINT8 SwitchPosition;                                                       	/*道岔位置(参见道岔位置定义) (配置字段)*/
} RouteConditionSwitchStruct;

/*进路接近物理区段结构体*/
typedef struct S_Route_Near_PhySection
{
	UINT8 NearPhySecSum;			                                                /*接近物理区段数目(配置字段)*/
	UINT16 NearPhySecIdBuf[ROUTE_BLOCNEAR_PHYSEC_SUM_MAX];	                        /*接近物理区段ID数组(配置字段)*/
	UINT8 SwitchSum;		                                                        /*条件道岔数目(配置字段)*/
	RouteConditionSwitchStruct ConditionSwitchStru[ROUTE_CONDITION_SWITCH_SUM_MAX];	/*条件道岔结构数组(配置字段)*/
	UINT8 BlocNearLogSecSum;			                                                /*点式接近逻辑区段数目(配置字段)*/
	UINT16 BlocNearLogSecIdBuf[ROUTE_CBTCNEAR_LOGSEC_SUM_MAX];	                        /*点式接近逻辑区段ID数组(配置字段)*/
}RouteNearPhySectionStruct;

/*进路接近逻辑区段结构体*/
typedef struct S_Route_Near_LogicSection
{
	UINT8 NearLogicSecSum;			                                                /*接近逻辑区段数目(配置字段)*/
	UINT16 NearLogicSecIdBuf[ROUTE_CBTCNEAR_LOGSEC_SUM_MAX];	                    /*接近逻辑区段ID数组(配置字段)*/
	UINT8 SwitchSum;		                                                        /*条件道岔数目(配置字段)*/
	RouteConditionSwitchStruct ConditionSwitchStru[ROUTE_CONDITION_SWITCH_SUM_MAX];	/*条件道岔结构数组(配置字段)*/
}RouteNearLogicSectionStruct;

/*进路侵限区段结构体*/
typedef struct S_Route_Intrude_PhySection
{
    UINT16 SectionId;      		                                                      /*侵限区段ID (配置字段)*/
	UINT8 SwitchSum;      	                                                          /*条件道岔数目 (配置字段)*/
	RouteConditionSwitchStruct ConditionSwitchStru[ROUTE_CONDITION_SWITCH_SUM_MAX];   /*条件道岔结构数组(配置字段)*/
	UINT8 chCondSwitLockDir;														  /*CT 列车条件方向*/
} RouteIntrudePhySectionStruct;


/*进路敌对信号结构体*/
typedef struct S_Route_Enemy_Signal
{
    UINT16 SignalId;      		                                                      /*敌对信号ID (配置字段)*/
	UINT8 SwitchSum;      	                                                          /*相关道岔数目 (配置字段)*/
	RouteConditionSwitchStruct ConditionSwitchStru[ROUTE_CONDITION_SWITCH_SUM_MAX];   /*条件道岔结构数组(配置字段)*/
} RouteEnemySignalStruct;


/*进路物理区段数据结构体*/
typedef struct S_Route_PhysicalSection
{
    UINT16 PhysicalSectionId;   /*区段ID (配置字段)*/
	UINT8 CheckProperty;        /*检查属性 (配置字段)*/
	UINT8 LockDirShouldOpposedToRoute;	/*锁闭方向是否应该与进路方向相反*/
} RoutePhysicalSectionStruct;


/*进路道岔结构体*/
typedef struct S_Route_Switch
{
    UINT16 SwitchId;      		 /*道岔ID (配置字段)*/
	UINT8 SwitchPosition;      	 /*道岔位置 参见道岔位置定义 (配置字段)*/
	UINT8 SwitchProperty;		 /*道岔属性(进路中的道岔/防护道岔) (配置字段)*/
} RouteSwitchStruct;

/*进路关联防护道岔结构体*/
typedef struct S_Route_Protect_Switch
{
	UINT16 ProtectSwitchId;       /*防护道岔ID (配置字段)*/
	UINT8 ProtectPosition;        /*防护位置 (配置字段)*/
} RouteProtectSwitchStruct;

/*进路带动道岔结构体*/
typedef struct S_Route_Drived_Switch
{
	UINT16 SwitchId;   /*道岔ID*/	
	UINT8 SwitchPosition;  /*道岔位置*/	
} RouteAssocSwitchStruct;


/*进路其他联锁条件结构体*/
typedef struct S_Route_Other
{
	UINT8 DevType;      		 /* 设备类型 (配置字段)*/
	UINT16 DevId;      			 /* 设备ID (配置字段)*/
	UINT8 DevStatus;		     /* 设备状态 (配置字段) */
} RouteOtherCheckStruct;

typedef struct S_Route_MonoRail_Leave_PhySec
{
	UINT16 leavePhySecId;
	UINT16 switchSum;												/*条件道岔数目(配置字段)*/
	RouteConditionSwitchStruct switchStru[ROUTE_MONORAIL_PHY_SEC_SWIT_SUM_MAX]; /*条件道岔结构数组(配置字段)*/
}RouteMonoRailLeavePhySecStruct;

/*进路触发物理区段结构体*/
typedef struct S_Route_Trigger_PhySection
{
	UINT8 TriggerPhySecSum;			                                                /*触发物理区段数目(配置字段)*/
	UINT16 TriggerPhySecIdBuf[ROUTE_BLOCTRIGGER_CONDITION_SUM_MAX];	                        /*触发物理区段ID数组(配置字段)*/
	UINT8 SwitchSum;		                                                        /*条件道岔数目(配置字段)*/
	RouteConditionSwitchStruct ConditionSwitchStru[ROUTE_CONDITION_SWITCH_SUM_MAX];	/*条件道岔结构数组(配置字段)*/
}RouteTriggerPhySectionStruct;

/*进路触发逻辑区段结构体*/
typedef struct S_Route_Trigger_LogicSection
{
	UINT8 TriggerLogicSecSum;			                                                /*触发逻辑区段数目(配置字段)*/
	UINT16 TriggerLogicSecIdBuf[ROUTE_CBTCTRIGGER_LOGSEC_SUM_MAX];	                    /*触发逻辑区段ID数组(配置字段)*/
	UINT8 SwitchSum;		                                                        /*条件道岔数目(配置字段)*/
	RouteConditionSwitchStruct ConditionSwitchStru[ROUTE_CONDITION_SWITCH_SUM_MAX];	/*条件道岔结构数组(配置字段)*/
}RouteTriggerLogicSectionStruct;

/*主进路包含的子进路数据*//*add by cgh 20230428*/
typedef struct S_Route_MainOrSub_ConfigData
{
	UINT8 MainRouteProperty;             /*主进路属性(主进路/子进路)*/ /*add by cgh 20230427 */
	UINT8 RouteSubSum;					 /*主进路包含子进路数目*/ /*add by cgh 20230428*/
	UINT16 RouteSubIdBuf[ROUTE_SUB_INCLUDE_SUM_MAX];/*主进路包含的子进路ID*/ /*add by cgh 20230428*/
	UINT8 RouteBelMainSum;					 /*子进路所属主进路数目*/ /*add by cgh 20230428*/
	UINT16 RouteBelMainIdBuf[ROUTE_MAIN_BELONG_SUM_MAX];/*子进路所属主进路ID    add by cgh 20230428*/
}RouteMainOrSubConfigData;

/*进路配置数据结构体*/
typedef struct S_RouteConfigDataStruct
{
    UINT16 RouteId;              /*进路ID (配置字段)*/
	UINT8 BelongCiId;            /*所属联锁ID (配置字段)*/
	UINT8 BelongVirCIid;         /*所属虚拟联锁ID*/
	UINT8 RouteDirection;        /*进路方向(向左/向右) (配置字段)*/
	UINT8 RouteType;             /*进路类型(列车进路/折返进路/调车进路) (配置字段)*/
	UINT8 ConfigRouteType;       /*配置进路类型(列车进路/折返进路/调车进路) (配置字段)*/
    UINT8 LeadProperty;          /*进路引导属性(不可引导/可引导) (配置字段)*/
	UINT8 AutoRouteProperty;     /*自动进路属性(不具备/具备) (配置字段)*/
	UINT8 AutoSigProperty;       /*自动信号属性(不具备/具备) (配置字段)*/
	UINT8 ReverseRouteProperty;  /*反向进路属性（不具备/具备)(配置字段)*/
	UINT8 RouteSignalOpenColor;  /*进路始端信号开放显示颜色(参见信号机颜色定义) (配置字段)*/
	UINT8 LeadOpenColor;		 /*进路始端信号引导开放显示颜色(参见信号机颜色定义) (配置字段)*/
	UINT16 StartSignalId;        /*进路始端信号机ID (配置字段)*/
	UINT16 EndSignalId;          /*进路终止信号机ID (配置字段)*/
	UINT8 RoutePhySecSum;        /*进路包含区段数目 (配置字段)*/
	RoutePhysicalSectionStruct RoutePhySectionStru[ROUTE_PHYSICALSECTION_SUM_MAX];   /*进路包含区段数组 (配置字段)*/
	UINT8 RouteSwitchSum;                                                            /*进路包含道岔数目 (配置字段)*/
	RouteSwitchStruct RouteSwitchStru[ROUTE_SWITCH_SUM_MAX];                         /*进路包含道岔结构数组 (配置字段)*/
	UINT8 RouteProtectSwitchSum;                                                     /*进路关联防护道岔道岔数目 (配置字段)*/
	RouteProtectSwitchStruct RouteProtectSwitchStru[ROUTE_PROTECTSWI_SUM_MAX];       /*进路关联防护道岔结构数组 (配置字段)*/
	UINT16 RouteLastSwichPhySecId;                                                   /*进路最远端道岔区段ID (配置字段)*/

	UINT8 RouteInitEnemyStatus;					/*进路初始敌对状态*/
	UINT8 RouteEnemySignalSum;                                                       /*进路相关敌对信号数目 (配置字段)*/
	RouteEnemySignalStruct RouteEnemySigStru[ROUTE_ENEMYSIGNAL_SUM_MAX];	         /*进路相关敌对信号结构数组 (配置字段)*/

	UINT8 RouteInitInstruStatus;				/*进路初始侵限状态*/
	UINT8 RouteIntruPhySecSum;                                                       /*进路相关侵限区段数目 (配置字段)*/
	RouteIntrudePhySectionStruct RouteIntruPhySecStru[ROUTE_INTRUDEPHYSEC_SUM_MAX];  /*进路相关侵限区段结构数组 (配置字段)*/

	UINT8 BlocNearConditionSum;                                                      /*点式进路接近区段条件数目 (配置字段)*/
	RouteNearPhySectionStruct BlocNearPhySecStru[ROUTE_NEARSEC_CONDITION_SUM_MAX];   /*点式进路接近物理区段结构数组 (配置字段)*/
	UINT8 CbtcNearConditionSum;                                                      /*CBTC进路接近区段条件数目 (配置字段)*/
	RouteNearLogicSectionStruct CbtcNearLogSecStru[ROUTE_NEARSEC_CONDITION_SUM_MAX]; /*CBTC进路接近逻辑区段结构数组 (配置字段)*/
	UINT8 RouteLightLogSecSum;                                                       /*进路点灯逻辑区段数目 (配置字段)*/
	UINT16 RouteLightLogSecIdBuf[ROUTE_LIGHT_LOGSEC_SUM_MAX];                        /*进路点灯逻辑区段ID数组 (配置字段)*/
	UINT8 RouteReturnSigSum;                                                         /*进路折返信号机数目 (配置字段)*/
	UINT16 RouteReturnSigIdBuf[ROUTE_RETURNSIGNAL_SUM_MAX];                          /*进路折返信号机ID数组 (配置字段)*/
	UINT8 OverlapSum;                                                                /*进路相关防护区段组数目 (配置字段)*/
	UINT16 OverlapIdBuf[ROUTE_PROTECTSECGROUP_SUM_MAX];                              /*进路相关防护区段组ID数组 (配置字段)*/
	UINT16 RouteLeavePhySecId;                                                       /*进路离去物理区段ID (初始化字段)*/
	UINT16 RouteLeaveLogicSecId;                                                     /*进路第一离去逻辑区段区段ID (初始化字段)*/
	UINT16 RouteMonoRailLeavePhySecSum;
	RouteMonoRailLeavePhySecStruct RouteMonoRailLeavePhySecStru[ROUTE_MONORAIL_LEAVE_PHY_SEC_SUM_MAX];
	UINT16 StopSteadyPhySecId;                                                       /*防护区段解锁对应停稳物理区段ID (配置字段)*/
	UINT16 ThisZhaoChaRelayId;                                                       /*本端照查继电器ID (配置字段)*/
	UINT16 ThatZhaoChaRelayId;                                                       /*对端照查继电器ID (配置字段)*/
	UINT16 cancelZhaochaRelayId;                                                     /* 取消照查继电器ID(配置字段) 继电器表中 */

	UINT8 RouteInitFSStatus;		/*进路初始封锁状态*/
	UINT8 RouteFSSignalSum;		                                                     /*进路相关封锁信号机数目 (配置字段)*/
	UINT16 RouteFSSignalIdBuf[ROUTE_FENGSUO_SIGNAL_SUM_MAX];		                 /*进路相关封锁信号机ID数组 (配置字段)*/

	UINT8 OpenNeedCloseSigSum;                                                       /*进路开放需关闭信号机数目 (配置字段)*/
	UINT16 OpenNeedCloseSigIdBuf[ROUTE_OPENNEEDCLOSESIG_SUM_MAX];		             /*进路开放需关闭信号机ID数组 (配置字段)*/
	UINT8 OpenNeedOpenSigSum;                                                        /*进路开放需开放信号机数目 (配置字段)*/
	UINT16 OpenNeedOpenSigIdBuf[ROUTE_OPENNEEDOPENSIG_SUM_MAX];		                 /*进路开放需开放信号机ID数组 (配置字段)*/
	UINT8 CBTCOpenNeedOpenSigSum;                                                        /*CBTC进路开放需开放信号机数目 (配置字段)*/
	UINT16 CBTCOpenNeedOpenSigIdBuf[ROUTE_OPENNEEDOPENSIG_SUM_MAX];		                 /*CBTC进路开放需开放信号机ID数组 (配置字段)*/

	UINT8 BlocOpenNeedOpenSigSum;                                                        /*后备进路开放需开放信号机数目 (配置字段)*/
	UINT16 BlocOpenNeedOpenSigIdBuf[ROUTE_OPENNEEDOPENSIG_SUM_MAX];		                 /*后备进路开放需开放信号机ID数组 (配置字段)*/

	UINT8 OnlyOneOpenSigSum;                                                         /*进路开放需开放信号机数目 (配置字段)*/
	UINT16 OnlyOneOpenSigIdBuf[ROUTE_ONLYONEOPENSIG_SUM_MAX];		                 /*进路不同时开放信号机ID数组 (配置字段)*/
    UINT8 BlocEsbSum;		                                                         /*点式进路Esb数 (配置字段)*/
	UINT16 BlocEsbIdBuf[ROUTE_ESB_SUM_MAX];		                                     /*点式进路Esb Id数组 (配置字段)*/
    UINT8 CbtcEsbSum;		                                                         /*CBTC进路Esb数 (配置字段)*/
	UINT16 CbtcEsbIdBuf[ROUTE_ESB_SUM_MAX];		                                     /*CBTC进路Esb Id数组 (配置字段)*/
    UINT8 BlocPsdSum;		                                                         /*点式进路Psd数 (配置字段)*/
    UINT16 BlocPsdIdBuf[ROUTE_PSD_SUM_MAX];		                                     /*点式进路Psd Id数组 (配置字段)*/
    UINT8 CbtcPsdSum;		                                                         /*CBTC进路Psd数 (配置字段)*/
	UINT16 CbtcPsdIdBuf[ROUTE_PSD_SUM_MAX];		                                     /*CBTC进路Psd Id数组 (配置字段)*/
    UINT16 InFirstLogSecId;                                                          /*内方第一逻辑区段*/
	UINT16 InLastLogSecId;                                                          /*内方最后一个逻辑区段*/
    UINT8 ThatZhaoChaPhySecSum;                                                      /*对端照查物理区段数目 (配置字段)*/
	UINT16 ThatZhaoChaPhySecIdBuf[ROUTE_THATZC_PHYSEC_SUM_MAX];                      /*对端照查物理区段ID数组 (配置字段)*/
	UINT8 OpposedRouteSum;                                                           /*抵触进路数目 (配置字段)*/
	UINT16 OpposedRouteIdBuf[ROUTE_OPPOSED_ROUTE_SUM_MAX];                           /*抵触进路ID数组 (配置字段)*/
	UINT8 SignalOpposedRouteSum;                                                     /*以本进路始端信号机为终端信号机的折返进路数目(配置字段)*/
	UINT16 SignalOpposedRouteIdBuf[ROUTE_SIGNAL_OPPOSED_ROUTE_SUM_MAX];              /*以本进路始端信号机为终端信号机的折返进路ID数组(配置字段)*/
	UINT8 floodGateSum;									                             /* 防淹门数量 */
	UINT16 floodGateIdBuf[ROUTE_FLOOD_GATE_SUM_MAX];	                             /* 防淹门ID */
	UINT8 CbtcOtherCiSum;		                                                     /* CBTC其他联锁条件数量 */
	RouteOtherCheckStruct CbtcOtherCiBuff[ROUTE_OHTER_CHECK_SUM_MAX];                /* CBTC其他联锁条件检查条件信息 */
	UINT8 BlockOtherCiSum;		                                                     /* 点式其他联锁条件数量 */
	RouteOtherCheckStruct BlockOtherCiBuff[ROUTE_OHTER_CHECK_SUM_MAX];               /* 点式其他联锁条件检查条件信息 */	

	UINT8 RouteAssocSwitchSum;															 /*进路包含带动道岔组数目 (配置字段)*/
	RouteAssocSwitchStruct RouteAssocSwitchStru[ROUTE_DRIVED_SWITCH_SUM_MAX];						 /*进路包含带动道岔组结构数组 (配置字段)*/
	UINT8 AirShaftRouteType;                                                                 /*风井进路属性*/
	UINT8 AutoTriggerType;                                                                    /*自动触发属性*/
	RouteTriggerPhySectionStruct BlocTriggerPhySecStru[ROUTE_BLOC_TRIGGERPHY_NUM];   /*点式进路触发物理区段结构数组 (配置字段)*/
	RouteTriggerLogicSectionStruct CbtcTriggerLogSecStru[1]; /*CBTC进路触发逻辑区段结构数组 (配置字段)预留*/

	UINT16	DCRouteDCQJId;/*调车进路调车请求继电器ID*/
	UINT16	DCRouteDCQJTwoId;/*调车进路调车请求继电器2ID*/
	UINT16	DCRouteTAJId;/*调车进路调车同意按钮继电器ID*/

	UINT8 RouteNeedDelayUnlock; /* 进路状态初锁/初锁异常/预先锁闭，取消或人解需要延时解锁（配置字段）*/

	UINT16 CancelZhaoChaRelayOnRelayIntrf;/*继电接口下取消照查继电器*/

	UINT8 HaveDirChangePointInRoute;/*进路内部是否有方向变化点*/

	UINT8 HaveDirChangePointAfterRoute;/*进路后面（进路与保护区段中间）是否有方向变化点*/
	UINT16 RelayBenDuanZcIdOnRelayIntrf; /*继电接口本端照查继电器ID*/
	UINT16 RelayDuiDuanZcIdOnRelayIntrf; /*继电接口对端照查继电器ID*/

	UINT8 SigisEndSigRouteSum;                                                     /*以本进路始端信号机为终端信号机的进路数目(配置字段)*/
	UINT16 SigisEndSigRouteIdBuf[ROUTE_SIGNAL_OPPOSED_ROUTE_SUM_MAX];              /*以本进路始端信号机为终端信号机的进路ID数组(配置字段)*/


	UINT16 RouteInLogTrackSum;                           /*进路包含逻辑区段ID数*/
	UINT16 RouteInLogTrackIdBuf[MAX_ROUTE_IN_LT_NUM];   /*进路包含逻辑区段ID数组 (配置字段)*/

	UINT16 RouteInSwitOtherPosLogSecSum;							/*进路内道岔关联的非进路内逻辑区段ID数量*/ /*道岔不同位置关联不同的逻辑区段，此处是进路内道岔关联的不属于进路期望道岔位置关联的逻辑区段数量*/ /*add 20221002 TIOC5.0*/
	UINT16 RouteInSwitOtherPosLogSecIdBuf[MAX_ROUTE_IN_LT_NUM];		/*进路内道岔关联的非进路内逻辑区段ID数组*/ /*道岔不同位置关联不同的逻辑区段，此处是进路内道岔关联的不属于进路期望道岔位置关联的逻辑区段ID数组*/ /*add 20221002 TIOC5.0*/

	UINT16 RouteOutLogSecSum;								/*进路包含物理区段关联的非进路内且非道岔关联的逻辑区段ID数量 此处是属于进路内物理区段但不属于进路且不属于进路内道岔关联的逻辑区段的逻辑区段数量*/ /*add 20221002 TIOC5.0*/
	UINT16 RouteOutLogSecSumIdBuf[MAX_ROUTE_IN_LT_NUM];		/*进路包含物理区段关联的非进路内且非道岔关联的逻辑区段ID数组 此处是属于进路内物理区段但不属于进路且不属于进路内道岔关联的逻辑区段的逻辑区段ID数组*/ /*add 20221002 TIOC5.0*/
	RouteMainOrSubConfigData MainOrSubData;   /*进路对应的子进路及主进路数据*/ /*add cgh 20230508*/

	UINT8 cSGBJDelayOpenFlag;  /*进路声光报警延时开放标志，0xAA：延时开放，0x55：不延时开放*/
	UINT16 wRelatedSGBJNum;  /*进路关联的声光报警器数量*/
	UINT16 szRelatedSGBJId[ROUTE_RELATED_SGBJ_NUM_MAX];  /*进路关联的声光报警器ID*/
	UINT8 cCbtcProperty;  /*进路CBTC区域属性，0x55：CBTC区域，0xAA：非CBTC区域*/
	UINT16 wRelatedTransZFSigId;  /*进路关联转换轨折返信号机id 未配置默认0*/
	UINT8 airShaftRouteSecSum;		/*风井进路物理区段数量*/
	UINT16 wAirShaftRouteSecIdBuf[AIR_SHAFT_ROUTE_SECTION_NUM_MAX];	/*风井进路物理区段ID数组*/
}RouteConfigDataStruct;

/*******************************全局变量声明*******************************/
extern RouteConfigDataStruct RouteConfigDataStru[ROUTE_SUM_MAX];   /*定义进路配置数据结构体,cgh-合并CID-2539-1：此处声明不进行初始化，统一放到InitAllStaticDataStr函数中进行初始化，为解决生成内核过大得问题*/
extern UINT16 LocalCiRouteIdBuf[ROUTE_SUM_MAX];
extern INT16 RouteCurSum;

/*
* 功能描述： 获取指定ID进路索引号
* 参数说明： const UINT16 routeId, 进路ID
* 返回值  ： ROUTE_SUM_MAX: 获取数据失败
*			<ROUTE_SUM_MAX: 查找成功
*/
UINT16 GetRouteConfigBufIndex(const UINT16 routeId);

/*
* 功能描述： 获取进路当前总数
* 参数说明： void    
* 返回值  ： 0: 获取数据失败
*			>0: 进路当前总数
*/
UINT16 GetRouteCurSum(void);

/*
* 功能描述： 获取整个进路数据
* 参数说明：   
             UINT16 routeId
* 返回值  ： 
            RouteConfigDataStruct*  
*/
RouteConfigDataStruct *GetRouteConfigData(void);

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

/*
* 功能描述： 获取指定ID进路所属联锁ID
* 参数说明： UINT16 routeId, 进路ID    
* 返回值  ： 0: 获取数据失败
*			>0: 所属联锁ID      
*/
UINT8 GetRouteBelongCiId(const UINT16 routeId);

/*
* 功能描述： 获取指定ID进路方向
* 参数说明： const UINT16 routeId, 进路ID    
* 返回值  ： 0: 获取数据失败
*			>0: 所属联锁ID
*/
UINT8 GetRouteDirection(const UINT16 routeId);

/*
* 功能描述： 获取指定ID进路类型
* 参数说明： const UINT16 routeId, 进路ID    
* 返回值  ： 0: 获取数据失败
*			>0: 进路类型    
*/
UINT8 GetRouteType(const UINT16 routeId);

/*
* 功能描述： 获取指定ID配置进路类型
* 参数说明： const UINT16 routeId, 进路ID
* 返回值  ： 0: 获取数据失败
*			>0: 进路类型
*/
UINT8 GetConfigRouteType(const UINT16 routeId);

/*
* 功能描述： 获取指定ID进路引导属性
* 参数说明： const UINT16 routeId, 进路ID    
* 返回值  ： 0: 获取数据失败
*			>0: 进路引导属性      
*/
UINT8 GetRouteLeadProperty(const UINT16 routeId);

/*
* 功能描述： 获取指定ID进路自动进路属性
* 参数说明： const UINT16 routeId, 进路ID    
* 返回值  ： 0: 获取数据失败
*			>0: 自动进路属性      
*/
UINT8 GetRouteAutoRouteProperty(const UINT16 routeId);

/*
* 功能描述： 获取指定ID进路自动信号属性
* 参数说明： const UINT16 routeId, 进路ID    
* 返回值  ： 0: 获取数据失败
*			>0: 自动信号属性      
*/
UINT8 GetRouteAutoSigProperty(const UINT16 routeId);

/*
* 功能描述： 获取指定ID进路反向属性
* 参数说明： const UINT16 routeId, 进路ID    
* 返回值  ： 0: 获取数据失败
*			>0: 反向进路属性      
*/
UINT8 GetRouteReverseProperty(const UINT16 routeId);

/*
* 功能描述： 获取指定ID进路信号开放显示颜色
* 参数说明： const UINT16 routeId, 进路ID    
* 返回值  ： 0: 获取数据失败
*			>0: 进路信号开放颜色      
*/
UINT8 GetRouteSignalOpenColor(const UINT16 routeId);

/*
* 功能描述： 获取指定ID进路引导信号开放显示颜色
* 参数说明： const UINT16 routeId, 进路ID    
* 返回值  ： 0: 获取数据失败
*			>0: 进路信号开放颜色      
*/
UINT8 GetRouteLeadSignalOpenColor(const UINT16 routeId);

/*
* 功能描述： 获取指定ID进路起始信号机ID
* 参数说明： const UINT16 routeId, 进路ID    
* 返回值  ： 0: 获取数据失败
*			>0: 进路起始信号机ID
*/
UINT16 GetRouteStartSignalId(const UINT16 routeId);

/*
* 功能描述： 获取指定ID进路终止信号机ID
* 参数说明： const UINT16 routeId, 进路ID    
* 返回值  ： 0: 获取数据失败
*			>0: 进路终止信号机ID
*/
UINT16 GetRouteEndSignalId(const UINT16 routeId);

/*
* 功能描述： 获取指定ID进路包含物理区段数目
* 参数说明： const UINT16 routeId, 进路ID    
* 返回值  ： 0: 获取数据失败
*			>0: 物理区段数目
*/
UINT8 GetRoutePhysicalSectionSum(const UINT16 routeId);

/*
* 功能描述： 获取指定ID进路包含物理区段结构体
* 参数说明： const UINT16 routeId, 进路ID    
* 返回值  ： null：获取数据失败
*           !null: 进路物理区段结构指针
*/
RoutePhysicalSectionStruct* GetRouteSectionData(const UINT16 routeId);

/*
* 功能描述： 获取指定ID进路包含道岔数目
* 参数说明： const UINT16 routeId, 进路ID    
* 返回值  ： 0: 获取数据失败
*			>0: 道岔数目
*/
UINT8 GetRouteSwitchSum(const UINT16 routeId);

/*
* 功能描述： 获取指定ID进路包含道岔数据
* 参数说明： const UINT16 routeId, 进路ID    
* 返回值  ： NULL: 获取数据失败
*			!NULL: 道岔结构指针
*/
RouteSwitchStruct* GetRouteSwitchData(const UINT16 routeId);

/*
* 功能描述： 获取指定ID进路关联防护道岔数目
* 参数说明： const UINT16 routeId, 进路ID    
* 返回值  ： 0: 获取数据失败
*			>0: 道岔数目
*/
UINT8 GetRouteRelatedProtectSwitchSum(const UINT16 routeId);

/*
* 功能描述： 获取指定ID进路关联防护道岔数据
* 参数说明： const UINT16 routeId, 进路ID    
* 返回值  ： NULL: 获取数据失败
*			!NULL: 道岔结构指针
*/
RouteProtectSwitchStruct* GetRouteRelatedProtSwitchData(const UINT16 routeId);

/*
* 功能描述： 获取指定ID进路最远端道岔区段ID
* 参数说明： const UINT16 routeId, 进路ID    
* 返回值  ： 0: 获取数据失败
*			>0: 道岔数目
*/
UINT16 GetRouteLastSwichPhySecId(const UINT16 routeId);

/*
* 功能描述： 获取指定ID进路敌对信号数目
* 参数说明： const UINT16 routeId, 进路ID    
* 返回值  ： 0: 获取数据失败
*			>0: 敌对信号数目
*/
UINT8 GetRouteEnemySignalSum(const UINT16 routeId);

/*
* 功能描述： 获取指定ID进路敌对信号数据
* 参数说明： const UINT16 routeId, 进路ID    
* 返回值  ： NULL: 获取数据失败
*			!NULL: 敌对信号结构指针
*/
RouteEnemySignalStruct* GetRouteEnemySignalData(const UINT16 routeId);

/*
* 功能描述： 获取指定ID进路侵限物理区段数目
* 参数说明： const UINT16 routeId, 进路ID    
* 返回值  ： 0: 获取数据失败
*			>0: 侵限物理区段数目
*/
UINT8 GetRouteIntrudePhySectionSum(const UINT16 routeId);

/*
* 功能描述： 获取指定ID进路侵限区段数组
* 参数说明： const UINT16 routeId, 进路ID    
* 返回值  ： NULL: 获取数据失败
*			!NULL: 侵限物理区段结构指针
*/
RouteIntrudePhySectionStruct* GetRouteIntrudePhySectionData(const UINT16 routeId);

/*
* 功能描述： 获取指定ID进路点式接近区段条件数目
* 参数说明： const UINT16 routeId, 进路ID    
* 返回值  ： 0: 获取数据失败
*           >0: 点式接近物理区段数目
*/
UINT8 GetRouteBlocNearSecConditionSum(const UINT16 routeId);

/*
* 功能描述： 获取指定ID进路点式接近物理区段结构数组
* 参数说明： const UINT16 routeId, 进路ID    
* 返回值  ： NULL: 获取数据失败
*			!NULL: 点式接近物理区段ID数组指针
*/
RouteNearPhySectionStruct* GetRouteBlocNearPhySectionStru(const UINT16 routeId);

/*
* 功能描述： 获取指定ID进路CBTC接近区段条件数目
* 参数说明： const UINT16 routeId, 进路ID    
* 返回值  ： 0: 获取数据失败
*           >0: 点式接近物理区段数目
*/
UINT8 GetRouteCbtcNearSecConditionSum(const UINT16 routeId);

/*
* 功能描述： 获取指定ID进路CBTC接近物理区段结构数组
* 参数说明： const UINT16 routeId, 进路ID    
* 返回值  ： NULL: 获取数据失败
*			!NULL: CBTC接近物理区段ID数组指针
*/
RouteNearLogicSectionStruct* GetRouteCbtcNearLogSectionStru(const UINT16 routeId);

/*
* 功能描述： 获取指定ID进路点灯逻辑区段数目
* 参数说明： const UINT16 routeId, 进路ID    
* 返回值  ： 0: 获取数据失败
*           >0: 点灯逻辑区段数目
*/
UINT8 GetRouteLightLogSectionSum(const UINT16 routeId);

/*
* 功能描述： 获取指定ID进路点灯逻辑区段ID数组
* 参数说明： const UINT16 routeId, 进路ID    
* 返回值  ： NULL: 获取数据失败
*			!NULL: 点灯逻辑区段ID数组指针
*/
UINT16* GetRouteLightLogSectionIdBuf(const UINT16 routeId);

/*
* 功能描述： 获取指定ID进路折返信号机数目
* 参数说明： const UINT16 routeId, 进路ID    
* 返回值  ： 0: 获取数据失败
*           >0: 折返信号机数目
*/
UINT8 GetRouteReturnSignalSum(const UINT16 routeId);

/*
* 功能描述： 获取指定ID进路折返信号机ID数组
* 参数说明： const UINT16 routeId, 进路ID    
* 返回值  ： NULL: 获取数据失败
*			!NULL: 折返信号机ID数组指针
*/
UINT16* GetRouteReturnSignalIdBuf(const UINT16 routeId);

/*
* 功能描述： 获取指定ID进路防护区段组数目
* 参数说明： const UINT16 routeId, 进路ID    
* 返回值  ： 0: 获取数据失败
*           >0: 防护区段组数目
*/
UINT8 GetRouteOverlapSum(const UINT16 routeId);

/*
* 功能描述： 获取指定ID进路防护区段组ID数组
* 参数说明： const UINT16 routeId, 进路ID    
* 返回值  ： NULL: 获取数据失败
*			!NULL: 防护区段组ID数组指针
*/
UINT16* GetRouteOverlapIdBuf(const UINT16 routeId);

/*
* 功能描述： 获取指定ID进路离去物理区段ID
* 参数说明： const UINT16 routeId, 进路ID    
* 返回值  ： 0: 获取数据失败
*			>0: 离去物理区段ID
*/
UINT16 GetRouteLeavePhySecId(const UINT16 routeId);

/*
* 功能描述： 获取指定ID进路停稳物理区段ID
* 参数说明： const UINT16 routeId, 进路ID    
* 返回值  ： 0: 获取数据失败
*			>0: 停稳物理区段ID
*/
UINT16 GetRouteStopSteadyPhySecId(const UINT16 routeId);

/*
* 功能描述： 获取指定ID进路本端照查继电器ID
* 参数说明： const UINT16 routeId, 进路ID    
* 返回值  ：  0: 获取数据失败
*			 >0: 本端照查继电器ID
*/
UINT16 GetRouteThisZhaoChaRelayId(const UINT16 routeId);

/*
* 功能描述： 获取指定ID进路对端照查继电器ID
* 参数说明： const UINT16 routeId, 进路ID    
* 返回值  ：  0: 获取数据失败
*			 >0: 对端照查继电器ID
*/
UINT16 GetRouteThatZhaoChaRelayId(const UINT16 routeId);

/*
* 功能描述： 获取指定ID进路取消照查继电器ID
* 参数说明： const UINT16 routeId, 进路ID    
* 返回值  ：  0: 获取数据失败
*			 >0: 取消继电器ID
*/
UINT16 GetRouteCancleZhaoChaRelayId(const UINT16 routeId);

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

/*
* 功能描述： 获取指定ID进路封锁信号机ID数组
* 参数说明： const UINT16 routeId, 进路ID    
* 返回值  ： NULL: 获取数据失败
*			!NULL: 封锁信号机ID数组指针
*/
UINT16* GetRouteFengSuoSignalIdBuf(const UINT16 routeId);

/*
* 功能描述： 获取指定ID进路开放需关闭信号机数目
* 参数说明： const UINT16 routeId, 进路ID    
* 返回值  ： 0: 获取数据失败
*			>0: 开放需关闭信号机数目
*/
UINT8 GetRouteOpenNeedCloseSigSum(const UINT16 routeId);

/*
* 功能描述： 获取指定ID进路开放需关闭信号机ID数组
* 参数说明： const UINT16 routeId, 进路ID    
* 返回值  ： NULL: 获取数据失败
*			!NULL: 开放需关闭信号机ID数组指针
*/
UINT16* GetRouteOpenNeedCloseSigIdBuf(const UINT16 routeId);

/*
* 功能描述： 获取指定ID进路开放需开放信号机数目
* 参数说明： const UINT16 routeId, 进路ID    
* 返回值  ： 0: 获取数据失败
*			>0: 开放需开放信号机数目
*/
UINT8 GetRouteOpenNeedOpenSigSum(const UINT16 routeId);

/*
* 功能描述： 获取指定ID进路开放需开放信号机ID数组
* 参数说明： const UINT16 routeId, 进路ID    
* 返回值  ： NULL: 获取数据失败
*			!NULL: 开放需开放信号机ID数组指针
*/
UINT16* GetRouteOpenNeedOpenSigIdBuf(const UINT16 routeId);

/*
* 功能描述： 获取指定ID进路不能同时开放信号机数目
* 参数说明： const UINT16 routeId, 进路ID    
* 返回值  ： 0: 获取数据失败
*			>0: 不能同时开放信号机数目
*/
UINT8 GetRouteOnlyOneOpenSigSum(const UINT16 routeId);

/*
* 功能描述： 获取指定ID进路不能同时开放信号机ID数组
* 参数说明： const UINT16 routeId, 进路ID    
* 返回值  ： NULL: 获取数据失败
*			!NULL: 不能同时开放信号机ID数组指针
*/
UINT16* GetRouteOnlyOneOpenSigIdBuf(const UINT16 routeId);

/*
* 功能描述： 获取指定ID进路第一个物理区段ID
* 参数说明： const UINT16 routeId, 进路ID      
* 返回值  ： 0: 不是进路第一区段
*			>0: 进路第一区段ID
*/
UINT16 GetRouteFirstPhySectionId(const UINT16 routeId);

/*
* 功能描述： 获取指定ID进路最后一个物理区段ID
* 参数说明： const UINT16 routeId, 进路ID    
* 返回值  ： 0: 不是进路最后一个区段
*			>0: 进路最后一个物理区段ID
*/
UINT16 GetRouteLastPhySectionId(const UINT16 routeId);

/*
* 功能描述： 获取指定ID进路物理区段下一物理区段ID
* 参数说明： const UINT16 routeId, 进路ID 
*            const UINT16 phySectionId, 物理区段ID     
* 返回值  ： CI_ERROR: 失败
*			 >0: 下一物理区段ID
*/
UINT16 GetRouteNextPhySecId(const UINT16 routeId, const UINT16 phySectionId);

/*
* 功能描述：	整理读入的进路配置数据
* 参数说明：	无
* 返回值  ：	CI_SUCCESS,整理成功
*				CI_ERROR,整理失败
*/
UINT8 RouteConfigDataManage(void);


/*
* 功能描述： 获取Bloc进路紧急停车按钮数目
* 参数说明： const UINT16 routeId, 进路ID    
* 返回值  ： 0: 获取数据失败
*			>0: 紧急停车按钮数目      
*/
UINT8 GetRouteBlocEsbSum(const UINT16 routeId);


/*
* 功能描述： 获取Cbtc进路紧急停车按钮数目
* 参数说明： const UINT16 routeId, 进路ID     
* 返回值  ： 0: 获取数据失败
*			>0: 紧急停车按钮数目      
*/
UINT8 GetRouteCbtcEsbSum(const UINT16 routeId);


/*
* 功能描述： 获取Bloc进路紧急停车按钮数组
* 参数说明： const UINT16 routeId, 进路ID    
* 返回值  ： 0: 获取数据失败
*			>0: 紧急停车按钮数组指针      
*/
UINT16* GetRouteBlocEsbIdBuf(const UINT16 routeId);

/*
* 功能描述： 获取Cbtc进路紧急停车按钮数组
* 参数说明： const UINT16 routeId, 进路ID    
* 返回值  ： 0: 获取数据失败
*			>0: 紧急停车按钮数组指针      
*/
UINT16* GetRouteCbtcEsbIdBuf(const UINT16 routeId);

/*
* 功能描述： 获取Bloc进路屏蔽门数目
* 参数说明： const UINT16 routeId, 进路ID     
* 返回值  ： 0: 获取数据失败
*			>0: 紧急停车按钮数目      
*/
UINT8 GetRouteBlocPsdSum(const UINT16 routeId);


/*
* 功能描述： 获取Cbtc进路屏蔽门数目
* 参数说明： const UINT16 routeId, 进路ID    
* 返回值  ： 0: 获取数据失败
*			>0: 紧急停车按钮数目      
*/
UINT8 GetRouteCbtcPsdSum(const UINT16 routeId);

/*
* 功能描述： 获取Bloc进路屏蔽门数组
* 参数说明： const UINT16 routeId, 进路ID     
* 返回值  ： 0: 获取数据失败
*			>0: 紧急停车按钮数组指针      
*/
UINT16* GetRouteBlocPsdIdBuf(const UINT16 routeId);

/*
* 功能描述： 获取Cbtc进路屏蔽门数组
* 参数说明： const UINT16 routeId, 进路ID    
* 返回值  ： 0: 获取数据失败
*			>0: 紧急停车按钮数组指针      
*/
UINT16* GetRouteCbtcPsdIdBuf(const UINT16 routeId);

/*
* 功能描述： 获取进路内方第一逻辑区段ID
* 参数说明： const UINT16 routeId, 进路ID    
* 返回值  ： 0: 获取数据失败
*			>0: 内方第一逻辑区段ID      
*/
UINT16 GetRouteInFirstLogSecId(const UINT16 routeId);

/*
* 功能描述： 获取进路内方最后一个逻辑区段ID
* 参数说明： const UINT16 routeId, 进路ID    
* 返回值  ： 0: 获取数据失败
*			>0: 内方最后一逻辑区段ID      
*/
UINT16 GetRouteInLastLogSecId(const UINT16 routeId);

/*
* 功能描述： 获取指定ID进路对端照查物理区段数目
* 参数说明： const UINT16 routeId, 进路ID    
* 返回值  ： 对端照查物理区段数目
*/
UINT8 GetRouteThatZhaoChaPhySecSum(const UINT16 routeId);

/*
* 功能描述： 获取指定ID进路对端照查物理区段ID数组
* 参数说明： const UINT16 routeId, 进路ID    
* 返回值  ： NULL: 获取数据失败
*			!NULL: 对端照查物理区段ID数组指针
*/
UINT16* GetRouteThatZhaoChaPhySecIdBuf(const UINT16 routeId);

/*
* 功能描述： 获取指定ID进路抵触进路ID数组
* 参数说明： const UINT16 routeId, 进路ID    
* 返回值  ： NULL: 获取数据失败
*			!NULL: 抵触进路ID数组指针
*/
UINT16* GetRouteOpposedRouteIdBuf(const UINT16 routeId);

/*
* 功能描述： 获取指定ID进路抵触进路ID数目
* 参数说明： const UINT16 routeId, 进路ID    
* 返回值  ：获取指定ID进路抵触进路ID数目
*			
*/
UINT8 GetRouteOpposedRouteIdSum(const UINT16 routeId);

/*
* 功能描述： 获取以指定ID进路的起始信号机作为终端信号机的折返进路ID数组
* 参数说明： const UINT16 routeId, 进路ID    
* 返回值  ： NULL: 获取数据失败
*			!NULL: 以指定ID进路的起始信号机作为终端信号机的折返进路ID数组指针
*/
UINT16* GetReturnEndSigAsStartSigRoute(const UINT16 routeId);

/*
* 功能描述：  获取以指定ID进路的起始信号机作为终端信号机的折返进路数目
* 参数说明：  const UINT16 routeId, 进路ID    
* 返回值  ： 以指定ID进路的起始信号机作为终端信号机的折返进路数目
*/
UINT8 GetRtnEndSigAsStartSigRouteSum(const UINT16 routeId);

/*
* 功能描述： 获取Bloc其他联锁检查数目
* 参数说明： const UINT16 routeId, 进路ID     
* 返回值  ： 0: 获取数据失败
*			>0: 紧急停车按钮数目      
*/
UINT8 GetRouteBlocOtherCiSum(const UINT16 routeId);


/*
* 功能描述： 获取Cbtc进路其他联锁检查条件数目
* 参数说明： const UINT16 routeId, 进路ID    
* 返回值  ： 0: 获取数据失败
*			>0: 紧急停车按钮数目      
*/
UINT8 GetRouteCbtcOtherCiSum(const UINT16 routeId);

/*
* 功能描述： 获取Bloc进路其他联锁检查条件数组
* 参数说明： const UINT16 routeId, 进路ID     
* 返回值  ：  Bloc进路其他联锁检查条件数组           
*/
RouteOtherCheckStruct* GetRouteBlocOtherCiBuf(const UINT16 routeId);

/*
* 功能描述： 获取Cbtc进路其他联锁检查条件数组
* 参数说明： const UINT16 routeId, 进路ID    
* 返回值  ： CBTC进路其他联锁检查条件数组         
*/
RouteOtherCheckStruct* GetRouteCbtcOtherCiBuf(const UINT16 routeId);

/*
* 功能描述： 获取防淹门数目
* 参数说明： const UINT16 routeId, 进路ID    
* 返回值  ： 0: 获取数据失败
*			>0: 防淹门数目  
*/
UINT16 GetRouteFloodGateSum(const UINT16 routeId);

/*
* 功能描述： 获取防淹门ID数组
* 参数说明： const UINT16 routeId, 进路ID     
* 返回值  ： 0: 获取数据失败
*			>0: 防淹门ID数组      
*/
UINT16* GetRouteFloodGateBuf(const UINT16 routeId);

/*
* 功能描述： 获取指定ID进路包含带动道岔数目
* 参数说明： const UINT16 routeId, 进路ID    
* 返回值  ： 0: 获取数据失败
*			>0: 道岔数目
*/
UINT8 GetRouteAssocSwitchSum(const UINT16 routeId);

/*
* 功能描述： 获取指定ID进路包含的指定带动道岔的数据
* 参数说明： const UINT16 routeId, 进路ID    
*			const UINT8 drvSwiIndex 带动道岔索引
*			RouteAssocSwitchStruct * pRouteAssocSwitchStru 带动道岔数据结构
* 返回值  ： 	无 
*				
*/
void GetRouteAssocSwitchData(const UINT16 routeId, const UINT8 drvSwiIndex, RouteAssocSwitchStruct * pRouteAssocSwitchStru);

/*
* 功能描述：	整理读入的相邻联锁进路配置数据
* 参数说明：	routeSum 进路数量
*				routeIdBuff 相邻联锁发送给本联锁的进路ID配置数据
* 返回值  ：	1,整理成功
*				0,整理失败
*/
UINT8 AddExtendRouteIdDataManage(UINT16 routeSum,const UINT16 *routeIdBuff);
/*
* 功能描述： 获取风井进路属性
* 参数说明： const UINT16 routeId, 进路ID    
* 返回值  ： 0: 获取数据失败
*			>0: 风井进路属性 
*/
UINT8 GetAirShaftRouteType(const UINT16 routeId);
/*
* 功能描述： 获取自动触发进路属性
* 参数说明： const UINT16 routeId, 进路ID    
* 返回值  ： 0: 获取数据失败
*			>0: 自动触发进路属性 
*/
UINT8 GetAutoTriggerType(const UINT16 routeId);
/*
* 功能描述： 获取指定ID进路触发物理区段结构数组
* 参数说明： const UINT16 routeId, 进路ID    
* 返回值  ： NULL: 获取数据失败
*			!NULL: 触发物理区段ID数组指针
*/
RouteTriggerPhySectionStruct* GetRouteBlocTrigLogSecStru(const UINT16 routeId);
/*
* 功能描述： 检查进路所包含的物理区段书否全为列检库区段
* 参数说明： const UINT16 routeId, 进路ID    
* 返回值  ： CI_SUCCESS: 全为列检库区段
*			CI_ERROR: 不全为列检库区段
*/
UINT8 CheckRoutePhysicalType(const UINT16 routeId);

/*
* 功能描述： 获取指定ID进路初始敌对状态
* 参数说明： const UINT16 routeId, 进路ID    
* 返回值  ： ROUTE_INIT_EMEMY: 初始化敌对
*			 ROUTE_INIT_NOT_EMEMY: 初始化无敌对
*/
UINT8 GetRouteInitEnemyStatus(const UINT16 routeId);

/*
* 功能描述： 获取指定ID进路初始侵限状态
* 参数说明： const UINT16 routeId, 进路ID    
* 返回值  ： ROUTE_INIT_INSTRU: 初始化侵限
*			 ROUTE_INIT_NOT_INSTRU: 初始化无侵限
*/
UINT8 GetRouteInitInstruStatus(const UINT16 routeId);

/*
* 功能描述： 获取指定ID进路初始封锁状态
* 参数说明： const UINT16 routeId, 进路ID    
* 返回值  ： ROUTE_INIT_FS: 初始化封锁
*			 ROUTE_INIT_NOT_FS: 初始化无封锁
*/
UINT8 GetRouteInitFSStatus(const UINT16 routeId);

/*
* 功能描述： 获取指定ID进路调车请求继电器ID
* 参数说明： const UINT16 routeId, 进路ID    
* 返回值  ： >0: 调车请求继电器ID
*			 0: 没有配置
*/
UINT16 GetRouteDCQJId(const UINT16 routeId);

/*
* 功能描述： 获取指定ID进路调车请求继电器2ID
* 参数说明： const UINT16 routeId, 进路ID
* 返回值  ： >0: 调车请求继电器2ID
*			 0: 没有配置
* by cgh 20250603
*/
UINT16 GetRouteDCQJTwoId(const UINT16 routeId);

/*
* 功能描述： 获取指定ID进路调车同意按钮继电器ID
* 参数说明： const UINT16 routeId, 进路ID    
* 返回值  ： >0: 调车请求继电器ID
*			 0: 没有配置
*/
UINT16 GetRouteDCTAJId(const UINT16 routeId);

/*
* 功能描述： 获取指定ID进路状态初锁/初锁异常/预先锁闭延时解锁属性
* 参数说明： const UINT16 routeId, 进路ID    
* 返回值  ： 0: 获取数据失败
*			>0: 进路延时解锁属性      
*/
UINT8 GetRouteNeedDelayUnlock(const UINT16 routeId);

/*
* 功能描述： 获取指定ID进路继电接口下的取消照查继电器ID
* 参数说明： const UINT16 routeId, 进路ID    
* 返回值  ：  0: 获取数据失败
*			 >0: 取消继电器ID
*/
UINT16 GetRouteCancleZCRelayId(const UINT16 routeId);

/*
* 功能描述： 获取指定ID进路继电接口下的对端照查继电器ID
* 参数说明： const UINT16 routeId, 进路ID    
* 返回值  ：  0: 获取数据失败
*			 >0: 继电接口下的对端照查继电器ID
*/
UINT16 GetRouteRelayDuiDuanZcIdOnRelay(const UINT16 routeId);


/*
* 功能描述： 获取指定ID进路继电接口下的本端照查继电器ID
* 参数说明： const UINT16 routeId, 进路ID    
* 返回值  ：  0: 获取数据失败
*			 >0: 继电接口下的本端照查继电器ID
*/
UINT16 GetRouteRelayBenDuanZcIdOnRelay(const UINT16 routeId);

/*
* 功能描述： 获取指定ID进路内是否有方向变化点
* 参数说明： const UINT16 routeId, 进路ID    
* 返回值  ： 0: 获取数据失败
*			>0: 是否有方向变化点
*/
UINT8 GetRouteHaveDirChangePointIn(const UINT16 routeId);

/*
* 功能描述： 获取指定ID进路与保护区段之间是否有方向变化点
* 参数说明： const UINT16 routeId, 进路ID    
* 返回值  ： 0: 获取数据失败
*			>0: 是否有方向变化点
*/
UINT8 GetRouteHaveDirChangePointAfter(const UINT16 routeId);

/*
* 功能描述： 获取指定ID进路指定区段锁闭是否取反
* 参数说明： const UINT16 routeId, 进路ID    
*			 const UINT16 phySecId，物理区段ID
* 返回值  ： 0: 失败
*			>0: 是否取反
*/
UINT8 GetRoutePhySecShouldLockOppose(const UINT16 routeId,const UINT16 phySecId);
/*
* 功能描述： 获取指定ID进路所属虚拟联锁ID
* 参数说明： UINT16 routeId, 进路ID    
* 返回值  ： 0: 获取数据失败
*			>0: 所属虚拟联锁ID      
*/
UINT8 GetRouteBelongVirCiId(const UINT16 routeId);

/*
* 功能描述： 获取指定ID进路包含的逻辑区段数量
* 参数说明： const UINT16 routeId, 进路ID    
*			 
* 返回值  ： 0: 获取失败
*			>0: 逻辑区段数
*/
UINT16 GetRouteLogSectionSum(const UINT16 routeId);

/*
* 功能描述： 获取指定ID进路包含的逻辑区段ID数组
* 参数说明： const UINT16 routeId, 进路ID    
*			 
* 返回值  ： NULL: 获取失败
*			 非空: 逻辑区段ID数组
*/
UINT16* GetRouteLogSectionIdBuf(const UINT16 routeId);

/*
* 功能描述： 获取指定ID进路内道岔关联的非进路内逻辑区段ID数量
* 参数说明： const UINT16 routeId, 进路ID
*
* 返回值  ： 0: 获取失败
*			>0: 逻辑区段数
* add 20221005 适配进路驱动道岔提前扳动
*/
UINT16 GetRouteSwitOtherLogSecSum(const UINT16 routeId);

/*
* 功能描述： 获取指定ID进路内道岔关联的非进路内逻辑区段ID数组
* 参数说明： const UINT16 routeId, 进路ID
*
* 返回值  ： NULL: 获取失败
*			 非空: 逻辑区段ID数组
* add 20221005 适配进路驱动道岔提前扳动
*/
UINT16* GetRouteSwitOtherPosLogSecIdBuf(const UINT16 routeId);

/*
* 功能描述： 获取指定ID进路包含物理区段关联的非进路内且非道岔关联的逻辑区段ID数量
* 参数说明： const UINT16 routeId, 进路ID
*
* 返回值  ： 0: 获取失败
*			>0: 逻辑区段数
* add 20221005 适配进路驱动道岔提前扳动
*/
UINT16 GetRouteOutLogSecSum(const UINT16 routeId);

/*
* 功能描述： 获取指定ID进路包含物理区段关联的非进路内且非道岔关联的逻辑区段ID数组
* 参数说明： const UINT16 routeId, 进路ID
*
* 返回值  ： NULL: 获取失败
*			 非空: 逻辑区段ID数组
* add 20221005 适配进路驱动道岔提前扳动
*/
UINT16* GetRouteOutLogSecSumIdBuf(const UINT16 routeId);

/*
* 功能描述： 获取进路逻辑区段的下一逻辑区段ID
* 参数说明： const UINT16 routeId, 进路ID 
*            const UINT16 logSectionId, 逻辑区段ID     
* 返回值  ： CI_ERROR: 失败
*			 >0: 下一逻辑区段ID
*/
UINT16 GetRouteNextLogSecId(const UINT16 routeId, const UINT16 logSectionId);


/*
* 功能描述： 获取进路对应防护道岔的位置
* 参数说明： const UINT16 wRouteId, 进路ID
*            const UINT16 logSectionId, 逻辑区段ID
* 返回值  ： CI_ERROR: 失败
*			 : SwitchState
*			SWITCH_POSITION_DINGWEI:定位
*			SWITCH_POSITION_FANWEI: 反位
*/
UINT8 GetRouteProtectSwitchState(const UINT16 wRouteId, const UINT16 wSwitchId);

/*
* 功能描述： 获取进路是否包含防护道岔
* 参数说明： const UINT16 wRouteId, 进路ID
*            const UINT16 logSectionId, 逻辑区段ID
* 返回值  ： CI_ERROR: 不包含
*			 CI_SUCCESS: 包含
*/
UINT8 GetRouteIncProtectSwitch(const UINT16 wRouteId, const UINT16 wSwitchId);

/*
* 功能描述： 获取进路最后一个逻辑区段
* 参数说明： const UINT16 routeId, 进路ID
*
* 返回值  ： 逻辑区段ID
*/
UINT16 GetRouteLastLogSectionId(const UINT16 routeId);
/*
* 功能描述： 获取指定ID进路CBTC开放需开放信号机数目
* 参数说明： const UINT16 routeId, 进路ID
* 返回值  ： 0: 获取数据失败
*			>0: 开放需开放信号机数目
*/
UINT8 GetRouteCbtcNeedOpenSigSum(const UINT16 routeId);


/*
* 功能描述： 获取指定ID进路CBTC开放需开放信号机ID数组
* 参数说明： const UINT16 routeId, 进路ID
* 返回值  ： NULL: 获取数据失败
*			!NULL: 开放需开放信号机ID数组指针
*/
UINT16* GetRouteCbtcNeedOpenSigIdBuf(const UINT16 routeId);
/*
* 功能描述： 获取指定ID进路后备开放需开放信号机ID数组
* 参数说明： const UINT16 routeId, 进路ID    
* 返回值  ： NULL: 获取数据失败
*			!NULL: 开放需开放信号机ID数组指针
*/
UINT16* GetBlocRouteOpenNeedOpenSigBuf(const UINT16 routeId);
/*
* 功能描述： 获取指定ID进路后备开放需开放信号机数目
* 参数说明： const UINT16 routeId, 进路ID    
* 返回值  ： 0: 获取数据失败
*			>0: 开放需开放信号机数目
*/
UINT8 GetBlocRouteOpenNeedOpenSigSum(const UINT16 routeId);
/*
* 功能描述： 获取指定ID进路始端信号机为终端的进路数
* 参数说明： UINT16 routeId, 进路ID    
* 返回值  ： 始端信号机为终端的进路数目      
*/
UINT8 GetRouteStartSigisEndRouteSum(const UINT16 routeId);
/*
* 功能描述： 获取指定ID进路始端信号机为终端的进路ID数组
* 参数说明： UINT16 routeId, 进路ID    
* 返回值  ： 始端信号机为终端的进路ID数组     
*/
UINT16* GetRouteStartSigisEndRouteBuf(const UINT16 routeId);



/************************分段进路***************************************/


/*
* 功能描述： 获取指定ID进路的分段进路属性
* 参数说明： const UINT16 routeId, 进路ID
* 返回值  ： ROUTE_MAIN_PROPERTY: 主进路
*           ROUTE_SUB_PROPERTY   子进路
*			ROUTE_INIT_PROPERTY: 普通进路
*            0u                 获取失败
*/
UINT8 GetRouteMainorSubPropert(const UINT16 routeId);

/*
* 功能描述： 获取指定ID主进路的子进路数目
* 参数说明： const UINT16 mainrouteId, 进路ID
* 返回值  ： >0  ROUTE_SUB_PROPERTY   子进路数目
*			0  读取失败
*/
UINT8 GetSubRouteSum(const UINT16 mainrouteId);

/*
* 功能描述： 获取指定ID主进路的子进路ID数据
* 参数说明： const UINT16 mainrouteId, 进路ID
* 返回值  ： !NULL   子进路数据
*			NULL   读取失败
*/
UINT16* GetSubRouteBuff(const UINT16 mainrouteId);

/*
* 功能描述： 获取指定ID子进路的对应的主进路数量
* 参数说明： const UINT16 subrouteId, 进路ID
* 返回值  ： >0   主进路数量
*			0   读取失败
*/
UINT8 GetMainRouteSum(const UINT16 subrouteId);

/*
* 功能描述： 获取指定ID主进路的对应的主进路数据
* 参数说明： const UINT16 subrouteId, 进路ID
* 返回值  ： !NULL   主进路数据
*			NULL   读取失败
*/
UINT16* GetMainRouteBuff(const UINT16 subrouteId);

/*
* 功能描述： 获取指定ID进路声光报警信号开放延时标志
* 参数说明： const UINT16 routeId 进路ID
* 返回值  ： 0: 获取数据失败
*			>0: 延时标志
*/
UINT8 GetRouteSGBJDelayFlag(const UINT16 routeId);

/*
* 功能描述： 获取指定ID进路关联的声光报警器数量
* 参数说明： const UINT16 routeId 进路ID
* 返回值  ：  0: 获取数据失败
*			 >0: 关联的声光报警器数量
*/
UINT16 GetRouteRelSGBJNum(const UINT16 routeId);

/*
* 功能描述： 获取指定ID进路关联的声光报警器ID数组
* 参数说明： const UINT16 routeId 进路ID
* 返回值  ： NULL: 获取数据失败
*			 非NULL: 关联的声光报警器ID数组
*/
UINT16* GetRouteRelSGBJIdBuf(const UINT16 routeId);

/*
* 功能描述： 获取指定ID进路CBTC区域属性
* 参数说明： const UINT16 routeId 进路ID
* 返回值  ： 0: 获取数据失败
*			>0: CBTC区域属性
* Created By LQ 2023.12.08
*/
UINT8 GetRouteCbtcProperty(const UINT16 routeId);

/*
* 功能描述： 获取指定ID进路第一离去逻辑区段ID
* 参数说明： const UINT16 routeId, 进路ID
* 返回值  ： 0: 获取数据失败
*			>0: 离去逻辑区段ID
* BY LC
*/
UINT16 GetRouteLeaveLogicSecId(const UINT16 routeId);

/*
* 功能描述： 获取指定ID进路关联转换进路折返进信号机ID
* 参数说明： const UINT16 routeId 进路ID
* 返回值  ： 0: 未配置对应数据
*			>0: 对应信号机ID
* Created by fan 20240812
*/
UINT16 GetRouteTransRoutZFSigID(const UINT16 routeId);

/*
* 功能描述： 获取指定不属于本联锁进路是否有道岔属于本联锁
* 参数说明： const UINT16 wRouteId, 进路ID
* 返回值  ： CI_ERROR：不存在
*			 CI_SUCCESS：存在
* BY CGH 20241202
*/
UINT8 GetOthCiRouteExistLocalCiSw(const UINT16 wRouteId);

/*
* 功能描述： 检查进路道岔所属联锁
* 参数说明： const UINT16 wRouteId, 进路ID
*	         UINT8* chCiId  道岔所属联锁
* 返回值  ： CI_ERROR：存在道岔属于其它联锁
*            CI_SUCCESS：道岔完全属于进路所在联锁
* BY CGH 20241203
*/
UINT8 CheckRouteSwitchBelCi(const UINT16 wRouteId, UINT8* chCiId);

/*
* 功能描述： 检查进路防护道岔所属联锁
* 参数说明： const UINT16 wRouteId, 进路ID
*            UINT8* chCiId  道岔所属联锁
* 返回值  ： CI_ERROR：存在道岔属于其它联锁
*            CI_SUCCESS：道岔完全属于进路所在联锁
* BY CGH 20241203
*/
UINT8 CheckRouteProSwitchBelCi(const UINT16 wRouteId, UINT8* chCiId);

/*
* 功能描述： 获取指定ID进路关联的风井物理区段数量
* 参数说明： const UINT16 routeId 进路ID
* 返回值  ：  0: 获取数据失败
*			 >0: 关联的风井物理区段数量
* 创建：2026.03.04 by yx
*/
UINT8 GetRouteAiaShaftSecNum(const UINT16 routeId);

/*
* 功能描述： 获取指定ID进路关联的风井物理区段ID数组
* 参数说明： const UINT16 routeId 进路ID
* 返回值  ： NULL: 获取数据失败
*			 非NULL: 关联的风井物理区段ID数组
* 创建：2026.03.04 by yx
*/
UINT16* GetRouteAiaShaftSecIdBuf(const UINT16 routeId);
#ifdef __cplusplus
}
#endif

#endif
