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

#ifndef _SWITCH_DATA_MANAGE_H_
#define _SWITCH_DATA_MANAGE_H_

#include "SwitchDefine.h"
#include "SwitchConfigDataManage.h"
#include "CommonTypes.h"
#include "../2oo2/2oo2InterfaceDataManage.h"
#include "../System/CiSystemDefine.h"
#include "../System/SystemParameterManage.h"
#include "../LogRecord/LogRecord.h"
#include "dquVobcCommonStru.h"


#ifdef __cplusplus
extern "C" {
#endif


/*道岔数据结构体*/
typedef struct S_SwitchDataStruct
{
    UINT16 SwitchId;                /*道岔ID (配置字段)*/
	UINT8 YLockState;               /*道岔引导总锁状态(未引导总锁/引导总锁) (动态字段)*/
	UINT8 LockStatus;               /*道岔锁闭状态 (动态字段)*/
	UINT8 FLockState;               /*道岔封锁状态(未封锁/封锁) (动态字段)*/
	UINT8 SwitchPrePosition;        /*道岔之前位置 (动态字段)*/
	UINT8 SwitchCurPosition;        /*道岔当前位置 (动态字段)*/
	UINT8 SingleSwitchCurPosition;   /*单独道岔当前位置：包含三开和五开道岔 (动态字段)*/
	UINT8 SwitchColPosition;   /*容忍前道岔采集位置*/
	UINT8 SwitchDrivePos;           /*道岔驱动位置：包含三开和五开道岔 (动态字段)*/
	UINT8 SwitchExpDrvPos;          /*道岔期望驱动位置：包含三开和五开道岔 (动态字段)*/
	UINT32 SwitMoveStartCycNum;     /*道岔动作起始周期号 (动态字段)*/
	UINT32 SwitDriveStartCycNum;    /*道岔驱动起始周期号 (动态字段)*/
	UINT8 chSwitchDrivedFlag;       /*道岔被驱动过标志*/
    UINT8 SwitchDanCaoPostition;    /*道岔单操位置*/    
	UINT8 switchDrivingState;		/*道岔驱动状态*/
	UINT8 switchPreExpDrvPos;		/*记录该道岔之前期望驱动位置*/
	UINT8 switchDrivOvtmDrvPos;		/*道岔驱动超时位置*/
	/*单轨道岔*/
	UINT8 switchFaultState;             /*道岔故障状态*/
	UINT8 switchApplyState;			/* 道岔现场申请状态*/
	UINT8 switchAuthorizeState;			/*道岔现场授权状态*/
	UINT8 switchKRState;			/*道岔可绕状态*/
	UINT8 switchGrndCtrlApprState;			/*道岔现场控制同意状态*/
	UINT8 switchLastValidDrvPos;	/*道岔最近的一次有效驱动位置*/
	UINT32 switchLastValidDrvPosCycleNum;	/*道岔最近的一次有效驱动位置产生的周期号*/
	UINT16 UsingBelongOverlapId;    /*征用该道岔的保护区段ID(若为0 则表示未征用)*/

	UINT8 PLockedRouteNum;/*被防护锁闭的进路ID数量，只能在本文件使用*/
	UINT16 PLockedRouteIdArr[SWITCH_MAX_PROTECT_LOCKED_NUM]; /*被防护锁闭的进路ID数组，只能在本文件使用*/

	UINT8 PLockedOverlapNum;/*被防护锁闭的保护区段数量，只能在本文件使用*/
	UINT16 PLockedOverlapIdArr[SWITCH_MAX_PROTECT_LOCKED_NUM];/*被防护锁闭的保护区段Id数组，只能在本文件使用*/
	
	UINT8 PLockedNonRouteNum;/*被防护锁闭的非进路id数量，只能在本文件使用*/
	UINT16 PLockedNonRouteIdArr[SWITCH_MAX_PROTECT_LOCKED_NUM];/*被防护锁闭的非进路id数组，只能在本文件使用*/

	UINT8 PLockedLogRouteNum;/*被防护锁闭的逻辑进路id数量，只能在本文件使用*/
	UINT16 PLockedLogRouteIdArr[SWITCH_MAX_PROTECT_LOCKED_NUM];/*被防护锁闭的逻辑进路id数组，只能在本文件使用*/
	
	UINT32 DFHRelayValidCycNum;          /*DFH继电器有效，DFH继电器吸起状态有效周期数*/
	UINT32 SigleDFHRelayValidCycNum;     /*单独DFH继电器有效，DFH继电器吸起状态有效周期数*/
	UINT32 YCRelayValidCycNum;          /*YC继电器有效，YC继电器吸起状态有效周期数*/
	UINT32 SigleYCRelayValidCycNum;     /*单独YC继电器有效，YC继电器吸起状态有效周期数*/
	UINT8 ConnetSwitchDsState;          /*联络线道岔单锁状态*/
	UINT8 SwitchByPassState;            /*道岔旁路状态*/
	UINT32 SwitchBypassStartCycNum;		/*联络线道岔旁路未及时取消起始周期*/
	UINT8 CiToAtsSwitchByPassNoCancelFlag;	/*是否已经向ATS发送过未计时取消报警的标志*/
	UINT8 chSwitchJichaState; /*道岔挤岔状态*/
	UINT8 cSwitchUsingState;  /*道岔征用状态：0x11：未征用，0x22：征用，0x44：申请征用，0x88：申请取消征用*/
	UINT32 SwitchCollTolerateCycNum; /*道岔采集四开容忍周期*/
	UINT8 PLockedAxisSecNum;/*被防护锁闭的计轴区段id数量，只能在本文件使用*/
	UINT16 PLockedAxisSecIdArr[SWITCH_MAX_PROTECT_LOCKED_NUM];/*被防护锁闭的计轴区段id数组，只能在本文件使用*/

} SwitchDataStruct;



/*******************************全局变量声明*******************************/
extern SwitchDataStruct SwitchDataStru[SWITCH_SUM_MAX];   /*定义道岔数据结构体*/
/*
* 功能描述： 获取指定ID道岔数据
* 参数说明： 
* 返回值  ： 
            SwitchDataStruct *      
*/
SwitchDataStruct *GetSwitchData(void);

/*
* 功能描述： 获取指定ID道岔引导总锁状态
* 参数说明： const UINT16 switchId, 道岔ID
* 返回值  ： 0: 获取数据失败
*			>0: 引导总锁状态        
*/
UINT8 GetSwitchYLockState(const UINT16 switchId);

/*
* 功能描述： 设置指定ID道岔引导总锁状态
* 参数说明： const UINT16 switchId, 道岔ID
*			 const UINT8 yLockState, 引导总锁状态
* 返回值  ： 无
*			       
*/
void SetSwitchYLockState(const UINT16 switchId, const UINT8 yLockState);

/*
* 功能描述： 获取指定ID道岔锁闭状态
* 参数说明： const UINT16 switchId, 道岔ID
* 返回值  ： 0: 获取数据失败
*			>0: 锁闭状态        
*/
UINT8 GetSwitchLockStatus(const UINT16 switchId);



/*
* 功能描述： 保存其它控区指定ID道岔锁闭状态
* 参数说明： const UINT16 switchId, 道岔ID
*			 const UINT8 lockStatus, 锁闭状态
* 返回值  ： 无
* Modified By LQ 2024.12.09（适配防护道岔跨控区）
*/
void SetOtherCiSwitchLockStatus(const UINT16 switchId, const UINT8 lockStatus);

/*
* 功能描述： 设置指定ID道岔锁闭状态
* 参数说明： 
*			 const UINT8 lockType,锁闭类型
*			 const UINT16 pLockId,锁闭id
*			 const UINT16 switchId, 道岔ID
*			 const UINT8 lockCommand, 锁闭命令
* 返回值  ： void     
*/
void SetSwitchLockStatus(const UINT8 pLockType,const UINT16 pLockId,const UINT16 switchId, const UINT8 lockCommand);

/*
* 功能描述： 设置指定ID道岔锁闭状态
* 参数说明：
*			 const UINT8 lockType,锁闭类型
*			 const UINT16 pLockId,锁闭的逻辑区段id
*			 const UINT16 switchId, 道岔ID
*			 const UINT8 lockCommand, 锁闭命令
* 返回值  ： 0: 设置失败
*			 1: 设置成功
*/
void SetSwitchLockStaUseByLogRoute(const UINT16 pLockLogRouteId, const UINT16 switchId, const UINT8 lockCommand);

/*
* 功能描述： 获取指定ID道岔封锁状态
* 参数说明： const UINT16 switchId, 道岔ID
* 返回值  ： 0: 获取数据失败
*			>0: 单锁状态        
*/
UINT8 GetSwitchFLockState(const UINT16 switchId);

/*
* 功能描述： 设置指定ID道岔封锁状态
* 参数说明： const UINT16 switchId, 道岔ID
*			 const UINT8 fLockState, 封锁状态
* 返回值  ： 无
*			      
*/
void SetSwitchFLockState(const UINT16 switchId, const UINT8 fLockState);

/*
* 功能描述： 获取指定ID道岔之前位置
* 参数说明： const UINT16 switchId, 道岔ID
* 返回值  ： 0: 获取数据失败
*			>0: 之前位置        
*/
UINT8 GetSwitchPrePosition(const UINT16 switchId);

/*
* 功能描述： 设置指定ID道岔之前位置
* 参数说明： const UINT16 switchId, 道岔ID
*			 const UINT8 prePosition, 之前位置
* 返回值  ： 0: 设置失败
*			 1: 设置成功      
*/
UINT8 SetSwitchPrePosition(const UINT16 switchId, const UINT8 prePosition);

/*
* 功能描述： 获取指定ID道岔当前位置
* 参数说明： const UINT16 switchId, 道岔ID
* 返回值  ： SWITCH_POSITION_INVALID: 位置无效
*			 其它: 当前位置
*/
UINT8 GetSwitchCurPosition(const UINT16 switchId);

/*
* 功能描述： 获取指定ID单独道岔当前位置
* 参数说明： const UINT16 switchId, 道岔ID
* 返回值  ： 0: 获取数据失败
*			>0: 当前位置        
*/
UINT8 GetSingleSwitchCurPosition(const UINT16 switchId);
/*
* 功能描述： 设置指定ID单独道岔当前位置
* 参数说明： const UINT16 switchId, 道岔ID
*			 const UINT8 curPosition, 当前位置
* 返回值  ： 无
*			      
*/
void SetSingleSwitchCurPosition(const UINT16 switchId, const UINT8 curPosition);

/*
* 功能描述： 设置指定ID道岔当前位置
* 参数说明： const UINT16 switchId, 道岔ID
*			 const UINT8 curPosition, 当前位置
* 返回值  ： 无
*			       
*/
void SetSwitchCurPosition(const UINT16 switchId, const UINT8 curPosition);

/*
* 功能描述： 获取指定ID道岔驱动位置
* 参数说明： const UINT16 switchId, 道岔ID
* 返回值  ： 0: 获取数据失败
*			>0: 驱动位置        
*/
UINT8 GetSwitchDrivePostion(const UINT16 switchId);

/*
* 功能描述： 设置指定ID道岔驱动位置
* 参数说明： const UINT16 switchId, 道岔ID
*			 const UINT8 drivePosition, 驱动位置
* 返回值  ： 无
*			        
*/
void SetSwitchDrivePostion(const UINT16 switchId, const UINT8 drivePosition);

/*
* 功能描述： 获取指定ID道岔动作起始周期号
* 参数说明： const UINT16 switchId, 道岔ID
* 返回值  ： 0: 获取数据失败
*			>0: 动作起始周期号        
*/
UINT32 GetSwitchMoveStartCycNum(const UINT16 switchId);

/*
* 功能描述： 设置指定ID道岔动作起始周期号
* 参数说明： const UINT16 switchId, 道岔ID
*			 const UINT32 moveStartCycNum, 动作起始周期号
* 返回值  ： 无
*			       
*/
void SetSwitchMoveStartCycNum(const UINT16 switchId, const UINT32 moveStartCycNum);

/*
* 功能描述： 获取指定ID道岔驱动起始周期号
* 参数说明： const UINT16 switchId, 道岔ID
* 返回值  ： 0: 获取数据失败
*			>0: 驱动起始周期号        
*/
UINT32 GetSwitchDriveStartCycNum(const UINT16 switchId);

/*
* 功能描述： 设置指定ID道岔驱动起始周期号
* 参数说明： const UINT16 switchId, 道岔ID
*			 const UINT32 driveStartCycNum, 驱动起始周期号
* 返回值  ： 无
*			      
*/
void SetSwitchDriveStartCycNum(const UINT16 switchId, const UINT32 driveStartCycNum);



/*
* 功能描述： 获取指定ID道岔单操位置
* 参数说明： const UINT16 switchId, 道岔ID
* 返回值  ： 0: 获取数据失败
*			>0: 道岔位置        
*/
UINT8 GetSwitchDanCaoPostition(const UINT16 switchId);

/*
* 功能描述： 设置指定ID道岔单操位置
* 参数说明： const UINT16 switchId, 道岔ID
*			 const UINT8 position, 道岔位置
* 返回值  ： 0: 设置失败
*			 1: 设置成功      
*/
UINT8 SetSwitchDanCaoPosition(const UINT16 switchId, const UINT8 position);

/*
* 功能描述： 获取指定ID道岔驱动位置
* 参数说明： const UINT16 switchId, 道岔ID
* 返回值  ： 0: 获取数据失败
*			>0: 驱动位置        
*/
UINT8 GetSwitchExpDrvPosition(const UINT16 switchId);

/*
* 功能描述： 设置指定ID道岔驱动位置
* 参数说明： const UINT16 switchId, 道岔ID
*			 const UINT8 drivePosition, 驱动位置
* 返回值  ： 0: 设置失败
*			 1: 设置成功      
*/
UINT8 SetSwitchExpDrvPosition(const UINT16 switchId, const UINT8 drivePosition);

/*
* 功能描述： 获取指定ID道岔驱动状态
* 参数说明： const UINT16 switchId, 道岔ID
* 返回值  ： 0: 获取数据失败
*			>0: 驱动状态    
*/
UINT8 GetSwitchDrivingState(const UINT16 switchId);

/*
* 功能描述： 设置指定ID道岔驱动状态
* 参数说明： const UINT16 switchId, 道岔ID
*			 const UINT8 switchDrivingState, 驱动状态
* 返回值  ： 无
*			       
*/
void SetSwitchDrivingState(const UINT16 switchId, const UINT8 switchDrivingState);

/*
* 功能描述： 设置指定ID道岔之前希望驱动位置
* 参数说明： const UINT16 switchId, 道岔ID
*			 const UINT8 drivePosition, 驱动位置
* 返回值  ： 无
*			        
*/
void SetSwitchPreExpDrvPosition(const UINT16 switchId, const UINT8 drivePosition);

/*
* 功能描述： 获取指定ID道岔之前期望驱动位置
* 参数说明： const UINT16 switchId, 道岔ID
* 返回值  ： 0: 获取数据失败
*			>0: 驱动位置        
*/
UINT8 GetSwitchPreExpDrvPosition(const UINT16 switchId);

/*
* 功能描述： 设置指定ID道岔驱动超时位置
* 参数说明： const UINT16 switchId, 道岔ID
*			 const UINT8 drivePosition, 驱动位置
* 返回值  ： 无
*			      
*/
void SetSwitchDrivOvtmDrvPosition(const UINT16 switchId, const UINT8 drivePosition);

/*
* 功能描述： 获取指定ID道岔驱动超时位置
* 参数说明： const UINT16 switchId, 道岔ID
* 返回值  ： 0: 获取数据失败
*			>0: 驱动位置        
*/
UINT8 GetSwitchDrivOvtmDrvPosition(const UINT16 switchId);
/*
* 功能描述： 设置指定ID道岔故障状态
* 参数说明： const UINT16 switchId, 道岔ID
* 返回值  ： 0: 设置数据失败
*			>0: 道岔故障状态                
*/
UINT8 SetSwitchFaultState(const UINT16 switchId,const UINT8 faultState);
/*
* 功能描述： 获取指定ID道岔故障状态
* 参数说明： const UINT16 switchId, 道岔ID
* 返回值  ： 0: 获取数据失败
*			>0: 道岔故障状态                
*/
UINT8 GetSwitchFaultState(const UINT16 switchId);

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

/*
* 功能描述： 设置指定ID道岔可绕状态
* 参数说明： const UINT16 switchId, 道岔ID
* 返回值  ： 0: 设置数据失败
*			>0: 设置数据成功                
*/
UINT8 SetSwitchKRState(const UINT16 switchId, const UINT8 switchKRState);
/*
* 功能描述： 获取指定ID道岔可绕状态
* 参数说明： const UINT16 switchId, 道岔ID
* 返回值  ： 0: 获取数据失败
*			>0: 道岔可绕状态                
*/
UINT8 GetSwitchKRState(const UINT16 switchId);

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

/*
* 功能描述： 设置指定ID道岔最近一次的有效驱动位置
* 参数说明： const UINT16 switchId, 道岔ID
*			 const UINT8 drivePosition, 驱动位置
* 返回值  ： 0: 设置失败
*			 1: 设置成功      
*/
UINT8 SetSwitchLastValidDrvPos(const UINT16 switchId, const UINT8 drivePosition);

/*
* 功能描述： 获取指定ID道岔最近一次的有效驱动位置
* 参数说明： const UINT16 switchId, 道岔ID
* 返回值  ： 0: 获取数据失败
*			>0: 最近一次的有效驱动位置        
*/
UINT8 GetSwitchLastValidDrvPos(const UINT16 switchId);

/*
* 功能描述： 设置指定ID道岔最近一次有效驱动周期号
* 参数说明： const UINT16 switchId, 道岔ID
*			 const UINT32 driveStartCycNum, 驱动起始周期号
* 返回值  ： 0: 设置失败
*			 1: 设置成功      
*/
UINT8 SetSwitchLastValidPosDrivCycNum(const UINT16 switchId, const UINT32 driveStartCycNum);

/*
* 功能描述： 获取指定ID道岔最近一次有效驱动起始周期号
* 参数说明： const UINT16 switchId, 道岔ID
* 返回值  ： 0: 获取数据失败
*			>0: 驱动起始周期号        
*/
UINT32 GetSwitchLastValDrvPosStartCyc(const UINT16 switchId);

/*
* 功能描述： 获取指定ID道 岔征用该道岔的保护区段ID
* 参数说明： const UINT16 switchId, 道岔ID
* 返回值  ： 0: 道岔未被征用
*			>0: 征用该道岔的保护区段ID        
*/
UINT16 GetSwitchBelongOverlapId(const UINT16 switchId);

/*
* 功能描述： 设置指定ID道岔定反后继电器吸起有效周期号
* 参数说明： const UINT16 switchId, 道岔ID
*			 const UINT32 validStartCycNum, 驱动起始周期号
* 返回值  ： 0: 设置失败
*			 1: 设置成功      
*/
UINT8 SetSwitchDFHRelayValidCycNum(const UINT16 switchId, const UINT32 validStartCycNum);

/*
* 功能描述： 获取指定ID道岔定反后继电器吸起有效周期号
* 参数说明： const UINT16 switchId, 道岔ID
* 返回值  ： 0: 获取数据失败
*			>0: 驱动起始周期号        
*/
UINT32 GetSwitchDFHRelayValidCycNum(const UINT16 switchId);

/*
* 功能描述： 设置指定ID单独道岔定反后继电器吸起有效周期号
* 参数说明： const UINT16 switchId, 道岔ID
*			 const UINT32 driveStartCycNum, 驱动起始周期号
* 返回值  ： 0: 设置失败
*			 1: 设置成功      
*/
UINT8 SetSigleSwitchDFHRelayValCyc(const UINT16 switchId, const UINT32 driveStartCycNum);

/*
* 功能描述： 获取指定ID单独道岔定反后继电器吸起有效周期号
* 参数说明： const UINT16 switchId, 道岔ID
* 返回值  ： 0: 获取数据失败
*			>0: 驱动起始周期号        
*/
UINT32 GetSigleSwitchDFHRelayValCyc(const UINT16 switchId);

/*
* 功能描述： 设置指定ID道岔允操继电器吸起有效周期号
* 参数说明： const UINT16 switchId, 道岔ID
*			 const UINT32 validStartCycNum, 有效起始周期号
* 返回值  ： 0: 设置失败
*			 1: 设置成功      
*/
UINT8 SetSwitchYCRelayValidCycNum(const UINT16 switchId, const UINT32 validStartCycNum);

/*
* 功能描述： 获取指定ID道岔允操继电器吸起有效周期号
* 参数说明： const UINT16 switchId, 道岔ID
* 返回值  ： 0: 获取数据失败
*			>0: 驱动起始周期号        
*/
UINT32 GetSwitchYCRelayValidCycNum(const UINT16 switchId);

/*
* 功能描述： 设置指定ID单独道岔允操继电器吸起有效周期号
* 参数说明： const UINT16 switchId, 道岔ID
*			 const UINT32 driveStartCycNum, 驱动起始周期号
* 返回值  ： 0: 设置失败
*			 1: 设置成功      
*/
UINT8 SetSingleSwitchYCRelayValCyc(const UINT16 switchId, const UINT32 driveStartCycNum);

/*
* 功能描述： 获取指定ID单独道岔允操继电器吸起有效周期号
* 参数说明： const UINT16 switchId, 道岔ID
* 返回值  ： 0: 获取数据失败
*			>0: 驱动起始周期号        
*/
UINT32 GetSingleSwitchYCRelayValCyc(const UINT16 switchId);

/*
* 功能描述： 获取联络线道岔单锁状态
* 参数说明： const UINT16 switchId, 道岔ID
* 返回值  ： 0: 获取数据失败
*			>0: 道岔单锁状态        
*/
UINT8 GetConnetSwitchDsState(const UINT16 switchId);

/*
* 功能描述： 设置联络线道岔单锁状态
* 参数说明： const UINT16 switchId, 道岔ID
*            const UINT8 dsState 单锁状态
* 返回值  ： 无
*			        
*/
void SetConnetSwitchDsState(const UINT16 switchId, const UINT8 dsState);

/*
* 功能描述： 获取联络线道岔旁路状态
* 参数说明： const UINT16 switchId, 道岔ID
* 返回值  ： 0: 获取数据失败
*			>0: 道岔旁路状态        
*/
UINT8 GetConnetSwitchByPassState(const UINT16 switchId);

/*
* 功能描述： 设置联络线道岔旁路状态
* 参数说明： const UINT16 switchId, 道岔ID
*            const UINT8 byPassState 旁路状态
* 返回值  ： 无
*			        
*/
void SetConnetSwitchByPassState(const UINT16 switchId, const UINT8 byPassState);

/*
* 功能描述： 获取联络线道岔是否已经向ATS报警的标志
* 参数说明： const UINT16 switchId, 道岔ID
* 返回值  ： 0: 获取数据失败
*			>0: 是否已经向ATS报警的标志
*/
UINT8 GetCiToAtsByPassNoCancelFlag(const UINT16 switchId);

/*
* 功能描述： 设置联络线道岔是否已经向ATS报警的标志
* 参数说明： const UINT16 switchId, 道岔ID
*            const UINT8 ciToAtsSendFlag 是否发送的标志
* 返回值  ： 无
*
*/
void SetCiToAtsByPassNoCancelFlag(const UINT16 switchId, const UINT8 ciToAtsSendFlag);

/*
* 功能描述： 获取本控区所有道岔状态
* 参数说明：DQU_POINT_STATUS_STRU* pSwitchInfo, 道岔状态
* 返回值  ： 成功-道岔数量 失败-UINT16_MAX
*
*/
UINT8 GetLocalSwitchState(DQU_POINT_STATUS_STRU* pSwitchInfo);
/*
* 功能描述：设置道岔定/反位测试处理逻辑总调函数，根据传入命令类型（定位或者反位测试）执行相关逻辑判断
* 参数说明：const UINT8 chCmdType  命令类型
* 备注：cgh-合并CID-3037-6：。
*/
void SetSwitchTestLogicManage(const UINT8 chCmdType);

/*
* 功能描述： 获取指定ID道岔立即向ATS报警信息
* 参数说明： const UINT16 switchId, 道岔ID
* 返回值  ：CI_ERROR: 不向ATS报警道岔挤岔
*			SWITCH_POSITION_JICHA: 向ATS报警道岔挤岔
* by cgh 20230919 仅用于向ATS发送道岔挤岔报警，不影响内部逻辑
*/
UINT8 GetSwitchPrompylyAlarmInfo(const UINT16 wSwitchId);

/*
* 功能描述： 获取指定ID联络线道岔旁路未及时取消起始周期
* 参数说明： const UINT16 switchId, 道岔ID
* 返回值  ： 0: 获取数据失败
*			>0: 联络线道岔旁路未及时取消起始周期号
*/
UINT32 GetSwitchBypassStartCycNum(const UINT16 switchId);

/*
* 功能描述： 设置指定ID联络线道岔旁路未及时取消起始周期
* 参数说明： const UINT16 switchId, 道岔ID
*			 const UINT32 bypassStartCycNum, 联络线道岔旁路未及时取消起始周期号
* 返回值  ： 无
*
*/
void SetSwitchBypassStartCycNum(const UINT16 switchId, const UINT32 bypassStartCycNum);

/*
* 功能描述： 获取道岔驱动过标志
* 参数说明： const UINT16 switchId, 道岔ID
* 返回值  ： 0: 获取数据失败
*			>0: 道岔驱动过标志
*/
UINT8 GetSwitchDrivedFlag(const UINT16 switchId);

/*
* 功能描述： 设置道岔驱动过标志
* 参数说明： const UINT16 switchId, 道岔ID
*            const UINT8 chSwitchDrivedFlag 道岔驱动过标志
* 返回值  ： 无
*
*/
void SetSwitchDrivedFlag(const UINT16 switchId, const UINT8 chSwitchDrivedFlag);

/*
* 功能描述： 获取道岔挤岔状态
* 参数说明： const UINT16 switchId, 道岔ID
* 返回值  ： 0: 获取数据失败
*			>0: 道岔挤岔状态
*/
UINT8 GetSwitchJichaState(const UINT16 switchId);

/*
* 功能描述： 设置道岔挤岔状态
* 参数说明： const UINT16 switchId, 道岔ID
*            const UINT8 dsState 挤岔状态
* 返回值  ： 无
*
*/
void SetSwitchJichaState(const UINT16 switchId, const UINT8 chJichaState);

/*
* 功能描述：获取道岔征用状态
* 参数说明：const UINT16 wSwitchId 道岔ID
* 返 回 值：0 获取数据失败
*			0x11 未征用
*           0x22 征用
*           0x44 申请征用
*           0x88 申请取消征用
* Created By LQ 2024.12.05
*/
UINT8 GetSwitchUsingState(const UINT16 wSwitchId);

/*
* 功能描述：设置道岔征用状态
* 参数说明：const UINT16 wSwitchId 道岔ID
*           const UINT8 cSwUsingState 征用状态
*           const UINT16 wOverlapId 保护区段ID
* 返 回 值：无
* Created By LQ 2024.12.05
*/
void SetSwitchUsingState(const UINT16 wSwitchId, const UINT8 cSwUsingState, const UINT16 wOverlapId);

/*
* 功能描述： 设置道岔采集容忍起始周期
* 参数说明： const UINT16 switchId, 道岔ID
*            const UINT32 cycNum 周期号
* 返回值  ： 无
*/
void SetSwitchCollTolerateCycNum(const UINT16 switchId, const UINT32 cycNum);

/*
* 功能描述： 获取道岔采集容忍起始周期
* 参数说明： const UINT16 switchId, 道岔ID
* 返回值  ： UINT32 采集容忍起始周期
*/
UINT32 GetSwitchCollTolerateCycNum(const UINT16 switchId);
/*
* 功能描述： 设置道岔采集位置
* 参数说明： const UINT16 switchId, 道岔ID
*            const UINT8 pos 位置
* 返回值  ： 无
*
*/
void SetSwitchCollPos(const UINT16 switchId, const UINT8 chSwitchColpos);

/*
* 功能描述： 获取道岔采集位置
* 参数说明： const UINT16 switchId, 道岔ID
* 返回值  ： 采集道岔采集位置 1定位 2反位 4四开 8移动
*/
UINT8 GetSwitchCollPos(const UINT16 switchId);

/*
* 功能描述：设置互联互通CI指定ID道岔的防护锁闭状态
* 参数说明：const UINT16 switchId 道岔ID
*			const UINT8 lockStatus 锁闭状态
* 返 回 值：无
* Created By LQ 2025.05.27
*/
void SetHlhtCiSwitchPlockStatus(const UINT16 switchId, const UINT8 lockStatus);

#ifdef __cplusplus
}
#endif

#endif
