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

#ifndef _INTERLOCK_LOGIC_MANAGE_H_
#define _INTERLOCK_LOGIC_MANAGE_H_


#include "../System/SystemParameterManage.h"
#include "../System/CiSystemDefine.h"
#include "../Switch/SwitchDefine.h"
#include "../Switch/SwitchDataManage.h"
#include "../Switch/SwitchConfigDataManage.h"
#include "../Signal/SignalDefine.h"
#include "../Signal/SignalDataManage.h"
#include "../Signal/SignalConfigDataManage.h"
#include "../Section/SectionDefine.h"
#include "../Section/PhysicalSectionDataManage.h"
#include "../Section/PhysicalSectionConfigDataManage.h"
#include "../Section/LogicSectionDataManage.h"
#include "../Section/LogicSectionConfigDataManage.h"
#include "../Section/AxisSectionDataManage.h"
#include "../Section/AxisSectionConfigDataManage.h"
#include "../Route/RouteDefine.h"
#include "../Route/RouteDataManage.h"
#include "../Route/RouteConfigDataManage.h"
#include "../ReverseRoute/ReverseRouteConfigDataManage.h"
#include "../PSD/PSDDataManage.h"
#include "../PSD/PSDConfigDataManage.h"
#include "../2oo2/2oo2InterfaceDataManage.h"
#include "../Overlap/OverlapDataManage.h"
#include "../Overlap/OverlapConfigDataManage.h"
#include "../ESB/ESBDataManage.h"
#include "../ESB/ESBConfigDataManage.h"
#include "../ERROR/ErrorDataManage.h"
#include "../ERROR/ErrorDefine.h"
#include "../AutoReturn/AutoReturnDataManage.h"
#include "../AutoRoute/AutoRouteDataManage.h"
#include "../DataManage/DeviceDataManage.h"
#include "../ParsePack/CiInterfaceDefine.h"
#include "../ParsePack/ParsePackAtsData.h"
#include "../LogicProcess/InterlockLogicCheck.h"
#include "../IO/DeviceRelayDataProcess.h"
#include "../AllAutoReturn/AllAutoReturnDataManage.h"
#include "../Garagedoor/GaragedoorConfigDataManage.h"
#include "../Garagedoor/GaragedoorDataManage.h"
#include "../LogicManage/InterlockCommonManage.h"
#include "../LogicProcess/InterlockLogicProcess.h"
#include "../LogicProcess/TradInterlockLogicProcess.h"
#include "../LogicManage/TradInterlockLogicManage.h"

#ifdef SCADE_MODE
#include "../LogicManage/General/LogicManageScadeInterface.h"
#endif

#ifdef __cplusplus
extern "C" {
#endif

/*
* 功能描述： 设置联锁引导总锁标志逻辑
* 参数说明： UINT8 setFlag 引导总锁标志
                CI_ALL_SWITCH_YLOCK_YES
                CI_ALL_SWITCH_YLOCK_NO
* 返回值  ： void
*/
void SetCiYLockManage(UINT8 setFlag);

/*
* 功能描述： 设置联锁引导总锁标志逻辑
* 参数说明： UINT8 setFlag 引导总锁标志
             const UINT8 virCIid  虚拟联锁ID
* 返回值  ： void
*/
void SetCiYLockManage_UseVirCI(UINT8 setFlag,const UINT8 virCIid);

/*
* 功能描述： 联锁逻辑主处理
* 参数说明： void
* 返回值  ：    
*/
void InterlockLogicMainProc(void);

/*
* 功能描述： 进路逻辑管理
* 参数说明： void
* 返回值  ：    
*/
void RouteLogicManage(void);


/*
* 功能描述： 进路空闲管理
* 参数说明： const UINT16 routeId, 进路ID
* 返回值  ： void   
*/
void RouteIdleManage(const UINT16 routeId);

/*
* 功能描述： 进路初选管理
* 参数说明： const UINT16 routeId, 进路ID
* 返回值  ： void   
*/
void RouteFirstXuanPaiManage(const UINT16 routeId);

/*
* 功能描述： 进路选排管理
* 参数说明： const UINT16 routeId, 进路ID
* 返回值  ： void   
*/
void RouteXuanPaiManage(const UINT16 routeId);

/*
* 功能描述： 引导进路选排管理
* 参数说明： const UINT16 routeId, 进路ID
* 返回值  ： void   
*/
void LeadRouteXuanPaiManage(const UINT16 routeId);

/*
* 功能描述： 进路初锁管理
* 参数说明： const UINT16 routeId, 进路ID
* 返回值  ： void   
*/
void RouteFirstLockManage(const UINT16 routeId);

/*
* 功能描述： 进路初锁异常管理
* 参数说明： const UINT16 routeId, 进路ID
* 返回值  ： void   
*/
void RouteFirstLockErrManage(const UINT16 routeId);

/*
* 功能描述： 进路预先锁闭管理
* 参数说明： const UINT16 routeId, 进路ID
* 返回值  ： void   
*/
void RouteYuXianLockManage(const UINT16 routeId);

/*
* 功能描述： 进路预先开放管理
* 参数说明： const UINT16 routeId, 进路ID
* 返回值  ： void   
*/
void RouteYuXianOpenManage(const UINT16 routeId);

/*
* 功能描述： 进路接近锁闭异常管理
* 参数说明： const UINT16 routeId, 进路ID
* 返回值  ： void   
*/
void RouteNearLockErrManage(const UINT16 routeId);

/*
* 功能描述： 进路接近开放管理
* 参数说明： const UINT16 routeId, 进路ID
* 返回值  ： void   
*/
void RouteNearOpenManage(const UINT16 routeId);

/*
* 功能描述： 进路接近锁闭管理
* 参数说明： const UINT16 routeId, 进路ID
* 返回值  ： void   
*/
void RouteNearLockManage(const UINT16 routeId);

/*
* 功能描述： 进路延时解锁管理
* 参数说明： const UINT16 routeId, 进路ID
* 返回值  ： void   
*/
void RouteDelayUnlockManage(const UINT16 routeId);

/*
* 功能描述： 进路物理区段自动解锁管理
* 参数说明： const UINT16 routeId, 进路ID
* 返回值  ： void   
*/
void RoutePhySecAutoUnlockManage(const UINT16 routeId);

/*
* 功能描述： 进路物理区段自动解锁异常管理
* 参数说明： const UINT16 routeId, 进路ID
* 返回值  ： void   
*/
void RoutePhySecAutoUnlockErrManage(const UINT16 routeId);

/*
* 功能描述： 进路引导锁闭管理
* 参数说明： const UINT16 routeId, 进路ID
* 返回值  ： void   
*/
void RouteLeadLockManage(const UINT16 routeId);

/*
* 功能描述： 进路引导锁闭异常管理
* 参数说明： const UINT16 routeId, 进路ID
* 返回值  ： void   
*/
void RouteLeadLockErrManage(const UINT16 routeId);

/*
* 功能描述： 进路引导开放管理
* 参数说明： const UINT16 routeId, 进路ID
* 返回值  ： void   
*/
void RouteLeadOpenManage(const UINT16 routeId);

/*
* 功能描述： 办理进路处理
* 参数说明： const UINT16 routeId, 进路ID
* 返回值  ： UINT8   
*/
UINT8 SetRouteProc(const UINT16 routeId);

/*
* 功能描述： 进路初选-取消自动信号进路处理
* 参数说明： const UINT16 routeId, 进路ID
* 返回值  ： UINT8   
             CI_SUCCESS:取消成功
             CI_ERROR:取消失败
             RETURN_FIRSTXUANPAI_QUXIAOAUTOSIG_WAIT:等待取消
*/
UINT8 RouteFirstXuanAutoSigProc(const UINT16 routeId);

/*
* 功能描述： 锁闭进路处理
* 参数说明： const UINT16 routeId, 进路ID
* 返回值  ： UINT8   
*/
UINT8 LockRouteProc(const UINT16 routeId);

/*
* 功能描述：进路锁闭Overlap处理
* 参数说明：const UINT16 routeId, 进路ID
* 返 回 值：0 失败
*           1 成功
*           0x22 道岔位置错误
*           0x30 防护道岔等待征用
*           0x31 防护道岔等待检查
*/
UINT8 LockRouteOverlapProc(const UINT16 routeId);

/*
锁闭本联锁保护区段管理
UINT8 overlapSum 保护区段总数
UINT16 * pOverlapIdBuf 保护区段ID缓存指针
UINT8 PLockDirect 锁闭方向

CI_SUCCESS 成功
CI_ERROR 失败

*/
UINT8 LockLocalOvlpManageHlht(UINT8 overlapSum, UINT16 * pOverlapIdBuf, UINT8 PLockDirect);

/*
* 功能描述： 开放进路信号处理
* 参数说明： const UINT16 routeId, 进路ID
* 返回值  ： UINT8   
*/
UINT8 OpenRouteSignalProc(const UINT16 routeId);
/*
* 功能描述： 保持开放进路信号处理
* 参数说明： const UINT16 routeId, 进路ID
* 返回值  ： UINT8   
*/
UINT8 KeepOpenRouteSignalProc(const UINT16 routeId);

/*
* 功能描述： 进路总取消处理
* 参数说明： const UINT16 routeId, 进路ID
* 返回值  ： void      
*/
void RouteZongQuXiaoProc(const UINT16 routeId);

/*
* 功能描述： 自动信号进路取消处理
* 参数说明： const UINT16 routeId, 进路ID
* 返回值  ： CI_SUCCESS:成功
			 CI_ERROR:失败
*/
UINT8 AutoSigRouteQuXiaoProc(const UINT16 routeId);

/*
* 功能描述： 进路总人解处理
* 参数说明： const UINT16 routeId, 进路ID
* 返回值  ： void   
*/
void RouteZongRenJieProc(const UINT16 routeId);


/*
* 功能描述： 解锁进路OVERLAP处理
* 参数说明： const UINT16 routeId, 进路ID
* 返回值  ： UINT8   
*/
UINT8 UnlockRouteOverlapProc(const UINT16 routeId);

/*
解锁本联锁保护区段管理
UINT8 overlapIdSum 保护区段总数
UINT16 * pOverlapIdBuf 保护区段ID缓存指针

CI_SUCCESS 成功
CI_ERROR 失败

*/
UINT8 UnLockLocalOvlpManageHlht(UINT8 overlapIdSum, UINT16 * pOverlapIdBuf);


/*
* 功能描述： 物理区段延时解锁处理
* 参数说明： const UINT16 routeId, 进路ID
* 返回值  ： void   
*/
void PhySecDelayUnlockProc(const UINT16 routeId);



/*
* 功能描述：进路列车驶入检查
* 参数说明： const UINT16 routeId, 进路ID
* 返回值  ： FUNCTION_SUCCESS：成功
*            FUNCTION_RETURN_ERROR：  失败   
*/
UINT8 RouteLTrainEnter(const UINT16 routeId);

/*
* 功能描述： 进路开放需关闭信号处理
* 参数说明： const UINT16 routeId, 进路ID
* 返回值  ： 0:失败
*			 1:成功   
*/
UINT8 RouteOpenNeedCloseSignal(const UINT16 routeId);


/*
* 功能描述： overlap锁闭驱动道岔处理
* 参数说明： const UINT16 overlapId, overlap ID
* 返回值  ： 0:失败
*			 1:成功  
*/
UINT8 OverlapLockDriveSwitch(const UINT16 overlapId);

/*
* 功能描述： 设置Overlap锁闭状态
* 参数说明： const UINT16 overlapId, overlap ID
*            const UINT8 lockState, 锁闭状态
*            const UINT16 routeId, 进路ID
* 返回值  ： void
*/
void SetOverlapLockState(const UINT16 overlapId, const UINT8 lockState, const UINT16 routeId);

/*
* 功能描述： 办理普通进路逻辑管理
* 参数说明： const UINT16 routeId, 进路ID
*	         const UINT8 chSendLevel 命令发送等级
* 返回值  ： void
* BY cgh 20250828
*/
void SetCommonRouteLogicManage(const UINT16 routeId, const UINT8 chSendLevel);

/*
* 功能描述： 办理引导进路逻辑管理
* 参数说明： const UINT16 signalId, 信号机ID
* 返回值  ： void
* edit cgh 20250224
*/
void SetLeadRouteLogicManage(const UINT16 signalId);

/*
* 功能描述： 进路总取消逻辑管理
* 参数说明： const UINT16 routeId, 进路ID
* 返回值  ： void      
*/
void RouteZongQuXiaoLogicManage(const UINT16 routeId);

/*
* 功能描述： 进路总人解逻辑管理
* 参数说明： const UINT16 routeId, 进路ID
* 返回值  ： void   
*/
void RouteZongRenJieLogicManage(const UINT16 routeId);

/*
* 功能描述： 设置道岔单操逻辑管理
* 参数说明： UINT16 switchId, 道岔ID
*            const UINT8 switchPos, 道岔位置
* 返回值  ： void   
*/
void SetSwitchPositionLogicManage(const UINT16 switchId, const UINT8 switchSetPos);

/*
* 功能描述： 设置道岔单锁逻辑管理
* 参数说明： const UINT16 switchId, 道岔ID
* 返回值  ： void  
*/
void SetSwitchDLockLogicManage(const UINT16 switchId);

/*
* 功能描述： 取消道岔单锁逻辑管理
* 参数说明： const UINT16 switchId, 道岔ID
* 返回值  ：    
*/
void CancelSwitchDLockLogicManage(const UINT16 switchId);

/*
* 功能描述： 设置道岔封锁逻辑管理
* 参数说明： const UINT16 switchId, 道岔ID
* 返回值  ： void   
*/
void SetSwitchFLockLogicManage(const UINT16 switchId);

/*
* 功能描述： 取消道岔封锁逻辑管理
* 参数说明： const UINT16 switchId, 道岔ID
* 返回值  ： void   
*/
void CancelSwitchFLockLogicManage(const UINT16 switchId);

/*
* 功能描述： 重开信号逻辑管理
* 参数说明： const UINT16 signalId, 信号机ID
* 返回值  ： void   
*/
void RepeatOpenSignalLogicManage(const UINT16 signalId);

/*
* 功能描述： 开放引导信号逻辑管理
* 参数说明： const UINT16 signalId, 信号机ID
* 返回值  ： void
*/
void OpenLeadSignalLogicManage(const UINT16 signalId);


/*
* 功能描述： 设置信号机封锁逻辑管理
* 参数说明： const UINT16 signalId, 信号机ID
* 返回值  ： void   
*/
void SetSignalFLockLogicManage(const UINT16 signalId);

/*
* 功能描述： 取消信号机封锁逻辑管理
* 参数说明： const UINT16 signalId, 信号机ID
* 返回值  ： void   
*/
void CancelSignalFLockLogicManage(const UINT16 signalId);

/*
* 功能描述： 上电解锁逻辑管理
* 参数说明： void
* 返回值  ： void
*/
void SetStartupUnLockLogicManage(void);

/*
* 功能描述： 进路状态设置管理，进路状态设置必须通过本函数
* 参数说明：
            const UINT16 routeId, UINT8 routeState
* 返回值  ：void
* edit cgh 20250224
*/
void SetRouteStateManage(const UINT16 routeId, UINT8 routeState);

/*
* 功能描述： 更新照查继电器管理
* 参数说明： 
            const UINT16 routeId, UINT8 routeState
* 返回值  ：    
            CI_ERROR
            CI_SUCCESS
*/
void UpdateZhaoChaStateManage(const UINT16 routeId, UINT8 routeState);

/*
* 功能描述： 设置自动进路逻辑管理
* 参数说明： const UINT16 autoRouteId, 进路ID
* 返回值  ： void   
*/
void SetAutoRouteLogicManage(const UINT16 autoRouteId,const UINT8 virCIid);

/*
* 功能描述： 取消自动进路逻辑管理
* 参数说明： const UINT16 autoRouteId, 进路ID
* 返回值  ： void   
*/
void CancelAutoRouteLogicManage(const UINT16 autoRouteId,const UINT8 virCIid);

/*
* 功能描述： 设置自动折返逻辑管理
* 参数说明： const UINT16 autoReturnId, 进路ID
* 返回值  ： void   
*/
void SetAutoReturnLogicManage(const UINT16 autoReturnId,const UINT8 virCIid);

/*
* 功能描述： 取消自动折返逻辑管理
* 参数说明： const UINT16 autoReturnId, 进路ID
* 返回值  ： void   
*/
void CancelAutoReturnLogicManage(const UINT16 autoReturnId,const UINT8 virCIid);

#if 0
/*
* 功能描述： 设置区故解白光带其他区段为异常锁闭
* 参数说明： const UINT16 routeId, 进路ID
* 返回值  ： void   
*/
void SetFultSectionErrorLock(const UINT16 routeId);
#endif

/*
* 功能描述： 进路保护区段锁闭逻辑管理
* 参数说明： const UINT16 routeId, 进路ID
* 返回值  ： 无    
*/
void LockOverlapLogicManage(const UINT16 routeId);

/*
* 功能描述： 进路保护区段解锁逻辑管理
* 参数说明： const UINT16 routeId, 进路ID
* 返回值  ： 无    
*/
void UnlockOverlapLogicManage(const UINT16 routeId);

/*
* 功能描述： 全站解封逻辑管理
* 参数说明： void
* 返回值  ： void
*/
void SetStartFLockUnLockLogicManage(void);

/*
* 功能描述： 计轴复位命令逻辑管理
* 参数说明： const UINT16 phySecId, 物理区段ID
* 返回值  ： void   
*/
void SetSectionResetLogicManage(const UINT16 phySecId, const UINT8 resetType);

/*
* 功能描述： 设置折返进路为通过进路管理
* 参数说明： const UINT16 signalId, 通过信号机ID
* 返回值  ： void   
*/
void SetThroughRouteManage(const UINT16 signalId);

/*
* 功能描述： 设置引导总锁开放引导信号机状态管理
* 参数说明： const UINT16 signalId, 信号机ID
* 返回值  ： void   
*/
void SetYLockSignalOpenStateManage(UINT8 virCIid, UINT16 signalId);

/*
* 功能描述： 设置道岔强扳逻辑管理
* 参数说明： UINT16 switchId, 道岔ID
*            const UINT8 switchSetPos, 道岔设置位置
* 返回值  ： void   
*/
UINT8 ForceSetSwitchPositionManage(const UINT16 switchId,const UINT8 switchSetPos);

/*
* 功能描述： 扣车逻辑管理
* 参数说明： const UINT16 signalId, 信号机ID
*            const UINT8 SetState, 设置状态
* 返回值  ：void
*/
void DetainLogicManage(const UINT16 signalId,const UINT8 setState);

/*
* 功能描述： 设置全自动折返逻辑管理
* 参数说明： const UINT16 allAutoReturnId, 进路ID
* 返回值  ： void   
*/
void SetAllAutoReturnLogicManage(const UINT16 allAutoReturnId,const UINT8 virCIid);

/*
* 功能描述： 取消全自动折返逻辑管理
* 参数说明： const UINT16 allAutoReturnId, 进路ID
* 返回值  ： void   
*/
void CancelAllAutoReturnLogicManage(const UINT16 allAutoReturnId,const UINT8 virCIid);
/*
* 功能描述： 全自动折返进路逻辑管理
* 参数说明： void
* 返回值  ：    
*/
void AllAutoReturnLogicManage(void);
/*
* 功能描述： 全自动折返进路触发处理
*			该函数在进路管理中，无条件执行。
*			根据当前进路的状态以及进路办理条件，自动触发进路办理。
*
*
* 参数说明： const UINT16 routeId, 进路ID
* 返回值  ： void   
*/
void AllAutoReturnManage(const UINT16 routeId);


/*
* 功能描述： 设置试车请求处理
*
*
* 参数说明： void
* 返回值  ： void   
*/
void StartTrianTestManage(void);

/*
* 功能描述： 取消试车
*
*
* 参数说明： void
* 返回值  ： void   
*/
void StopTrianTestManage(void);

/*
* 功能描述： 取消临时限速设置
* 参数说明： 无
* 返回值  ：
           CI_ERROR 		 失败
           CI_SUCCESS 		 成功
*/
UINT8 CancleLinShiXianSuManage(void);
/*
* 功能描述： 取消临时限速设置
* 参数说明： 无
* 返回值  ：
*           void
*/
void CancleLinShiXianSuManage_Vir(const UINT8 virCIid);

/*
* 功能描述： 进路初选-取消自动信号进路等待区段锁闭检查通过
* 参数说明： const UINT16 routeId, 进路ID
* 返回值  ： UINT8   
             CI_SUCCESS:取消自动信号进路后区段锁闭检查成功
			 CI_ERROR:取消自动信号进路后区段锁闭检查失败
             RETURN_FIRSTXUANPAI_QUXIAOAUTOSIG_WAIT:等待取消
*/
UINT8 RouteFirstXuanAutoSigCancelPro(const UINT16 routeId);
/*
* 功能描述： 进路状态转移管理
* 参数说明： const UINT16 routeId, 进路ID
* 返回值  ： void   
*/
void RouteStateFlagManage(const UINT16 routeId);
/*
* 功能描述： 进路选排状态转移管理
* 参数说明： const UINT16 routeId, 进路ID
* 返回值  ： void   
*/
void RouteXuanPaiStateManage(const UINT16 routeId);

/*
* 功能描述：设置指定OverlapId所包含的所有道岔征用（或未征用）
* 参数说明： UINT16 overlapId, 保护区段ID
*            UINT8 usingState 是否征用 SWITCH_USING_YES：已征用   SWITCH_USING_NO：未征用 
*/
void SetOverlapRelSwitchUsing(UINT16 overlapId, UINT8 usingState);

/*
* 功能描述：获取指定RouteId所包含的所有道岔是否征用
* 参数说明： UINT16 routeId, 进路ID
* 返回值：   UINT8 是否征用 SWITCH_USING_YES：已征用   SWITCH_USING_NO：未征用 
*/
UINT8 CheckRouteContainSwitchUseSta(UINT16 routeId);

/*
* 功能描述： 根据ATS命令锁闭进路Overlap处理
* 参数说明： const UINT16 routeId, 进路ID
*            const UINT16 expLkOverlapId, 期望锁闭保护区段ID
* 返回值  ： UINT8 
*			1:锁闭成功，或没有保护区段或保护区段已锁闭过
*			0:保护区段锁闭失败
*			0x22: 道岔位置错误需要驱动道岔。
*/
UINT8 LockRouteOverlapAccdToAtsCmd(const UINT16 routeId, const UINT16 expLkOverlapId);

/*
* 功能描述： 设置区段封锁逻辑管理
* 参数说明： const UINT16 phySecId, 区段ID
* 返回值  ： void   
*/
UINT8 SetSectionFLockLogicManage(const UINT16 phySecId);

/*
* 功能描述： 取消区段封锁逻辑管理
* 参数说明： const UINT16 phySecId, 区段ID
* 返回值  ： void   
*/
UINT8 CancelSectionFLockLogicManage(const UINT16 phySecId);


/*
* 功能描述： 防淹门逻辑管理
* 参数说明： void
* 返回值  ：    
*/
void FloodLogicManage(void);

/*
* 功能描述： 解锁道岔逻辑管理
* 参数说明： void
* 返回值  ：    
*/
void UnlockSwitchLogicManage(void);
#if 0
/*
* 功能描述： 有岔计轴区段跳跃锁闭逻辑管理
* 参数说明： void
* 返回值  ：
*/
void SwitchAxisSecJumpLockLogicManage(void);
#endif

/*
* 功能描述： 跳跃锁闭逻辑处理
* 参数说明： void
* 返回值  ：
*/
void JumpLockManage(void);

/*
* 功能描述： 周期检查逻辑区段跳跃锁闭条件
* 参数说明： 无
* 返回值  ： 无
*/
void CheckLogSecJumpLockManage(void);

/*
* 功能描述： 计轴区段跳跃锁闭逻辑管理
* 参数说明： void
* 返回值  ：    
*/
void AxisSecJumpLockLogicManage(void);

/*
* 功能描述： 计轴区段跳跃选排管理
* 参数说明： const UINT16 axisSecId, 计轴区段ID
* 返回值  ： void   
*/
void AxisJumpLockXuanPaiManage(const UINT16 axisSecId);

/*
* 功能描述： 跳跃锁闭计轴区段处理
* 参数说明： const UINT16 routeId, 进路ID
* 返回值  ： UINT8   
*/
UINT8 LockAxisSecProc(const UINT16 axisSecId);

/*
* 功能描述： 跨集中区自动进路封锁设备处理
* 参数说明： const UINT16 routeId, 进路ID
* 返回值  ： void
*/
void CrossCiAutoRouteFLockDevProc(const UINT16 routeId);


/*
* 功能描述： 获取继电接口确认标志
* 参数说明： void
* 返回值  ：CICI_RELAY_INTERFACE_CONFIRM_NO   相邻联锁继电接口未确认
*			CICI_RELAY_INTERFACE_CONFIRM_YES  相邻联锁继电接已未确认
*/
UINT8 GetCiCiRelayInterfConfirmFlag(void);

/*
* 功能描述： 设置继电接口确认标志
* 参数说明： UINT8 setFlag,设置标志
* 返回值  ：void
*/
void SetCiCiRelayInterfConfirmFlag(UINT8 setFlag);
/*
* 功能描述： 根据进路状态清理信号保持容忍开放开始周期值
* 参数说明： const UINT16 routeId, 进路ID
* 返回值  ： void   
*/
void SetClearKeepSignalTolerateCyc(const UINT16 routeId);


/*
* 功能描述： 设置PSC旁路状态确认标志
* 参数说明： UINT8 setFlag,设置标志
*            const UINT16 pscId  
* 返回值  ：无
*/
void SetCiPscPlConfirmFlag(UINT8 setFlag, const UINT16 pscId);

/*
* 功能描述： 根据保护区段开始选排周期值清除征用
* 参数说明： const UINT16 routeId, 进路ID
* 返回值  ： void   
*/
void ClearOverlopUsing(const UINT16 routeId);


/*
* 功能描述： 进路不在本联锁，进路需关闭信号机在本联锁处理
* 参数说明： void
* 返回值  ：    
*/
void NearCIRouteNeedCloseProce(void);

/*
* 功能描述： 检查自动进路包含的进路是否属于本虚拟联锁
* 参数说明： 自动进路ID 虚拟联锁ID
* 返回值  ： void   
*/
UINT8 CheckAutoRouteBelongVirCI(const UINT16 autoRouteId,const UINT8 virCIid);
/*
* 功能描述： 检查自动折返进路包含的进路是否属于输入虚拟联锁
* 参数说明： 自动进路ID 虚拟联锁ID
* 返回值  ： void   
*/
UINT8 CheckAutoReturnBelongVirCI(const UINT16 autoRouteId,const UINT8 virCIid);
/*
* 功能描述： 检查全自动折返进路包含的进路是否属于输入虚拟联锁
* 参数说明： 自动进路ID 虚拟联锁ID
* 返回值  ： void   
*/
UINT8 CheckALLAutoReturnBelongVirCI(const UINT16 allAutoRouteId,const UINT8 virCIid);
/*
*函数功能：设置组合自动通过进路自动属性
*参数说明：const UINT16 groupAutoRouteId 组合自动进路ID
*返回值：无
*/
void SetGroupAutoRouteLogicManage(const UINT16 groupAutoRouteId);

/*
*函数功能：取消组合自动通过进路自动属性
*参数说明：const UINT16 groupAutoRouteId 组合自动进路ID
*返回值：无
*/
void CancleGroupAutoRouteLogicManage(const UINT16 groupAutoRouteId);

/*
* 功能描述： 进路物理区段或逻辑区段自动解锁管理
* 参数说明： const UINT16 routeId, 进路ID
* 返回值  ： void   
*/
void RoutePhyOrLogSecAutoUnlocManage(const UINT16 routeId);
/*
* 功能描述： 进路逻辑区段自动解锁管理
* 参数说明： const UINT16 routeId, 进路ID
* 返回值  ： void   
*/
void RouteLogSecAutoUnlockManage(const UINT16 routeId);

/*
* 功能描述： 逻辑区段资源管理
* 参数说明： void
* 返回值  ：
*/
void LogicSecResManage(void);

/*
* @brief 办理申请路径逻辑管理
* @param const UINT16 routeId 进路ID
*        const UINT16 trainId 列车编号
* @note 创建 WQM 20220307
*/
void RouteApplyLogicManage(const UINT16 routeId, const UINT16 trainId);

/*
* @brief 办理申请部分路径逻辑管理
* @param const UINT8 cLogSecSeqDir 逻辑区段序列方向
*        const UINT16 wTrainId 列车编号
*        const UINT8 cLogSecSum 逻辑区段数量
*        const UINT16 pLogSecIdBuff[] 逻辑区段序列
*/
void RoutePartApplyLogicManage(const UINT8 cLogSecSeqDir, const UINT16 wTrainId, const UINT8 cLogSecSum, const UINT16 pLogSecIdBuff[]);

/*
* 功能描述： 进路逻辑区段资源列车解锁管理
* 参数说明： const UINT16 routeId, 进路ID
* 返回值  ： void
*/
void RouteLgcSecResUnlockManage(const UINT16 wRouteId);

/*
* 功能描述： 开放限速信号逻辑管理
* 参数说明： const UINT16 signalId, 信号机ID
* 返回值  ： void
*/
void OpenXianSuSignalLogicManage(const UINT16 signalId);

/*
* 功能描述：检查进路和保护区段内至少存在一个设置了临时限速的逻辑区段
* 参数说明：const UINT16 routeId，进路ID
* 返回值  ： CI_ERROR 均未设置临时限速
			 CI_SUCCESS 至少一个逻辑区段设置了临时限速
* 创建	  ：wqm 20220809
*/
UINT8 CheckRouteLgsLinShiXianSuExist(const UINT16 routeId);

/*
* 功能描述： 进路取消资源逻辑管理
* 参数说明： const UINT16 routeId, 进路ID
* 返回值  ： void
*/
void RouteCancelResLogicManage(const UINT16 wRouteId, const UINT16 wTrainId);

/*
* 功能描述： 进路初选是否超时
* 参数说明： const UINT16 routeId, 进路ID
* 返回值  ： UINT8
*			OVERTIME_YES，选排超时
*			OVERTIME_NO，选排未超时
* cgh-合并CID-2341-7： 修改选排超时不清征用问题
*/
UINT8 RouteFirstXuanOverTime(const UINT16 routeId);
/*
* 功能描述： 清除保护区段的选排起始周期号
* 参数说明： 无
*
*修改：cgh-合并CID-2341-8：
*/
void ClearOverlapXuanPaiStartCycNum(void);
/*
* 功能描述： 检查指定ID物理区段封锁是由那个spks落下导致的
* 参数说明： const UINT16 phySectionId, 物理区段ID
UINT8 *state spks状态
UINT8 *spksId spksId
* 返回值  ： CI_SUCCESS: 物理区段的spks由落下的
*			 CI_ERROR: 物理区段对应的spks全未落下或传入的spksId不合法
add by pfq 2022.04.21
*/
UINT8 CheckPhysecFlockReasonSpksId(const UINT16 phySectionId, UINT16* spksId, UINT8* state);
/*
* 功能描述：人工解锁保护区段处理
* 参数说明： const UINT8 overlapId 保护区段ID
* 返回值：CI_ERROR 失败
*         CI_SUCCESS 成功
*                   
*修改：mpt 2022年3月9日 增加保护区段人工解锁逻辑
*/
UINT8 LaborUnlockOverlapProc(const UINT16 overlapId);
/*
* 功能描述： 设置联锁锁闭保护区段标志管理
* 参数说明： const UINT16 routeId, 进路ID
* cgh-合并CID-2539-10： 进路所在联锁紧急站控，则无论保护区段所处联锁什么状态，都由联锁锁闭保护区段
*/
void SetRouteOverlapNeedCIlockM(const UINT16 routeId);

/*
* 功能描述： 物理区段跳跃锁闭逻辑管理
* 参数说明： void
* 返回值  ：
* by-cgh-20230628
*/

void PhySecJumpLockLogicManage(void);

/*
* 功能描述： 进路区段异常延时处理
* 参数说明： const UINT16 routeId, 进路ID
* 返回值  ： void
* cgh:2023.05.06
*/
void RouteHalfUnlockDelayManage(const UINT16 routeId);

/*
* 功能描述： 办理部分进路处理
* 参数说明： const UINT16 routeId, 进路ID
* 返回值  ： UINT8
*/
UINT8 SetRouteHalfProc(const UINT16 routeId);

/*
* 功能描述： 进路部分路径初选管理
* 参数说明： const UINT16 routeId, 进路ID
* 返回值  ： void
*/
void RouteHalfFirstXuanManage(const UINT16 routeId);

/*
* 功能描述： 进路部分路径选排管理
* 参数说明： const UINT16 routeId, 进路ID
* 返回值  ： void
*/
void RouteHalfXuanPaiManage(const UINT16 routeId);

/*
* 功能描述： 锁闭进路部分路径处理
* 参数说明： const UINT16 routeId, 进路ID
* 返回值  ： UINT8
*/
UINT8 LockRouteHalfProc(const UINT16 routeId);

/*
* 功能描述： 进路申请取消资源命令延时处理
* 参数说明： const UINT16 routeId, 进路ID
* 返回值  ： void
*/
void RouteCancelResApplyManage(const UINT16 routeId);

/*
*
* 功能描述： 进路部分锁闭管理
* 参数说明： const UINT16 routeId, 进路ID
* 返回值  ： void
*/
void RouteHalfLockManage(const UINT16 routeId);

/*
*
* 功能描述： 进路部分锁闭解锁管理
* 参数说明： const UINT16 routeId, 进路ID
* 返回值  ： void
*/
void RouteHalfUnlockManage(const UINT16 routeId);

/*
*@brief 办理来自其它CI的部分路径申请
* 输入参数：ToCiDrCmdDataStruct* pCiRecvCiDrCmdStru 接收其它联锁动态进路命令的结构体
* 输出参数：无
* 返回值：无
*/
void SetRoutePartApplyFromCi(ToCiDrCmdDataStruct* pCiRecvCiDrCmdStru);

/*
* 功能描述： 进路选排通用处理
* 参数说明： const UINT16 wRouteId, 进路ID
*			const UINT8 chLockRouteProcCheck 锁闭进路检查结果
* 返回值  ： UINT8
* by cgh 20230720 降低圈复杂度，进路选排阶段道岔相关条件及侵限条件挪到此函数处理
*/
void RouteXuanPaiCommonProcess(const UINT16 wRouteId, const UINT8 chLockRouteProcCheck);

/*
* 功能描述： 进路最近的车需要总人解进路时，延时处理逻辑
* 参数说明： const UINT16 routeId, 进路ID
* 返回值  ： void
*/
void RouteNearestTrainRenJieManage(const UINT16 routeId);

/*
* 功能描述： 删除进路锁闭后再次办理进路时的错误反馈数据
* 参数说明： void
* 返回值  ： void
* by cgh 20230930
*/
void DeleteSetRouteErrorData(void);

/*
* 功能描述： 设置所有列车逻辑区段资源处理
* 参数说明： const UINT16 wLogSectionId, 逻辑区段ID
* 返回值  ： VOID
*/
void SetAllTrainLogicResUseable(const UINT16 wLogSectionId);

/*
* 功能描述： 设置指定列车逻辑进路中逻辑区段锁闭资源
* 参数说明： const UINT16 wLogSectionId, 逻辑区段ID
*			 const UINT16 wTrnId		申请列车ID
*			 UINT8 wLogicSecLogRouteCheckState		逻辑区段可用性检查返回值
* 返回值  ： void
*/
void SetLogRouteLogicResUsable(const UINT16 wLogSectionId, const UINT16 wTrnId, UINT8 wLogicSecLogRouteCheckState);

/*
* 功能描述：  设置指定列车正常进路中逻辑区段锁闭资源
* 参数说明： const UINT16 wLogSectionId, 逻辑区段ID
*			 const UINT16 wTrainId		申请列车ID
*			 UINT8 wLogicSecCheckState	  逻辑区段可用性检查返回值
* 返回值  ： void
*/
void SetNormalRouteLogicResUsable(const UINT16 wLogSectionId, const UINT16 wTrainId, UINT8 wLogicSecCheckState);


/*
* 功能描述： 列车中途折返进路解锁处理
* 参数说明： const UINT16 routeId, 进路ID
* 返回值  ： void
* BY LC
*/
void RouteZhongtuZhefanQuxiaoProc(const UINT16 routeId);

/*
* @brief 办理申请部分路径逻辑管理（车辆段）
* @param const UINT8 cLogSecSeqDir 逻辑区段序列方向
*        const UINT16 wTrainId 列车编号
*        const UINT8 cLogSecSum 逻辑区段数量
*        const UINT16* pLogSecIdBuff 逻辑区段序列
* Created By LQ 2024.09.05
*/
void RoutePartApplyLogicManageCLD(const UINT8 cLogSecSeqDir, const UINT16 wTrainId, const UINT8 cLogSecSum, const UINT16* pLogSecIdBuff);

/*
* 功能描述： 进路其它联锁道岔管理
* 参数说明： void
* 返回值  ：无
* by cgh 20241203
*/
void RouteOtherCiSwitchManage(void);

/*
* 功能描述：保护区段其它联锁防护道岔管理
* 参数说明：void
* 返 回 值：无
* Created By LQ 2024.12.09
*/
void OverlapOtherCiProSwitchManage(void);

/*
* 功能描述： 进路列车释放解锁逻辑管理
* 参数说明： void
* 返回值  ：无
* by cgh 20250107
*/
void RouteTrainResUnlockManage(void);

/*
* 功能描述： 引导进路初选管理
* 参数说明： const UINT16 routeId, 进路ID
* 返回值  ： void
* by cgh 20250224
*/
void LeadRouteFirstXuanPaiManage(const UINT16 routeId);

/*
* 功能描述： 设置OC-P旁路状态确认标志
* 参数说明： UINT8 setFlag,设置标志
*            UINT16 pscId  PSC设备ID
* 返回值  ：无
*/
void SetOcPscPlConfirmFlag(UINT8 setFlag, const UINT16 ocPId);

/*
* 功能描述： 保护区段照查条件更新
* 参数说明： const UINT16 wRouteId 进路ID
* 返回值  ：无
* by cgh 20250617
*/
void OverlapZhaoChaRelayUpDateManage(void);
/*
* 功能描述： 更新列车向后跳跃允许状态处理
* 参数说明： 无
* 返回值  ： 无
* Create: fan 20250725
*/
void TrainJumpBackApplyProc(void);
/*
* 功能描述： 批量计轴复位命令逻辑管理
* 参数说明： const UINT8 cPhySecSum  物理区段数量
*		     const UINT16 pPhySecIdBuff[]  物理区段ID数组
* 返回值  ： void
*/
void BatchAixsResetLogicManage(const UINT8 cPhySecSum, const UINT16 pPhySecIdBuff[], const UINT8 resetType);

/*
* 功能描述：牵出线区段外方进路检查
* 参数说明： const UINT16 wPhySecId 牵出线区段
* 返回值  ：CI_SUCCESS列车进路已办理 CI_ERROR未办理列车进路
* by fan 20260415
*/
UINT8 CheckQcxLiecheRoute(UINT16 wPhySecId);

/*
* 功能描述： 计轴区段跳跃锁闭状态机管理
* 参数说明： const UINT16 axisSecId, 计轴区段ID
* 返回值  ： void
* add by mpt 20260407
*/
void AxisJumpLockStateManage(const UINT16 axisSectionId);

#ifdef __cplusplus
}
#endif

#endif
