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

#ifndef _MASK_CONFIG_DATA_MANAGE_H_
#define _MASK_CONFIG_DATA_MANAGE_H_


#include "CommonTypes.h"
#include "MaskDefine.h"


#ifdef __cplusplus
extern "C" {
#endif


/*码位数据结构体*/
typedef struct S_MaskConfigDataStruct
{
    UINT16 MaskId;      	/*码位ID (配置字段)*/
	UINT8 DeviceType;    	/*设备类型 (配置字段)*/
	UINT16 DeviceId;    	/*设备ID (配置字段)*/
	UINT8 MaskType;         /*码位类型 (配置字段)*/
} MaskConfigDataStruct;

/*******************************全局变量声明*******************************/
extern MaskConfigDataStruct CiToAtsMaskConfigDataStru[CI_TO_ATS_MASK_SUM_MAX];  /*定义各CI站到ATS码位配置数据*/
extern UINT16 CiToAtsMaskCurSum ;  /*定义各CI站到ATS码位当前总数*/

extern MaskConfigDataStruct CiToZcMaskConfigDataStru[CI_TO_ZC_MASK_SUM_MAX];  /*定义各CI站到ZC码位配置数据*/
extern UINT16 CiToZcMaskCurSum ;  /*定义各CI站到ZC码位当前总数*/

extern MaskConfigDataStruct CiToCiMaskConfigDataStru[CI_SUM_MAX][CI_TO_CI_MASK_SUM_MAX];  /*定义各CI站到CI码位配置数据*/
extern UINT16 CiToCiMaskCurSum[CI_SUM_MAX] ;  /*定义各CI站到CI码位当前总数*/

extern MaskConfigDataStruct ZcToCiMaskConfigDataStru[ZC_TO_CI_MASK_SUM_MAX];  /*定义各ZC站到CI码位配置数据*/
extern UINT16 ZcToCiMaskCurSum ;  /*定义各CI站接收ZC码位当前总数*/

extern MaskConfigDataStruct CiToLeuMaskConfigDataStru[CI_TO_LEU_MASK_SUM_MAX];  /*定义各CI到LEU码位配置数据*/
extern UINT16 CiToLeuMaskCurSum ;  /*定义各CI站到Leu码位当前总数*/

extern MaskConfigDataStruct CiToVobcMaskConfigDataStru[CI_SUM_MAX][ZC_TO_CI_MASK_SUM_MAX];  /*定义各CI到VOBC码位配置数据*/
extern UINT16 CiToVobcMaskCurSum[CI_SUM_MAX] ;  /*定义各CI站到VOBC码位当前总数*/

extern MaskConfigDataStruct VobcToCiMaskConfigDataStru[CI_SUM_MAX][ZC_TO_CI_MASK_SUM_MAX];  /*定义各VOBC到CI码位配置数据*/
extern UINT16 VobcToCiMaskCurSum[CI_SUM_MAX] ;  /*定义各VOBC到CI码位当前总数*/

extern UINT16 LeuToCiStruSum ;				                /*Leu到联锁的数据块数目*/


/*
* 功能描述： 获取指定系统间码位配置数据中指定数组下标的码位ID
* 参数说明： const UINT8 SendsystemType, 发送方系统类型
*			 const UINT8 RecvsystemType, 接受方系统类型
*			 const UINT16 Index, 数组下标
* 返回值  ： 0: 获取数据失败
*			>0: 码位ID     
*/
UINT16 GetMaskId(const UINT8 SendsystemType, const UINT8 RecvsystemType, const UINT16 Index);

/*
* 功能描述： 获取指定CI到指定系统码位总数
* 参数说明： const UINT8 systemType, 系统类型
* 返回值  ： 0: 获取数据失败
*			>0: 码位总数      
*/
UINT16 GetSendMaskSum(const UINT8 systemType);

/*
* 功能描述： 获取指定CI接收指定系统码位总数
* 参数说明： const UINT8 sourceSystemType, 源系统类型
* 返回值  ： 0: 获取数据失败
*			>0: 码位总数      
*/
UINT16 GetReceiveMaskSum(const UINT8 sourceSystemType);

/*
* 功能描述： 获取指定CI到指定系统码位设备类型
* 参数说明： const UINT8 destSystemType, 目标系统类型
*			 const UINT16 Index, 数组下标
* 返回值  ： 0: 获取数据失败
*			>0: 设备类型      
*/
UINT8 GetSendMaskDeviceType(const UINT8 destSystemType, const UINT16 Index);

/*
* 功能描述： 获取指定CI到指定系统码位设备ID
* 参数说明： const UINT8 destSystemType, 目标系统类型
*			 const UINT16 Index, 数组下标
* 返回值  ： 0: 获取数据失败
*			>0: 设备ID      
*/
UINT16 GetSendMaskDeviceId(const UINT8 destSystemType, const UINT16 Index);

/*
* 功能描述： 获取指定CI到指定系统码位类型
* 参数说明： const UINT8 destSystemType, 目标系统类型
*			 const UINT16 Index, 数组下标
* 返回值  ： 0: 获取数据失败
*			>0: 码位类型      
*/
UINT8 GetSendMaskType(const UINT8 destSystemType, const UINT16 Index);

/*
* 功能描述： 获取其他系统到CI码位设备类型
* 参数说明： const UINT8 sourceSystemType, 源系统类型
*			 const UINT16 Index, 数组下标
* 返回值  ： 0: 获取数据失败
*			>0: 设备类型      
*/
UINT8 GetReceiveMaskDeviceType(const UINT8 sourceSystemType,const UINT16 Index);

/*
* 功能描述： 获取其他系统到CI码位设备ID
* 参数说明： const UINT8 sourceSystemType, 源系统类型
*			 const UINT16 Index, 数组下标
* 返回值  ： 0: 获取数据失败
*			>0: 设备ID      
*/
UINT16 GetReceiveMaskDeviceId(const UINT8 sourceSystemType,const UINT16 Index);

/*
* 功能描述： 获取其他系统到CI码位类型
* 参数说明： const UINT8 sourceSystemType, 源系统类型
*			 const UINT16 Index, 数组下标
* 返回值  ： 0: 获取数据失败
*			>0: 码位类型      
*/
UINT8 GetReceiveMaskType(const UINT8 sourceSystemType,const UINT16 Index);

/*
* 功能描述： 获取指定码位ID的数组下标
* 参数说明： const UINT8 SendsystemType, 发送方系统类型
*			 const UINT8 RecvsystemType, 接受方系统类型
*			 const UINT16 maskId, 码位ID
* 返回值  ： 0: 获取数据失败
*			>0: 数组下标    
*/
UINT16 GetMaskIndex(const UINT8 SendsystemType, const UINT8 RecvsystemType, const UINT16 maskId);




#ifdef __cplusplus
}
#endif

#endif
