VOS_UINT32 USIMM_GetFileReq_Instance( MODEM_ID_ENUM_UINT16 enModemID, VOS_UINT32 ulSenderPid, VOS_UINT32 ulSendPara, USIMM_GET_FILE_INFO_STRU *pstGetFileInfo) { if (MODEM_ID_0 == enModemID) { USIMM_NORMAL_LOG("USIMM_GetFileReq_Instance: call USIMM_GetFileReq"); return USIMM_GetFileReq(ulSenderPid, ulSendPara, pstGetFileInfo); } #if (FEATURE_MULTI_MODEM == FEATURE_ON) if (MODEM_ID_1 == enModemID) { USIMM_NORMAL_LOG("USIMM_GetFileReq_Instance: call I1_USIMM_GetFileReq"); return I1_USIMM_GetFileReq(ulSenderPid, ulSendPara, pstGetFileInfo); } #endif USIMM_ERROR_LOG("USIMM_GetFileReq_Instance: Para is Error"); return USIMM_API_WRONG_PARA; }
/***************************************************************************** Function Name : NAS_LMM_NvimRead Discription : 其他模块调用本函数读一个指定的NV_Item Input : ulNVItemType: NV_Item类型 *pData :数据缓存指针 *pusDataLen:返回数据长度 Output : pusDataLen :返回数据长度 Return : 0:数据成功读取,函数正常返回 1:未找到要读取的NV项 3:传入的缓存不够出错 4:系统异常,读取出错 History: 1.sunbing 49683 2010-7-22 modify *****************************************************************************/ NAS_LMM_USIM_NV_RESULT NAS_LMM_NvimRead( NAS_LMM_ITEM_TYPE_ENUM_UINT32 ulNVItemType, VOS_VOID *pData, const VOS_UINT16 *pusDataLen ) { VOS_UINT32 ulRslt = NAS_LMM_NVIM_FAIL; NAS_NVIM_CTRL_TBL stNvCtrlTbl; VOS_UINT32 i; NAS_LMM_NV_ACTION_FUN pActFun = NAS_LMM_NULL_PTR; USIMM_GET_FILE_INFO_STRU stGetFileInfo = {0}; /*check input params*/ if((NAS_NVIM_NULL_PTR == pData) || (NAS_NVIM_NULL_PTR == pusDataLen) || (ulNVItemType > EN_NV_ID_PS_END)) { NAS_LMM_NVIM_LOG_ERR("NAS_LMM_NvimRead :Input Para is error"); return NAS_LMM_NVIM_FAIL; } NAS_LMM_MEM_SET(g_aucNvimBuff, 0, sizeof(g_aucNvimBuff)); /*Initalize NVIM ctrl tbl*/ stNvCtrlTbl.pData = pData; stNvCtrlTbl.pNvData = g_aucNvimBuff; stNvCtrlTbl.usDataLen = *pusDataLen; stNvCtrlTbl.usNvDataLen = *pusDataLen; /*lint -e438*/ /*硬USIM下,并且NV ITEM属于USIM的范围,则从USIM中读取文件*/ if((EN_NV_ID_USIM_BEGIN < ulNVItemType) &&(EN_NV_ID_USIM_END > ulNVItemType)) { for(i = 0; i < g_ulNvDataMapNum; i++) { /* 若NV类型相同,则找到了,返回当前的NV动作函数,退出循环 */ if(ulNVItemType == g_astNvDataMap[i].ulEventType) { stGetFileInfo.usEfId = g_astNvDataMap[i].usUsimFileId; break; } } if(NAS_USIM_FILE_ID_INVALID == stGetFileInfo.usEfId) { NAS_LMM_NVIM_LOG_INFO("NAS_LMM_NvimRead :Donot find Usim file ID."); return NAS_LMM_NVIM_FAIL; } /*ucRecordNum默认为1,NAS目前涉及的文件是线形文件,且只有一个记录*/ stGetFileInfo.ucRecordNum = 1; stGetFileInfo.enAppType = USIMM_UMTS_APP; /* ulRslt = Api_UsimGetFileReq(PS_USIM_CLIENT_MM, usEfId, ucRecordNum); */ ulRslt = USIMM_GetFileReq( PS_PID_MM, 0, &stGetFileInfo); NAS_EMM_GET_SEND_COUNTER()++; /*需要返回失败,这样,调用处发现返回失败后,就把全局变量内存清空, 而不会向里面赋值,真正的赋值要等待收到USIM的READ FILE消息后,才做。*/ return NAS_LMM_NVIM_HARD_USIM; } /*lint +e438*/ /*其他情况从NV中读取信息*/ /*lint -e718*/ /*lint -e516*/ /*lint -e732*/ ulRslt = LPs_NvimItem_Read( ulNVItemType, stNvCtrlTbl.pNvData, stNvCtrlTbl.usNvDataLen); /*lint +e732*/ /*lint +e516*/ /*lint +e718*/ if(ulRslt != EN_NV_OK) { NAS_LMM_NVIM_LOG_ERR("NAS_LMM_NvimRead:PS_NVIM_Read is fail"); return NAS_LMM_NVIM_FAIL; } /* 在g_astNvDataMap中查找对应的NV TYPE*/ for(i = 0; i < g_ulNvDataMapNum; i++) { /* 若NV类型相同,则找到了,返回当前的NV动作函数,退出循环 */ if(ulNVItemType == g_astNvDataMap[i].ulEventType) { pActFun = g_astNvDataMap[i].pfDecodeActionFun; break; } } if (NAS_LMM_NULL_PTR != pActFun) { ulRslt = (*pActFun) (&stNvCtrlTbl); if(NAS_LMM_NVIM_OK == ulRslt) { return NAS_LMM_NVIM_OK; } else { return NAS_LMM_NVIM_FAIL; } } else /* 如果找不到处理函数,表示当前没有该处理函数 */ { NAS_LMM_NVIM_LOG_ERR("NAS_LMM_NvimRead:Action functin is ERR"); return NAS_LMM_NVIM_FAIL; } }