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

#ifndef _OVERLAP_DATA_MANAGE_H_
#define _OVERLAP_DATA_MANAGE_H_


#include "OverlapConfigDataManage.h"
#include "CommonTypes.h"
#include "../Switch/SwitchDefine.h"



#ifdef __cplusplus
extern "C" {
#endif



/*保护区段数据结构体*/
typedef struct S_OverlapDataStruct
{
    UINT16 OverlapId;          /*保护区段组ID (初始化字段)*/ 
	UINT16 BelongRouteId;      /*所属进路ID (动态字段)*/ 
	UINT32 UnlockStartCycNum;  /*保护区段解锁起始周期号 (动态字段)*/ 
	UINT32 XuanPaiStartCycNum; /*保护区段选排开始周期号(动态字段)*/
	UINT8 OverlapUnlockApplyFlag; /*向ZC申请解锁保护区段解锁标志，20181105*/
	UINT16 wOverlapUnlockApplyTrainId;/* 申请保护区段解锁的列车ID（不带0x14）*/
	UINT32 dwReqIvocUnLockStartCycNum;  /*向车申请解锁保护区段起始周期号*/
	UINT8 cIvocAllowUnlockFlag;  /*列车允许解锁保护区段标志，0xAA同意解锁，0x55不同意解锁*/
	UINT8 OverlapCanLaborUnlockFlag;/*保护区段可以人工解锁标志*/
	UINT8 OverlapLaborUnlockSetState;/*保护区段人工解锁设置状态*/
	UINT32 laborUnlockStartCycNum;/*人工解锁起始周期号*/
	UINT8 atsOrlaborLockFlag;/*ATS或人工锁闭命令下达标志，用于计算倒计时的起始时间*/
	UINT32 lockStartCycNum;/*保护区段锁闭成功起始周期号*/
	UINT16 overlapUnlockTime;/*保护区段解锁倒计时*/
	UINT8 laborLockOverlapCmd;/*人工锁闭保护区段命令，用于人工锁闭一次有效命令处理*/
	UINT8 OverlapFromSetRouteCmdFlag;/*保护区段由进路办理时连带的标志*/
	UINT8 cProSwitchCheckResultFlag;  /*跨控区防护道岔检查结果标志（0xFF：默认值，0x55：失败，0xAA：成功）*/
	UINT8 cProSwitchCheckStartFlag;  /*跨控区防护道岔检查开始标志（0x55：检查开始，0xAA：检查停止）*/
} OverlapDataStruct;

/*******************************全局变量声明*******************************/
extern OverlapDataStruct OverlapDataStru[OVERLAP_SUM_MAX];   /*定义OVERLAP数据结构体*/
/*
* 功能描述： 获取指定ID保护区段数据
* 参数说明： 
* 返回值  ： 
            OverlapDataStruct *    
*/
OverlapDataStruct *GetOverlapData(void);

/*
* 功能描述： 获取指定ID保护区段所属进路ID
* 参数说明： const UINT16 overlapId, 保护区段ID    
* 返回值  ： 0: 获取数据失败
*			>0: 所属进路ID      
*/
UINT16 GetOverlapBelongRouteId(const UINT16 overlapId);

/*
* 功能描述： 设置指定ID保护区段组解锁起始周期号
* 参数说明： const UINT16 overlapId, 保护区段ID   
*			 const UINT16 belongRouteId, 所属进路号
* 返回值  ： 无
*			        
*/
void SetOverlapBelongRouteId(const UINT16 overlapId, const UINT16 belongRouteId);

/*
* 功能描述： 设置保护区段关联防护道岔防护锁闭状态
* 参数说明： const UINT16 overlapId, 保护区段ID
*            const UINT8 lockCommand, 锁闭状态
* 返回值  ： void
*/
void SetOverlapRelateProtSwLockSta(const UINT16 overlapId, const UINT8 lockCommand);

/*
* 功能描述： 获取指定ID保护区段组解锁起始周期号
* 参数说明： const UINT16 overlapId, 保护区段ID    
* 返回值  ： 0: 获取数据失败
*			>0: 解锁起始周期号      
*/
UINT32 GetOverlapUnlockStartCycNum(const UINT16 overlapId);

/*
* 功能描述： 设置指定ID保护区段组解锁起始周期号
* 参数说明： const UINT16 overlapId, 保护区段ID   
*			 const UINT32 unlockStartCycNum, 解锁起始周期号
* 返回值  ： 0: 设置失败
*			 1: 设置成功      
*/
UINT8 SetOverlapUnlockStartCycNum(const UINT16 overlapId, const UINT32 unlockStartCycNum);

/*
* 功能描述： 获取指定ID保护区段选排开始周期号
* 参数说明： const UINT16 overlapId, 保护区段ID    
* 返回值  ： 0: 获取数据失败
*			>0: 选排起始周期号      
*/
UINT32 GetOverlapXuanPaiStartCycNum(const UINT16 overlapId);

/*
* 功能描述： 设置指定ID保护区段选排开始周期号
* 参数说明： const UINT16 overlapId, 保护区段ID   
*			 const UINT32 unlockStartCycNum, 选排起始周期号
* 返回值  ：无
*			      
*/
void SetOverlapXuanPaiStartCycNum(const UINT16 overlapId, const UINT32 xuanpaiStartCycNum);
/*
* 功能描述： 获取指定ID保护区段向ZC申请解锁保护区段标志
* 参数说明： const UINT16 overlapId, 保护区段ID    
* 返回值  ： 0: 获取数据失败
*			>0: 选排起始周期号      
*/
UINT8 GetOverlapUnlockApplyFlag(const UINT16 overlapId);
/*
* 功能描述： 设置指定ID保护区段向ZC申请解锁保护区段标志
* 参数说明： const UINT16 overlapId, 保护区段ID   
*			 const UINT8 overlapUnlockApplyFlag
* 返回值  ： 无
*			       
*/
void SetOverlapUnlockApplyFlag(const UINT16 overlapId, const UINT8 overlapUnlockApplyFlag);

/*
* 功能描述：获取指定ID保护区段申请解锁的列车ID
* 参数说明：const UINT16 overlapId, 保护区段ID
* 返回值  ：0 获取失败
*           其它 列车ID（不带0x14）
*/
UINT16 GetOverlapUnlockApplyTrainId(const UINT16 overlapId);


/*
* 功能描述： 设置指定ID保护区段申请解锁的列车ID
* 参数说明： const UINT16 overlapId, 保护区段ID
*			 const UINT16 wTrainId，列车ID（不带0x14）
* 返回值  ： 无
*
*/
void SetOverlapUnlockApplyTrainId(const UINT16 overlapId, const UINT16 wTrainId);


/*
* 功能描述： 设置保护区段的逻辑区段列车资源申请
* 参数说明： const UINT16 wOverlapId, 保护区段ID const UINT16 wTrnId 列车ID
*
* 返回值  ： VOID
*/
void SetOverlapTrainLockApply(const UINT16 wOverlapId, const UINT16 wTrnId);

/*
* 功能描述： 设置保护区段可以人工解锁标志
* 参数说明： const UINT16 overlapId, 保护区段ID   
*			 const UINT8 CanLaborUnlockFlag 能否人工解锁标志  
*/
void SetOverlapCanLaborUnlockFlag(const UINT16 overlapId,const UINT8 CanLaborUnlockFlag);
/*
* 功能描述： 获取保护区段可以人工解锁标志
* 参数说明： const UINT16 overlapId, 保护区段ID   
*			 const UINT8 CanLaborUnlockFlag 能否人工解锁标志
* 返回值  ： 0: 获取失败
*			 0<: 获取成功      
*/
UINT8 GetOverlapCanLaborUnlockFlag(const UINT16 overlapId);
/*
* 功能描述： 设置保护区段人工解锁命令设置状态
* 参数说明： const UINT16 overlapId, 保护区段ID   
*			 const UINT8 LaborUnlockSetState   人工解锁命令设置状态
*/
void SetOverlapLaborUnlockSetState(const UINT16 overlapId,const UINT8 LaborUnlockSetState);

/*
* 功能描述： 获取保护区段人工解锁命令设置状态
* 参数说明： const UINT16 overlapId, 保护区段ID   
* 返回值  ： 0: 获取失败
*			 0<: 获取成功            
*/
UINT8 GetOverlapLaborUnlockSetState(const UINT16 overlapId);

/*
* 功能描述： 设置保护区段人工解锁起始周期号
* 参数说明： const UINT16 overlapId, 保护区段ID   
*			 const UINT32 laborUnlockStartCycNum  人工解锁起始周期号
*/
void SetlaborUnlockStartCycNum(const UINT16 overlapId,const UINT32 laborUnlockStartCycNum);
/*
* 功能描述： 获取保护区段人工解锁起始周期号
* 参数说明： const UINT16 overlapId, 保护区段ID   
* 返回值  ： 0: 获取失败
*			 0<: 获取成功   
*/
UINT32 GetlaborUnlockStartCycNum(const UINT16 overlapId);


/*
* 功能描述： 设置保护区段ATS或人工锁命令标识
* 参数说明： const UINT16 overlapId, 保护区段ID   
*			 const UINT8 atsOrlaborLockCmdFlag  保护区段ATS或人工锁命令标识
*/
void SetOverlapAtsOrlaborLockCmdFlag(const UINT16 overlapId,const UINT8 atsOrlaborLockCmdFlag);
/*
* 功能描述： 设置保护区段ATS或人工锁命令标识
* 参数说明： const UINT16 overlapId, 保护区段ID   
* 返回值:0:失败
*        0<:保护区段ATS或人工锁命令标识
*/
UINT8 GetOverlapAtsOrlaborLockCmdFlag(const UINT16 overlapId);
/*
* 功能描述： 设置保护区段锁闭成功开始周期
* 参数说明： const UINT16 overlapId, 保护区段ID   
*			const UINT32 lockSucessStartCycNum  保护区段锁闭成功开始周期
*/
void SetOverlaplockSucessStartCycNum(const UINT16 overlapId,const UINT32 lockSucessStartCycNum);
/*
* 功能描述： 获取保护区段锁闭成功开始周期
* 参数说明： const UINT16 overlapId, 保护区段ID   
*			const UINT32 lockSucessStartCycNum  保护区段锁闭成功开始周期
*/
UINT32 GetOverlaplockSucessStartCycNum(const UINT16 overlapId);

/*
* 功能描述： 设置保护区段倒计时解锁时间
* 参数说明： const UINT16 overlapId, 保护区段ID   
*			const UINT16 overlapUnlockTime 保护区段倒计时解锁时间
*/
void SetOverlapUnlockTime(const UINT16 overlapId,const UINT16 overlapUnlockTime);
/*
* 功能描述： 设置保护区段倒计时解锁时间
* 参数说明： const UINT16 overlapId, 保护区段ID   
* 返回值：倒计时时间
*/
UINT16 GetOverlapUnlockTime(const UINT16 overlapId);
/*
* 功能描述： 设置保护区段人工锁命令标识
* 参数说明： const UINT16 overlapId, 保护区段ID   
*			 const UINT8 laborLockCmdFlag  保护区段人工锁命令标识
*/
void SetOverlaplaborLockCmdFlag(const UINT16 overlapId,const UINT8 laborLockCmdFlag);
/*
* 功能描述： 设置保护区段人工锁命令标识
* 参数说明： const UINT16 overlapId, 保护区段ID   
* 返回值:0:失败
*        0<:保护区段人工锁命令标识
*/
UINT8 GetOverlaplaborLockCmdFlag(const UINT16 overlapId);

/*
* 功能描述：设置向车申请解锁保护区段起始周期号
* 参数说明：const UINT16 overlapId 保护区段ID
*			const UINT32 reqIvocUnlockStartCycNum 向车申请解锁保护区段起始周期号
* 返回值：无
*/
void SetReqIvocUnlockStartCycNum(const UINT16 overlapId, const UINT32 reqIvocUnlockStartCycNum);

/*
* 功能描述： 获取向车申请解锁保护区段起始周期号
* 参数说明： const UINT16 overlapId 保护区段ID
* 返回值  ： 0: 获取失败
*			 0<: 获取成功
*/
UINT32 GetReqIvocUnlockStartCycNum(const UINT16 overlapId);

/*
* 功能描述：设置指定ID保护区段列车允许解锁标志
* 参数说明：const UINT16 overlapId 保护区段ID
*			const UINT8 overlapIvocUnlockFlag 列车允许解锁标志
* 返回值  ：无
*/
void SetOverlapIvocAllowUnlockFlag(const UINT16 overlapId, const UINT8 overlapIvocUnlockFlag);

/*
* 功能描述：获取指定ID保护区段列车允许解锁标志
* 参数说明：const UINT16 overlapId 保护区段ID
* 返回值  ：0xAA: 同意解锁
*			0x55: 不同意解锁
*           0: 获取失败
*/
UINT8 GetOverlapIvocAllowUnlockFlag(const UINT16 overlapId);

/*
* 功能描述：获取指定ID保护区段关联的物理区段包含的非保护区段内的所有逻辑区段
* 参数说明：const UINT16 overlapId 保护区段ID
*          UINT16* logsecIdbuf 逻辑区段ID数组
* 返回值  ：逻辑区段数目
* BY LC
*/
UINT8 GetOverlapPhysecOtherLogSec(const UINT16 overlapId, OUT UINT16* logsecIdbuf, OUT UINT8* logSecSum);

/*
* 功能描述： 设置保护区段锁闭命令由进路办理命令连带标志
* 参数说明： const UINT16 overlapId, 保护区段ID
*			 const UINT8 setFlag  标识
*/
void SetOverlapFromSetRouteCmdFlag(const UINT16 overlapId, const UINT8 setFlag);

/*
* 功能描述： 获取保护区段锁闭命令由进路办理命令连带标志
* 参数说明： const UINT16 overlapId, 保护区段ID
* 返回值:0:失败
*        0<:连带标志
*/
UINT8 GetOverlapFromSetRouteCmdFlag(const UINT16 overlapId);

/*
* 功能描述： 清保护区段人工或ATS锁闭命令标志
* 参数说明： const UINT16 routeId, 进路ID
*            const UINT16 overlapId, 保护区段ID
* 返回值:无
* by cgh 20240920
*/
void CleanOverlapAtsOrlaborLockFlag(const UINT16 routeId, const UINT16 overlapId);

/*
* 功能描述：设置保护区段防护道岔检查结果标志
* 参数说明：const UINT16 wOverlapId 保护区段ID
*			const UINT8 cCheckResultFlag 防护道岔检查结果标志
* 返 回 值：无
* Created By LQ 2024.12.03
*/
void SetOverlapProSwtCheckResultFlag(const UINT16 wOverlapId, const UINT8 cCheckResultFlag);

/*
* 功能描述：获取保护区段防护道岔检查结果标志
* 参数说明：const UINT16 wOverlapId 保护区段ID
* 返 回 值：0xFF 默认值
*			0x55 失败
*           0xAA 成功
* Created By LQ 2024.12.03
*/
UINT8 GetOverlapProSwtCheckResultFlag(const UINT16 wOverlapId);

/*
* 功能描述：设置保护区段防护道岔检查开始标志
* 参数说明：const UINT16 wOverlapId 保护区段ID
*			const UINT8 cCheckStartFlag 防护道岔检查开始标志
* 返 回 值：无
* Created By LQ 2024.12.03
*/
void SetOverlapProSwtCheckStartFlag(const UINT16 wOverlapId, const UINT8 cCheckStarttFlag);

/*
* 功能描述：获取保护区段防护道岔检查开始标志
* 参数说明：const UINT16 wOverlapId 保护区段ID
* 返 回 值：0x55 检查开始
*           0xAA 检查停止
* Created By LQ 2024.12.03
*/
UINT8 GetOverlapProSwtCheckStartFlag(const UINT16 wOverlapId);

#ifdef __cplusplus
}
#endif

#endif
