VOS_UINT32 TAF_MmiEncodeSC( TAF_SS_CODE ucSsCode, VOS_CHAR *pcOutMmiStr, VOS_UINT32 *pulScLength ) { VOS_UINT32 ulLoop; VOS_UINT32 ulTableSize; MN_MMI_SC_TABLE_STRU *pstSCType; /* 获取SC字符串 */ ulTableSize = MMI_GetSCTblSize(); pstSCType = MMI_GetSCTblAddr(); for (ulLoop = 0; ulLoop < ulTableSize; ulLoop++) { if (pstSCType->ucNetSc == ucSsCode) { *pulScLength = VOS_StrLen((VOS_CHAR *)pstSCType->pcMmiSc); (VOS_VOID)VOS_StrNCpy(pcOutMmiStr, pstSCType->pcMmiSc, *pulScLength); return VOS_TRUE; } pstSCType++; } return VOS_FALSE; }
VOS_UINT32 TAF_MmiEncodeBS( TAF_SS_BASIC_SERVICE_STRU *pstBsService, VOS_CHAR *pcOutMmiStr, VOS_UINT32 *pulBSLength ) { VOS_UINT32 ulLoop; VOS_UINT32 ulTableSize; MN_MMI_BS_TABLE_STRU *pstBsType = VOS_NULL_PTR; /* 获取BS字符串 */ ulTableSize = MMI_GetBSTblSize(); pstBsType = MMI_GetBSTblAddr(); for (ulLoop = 0; ulLoop < ulTableSize; ulLoop++) { if ((pstBsType->ucNetBsCode == pstBsService->BsServiceCode) && (pstBsType->ucNetBsType == pstBsService->BsType)) { *pulBSLength = VOS_StrLen((VOS_CHAR *)pstBsType->pcMmiBs); (VOS_VOID)VOS_StrNCpy(pcOutMmiStr, pstBsType->pcMmiBs, *pulBSLength); return VOS_TRUE; } pstBsType++; } /* 如果在BS表中没有找到对应的项,仍然返回成功做call control检查 */ *pulBSLength = 0; *pcOutMmiStr = VOS_NULL_PTR; return VOS_TRUE; }
/***************************************************************************** Function : NV_GetFileAbsolutPath Description: concatenate one string to another Input : VOS_CHAR *pcFolderPath -> Folder absolute path VOS_CHAR *pcFileName -> File name VOS_UINT32 ulFilePathStrLen->File path len Return : A pointer to destination Other : *****************************************************************************/ VOS_CHAR *NV_GetFileAbsltPath(const VOS_CHAR *pcFolderPath, const VOS_CHAR *pcFileName , VOS_CHAR *pcFilePath, VOS_UINT32 ulFilePathLen) { VOS_StrNCpy(pcFilePath, (VOS_CHAR*)pcFolderPath, (ulFilePathLen - 1)); strncat(pcFilePath, pcFileName, (ulFilePathLen - VOS_StrLen(pcFilePath) - 1)); /* make coverity happy */ pcFilePath[VOS_StrLen(pcFilePath)] = '\0'; return pcFilePath; }
VOS_UINT32 TAF_MmiEncodeOperationTypeString( VOS_UINT32 ulEventType, VOS_CHAR *pcOutMmiStr, VOS_UINT32 *pulLength ) { VOS_UINT32 ulRet; VOS_UINT32 ulLoop; VOS_UINT32 ulTableSize; MN_MMI_OPERATION_TYPE_ENUM_U8 enSsOpType; MN_MMI_SS_OP_Tbl_STRU *pstOperationType = VOS_NULL_PTR; /* 获取事件对应的操作类型 */ ulRet = TAF_MmiGetOperationType(ulEventType, &enSsOpType); /* 获取业务操作类型失败,返回编码失败 */ if (VOS_FALSE == ulRet) { return VOS_FALSE; } /* 获取补充业务操作类型字符串 */ ulTableSize = MMI_GetOporationTypeTblSize(); pstOperationType = MMI_GetOporationTypeTblAddr(); for (ulLoop = 0; ulLoop < ulTableSize; ulLoop++) { if (enSsOpType == pstOperationType->enSsOpType) { *pulLength = VOS_StrLen((VOS_CHAR *)pstOperationType->pcSsOpStr); (VOS_VOID)VOS_StrNCpy((VOS_CHAR *)pcOutMmiStr, (VOS_CHAR *)pstOperationType->pcSsOpStr, *pulLength); return VOS_TRUE; } pstOperationType++; } return VOS_FALSE; }
VOS_VOID TAF_MmiEncodeDN( TAF_SS_REGISTERSS_REQ_STRU *pstRegisterInfo, VOS_CHAR *pcOutMmiStr, VOS_UINT32 *pulDNLength ) { VOS_UINT32 ulNumberLength; ulNumberLength = VOS_StrLen((VOS_CHAR *)pstRegisterInfo->aucFwdToNum); if (ulNumberLength > TAF_SS_MAX_FORWARDED_TO_NUM_LEN) { ulNumberLength = TAF_SS_MAX_FORWARDED_TO_NUM_LEN; } (VOS_VOID)VOS_StrNCpy(pcOutMmiStr, (VOS_CHAR *)pstRegisterInfo->aucFwdToNum, ulNumberLength); /* 根据目的号码和子号码字符串输出*DN和长度 */ *pulDNLength = ulNumberLength; 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_UINT32 TAF_MmiEncodeRegisterPwdMmiString( VOS_UINT32 ulEventType, VOS_VOID *pMsg, VOS_CHAR *pcOutMmiStr ) { VOS_UINT32 ulRet; TAF_SS_REGPWD_REQ_STRU *pstRegisterPwdInfo = VOS_NULL_PTR; VOS_UINT32 ulPos; VOS_UINT32 ulSCLength; /* 涉及命令^CMMI,+CPWD 输出注册新密码操作前缀: **03,此处的SsCode标示闭锁类型, 不能用于输出新密码注册信息,所以直接赋值**03 22030 6.5.4 Registration of new password * 03 * ZZ * OLD_PASSWORD * NEW_PASSWORD * NEW_PASSWORD # The UE shall also support the alternative procedure: ** 03 * ZZ * OLD_PASSWORD * NEW_PASSWORD * NEW_PASSWORD # where, for Barring Services, ZZ = 330; for a common password for all appropriate services, delete the ZZ, entering: * 03 ** OLD_PASSWORD * NEW_PASSWORD * NEW_PASSWORD # The UE shall also support the alternative procedure: ** 03 ** OLD_PASSWORD * NEW_PASSWORD * NEW_PASSWORD # */ (VOS_VOID)VOS_StrCpy(pcOutMmiStr, TAF_MMI_REGISTER_PASSWORD); ulPos = VOS_StrLen(TAF_MMI_REGISTER_PASSWORD); pstRegisterPwdInfo = (TAF_SS_REGPWD_REQ_STRU *)pMsg; /* 追加SC字符串: *SC */ TAF_MMI_INSERT_SEPERATION_CHAR(pcOutMmiStr, ulPos); ulRet = TAF_MmiEncodeSC(pstRegisterPwdInfo->SsCode, (pcOutMmiStr + ulPos), &ulSCLength); if (VOS_TRUE != ulRet) { MN_WARN_LOG("TAF_MmiEncodeRegisterPwdMmiString: invalid SC parameter."); return ulRet; } ulPos += ulSCLength; /* 追加旧PW字符串: *OLDPASSWORD */ TAF_MMI_INSERT_SEPERATION_CHAR(pcOutMmiStr, ulPos); (VOS_VOID)VOS_StrNCpy((VOS_CHAR *)(pcOutMmiStr + ulPos), (VOS_CHAR *)pstRegisterPwdInfo->aucOldPwdStr, TAF_SS_MAX_PASSWORD_LEN); ulPos += TAF_SS_MAX_PASSWORD_LEN; /* 追加新PW字符串: *NEWPASSWORD */ TAF_MMI_INSERT_SEPERATION_CHAR(pcOutMmiStr, ulPos); (VOS_VOID)VOS_StrNCpy((VOS_CHAR *)(pcOutMmiStr + ulPos), (VOS_CHAR *)pstRegisterPwdInfo->aucNewPwdStr, TAF_SS_MAX_PASSWORD_LEN); ulPos += TAF_SS_MAX_PASSWORD_LEN; /* 追加新PW确认字符串: *NEWPASSWORD */ TAF_MMI_INSERT_SEPERATION_CHAR(pcOutMmiStr, ulPos); (VOS_VOID)VOS_StrNCpy((VOS_CHAR *)(pcOutMmiStr + ulPos), (VOS_CHAR *)pstRegisterPwdInfo->aucNewPwdStrCnf, TAF_SS_MAX_PASSWORD_LEN); ulPos += TAF_SS_MAX_PASSWORD_LEN; /* 追加# */ *(pcOutMmiStr + ulPos) = '#'; return ulRet; }
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; }