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

#ifndef _AUTOROUTE_CONFIG_DATA_MANAGE_H_
#define _AUTOROUTE_CONFIG_DATA_MANAGE_H_


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

#ifdef __cplusplus
extern "C" {
#endif



/*自动进路配置数据结构体*/
typedef struct S_AutoRouteConfigDataStruct
{
    UINT16 AutoRouteId;                                                 /*自动进路ID (配置字段)*/
    UINT8 BelongCiId;				                                    /*所属联锁ID*/
    UINT8 RouteSum;                                                     /*自动进路包含进路数目 (配置字段)*/
    UINT16 RouteIdBuf[AUTO_ROUTE_INCLROUTE_SUM_MAX];                    /*自动进路进路ID数组 (配置字段)*/
	UINT8 AutoRouteOpposedRouteIdSum;								    /*自动通过进路抵触自动通过进路数目 (配置字段)*/
	UINT16 AutoRouteOpposedRouteIdBuf[ROUTE_OPPOSED_ROUTE_SUM_MAX];  	/*自动通过进路抵触自动通过进路ID数组 (配置字段)*/
	UINT8 AutoRouteOpposedReturnIdSum;								    /*自动通过抵触自动折返进路数目 (配置字段)*/
	UINT16 AutoRouteOpposedReturnIdBuf[ROUTE_OPPOSED_ROUTE_SUM_MAX];    /*自动通过抵触自动折返进路ID数组 (配置字段)*/
	UINT8 AutoRouteOpposedAllReturnIdSum;								/*自动通过抵触全自动折返进路数目 (配置字段)*/
	UINT16 AutoRouteOpposedAllReturnIdBuf[ROUTE_OPPOSED_ROUTE_SUM_MAX]; /*自动通过抵触全自动折返进路ID数组 (配置字段)*/

} AutoRouteConfigDataStruct;

/*组合自动进路配置数据结构体*/
typedef struct Group_AutoRouteConfigDataStruct
{
	UINT16 GroupAutoRouteId;                                    /*组合自动进路ID*/
	UINT16  InAutoRouteSum;                                      /*包含的自动进路数量*/
	UINT16 InAutoRouteIdBuff[IN_AUTO_ROUTE_SUM_MAX];            /*自动进路ID数组*/

}GroupAutoRouteConfigDataStruct;

/*全局变量声明*/
extern AutoRouteConfigDataStruct AutoRouteConfigDataStru[AUTO_ROUTE_SUM_MAX];   /*定义自动进路数据配置结构体,cgh-合并CID-2539-1：此处声明不进行初始化，统一放到InitAllStaticDataStr函数中进行初始化，为解决生成内核过大得问题*/
extern UINT16 LocalCiAutoRouteIdBuf[AUTO_ROUTE_SUM_MAX] ;                   /*定义本地联锁自动进路ID映射数组*/
extern INT16 AutoRouteCurSum;   /*自动进路当前总数*/
extern GroupAutoRouteConfigDataStruct GroupAutoRouteConfigDataStru[GROUP_AUTO_ROUTE_SUM_MAX]; /*定义组合自动进路数据配置结构体*/

/*
* 功能描述： 获取自动进路进路当前总数
* 参数说明： void    
* 返回值  ： 0: 获取数据失败
*			>0: 自动进路进路当前总数
*/
UINT16 GetAutoRouteRouteCurSum(void);

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

/*
* 功能描述： 获取指定ID自动折返进路数组下标
* 参数说明： const UINT16 AutoRouteId, 自动进路ID    
* 返回值  ： 0: 获取数据失败
*			>0: 自动折返进路ID      
*/
UINT16 GetAutoRouteBufIndex(const UINT16 AutoRouteId);

/*
* 功能描述： 获取指定ID自动进路所属联锁ID
* 参数说明： const UINT16 autoRouteId, 自动进路ID    
* 返回值  ： 0: 获取数据失败
*			>0: 所属联锁ID
*/
UINT8 GetAutoRouteBelongCiId(const UINT16 autoRouteId);

/*
* 功能描述： 获取指定ID自动进路包含进路数目
* 参数说明： const UINT16 AutoRouteId, 自动进路ID    
* 返回值  ： 0: 获取数据失败
*			>0: 进路数目
*/
UINT8 GetAutoRouteIncludeRouteSum(const UINT16 autoRouteId);

/*
* 功能描述： 获取指定ID自动进路包含进路数目
* 参数说明： const UINT8 AutoRouteId, 自动进路ID    
* 返回值  ： 0: 获取数据失败
*			>0: 进路数目
*/
UINT16* GetAutoRouteIncludeRouteBuf(const UINT16 autoRouteId);

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

/*
* 功能描述： 获取自动通过进路抵触自动通过进路数目
* 参数说明： const UINT16 autoRouteId, 自动折返进路ID    
* 返回值  ： 0: 获取数据失败
*			>0: 抵触进路数目      
*/
UINT8 GetAutoRouteOpposedRouteIdSum(const UINT16 autoRouteId);

/*
* 功能描述： 获取自动通过进路抵触自动通过进路数组
* 参数说明： const UINT16 autoRouteId, 自动折返进路ID    
* 返回值  ： 0: 获取数据失败
*			>0: 抵触进路数组指针      
*/
UINT16* GetAutoRouteOpposedRouteIdBuf(const UINT16 autoRouteId);


/*
* 功能描述： 获取自动通过进路抵触自动折返进路数目
* 参数说明： const UINT16 AutoReturnId, 自动折返进路ID    
* 返回值  ： 0: 获取数据失败
*			>0: 抵触进路数目      
*/
UINT8 GetAutoRouteOpposedReturnIdSum(const UINT16 autoRouteId);

/*
* 功能描述： 获取自动通过进路抵触自动折返进路数组
* 参数说明： const UINT16 AutoReturnId, 自动折返进路ID     
* 返回值  ： 0: 获取数据失败
*			>0: 抵触进路数组指针      
*/
UINT16* GetAutoRouteOpposedReturnIdBuf(const UINT16 autoRouteId);
/*
* 功能描述： 获取自动通过进路抵触全自动折返进路数目
* 参数说明： const UINT16 AutoReturnId, 自动折返进路ID    
* 返回值  ： 0: 获取数据失败
*			>0: 抵触进路数目      
*/
UINT8 GetAutoRouteOpposedAllRtnIdSum(const UINT16 autoRouteId);

/*
* 功能描述： 获取自动通过进路抵触全自动折返进路数组
* 参数说明： const UINT16 AutoReturnId, 自动折返进路ID     
* 返回值  ： 0: 获取数据失败
*			>0: 抵触进路数组指针      
*/
UINT16* GetAutoRouteOpposedAllRtnIdBuf(const UINT16 autoRouteId);

/*
* 功能描述： 获取指定ID组合自动进路数组下标
* 参数说明： const UINT16 groupAutoRouteId, 组合自动进路ID    
* 返回值  ： 0: 获取数据失败
*			>0: 自动进路ID      
*/
UINT16 GetGroupAutoRouteBufIndex(const UINT16 groupAutoRouteId);

/*
* 功能描述： 获取组合自动进路包含自动进路数量
* 参数说明： const UINT16 groupAutoRouteId, 组合自动进路ID    
* 返回值  ： 0: 获取数据失败
*			>0: 组合自动进路数量      
*/
UINT16 GetGroupAutoRouteHasRouteSum(const UINT16 groupAutoRouteId);

/*
* 功能描述： 获取组合自动进路包含自动进路ID数组
* 参数说明： const UINT16 groupAutoRouteId, 组合自动进路ID    
* 返回值  ： 0: 获取数据失败
*			>0: 组合自动进路包含自动进路ID数组      
*/
UINT16* GetGroupAutoRouteHasRouteIdBuff(const UINT16 groupAutoRouteId);

#ifdef __cplusplus
}
#endif

#endif
