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; }