VOS_UINT32 atQryDLoadVer(VOS_UINT8 ucClientId)
{
    VOS_UINT32 ulRst = AT_OK;
    VOS_UINT8* pData = NULL;
    gstAtSendData.usBufLen = 0;

    pData = VOS_MemAlloc(WUEPS_PID_AT, (DYNAMIC_MEM_PT), UPGRADE_STR_BUF_SIZE);
    if(NULL == pData)
    {
        CmdErrProc(ucClientId, ERR_MSP_MALLOC_FAILUE, 0, NULL);
        return AT_ERROR;
    }

    MSP_MEMSET(pData,0,UPGRADE_STR_BUF_SIZE);
    ulRst = BSP_DLOAD_GetDloadVer((BSP_CHAR *)pData,UPGRADE_STR_BUF_SIZE);
    if(ulRst != ERR_MSP_SUCCESS)
    {
        VOS_MemFree(WUEPS_PID_AT, pData);
        CmdErrProc(ucClientId, ulRst, 0, NULL);
        return AT_ERROR;
    }

    gstAtSendData.usBufLen = (VOS_UINT16)At_sprintf( AT_CMD_MAX_LEN,
                                           (VOS_CHAR *)pgucAtSndCodeAddr,
                                           (VOS_CHAR*)pgucAtSndCodeAddr,
                                           "\r%s\r",
                                           pData
                                         );

    VOS_MemFree(WUEPS_PID_AT, pData);

    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;
}
VOS_UINT32 at_ftm_scellinfoRdFun(VOS_VOID* pParam)
{
    VOS_UINT32 ret                           = ERR_MSP_SUCCESS;
    FTM_RD_SCELLINFO_CNF_STRU  * pstCnf = NULL;

    pstCnf = (FTM_RD_SCELLINFO_CNF_STRU *)VOS_MemAlloc(MSP_SYS_FTM_PID ,(DYNAMIC_MEM_PT), sizeof(FTM_RD_SCELLINFO_CNF_STRU));

    if (NULL != pstCnf)
    {
        MSP_MEMSET(pstCnf, 0x00, sizeof(FTM_RD_SCELLINFO_CNF_STRU));
        ret = DHI_getCurrentCellInfo(&(pstCnf->scellinfoStru));
        pstCnf->ulErrCode = ret;
        ret = ftm_SendDataMsg(MSP_SYS_FTM_PID, WUEPS_PID_AT, ID_MSG_FTM_RD_SCELLINFO_CNF,
            (VOS_UINT32) pstCnf, sizeof(FTM_RD_SCELLINFO_CNF_STRU));
        VOS_MemFree(MSP_SYS_FTM_PID, pstCnf);
    }
	else
	{
		ret = ERR_MSP_NO_MORE_MEMORY;
	}

    return ret;
}
//原作备份
VOS_UINT32 atQryDLoadInfo(VOS_UINT8 ucClientId)
{
    S32_T len = 0;
    S32_T ret = 0;

    //软件版本号
    VOS_CHAR *pcStrSoftWare  = NULL;
    VOS_CHAR szSendSW[MSP_UPGRADE_DLOAD_SOFTWARE_LEN +1] = {0,};

    //后台版本号
    VOS_CHAR *pcStrIsoVer    = NULL;
    VOS_CHAR szSendISO[MSP_UPGRADE_DLOAD_ISO_LEN+1]={0,};

    //产品名称
    VOS_CHAR *pcStrProductID = NULL;
    VOS_CHAR szSendProductID[MSP_UPGRADE_DLOAD_PRODUCTID_LEN+1]={0,};

    //下载类型
    VOS_CHAR *pcStrDLoadType = NULL;
    VOS_CHAR szSendDloadType[4]={0,};

    VOS_UINT32 i = 0;

    gstLAtSendData.usBufLen = 0;

    //获取软件版本号字符串
    {
        pcStrSoftWare = (VOS_CHAR*)MSP_MALLOC(UPGRADE_STR_BUF_SIZE);
        if( NULL == pcStrSoftWare )
        {
            return AT_CME_MEMORY_FAILURE;
        }
        MSP_MEMSET(pcStrSoftWare,0,UPGRADE_STR_BUF_SIZE);

        ret = sda_GetSoftwareVer((S8_T*)pcStrSoftWare, (S32_T)UPGRADE_STR_BUF_SIZE);
        if( (ERR_MSP_FAILURE == ret)
            ||(ERR_MSP_INVALID_PARAMETER == ret)
            || (ret > MSP_UPGRADE_DLOAD_SOFTWARE_LEN))
        {
            HAL_DIAG_SDM_FUN(EN_SDM_AT_UPGRADE_ERR,ret,AT_UPGRADE_DLOADINFO,0);
            MSP_FREE(pcStrSoftWare);
            return AT_ERROR;
        }
        //swver:
        for( i = 0; i < ret; i++ )
        {
            szSendSW[i]=pcStrSoftWare[i];
        }
        szSendSW[ret]='\0';

        MSP_FREE(pcStrSoftWare);
        pcStrSoftWare = NULL;
    }

    //后台版本号字符串
    {
        pcStrIsoVer = (VOS_CHAR*)MSP_MALLOC(UPGRADE_STR_BUF_SIZE);
        if( NULL == pcStrIsoVer )
        {
            return AT_CME_MEMORY_FAILURE;
        }
        MSP_MEMSET(pcStrIsoVer,0,UPGRADE_STR_BUF_SIZE);

        ret = sda_GetISOVer((S8_T*)pcStrIsoVer, (S32_T)UPGRADE_STR_BUF_SIZE);
        if( (ERR_MSP_FAILURE == ret)
            || (ERR_MSP_INVALID_PARAMETER == ret)
            || (ret > MSP_UPGRADE_DLOAD_ISO_LEN))
        {
            HAL_DIAG_SDM_FUN(EN_SDM_AT_UPGRADE_ERR,ret,AT_UPGRADE_DLOADINFO,0);
            MSP_FREE(pcStrIsoVer);
            return AT_ERROR;
        }
        //isover:
        for(i=0;i<ret;i++)
        {
            szSendISO[i]=pcStrIsoVer[i];
        }
        szSendISO[ret]='\0';

        MSP_FREE(pcStrIsoVer);
        pcStrIsoVer = NULL;
    }

    //产品名称字符串
    {
        pcStrProductID = (VOS_CHAR*)MSP_MALLOC(UPGRADE_STR_BUF_SIZE);
        if( NULL == pcStrProductID )
        {
            return AT_CME_MEMORY_FAILURE;
        }
        MSP_MEMSET(pcStrProductID,0,UPGRADE_STR_BUF_SIZE);

        ret = sda_GetProductId((S8_T*)pcStrProductID, (S32_T)UPGRADE_STR_BUF_SIZE);
        if( (ERR_MSP_FAILURE == ret)
            ||(ERR_MSP_INVALID_PARAMETER == ret)
            || (ret > MSP_UPGRADE_DLOAD_SOFTWARE_LEN))
        {
            HAL_DIAG_SDM_FUN(EN_SDM_AT_UPGRADE_ERR,ret,AT_UPGRADE_DLOADINFO,0);
            MSP_FREE(pcStrProductID);
            return AT_ERROR;
        }
        //product name:
        for(i=0;i<ret;i++)
        {
            szSendProductID[i]= pcStrProductID[i];
        }

        szSendProductID[ret]='\0';

        MSP_FREE(pcStrProductID);
        pcStrProductID = NULL;

    }

    //获取下载类型
    {
        ret = sda_GetDloadType();
        if((ret != 0) && (ret != 1))
        {
            HAL_DIAG_SDM_FUN(EN_SDM_AT_UPGRADE_ERR,ret,AT_UPGRADE_DLOADINFO,0);
            return AT_ERROR;
        }
        //dload type:
        if(ret == 0)
        {
            szSendDloadType[0]='0';
        }
        else
        {
            szSendDloadType[0]='1';
        }
        szSendDloadType[1]='\0';

    }

    gstLAtSendData.usBufLen = 0;
    gstLAtSendData.usBufLen = (VOS_UINT16)At_sprintf( AT_CMD_MAX_LEN,
                                                (VOS_CHAR *)(pgucLAtSndCodeAddr),
                                                (VOS_CHAR*)(pgucLAtSndCodeAddr + gstLAtSendData.usBufLen),
                                                "\r\nswver:%s\r\n",
                                                szSendSW
                                              );

    gstLAtSendData.usBufLen += (VOS_UINT16)At_sprintf( AT_CMD_MAX_LEN,
                                                (VOS_CHAR *)(pgucLAtSndCodeAddr),
                                                (VOS_CHAR*)(pgucLAtSndCodeAddr+ gstLAtSendData.usBufLen),
                                                "\r\nisover:%s\r\n",
                                                szSendISO
                                              );
    gstLAtSendData.usBufLen += (VOS_UINT16)At_sprintf( AT_CMD_MAX_LEN,
                                                (VOS_CHAR *)(pgucLAtSndCodeAddr),
                                                (VOS_CHAR*)(pgucLAtSndCodeAddr+ gstLAtSendData.usBufLen),
                                                "\r\nproduct name:%s\r\n",
                                                szSendProductID
                                              );
    gstLAtSendData.usBufLen += (VOS_UINT16)At_sprintf( AT_CMD_MAX_LEN,
                                                (VOS_CHAR *)(pgucLAtSndCodeAddr),
                                                (VOS_CHAR*)(pgucLAtSndCodeAddr+ gstLAtSendData.usBufLen),
                                                "\r\ndload type:%s\r\n",
                                                szSendDloadType
                                              );
    return AT_OK;
}
/*本命令用户查询单板信息,用于返回单板和后台版本号、产品型号名称、下载类型信息*/
VOS_UINT32 atQryDLoadInfo(VOS_UINT8 ucClientId)
{
    VOS_UINT32 ulRst = AT_OK;
    VOS_UINT8* pData = NULL;
    gstAtSendData.usBufLen = 0;


    pData = VOS_MemAlloc(WUEPS_PID_AT, (DYNAMIC_MEM_PT), UPGRADE_STR_BUF_SIZE);
    if(NULL == pData)
    {
        CmdErrProc(ucClientId, ERR_MSP_MALLOC_FAILUE, 0, NULL);
        return AT_ERROR;
    }

    /*获取软件版本号字符串*/
    MSP_MEMSET(pData,0, UPGRADE_STR_BUF_SIZE);
    ulRst = BSP_DLOAD_GetSoftwareVer((BSP_CHAR *)pData,UPGRADE_STR_BUF_SIZE);
    if(ulRst != ERR_MSP_SUCCESS)
    {
        VOS_MemFree(WUEPS_PID_AT, pData);
        CmdErrProc(ucClientId, ulRst, 0, NULL);
        return AT_ERROR;
    }
    gstAtSendData.usBufLen = (VOS_UINT16)At_sprintf( AT_CMD_MAX_LEN,
                                            (VOS_CHAR *)(pgucAtSndCodeAddr),
                                            (VOS_CHAR*)(pgucAtSndCodeAddr + gstAtSendData.usBufLen),
                                            "\rswver:%s\r\n",
                                            pData
                                          );
    /*后台版本号字符串 */
    MSP_MEMSET(pData,0, UPGRADE_STR_BUF_SIZE);
    ulRst = BSP_DLOAD_GetISOVer((BSP_CHAR *)pData,UPGRADE_STR_BUF_SIZE);
    if(ulRst != ERR_MSP_SUCCESS)
    {
        VOS_MemFree(WUEPS_PID_AT, pData);
        CmdErrProc(ucClientId, ulRst, 0, NULL);
        return AT_ERROR;
    }

    gstAtSendData.usBufLen += (VOS_UINT16)At_sprintf( AT_CMD_MAX_LEN,
                                            (VOS_CHAR *)(pgucAtSndCodeAddr),
                                            (VOS_CHAR*)(pgucAtSndCodeAddr+ gstAtSendData.usBufLen),
                                            "\r\nisover:%s\r\n",
                                            pData
                                          );
    /*产品名称字符串*/
    MSP_MEMSET(pData,0, UPGRADE_STR_BUF_SIZE);
    ulRst = BSP_GetProductName((char *)pData,UPGRADE_STR_BUF_SIZE);
    if(ulRst != ERR_MSP_SUCCESS)
    {
        VOS_MemFree(WUEPS_PID_AT, pData);
        CmdErrProc(ucClientId, ulRst, 0, NULL);
        return AT_ERROR;
    }
    gstAtSendData.usBufLen += (VOS_UINT16)At_sprintf( AT_CMD_MAX_LEN,
                                            (VOS_CHAR *)(pgucAtSndCodeAddr),
                                            (VOS_CHAR*)(pgucAtSndCodeAddr+ gstAtSendData.usBufLen),
                                            "\r\nproduct name:%s\r\n",
                                            pData
                                          );
    /*获取下载类型*/
    MSP_MEMSET(pData,0, UPGRADE_STR_BUF_SIZE);
    ulRst = BSP_DLOAD_GetDloadType();
    if((ulRst != 0)&&(ulRst != 1))
    {
        VOS_MemFree(WUEPS_PID_AT, pData);
        CmdErrProc(ucClientId, ulRst, 0, NULL);
        return AT_ERROR;
    }
    *pData = ulRst + '0';
    gstAtSendData.usBufLen += (VOS_UINT16)At_sprintf( AT_CMD_MAX_LEN,
                                            (VOS_CHAR *)(pgucAtSndCodeAddr),
                                            (VOS_CHAR*)(pgucAtSndCodeAddr+ gstAtSendData.usBufLen),
                                            "\r\ndload type:%s\r",
                                            pData
                                          );

    VOS_MemFree(WUEPS_PID_AT, pData);

    return AT_OK;
}
VOS_UINT32 AT_GetLteFeatureInfo(AT_FEATURE_SUPPORT_ST*pstFeATure)
{

    /*AT_FEATURE_SUPPORT_ST *pstFeATure = NULL;
 */
    /*RRC_NV_SUPPORT_BAND_ID_LIST_STRU stSupportBandID = {0};
 */
    VOS_UINT32 ulRst  = 0;

    VOS_UINT8 ucBandStr[64] = {0};
    VOS_UINT8 ucBandNv = 0;
    VOS_UINT8 ucBandFlag = 0;

    VOS_UINT32 ulStrlen1=0;
    VOS_UINT32 i =0;

    VOS_UINT8  ucBandNum[65]={0};
    LRRC_NV_UE_EUTRA_CAP_STRU *pstEutraCap = NULL;

    pstEutraCap = VOS_MemAlloc(WUEPS_PID_AT, (DYNAMIC_MEM_PT), sizeof(LRRC_NV_UE_EUTRA_CAP_STRU));

    if( pstEutraCap == NULL)
    {
        return ERR_MSP_MALLOC_FAILUE;
    }

    MSP_MEMSET(pstEutraCap, 0, sizeof(LRRC_NV_UE_EUTRA_CAP_STRU ));

    ulRst = NVM_Read(EN_NV_ID_UE_CAPABILITY,pstEutraCap,sizeof(LRRC_NV_UE_EUTRA_CAP_STRU));
    if( ulRst != ERR_MSP_SUCCESS )
    {
        VOS_MemFree(WUEPS_PID_AT, pstEutraCap);
        return ERR_MSP_FAILURE;
    }

	/*RRC_MAX_NUM_OF_BANDS
 */

    for( i = 0; i < pstEutraCap->stRfPara.usCnt; i++ )
    {
        if( pstEutraCap->stRfPara.astSuppEutraBandList[i].ucEutraBand > 0 )
        {
            ucBandNv=pstEutraCap->stRfPara.astSuppEutraBandList[i].ucEutraBand;
            if( ucBandNv < (RRC_MAX_NUM_OF_BANDS+1) )
            {
                ucBandNum[ucBandNv]=1;
                ucBandFlag++;
            }
        }
    }

    /*解析获取LTE band信息
 */
    if( ucBandFlag > 0 )
    {
        pstFeATure[AT_FEATURE_LTE].ucFeatureFlag = AT_FEATURE_EXIST;
        /*ulStrlen1 += At_sprintf(64,ucBandStr,ucBandStr+ulStrlen1,"%s","LTE,");
 */
    }
    else
    {
        VOS_MemFree(WUEPS_PID_AT, pstEutraCap);
        return ERR_MSP_FAILURE;
    }

    for( i = 1 ; i < 65; i++ )
    {
        if( ucBandNum[i] == 1 )
        {
            ulStrlen1 +=(VOS_UINT32) At_sprintf(64,(VOS_CHAR* )ucBandStr,(VOS_CHAR* )(ucBandStr+ulStrlen1),"B%d,",i);
            /*ucBandNum[i]=2;
 */
        }
    }

    for( i = 0 ; i < ulStrlen1-1; i++ )
    {
        pstFeATure[AT_FEATURE_LTE].aucContent[i] = ucBandStr[i];
    }

    for( i = 0 ; i < ulStrlen1; i++ )/* [false alarm]:fortify */
    {
        ucBandStr[i] = 0;/* [false alarm]:fortify */
    }/* [false alarm]:fortify */

    ulStrlen1 = 0;/* [false alarm]:fortify*/

    VOS_MemFree(WUEPS_PID_AT, pstEutraCap);/* [false alarm]:fortify */
    return ERR_MSP_SUCCESS;/* [false alarm]:fortify */

}
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;
}
VOS_UINT32 SystemDataInit(VOS_UINT32 bandType, VOS_UINT32 dataType)
{
    VOS_UINT32  v_frcId = ERR_MSP_SUCCESS;

    if(NULL == gst_systemSetting)
    {
        gst_systemSetting = (FTM_SCALIB_SYSTEM_SETTING_STRU *)VOS_MemAlloc(MSP_SYS_FTM_PID, (DYNAMIC_MEM_PT), sizeof(FTM_SCALIB_SYSTEM_SETTING_STRU));
        if(NULL == gst_systemSetting)
        {
            return ERR_MSP_NO_MORE_MEMORY;
        }

        MSP_MEMSET(gst_systemSetting, 0x00, sizeof(FTM_SCALIB_SYSTEM_SETTING_STRU));
        v_frcId = SystemDataTdRead(gst_systemSetting);
        if(ERR_MSP_SUCCESS != v_frcId)
        {
            return v_frcId;
        }
    }

    if(NULL == g_pstApcoffsetFlag)
    {
        g_pstApcoffsetFlag = (FTM_SCALIB_APCOFFSET_SETTING_STRU *)VOS_MemAlloc(MSP_SYS_FTM_PID, (DYNAMIC_MEM_PT),sizeof(FTM_SCALIB_APCOFFSET_SETTING_STRU));
        if(NULL == g_pstApcoffsetFlag)
        {
            return ERR_MSP_NO_MORE_MEMORY;
        }

        MSP_MEMSET(g_pstApcoffsetFlag, 0x00, sizeof(FTM_SCALIB_APCOFFSET_SETTING_STRU));
    }

    if(dataType != AT_CALIB_DATA_TYPE_BUTT)
    {
        switch(dataType)
        {
            case AT_CALIB_DATA_TYPE_APCOFFSETFLAG:

                MSP_MEMSET(g_pstApcoffsetFlag, 0x00, sizeof(VOS_UINT16)*2);

                /* set rf tab flag when AFC,AGC,APC */
                gst_systemSetting->tdRfTabFlag1    = 0x5555;
                gst_systemSetting->tdRfTabFlag2    = 0xAAAA;
                gst_systemSetting->tdApcOffsetFlag = 0xDCBA;

                break;

            case AT_CALIB_DATA_TYPE_APCOFFSET:

                if(AT_CALIB_BAND_TYPE_A == bandType)
                {
                    MSP_MEMSET(gst_systemSetting->tdsTxPaPowerBand_A, 0x00, AT_CALIB_PARAM_APCOFF);
                }
                else if(AT_CALIB_BAND_TYPE_E == bandType)
                {
                    MSP_MEMSET(gst_systemSetting->tdsTxPaPowerBand_E, 0x00, AT_CALIB_PARAM_APCOFF);
                }
                else if(AT_CALIB_BAND_TYPE_F == bandType)
                {
                    MSP_MEMSET(gst_systemSetting->tdsTxPaPowerBand_F, 0x00, AT_CALIB_PARAM_APCOFF);
                }
                else
                {
                    MSP_MEMSET(gst_systemSetting->tdsTxPaPowerBand_A, 0x00, AT_CALIB_PARAM_APCOFF);
                    MSP_MEMSET(gst_systemSetting->tdsTxPaPowerBand_E, 0x00, AT_CALIB_PARAM_APCOFF);
                    MSP_MEMSET(gst_systemSetting->tdsTxPaPowerBand_F, 0x00, AT_CALIB_PARAM_APCOFF);
                }

                gst_systemSetting->tdApcOffsetFlag = 0xDCBA;


                break;

            case AT_CALIB_DATA_TYPE_APC:

                if(AT_CALIB_BAND_TYPE_A == bandType)
                {
                    MSP_MEMSET(gst_systemSetting->tdsTxApcCompBand_A, 0x00, AT_CALIB_PARAM_APC);
                }
                else if(AT_CALIB_BAND_TYPE_E == bandType)
                {
                    MSP_MEMSET(gst_systemSetting->tdsTxApcCompBand_E, 0x00, AT_CALIB_PARAM_APC);
                }
                else if(AT_CALIB_BAND_TYPE_F == bandType)
                {
                    MSP_MEMSET(gst_systemSetting->tdsTxApcCompBand_F, 0x00, AT_CALIB_PARAM_APC);
                }
                else
                {
                    MSP_MEMSET(gst_systemSetting->tdsTxApcCompBand_A, 0x00, AT_CALIB_PARAM_APC);
                    MSP_MEMSET(gst_systemSetting->tdsTxApcCompBand_E, 0x00, AT_CALIB_PARAM_APC);
                    MSP_MEMSET(gst_systemSetting->tdsTxApcCompBand_F, 0x00, AT_CALIB_PARAM_APC);
                }

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

                break;

             case AT_CALIB_DATA_TYPE_APCFREQ:

                if(AT_CALIB_BAND_TYPE_A == bandType)
                {
                    MSP_MEMSET(gst_systemSetting->tdsTxApcFreqCompBand_A, 0x00, AT_CALIB_PARAM_APCFREQ);
                }
                else if(AT_CALIB_BAND_TYPE_E == bandType)
                {
                    MSP_MEMSET(gst_systemSetting->tdsTxApcFreqCompBand_E, 0x00, AT_CALIB_PARAM_APCFREQ);
                }
                else if(AT_CALIB_BAND_TYPE_F == bandType)
                {
                    MSP_MEMSET(gst_systemSetting->tdsTxApcFreqCompBand_F, 0x00, AT_CALIB_PARAM_APCFREQ);
                }
                else
                {
                    MSP_MEMSET(gst_systemSetting->tdsTxApcFreqCompBand_A, 0x00, AT_CALIB_PARAM_APCFREQ);
                    MSP_MEMSET(gst_systemSetting->tdsTxApcFreqCompBand_E, 0x00, AT_CALIB_PARAM_APCFREQ);
                    MSP_MEMSET(gst_systemSetting->tdsTxApcFreqCompBand_F, 0x00, AT_CALIB_PARAM_APCFREQ);
                }

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

                break;

            case AT_CALIB_DATA_TYPE_AGC:

                if(AT_CALIB_BAND_TYPE_A == bandType)
                {
                    MSP_MEMSET(gst_systemSetting->tdsRxAgcCompBand_A, 0x00, AT_CALIB_PARAM_AGC);
                }
                else if(AT_CALIB_BAND_TYPE_E == bandType)
                {
                    MSP_MEMSET(gst_systemSetting->tdsRxAgcCompBand_E, 0x00, AT_CALIB_PARAM_AGC);
                }
                else if(AT_CALIB_BAND_TYPE_F == bandType)
                {
                    MSP_MEMSET(gst_systemSetting->tdsRxAgcCompBand_F, 0x00, AT_CALIB_PARAM_AGC);
                }
                else
                {
                    MSP_MEMSET(gst_systemSetting->tdsRxAgcCompBand_A, 0x00, AT_CALIB_PARAM_AGC);
                    MSP_MEMSET(gst_systemSetting->tdsRxAgcCompBand_E, 0x00, AT_CALIB_PARAM_AGC);
                    MSP_MEMSET(gst_systemSetting->tdsRxAgcCompBand_F, 0x00, AT_CALIB_PARAM_AGC);
                }

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

                break;

            case AT_CALIB_DATA_TYPE_AGCFREQ:

                if(AT_CALIB_BAND_TYPE_A == bandType)
                {
                    MSP_MEMSET(gst_systemSetting->tdsRxAgcFreqCompBand_A, 0x00, AT_CALIB_PARAM_AGCFREQ);
                }
                else if(AT_CALIB_BAND_TYPE_E == bandType)
                {
                    MSP_MEMSET(gst_systemSetting->tdsRxAgcFreqCompBand_E, 0x00, AT_CALIB_PARAM_AGCFREQ);
                }
                else if(AT_CALIB_BAND_TYPE_F == bandType)
                {
                    MSP_MEMSET(gst_systemSetting->tdsRxAgcFreqCompBand_F, 0x00, AT_CALIB_PARAM_AGCFREQ);
                }
                else
                {
                    MSP_MEMSET(gst_systemSetting->tdsRxAgcFreqCompBand_A, 0x00, AT_CALIB_PARAM_AGCFREQ);
                    MSP_MEMSET(gst_systemSetting->tdsRxAgcFreqCompBand_E, 0x00, AT_CALIB_PARAM_AGCFREQ);
                    MSP_MEMSET(gst_systemSetting->tdsRxAgcFreqCompBand_F, 0x00, AT_CALIB_PARAM_AGCFREQ);
                }

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

                break;

            default:

                v_frcId = ERR_MSP_FAILURE;

                break;
        }
    }
    else
    {
        MSP_MEMSET(g_pstApcoffsetFlag,  0x00, sizeof(VOS_UINT16)*2);
        MSP_MEMSET(gst_systemSetting->tdsTxPaPowerBand_A, 0x00, AT_CALIB_PARAM_APCOFF);
        MSP_MEMSET(gst_systemSetting->tdsTxPaPowerBand_E, 0x00, AT_CALIB_PARAM_APCOFF);
        MSP_MEMSET(gst_systemSetting->tdsTxPaPowerBand_F, 0x00, AT_CALIB_PARAM_APCOFF);
        MSP_MEMSET(gst_systemSetting->tdsTxApcCompBand_A, 0x00, AT_CALIB_PARAM_APC);
        MSP_MEMSET(gst_systemSetting->tdsTxApcCompBand_E, 0x00, AT_CALIB_PARAM_APC);
        MSP_MEMSET(gst_systemSetting->tdsTxApcCompBand_F, 0x00, AT_CALIB_PARAM_APC);
        MSP_MEMSET(gst_systemSetting->tdsTxApcFreqCompBand_A, 0x00, AT_CALIB_PARAM_APCFREQ);
        MSP_MEMSET(gst_systemSetting->tdsTxApcFreqCompBand_E, 0x00, AT_CALIB_PARAM_APCFREQ);
        MSP_MEMSET(gst_systemSetting->tdsTxApcFreqCompBand_F, 0x00, AT_CALIB_PARAM_APCFREQ);
        MSP_MEMSET(gst_systemSetting->tdsRxAgcCompBand_A, 0x00, AT_CALIB_PARAM_AGC);
        MSP_MEMSET(gst_systemSetting->tdsRxAgcCompBand_E, 0x00, AT_CALIB_PARAM_AGC);
        MSP_MEMSET(gst_systemSetting->tdsRxAgcCompBand_F, 0x00, AT_CALIB_PARAM_AGC);
        MSP_MEMSET(gst_systemSetting->tdsRxAgcFreqCompBand_A, 0x00, AT_CALIB_PARAM_AGCFREQ);
        MSP_MEMSET(gst_systemSetting->tdsRxAgcFreqCompBand_E, 0x00, AT_CALIB_PARAM_AGCFREQ);
        MSP_MEMSET(gst_systemSetting->tdsRxAgcFreqCompBand_F, 0x00, AT_CALIB_PARAM_AGCFREQ);
        gst_systemSetting->afcAgcDcFlag     = 0xABCD;
        gst_systemSetting->tdApcOffsetFlag  = 0xDCBA;
        gst_systemSetting->tdRfTabFlag1     = 0x5555;
        gst_systemSetting->tdRfTabFlag2     = 0xAAAA;
    }

    return v_frcId;
}
Ejemplo n.º 10
0
/*****************************************************************************
 函 数 名  : 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;
}