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

#include "MaskConfigDataManage.h"



MaskConfigDataStruct CiToAtsMaskConfigDataStru[CI_TO_ATS_MASK_SUM_MAX];  /*定义各CI站到ATS码位配置数据*/ 
UINT16 CiToAtsMaskCurSum = 0u;  /*定义各CI站到ATS码位当前总数*/

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

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

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

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

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

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

UINT16 LeuToCiStruSum = 0u;				                /*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)
{
    UINT16 returnValue = 0u;/*返回值*/

	if (SendsystemType == CI_SYSTEM_TYPE_CI)
	{
		switch (RecvsystemType)
		{
        case CI_SYSTEM_TYPE_ATS:
        case CI_SYSTEM_TYPE_XIANDI:
            returnValue = CiToAtsMaskConfigDataStru[Index].MaskId;
            break;

        case CI_SYSTEM_TYPE_ZC:
            returnValue = CiToZcMaskConfigDataStru[Index].MaskId;
            break;

        case CI_SYSTEM_TYPE_LEU:
            returnValue = CiToLeuMaskConfigDataStru[Index].MaskId;
            break;

		default:
			returnValue = 0u;
            break;
		}
	}
	else if (SendsystemType == CI_SYSTEM_TYPE_ZC)
	{
		if (CI_SYSTEM_TYPE_CI == RecvsystemType)
        {
            returnValue = ZcToCiMaskConfigDataStru[Index].MaskId;
        }
        else
        {
            returnValue = 0u;
        }
    }
    else
    {
		returnValue = 0u;
	}

    return returnValue;
}

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

	case CI_SYSTEM_TYPE_ZC:
		returnValue = CiToZcMaskCurSum;
        break;

	case CI_SYSTEM_TYPE_LEU:
		returnValue = CiToLeuMaskCurSum;
        break;

	default:
		returnValue = 0u;
        break;
	}

    return returnValue;
}


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

	case CI_SYSTEM_TYPE_LEU:
		returnValue = LeuToCiStruSum;
        break;

	default:
		returnValue = 0u;
        break;
	}

    return returnValue;
}


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

	switch (destSystemType)
	{
    case CI_SYSTEM_TYPE_ATS:
    case CI_SYSTEM_TYPE_XIANDI:
        returnValue = CiToAtsMaskConfigDataStru[Index].DeviceType;
        break;
        
    case CI_SYSTEM_TYPE_ZC:
        returnValue = CiToZcMaskConfigDataStru[Index].DeviceType;
		break;

	case CI_SYSTEM_TYPE_LEU:
        returnValue = CiToLeuMaskConfigDataStru[Index].DeviceType;
		break;

	default:
		returnValue = 0u;
        break;
	}

    return returnValue;
}


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

	switch (destSystemType)
	{
    case CI_SYSTEM_TYPE_ATS:
    case CI_SYSTEM_TYPE_XIANDI:
        returnValue = CiToAtsMaskConfigDataStru[Index].DeviceId;
        break;
        
    case CI_SYSTEM_TYPE_ZC:
        returnValue = CiToZcMaskConfigDataStru[Index].DeviceId;
		break;

	case CI_SYSTEM_TYPE_LEU:
        returnValue = CiToLeuMaskConfigDataStru[Index].DeviceId;
		break;

	default:
		returnValue = 0u;
        break;
	}

    return returnValue;
}


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

	switch (destSystemType)
	{
    case CI_SYSTEM_TYPE_ATS:
    case CI_SYSTEM_TYPE_XIANDI:
        returnValue = CiToAtsMaskConfigDataStru[Index].MaskType;
        break;

	case CI_SYSTEM_TYPE_ZC:
        returnValue = CiToZcMaskConfigDataStru[Index].MaskType;
		break;

	case CI_SYSTEM_TYPE_LEU:
        returnValue = CiToLeuMaskConfigDataStru[Index].MaskType;
		break;

	default:
		returnValue = 0u;
        break;
	}

    return returnValue;
}


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

    if (CI_SYSTEM_TYPE_ZC == sourceSystemType)
    {
        returnValue = ZcToCiMaskConfigDataStru[Index].DeviceType;
    }
    else
    {
        returnValue = 0u;
    }
    
    return returnValue;
}


/*
* 功能描述： 获取其他系统到CI码位设备ID
* 参数说明： const UINT8 sourceSystemType, 源系统类型
*			 const UINT16 Index, 数组下标
* 返回值  ： 0: 获取数据失败
*			>0: 设备ID      
*/
UINT16 GetReceiveMaskDeviceId(const UINT8 sourceSystemType,const UINT16 Index)
{
    UINT16 returnValue = 0u;/*返回值*/
	
	
    if (CI_SYSTEM_TYPE_ZC == sourceSystemType)
    {
        returnValue = ZcToCiMaskConfigDataStru[Index].DeviceId;
    }
    else
    {
        returnValue = 0u;
    }
    
    return returnValue;
}


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


    if (CI_SYSTEM_TYPE_ZC == sourceSystemType)
    {
        returnValue = ZcToCiMaskConfigDataStru[Index].MaskType;
    }
    else
    {
        returnValue = 0u;
    }
    
    return returnValue;
}

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

	

    if (SendsystemType == CI_SYSTEM_TYPE_CI)
    {
        switch (RecvsystemType)
        {
        case CI_SYSTEM_TYPE_ATS:
        case CI_SYSTEM_TYPE_XIANDI:
            for (ii = 1u; ii <= CiToAtsMaskCurSum; ii++)
            {
                if (CiToAtsMaskConfigDataStru[ii].MaskId == maskId)
                {
                    returnValue = ii;
                    break;
                }
            }
            break;
            
        case CI_SYSTEM_TYPE_ZC:
            for (ii = 1u; ii <= CiToZcMaskCurSum; ii++)
            {
                if (CiToZcMaskConfigDataStru[ii].MaskId == maskId)
                {
                    returnValue = ii;
                    break;
                }
            }
            break;
            
        case CI_SYSTEM_TYPE_LEU:
            for (ii = 1u; ii <= CiToLeuMaskCurSum; ii++)
            {
                if (CiToLeuMaskConfigDataStru[ii].MaskId == maskId)
                {
                    returnValue = ii;
                    break;
                }
            }
            break;
            
        default:
            returnValue = 0u;
            break;
        }
    }
    else if (SendsystemType == CI_SYSTEM_TYPE_ZC)
    {
        if (CI_SYSTEM_TYPE_CI == RecvsystemType)
        {
            for (ii = 1u; ii <= ZcToCiMaskCurSum; ii++)
            {
                if (ZcToCiMaskConfigDataStru[ii].MaskId == maskId)
                {
                    returnValue = ii;
                    break;
                }
            }
        }
        else
        {
            returnValue = 0u;
        }
    }
    else
    {
        returnValue = 0u;
    }
    
    return returnValue;
}
