VOS_VOID TAF_MMA_ReadSystemAppCofigNvim(VOS_VOID) { VOS_UINT32 ulLength; NAS_NVIM_SYSTEM_APP_CONFIG_STRU stSysAppConfig; PS_MEM_SET(&stSysAppConfig, 0x00, sizeof(NAS_NVIM_SYSTEM_APP_CONFIG_STRU)); /* 读取en_NV_Item_System_APP_Config,获取对接的上层应用 */ NV_GetLength(en_NV_Item_System_APP_Config, &ulLength); if (NV_OK != NV_Read(en_NV_Item_System_APP_Config, &stSysAppConfig, ulLength)) { stSysAppConfig.usSysAppConfigType = SYSTEM_APP_MP; MMA_WARNINGLOG("TAF_MMA_ReadSystemAppCofigNvim():Read en_NV_Item_System_APP_Config Failed!"); } if ( SYSTEM_APP_ANDROID < stSysAppConfig.usSysAppConfigType) { g_usMmaAppConfigSupportType = SYSTEM_APP_MP; MMA_WARNINGLOG("TAF_MMA_ReadSystemAppCofigNvim():en_NV_Item_System_APP_Config error!"); } else { g_usMmaAppConfigSupportType = stSysAppConfig.usSysAppConfigType; } return; }
/***************************************************************************** 函 数 名 : MMA_UpdateForbBandStatusToNV 功能描述 : 将ForbBand的NV的状态更新为VOS_TRUE 输入参数 : VOS_VOID 输出参数 : 无 返 回 值 : VOS_VOID 调用函数 : 被调函数 : 修改历史 : 1.日 期 : 2010年4月23日 作 者 : likelai 修改内容 : 新生成函数 *****************************************************************************/ VOS_VOID MMA_UpdateForbBandStatusToNV(VOS_VOID) { VOS_UINT32 ulRslt; gstMmaForbBand.ucForbStatus = VOS_TRUE; ulRslt = MMA_WriteValue2Nvim(en_NV_Item_Forbidden_Band, &gstMmaForbBand, sizeof(gstMmaForbBand.ucActiveFlag)+sizeof(gstMmaForbBand.ucForbStatus)); if (MMA_SUCCESS != ulRslt) { MMA_WARNINGLOG("MMA_UpdateForbBandStatusToNV():WARNING:NVIM_Write en_NV_Item_Forbbiden_Band failed"); } return; }
VOS_VOID TAF_MMA_ReadUeSupporttedGuBandNvim(VOS_VOID) { /* 修改硬件频段的读取为32位格式 */ VOS_UINT32 aulSptBand[3]; MMA_UE_SUPPORT_FREQ_BAND_STRU stUeBand; MMA_USER_BAND_SET_UN uUserSetBand; VOS_UINT32 ulDataLen; ulDataLen = 0; /*获取 UE支持的 Band */ PS_MEM_SET(&stUeBand,0x00,sizeof(stUeBand)); PS_MEM_SET(&uUserSetBand,0x00,sizeof(uUserSetBand)); PS_MEM_SET(aulSptBand, 0x00, sizeof(aulSptBand)); NV_GetLength(en_NV_Item_WG_RF_MAIN_BAND, &ulDataLen); if (NV_OK != NV_Read(en_NV_Item_WG_RF_MAIN_BAND,aulSptBand,ulDataLen)) { /*打印未成功初始化值,原值保留*/ MMA_WARNINGLOG("MMA_InitMeInfo():Read en_NV_Item_WG_RF_MAIN_BAND Failed!"); } else { stUeBand.unWcdmaBand.ulBand = aulSptBand[0]; gstMmaBandCapa.unWRFSptBand.ulBand = aulSptBand[0]; MMA_SwitchUESupportBand2UserSetBand(stUeBand,&uUserSetBand); gstMmaBandCapa.ulUeWSptBand = uUserSetBand.ulPrefBand; PS_MEM_SET(&stUeBand,0x00,sizeof(stUeBand)); PS_MEM_SET(&uUserSetBand,0x00,sizeof(uUserSetBand)); /*V9R1 NV数据结构扩展为32位 */ stUeBand.unGsmBand.ulBand = aulSptBand[2]; gstMmaBandCapa.unGRFSptBand.ulBand = aulSptBand[2]; /*V9R1 NV数据结构扩展为32位 */ MMA_SwitchUESupportBand2UserSetBand(stUeBand,&uUserSetBand); gstMmaBandCapa.ulUeGSptBand = uUserSetBand.ulPrefBand; gstMmaBandCapa.ulAllUeBand = (gstMmaBandCapa.ulUeGSptBand | gstMmaBandCapa.ulUeWSptBand); } return; }
VOS_VOID TAF_MMA_ReadProductNameNvim(VOS_VOID) { VOS_UINT32 ulDataLen; TAF_PH_MEINFO_STRU *pstMeInfo = VOS_NULL_PTR; pstMeInfo = &(gstMmaValue.stMeInfo); ulDataLen = TAF_PH_PRODUCT_NAME_LEN + 1; /*获取产品名字*/ if (NV_OK != NV_Read(en_NV_Item_ProductName, pstMeInfo->ProductName.aucProductName, ulDataLen)) { /*打印未成功初始化值,原值保留*/ MMA_WARNINGLOG("TAF_MMA_ReadProductNameNvim():Read ProductName Failed!"); } return; }
VOS_VOID TAF_MMA_ReadFmridNvim(VOS_VOID) { VOS_UINT32 ulDataLen; TAF_PH_MEINFO_STRU *pstMeInfo = VOS_NULL_PTR; pstMeInfo = &(gstMmaValue.stMeInfo); ulDataLen = TAF_MAX_MFR_ID_LEN + 1; /*获取厂商名字*/ if (NV_OK != NV_Read(en_NV_Item_FMRID, pstMeInfo->FmrId.aucMfrId, ulDataLen)) { /*打印未成功初始化值,原值保留*/ MMA_WARNINGLOG("TAF_MMA_ReadFmridNvim():Read FMRID Failed!"); } return; }
VOS_VOID TAF_MMA_UpdateSupportFreqBand( MMA_UE_SUPPORT_FREQ_BAND_STRU *pstOrigFreqBand ) { MN_MMA_SYSCFG_USER_SET_BAND_STRU *pstUserSetBand = VOS_NULL_PTR; pstUserSetBand = MN_MMA_GetSyscfgUserSetBandAddr(); /* 更新频段NV */ if (MMA_SUCCESS != MMA_WriteValue2Nvim(en_NV_Item_Support_Freqbands, pstOrigFreqBand, sizeof(pstOrigFreqBand->unWcdmaBand)+sizeof(pstOrigFreqBand->unGsmBand))) { MMA_WARNINGLOG("MMA_UpdateBandNvRefForbBand():WARNING:NVIM_Write en_NV_Item_Support_Freqbands failed"); } /* 写完en_NV_Item_Support_Freqbands之后,直接更新全局变量,后续不用再重新读该NV */ PS_MEM_CPY(&(pstUserSetBand->uUserSetUeFormatGuBand), pstOrigFreqBand, sizeof(MMA_UE_SUPPORT_FREQ_BAND_STRU)); return; }
VOS_VOID TAF_MMA_ReadUserSettedBandNvim(VOS_VOID) { MN_MMA_SYSCFG_USER_SET_BAND_STRU *pstUserSetBand = VOS_NULL_PTR; pstUserSetBand = MN_MMA_GetSyscfgUserSetBandAddr(); /* 获取用户设置的GU频段 */ if (NV_OK != NV_Read(en_NV_Item_User_Set_Freqbands, &(pstUserSetBand->stOrigUserSetGuBand), sizeof(TAF_USER_SET_PREF_BAND64))) { /*打印未成功初始化值,原值保留*/ pstUserSetBand->uUserSetGuBand.ulPrefBand = TAF_PH_BAND_ANY; pstUserSetBand->stOrigUserSetGuBand.ulBandHigh = 0; pstUserSetBand->stOrigUserSetGuBand.ulBandLow = TAF_PH_BAND_ANY; MMA_WARNINGLOG("TAF_MMA_ReadUserSettedBandNvim():Read UserSet_Freqbands Failed!"); } else { if ( (0 != pstUserSetBand->stOrigUserSetGuBand.ulBandHigh ) || ( TAF_PH_BAND_ANY != pstUserSetBand->stOrigUserSetGuBand.ulBandLow) ) { pstUserSetBand->uUserSetGuBand.ulPrefBand = pstUserSetBand->stOrigUserSetGuBand.ulBandHigh | (pstUserSetBand->stOrigUserSetGuBand.ulBandLow & ~TAF_PH_BAND_NEED_CHANGE_TO_64BIT); /* 过滤无效频段 */ pstUserSetBand->uUserSetGuBand.ulPrefBand &= (gstMmaBandCapa.ulAllUeBand); } else { /* 当前频段为TAF_PH_BAND_ANY时,赋值为单板支持的所有频段 */ pstUserSetBand->uUserSetGuBand.ulPrefBand = gstMmaBandCapa.ulAllUeBand; } } MN_INFO_LOG1("TAF_MMA_ReadUserSettedBandNvim():Support_Freqbands:",(VOS_INT32)pstUserSetBand->uUserSetGuBand.ulPrefBand); return; }
VOS_VOID TAF_MMA_ReadEFustServiceCfgNvim(VOS_VOID) { VOS_UINT32 ulDataLen; ulDataLen = sizeof(MMA_EFUST_SERVICE_CFG_STRU); if (NV_OK != NV_Read(en_NV_Item_EFust_Service_Cfg, (VOS_VOID*)(&(gstMmaValue.stEfustServiceCfg)), ulDataLen)) { /*打印未成功初始化值,原值保留*/ MMA_WARNINGLOG("TAF_MMA_ReadEFustServiceCfgNvim():Read EFust_Service_Cfg Failed!"); } if (NV_ITEM_DEACTIVE == gstMmaValue.stEfustServiceCfg.ucEnableFlag) { gstMmaValue.stEfustServiceCfg.ucForbidSndMsg = 0; gstMmaValue.stEfustServiceCfg.ucForbidReg2GNetWork = 0; } return; }
VOS_VOID TAF_MMA_ReadRoamCapaNvim(VOS_VOID) { VOS_UINT32 ulLength; NAS_NVIM_ROAM_CFG_INFO_STRU stRoamFeature; MN_MMA_LAST_SETTED_SYSCFG_SET_STRU *pstLastSyscfgSet = VOS_NULL_PTR; PS_MEM_SET(&stRoamFeature, 0x00, sizeof(stRoamFeature)); pstLastSyscfgSet = MN_MMA_GetLastSyscfgSetAddr(); ulLength = 0; NV_GetLength(en_NV_Item_Roam_Capa, &ulLength); if ( NV_OK != NV_Read(en_NV_Item_Roam_Capa, &stRoamFeature, ulLength)) { MMA_WARNINGLOG("TAF_MMA_ReadRoamCapaNvim():Read en_NV_Item_Roam_Capa Failed!"); stRoamFeature.ucRoamFeatureFlg = MMA_MMC_ROAM_FEATURE_OFF; stRoamFeature.ucRoamCapability = MMA_MMC_ROAM_NATION_OFF_INTERNATION_OFF; } else { if (stRoamFeature.ucRoamFeatureFlg >= MMA_MMC_ROAM_FEATURE_BUTT) { stRoamFeature.ucRoamFeatureFlg = MMA_MMC_ROAM_FEATURE_OFF; } if (stRoamFeature.ucRoamCapability >= MMA_MMC_ROAM_BUTT) { stRoamFeature.ucRoamCapability = MMA_MMC_ROAM_NATION_OFF_INTERNATION_OFF; } } gstMmaValue.ucRoamFeatureStatus = stRoamFeature.ucRoamFeatureFlg; pstLastSyscfgSet->ucRoam = stRoamFeature.ucRoamCapability; return; }
VOS_VOID TAF_MMA_UpdateUserSetFreqBand(VOS_VOID) { TAF_USER_SET_PREF_BAND64 stUserSetBandAny; /*64位原始频带*/ MN_MMA_SYSCFG_USER_SET_BAND_STRU *pstUserSetBand = VOS_NULL_PTR; pstUserSetBand = MN_MMA_GetSyscfgUserSetBandAddr(); stUserSetBandAny.ulBandHigh = 0; stUserSetBandAny.ulBandLow = TAF_PH_BAND_ANY; /* 更新用户设置频段的NV为3fffffff */ if (MMA_SUCCESS != MMA_WriteValue2Nvim(en_NV_Item_User_Set_Freqbands, &stUserSetBandAny, sizeof(stUserSetBandAny))) { MMA_WARNINGLOG("MMA_UpdateBandNvRefForbBand():WARNING:NVIM_Write en_NV_Item_User_Set_Freqbands failed"); } /* 当前频段为TAF_PH_BAND_ANY时,赋值为单板支持的所有频段 */ /* 写完en_NV_Item_User_Set_Freqbands之后,直接更新全局变量,后续不用再重新读该NV */ pstUserSetBand->uUserSetGuBand.ulPrefBand = gstMmaBandCapa.ulAllUeBand; return; }
VOS_VOID TAF_MMA_USIMRefreshFileProc( VOS_UINT16 usEfId, VOS_UINT16 usEfLen, VOS_UINT8 *pucEf ) { USIMM_READFILE_CNF_STRU *pUsimTafMsg; VOS_UINT8 *pucImsi = VOS_NULL_PTR; MMA_GET_ICC_ID_ST *pstIccId = VOS_NULL_PTR; pucImsi = TAF_SDC_GetSimImsi(); pstIccId = TAF_MMA_GetIccIdInfo(); switch (usEfId) { case USIMM_GSM_EFONS_ID: /*lint -e961*/ pUsimTafMsg = (USIMM_READFILE_CNF_STRU *)PS_MEM_ALLOC(WUEPS_PID_MMA, (VOS_UINT32)(sizeof(USIMM_READFILE_CNF_STRU) - 4 + usEfLen)); /*lint +e961*/ if (VOS_NULL_PTR == pUsimTafMsg) { MMA_ERRORLOG("MMA_USIMReadRefreshFileProc():ERROR:MALLOC FAIL"); return; } /*lint -e961*/ PS_MEM_SET(pUsimTafMsg, 0, (VOS_UINT32)(sizeof(USIMM_READFILE_CNF_STRU) - 4 + usEfLen)); /*lint +e961*/ pUsimTafMsg->stCmdResult.ulResult = MMA_SUCCESS; pUsimTafMsg->usEfLen = usEfLen; PS_MEM_CPY(pUsimTafMsg->aucEf, pucEf, usEfLen); TAF_MMA_ReadCphsFileCnf(pUsimTafMsg); PS_MEM_FREE(WUEPS_PID_MMA, pUsimTafMsg); break; case USIMM_ICCID_ID: MMA_MEM_SET(&(pstIccId->stIccId), 0, sizeof(TAF_PH_ICC_ID_STRU)); MMA_MEM_CPY(pstIccId->stIccId.aucIccId, pucEf, usEfLen); pstIccId->stIccId.ucLen = (VOS_UINT8)usEfLen; TAF_MMA_ReadIccIdFileCnf(); break; case USIMM_USIM_EFIMSI_ID: case USIMM_GSM_EFIMSI_ID: /* 判断IMSI是否改变 */ if (0 != VOS_MemCmp(pucImsi, pucEf, NAS_MAX_IMSI_LENGTH)) { if (TAF_MMA_FSM_MAIN != TAF_MMA_GetCurrFsmId()) { TAF_MMA_SndInterUsimChangeInd(); break; } if (STA_FSM_NULL == g_StatusContext.ulFsmState) { break; } TAF_MMA_SndInterUsimChangeInd(); } MMA_WARNINGLOG("MMA_USIMReadRefreshFileProc():WARNING:Refresh File Id IMSI"); break; case USIMM_USIM_EFPNN_ID: case USIMM_USIM_EFPNNI_ID: MMA_INFOLOG("MMA_USIMReadRefreshFileProc():INFO:Refresh File PNN"); break; case USIMM_USIM_EFOPL_ID: case USIMM_GSM_EFOPL_ID: MMA_INFOLOG("MMA_USIMReadRefreshFileProc():INFO:Refresh File OPL"); break; case USIMM_GSM_EFCSP_ID: TAF_MMA_RcvCustomerServiceProfileFile(VOS_OK, usEfLen, pucEf); break; case USIMM_ATTUSIM_EFRATMODE_ID: TAF_MMA_RcvRatModeFileRefresh(usEfLen, pucEf); break; default: MMA_WARNINGLOG("MMA_USIMReadRefreshFileProc():WARNING:UNKNOW EFID RECEIVE!"); break; } }
VOS_UINT32 TAF_MMA_UsimGetFileRspPreProc( VOS_UINT32 ulEventType, struct MsgCB *pstMsg ) { VOS_UINT32 ulRet; TAF_PH_USIM_SPN_CNF_STRU stSpnTmp; MMA_GET_ICC_ID_ST *pstIccId = VOS_NULL_PTR; USIMM_READFILE_CNF_STRU *pUsimTafMsg = VOS_NULL_PTR; USIMM_DEF_FILEID_ENUM_UINT32 enFileID; PS_MEM_SET(&stSpnTmp, 0xFF, sizeof(TAF_PH_USIM_SPN_CNF_STRU)); pUsimTafMsg = (USIMM_READFILE_CNF_STRU *)pstMsg; if (VOS_OK != USIMM_ChangePathToDefFileID(pUsimTafMsg->stCmdResult.enApptype, pUsimTafMsg->stFilePath.ulPathLen, pUsimTafMsg->stFilePath.acPath, &enFileID)) { return VOS_FALSE; } pstIccId = TAF_MMA_GetIccIdInfo(); pUsimTafMsg = (USIMM_READFILE_CNF_STRU*)pstMsg; TAF_MMA_ClearWaitSimFilesCnfFlg(enFileID); switch (enFileID) { case USIMM_USIM_EFSPN_ID: case USIMM_GSM_EFSPN_ID: if (MMA_SUCCESS == pUsimTafMsg->stCmdResult.ulResult) { if (pUsimTafMsg->usEfLen > sizeof(TAF_PH_USIM_SPN_CNF_STRU)) { MMA_MEM_CPY(&stSpnTmp, (VOS_UINT8*)(VOS_UINT32)(pUsimTafMsg->aucEf), sizeof(TAF_PH_USIM_SPN_CNF_STRU)); } else { MMA_MEM_CPY(&stSpnTmp, pUsimTafMsg->aucEf, pUsimTafMsg->usEfLen); } MMA_ReadSpnFileCnf((TAF_PH_USIM_SPN_CNF_STRU *)&stSpnTmp, enFileID); } break; case USIMM_GSM_EFONS_ID: TAF_MMA_ReadCphsFileCnf(pUsimTafMsg); break; case USIMM_ICCID_ID: MMA_MEM_SET(&(pstIccId->stIccId), 0, sizeof(TAF_PH_ICC_ID_STRU)); MMA_MEM_CPY(pstIccId->stIccId.aucIccId, pUsimTafMsg->aucEf, pUsimTafMsg->usEfLen); pstIccId->stIccId.ucLen = (VOS_UINT8)pUsimTafMsg->usEfLen; TAF_MMA_ReadIccIdFileCnf(); break; case USIMM_USIM_EFIMSI_ID: case USIMM_GSM_EFIMSI_ID: ulRet = MMA_CheckPin1SatusSimple(); if ( MMA_NONEED_PIN1 == ulRet ) { if (pUsimTafMsg->usEfLen< 10 ) { MMA_MEM_CPY(TAF_SDC_GetSimImsi(), pUsimTafMsg->aucEf, pUsimTafMsg->usEfLen); /* 检查是否锁卡 */ (VOS_VOID)MMA_CheckMePersonalisationStatus(); } } break; case USIMM_USIM_EFPNN_ID: case USIMM_GSM_EFPNN_ID: TAF_MMA_ReadPnnFileCnf(pUsimTafMsg, enFileID); break; case USIMM_USIM_EFOPL_ID: case USIMM_GSM_EFOPL_ID: TAF_MMA_ReadOplFileCnf(pUsimTafMsg, enFileID); break; case USIMM_USIM_EFSPDI_ID: case USIMM_GSM_EFSPDI_ID: TAF_MMA_ReadSpdiFileCnf(pUsimTafMsg, enFileID); break; case USIMM_USIM_EFAD_ID: case USIMM_GSM_EFAD_ID: TAF_MMA_GetUsimHplmnMncLenFileInd(pUsimTafMsg); break; case USIMM_GSM_EFCSP_ID: TAF_MMA_RcvCustomerServiceProfileFile(pUsimTafMsg->stCmdResult.ulResult, pUsimTafMsg->usEfLen, pUsimTafMsg->aucEf); break; #if (FEATURE_ON == FEATURE_UE_MODE_CDMA) case USIMM_CSIM_EFRUIMID_ID: case USIMM_CDMA_EFRUIMID_ID: TAF_MMA_RcvUsimmReadRuimidFile(pUsimTafMsg); break; #endif case USIMM_USIM_EFEHPLMN_ID: TAF_MMA_GetUsimEHplmnFileInd(pUsimTafMsg); break; case USIMM_ATTGSM_EFACTINGHPLMN_ID: TAF_MMA_GetSimActingHplmnFileInd(pUsimTafMsg); break; default: MMA_WARNINGLOG("TAf_MMA_UsimGetFileRspMsgProc():WARNING:UNKNOW EFID RECEIVE!"); break; } if (TAF_MMA_READ_USIM_FILE_FLG_NULL == TAF_MMA_GetWaitSimFilesCnfFlg()) { TAF_MMA_StopTimer(TI_TAF_MMA_WAIT_READ_SIM_FILES); } return VOS_TRUE; }
VOS_VOID TAF_MMA_ReadForbBandNvim(VOS_VOID) { VOS_UINT32 ulLen; NAS_MMA_NVIM_FORBAND_STRU stForband; VOS_UINT8 ucOffSet; ulLen = 0; PS_MEM_SET(&stForband, 0x00, sizeof(stForband)); NV_GetLength(en_NV_Item_Forbidden_Band, &ulLen); if (ulLen > MMA_FORB_BAND_NV_MAX_SIZE) { return; } PS_MEM_SET(&stForband, 0, ulLen); if (NV_OK != NV_Read(en_NV_Item_Forbidden_Band,&stForband, ulLen)) { MMA_WARNINGLOG("MMA_GetForbBandFromNV():WARNING: en_NV_Item_Forbbiden_Band Error"); return; } /* gstMmaForbBand定义与NV中的值不一致,需要按下述字节进行转换 VOS_UINT8 ucActiveFlag - NV项第1个字节 VOS_UINT8 ucForbStatus - NV项第2个字节 TAF_UINT32 ulBandLow - NV项第3-6个字节 TAF_UINT32 ulBandHigh - NV项第7-10个字节 */ ucOffSet = 0; /*lint -e961*/ gstMmaForbBand.ucActiveFlag = stForband.aucForband[ucOffSet++]; /*lint +e961*/ if (NV_ITEM_DEACTIVE == gstMmaForbBand.ucActiveFlag) { return; } /*lint -e961*/ gstMmaForbBand.ucForbStatus = stForband.aucForband[ucOffSet++]; /*lint +e961*/ PS_MEM_CPY(&(gstMmaForbBand.stForbBand.ulBandLow),stForband.aucForband+ucOffSet, sizeof(gstMmaForbBand.stForbBand.ulBandLow)); ucOffSet += sizeof(gstMmaForbBand.stForbBand.ulBandLow); PS_MEM_CPY(&(gstMmaForbBand.stForbBand.ulBandHigh),stForband.aucForband+ucOffSet, sizeof(gstMmaForbBand.stForbBand.ulBandHigh)); if ( (0 != gstMmaForbBand.stForbBand.ulBandHigh) || (TAF_PH_BAND_ANY != gstMmaForbBand.stForbBand.ulBandLow)) { gstMmaForbBand.ulForbBand = gstMmaForbBand.stForbBand.ulBandHigh | (gstMmaForbBand.stForbBand.ulBandLow & ~TAF_PH_BAND_NEED_CHANGE_TO_64BIT); } else { gstMmaForbBand.ulForbBand = gstMmaForbBand.stForbBand.ulBandLow; } /* 容错处理 */ if (TAF_PH_BAND_ANY == gstMmaForbBand.ulForbBand) { gstMmaForbBand.ulForbBand = 0; } return; }
VOS_UINT32 TAF_MMA_ReadAlphanumericNameByPlmnIdNvim( TAF_PH_OPERATOR_NAME_STRU *pstOperName) { VOS_UINT16 usI; NAS_MMA_NVIM_OPERATOR_NAME_STRU stRcvData; TAF_PH_OPERATOR_NAME_STRU austOperName[TAF_PH_STORED_OPER_NAME_NUM_IN_NVIM]; VOS_UINT16 usDataLen; VOS_UINT32 ulNvLen; PS_MEM_SET(&stRcvData, 0x00, sizeof(stRcvData)); PS_MEM_SET(austOperName, 0x00, sizeof(austOperName)); usDataLen = (TAF_PH_STORED_OPER_NAME_NUM_IN_NVIM*sizeof( TAF_PH_OPERATOR_NAME_STRU )) + 4; NV_GetLength(en_NV_Item_HUAWEI_NW_OPL_NAME_CUSTOMIZED, &ulNvLen); if ( ulNvLen < usDataLen) { return MMA_FAILURE; } if (NV_OK != NV_Read(en_NV_Item_HUAWEI_NW_OPL_NAME_CUSTOMIZED,(VOS_VOID *)(&stRcvData), ulNvLen)) { pstOperName->aucOperatorNameLong[0] = '\0'; pstOperName->aucOperatorNameShort[0] = '\0'; MMA_WARNINGLOG("MMA_PhoneGetAlphanumericNameByPlmnIdFromNV():WARNING:Reading PLMN failed!"); return MMA_FAILURE; } if( NV_ITEM_DEACTIVE == stRcvData.aucRcvData[0]) { return MMA_FAILURE; } /*Compare the specified PLMN ID with that one in NVIM*/ for ( usI = 0; usI < TAF_PH_STORED_OPER_NAME_NUM_IN_NVIM; usI++ ) { MMA_MEM_CPY((VOS_VOID *)(&austOperName[usI]), (VOS_VOID *)(stRcvData.aucRcvData + 4 +(usI*NV_ITEM_MMA_OPERATORNAME_SIZE)), NV_ITEM_MMA_OPERATORNAME_SIZE); MMA_INFOLOG1("MMA_PhoneGetAlphanumericNameByPlmnId():austOperName[usI].Mcc =", (VOS_INT32)austOperName[usI].PlmnId.Mcc); MMA_INFOLOG1("MMA_PhoneGetAlphanumericNameByPlmnId():austOperName[usI].Mnc =", (VOS_INT32)austOperName[usI].PlmnId.Mnc); MMA_INFOLOG(austOperName[usI].aucOperatorNameLong); MMA_INFOLOG(austOperName[usI].aucOperatorNameShort); if( (austOperName[usI].PlmnId.Mcc == (pstOperName->PlmnId.Mcc & 0xfff)) &&(austOperName[usI].PlmnId.Mnc == (pstOperName->PlmnId.Mnc & 0xfff)) ) { MMA_MEM_CPY(pstOperName->aucOperatorNameLong, austOperName[usI].aucOperatorNameLong, (TAF_PH_OPER_NAME_LONG )); MMA_MEM_CPY(pstOperName->aucOperatorNameShort, austOperName[usI].aucOperatorNameShort, (TAF_PH_OPER_NAME_SHORT)); MMA_NORMAILLOG("MMA_PhoneGetAlphanumericNameByPlmnIdFromNV():the specified PLMN found in NVIM!"); return MMA_SUCCESS; } } MMA_NORMAILLOG("MMA_PhoneGetAlphanumericNameByPlmnIdFromNV():the specified PLMN not found in NVIM!"); pstOperName->aucOperatorNameLong[0] = '\0'; pstOperName->aucOperatorNameShort[0] = '\0'; return MMA_FAILURE; }
VOS_VOID TAF_MMA_UsimRefreshIndFileListChangedMsgProc(USIMM_STKREFRESH_IND_STRU *pUsimTafMsg) { VOS_UINT16 usEfId; VOS_UINT32 ulEfLen; VOS_UINT8 *pucEf; VOS_UINT32 ulResult; VOS_UINT16 i; NAS_USIMM_GETFILE_INFO_STRU stGetFileInfo; VOS_UINT8 *pucOldImsi; VOS_UINT8 aucNewImsi[TAF_SDC_MAX_IMSI_LEN]; #if (FEATURE_ON == FEATURE_UE_MODE_CDMA) VOS_UINT8 aucIMSIM[NAS_MAX_IMSIM_DATA_LEN]; PS_MEM_SET(aucIMSIM, 0x00, sizeof(aucIMSIM)); #endif PS_MEM_SET(&stGetFileInfo, 0x00, sizeof(stGetFileInfo)); pucEf = VOS_NULL_PTR; usEfId = USIMM_DEF_FILEID_BUTT; ulEfLen = 0; /*依次读取上报的refresh文件*/ for (i = 0; i < pUsimTafMsg->usEfNum; i++) { usEfId = pUsimTafMsg->astEfId[i].usFileId; switch (usEfId) { case USIMM_USIM_EFSPN_ID: case USIMM_GSM_EFSPN_ID: TAF_MMA_ReadSpnFile(); break; case USIMM_USIM_EFSPDI_ID: case USIMM_GSM_EFSPDI_ID: TAF_MMA_ReadSpdiFile(); break; case USIMM_USIM_EFPNN_ID: case USIMM_GSM_EFPNN_ID: TAF_MMA_ReadPnnFile(); break; case USIMM_USIM_EFOPL_ID: case USIMM_GSM_EFOPL_ID: TAF_MMA_ReadOplFile(); break; #if (FEATURE_ON == FEATURE_ECALL) case USIMM_USIM_EFUST_ID: case USIMM_GSM_EFSST_ID: case USIMM_USIM_EFEST_ID: (VOS_VOID)TAF_MMA_ProcPihUsimRefreshIndEfUstFileChanged_PreProc(); break; #endif /* 如果IMSI发生变更,发送卡状态发生变更,有业务启动定时器 */ case USIMM_USIM_EFIMSI_ID: case USIMM_GSM_EFIMSI_ID: pucOldImsi = TAF_SDC_GetLastSimImsi(); PS_MEM_SET(aucNewImsi, 0, sizeof(aucNewImsi)); if (USIMM_API_SUCCESS == USIMM_GetCardIMSI(aucNewImsi)) { if (0 != VOS_MemCmp(pucOldImsi, aucNewImsi, TAF_SDC_MAX_IMSI_LEN)) { if (VOS_TRUE == TAF_SDC_GetCsEccExistFlg()) { /* 存在CS业务,则启动定时器等待CS业务结束后关机 */ TAF_MMA_StartTimer(TI_TAF_MMA_WAIT_CS_SERVICE_DISCONN, TI_TAF_MMA_WAIT_CS_SERVICE_DISCONN_LEN); } else { TAF_MMA_SndInterUsimChangeInd(); } } } break; #if (FEATURE_ON == FEATURE_UE_MODE_CDMA) case USIMM_CSIM_EFEPRL_ID: case USIMM_CDMA_EFEPRL_ID: case USIMM_CDMA_EFPRL_ID: case USIMM_CSIM_EFPRL_ID: TAF_MMA_SndInterUsimChangeInd(); break; case USIMM_CDMA_EFIMSIM_ID: case USIMM_CSIM_EFIMSIM_ID: pucOldImsi = TAF_SDC_GetCsimImsi(); PS_MEM_SET(aucNewImsi, 0x00, sizeof(aucNewImsi)); if (USIMM_API_SUCCESS != USIMM_GetCdmaIMSIM(aucIMSIM)) { MMA_WARNINGLOG("USIMM_GetCdmaIMSIM:Get Imsim Failed"); break; } (VOS_VOID)TAF_SDC_ConvertCImsiBcdCode(aucIMSIM, aucNewImsi); if (0 != VOS_MemCmp(pucOldImsi, aucNewImsi, TAF_SDC_MAX_IMSI_LEN)) { PS_MEM_CPY(pucOldImsi, aucNewImsi, TAF_SDC_MAX_IMSI_LEN); if (VOS_TRUE == TAF_SDC_GetCsEccExistFlg()) { /* 存在CS业务,则启动定时器等待CS业务结束后关机 */ TAF_MMA_StartTimer(TI_TAF_MMA_WAIT_CS_SERVICE_DISCONN, TI_TAF_MMA_WAIT_CS_SERVICE_DISCONN_LEN); } else { TAF_MMA_SndInterUsimChangeInd(); } } break; #endif default: ulResult = NAS_USIMMAPI_GetCachedFile(usEfId, &ulEfLen, &pucEf, pUsimTafMsg->astEfId[i].enAppType); if (USIMM_API_SUCCESS != ulResult) { /*读当前文件失败,读取下一个文件*/ MMA_ERRORLOG("MMA_UsimRefreshFileIndMsgProc():ERROR:READ FILE FAIL!"); continue; } /* 增加可维可测 */ TAF_MMA_SndOmGetCacheFile(usEfId, ulEfLen, pucEf); /*读取文件成功后,MMA内部做相应处理*/ TAF_MMA_USIMRefreshFileProc(usEfId, (VOS_UINT16)ulEfLen, pucEf); break; } } return; }
VOS_VOID TAF_MMA_InitOrigMeInfo( VOS_VOID ) { VOS_UINT32 i; VOS_INT32 lRslt; VOS_UINT32 ulDataLen; VOS_CHAR *ucSoftDate = "2006/11/15"; VOS_CHAR *ucSoftTime = "00:00:00"; gstMmaValue.stMeInfo.ImeisV.ImeiMode = TAF_PH_IMEIV_Mode; for ( i = 0; i < TAF_PH_IMEI_LEN; i++ ) { gstMmaValue.stMeInfo.ImeisV.aucImei[i] = 0; } gstMmaValue.stMeInfo.ProductName.aucProductName[0] = '\0'; gstMmaValue.stMeInfo.ModelId.aucModelId[0] = '\0'; gstMmaValue.stMeInfo.ReleaseDate.aucReleaseDate[0] = '\0'; gstMmaValue.stMeInfo.ReleaseTime.aucReleaseTime[0] = '\0'; gstMmaValue.stMeInfo.CompleteCapitiyList.aucCompleteCapilityList[0][0] = '\0'; gstMmaValue.stMeInfo.CompleteCapitiyList.aucCompleteCapilityList[1][0] = '\0'; gstMmaValue.stMeInfo.CompleteCapitiyList.aucCompleteCapilityList[2][0] = '\0'; gstMmaValue.stMeInfo.GsmCompleteCapitiyList.aucCompleteCapilityList[0][0] = '\0'; gstMmaValue.stMeInfo.GsmCompleteCapitiyList.aucCompleteCapilityList[1][0] = '\0'; gstMmaValue.stMeInfo.GsmCompleteCapitiyList.aucCompleteCapilityList[2][0] = '\0'; VOS_StrNCpy((VOS_CHAR *)( gstMmaValue.stMeInfo.SoftVersion.aucRevisionId), 0x00, TAF_MAX_REVISION_ID_LEN+1); VOS_sprintf((VOS_CHAR *) gstMmaValue.stMeInfo.FmrId.aucMfrId, "huawei"); /*获取发行日期*/ ulDataLen = TAF_PH_RELEASEDATE_LEN + 1; VOS_StrNCpy( (VOS_CHAR *)(gstMmaValue.stMeInfo.ReleaseDate.aucReleaseDate), ucSoftDate, ulDataLen); /*获取发行时间*/ ulDataLen = TAF_PH_RELEASETIME_LEN + 1; VOS_StrNCpy( (VOS_CHAR *)(gstMmaValue.stMeInfo.ReleaseTime.aucReleaseTime), ucSoftTime, ulDataLen); /*获取硬件模块名*/ lRslt = DRV_MEM_VERCTRL((char *)(gstMmaValue.stMeInfo.ModelId.aucModelId), TAF_MAX_MODEL_ID_LEN, VER_PRODUCT_ID, VERIONREADMODE); if(DRV_INTERFACE_RSLT_OK != lRslt) { MMA_WARNINGLOG("MMA_InitMeInfo():VER_PRODUCT_ID Failed!"); } /*获取软件版本号*/ lRslt = DRV_MEM_VERCTRL((char *)(gstMmaValue.stMeInfo.SoftVersion.aucRevisionId), TAF_MAX_REVISION_ID_LEN + 1, VER_SOFTWARE, VERIONREADMODE); if ( DRV_INTERFACE_RSLT_OK != lRslt ) { MMA_WARNINGLOG("MMA_InitMeInfo():Read Software Version Failed!"); } gstMmaValue.ucCopsNotDisplaySpnFlg = MMA_FALSE; /* 默认全球运营商表有效 */ gstMmaValue.ucNotDisplayLocalNetworkNameFlg = MMA_FALSE; PS_MEM_SET(&gstMmaStoredClientOPID,0x00,sizeof(gstMmaStoredClientOPID)); MMA_RdWt_StordedClientOpID(MMA_STORED_CLIENT_OPID_OP_READ); }
VOS_VOID TAF_MMA_InitOrigMeInfo( VOS_VOID ) { VOS_UINT32 i; VOS_INT32 lRslt; VOS_UINT32 ulDataLen; VOS_CHAR *ucSoftDate = "2006/11/15"; VOS_CHAR *ucSoftTime = "00:00:00"; gstMmaValue.stMeInfo.ImeisV.ImeiMode = TAF_PH_IMEIV_Mode; for ( i = 0; i < TAF_PH_IMEI_LEN; i++ ) { gstMmaValue.stMeInfo.ImeisV.aucImei[i] = 0; } gstMmaValue.stMeInfo.ProductName.aucProductName[0] = '\0'; gstMmaValue.stMeInfo.ModelId.aucModelId[0] = '\0'; gstMmaValue.stMeInfo.ReleaseDate.aucReleaseDate[0] = '\0'; gstMmaValue.stMeInfo.ReleaseTime.aucReleaseTime[0] = '\0'; gstMmaValue.stMeInfo.CompleteCapitiyList.aucCompleteCapilityList[0][0] = '\0'; gstMmaValue.stMeInfo.CompleteCapitiyList.aucCompleteCapilityList[1][0] = '\0'; gstMmaValue.stMeInfo.CompleteCapitiyList.aucCompleteCapilityList[2][0] = '\0'; gstMmaValue.stMeInfo.GsmCompleteCapitiyList.aucCompleteCapilityList[0][0] = '\0'; gstMmaValue.stMeInfo.GsmCompleteCapitiyList.aucCompleteCapilityList[1][0] = '\0'; gstMmaValue.stMeInfo.GsmCompleteCapitiyList.aucCompleteCapilityList[2][0] = '\0'; (VOS_VOID)VOS_StrNCpy((VOS_CHAR *)( gstMmaValue.stMeInfo.SoftVersion.aucRevisionId), 0x00, TAF_MAX_REVISION_ID_LEN+1); (VOS_VOID)VOS_sprintf((VOS_CHAR *) gstMmaValue.stMeInfo.FmrId.aucMfrId, "huawei"); /*获取发行日期*/ ulDataLen = TAF_PH_RELEASEDATE_LEN + 1; (VOS_VOID)VOS_StrNCpy( (VOS_CHAR *)(gstMmaValue.stMeInfo.ReleaseDate.aucReleaseDate), ucSoftDate, ulDataLen); /*获取发行时间*/ ulDataLen = TAF_PH_RELEASETIME_LEN + 1; (VOS_VOID)VOS_StrNCpy( (VOS_CHAR *)(gstMmaValue.stMeInfo.ReleaseTime.aucReleaseTime), ucSoftTime, ulDataLen); /*获取硬件模块名*/ lRslt = mdrv_ver_memberctrl((VOS_INT8 *)(gstMmaValue.stMeInfo.ModelId.aucModelId), TAF_MAX_MODEL_ID_LEN, VER_PRODUCT_ID, VERIONREADMODE); if(MDRV_OK != lRslt) { MMA_WARNINGLOG("MMA_InitMeInfo():VER_PRODUCT_ID Failed!"); } /*获取软件版本号*/ lRslt = mdrv_ver_memberctrl((VOS_INT8 *)(gstMmaValue.stMeInfo.SoftVersion.aucRevisionId), TAF_MAX_REVISION_ID_LEN + 1, VER_SOFTWARE, VERIONREADMODE); if ( MDRV_OK != lRslt ) { MMA_WARNINGLOG("MMA_InitMeInfo():Read Software Version Failed!"); } /* 默认全球运营商表有效 */ gstMmaValue.ucNotDisplayLocalNetworkNameFlg = VOS_FALSE; }