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_ReadCphsFileCnf( USIMM_READFILE_CNF_STRU *pUsimTafMsg ) { TAF_SDC_CPHS_FILE_INFO_STRU *pstChpsFileInfo = VOS_NULL_PTR; VOS_UINT8 *pCPHSOperNameStr = VOS_NULL_PTR; VOS_UINT8 ucSpareBitNumInLastOctet; VOS_UINT32 ulSrcStrLen; VOS_UINT32 ulDestStrLen; VOS_UINT8 aucOperatorName[TAF_SDC_MAX_OPER_NAME_NUM]; pstChpsFileInfo = TAF_SDC_GetChpsFileInfo(); pCPHSOperNameStr = aucOperatorName; PS_MEM_SET(aucOperatorName, 0xFF, TAF_SDC_MAX_OPER_NAME_NUM); if ((MMA_SUCCESS != pUsimTafMsg->stCmdResult.ulResult) || (0xff == pUsimTafMsg->aucEf[0])) { return; } if (0 == pUsimTafMsg->usEfLen) { MMA_ERRORLOG("TAF_MMA_ReadCphsFileCnf(): usEfLen is 0"); return; } if (pUsimTafMsg->usEfLen > TAF_SDC_MAX_OPER_LONG_NAME_LEN) { MMA_MEM_CPY(aucOperatorName, (VOS_UINT8*)(VOS_UINT32)(pUsimTafMsg->aucEf), TAF_SDC_MAX_OPER_LONG_NAME_LEN); } else { MMA_MEM_CPY(aucOperatorName, pUsimTafMsg->aucEf, pUsimTafMsg->usEfLen); } for (ulSrcStrLen = 0 ;ulSrcStrLen < TAF_SDC_MAX_OPER_LONG_NAME_LEN ; ulSrcStrLen++) { if (0xFF == pCPHSOperNameStr[ulSrcStrLen]) { break; } } /* 将 bit 8为0的Gsm 7bit转换为压缩的 7bit编码 */ ulDestStrLen = (VOS_UINT32)(((ulSrcStrLen * 7) + 7) / 8); /* 压缩后的字节个数 */ if (VOS_OK != TAF_STD_Pack7Bit(pCPHSOperNameStr, ulSrcStrLen, 0, pstChpsFileInfo->stCPHSOperName.aucOperatorName, &ulDestStrLen)) { MMA_ERRORLOG("MMA_ReadCPHSOperNameStrFileCnf():Error:TAF_STD_Pack7Bit failed!"); return; } /* octet3: ext 1,coding scheme:Gsm 7bit, Add CI:0,Number of spare bits in last octet */ ucSpareBitNumInLastOctet = (VOS_UINT8)((ulDestStrLen * 8) - (ulSrcStrLen * 7)); pstChpsFileInfo->stCPHSOperName.bitExt = 0x01; pstChpsFileInfo->stCPHSOperName.ucLength = (VOS_UINT8)ulDestStrLen; pstChpsFileInfo->stCPHSOperName.bitCoding = 0; pstChpsFileInfo->stCPHSOperName.bitSpare = ucSpareBitNumInLastOctet; 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; }