/********************************************************
*                                                                                                            
* 文 件 名： InvadeSectionConfigDataManage.h   
* 版权说明： 北京交控科技有限公司 
* 创建时间： 2015-10-11
* 作    者： 联锁组
* 功能描述： 侵限区段配置数据管理头文件  
* 函数包括： 
* 使用注意：
* 修改记录：   
*
********************************************************/ 
#ifndef __INVADESECTION_CONFIG_DATA_MANAGE_H_
#define __INVADESECTION_CONFIG_DATA_MANAGE_H_

#include "InvadeSectionDefine.h"
#include "../Route/RouteDefine.h"
#include "CommonTypes.h"
#include "../System/CiSystemDefine.h"
#include "../System/SystemParameterManage.h"

#ifdef __cplusplus
extern "C" {
#endif

/*条件道岔数据结构体*/
typedef struct S_CondSwitDataStruct
{
    UINT16 CondSwitId;				/*条件道岔ID */
    UINT16 CondSwitStat;			/*条件道岔状态*/
}CondSwitDataStruct;

/*侵限区段及相关条件道岔数据结构体*/
typedef struct S_InvSecConfigDataStruct
{
	UINT16 InvSecAndConSwiId;									/*侵限区段与相关条件道岔数据ID*/
    UINT16 InvaSectId;											/*侵限区段ID (配置字段)*/
    UINT16 CondSwitDataSum;										/*条件道岔数据总数*/
	CondSwitDataStruct CondSwitDataBuff[COND_SWITCH_SUM_MAX];	/*条件道岔数组*/
	UINT8 CondSwitLockDir;                                     /*条件道岔方向*/
}InvSecConfigDataStruct;

/*******************************全局变量声明*******************************/
extern InvSecConfigDataStruct InvSecConfigDataStru[INVA_SECT_N_COND_SWIT_SUM_MAX];		/*定义侵限区段数据结构体数组*/

extern INT16 InvSecSum;															/*侵限区段总数*/

extern UINT16 IdToIndMap[INVA_SECT_N_COND_SWIT_SUM_MAX];							/*定义侵限区段映射数组*/

/*
功能描述: 	设置侵限区段及条件道岔ID对数据的索引
输入参数:	无
输出参数:	无
返回值:		CI_ERROR 设置失败
				CI_SUCCESS 设置成功
*/
UINT8 SetInvSecAndConSwiBufInd(void);

/*
功能描述: 	获得侵限区段总数
输入参数:	无
输出参数:	无
返回值:		[1, 65535]侵限区段数量
				0 获取失败
*/
UINT16 GetInvSecAndConSwiSum(void);

/*
功能描述: 	获得侵限区段ID
输入参数:	INT16 InvSecInd 侵限区段索引
输出参数:	无
返回值:		[1, 65535]侵限区段ID
				0 获取失败
*/
UINT16 GetInvaSectId(UINT16 invSecAndConSwiId);

/*
功能描述: 	获得侵限区段所有条件道岔数量
输入参数:	UINT16 invSecAndConSwiId 侵限区段及条件道岔数据ID
输出参数:	无
返回值:		[1, 65535]侵限区段所有条件道岔数量
				0 获取失败
*/
UINT16 GetInvaSectsCondSwitSum(UINT16 invSecAndConSwiId);

/*
功能描述: 	获得指定侵限区段的指定条件道岔ID
输入参数:	INT16 InvSecInd 侵限区段索引
				INT16 ConSwiInd 条件道岔索引
输出参数:	无
返回值:		[1, 65535]条件道岔ID
				0 获取失败
*/
UINT16 GetInvaSectsCondSwitId(UINT16 invSecAndConSwiId, INT16 ConSwiInd);

/*
功能描述: 	获得指定侵限区段的指定条件道岔状态
输入参数:	INT16 InvSecInd 侵限区段索引
				INT16 ConSwiInd 条件道岔索引
输出参数:	无
返回值:		[1, 65535]条件道岔状态
				0 获取失败
*/
UINT16 GetInvaSectsCondSwitStat(UINT16 invSecAndConSwiId, INT16 ConSwiInd);

/*
* 功能描述： 获取保护区段侵限道岔配置数据
* 参数说明： void    
* 返回值  ： 保护区段侵限道岔配置数据
*/
InvSecConfigDataStruct* GetInvSecConfigData(void);

#ifdef __cplusplus
}
#endif

#endif

