VOS_VOID TAF_CBA_ReadSpecificFileListRefreshFile( VOS_UINT16 usFileId, NAS_USIMM_SERVICES_TYPE_ENUM_UINT32 ulUsimmService, PS_USIM_REFRESH_IND_STRU *pstRefreshInd ) { VOS_UINT32 ulEfLen; VOS_UINT32 ulResult; USIMM_APP_TYPE_ENUM_UINT32 enAppType; /*APP类型*/ VOS_UINT8 ucFileExistFlg; VOS_UINT8 *pucEf = VOS_NULL_PTR; if (PS_USIM_SERVICE_NOT_AVAILIABLE != NAS_USIMMAPI_IsServiceAvailable(ulUsimmService)) { if (VOS_TRUE == TAF_GetSpecificFileListRefreshFileInfo(usFileId, pstRefreshInd, &enAppType)) { /* 读取 TAF_CBA_EF_CBMI_ID USIM文件 */ ucFileExistFlg = VOS_TRUE; ulResult = NAS_USIMMAPI_GetCachedFile(usFileId, &ulEfLen, &pucEf, enAppType); if (USIMM_API_SUCCESS != ulResult) { ucFileExistFlg = VOS_FALSE; } TAF_CBA_ParseSpecUsimFileData(usFileId, ucFileExistFlg, pucEf, (VOS_UINT16)ulEfLen); } } return; }
VOS_VOID TAF_CBA_ReadUsimFile( VOS_UINT16 usFileId, NAS_USIMM_SERVICES_TYPE_ENUM_UINT32 ulUsimmService ) { VOS_UINT32 ulEfLen; VOS_UINT32 ulResult; VOS_UINT8 ucFileExistFlg; VOS_UINT8 *pucEf = VOS_NULL_PTR; if (PS_USIM_SERVICE_NOT_AVAILIABLE != NAS_USIMMAPI_IsServiceAvailable(ulUsimmService)) { ucFileExistFlg = VOS_TRUE; ulResult = NAS_USIMMAPI_GetCachedFile(usFileId, &ulEfLen, &pucEf, USIMM_UNLIMIT_APP); if (USIMM_API_SUCCESS != ulResult) { ucFileExistFlg = VOS_FALSE; } TAF_CBA_ParseSpecUsimFileData(usFileId, ucFileExistFlg, pucEf, (VOS_UINT16)ulEfLen); } return; }
VOS_VOID TAF_MMA_ReadSpdiFile(VOS_VOID) { VOS_UINT32 ulSpdiExistFlag; VOS_UINT8 ucSimType; ucSimType = 0; /* 31102协议描述If service n°51 is "available", this file shall be present.*/ ulSpdiExistFlag = NAS_USIMMAPI_IsServiceAvailable(NAS_USIM_SVR_SP_DISP_INFO); if (PS_USIM_SERVICE_AVAILIABLE != ulSpdiExistFlag) { return; } /* 读取文件,启动保护定时器 */ (VOS_VOID)NAS_USIMMAPI_GetCardType(VOS_NULL_PTR, &ucSimType); (VOS_VOID)TAF_MMA_SendUsimFileReq(USIMM_GUTL_APP, USIMM_GSM_EFSPDI_ID); TAF_MMA_SetWaitSimFilesCnfFlg(TAF_MMA_READ_SIM_SPDI_FILE_ID_FLG); if (USIMM_CARD_USIM == ucSimType) { (VOS_VOID)TAF_MMA_SendUsimFileReq(USIMM_GUTL_APP, USIMM_USIM_EFSPDI_ID); TAF_MMA_SetWaitSimFilesCnfFlg(TAF_MMA_READ_USIM_SPDI_FILE_ID_FLG); } return; }
VOS_VOID TAF_MMA_ReadPnnFile(VOS_VOID) { VOS_UINT8 ucSimType; VOS_UINT32 ulPnnExistFlag; ucSimType = 0; ulPnnExistFlag = NAS_USIMMAPI_IsServiceAvailable(NAS_USIM_SVR_PLMN_NTWRK_NAME); if (PS_USIM_SERVICE_AVAILIABLE != ulPnnExistFlag) { return; } (VOS_VOID)NAS_USIMMAPI_GetCardType(VOS_NULL_PTR, &ucSimType); (VOS_VOID)TAF_MMA_SendUsimFileReq(USIMM_GUTL_APP, USIMM_GSM_EFPNN_ID); TAF_MMA_SetWaitSimFilesCnfFlg(TAF_MMA_READ_SIM_PNN_FILE_ID_FLG); if (USIMM_CARD_USIM == ucSimType) { (VOS_VOID)TAF_MMA_SendUsimFileReq(USIMM_GUTL_APP, USIMM_USIM_EFPNN_ID); TAF_MMA_SetWaitSimFilesCnfFlg(TAF_MMA_READ_USIM_PNN_FILE_ID_FLG); } return; }
VOS_VOID TAF_MMA_ReadSpnFile(VOS_VOID) { VOS_UINT32 ulSpnExistFlag; VOS_UINT8 ucSimType; /* 从USIM中获取SPN文件,文件ID:0x6F46 */ ulSpnExistFlag = NAS_USIMMAPI_IsServiceAvailable(NAS_USIM_SVR_SPN); ucSimType = 0; if (PS_USIM_SERVICE_AVAILIABLE == ulSpnExistFlag) { (VOS_VOID)NAS_USIMMAPI_GetCardType(VOS_NULL_PTR, &ucSimType); (VOS_VOID)TAF_MMA_SendUsimFileReq(USIMM_GUTL_APP, USIMM_GSM_EFSPN_ID); TAF_MMA_SetWaitSimFilesCnfFlg(TAF_MMA_READ_SIM_SPN_FILE_ID_FLG); if (USIMM_CARD_USIM == ucSimType) { (VOS_VOID)TAF_MMA_SendUsimFileReq(USIMM_GUTL_APP, USIMM_USIM_EFSPN_ID); TAF_MMA_SetWaitSimFilesCnfFlg(TAF_MMA_READ_USIM_SPN_FILE_ID_FLG); } } }
VOS_UINT32 TAF_SPM_IsNeedCallControl(VOS_VOID) { TAF_SPM_SERVICE_CTRL_CFG_INFO_STRU *pstServiceCtrlCfgInfo = VOS_NULL_PTR; pstServiceCtrlCfgInfo = TAF_SPM_GetServiceCtrlCfgInfoAddr(); /* ME没有启用CALL CONTROL检查功能,直接返回业务检查通过 */ if (VOS_FALSE == pstServiceCtrlCfgInfo->ucSimCallCtrlSupportFlg) { return VOS_FALSE; } /* 根据(U)SIM卡的CALL CONTROL状态确定是否发起CALL CONTROL检查 0 去使能: 不做CALL CONTROL检查 1 使能: 做CALL CONTROL检查 如果是去使能状态,则退出; */ if (VOS_TRUE != NAS_USIMMAPI_IsServiceAvailable(NAS_USIM_SVR_CALL_CONTROL)) { return VOS_FALSE; } return VOS_TRUE; }
VOS_VOID TAF_MMA_UpdateCallMode( VOS_VOID ) { VOS_UINT32 ulFdnExistFlag; VOS_UINT32 ulSdnExistFlag; VOS_UINT32 ulEcallDataExistFlag; VOS_UINT32 ulUsimFdnStatus; VOS_UINT32 ulCsimFdnStatus; if (TAF_SDC_SIM_TYPE_USIM == TAF_SDC_GetSimType()) { NAS_USIMMAPI_FdnQuery(&ulUsimFdnStatus, &ulCsimFdnStatus); ulEcallDataExistFlag = NAS_USIMMAPI_IsServiceAvailable(NAS_USIM_SVR_ECALL_DATA); ulFdnExistFlag = NAS_USIMMAPI_IsServiceAvailable(NAS_USIM_SVR_FDN); /* 5.3.40.1 eCall Only support Requirement: Service n° 89 and Service n° 2 are "available" and FDN service is enabled in EFEST. */ if ((VOS_TRUE == ulUsimFdnStatus) && (PS_USIM_SERVICE_AVAILIABLE == ulEcallDataExistFlag) && (PS_USIM_SERVICE_AVAILIABLE == ulFdnExistFlag)) { TAF_SDC_SetCurCallMode(TAF_SDC_ECALL_ONLY); return; } ulSdnExistFlag = NAS_USIMMAPI_IsServiceAvailable(NAS_USIM_SVR_SDN); /* 5.3.40.2 eCall and Normal call support Requirement: Service n° 89 and Service n° 4 are "available". */ if ((PS_USIM_SERVICE_AVAILIABLE == ulEcallDataExistFlag) && (PS_USIM_SERVICE_AVAILIABLE == ulSdnExistFlag)) { TAF_SDC_SetCurCallMode(TAF_SDC_ECALL_AND_NORMAL_CALL); return; } } return; }