VOS_VOID CmdErrProc(VOS_UINT8 ucClientId, VOS_UINT32 ulErrCode, VOS_UINT16 usBufLen, VOS_UINT8* pucBuf)
{
    VOS_UINT32 ulResult = 0;

    gstAtSendData.usBufLen = usBufLen;
    if(NULL != pucBuf)
    {
        /*MSP_MEMCPY(gstAtSendData.aucBuffer, pucBuf, usBufLen); */
        /*改成下面的以匹配函数 At_FormatResultData */
        MSP_MEMCPY(pgucAtSndCodeAddr, pucBuf, usBufLen);
    }

    if(ERR_MSP_SUCCESS != ulErrCode)
    {
        ulResult = ChgErrorCode(ulErrCode);

        At_FormatResultData(ucClientId, ulResult);
    }
    else
    {
        At_FormatResultData(ucClientId, AT_OK);
    }

    return ;
}
VOS_UINT32 atSendFtmDataMsg(VOS_UINT32 TaskId, VOS_UINT32 MsgId, VOS_UINT32 ulClientId, VOS_VOID* pData, VOS_UINT32 uLen)
{
    VOS_UINT32 u32Ret = ERR_MSP_UNKNOWN;
    AT_FW_DATA_MSG_STRU* pMsgBlock = NULL;

    pMsgBlock = (AT_FW_DATA_MSG_STRU*)VOS_AllocMsg(WUEPS_PID_AT,(sizeof(AT_FW_DATA_MSG_STRU)+ uLen - 20));

    if (pMsgBlock)
    {
        pMsgBlock->ulReceiverPid = TaskId;
        pMsgBlock->ulSenderPid   = WUEPS_PID_AT;
        pMsgBlock->ulLength      = sizeof(AT_FW_DATA_MSG_STRU)+ uLen - 20;
        pMsgBlock->ulMsgId      = MsgId;
        pMsgBlock->ulClientId   = ulClientId;
        pMsgBlock->ulLen        = uLen;

        MSP_MEMCPY(pMsgBlock->pContext, pData, uLen);

        u32Ret = VOS_SendMsg(pMsgBlock->ulSenderPid, pMsgBlock);

        if (u32Ret == VOS_OK)
        {
            u32Ret = ERR_MSP_SUCCESS;
        }
    }

    return u32Ret;
}
VOS_UINT32 atQryAuthorityVer(VOS_UINT8 ucClientId)
{
    VOS_UINT32 ulRst = AT_OK;
    VOS_UINT32 ulAuthorityVer = 0;
    VOS_UINT8  ucVer[4] ={0};
    VOS_UINT32 i = 0;

    ulRst = At_GetNvAuthorityVer(&ulAuthorityVer);
    if(ulRst != ERR_MSP_SUCCESS)
    {
        CmdErrProc(ucClientId, ulRst, 0, NULL);
        return AT_ERROR;
    }

    MSP_MEMCPY(ucVer,&ulAuthorityVer,sizeof(VOS_UINT32));

    for(i = 0;i < 4;i++)
    {
        ucVer[i] = (ucVer[i] > 9 ? 0 : ucVer[i]) + '0';  /**/
    }

    gstAtSendData.usBufLen = 0;
    gstAtSendData.usBufLen = (VOS_UINT16)At_sprintf( AT_CMD_MAX_LEN,
                                                (VOS_CHAR *)pgucAtSndCodeAddr,
                                                (VOS_CHAR*)pgucAtSndCodeAddr,
                                                "\r%s\r",
                                                ucVer
                                                );
    return AT_OK;
}
VOS_UINT32 SystemDataTd2Dsp(FTM_SCALIB_SYSTEM_SETTING_STRU * pstSystemInfo)
{
    if(NULL == pstSystemInfo)/* [false alarm]:fortify */
    {
        return ERR_MSP_FAILURE;/* [false alarm]:fortify */
    }

    MSP_MEMCPY((VOS_UINT8 *)(TDS_DHI_BASE_DRR), pstSystemInfo, sizeof(FTM_SCALIB_SYSTEM_SETTING_STRU));/* [false alarm]:fortify */


    return ERR_MSP_SUCCESS;/* [false alarm]:fortify */
}

VOS_UINT32 AT_SetLIndCfgReq(VOS_UINT8 ucIndex,L4A_IND_CFG_STRU* pstIndCfgReq)
{
    L4A_IND_CFG_REQ_STRU         stIndCfgReq = {0};
    VOS_UINT32                    ulRet = ERR_MSP_SUCCESS;

    stIndCfgReq.stCtrl.ulClientId = gastAtClientTab[ucIndex].usClientId;
    stIndCfgReq.stCtrl.ulOpId = 0;
    stIndCfgReq.stCtrl.ulPid = WUEPS_PID_AT;
	MSP_MEMCPY(&(stIndCfgReq.stIndCfg),pstIndCfgReq,sizeof(L4A_IND_CFG_STRU));
    ulRet = atSendDataMsg(MSP_L4_L4A_PID, ID_MSG_L4A_IND_CFG_REQ, (VOS_VOID*)(&stIndCfgReq), sizeof(L4A_IND_CFG_REQ_STRU));
    if(ERR_MSP_SUCCESS == ulRet)
    {
        return AT_OK;
    }
VOS_UINT32 SetApcoffsetFlag(VOS_CHAR * calibData)
{
    VOS_UINT8 a_converArray[sizeof(FTM_SCALIB_APCOFFSET_SETTING_STRU)];

    if(NULL == g_pstApcoffsetFlag || NULL == calibData)
    {
        return ERR_MSP_FAILURE;
    }

    MSP_MEMSET(a_converArray, 0x00, sizeof(FTM_SCALIB_APCOFFSET_SETTING_STRU));

    ATR_MC_ASCII_TO_TPDU(calibData, a_converArray, (VOS_UINT16)VOS_StrLen(calibData), sizeof(FTM_SCALIB_APCOFFSET_SETTING_STRU) * 2 + 1);
    MSP_MEMCPY(g_pstApcoffsetFlag, a_converArray, sizeof(FTM_SCALIB_APCOFFSET_SETTING_STRU));

    return ERR_MSP_SUCCESS;
}
 */
/* 功能描述: AT模块给FTM 模块发送消息
 */
/*
 */
/* 参数说明:
 */
/*   TaskId [in] 接收PID
 */
/*   MsgId  [in] 消息ID
 */
/*   ulClientId [in] 端口号
 */
/*   pData  [in] 数据起始
 */
/*   uLen   [in] 数据长度
 */
/* 返 回 值:
 */
VOS_UINT32 atSetNVWRExPara(VOS_UINT8 ucClientId)
{
    VOS_UINT32 ulRet = ERR_MSP_FAILURE;
    VOS_UINT32 ulNVID = 0;
    VOS_UINT32 ulNVWrTotleLen = 0;
    VOS_UINT32 ulNVLen = 0;
    VOS_UINT16 usNVWrLen = 0;
    static VOS_UINT8 * pu8NvWrData = NULL;
    VOS_UINT32 ulNVNum = 0;
    VOS_UINT32 i = 0;
    VOS_UINT8 au8Data[128] = {0};//MAX_NV_NUM_PER_PARA

    VOS_UINT16 usOffset = 0;
    gstAtSendData.usBufLen = 0;

    /*PCLINT*/
    if(ucClientId == 0)
    {

    }

    if(AT_CMD_OPT_SET_PARA_CMD != g_stATParseCmd.ucCmdOptType)
    {
        g_ulNVWRTL =1;
        return AT_CME_INCORRECT_PARAMETERS;
    }

    if((0 == gastAtParaList[0].usParaLen)
        || (0 == gastAtParaList[1].usParaLen)
        || (0 == gastAtParaList[2].usParaLen)
        || (0 == gastAtParaList[3].usParaLen))
    {
        g_ulNVWRTL =2;
        return AT_CME_INCORRECT_PARAMETERS;
    }

    ulNVID = gastAtParaList[0].ulParaValue;
    /*HAL_SDMLOG("\n atSetNVWRPara ulNVID = %d\n",ulNVID);*/

    if (VOS_TRUE != AT_IsNVWRAllowedNvId((VOS_UINT16)ulNVID))
    {
        g_ulNVRDTL = 3;
        return AT_CME_OPERATION_NOT_ALLOWED;
    }

    usOffset = (VOS_UINT16)gastAtParaList[1].ulParaValue;

    usNVWrLen = (VOS_UINT16)gastAtParaList[2].ulParaValue;
    HAL_SDMLOG("\n atSetNVWRPara usNVWrLen = %d\n",(VOS_INT)usNVWrLen);

    ulRet = NV_GetLength(ulNVID, (BSP_U32 *)&ulNVWrTotleLen);

    //HAL_DIAG_SDM_FUN(EN_SDM_NVRD_GETNVLEN, ulRet, ulNVID, ulNVWrTotleLen);
    if(ERR_MSP_SUCCESS != ulRet)
    {
        g_ulNVRDTL = 4;
        return AT_ERROR;
    }

    if((usOffset > (ulNVWrTotleLen - 1)) || ((usOffset + usNVWrLen) > ulNVWrTotleLen))
    {
        g_ulNVRDTL = 5;
        return AT_CME_INCORRECT_PARAMETERS;
    }

    if(0 == usOffset)
    {
        if(0 != pu8NvWrData)
        {
            VOS_MemFree(WUEPS_PID_AT, pu8NvWrData);
            pu8NvWrData = 0;
        }

        pu8NvWrData = VOS_MemAlloc(WUEPS_PID_AT, (DYNAMIC_MEM_PT), ulNVWrTotleLen);
        if(NULL == pu8NvWrData)
        {
            g_ulNVWRTL =6;
            return AT_ERROR;
        }
    }

    if(NULL == pu8NvWrData)
    {
         return AT_CME_INCORRECT_PARAMETERS;
    }

    i = 0;
    while(0 != gastAtParaList[3 + i].usParaLen)
    {
        ulRet = AT_NVWRGetParaInfo((AT_PARSE_PARA_TYPE_STRU*)(&(gastAtParaList[3 + i])), au8Data, (VOS_UINT32 *)&ulNVNum);
        if(ERR_MSP_SUCCESS != ulRet)
        {
            VOS_MemFree(WUEPS_PID_AT, pu8NvWrData);
            pu8NvWrData = 0;
            g_ulNVWRTL =7;
            return AT_CME_INCORRECT_PARAMETERS;
        }

        if(ulNVNum > 128)//MAX_NV_NUM_PER_PARA
        {
            VOS_MemFree(WUEPS_PID_AT, pu8NvWrData);
            pu8NvWrData = 0;
            g_ulNVWRTL =8;
            return AT_CME_INCORRECT_PARAMETERS;
        }

        if((ulNVLen+ulNVNum) > usNVWrLen)
        {
            VOS_MemFree(WUEPS_PID_AT, pu8NvWrData);
            pu8NvWrData = 0;
            g_ulNVWRTL =9;
            return AT_CME_INCORRECT_PARAMETERS;
        }

        MSP_MEMCPY((pu8NvWrData + usOffset + ulNVLen), au8Data, ulNVNum);

        ulNVLen += ulNVNum;
        i++;

        if(i >= (AT_MAX_PARA_NUMBER-3))
        {
            break;
        }
    }

    if(ulNVLen != usNVWrLen)
    {
        VOS_MemFree(WUEPS_PID_AT, pu8NvWrData);
        pu8NvWrData = 0;
        g_ulNVWRTL =10;
        return AT_CME_INCORRECT_PARAMETERS;
    }
    if (usOffset + usNVWrLen == ulNVWrTotleLen)
    {
        ulRet = NVM_Write(ulNVID, (VOS_VOID*)pu8NvWrData, ulNVWrTotleLen);

        //HAL_DIAG_SDM_FUN(EN_SDM_NVWR_WRITENVITEM, ulRet, ulNVID, ulNVWrTotleLen);

        if(ERR_MSP_SUCCESS != ulRet)
        {
            VOS_MemFree(WUEPS_PID_AT, pu8NvWrData);
            pu8NvWrData = 0;
            g_ulNVWRTL =11;

            return AT_ERROR;
        }
        VOS_MemFree(WUEPS_PID_AT, pu8NvWrData);
        pu8NvWrData = 0;
    }

    g_ulNVWRTL =9;

    return AT_OK;
}
VOS_UINT32 SetScalibPara(FTM_SET_SCALIB_REQ_STRU * pstFtmReq, FTM_SET_SCALIB_CNF_STRU * pstCnf)
{
    VOS_UINT32 v_frcId    = ERR_MSP_FAILURE;
    VOS_UINT32 v_opType;
    VOS_UINT32 v_bandType;
    VOS_UINT32 v_dataType;
	/*lint -save -e813*/
    FTM_SCALIB_SYSTEM_SETTING_STRU s_systemSetting;
	/*lint -restore*/
    if(NULL == pstCnf || NULL == pstFtmReq)
    {
        return ERR_MSP_FAILURE;
    }

    v_opType   = pstFtmReq->tds_OpType;
    v_bandType = pstFtmReq->tds_BandType;
    v_dataType = pstFtmReq->tds_DataType;

    /* 返回消息结构初始化 */
    pstCnf->tds_OpType   = v_opType;
    pstCnf->tds_BandType = v_bandType;
    pstCnf->tds_DataType = v_dataType;
    MSP_MEMSET(&(pstCnf->systemSetting), 0x00, sizeof(FTM_SCALIB_SYSTEM_SETTING_STRU));
    MSP_MEMSET(&(pstCnf->apcoffsetFlag), 0x00, sizeof(FTM_SCALIB_APCOFFSET_SETTING_STRU));

    switch (v_opType)
	{
        /* 初始化缓存 */
        case AT_CALIB_OP_TYPE_INI:

            v_frcId = SystemDataInit(v_bandType, v_dataType);

			break;

        /* 数据写入缓存 */
        case AT_CALIB_OP_TYPE_CACHE:

            if(gst_systemSetting != NULL)
            {
                if(pstFtmReq->tds_DataLen != 0)
                {
                    v_frcId = SetCalibParamInBuffer(v_bandType, v_dataType, (VOS_CHAR *)pstFtmReq->tds_Data, pstFtmReq->tds_DataLen);
                }
                else
                {
                    /* 写入指定类型数据,数据为空 */
                    v_frcId = ERR_MSP_FAILURE;
                }
            }
            else
            {
                /* 在写入缓存之前必须初始化缓存 */
                return ERR_MSP_FAILURE;
            }

            break;

		/* 将已缓存数据写入共享内存,并通知DSP立即加载使用 */
        case AT_CALIB_OP_TYPE_USE:

			if(gst_systemSetting != NULL)
			{
				if(pstFtmReq->tds_DataLen!= 0)
				{
					v_frcId = SetCalibParamInBuffer(v_bandType, v_dataType, (VOS_CHAR *)pstFtmReq->tds_Data, pstFtmReq->tds_DataLen);
				}
                else
                {
                    /* 写入指定类型数据,数据为空 */
                    v_frcId = ERR_MSP_FAILURE;
                }

                if(ERR_MSP_SUCCESS != v_frcId)
                {
                    return v_frcId;
                }

				v_frcId = SystemDataTd2Dsp(gst_systemSetting);
			}

			break;

        /* 将已接收数据写入FLASH,释放接收缓存 */
        case AT_CALIB_OP_TYPE_SAVE:

            if(gst_systemSetting != NULL)
            {
                /* 数据不为空时,需先将数据写入缓存 */
                if(pstFtmReq->tds_DataLen != 0)
                {
                    v_frcId = SetCalibParamInBuffer(v_bandType, v_dataType, (VOS_CHAR *)pstFtmReq->tds_Data, (VOS_UINT16)pstFtmReq->tds_DataLen);
                }

                /* 只有操作类型的情况下,也需把缓存数据写入FLASH */
                if((ERR_MSP_SUCCESS != v_frcId) &&
                    ((AT_CALIB_DATA_TYPE_BUTT != v_dataType) || (AT_CALIB_BAND_TYPE_BUTT != v_bandType)))
                {
                    return v_frcId;
                }

                v_frcId = SystemDataTdWrite(gst_systemSetting);
                VOS_MemFree(MSP_SYS_FTM_PID, gst_systemSetting);
                gst_systemSetting = NULL;
                VOS_MemFree(MSP_SYS_FTM_PID, g_pstApcoffsetFlag);
                g_pstApcoffsetFlag = NULL;
            }

            break;

		/* 查询当前缓存中指定类型的数据 */
        case AT_CALIB_OP_TYPE_GET:

            if(gst_systemSetting != NULL && g_pstApcoffsetFlag != NULL)
            {
				MSP_MEMCPY(&(pstCnf->systemSetting), gst_systemSetting, sizeof(FTM_SCALIB_SYSTEM_SETTING_STRU));
                MSP_MEMCPY(&(pstCnf->apcoffsetFlag), g_pstApcoffsetFlag, sizeof(FTM_SCALIB_APCOFFSET_SETTING_STRU));
                v_frcId = ERR_MSP_SUCCESS;
            }
            else
            {
            }

            break;

		/* 从FLASH中读取数据 */
		case AT_CALIB_OP_TYPE_READ:

            /* READ操作不能读取APCOFFSETFLAG数据 */
            if(AT_CALIB_DATA_TYPE_APCOFFSETFLAG == v_dataType)
            {
                return ERR_MSP_FAILURE;
            }

            MSP_MEMSET(&s_systemSetting, 0x00, sizeof(FTM_SCALIB_SYSTEM_SETTING_STRU));
            v_frcId = SystemDataTdRead(&s_systemSetting);

    		if(ERR_MSP_SUCCESS == v_frcId)
			{
                MSP_MEMCPY(&(pstCnf->systemSetting), &s_systemSetting, sizeof(FTM_SCALIB_SYSTEM_SETTING_STRU));
			}
            else
            {
            }

            break;

        /* 开始校准 */
        case AT_CALIB_OP_TYPE_BEGIN:

            StartRFAdjust();
            v_frcId = ERR_MSP_SUCCESS;

			break;

        /* 结束校准 */
        case AT_CALIB_OP_TYPE_END:

            FinishRFAdjust();
            v_frcId = ERR_MSP_SUCCESS;

			break;

        /* 设置DSP校准状态 */
        case AT_CALIB_OP_TYPE_SET:

            /* SET命令只支持APCOFFSETFLAG的设置 */
            if(AT_CALIB_DATA_TYPE_APCOFFSETFLAG != v_dataType)
            {
                v_frcId = ERR_MSP_INVALID_PARAMETER;
                break;
            }

            /* 长度检查 */
            if(0 == pstFtmReq->tds_DataLen || pstFtmReq->tds_DataLen > sizeof(VOS_UINT32)*2)
            {
                v_frcId = ERR_MSP_FAILURE;
                break;
            }

            v_frcId = SetApcoffsetFlag((VOS_CHAR *)pstFtmReq->tds_Data);
            if(ERR_MSP_SUCCESS != v_frcId)
            {
                return v_frcId;
            }

            v_frcId = SetApcflagTd2Dsp(g_pstApcoffsetFlag);

			break;

        default:

            v_frcId = ERR_MSP_FAILURE;

            break;
    }

    return v_frcId;
}
VOS_UINT32 SetCalibParamInBuffer(VOS_UINT32 bandType, VOS_UINT32 dataType, VOS_CHAR * calibData, VOS_UINT16 dataLen)
{
    VOS_UINT8 a_converArray[AT_CALIB_PARAM_APC];

    MSP_MEMSET(a_converArray, 0x00, AT_CALIB_PARAM_APC);

    if(NULL == calibData)
    {
        return ERR_MSP_FAILURE;
    }

    if(dataType == AT_CALIB_DATA_TYPE_BUTT)
    {
        return ERR_MSP_FAILURE;
    }

    switch(dataType)
    {
        case AT_CALIB_DATA_TYPE_APCOFFSETFLAG:

            /* APCOFFSETFLAG只通过SET命令设置 */
            return ERR_MSP_FAILURE;

        case AT_CALIB_DATA_TYPE_APCOFFSET:

            /* 数据超过最大长度 */
            if(dataLen > AT_CALIB_PARAM_APCOFF*2)
            {
                return ERR_MSP_FAILURE;
            }

            ATR_MC_ASCII_TO_TPDU(calibData, a_converArray, (VOS_UINT16)VOS_StrLen(calibData), AT_CALIB_PARAM_APCOFF * 2 + 1);

            if(AT_CALIB_BAND_TYPE_A == bandType)
            {
                MSP_MEMCPY(gst_systemSetting->tdsTxPaPowerBand_A, a_converArray, AT_CALIB_PARAM_APCOFF);
            }
            else if(AT_CALIB_BAND_TYPE_E == bandType)
            {
                MSP_MEMCPY(gst_systemSetting->tdsTxPaPowerBand_E, a_converArray, AT_CALIB_PARAM_APCOFF);
            }
            else if(AT_CALIB_BAND_TYPE_F == bandType)
            {
                MSP_MEMCPY(gst_systemSetting->tdsTxPaPowerBand_F, a_converArray, AT_CALIB_PARAM_APCOFF);
            }
            else
            {
                return ERR_MSP_FAILURE;
            }

            gst_systemSetting->tdApcOffsetFlag = 0xDCBA;

            break;

        case AT_CALIB_DATA_TYPE_APC:

            /* 数据超过最大长度 */
            if(dataLen > AT_CALIB_PARAM_APC*2)
            {
                return ERR_MSP_FAILURE;
            }

            ATR_MC_ASCII_TO_TPDU(calibData, a_converArray, (VOS_UINT16)VOS_StrLen(calibData), AT_CALIB_PARAM_APC * 2 + 1);

            if(AT_CALIB_BAND_TYPE_A == bandType)
            {
                MSP_MEMCPY(gst_systemSetting->tdsTxApcCompBand_A, a_converArray, AT_CALIB_PARAM_APC);
            }
            else if(AT_CALIB_BAND_TYPE_E == bandType)
            {
                MSP_MEMCPY(gst_systemSetting->tdsTxApcCompBand_E, a_converArray, AT_CALIB_PARAM_APC);
            }
            else if(AT_CALIB_BAND_TYPE_F == bandType)
            {
                MSP_MEMCPY(gst_systemSetting->tdsTxApcCompBand_F, a_converArray, AT_CALIB_PARAM_APC);
            }
            else
            {
                return ERR_MSP_FAILURE;
            }

            gst_systemSetting->tdRfTabFlag1 = 0x5555;
            gst_systemSetting->tdRfTabFlag2 = 0xAAAA;

            break;

         case AT_CALIB_DATA_TYPE_APCFREQ:

            /* 数据超过最大长度 */
            if(dataLen > AT_CALIB_PARAM_APCFREQ*2)
            {
                return ERR_MSP_FAILURE;
            }

            ATR_MC_ASCII_TO_TPDU(calibData, a_converArray, (VOS_UINT16)VOS_StrLen(calibData), AT_CALIB_PARAM_APCFREQ * 2 + 1);

            if(AT_CALIB_BAND_TYPE_A == bandType)
            {
                MSP_MEMCPY(gst_systemSetting->tdsTxApcFreqCompBand_A, a_converArray, AT_CALIB_PARAM_APCFREQ);
            }
            else if(AT_CALIB_BAND_TYPE_E == bandType)
            {
                MSP_MEMCPY(gst_systemSetting->tdsTxApcFreqCompBand_E, a_converArray, AT_CALIB_PARAM_APCFREQ);
            }
            else if(AT_CALIB_BAND_TYPE_F == bandType)
            {
                MSP_MEMCPY(gst_systemSetting->tdsTxApcFreqCompBand_F, a_converArray, AT_CALIB_PARAM_APCFREQ);
            }
            else
            {
                return ERR_MSP_FAILURE;
            }

            gst_systemSetting->tdRfTabFlag1 = 0x5555;
            gst_systemSetting->tdRfTabFlag2 = 0xAAAA;

            break;

        case AT_CALIB_DATA_TYPE_AGC:

            /* 数据超过最大长度 */
            if(dataLen > AT_CALIB_PARAM_AGC*2)
            {
                return ERR_MSP_FAILURE;
            }

            ATR_MC_ASCII_TO_TPDU(calibData, a_converArray, (VOS_UINT16)VOS_StrLen(calibData), AT_CALIB_PARAM_AGC * 2 + 1);

            if(AT_CALIB_BAND_TYPE_A == bandType)
            {
                MSP_MEMCPY(gst_systemSetting->tdsRxAgcCompBand_A, a_converArray, AT_CALIB_PARAM_AGC);
            }
            else if(AT_CALIB_BAND_TYPE_E == bandType)
            {
                MSP_MEMCPY(gst_systemSetting->tdsRxAgcCompBand_E, a_converArray, AT_CALIB_PARAM_AGC);
            }
            else if(AT_CALIB_BAND_TYPE_F == bandType)
            {
                MSP_MEMCPY(gst_systemSetting->tdsRxAgcCompBand_F, a_converArray, AT_CALIB_PARAM_AGC);
            }
            else
            {
                return ERR_MSP_FAILURE;
            }

            gst_systemSetting->tdRfTabFlag1 = 0x5555;
            gst_systemSetting->tdRfTabFlag2 = 0xAAAA;
            gst_systemSetting->afcAgcDcFlag = 0xABCD;

            break;

        case AT_CALIB_DATA_TYPE_AGCFREQ:

            /* 数据超过最大长度 */
            if(dataLen > AT_CALIB_PARAM_AGCFREQ*2)
            {
                return ERR_MSP_FAILURE;
            }

            ATR_MC_ASCII_TO_TPDU(calibData, a_converArray, (VOS_UINT16)VOS_StrLen(calibData), AT_CALIB_PARAM_AGCFREQ * 2 + 1);

            if(AT_CALIB_BAND_TYPE_A == bandType)
            {
                MSP_MEMCPY(gst_systemSetting->tdsRxAgcFreqCompBand_A, a_converArray, AT_CALIB_PARAM_AGCFREQ);
            }
            else if(AT_CALIB_BAND_TYPE_E == bandType)
            {
                MSP_MEMCPY(gst_systemSetting->tdsRxAgcFreqCompBand_E, a_converArray, AT_CALIB_PARAM_AGCFREQ);
            }
            else if(AT_CALIB_BAND_TYPE_F == bandType)
            {
                MSP_MEMCPY(gst_systemSetting->tdsRxAgcFreqCompBand_F, a_converArray, AT_CALIB_PARAM_AGCFREQ);
            }
            else
            {
                return ERR_MSP_FAILURE;
            }

            gst_systemSetting->tdRfTabFlag1 = 0x5555;
            gst_systemSetting->tdRfTabFlag2 = 0xAAAA;
            gst_systemSetting->afcAgcDcFlag = 0xABCD;

            break;

        default:

            return ERR_MSP_FAILURE;

    }

    return ERR_MSP_SUCCESS;
}
/*****************************************************************************
 函 数 名  : SystemDataTdWrite
 功能描述  : 写入TDS相关NV项
 输入参数  : FTM_SCALIB_SYSTEM_SETTING_STRU
 输出参数  : 无
 返 回 值  : VOS_UINT32
*****************************************************************************/
VOS_UINT32 SystemDataTdWrite(FTM_SCALIB_SYSTEM_SETTING_STRU * pstSystemInfo)
{
    VOS_UINT32 ret = ERR_MSP_SUCCESS;
    TDS_NV_PA_POWER_STRU maxPower;

    if (NULL == pstSystemInfo)
    {
        return ERR_MSP_FAILURE;
    }

    MSP_MEMSET(&maxPower, 0x00, sizeof(TDS_NV_PA_POWER_STRU));

    /* band A */
    MSP_MEMCPY((maxPower.asTxMaxPower), (pstSystemInfo->tdsTxPaPowerBand_A), AT_CALIB_PARAM_APCOFF);
    ret = NVM_Write(NV_ID_TDS_TX_PA_POWER_BAND_A, &maxPower, AT_CALIB_PARAM_APCOFF_MAX);
    if(ret != ERR_MSP_SUCCESS)
    {
        return ret;
    }

    ret = NVM_Write(NV_ID_TDS_TX_APC_COMP_BAND_A, pstSystemInfo->tdsTxApcCompBand_A, AT_CALIB_PARAM_APC);
    if(ret != ERR_MSP_SUCCESS)
    {
        return ret;
    }

    ret = NVM_Write(NV_ID_TDS_TX_APC_FREQ_COMP_BAND_A, pstSystemInfo->tdsTxApcFreqCompBand_A, AT_CALIB_PARAM_APCFREQ);
    if(ret != ERR_MSP_SUCCESS)
    {
        return ret;
    }

    ret = NVM_Write(NV_ID_TDS_RX_AGC_COMP_BAND_A, pstSystemInfo->tdsRxAgcCompBand_A, AT_CALIB_PARAM_AGC);
    if(ret != ERR_MSP_SUCCESS)
    {
        return ret;
    }

    ret = NVM_Write(NV_ID_TDS_RX_AGC_FREQ_COMP_BAND_A, pstSystemInfo->tdsRxAgcFreqCompBand_A, AT_CALIB_PARAM_AGCFREQ);
    if(ret != ERR_MSP_SUCCESS)
    {
        return ret;
    }

    /* band E */
    MSP_MEMCPY((maxPower.asTxMaxPower), (pstSystemInfo->tdsTxPaPowerBand_E), AT_CALIB_PARAM_APCOFF);
    ret = NVM_Write(NV_ID_TDS_TX_PA_POWER_BAND_E, &maxPower, AT_CALIB_PARAM_APCOFF_MAX);
    if(ret != ERR_MSP_SUCCESS)
    {
        return ret;
    }

    ret = NVM_Write(NV_ID_TDS_TX_APC_COMP_BAND_E, pstSystemInfo->tdsTxApcCompBand_E, AT_CALIB_PARAM_APC);
    if(ret != ERR_MSP_SUCCESS)
    {
        return ret;
    }

    ret = NVM_Write(NV_ID_TDS_TX_APC_FREQ_COMP_BAND_E, pstSystemInfo->tdsTxApcFreqCompBand_E, AT_CALIB_PARAM_APCFREQ);
    if(ret != ERR_MSP_SUCCESS)
    {
        return ret;
    }

    ret = NVM_Write(NV_ID_TDS_RX_AGC_COMP_BAND_E, pstSystemInfo->tdsRxAgcCompBand_E, AT_CALIB_PARAM_AGC);
    if(ret != ERR_MSP_SUCCESS)
    {
        return ret;
    }

    ret = NVM_Write(NV_ID_TDS_RX_AGC_FREQ_COMP_BAND_E, pstSystemInfo->tdsRxAgcFreqCompBand_E, AT_CALIB_PARAM_AGCFREQ);
    if(ret != ERR_MSP_SUCCESS)
    {
        return ret;
    }

    /* band F */
    MSP_MEMCPY((maxPower.asTxMaxPower), (pstSystemInfo->tdsTxPaPowerBand_F), AT_CALIB_PARAM_APCOFF);
    ret = NVM_Write(NV_ID_TDS_TX_PA_POWER_BAND_F, &maxPower, AT_CALIB_PARAM_APCOFF_MAX);
    if(ret != ERR_MSP_SUCCESS)
    {
        return ret;
    }

    ret = NVM_Write(NV_ID_TDS_TX_APC_COMP_BAND_F, pstSystemInfo->tdsTxApcCompBand_F, AT_CALIB_PARAM_APC);
    if(ret != ERR_MSP_SUCCESS)
    {
        return ret;
    }

    ret = NVM_Write(NV_ID_TDS_TX_APC_FREQ_COMP_BAND_F, pstSystemInfo->tdsTxApcFreqCompBand_F, AT_CALIB_PARAM_APCFREQ);
    if(ret != ERR_MSP_SUCCESS)
    {
        return ret;
    }

    ret = NVM_Write(NV_ID_TDS_RX_AGC_COMP_BAND_F, pstSystemInfo->tdsRxAgcCompBand_F, AT_CALIB_PARAM_AGC);
    if(ret != ERR_MSP_SUCCESS)
    {
        return ret;
    }

    ret = NVM_Write(NV_ID_TDS_RX_AGC_FREQ_COMP_BAND_F, pstSystemInfo->tdsRxAgcFreqCompBand_F, AT_CALIB_PARAM_AGCFREQ);
    if(ret != ERR_MSP_SUCCESS)
    {
        return ret;
    }

	return ret;
}