/********************************************************
*                                                                                                            
* 文 件 名： GaragedoorConfigDataManage.h   
* 版权说明： 北京交控科技有限公司 
* 创建时间： 2014-12-17
* 作    者： 联锁组
* 功能描述： 车库门配置数据管理头文件  
* 函数包括： 
* 使用注意：
* 修改记录：   
*
********************************************************/ 

#ifndef _GARAGE_DOOR_CONFIG_DATA_MANAGE_H_
#define _GARAGE_DOOR_CONFIG_DATA_MANAGE_H_


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



#ifdef __cplusplus
extern "C" {
#endif



/*车库门接口数据结构体*/
typedef struct S_GaragedoorConfigDataStruct
{
    UINT16 GaragedoorId;                   /*车库门ID (配置字段)*/
    UINT8 BelongCiId;                      /*所属联锁ID*/
	UINT8 BelongVirCiId;                      /*所属联锁ID*/
	UINT16 GardoorOpenRelayId;            /*车库门开门继电器ID*/
	UINT16 GardoorCloseRelayId;            /*车库门关门继电器ID*/
	UINT16 GardoorOpenOrderRelayId;        /*车库门开门命令继电器ID*/
	UINT16 GardoorCloseOrderRelayId;       /*车库门关门命令继电器ID*/
    UINT16 GardoorModeStateRelayId;        /*车库门模式状态继电器ID*/
    UINT16 GardoorFaultStateRelayId;        /*车库门故障状态继电器ID*/
	UINT16 GardoorPangLuRelayId;        /*车库门旁路继电器ID*/
	UINT16 GardoorKGHRelayId;          /*车库门开关状态后节点继电器ID*/
	UINT16 phySecAKUId;               /*车库门对应A库线物理区段ID*/
	UINT8  depotAttribute;              /*车库门属性*/
	UINT16 signalSum;						/* 防护信号机数量 */
	UINT16 signalIdBuff[GARAGE_DOOR_SIG_MAX];	/* 防护信号机ID */
	UINT16 GardoorphySecSum;								/*车库门关联的物理区段总数*/
	UINT16 GardoorphySecBuf[GARAGE_DOOR_PHY_SEC_MAX];/*车库门关联的物理区段ID*/
	UINT16 GardoorSpksSum;								/* SPKS数量 */
	UINT16 spksIdBuff[GARAGE_DOOR_SPKS_MAX];	/* SPKSID */
	UINT8 GardoorRouteSum;								/*车库门关联的进路总数*/
	UINT16 GardoorRouteBuf[GARAGE_DOOR_ROUTE_MAX];      /*车库门关联的进路ID*/
	UINT16  GardoorLinkId;				/*车库门所在Link编号*/
	UINT32  GardoorOffset;				/*车库门所在Link偏移量*/
} GaragedoorConfigDataStruct;

/*******************************全局变量声明*******************************/
extern GaragedoorConfigDataStruct GaragedoorConfigDataStru[GARAGE_DOOR_SUM_MAX];   /*定义车库门数据配置结构体,cgh-合并CID-2539-1：此处声明不进行初始化，统一放到InitAllStaticDataStr函数中进行初始化，为解决生成内核过大得问题*/
extern UINT16 LocalCiGaragedoorIdBuf[GARAGE_DOOR_SUM_MAX];                   /*定义本地联锁车库门ID映射数组*/
extern INT16 GaragedoorCurSum;   /*车库门当前总数*/

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

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

/*
* 功能描述： 获取指定ID车库门索引号
* 参数说明： const UINT16 garagedoorId, 车库门ID
* 返回值  ： GARAGE_DOOR_SUM_MAX: 获取数据失败
*			<GARAGE_DOOR_SUM_MAX: 查找成功
*/
UINT16 GetGaragedoorConfigBufIndex(const UINT16 garagedoorId);

/*
* 功能描述： 获取指定ID车库门所属联锁ID
* 参数说明： const UINT16 garagedoorId, 车库门ID    
* 返回值  ： 0: 获取数据失败
*			>0: 所属联锁ID      
*/
UINT8 GetGaragedoorBelongCiId(const UINT16 garagedoorId);

/*
* 功能描述： 获取指定ID车库门开门继电器ID
* 参数说明： const UINT16 garagedoorId, 车库门ID    
* 返回值  ： 0: 获取数据失败
*			>0: 车库门继电器ID      
*/
UINT16 GetGaragedoorOpenRelayId(const UINT16 garagedoorId);

/*
* 功能描述： 获取指定ID车库门关门继电器ID
* 参数说明： const UINT16 garagedoorId, 车库门ID    
* 返回值  ： 0: 获取数据失败
*			>0: 车库门继电器ID      
*/
UINT16 GetGardoorCloseRelayId(const UINT16 garagedoorId);

/*
* 功能描述： 获取指定ID车库门开门命令继电器ID
* 参数说明： const UINT16 garagedoorId, 车库门ID    
* 返回值  ： 0: 获取数据失败
*			>0: 车库门继电器ID      
*/
UINT16 GetGardoorOpenOrderRelayId(const UINT16 garagedoorId);

/*
* 功能描述： 获取指定ID车库门关门命令继电器ID
* 参数说明： const UINT16 garagedoorId, 车库门ID    
* 返回值  ： 0: 获取数据失败
*			>0: 车库门继电器ID      
*/
UINT16 GetGardoorCloseOrderRelayId(const UINT16 garagedoorId);

/*
* 功能描述： 获取指定ID车库门模式状态继电器ID
* 参数说明： const UINT16 garagedoorId, 车库门ID    
* 返回值  ： 0: 获取数据失败
*			>0: 模式状态继电器ID      
*/
UINT16 GetGardoorModeStateRelayId(const UINT16 garagedoorId);

/*
* 功能描述： 获取指定ID车库门故障状态继电器ID
* 参数说明： const UINT16 garagedoorId, 车库门ID    
* 返回值  ： 0: 获取数据失败
*			>0: 故障状态继电器ID      
*/
UINT16 GetGardoorFaultStateRelayId(const UINT16 garagedoorId);

/*
* 功能描述： 获取指定ID车库门旁路继电器ID
* 参数说明： const UINT16 garagedoorId, 车库门ID    
* 返回值  ： 0: 获取数据失败
*			>0: 旁路继电器ID      
*/
UINT16 GetGardoorPangLuRelayId(const UINT16 garagedoorId);

/*
* 功能描述： 获取指定ID车库门开关状态后节点继电器ID
* 参数说明： const UINT16 garagedoorId, 车库门ID    
* 返回值  ： 0: 获取数据失败
*			>0: 开关后继电器ID      
*/
UINT16 GetGardoorKGHRelayId(const UINT16 garagedoorId);

/*
* 功能描述： 获取指定ID车库门防护信号机总数
* 参数说明： const UINT16 garagedoorId, 车库门ID    
* 返回值  ： 0: 获取数据失败
*			>0: 防护信号机总数      
*/
UINT16 GetGardoorProtectSigSum(const UINT16 garagedoorId);

/*
* 功能描述： 根据下标获取指定ID车库门防护信号机ID
* 参数说明： const UINT16 garagedoorId, 车库门ID 
*            const UINT16 sigIndex, 防护信号机下标 
* 返回值  ： 0: 获取数据失败
*			>0: 防护信号机ID      
*/
UINT16 GetGardoorProtectSigIdByIndex(const UINT16 garagedoorId,const UINT16 sigIndex);


/*
* 功能描述： 获取指定ID车库门spks总数
* 参数说明： const UINT16 garagedoorId, 车库门ID    
* 返回值  ： 0: 获取数据失败
*			>0: SPKS总数      
*/
UINT16 GetGarageSpksSum(const UINT16 garagedoorId);

/*
* 功能描述： 根据下标获取指定ID车库门spksID
* 参数说明： const UINT16 garagedoorId, 车库门ID 
*            const UINT16 spksIndex, spks下标 
* 返回值  ： 0: 获取数据失败
*			>0: SPKS ID      
*/
UINT16 GetGarageSpksIdBuff(const UINT16 garagedoorId,const UINT16 spksIndex);

/*
* 功能描述： 获取指定ID车库门关联的物理区段总数
* 参数说明： const UINT16 garagedoorId, 车库门ID    
* 返回值  ： 0: 获取数据失败
*			>0: 物理区段总数      
*/
UINT16 GetGardoorphySecSum(const UINT16 garagedoorId);

/*
* 功能描述： 根据下标获取指定ID车库门物理区段ID
* 参数说明： const UINT16 garagedoorId, 车库门ID 
*            const UINT16 phyIndex, 物理区段下标 
* 返回值  ： 0: 获取数据失败
*			>0: 物理区段 ID      
*/
UINT16 GetGardoorphySecBuf(const UINT16 garagedoorId,const UINT16 phyIndex);
/*
* 功能描述：	整理读入的车库门配置数据
* 参数说明：	无
* 返回值  ：	CI_SUCCESS,整理成功
*				CI_ERROR,整理失败
*/
UINT8 GaragedoorConfigDataManage(void);
/*
* 功能描述： 获取指定ID车库门关联进路总数
* 参数说明： const UINT16 garagedoorId, 车库门ID    
* 返回值  ： 0: 获取数据失败
*			>0: 进路总数      
*/
UINT8 GetGardoorRouteSum(const UINT16 garagedoorId);

/*
* 功能描述： 根据下标获取指定ID车库门关联进路ID
* 参数说明： const UINT16 garagedoorId, 车库门ID 
* 返回值  ： 0: 获取数据失败
*			>0: 关联进路ID      
*/
UINT16* GetGardoorRouteIdBuf(const UINT16 garagedoorId);

/*
* 功能描述： 获取指定ID车库门所属虚拟联锁ID
* 参数说明： const UINT16 garagedoorId, 车库门ID    
* 返回值  ： 0u: 获取数据失败
*			>0u: 所属虚拟联锁ID      
*/
UINT8 GetGaragedoorBelongVirCiId(const UINT16 garagedoorId);

/*
* 功能描述： 获取指定ID车库门对应A库线物理区段ID
* 参数说明： const UINT16 garagedoorId, 车库门ID
* 返回值  ： 0   查找失败
			>0  A库线物理区段ID
*/
UINT16 GetGarageDoorAKuPhySec(const UINT16 garagedoorId);

/*
* 功能描述： 获取指定ID车库门属性
* 参数说明： const UINT16 garagedoorId, 车库门ID
* 返回值  ： 0   查找失败
			1  列检库
			2  洗车库
*/
UINT8 GetGarageDoorAttribute(const UINT16 garagedoorId);

/*
* 功能描述： 获取指定ID车库门防护信号机ID数组
* 参数说明： const UINT16 garagedoorId, 车库门ID
* 返回值  ： 0u: 获取数据失败
*			>0u: 防护信号机ID
*/
UINT16* GetGardoorProtectSigId(const UINT16 garagedoorId);


/*
* 功能描述： 获取指定ID车库门出库信号机防护方向
* 参数说明： const UINT16 garagedoorId, 车库门ID
* 返回值  ： 0u: 获取数据失败
*			>0u: 方向
*/
UINT8 GetGardoorProOutDir(const UINT16 garagedoorId);

/*
* 功能描述： 获取指定ID车库门所在link
* 参数说明： const UINT16 garagedoorId, 车库门ID
* 返回值  ： linkID
* BY LC
*/
UINT16 GetGardoorPointLink(const UINT16 garagedoorId);

/*
* 功能描述： 获取指定ID车库门所在link偏移量
* 参数说明： const UINT16 garagedoorId, 车库门ID
* 返回值  ： 偏移量
* BY LC
*/
UINT32 GetGardoorPointLinkOffset(const UINT16 garagedoorId);

#ifdef __cplusplus
}
#endif

#endif
