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

#ifndef _SIGNAL_CONFIG_DATA_MANAGE_H_
#define _SIGNAL_CONFIG_DATA_MANAGE_H_


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





#ifdef __cplusplus
extern "C" {
#endif


/*信号机配置数据结构体*/
typedef struct S_SignalConfigDataStruct
{
    UINT16 SignalId;      	                                   /* 信号机ID (配置字段) */
	UINT8 BelongCiId;    	                                   /* 所属联锁ID (配置字段) */
	UINT8 BelongVirCI;                                         /*所属虚拟联锁*/
	UINT16 BelongOcId;    	                                   /* 所属OC ID (配置字段) */
    UINT8 driveEnable;                                         /* 是否可驱动 */
	UINT8 Direction;	  	                                   /*信号机方向(向左/向右) (配置字段)*/
	UINT8 OperDirection;										/*信号机运营方向*/
	UINT8 SignalType;	  	                                   /*信号机类型(列车/调车/列车兼调车) (配置字段)*/
	UINT8 SignalFengDengType;                                 /*信号机封灯类型*/
	UINT16 FirDsRelayId;  	                                   /*1灯丝继电器ID (配置字段)*/
	UINT16 SecDsRelayId;  	                                   /*2灯丝继电器ID (配置字段)*/
	UINT16 LxRelayId;    	                                   /*列车信号继电器ID (配置字段)*/
	UINT16 ZxRelayId;    	                                   /*正线信号继电器ID (配置字段)*/
	UINT16 YxRelayId;    	                                   /*引导信号继电器ID (配置字段)*/
	UINT16 DdRelayId;    	                                   /*点灯继电器ID (配置字段)*/
	UINT16 DxRelayId;    	                                   /*调车信号继电器ID (配置字段)*/
	UINT16 YellowRelayId_wh;								   /*黄灯继电器ID for武汉*/
	UINT16 GreenRelayId_wh;								       /*绿灯继电器ID for武汉*/
	UINT16 BlueDsRelayId_wh;								   /*灯丝继电器ID for武汉*/
	UINT16 RepLxRelayId;								       /*复示列车信号继电器ID for武汉*/
	UINT16 DetainDriveRelayId;								   /*本站驱动扣车继电器ID for武汉*/
	UINT16 detainRelayId;    	                               /*扣车状态采集继电器ID (配置字段)*/
	UINT16 detainDisplayRelayId;    	                       /*扣车状态指示灯继电器ID (配置字段)*/
	UINT16 detainCutRelayId;    	                           /*扣车旁路采集继电器ID (配置字段)*/
	UINT16 detainCutDisplayRelayId;    	                        /*扣车旁路采指示灯电器ID (配置字段)*/
    UINT16 InFirstPhySecId;                                    /*信号机内方第一区段ID (配置字段)*/
    UINT16 InFirstMonoRailRoutePhySecSum;										/*单轨信号机内方进路物理区段数目(配置字段)*/
    UINT16 InFirstMonoRailRouteIdBuf[SIGNAL_IN_1ST_MR_ROUTE_PHYSEC_MAX_SUM];	/*单轨信号机内方进路数目 (配置字段)*/
    UINT16 InFirstMonoRailPhySecIdBuf[SIGNAL_IN_1ST_MR_ROUTE_PHYSEC_MAX_SUM];	/*单轨信号机内方第一物理区段数目 (配置字段)*/
	UINT16 OutFirstPhySecId;                                   /*信号机外方第一物理区段ID (配置字段)*/
	UINT16 relatedLogSecSum;                                   /*关联逻辑区段数目*/
	UINT16 ralatedLogSecIdBuf[SIGNAL_RELATED_LOGSEC_MAX_SUM];  /*关联逻辑区段ID数组*/
	UINT16 relatedAxisSecSum;										/*关联计轴区段数目*/
	UINT16 relatedAxisSecIdBuf[SIGNAL_RELATED_AXISSEC_MAX_SUM];		/*关联计轴区段ID数组*/
    
    UINT16 startSigRouSum;                                   /*始端信号机相同的进路数目*/
    UINT16 startSigRouBuf[SIGNAL_EQUAL_ROUTE_MAX_SUM];       /*始端信号机相同的进路ID数组*/
	UINT8 signalVirtualAttr;								/*信号机虚拟属性（配置字段）*/
	UINT8 signalCrossCloseAttr;								/*信号机调车跨压关灯属性（配置字段）*/
	UINT8 signalProSecSum;/*信号机防护的保护区段ID数量*/
	UINT8 startSigCiRouteSum;/*为了排除ZC自动办理进路等联锁不关心的进路，设置该字段*/
	UINT16 signalPsdIdBuf[SIGNAL_RELATED_PSD_MAX_SUM];/*以该信号机为出站信号机的PSD*/
	UINT16 signalProSecBuf[SIGNAL_PRO_SEC_MAX_SUM];/*信号机防护的保护区段ID数组*/
	UINT8 signalPsdSum;
	UINT8 ConfigZcCiSignalCrossMask;/*是否配置了ZC-CI信号机跨压码位*/
	UINT8 SignalIsThisLine;       /*信号机是否本线路*/

	UINT16 detainRelayId_2;    	            /*扣车状态采集继电器2ID (配置字段)          lc-TSCI合并 20221208*/
	UINT16 detainDisplayRelayId_2;    	    /*扣车状态指示灯继电器2ID (配置字段)        lc-TSCI合并 20221208*/
	UINT16 detainCutRelayId_2;    	        /*扣车旁路采集继电器2ID (配置字段)         lc-TSCI合并 20221208*/
	UINT16 detainCutDisplayRelayId_2;    	/*扣车旁路采指示灯电器2ID (配置字段)      lc-TSCI合并 20221208*/
	UINT16 cancelDetainBtnCollRelayId;      /*取消扣车按钮采集继电器1ID*/
	UINT16 cancelDetainBtnCollRelayId_2;    /*取消扣车按钮采集继电器2ID*/
	UINT8 SignalIsFushiFlag;                /*信号机是否复示信号机,暂定从CI配置数据读*/

	UINT8 SignalFushiSignalNum;      /*信号机复示信号机数*/
	UINT16 SignalFushiSignalIdBuf[SIGNAL_FUSHINUM_MAX];/*信号机复示信号机ID数组*/ 

	UINT16 wProtectLinkId;						/*信号机防护点所处Link add by qw.liu 2022-03-04*/
	UINT32 dwProtectOff;						/*信号机防护点所处Off add by qw.liu 2022-03-04*/
	UINT8  chShineSignal;						/*	信号机亮灭功能标志 add by qw.liu 2022-03-04*/
	UINT16 wOutFirstLinkId;						/* 信号机外方第一link add 2022.3.4 */
	UINT16 wInFirstLinkId;						/* 信号机内方第一link add 2024.10.17 */
	UINT8 signalFenDuanAttr;					/*信号机分段属性（配置字段）*/
	UINT8 signalEsbSum;  /*信号机关联的ESB数量*/
	UINT16 signalEsbIdBuf[SIGNAL_RELATED_ESB_MAX_SUM];  /*信号机关联的ESBID*/

	UINT16  LxDrvRelayId;			/*列车信号驱动继电器ID(配置字段-联络线使用)*/
	UINT16  YxDrvRelayId;			/*引导信号驱动继电器ID(配置字段-联络线使用)*/
	UINT16  DxDrvRelayId;			/*调车信号驱动继电器ID(配置字段-联络线使用)*/
} SignalConfigDataStruct;

typedef struct S_OC_SignalConfigDataStruct
{
	UINT16 SignalId;			/*信号机ID(配置字段)*/
	UINT16 BelongOcId;			/*所属OCID(配置字段)*/
	UINT8  SignalModuleIdAddrA;	/*信号机模块A系ID(配置字段)*/
	UINT8  RedPosAddrA;			/*A系红灯灯位地址(配置字段)*/
	UINT8  YellowPosAddrA;		/*A系黄灯灯位地址(配置字段)*/
	UINT8  GreenPosAddrA;		/*A系绿灯灯位地址(配置字段)*/
	UINT8  WhitePosAddrA;		/*A系白灯灯位地址(配置字段)*/
	UINT8  BluePosAddrA;		/*A系蓝灯灯位地址(配置字段)*/
	UINT8  SignalModuleIdAddrB;	/*信号机模块B系ID(配置字段)*/
	UINT8  RedPosAddrB;			/*B系红灯灯位地址(配置字段)*/
	UINT8  YellowPosAddrB;		/*B系黄灯灯位地址(配置字段)*/
	UINT8  GreenPosAddrB;		/*B系绿灯灯位地址(配置字段)*/
	UINT8  WhitePosAddrB;		/*B系白灯灯位地址(配置字段)*/
	UINT8  BluePosAddrB;		/*B系蓝灯灯位地址(配置字段)*/
	UINT16 DetainBtnCollRelayId;	/*扣车按钮采集继电器ID*/
	UINT16 DetainBtnCollRelayId_2;	/*扣车按钮采集继电器2 ID*/
	UINT16 DetainBtnIndicatorRelayId; /*扣车按钮指示灯继电器ID*/
	UINT16 DetainBtnIndicatorRelayId_2; /*扣车按钮指示灯继电器2 ID*/
	UINT16 DetainCutBtnRelayId; /*扣车旁路按钮继电器ID*/
	UINT16 DetainCutBtnRelayId_2; /*扣车旁路按钮继电器2 ID*/
	UINT16 DetainCutBtnIndicatorRelayId; /*扣车旁路按钮指示灯继电器ID*/
	UINT16 DetainCutBtnIndicatorRelayId_2; /*扣车旁路按钮指示灯继电器2 ID*/
	UINT16 CancelDetainBtnCollRelayId;	/*取消扣车按钮采集继电器1 ID*/
	UINT16 CancelDetainBtnCollRelayId_2;	/*取消扣车按钮采集继电器2 ID*/
}OCSignalConfigDataStruct;

typedef struct S_SignalDrvTypeOpenColorConfig
{
	UINT16 SignalId;		/*信号机id*/
	UINT8 BlockOpenColorValue[SIGNAL_BLOCK_OPEN_COLORS_MAX_NUM];/*后备开放颜色*/
}SignalDrvTypeOpenColorConfig;


/*******************************全局变量声明*******************************/
extern SignalConfigDataStruct SignalConfigDataStru[SIGNAL_SUM_MAX];   /*定义信号机数据配置结构体,cgh-合并CID-2539-1：此处声明不进行初始化，统一放到InitAllStaticDataStr函数中进行初始化，为解决生成内核过大得问题*/
extern UINT16 LocalCiSignalIdBuf[SIGNAL_SUM_MAX];                  /*定义本地联锁信号机ID映射数组*/
extern INT16 SignalCurSum;   /*属于本联锁信号机当前总数*/
extern UINT16 totalSignalNum;/*本联锁和相邻联锁发送给本联锁信号机总数*/
extern UINT16 SignalTypeNum;	/*配置的信号机类型数量*/
extern SignalDrvTypeOpenColorConfig SignalTypeOpenColorConfigStru[SIGNAL_MAX_DRVCOLL_TYPE_NUM];

/*
* 功能描述： 获取指定ID信号机索引号
* 参数说明： const UINT16 signalId, 信号机D
* 返回值  ： SIGNAL_SUM_MAX: 获取数据失败
*			<SIGNAL_SUM_MAX: 查找成功
*/
UINT16 GetSignalConfigBufIndex(const UINT16 signalId);

/*
* 功能描述：  获取指定ID信号机数据
* 参数说明：  
* 返回值  ： 
             SignalConfigDataStruct *   
*/
SignalConfigDataStruct *GetSignalConfigData(void);

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

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

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

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

/*
* 功能描述： 获取指定ID信号机的运营方向
* 参数说明： const UINT16 signalId, 信号机ID    
* 返回值  ： 0: 获取数据失败
*			>0: 信号机运营方向 
*/
UINT8 GetSignalOperDirection(const UINT16 signalId);

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

/*
* 功能描述： 获取指定ID信号机1灯丝继电器ID
* 参数说明： const UINT16 signalId, 信号机ID    
* 返回值  ：  0: 获取数据失败
*			 >0: 1灯丝继电器ID      
*/
UINT16 GetSignalFirstDsRelayId(const UINT16 signalId);

/*
* 功能描述： 获取指定ID信号机2灯丝继电器ID
* 参数说明： const UINT16 signalId, 信号机ID    
* 返回值  ：  0: 获取数据失败
*			 >0: 2灯丝继电器ID      
*/
UINT16 GetSignalSecondDsRelayId(const UINT16 signalId);

/*
* 功能描述： 获取指定ID信号机列车信号继电器ID
* 参数说明： const UINT16 signalId, 信号机ID    
* 返回值  ：  0: 获取数据失败
*			 >0: 列车信号继电器ID      
*/
UINT16 GetSignalLxRelayId(const UINT16 signalId);

/*
* 功能描述： 获取指定ID信号机正线信号继电器ID
* 参数说明： const UINT16 signalId, 信号机ID    
* 返回值  ：  0: 获取数据失败
*			 >0: 正线信号继电器ID      
*/
UINT16 GetSignalZxRelayId(const UINT16 signalId);

/*
* 功能描述： 获取指定ID信号机引导信号继电器ID
* 参数说明： const UINT16 signalId, 信号机ID    
* 返回值  ：  0: 获取数据失败
*			 >0: 引导信号继电器ID      
*/
UINT16 GetSignalYxRelayId(const UINT16 signalId);

/*
* 功能描述： 获取指定ID信号机点灯继电器ID
* 参数说明： const UINT16 signalId, 信号机ID    
* 返回值  ：  0: 获取数据失败
*			 >0: 点灯继电器ID      
*/
UINT16 GetSignalDdRelayId(const UINT16 signalId);

/*
* 功能描述： 获取指定ID信号机调车继电器ID
* 参数说明： const UINT16 signalId, 信号机ID    
* 返回值  ：  0: 获取数据失败
*			 >0: 调车继电器ID      
*/
UINT16 GetSignalDxRelayId(const UINT16 signalId);

/*
* 功能描述： 获取指定ID信号机黄灯继电器ID
* 参数说明： const UINT16 signalId, 信号机ID    
* 返回值  ：  0: 获取数据失败
*			 >0: 调车继电器ID      
*/
UINT16 GetSignalYellowRelayId(const UINT16 signalId);

/*
* 功能描述： 获取指定ID信号机绿灯继电器ID
* 参数说明： const UINT16 signalId, 信号机ID    
* 返回值  ：  0: 获取数据失败
*			 >0: 调车继电器ID      
*/
UINT16 GetSignalGreenRelayId(const UINT16 signalId);

/*
* 功能描述： 获取指定ID信号机蓝灯继电器ID
* 参数说明： const UINT16 signalId, 信号机ID    
* 返回值  ：  0: 获取数据失败
*			 >0: 调车继电器ID      
*/
UINT16 GetSignalBlueRelayId(const UINT16 signalId);

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

/*
* 功能描述： 获取指定ID信号机的内方第一物理区段ID
* 参数说明： const UINT16 signalId, 信号机ID
*            const UINT16 routeId, 进路ID
* 返回值  ： 0: 获取数据失败
*			>0: 内方第一物理区段ID
*/
UINT16 GetSignalInFirstPhySecId(const UINT16 signalId,const UINT16 routeId);

/*
* 功能描述： 获取指定ID信号机的内方锁闭的第一物理区段ID
* 参数说明： const UINT16 signalId, 信号机ID    
* 返回值  ： 0: 获取数据失败
*			>0: 内方锁闭的第一物理区段ID
*/
UINT16 GetSignalInFirstLockedPhySecId(const UINT16 signalId);

/*
* 功能描述： 获取指定ID信号机的外方第一物理区段ID
* 参数说明： const UINT16 signalId, 信号机ID    
* 返回值  ： 0: 获取数据失败
*			>0: 外方第一物理区段ID
*/
UINT16 GetSignalOutFirstPhySecId(const UINT16 signalId);

/*
* 功能描述： 获取指定ID信号机关联的逻辑区段数目
* 参数说明： const UINT16 signalId, 信号机ID    
* 返回值  ： 0: 获取数据失败
*			>0: 关联物理区段的数目
*/
UINT16 GetSignalRelatedLogSecSum(const UINT16 signalId);

/*
* 功能描述： 获取指定ID信号机关联的逻辑区段ID数组
* 参数说明： const UINT16 signalId, 信号机ID    
* 返回值  ： NULL: 获取数据失败
*			!NULL: 关联物理区段的数组首地址
*/
UINT16 *GetSignalRelatedLogSecIdBuf(const UINT16 signalId);


/*
* 功能描述： 获取指定ID信号机是否已对外驱动
* 参数说明： const UINT16 signalId, 信号机ID    
* 返回值  ： SIGNAL_DRV_ENABLE: 即采集又驱动
*			SIGNAL_DRV_DISABLE: 即采集不驱动
*/
UINT8 GetSignalDrvEnable(const UINT16 signalId);

/*
* 功能描述： 获取指定ID信号机封灯类型
* 参数说明： const UINT16 signalId, 信号机ID    
* 返回值  ：
*			SIGNAL_TYPE_FENG_YELLOW     0x55           封黄灯
*           SIGNAL_TYPE_FENG_GREEN      0xaa           封绿灯 
*           SIGNAL_TYPE_FENG_NO         0xff           不封灯
*/
UINT8 GetSignalFengDengType(const UINT16 signalId);


/*
* 功能描述： 获取始端信号机相同的进路数目
* 参数说明： const UINT16 signalId, 信号机ID    
* 返回值  ： 0: 获取数据失败
*			>0: 始端信号机相同的进路数目
*/
UINT16 GetStartSignalRouteSum(const UINT16 signalId);
/*
* 功能描述： 获取始端信号机相同的进路ID数组
* 参数说明： const UINT16 signalId, 信号机ID    
* 返回值  ： 0: 获取数据失败
*			>0: 始端信号机相同的进路ID数组
*/
UINT16* GetStartSignalRouteBuf(const UINT16 signalId);
/*
* 功能描述：	整理读入的相邻联锁信号机配置数据
* 参数说明：	signalSum 信号机数量
*				signalIdBuff 信号机ID配置数据
* 返回值  ：	1,整理成功
*				0,整理失败
*/
UINT8 AddExtendSignalIdDataManage(UINT16 sigSum,const UINT16 *signalIdBuff);

/*
* 功能描述： 获取相邻联锁发送给本联锁以及本联锁信号机当前总数
* 参数说明： void    
* 返回值  ： 0: 获取数据失败
*			>0: 本联锁和相邻联锁发送给本联锁信号机总数
*/
UINT16 GetTotalSignalCurNum(void);

/*
* 功能描述： 获取指定ID信号机是否为虚拟信号机
* 参数说明： const UINT16 signalId, 信号机ID    
* 返回值  ： 0: 获取数据失败
*			>0: 信号机类型 
*/
UINT8 GetSignalVirtualAttr(const UINT16 signalId);

/*
* 功能描述： 获取以给定信号机为出站信号机的PSD的ID数组
* 参数说明： const UINT16 signalId, 信号机ID
* 返回值  ： 0: 获取数据失败
*			>0: 以给定信号机为出站信号机的PSD的ID数组
*/
UINT16* GetSignalRelatedPsdBuf(const UINT16 signalId);

/*
* 功能描述： 获取以给定信号机为出站信号机的PSD的ID数量
* 参数说明： const UINT16 signalId, 信号机ID
* 返回值  ： 0: 获取数据失败
*			>0: 以给定信号机为出站信号机的PSD的ID数量
*/
UINT8 GetSignalRelatedPsdSum(const UINT16 signalId);
/*
* 功能描述： 获取信号机防护的保护区段数量
* 参数说明： const UINT16 signalId, 信号机ID
* 返回值  ： 
	信号机防护的保护区段数量
*/
UINT8 GetSignalProSecIdSum(const UINT16 signalId);
/*
* 功能描述： 获取信号机防护的保护区段ID数组
* 参数说明： const UINT16 signalId, 信号机ID
* 返回值  ： 
	信号机防护的保护区段ID数组
*/
UINT16* GetSignalProSecIdBuf(const UINT16 signalId);

/*
* 功能描述： 获取始端信号机相同的CI关心的进路数目
* 参数说明： const UINT16 signalId, 信号机ID    
* 返回值  ： 0: 获取数据失败
*			>0: 始端信号机相同的CI关心的进路数目
*/
UINT16 GetStartSignalCIRouteSum(const UINT16 signalId);

/*
* 功能描述： 获取指定ID信号机关联的计轴区段数目
* 参数说明： const UINT16 signalId, 信号机ID    
* 返回值  ： 0: 获取数据失败
*			>0: 关联计轴区段的数目
*/
UINT16 GetSignalRelatedAxisSecSum(const UINT16 signalId);

/*
* 功能描述： 获取指定ID信号机关联的计轴区段ID数组
* 参数说明： const UINT16 signalId, 信号机ID    
* 返回值  ： NULL: 获取数据失败
*			!NULL: 关联计轴区段的数组首地址
*/
UINT16 *GetSignalRelatedAxisSecIdBuf(const UINT16 signalId);

/*
* 功能描述： 获取指定ID信号机是否为调车跨压关灯信号机
* 参数说明： const UINT16 signalId, 信号机ID    
* 返回值  ： 0: 获取数据失败
*			>0: 信号机类型 
*/
UINT8 GetSignalCrossCloseAttr(const UINT16 signalId);

/*
* 功能描述： 获取指定ID信号机扣车状态采集继电器ID
* 参数说明： const UINT16 signalId, 信号机ID    
* 返回值  ：  0: 获取数据失败
*			 >0: 扣车状态采集继电器ID      
*/
UINT16 GetSignalDetainRelayId(const UINT16 signalId);

/*
* 功能描述： 获取指定ID信号机是否配置了跨压码位
* 参数说明： const UINT16 sigalId, 信号机ID    
* 返回值  ：  0: 获取数据失败
*		 >0: 扣车状态采集继电器ID     
*/
UINT8 GetSigConfZcCiSignalCrossMask(const UINT16 signalId);

/**********************分界线 信号机驱采类型后备颜色**********************************************/

/*
* 功能描述： 获取指定ID信号机驱采类型对应后备开放颜色
* 参数说明： UINT16 wSignalId, 信号机ID
* 返回值  ：  0: 获取数据失败
*			  >0: 后备开放颜色颜色     
*/
UINT8 GetSignalBlockOpenColorValue(UINT16 wSignalId);
/**********************分界线 信号机驱采类型后备颜色****END**********************************************/


/*
* 功能描述： 获取指定ID信号机复示列车信号继电器
* 参数说明： const UINT16 sigalId, 信号机ID    
* 返回值  ：  0: 获取数据失败
*		 >0: 复视列车信号继电器     
*/
UINT16 GetSignalRepLxRelayId(const UINT16 signalId);



/*
* 功能描述： 获取指定ID信号机扣车驱动继电器ID
* 参数说明： const UINT16 sigalId, 信号机ID    
* 返回值  ：  0: 获取数据失败
*		 >0: 扣车驱动继电器     
*/
UINT16 GetSignalDetainDriveRelayId(const UINT16 signalId);

/*
* 功能描述： 获取指定ID信号机所属Oc ID
* 参数说明： const UINT16 signalId, 信号机ID
* 返回值  ： 0: 获取数据失败
*			>0: 所属Oc ID
*/
UINT16 GetSignalBelongOcId(const UINT16 signalId);

/*
* 功能描述： 设置指定ID信号机的内方第一物理区段ID
* 参数说明： const UINT16 signalId, 信号机ID
*            const UINT16 PhysicalSectionId, 区段ID
* 返回值  ： 无
*			 
*/
void SetSignalInFirstPhySecId(const UINT16 signalId, const UINT16 PhysicalSectionId);

/*
* 功能描述： 获取信号机颜色级别
* 参数说明： const UINT16 signalColor, 信号机颜色
* 返回值  ： SIGNAL_LIGHT_EXTICT_STATE_YES: 灭灯
*			SIGNAL_LIGHT_EXTICT_STATE_NO: 点灯
*/
UINT8 GetSignalColorLevel(const UINT8 signalColor);


/*
* 功能描述： 获取指定ID信号机扣车状态指示灯继电器ID
* 参数说明： const UINT16 signalId, 信号机ID    
* 返回值  ：  0: 获取数据失败
*			 >0: 扣车状态指示灯继电器ID      
*/
UINT16 GetSignalDetainDisRelayId(const UINT16 signalId);


/*
* 功能描述： 获取指定ID信号机扣车旁路状态指示灯继电器ID
* 参数说明： const UINT16 signalId, 信号机ID    
* 返回值  ：  0: 获取数据失败
*			 >0: 扣车旁路状态指示灯继电器ID      
*/
UINT16 GetSignalDetainCutDisRelayId(const UINT16 signalId);
/*
* 功能描述： 获取指定ID信号机所属虚拟联锁ID
* 参数说明： const UINT16 signalId, 信号机ID    
* 返回值  ： 0: 获取数据失败
*			>0: 所属虚拟联锁ID      
*/
UINT8 GetSignalBelongVirCiId(const UINT16 signalId);


/*
* 功能描述： 获取指定ID信号机是否为本线路
* 参数说明： const UINT16 signalId, 信号机ID    
* 返回值  ： 0: 获取数据失败
*			>0: 是否为本线路      
*/
UINT8 GetSignalIsThisLineState(const UINT16 signalId);

/*
* 功能描述： 获取指定ID信号机是否为复示信号机
* 参数说明： const UINT16 signalId, 信号机ID    
* 返回值  ： 0: 获取数据失败
*			>0: 是否为复示信号机     
*/
UINT8 GetSignalIsfushiFlag(const UINT16 signalId);
/*
* 功能描述： 设置指定ID信号机是否为复示信号机
* 参数说明： const UINT16 signalId, 信号机ID   
*            const UINT8 signalIsFushiFlag 复示信号机标志      
*/
void SetSignalIsfushiFlag(const UINT16 signalId,const UINT8 signalIsFushiFlag);
/*
* 功能描述： 设置指定ID信号机的复示信号机数
* 参数说明： const UINT16 signalId, 信号机ID   
*           const UINT8 fushiSigNum 复示信号机数量
*/
void SetSignalFushiSignalNum(const UINT16 signalId,const UINT8 fushiSigNum);
/*
* 功能描述： 设置指定ID信号机的复示信号机数
* 参数说明： const UINT16 signalId, 信号机ID  
* 返回值： 复示信号机数
              
*/
UINT8 GetSignalFushiSignalNum(const UINT16 signalId);
/*
* 功能描述： 设置指定ID信号机的复示信号机ID数组
* 参数说明： const UINT16 signalId, 信号机ID  
* 返回值： 复示信号机ID数组
              
*/
UINT16* GetSignalFushiSignalIdBuf(const UINT16 signalId);

/*
* 功能描述： 获取指定ID信号机亮灭功能标志
* 参数说明： const UINT16 signalId, 信号机ID
* 返回值  ： UINT8_MAX: 获取数据失败
*			其他: Link OFF
* 创    建：qw.liu 2022-03-04
*/
UINT8 GetSignalShine(const UINT16 signalId);

/*
* 功能描述： 获取指定ID信号机防护点所处OFF
* 参数说明： const UINT16 signalId, 信号机ID
* 返回值  ： UINT32_MAX: 获取数据失败
*			 其他: Link OFF
* 创    建：qw.liu 2022-03-04
*/
UINT32 GetSignalProtectLinkOff(const UINT16 signalId);

/*
* 功能描述： 获取指定ID信号机防护点所处Link
* 参数说明： const UINT16 signalId, 信号机ID
* 返回值  ： 0: 获取数据失败
*			>0: LinkId
* 创    建：qw.liu 2022-03-04
*/
UINT16 GetSignalProtectLink(const UINT16 signalId);

/*
* 功能描述： 获取指定ID信号机外方第一link
* 参数说明： const UINT16 signalId, 信号机ID
* 返回值  ： 0: 获取数据失败
*			>0: LinkId
* 创    建：2022-03-04
*/
UINT16 GetSignalOutFirstLink(const UINT16 signalId);

/*
* 功能描述： 获取指定ID信号机扣车旁路继电器ID
* 参数说明： const UINT16 signalId, 信号机ID
* 返回值  ：  0: 获取数据失败
*			 >0: 扣车状态采集继电器ID
*/
UINT16 GetSignalDetainCutRelayId(const UINT16 signalId);

/*
* 功能描述： 获取指定ID信号机扣车旁路继电器2 ID
* 参数说明： const UINT16 signalId, 信号机ID
* 返回值  ：  0: 获取数据失败
*			 >0: 扣车状态采集继电器ID
*/
UINT16 GetSignalDetainCutRelayId_2(const UINT16 signalId);
/*
* 功能描述： 获取指定ID信号机扣车状态采集继电器2 ID
* 参数说明： const UINT16 signalId, 信号机ID
* 返回值  ：  0: 获取数据失败
*			 >0: 扣车状态采集继电器ID
*/
UINT16 GetSignalDetainRelayId_2(const UINT16 signalId);
/*
* 功能描述： 获取指定ID信号机扣车旁路状态指示灯继电器2 ID
* 参数说明： const UINT16 signalId, 信号机ID
* 返回值  ：  0: 获取数据失败
*			 >0: 扣车旁路状态指示灯继电器ID
*/
UINT16 GetSignalDetainCutDisRelayId_2(const UINT16 signalId);
/*
* 功能描述： 获取指定ID信号机扣车状态指示灯继电器2 ID
* 参数说明： const UINT16 signalId, 信号机ID
* 返回值  ：  0: 获取数据失败
*			 >0: 扣车状态指示灯继电器ID
*/
UINT16 GetSignalDetainDisRelayId_2(const UINT16 signalId);

/*
* 功能描述： 获取指定ID信号机取消扣车按钮采集继电器1ID
* 参数说明： const UINT16 signalId, 信号机ID
* 返回值  ：  0: 获取数据失败
*			 >0: 取消扣车按钮继电器1ID
*/
UINT16 GetSignalCancelDetainBtnRelayId(const UINT16 signalId);

/*
* 功能描述： 获取指定ID信号机取消扣车按钮采集继电器2ID
* 参数说明： const UINT16 signalId, 信号机ID
* 返回值  ：  0: 获取数据失败
*			 >0: 取消扣车按钮继电器2ID
*/
UINT16 GetSigCancelDetainBtnRelayId_2(const UINT16 signalId);

/*
* 功能描述： 获取指定信号机关联的ESB数量
* 参数说明： const UINT16 signalId, 信号机ID
* 返回值  ： 0: 获取数据失败
*			>0: 信号机关联的ESB数量
*/
UINT8 GetSignalRelatedEsbSum(const UINT16 signalId);

/*
* 功能描述： 获取指定信号机关联的ESB的ID数组
* 参数说明： const UINT16 signalId, 信号机ID
* 返回值  ： NULL: 获取数据失败
*			 非NULL: 信号机关联的ESB的ID数组
*/
UINT16* GetSignalRelatedEsbBuf(const UINT16 signalId);

/*
* 功能描述： 获取指定ID信号机列车信号驱动继电器ID（联络线使用）
* 参数说明： const UINT16 signalId, 信号机ID
* 返回值  ：  0: 获取数据失败
*			 >0: 列车信号驱动继电器ID
*/
UINT16 GetSignalLxDrvRelayId(const UINT16 signalId);

/*
* 功能描述： 获取指定ID信号机引导信号驱动继电器ID（联络线使用）
* 参数说明： const UINT16 signalId, 信号机ID
* 返回值  ：  0: 获取数据失败
*			 >0: 引导信号驱动继电器ID
*/
UINT16 GetSignalYxDrvRelayId(const UINT16 signalId);

/*
* 功能描述： 获取指定ID信号机调车信号驱动继电器ID（联络线使用）
* 参数说明： const UINT16 signalId, 信号机ID
* 返回值  ：  0: 获取数据失败
*			 >0: 调车信号驱动继电器ID
*/
UINT16 GetSignalDxDrvRelayId(const UINT16 signalId);


/*
* 功能描述： 获取指定ID信号机外方第一逻辑区段
* 参数说明： const UINT16 signalId, 信号机ID
* 返回值  ：  0: 获取数据失败
*			 >0: 逻辑区段ID
*/
UINT16 GetSignalOutFirstLogSec(const UINT16 signalId);

#ifdef __cplusplus
}
#endif

#endif
