/********************************************************
*                                                                                                            
* 文 件 名： ESBConfigDataManage.h   
* 版权说明： 北京交控科技有限公司 
* 创建时间： 2012-03-20
* 作    者： 联锁组
* 功能描述： 紧急停车按钮配置数据管理头文件  
* 函数包括：
* 使用注意：
* 修改记录：   
*
********************************************************/ 

#ifndef _ESB_CONFIG_DATA_MANAGE_H_
#define _ESB_CONFIG_DATA_MANAGE_H_


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


#ifdef __cplusplus
extern "C" {
#endif



/*紧急停车按钮接口数据结构体*/
typedef struct S_EsbConfigDataStruct
{
    UINT16 EsbId;             /*紧急停车按钮ID (配置字段)*/
    UINT8 BelongCiId;         /*所属联锁ID*/
	UINT8 BelongVirCiId;        /*所属虚拟联锁ID*/
	UINT16 BelongPlatFormId;		/*紧急停车按钮所属站台ID*/
	UINT16 EsbRelayId;       /*紧急停车按钮相关继电器ID (配置字段)*/
	UINT16 wEsbRelayId2;		/*迪斯尼紧急停车按钮相关继电器ID 2(配置字段)*/
	UINT16 EsbDisRelayId;     /*紧急停车按钮表示灯相关继电器ID (配置字段)*/
	UINT16 EsbCutRelayId;     /*紧急停车按钮旁路继电器ID (配置字段)*/
	UINT16 EsbCutDisRelayId;   /*紧急停车按钮旁路表示灯继电器ID (配置字段)*/
	UINT16 EsbRepRelayId;     /*复示相邻紧急停车按钮相关继电器ID (配置字段)*/
	UINT16 EsbBuzzRelayId;    /*紧急停车蜂鸣器继电器ID*/
	UINT8 VirtualAttribute;		/*虚拟属性字段*/
	UINT16 ESSRelayId;		    /*紧急停车开关继电器ID*/
	UINT16 ESSSteadyIndicatRelayId;		/*紧急停车开关稳灯继电器ID*/
	UINT16 ESSFlashIndicatRelayId;		/*紧急停车开关闪灯继电器ID*/
	UINT16 CancelEsbRelayId;		    /*取消紧急停车按钮采集继电器ID*/
	UINT16 EsbPlatformDisRelayId;		/*紧急停车按钮站台指示灯继电器ID*/
	UINT16 EsbCutoffBuzzRelayId;		    /*切除蜂鸣器报警继电器ID*/
	UINT8 ConfigAtsCiEssSteadyMask;			/*是否配置了ATS-CI稳灯状态码位0x55 配置；0xaa未配置*/
	UINT8 ConfigAtsCiEssFlashMask;			/*是否配置了ATS-CI闪灯状态码位0x55 配置；0xaa未配置*/
} EsbConfigDataStruct;

/*******************************全局变量声明*******************************/
extern EsbConfigDataStruct EsbConfigDataStru[ESB_SUM_MAX];   /*定义ESB数据配置结构体,cgh-合并CID-2539-1：此处声明不进行初始化，统一放到InitAllStaticDataStr函数中进行初始化，为解决生成内核过大得问题*/
extern UINT16 LocalCiEsbIdBuf[ESB_SUM_MAX];                   /*定义本地联锁紧急停车按钮ID映射数组*/
extern INT16 EsbCurSum;   /*ESB当前总数*/
extern UINT16 totalEsbNum;/*本联锁和相邻联锁发送给本联锁ESB总数*/

/*
* 功能描述： 获取紧急停车当前总数
* 参数说明： void    
* 返回值  ： 0: 获取数据失败
*			>0: 紧急停车当前总数
*/
UINT16 GetEsbSum(void);

/*
* 功能描述： 获取指定数组下标对应的紧急停车ID
* 参数说明： const UINT16 bufIndex, 数组下标    
* 返回值  ： 0: 获取数据失败
*			>0: 紧急停车ID      
*/
UINT16 GetEsbId(const UINT16 bufIndex);

/*
* 功能描述： 获取指定ID紧急停车按钮索引号
* 参数说明： const UINT16 esbId, 紧急停车按钮ID
* 返回值  ： ESB_SUM_MAX: 获取数据失败
*			<ESB_SUM_MAX: 查找成功
*/
UINT16 GetEsbConfigBufIndex(const UINT16 esbId);

/*
* 功能描述： 获取指定ID站台紧急停车按钮所属联锁ID
* 参数说明： const UINT16 esbId, 站台紧急停车按钮ID    
* 返回值  ： 0: 获取数据失败
*			>0: 所属联锁ID      
*/
UINT8 GetEsbBelongCiId(const UINT16 esbId);

/*
* 功能描述： 获取指定ID站台紧急停车按钮所属站台ID
* 参数说明： const UINT16 esbId, 站台紧急停车按钮ID
* 返回值  ： 0: 获取数据失败
*			>0: 所属联锁ID
*/
UINT16 GetEsbBelongPlatFormId(const UINT16 esbId);

/*
* 功能描述： 获取指定ID紧急停车按钮继电器ID
* 参数说明： const UINT16 esbId, 紧急停车按钮ID    
* 返回值  ： 0: 获取数据失败
*			>0: 紧急停车按钮继电器ID      
*/
UINT16 GetEsbRelayId(const UINT16 esbId);

/*
* 功能描述： 获取指定ID紧急停车按钮继电器ID 2
* 参数说明： const UINT16 esbId, 紧急停车按钮ID
* 返回值  ： 0: 获取数据失败
*			>0: 紧急停车按钮继电器ID
*/
UINT16 GetEsbRelayId2(const UINT16 esbId);

/*
* 功能描述： 获取指定ID紧急停车按钮旁路继电器ID
* 参数说明： const UINT16 esbId, 紧急停车按钮ID
* 返回值  ： 0: 获取数据失败
*			>0: 紧急停车按钮继电器ID
*/
UINT16 GetEsbCutRelayId(const UINT16 esbId);

/*
* 功能描述：	整理读入的ESB配置数据
* 参数说明：	无
* 返回值  ：	CI_SUCCESS,整理成功
*				CI_ERROR,整理失败
*/
UINT8 EsbConfigDataManage(void);

/*
* 功能描述：	整理读入的相邻联锁ESB配置数据
* 参数说明：	esbSum ESB数量
*				esbIdBuff 相邻联锁发送给本联锁的ESBID配置数据
* 返回值  ：	1,整理成功
*				0,整理失败
*/
UINT8 AddExtendEsbIdDataManage(UINT16 esbSum,const UINT16 *esbIdBuff);

/*
* 功能描述： 获取相邻联锁发送给本联锁以及本联锁ESB当前总数
* 参数说明： void    
* 返回值  ： 0: 获取数据失败
*			>0且小于 ESB_SUM_MAX: ESB当前总数
*/
UINT16 GetTotalEsbCurNum(void);

/*
* 功能描述： 获取指定ID ESB的虚拟属性
* 参数说明： const UINT16 esbId, ESB ID    
* 返回值  ： 0: 获取数据失败
*			>0: ESB的虚拟属性      
*/
UINT8 GetEsbVirtualAttribute(const UINT16 esbId);

/*
* 功能描述： 获取指定ID ESB复示继电器ID
* 参数说明： const UINT16 esbId
* 返回值  ：  0: 获取数据失败
*		 >0: esb复视继电器ID
*/
UINT16 GetEsbRepRelayId(const UINT16 esbId);



/*
* 功能描述： 获取指定ID紧急停车按钮指示灯继电器ID
* 参数说明： const UINT16 esbId, 紧急停车按钮指示灯ID    
* 返回值  ： 0: 获取数据失败
*			>0: 紧急停车按钮指示灯继电器ID      
*/
UINT16 GetEsbDisRelayId(const UINT16 esbId);


/*
* 功能描述： 获取指定ID紧急停车按钮旁路指示灯继电器ID
* 参数说明： const UINT16 esbId, 紧急停车按钮ID
* 返回值  ： 0: 获取数据失败
*			>0: 紧急停车按钮继电器ID
*/
UINT16 GetEsbCutDisRelayId(const UINT16 esbId);

/*
* 功能描述： 获取指定ID站台紧急停车按钮所属虚拟联锁ID
* 参数说明： const UINT16 esbId, 站台紧急停车按钮ID    
* 返回值  ： 0: 获取数据失败
*			>0: 所属联锁ID      
*/
UINT8 GetEsbBelongVirCiId(const UINT16 esbId);

/*
* 功能描述： 获取指定ID站台紧急停车按钮对应的蜂鸣器继电器ID
* 参数说明： const UINT16 esbId, 站台紧急停车按钮ID    
* 返回值  ： 0: 获取数据失败
*			>0: 蜂鸣器继电器ID   
*/
UINT16 GetEsbBuzzRelayId(const UINT16 esbId);
/*
* 功能描述： 获取指定ID紧急停车开关继电器ID
* 参数说明： const UINT16 esbId, 紧急停车按钮ID
* 返回值  ： 0: 获取数据失败
*			>0: 紧急停车开关继电器ID
* cgh-合并CID-2349-3：
*/
UINT16 GetESSRelayId(const UINT16 esbId);


/*
* 功能描述： 获取指定ID紧急停车开关稳灯继电器ID
* 参数说明： const UINT16 esbId, 紧急停车按钮ID
* 返回值  ： 0: 获取数据失败
*			>0: 紧急停车开关稳灯继电器ID
* cgh-合并CID-2349-3：
*/
UINT16 GetESSSteadyIndicatRelayId(const UINT16 esbId);

/*
* 功能描述： 获取指定ID紧急停车开关闪光指示灯继电器ID
* 参数说明： const UINT16 esbId, 紧急停车按钮ID
* 返回值  ： 0: 获取数据失败
*			>0: 紧急停车开关闪灯继电器ID
* cgh-合并CID-2349-3：
*/
UINT16 GetESSFlashIndicatRelayId(const UINT16 esbId);
/*
* 功能描述： 获取指定紧急停车对应的ESS稳灯继电器ID
* 参数说明： const UINT16 bufIndex, 数组下标
* 返回值  ： 0: 获取数据失败
*			>0: 继电器ID
* cgh-合并CID-2349-3：
*/
UINT16 GetEssSteadyIndicatId(const UINT16 esbId);

/*
* 功能描述： 获取指定紧急停车对应的ESS闪灯继电器ID
* 参数说明： const UINT16 bufIndex, 数组下标
* 返回值  ： 0: 获取数据失败
*			>0: 继电器ID
* cgh-合并CID-2349-3：
*/
UINT16 GetEssFlashIndicatId(const UINT16 esbId);

/*
* 功能描述： 获取指定ESB对应ATS-CI的ESS稳灯状态码位是否配置标志
* 参数说明： UINT16 esbId ESBID
* 返回值  ：ESS_MASK_NO 未配置
*			ESS_MASK_YES 配置
* cgh-合并CID-2349-3：
*/
UINT8 GetEssSteadyCiToAtsMaskFlag(UINT16 esbId);

/*
* 功能描述： 获取指定ESB对应ATS-CI的ESS闪灯状态码位是否配置标志
* 参数说明： UINT16 esbId ESBID
* 返回值  ：ESS_MASK_NO 未配置
*			ESS_MASK_YES 配置
* cgh-合并CID-2349-3：
*/
UINT8 GetEssFlashCiToAtsMaskFlag(UINT16 esbId);

/*
* 功能描述： 获取指定ID紧急停车按钮取消紧急停车按钮继电器ID
* 参数说明： const UINT16 esbId, 紧急停车按钮ID
* 返回值  ： 0: 获取数据失败
*			>0: 取消紧急停车按钮继电器ID
*/
UINT16 GetCancelEsbRelayId(const UINT16 esbId);

/*
* 功能描述： 获取指定ID紧急停车按钮站台指示灯继电器ID
* 参数说明： const UINT16 esbId, 紧急停车按钮ID
* 返回值  ： 0: 获取数据失败
*			>0: 紧急停车按钮站台指示灯继电器ID
*/
UINT16 GetEsbPlatformDisRelayId(const UINT16 esbId);

/*
* 功能描述： 获取指定ID紧急停车按钮切除蜂鸣器报警继电器ID
* 参数说明： const UINT16 esbId, 紧急停车按钮ID
* 返回值  ： 0: 获取数据失败
*			>0: 紧急停车按钮切除蜂鸣器报警继电器ID
*/
UINT16 GetEsbCutoffBuzzRelayId(const UINT16 esbId);

/*
* 功能描述： 检查Esb是否属于传输范围
* 参数说明： const UINT16 wCheckEsbId, 检查EsbID
* 返回值  ： CI_ERROR 属于
*			 CI_SUCCESS 不属于
* by cgh 20240621
*/
UINT8 CheckEsbBelSendRange(const UINT16 wCheckEsbId);

#ifdef __cplusplus
}
#endif

#endif
