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

#ifndef _INTERLOCK_LOGIC_PROCESS_H_
#define _INTERLOCK_LOGIC_PROCESS_H_

#define CI_CANCLE_ZHAOCHA_FAIL (0x02U)

#include "InterlockLogicCheck.h"
#include "../ERROR/ErrorDataManage.h"
#include "../ERROR/ErrorDefine.h"
#include "../LogicManage/InterlockLogicManage.h"
#include "../Route/RouteDataManage.h"
#include "../Route/RouteConfigDataManage.h"
#include "../ReverseRoute/ReverseRouteConfigDataManage.h"
#include "../Signal/SignalDataManage.h"
#include "../Signal/SignalConfigDataManage.h"
#include "../Switch/SwitchDataManage.h"
#include "../Switch/SwitchConfigDataManage.h"
#include "../Relay/RelayDataManage.h"
#include "../Section/PhysicalSectionDataManage.h"
#include "../2oo2/2oo2InterfaceDataManage.h"
#include "../System/SystemParameterManage.h"
#include "../System/CiSystemDefine.h"
#include "../Overlap/OverlapDataManage.h"
#include "../Overlap/OverlapConfigDataManage.h"
#include "../esb/ESBDataManage.h"
#include "../psd/PSDDataManage.h"
#include "../Section/LogicSectionDataManage.h"
#include "../DataManage/DeviceDataManage.h"
#include "../Garagedoor/GaragedoorDataManage.h"
#include "../LogicManage/InterlockCommonManage.h"
#include "../DataManage/DeviceConfigDataManage.h"
#ifdef __cplusplus
extern "C" {
#endif


/* C02_办理点式级别列车进路 */
/*
* 功能描述： 办理点式级别列车进路
* 参数说明： const UINT16 routeId   进路号
* 返回值  ： CI_ERROR
*            CI_SUCCESS
* 故障编码： EFC_SET_BLOC_T_ROUTE
*/
UINT8 SetBlocLTrainRouteLogicProcess(const UINT16 routeId);


/* C03_办理CBTC级别列车进路 */
/*
* 功能描述： 办理CBTC级别列车进路
* 参数说明： const UINT16 routeId   进路号
* 返回值  ： CI_ERROR
*            CI_SUCCESS
* 故障编码： EFUNC_SET_CBTC_T_ROUTE
*/
UINT8 SetCbtcLTrainRouteLogicProcess(const UINT16 routeId);


/* RR1_办理具有反向属性的列车进路 */
/*
* 功能描述： 具有反向属性的列车进路
* 参数说明： UINT16 const routeId   进路号
* 返回值  ： CI_ERROR
*            CI_SUCCESS
* 故障编码： EFUNC_SET_REVERSE_T_ROUTE
*/
UINT8 SetRevrLTrainRouteLogicProcess(UINT16 const routeId);


/* C04_办理点式级别折返进路 */
/*
* 功能描述： 办理点式级别折返进路
* 参数说明： const UINT16 routeId   进路号
* 返回值  ： CI_ERROR
*            CI_SUCCESS
* 故障编码： EFUNC_SET_BLOC_T_ROUTE
*/
UINT8 SetBlocReturnRouteLogicProcess(const UINT16 routeId);


/* C05_办理CBTC级别折返进路 */
/*
* 功能描述： 办理CBTC级别折返进路
* 参数说明： const UINT16 routeId   进路号
* 返回值  ： CI_ERROR
*            CI_SUCCESS
* 故障编码： EFUNC_SET_CBTC_R_ROUTE
*/
UINT8 SetCbtcReturnRouteLogicProcess(const UINT16 routeId);

/* RR2_办理具有反向属性的折返进路 */
/*
* 功能描述： 办理具有反向属性的折返进路 
* 参数说明： UINT16 const routeId   进路号
* 返回值  ： CI_ERROR
*            CI_SUCCESS
* 故障编码： EFUNC_SET_REVERSE_R_ROUTE
*/
UINT8 SetReverseRtnRouteLogicProcess(UINT16 const routeId);



/* C06_锁闭引导进路 */
/*
* 功能描述： 锁闭引导进路
* 参数说明： UINT16 const routeId   进路号
* 返回值  ： CI_ERROR
*            CI_SUCCESS
* 故障编码： EFUNC_LOCK_LEAD_ROUTE
*/
UINT8 LockLeadRouteLogicProcess(const UINT16 routeId);


/* C07_锁闭点式列车进路 */
/*
* 功能描述： 锁闭点式列车进路
* 参数说明： const UINT16 routeId   进路号
* 返回值  ： CI_ERROR
*            CI_SUCCESS
* 故障编码： EFUNC_LOCK_BLOC_T_ROUTE
*/
UINT8 LockBlocLTrainRouteLogicProcess(const UINT16 routeId);


/* C08_锁闭CBTC列车进路 */
/*
* 功能描述： 锁闭CBTC列车进路
* 参数说明： const UINT16 routeId   进路号
* 返回值  ： CI_ERROR
*            CI_SUCCESS
* 故障编码： EFUNC_LOCK_CBTC_T_ROUTE
*/
UINT8 LockCbtcLTrainRouteLogicProcess(const UINT16 routeId);


/* C09_锁闭点式折返进路 */
/*
* 功能描述： 锁闭点式折返进路
* 参数说明： const UINT16 routeId   进路号
* 返回值  ： CI_ERROR
*            CI_SUCCESS
* 故障编码： EFUNC_LOCK_BLOC_R_ROUTE
*/
UINT8 LockBlocReturnRouteLogicProcess(const UINT16 routeId);


/* C10_锁闭CBTC折返进路 */
/*
* 功能描述： 锁闭CBTC折返进路
* 参数说明： const UINT16 routeId   进路号
* 返回值  ： CI_ERROR
*            CI_SUCCESS
* 故障编码： EFUNC_LOCK_CBTC_R_ROUTE
*/
UINT8 LockCbtcReturnRouteLogicProcess(const UINT16 routeId);


/* C11_锁闭进路overlap逻辑处理 */
/*
* 功能描述： 锁闭进路overlap逻辑处理
* 参数说明： UINT16 const routeId, UINT16 const overlapId
* 返回值  ： CI_ERROR 0 失败
*            CI_SUCCESS 1 成功
*            RETURN_LOCK_ERR_SWITPOS 0x22 道岔位置错误
*            RETURN_WAIT_SWITCH_USING 0x30 等待防护道岔征用
*            RETURN_WAIT_SWITCH_CHECK 0x31 等待防护道岔检查
* 故障编码： EFUNC_LOCK_OVER_LAP
*/
UINT8 LockRouteOverlapLogicProcess(UINT16 const routeId, UINT16 const overlapId,UINT8 lockType);


/* C12_开放点式级别列车进路信号 */
/*
* 功能描述： 开放点式级别列车进路信号
* 参数说明： const UINT16 routeId
* 返回值  ： CI_ERROR
*            RETURN_OPEN_ERR_SIGOPEN
*            CI_SUCCESS
* 故障编码： EFUNC_OPEN_BLOC_T_SIGNAL
*/
UINT8 OpenBlocLTrainRouteLogicProcess(const UINT16 routeId);


/* C13_点式列车进路信号保持 */
/*
* 功能描述： 点式列车进路信号保持
* 参数说明： const UINT16 routeId
* 返回值  ： CI_ERROR
*            CI_SUCCESS
* 故障编码： EFUNC_KEEP_BLOC_T_SIGNAL
*/
UINT8 KeepBlocLTrainRouteLogicProcess(const UINT16 routeId);

/* C14_开放CBTC级别列车进路信号 */
/*
* 功能描述： 开放CBTC级别列车进路信号
* 参数说明： const UINT16 routeId
* 返回值  ： CI_ERROR
*            CI_SUCCESS
* 故障编码： EFUNC_OPEN_CBTC_T_SIGNAL
*/
UINT8 OpenCbtcLTrainRouteLogicProcess(const UINT16 routeId);

/* C15_CBTC列车进路信号保持 */
/*
* 功能描述： CBTC列车进路信号保持
* 参数说明： const UINT16 routeId
* 返回值  ： CI_ERROR
*            CI_SUCCESS
* 故障编码： EFUNC_KEEP_CBTC_T_SIGNAL
*/
UINT8 KeepCbtcLTrainRouteLogicProcess(const UINT16 routeId);

/* C16_开放点式级别折返进路信号 */
/*
* 功能描述： 开放点式级别折返进路信号
* 参数说明： const UINT16 routeId
* 返回值  ： CI_ERROR
*            RETURN_OPEN_ERR_SIGOPEN
*            CI_SUCCESS
* 故障编码： EFUNC_OPEN_BLOC_R_SIGNAL
*/
UINT8 OpenBlocReturnRouteLogicProcess(const UINT16 routeId);

/* C17_点式折返进路信号保持 */
/*
* 功能描述： 点式折返进路信号保持
* 参数说明： const UINT16 routeId
* 返回值  ： CI_ERROR
*            CI_SUCCESS
* 故障编码： EFUNC_KEEP_BLOC_R_SIGNAL
*/
UINT8 KeepBlocReturnRouteLogicProcess(const UINT16 routeId);

/* C18_开放CBTC级别折返进路信号 */
/*
* 功能描述： 开放CBTC级别折返进路信号
* 参数说明： const UINT16 routeId
* 返回值  ： CI_ERROR
*            RETURN_OPEN_ERR_SIGOPEN
*            CI_SUCCESS
* 故障编码： EFUNC_OPEN_CBTC_R_SIGNAL
*/
UINT8 OpenCbtcReturnRouteLogicProcess(const UINT16 routeId);

/* C19_CBTC折返进路信号保持 */
/*
* 功能描述： CBTC折返进路信号保持
* 参数说明： const UINT16 routeId
* 返回值  ： CI_ERROR
*            CI_SUCCESS
* 故障编码： EFUNC_KEEP_CBTC_R_SIGNAL
*/
UINT8 KeepCbtcReturnRouteLogicProcess(const UINT16 routeId);

/* C20_开放引导进路逻辑处理 */
/*
* 功能描述： 开放引导进路逻辑处理
* 参数说明： UINT16 const routeId
* 返回值  ： CI_ERROR
*            CI_SUCCESS
* 故障编码： EFUNC_OPEN_LEAD_SIGNAL
*/
UINT8 OpenLeadRouteLogicProcess(const UINT16 routeId);


/* C21_保持开放引导进路逻辑处理 */
/*
* 功能描述： 保持开放引导进路逻辑处理
* 参数说明： UINT16 const routeId
* 返回值  ： CI_ERROR
*            CI_SUCCESS
* 故障编码： EFUNC_KEEP_LEAD_SIGNAL
*/
UINT8 KeepLeadRouteLogicProcess(const UINT16 routeId);


/* C22_进路第一区段自动解锁 */
/*
* 功能描述： 进路第一区段自动解锁
* 参数说明： UINT16 const routeId，进路号
*            UINT16* phySectionId，解锁区段ID
* 返回值  ： CI_ERROR
*            CI_SUCCESS
* 故障编码： EFUNC_UNLOCK_1ST_SECTION
*/
UINT8 RouteFirstSecAutoUnlockProcess(const UINT16 routeId, UINT16* phySectionId);

/* C23_进路其余区段自动解锁 */
/*
* 功能描述： 进路其余区段自动解锁
* 参数说明： UINT16 const routeId，进路号
*            UINT16* phySectionId，解锁区段ID
* 返回值  ： CI_ERROR
*            CI_SUCCESS
* 故障编码： EFUNC_UNLOCK_OTHERS_SECTION
*/
UINT8 RouteOtherSecAutoUnlockProcess(const UINT16 routeId, UINT16* phySectionId);

/* C24_区段延时解锁*/
/*
* 功能描述： 区段延时解锁
* 参数说明： UINT16 const routeId，进路号
*            UINT16* phySectionId，解锁区段ID
* 返回值  ： CI_ERROR
*            RETURN_DELAYUNLOCK_ERR_TIMECOUNT
*            CI_SUCCESS
* 故障编码： EFUNC_DLOCK_SECTION
*/
UINT8 PhySectionDelayUnlockProcess(const UINT16 routeId, UINT16* phySectionId);


/* C25_解锁进路overlap逻辑处理 */
/*
* 功能描述： 解锁进路overlap逻辑处理
* 参数说明： const UINT16 routeId   进路号
* 返回值  ： CI_ERROR 0x00 失败
*            CI_SUCCESS 0x01 成功
*            CI_UNLOCK_OVERLAP_REQURE 0x02 向ZC/车申请解锁保护区段
*            CI_OVERLAP_OCC_UNLOCK 0x06 保护区段执行占用特殊解锁
* 故障编码： EFUNC_UNLOCK_OVER_LAP
*/
UINT8 UnlockRouteOverlapLogicProcess(const UINT16 routeId, UINT16* overlapId, UINT16* pTrainId);

/* C26_进路取消 */
/*
* 功能描述： 进路取消
* 参数说明： const UINT16 routeId   进路号
* 返回值  ： CI_ERROR
*            CI_SUCCESS
* 故障编码： EFUNC_CANCLE_ROUTE
*/
UINT8 RouteCancelLogicProcess(const UINT16 routeId);

/* C27_区段征用检查 */
/*
* 功能描述： 区段征用检查
* 参数说明： const UINT16 routeId   进路号
* 返回值  ： CI_ERROR
*            CI_SUCCESS
* 故障编码： EFUNC_CHECK_SECTION_USE
*/
UINT8 RoutePhySectionUseLogicProcess(const UINT16 routeId);

/* C28_区段故障解锁 */


/* C29_道岔单操*/
/*
* 功能描述： 道岔单操
* 参数说明：
* 输入参数： UINT16 const switchId, UINT8 const switchSetPos
* 输出参数：UINT8 chSwitchTestFlag CI_SUCCESS道岔定/反位测试时，道岔已在指定位置标志；CI_ERROR 非道岔定/反位或者道岔定/反位测试时，道岔不在指定位置标志；
* 返回值  ： CI_ERROR
*            CI_SUCCESS
* 故障编码： EFUNC_SET_SWITCH_POS
* cgh-合并CID-3037-6：
*/
UINT8 SetSwitchPositionLogicProcess(UINT16 const switchId, UINT8 const switchSetPos, const UINT8 chCmdType, UINT8* chSwitchTestFlag);

/* C30_设置道岔单锁*/
/*
* 功能描述： 设置道岔单锁
* 参数说明： UINT16 const switchId
* 返回值  ： CI_ERROR
*            CI_SUCCESS
* 故障编码： EFUNC_SET_SWITCH_DLOCK
*/
UINT8 SetSwitchDLockLogicProcess(const UINT16 switchId);

/* C31_取消道岔单锁*/
/*
* 功能描述： 取消道岔单锁
* 参数说明： UINT16 const switchId
* 返回值  ： CI_ERROR
*            CI_SUCCESS
* 故障编码： EFUNC_CANCEL_SWITCH_DLOCK
*/
UINT8 CancelSwitchDLockLogicProcess(const UINT16 switchId);

/* C32_设置道岔封锁*/
/*
* 功能描述： 设置道岔封锁
* 参数说明： UINT16 const switchId
* 返回值  ： CI_ERROR
*            CI_SUCCESS
* 故障编码： EFUNC_CANCEL_SWITCH_FLOCK
*/
UINT8 SetSwitchFLockLogicProcess(const UINT16 switchId);

/* C33_取消道岔封锁*/
/*
* 功能描述： 取消道岔封锁
* 参数说明： UINT16 const switchId
* 返回值  ： CI_ERROR
*            CI_SUCCESS
* 故障编码： EFUNC_CANCEL_SWITCH_FLOCK
*
*/
UINT8 CancelSwitchFLockLogicProcess(const UINT16 switchId);

/* C34_信号机封锁*/
/*
* 功能描述： 信号机封锁
* 参数说明： UINT16 const signalId
* 返回值  ： CI_ERROR
*            CI_SUCCESS
* 故障编码： EFUNC_SET_SIGNAL_FLOCK
*
*/
UINT8 SetSignalFLockLogicProcess(const UINT16 signalId);

/* C35_信号机封锁*/
/*
* 功能描述： 取消信号机封锁
* 参数说明： UINT16 const signalId
* 返回值  ： CI_ERROR
*            CI_SUCCESS
* 故障编码： EFUNC_CANCEL_SIGNAL_FLOCK
*
*/
UINT8 CancelSignalFLockLogicProcess(const UINT16 signalId);


/* C36_道岔单操*/
/*
* 功能描述： 道岔强扳
* 参数说明： UINT16 const switchId, UINT8 const switchSetPos
* 返回值  ： CI_ERROR
*            CI_SUCCESS
* 故障编码： EFUNC_FORCE_SET_SWITCH_POS
*/
UINT8 ForceSetSwitchPosLogicProcess(UINT16 const switchId, UINT8 const switchSetPos);

/* R_R_S_C1办理反向进路信号机联锁条件检查 */
/*
* 功能描述： 反向进路信号机联锁条件检查
* 参数说明：
*            UINT16 RouteId,    进路号
*            UINT8 functionId,  调用函数编号
*            UINT8 sendLevel,   故障码发送级别
* 返回值  ： CI_ERROR   
*            CI_SUCCESS 
*/
UINT8 SetReverseRouteSignalCheck( UINT16 routeId,UINT8 functionId,UINT8 sendLevel);



/* L02_点式进路区段联锁条件检查 */
/*
* 功能描述： 点式进路区段联锁条件检查
* 参数说明：
*            UINT16 RouteId,    进路号
*            UINT8 functionId,  调用函数编号
*            UINT8 sendLevel,   故障码发送级别
* 返回值  ： CI_ERROR   
*            CI_SUCCESS 
*/
UINT8 SetBlocRouteSectionCheck(UINT16 routeId,UINT8 functionId,UINT8 sendLevel);


/* R_L_L_01反向进路区段联锁条件检查 */
/*
* 功能描述： 反向进路区段联锁条件检查
* 参数说明：
*            UINT16 RouteId,    进路号
*            UINT8 functionId,  调用函数编号
*            UINT8 sendLevel,   故障码发送级别
* 返回值  ： CI_ERROR   
*            CI_SUCCESS 
*/
UINT8 SetReverseRouteSectionCheck(UINT16 routeId,UINT8 functionId,UINT8 sendLevel);



/* R_L_L_02反向进路自动信号进路状态检查 */
/*
* 功能描述： 反向进路自动信号进路状态检查 
* 参数说明：
*            UINT16 RouteId,    进路号
*            UINT8 functionId,  调用函数编号
*            UINT8 sendLevel,   故障码发送级别
* 返回值  ： CI_ERROR   
*            CI_SUCCESS 
*/
UINT8 SetRevrRouteAutoSigStaCheck(UINT16 routeId,UINT8 functionId,UINT8 sendLevel);

/* L04_点式进路办理防淹门联锁条件检查 */
/*
* 功能描述： 降级模式进路防淹门联锁条件检查
* 参数说明：
*            UINT16 RouteId,    进路号
*            UINT8 functionId,  调用函数编号
*            UINT8 sendLevel,   故障码发送级别
* 返回值  ： CI_ERROR   
*            CI_SUCCESS 
*/
UINT8 BlocRouteFloodGateCheck(UINT16 routeId,UINT8 functionId,UINT8 sendLevel);

/* L03_点式进路道岔联锁条件检查 */
/*
* 功能描述： 点式进路道岔联锁条件检查
* 参数说明：
*            UINT16 RouteId,    进路号
*            UINT8 functionId,  调用函数编号
*            UINT8 sendLevel,   故障码发送级别
* 返回值  ： CI_ERROR   
*            CI_SUCCESS 
*/
UINT8 SetBlocRouteSwitchCheck(UINT16 routeId,UINT8 functionId,UINT8 sendLevel);

/* L04_Cbtc进路区段联锁条件检查 */
/*
* 功能描述： Cbtc进路区段联锁条件检查
* 参数说明：
*            UINT16 RouteId,    进路号
*            UINT8 functionId,  调用函数编号
*            UINT8 sendLevel,   故障码发送级别
* 返回值  ： CI_ERROR   
*            CI_SUCCESS 
*/
UINT8 SetCbtcRouteSectionCheck(UINT16 routeId,UINT8 functionId,UINT8 sendLevel);


/* L05_引导进路锁闭区段联锁条件检查 */
/*
* 功能描述： 引导进路锁闭区段联锁条件检查
* 参数说明：
*            UINT16 RouteId,    进路号
*            UINT8 functionId,  调用函数编号
*            UINT8 sendLevel,   故障码发送级别
* 返回值  ： CI_ERROR   
*            CI_SUCCESS 
*/
UINT8 SetLeadRouteSectionCheck(UINT16 routeId,UINT8 functionId,UINT8 sendLevel);

/* L08_点式进路开放信号区段联锁条件检查 */
/*
* 功能描述： 点式进路开放信号区段联锁条件检查
* 参数说明：
*            UINT16 RouteId,    进路号
*            UINT8 functionId,  调用函数编号
*            UINT8 sendLevel,   故障码发送级别
* 返回值  ： CI_ERROR   
*            CI_SUCCESS 
*/
UINT8 OpenBlocRouteSectionCheck(UINT16 routeId,UINT8 functionId,UINT8 sendLevel);

/* L15_Cbtc进路信号开放区段联锁条件检查 */
/*
* 功能描述： Cbtc进路信号开放区段联锁条件检查
* 参数说明：
*            UINT16 RouteId,    进路号
*            UINT8 functionId,  调用函数编号
*            UINT8 sendLevel,   故障码发送级别
* 返回值  ： CI_ERROR   
*            CI_SUCCESS 
*/
UINT8 OpenCbtcRouteSectionCheck(UINT16 routeId,UINT8 functionId,UINT8 sendLevel);

/* L16_引导进路信号开放区段联锁条件检查 */
/*
* 功能描述： 引导进路信号开放区段联锁条件检查
* 参数说明：
*            UINT16 RouteId,    进路号
*            UINT8 functionId,  调用函数编号
*            UINT8 sendLevel,   故障码发送级别
* 返回值  ： CI_ERROR   
*            CI_SUCCESS 
*/
UINT8 OpenLeadRouteSectionCheck(UINT16 routeId,UINT8 functionId,UINT8 sendLevel);

/* L17_Cbtc进路信号保持区段联锁条件检查 */
/*
* 功能描述： Cbtc进路信号保持区段联锁条件检查
* 参数说明：
*            UINT16 RouteId,    进路号
*            UINT8 functionId,  调用函数编号
*            UINT8 sendLevel,   故障码发送级别
* 返回值  ： CI_ERROR   
*            CI_SUCCESS 
*/
UINT8 KeepCbtcRouteSectionCheck(UINT16 routeId,UINT8 functionId,UINT8 sendLevel);

/*
* 功能描述： 点式折返进路开放信号联锁条件检查
* 参数说明：
*            UINT16 RouteId,    进路号
*            UINT8 functionId,  调用函数编号
*            UINT8 sendLevel,   故障码发送级别
* 返回值  ： CI_ERROR   
*            CI_SUCCESS 
*/
UINT8 OpenBlocReturnRouteSignalCheck(UINT16 routeId,UINT8 functionId,UINT8 sendLevel);



/* L04_CBTC进路防淹门联锁条件检查 */
/*
* 功能描述： 降级模式进路防淹门联锁条件检查
* 参数说明：
*            UINT16 RouteId,    进路号
*            UINT8 functionId,  调用函数编号
*            UINT8 sendLevel,   故障码发送级别
* 返回值  ： CI_ERROR   
*            CI_SUCCESS 
*/
UINT8 CBTCRouteFloodGateCheck(UINT16 routeId,UINT8 functionId,UINT8 sendLevel);

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

/*
* 功能描述： 保护区段占用延时处理
* 参数说明： const UINT16 routeId, 进路ID
* 返回值  ： CI_SUCCESS:成功
			 CI_ERROR:失败
*/
UINT8 BlocOverlapOccClearProc(const UINT16 routeId);
/*************************************************************************************************/

/*
* 功能描述： 进路第一个逻辑区段解锁条件检查
* 参数说明： const UINT16 routeId, 进路ID
*            
* 返回值  ： CI_ERROR 失败
*            CI_SUCCESS 成功
*            CI_CANCLE_ZHAOCHA_FAIL 照查检查失败
*            RETURN_AUTOLOCK_ERR_EXCEPT 正常解锁失败
*/
UINT8 RouteLogSecAutoUnlockProcess(UINT16 const routeId, UINT16* logSectionId);



/*
* 功能描述： 进路逻辑区段三点检查延时解锁处理
* 参数说明： const UINT16 routeId, 进路ID
* 返回值  ： void   
*/
void LogSecDelayUnlockProc(const UINT16 routeId);

/*
* 功能描述： 区段延时解锁
* 参数说明： UINT16 const routeId，进路号
*            UINT16* phySectionId，解锁区段ID
* 返回值  ： CI_ERROR
*            RETURN_DELAYUNLOCK_ERR_TIMECOUNT
*            CI_SUCCESS
*/
UINT8 LogSecDelayUnlockProcess(UINT16 const routeId, UINT16* logSectionId);

UINT8 CLDKeepOpenSecCheck(UINT16 routeId,UINT8 functionId,UINT8 sendLevel);

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

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

/*
* 功能描述： 进路逻辑区段资源列车释放处理
* 参数说明： const UINT16 routeId, 进路ID
* 返回值  ： void
*/
void RouteLgcSecResReleaseProcess(const UINT16 wRouteId);
/*
* 功能描述： 检查保护区段人工解锁是否可执行
* 参数说明： const UINT16 overlapId, 保护区段ID
*            const UINT32 dwOverlapUnlockCount 保护区段自动解锁周期数
*            const UINT32 dwOverlapUnlockStartCyc 保护区段自动解锁起始周期
* 返回值  ： CI_SUCCESS:成功
			 CI_ERROR:失败
*/
UINT8 CheckOverlapLaborUnlock(const UINT16 overlapId, const UINT32 dwOverlapUnlockCount, const UINT32 dwOverlapUnlockStartCyc);
/*
* 功能描述： 计算保护区段解锁倒计时开始周期
* 参数说明： const UINT16 overlapId, 保护区段ID
*            const UINT16 phySecId  进路最后物理区段ID
* 返回值  ： 倒计时
*/
UINT32 CalculaOverlapUnlockStartCycNum(const UINT16 overlapId,const UINT16 phySecId);

/* C81_办理部分路径锁闭列车进路 */
/*
* 功能描述： 办理部分路径锁闭列车进路
* 参数说明： UINT16 const routeId   进路编号
* 返回值  ： CI_ERROR
*            CI_SUCCESS
* 故障编码： EFUNC_SET_HALF_ROUTE_LOGIC
*/
UINT8 SetHalfTrainRouteLogicProcess(UINT16 const routeId);

/* L04_进路办理部分路径区段联锁条件检查 */
/*
* 功能描述： 进路办理部分路径区段联锁条件检查
* 参数说明：
*            UINT16 RouteId,    进路号
*            UINT8 functionId,  调用函数编号
*            UINT8 sendLevel,   故障码发送级别
* 返回值  ： CI_ERROR
*            CI_SUCCESS
*/
UINT8 SetHalfRouteSectionCheck(UINT16 routeId, UINT8 functionId, UINT8 sendLevel);

/* 进路办理部分道岔联锁条件检查 */
/*
* 功能描述： 点式进路道岔联锁条件检查
* 参数说明：
*            UINT16 RouteId,    进路号
*            UINT8 functionId,  调用函数编号
*            UINT8 sendLevel,   故障码发送级别
* 返回值  ： CI_ERROR
*            CI_SUCCESS
*/
UINT8 SetRouteHalfSwitchCheck(UINT16 routeId, UINT8 functionId, UINT8 sendLevel);

/* 进路锁闭部分道岔联锁条件检查 */
/*
* 功能描述： 进路部分锁闭道岔联锁条件检查
* 参数说明：
*            UINT16 RouteId,    进路号
*            UINT8 functionId,  调用函数编号
*            UINT8 sendLevel,   故障码发送级别
* 返回值  ： CI_ERROR
*            CI_SUCCESS
*/
UINT8 LockRouteHalfSwitchCheck(UINT16 routeId, UINT8 functionId, UINT8 sendLevel);

/* C82_锁闭进路部分路径处理 */
/*
* 功能描述： 锁闭CBTC列车进路
* 参数说明： UINT16 const routeId   进路号
* 返回值  ： CI_ERROR
*            CI_SUCCESS
* 故障编码： EFUNC_LOCK_CBTC_T_ROUTE
*/
UINT8 LockRouteHalfLogicProcess(UINT16 const routeId);

/*
* 功能描述：获取最接近进路保护区段的VBTC列车
* 输入参数：UINT16 const routeId 保护区段锁闭所属进路ID
* 输出参数：UINT16* pTrainId 最接近保护区段的列车ID
* 返回值  ：CI_SUCCESS 获取成功
*           CI_ERROR 获取失败
*/
UINT8 GetNearstVBTCTrainToOverlap(UINT16 const routeId, UINT16* pTrainId);

/*
* 功能描述： 部分进路区段征用检查
* 参数说明： const UINT16 routeId   部分进路号
* 返回值  ： CI_ERROR
*            CI_SUCCESS
* 故障编码： EFUNC_CHECK_HALFROUTE_USEING
*/
UINT8 HalfRoutePhySecUseLogicProcess(const UINT16 routeId);

/*
* 功能描述：其它控区保护区段的防护道岔征用申请处理
* 参数说明：const UINT16 wSwitchId 道岔ID
*           const UINT16 wOverlapId 保护区段ID
* 返 回 值：无
* Created By LQ 2024.12.04
*/
void OtherCiOlpProSwUseApplyPro(const UINT16 wSwitchId, const UINT16 wOverlapId);

/*
* 功能描述：其它控区保护区段的防护道岔征用取消处理
* 参数说明：const UINT16 wSwitchId 道岔ID
*           const UINT16 wOverlapId 保护区段ID
* 返 回 值：无
* Created By LQ 2024.12.04
*/
void OtherCiOlpProSwUseCancelPro(const UINT16 wSwitchId, const UINT16 wOverlapId);

/*
* 功能描述：列车释放解锁逻辑区段时三点检查
* 参数说明：const UINT16 wRouteId 进路id
*           const UINT16 wUnlockLgcSecId 待解锁区段ID
* 返 回 值：无
* Created By fan 2025.03.10
*/
UINT8 RouteLgcSecResUnlockNextSecCheck(const UINT16 wRouteId, const UINT16 wUnlockLgcSecId);

/*
* 功能描述：列车释放解锁折返区段三点检查
* 参数说明：const UINT16 wValidReturnSigId 折返信号机
*           const UINT16 wRouteId 折入进路ID
* 返 回 值：无
* Created By fan 2025.03.10
*/
UINT8 RouteLgcSecResReturnSecCheck(UINT16 wValidReturnSigId, const UINT16 wRouteId);

#if 0 
/*
* 功能描述： 逻辑区段保护锁闭可用性逻辑处理
* 参数说明： UINT16 const overlapId 保护区段ID
* 返回值  ： CI_ERROR 检查不通过
*            CI_SUCCESS 检查通过
*/
UINT8 LgcOverlapUsableProcess(UINT16 const wLgcSecId);
#endif
#ifdef __cplusplus
}
#endif

#endif
