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; }
/***************************************************************************** 函 数 名 : 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; }