/***************************************************************************** Function Name : NAS_LMM_DecodeSimImsi Discription : 解码IMSI Input : pstNvCtrlTbl:公共处理结构 Output : 解码后的数据 Return : History: *****************************************************************************/ VOS_UINT32 NAS_LMM_DecodeSimImsi(const NAS_NVIM_CTRL_TBL *pstNvCtrlTbl) { VOS_UINT8 *pucImsi; NAS_EMM_UEID_STRU *pstUeId; pstUeId = (VOS_VOID *)NAS_EMM_GetEmmGlobleAddr(NAS_LMM_GLOBLE_PAEA_UEID); pucImsi = (VOS_VOID *)NAS_EMM_GetEmmGlobleAddr(NAS_LMM_GLOBLE_PAEA_IMSI); if((NAS_NVIM_NULL_PTR == pstUeId) || (NAS_NVIM_NULL_PTR == pucImsi)) { /* 打印查询的 类型 */ NAS_LMM_NVIM_LOG_ERR("NAS_LMM_DecodeSimImsi: Point is Null"); return NAS_LMM_NVIM_FAIL; } if (NAS_LMM_NVIM_IMSI_FILE_LEN != pstNvCtrlTbl->usNvDataLen) { NAS_LMM_NVIM_LOG_ERR("NAS_LMM_DecodeSimImsi: USIM IMSI LENGTH ERR"); return NAS_LMM_NVIM_FAIL; } pstUeId->bitOpImsi = NAS_NVIM_BIT_SLCT; NAS_LMM_MEM_CPY( pucImsi, pstNvCtrlTbl->pNvData, NAS_LMM_NVIM_IMSI_FILE_LEN); /*PC REPLAY MODIFY BY LEILI DELETE*/ NAS_LMM_NVIM_LOG_INFO("NAS_LMM_DecodeSimImsi: IMSI IS "); NAS_COMM_PrintArray(NAS_COMM_GET_MM_PRINT_BUF(),pucImsi,NAS_LMM_NVIM_IMSI_FILE_LEN); return NAS_LMM_NVIM_OK; }
VOS_UINT32 NAS_LMM_DecodeSimMncLen(NAS_NVIM_CTRL_TBL *pstNvCtrlTbl) { VOS_UINT32 *pstImsiMncLen; VOS_UINT8 *pUsimData; VOS_UINT32 ulMncLen = 0; pstImsiMncLen = (VOS_VOID *)NAS_EMM_GetEmmGlobleAddr(NAS_LMM_GLOBLE_PARA_MNC_LEN); pUsimData = (VOS_UINT8*)pstNvCtrlTbl->pNvData; /* 31.102,4.2.18章节,SIM卡文件长度不小于3,携带MNC需要不小于4 */ if (NAS_LMM_NVIM_MNCLEN_FILE_MIN_LEN > pstNvCtrlTbl->usNvDataLen) { NAS_LMM_NVIM_LOG_ERR("NAS_LMM_DecodeMncLen: Sim Mnc file Length ERR"); return NAS_LMM_NVIM_FAIL; } /* 取出相应位置的低4bit */ ulMncLen = pUsimData[NAS_LMM_NVIM_MNC_LENGTH_POSITION-1] & NAS_LMM_NVIM_LOW_4_BIT_1; /* 协议规定MNC的有效长度只能是2或3 */ if (( NAS_LMM_NVIM_MNCLEN_VALUE_2 == ulMncLen ) || ( NAS_LMM_NVIM_MNCLEN_VALUE_3 == ulMncLen)) { *pstImsiMncLen = ulMncLen; } else { /* 赵学理说GU NAS默认值为3,需要跟GU NAS保持一致 */ NAS_LMM_NVIM_LOG_ERR("NAS_LMM_DecodeMncLen: Mnc Length ERR, set len=3"); *pstImsiMncLen = NAS_LMM_NVIM_MNCLEN_VALUE_3; } return NAS_LMM_NVIM_OK; }