/********************************************************
*
* 文 件 名： RouteRecoverManage.h
* 版权说明： 北京交控科技有限公司
* 创建时间： 2017-01-04
* 作    者： 联锁组
* 功能描述： 实现PSD、SPKS、扣车恢复重开信号的功能。该模块主要完成开信号以及信号保持阶段的相关联锁条件检查，与已有的联锁逻辑检查非常相似。
* 函数包括：
* 使用注意：
* 修改记录：
*		2017-01-04 新建
*
********************************************************/
#ifndef _ROUTE_RECOVER_MANAGE_H
#define _ROUTE_RECOVER_MANAGE_H

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

#define OPEN_CHECK_STEP_OPEN 0x55U
#define OPEN_CHECK_STEP_RECOVER 0xaaU

/*
* 功能描述： 开放CBTC进路逻辑检查
* 参数说明：
UINT16 const routeId 进路ID
* 返回值  ：
CI_ERROR:失败
CI_SUCCESS:成功
CI_ROUTE_RECOVER_ERR:失败，但是当条件满足时可以重开信号
*/
UINT8 OpenCbtcLTrainRouteErrProcess(const UINT16 routeId, const UINT8 checkStep);

/*
* 功能描述： 开放点式进路逻辑检查
* 参数说明：
UINT16 const routeId 进路ID
* 返回值  ：
CI_ERROR:失败
CI_SUCCESS:成功
CI_ROUTE_RECOVER_ERR:失败，但是当条件满足时可以重开信号
*/
UINT8 OpenBlocLTrainRouteErrProcess(const UINT16 routeId);

/*
* 功能描述： 开放CBTC折返进路逻辑检查
* 参数说明：
UINT16 const routeId 进路ID
* 返回值  ：
CI_ERROR:失败
CI_SUCCESS:成功CI_ROUTE_RECOVER_ERR
CI_ROUTE_RECOVER_ERR:失败，但是当条件满足时可以重开信号
*/
UINT8 OpenCbtcReturnRouteErrProcess(const UINT16 routeId, const UINT8 checkStep);

/*
* 功能描述： 开放点式级别折返进路信号
* 参数说明：
UINT16 const routeId 进路ID
* 返回值  ：
CI_ERROR:失败
CI_SUCCESS:成功
CI_ROUTE_RECOVER_ERR:失败，但是当条件满足时可以重开信号
*/
UINT8 OpenBlocReturnRouteErrProcess(const UINT16 routeId);

/*
* 功能描述： CBTC列车信号保持
* 参数说明：
UINT16 const routeId 进路ID
* 返回值  ：
CI_ERROR:失败
CI_SUCCESS:成功
CI_ROUTE_RECOVER_ERR:失败，但是当条件满足时可以重开信号
*/
UINT8 KeepCbtcLTrainRouteErrProcess(const UINT16 routeId);

/*
* 功能描述： 点式信号保持
* 参数说明：
UINT16 const routeId 进路ID
* 返回值  ：
CI_ERROR:失败
CI_SUCCESS:成功
CI_ROUTE_RECOVER_ERR:失败，但是当条件满足时可以重开信号
*/
UINT8 KeepBlocLTrainRouteErrProcess(const UINT16 routeId);

/*
* 功能描述： CBTC折返进路信号保持
* 参数说明：
UINT16 const routeId 进路ID
* 返回值  ：
CI_ERROR:失败
CI_SUCCESS:成功
CI_ROUTE_RECOVER_ERR:失败，但是当条件满足时可以重开信号
*/
UINT8 KeepCbtcReturnRouteErrProcess(const UINT16 routeId);

/*
* 功能描述： 点式折返进路信号保持
* 参数说明：
UINT16 const routeId 进路ID
* 返回值  ：
CI_ERROR:失败
CI_SUCCESS:成功
CI_ROUTE_RECOVER_ERR:失败，但是当条件满足时可以重开信号
*/
UINT8 KeepBlocReturnRouteErrProcess(const UINT16 routeId);

/*
* 功能描述： 开放列车进路信号逻辑处理，车辆段
* 参数说明：
UINT16 const routeId 进路ID
* 返回值  ：
CI_ERROR:失败
CI_SUCCESS:成功
CI_ROUTE_RECOVER_ERR:失败，但是当条件满足时可以重开信号
*/
UINT8 OpenLTrainRouteErrP(const UINT16 routeId, const UINT8 checkStep);

/*
* 功能描述： 开放调车进路信号逻辑处理，车辆段
* 参数说明：
UINT16 const routeId 进路ID
* 返回值  ：
CI_ERROR:失败
CI_SUCCESS:成功
CI_ROUTE_RECOVER_ERR:失败，但是当条件满足时可以重开信号
*/
UINT8 OpenDTrainRouteErrP(const UINT16 routeId, const UINT8 checkStep);

/*
* 功能描述： 保持列车进路信号逻辑处理，车辆段
* 参数说明：
UINT16 const routeId 进路ID
* 返回值  ：
CI_ERROR:失败
CI_SUCCESS:成功
CI_ROUTE_RECOVER_ERR:失败，但是当条件满足时可以重开信号
*/
UINT8 KeepLTrainRouteErrP(const UINT16 routeId);

/*
* 功能描述： 保持调车进路信号逻辑处理，车辆段
* 参数说明：
UINT16 const routeId 进路ID
* 返回值  ：
CI_ERROR:失败
CI_SUCCESS:成功
CI_ROUTE_RECOVER_ERR:失败，但是当条件满足时可以重开信号
*/
UINT8 KeepDTrainRouteErrP(const UINT16 routeId);

/*
* 功能描述： SPKS、PSD、扣车恢复检查
* 参数说明： const UINT16 routeId, 进路ID
* 返回值  ： UINT8
*/
UINT8 RecoverOpenRouteCheck(const UINT16 routeId);

/*
* 功能描述： SPKS、PSD、扣车恢复检查，车辆段
* 参数说明： const UINT16 routeId, 进路ID
* 返回值  ： UINT8
*/
UINT8 RecoverOpenRouteCheckCLD(const UINT16 routeId);

/*
* 功能描述： 恢复进路照查物理区段条件满足检查
* 参数说明： UINT16 const routeId   进路段号
*            UINT16 const phySecId  物理区段号
*            UINT16 *pDevId,    设备Id（返回）
*            UINT8 *pDevState,  设备状态（返回）
* 返回值  ： CI_ERROR   
*            CI_SUCCESS 
*/
UINT8 RoutePhySecZhaoChaErrCheck(UINT16 const routeId, UINT16 const phySecId);
#endif
