VOS_UINT32 SI_STKIsDualImsiSupport(VOS_VOID) { #if (( FEATURE_MULTI_MODEM == FEATURE_ON )&&(!defined(DMT))) return TAF_FAILURE; #else VOS_UINT16 usDualIMSIFlag = 0; if ( NV_OK != NV_Read(en_NV_Item_NV_HUAWEI_DOUBLE_IMSI_CFG_I, &usDualIMSIFlag, sizeof(VOS_UINT16)) ) { STK_WARNING_LOG("STK_InitGobal: Read en_NV_Item_NV_HUAWEI_DOUBLE_IMSI_CFG_I Fail"); } /* 前后两个自节均为1,Dual IMSI功能才开启,第一个字节为NV激活标志,第二个为使能位 */ if ( STK_NV_ENABLED == usDualIMSIFlag ) { return VOS_TRUE; } return VOS_FALSE; #endif }
VOS_VOID SI_STKGetCurImsiSign( VOS_UINT16 *pusDualIMSIEnable, VOS_UINT32 *pulCurImsiSign) { VOS_UINT32 i; VOS_UINT32 j; *pulCurImsiSign = gstSTKIMSIChgCtrl.ulCurImsiSign; *pusDualIMSIEnable = VOS_FALSE; /* 判断是否存在主菜单 */ if (SI_STK_MENU_EXIST != gstSetUpMenuData.ucUsatTag) { STK_WARNING_LOG("SI_STKGetCurImsiSign: There is any Main Menu Content"); return; } /* 在主菜单中匹配,如果匹配失败pusDualIMSIEnable设置为Disable,*/ for (i = 0; i < gstSetUpMenuData.stSetUpMenu.ulItemNum; i++) { for (j = 0; j < gstSTKIMSIMatch.usMatchStrCnt; j++) { if (VOS_TRUE == SI_STK_StrStr(gstSetUpMenuData.stSetUpMenu.Item[i].pucItemText, gstSTKIMSIMatch.astMatchStr[j].aucMatchStr, gstSetUpMenuData.stSetUpMenu.Item[i].ucLen, gstSTKIMSIMatch.astMatchStr[j].usStrLen)) { *pusDualIMSIEnable = VOS_TRUE; return; } } } return; }
VOS_VOID STK_InitGobal(VOS_VOID) { VOS_UINT16 usDualIMSIFlag = VOS_FALSE; VOS_UINT16 usSmsIndFlag = VOS_FALSE; NVIM_PRIVATE_CMD_STATUS_RPT_STRU stNvimCmdRptCtrl; VOS_MemSet(&gstSetUpMenuData, 0, sizeof(gstSetUpMenuData)); VOS_MemSet(&g_stSTKEventState, 0, sizeof(g_stSTKEventState)); VOS_MemSet(gstSTKTimer, 0, sizeof(gstSTKTimer)); VOS_MemSet(&gstSTKCtrlStru, 0, sizeof(gstSTKCtrlStru)); VOS_MemSet(&g_stSTKProfileContent, 0, sizeof(g_stSTKProfileContent)); VOS_MemSet(&g_stSTKDtmfData, 0, sizeof(g_stSTKDtmfData)); VOS_MemSet(&g_stStkSysInfo, (VOS_CHAR)0xFF, sizeof(g_stStkSysInfo)); VOS_MemSet(&g_stCbpEventList, 0, sizeof(g_stCbpEventList)); STK_CLCfgInit(); if(VOS_OK != VOS_SmCreate( "STK1",1,VOS_SEMA4_FIFO,&gulSTKApiSmId))/*创建api访问信号量*/ { return; } if(NV_OK != NV_Read(en_NV_Item_Stk_DualImsi_Ctrl, &gstSTKIMSIMatch, sizeof(SI_STK_IMSICHG_MATCH_STRU))) { STK_WARNING_LOG("STK_InitGobal: Read en_NV_Item_TerminalProfile_Set Fail"); } gstSTKIMSIMatch.usDualIMSIEnable = VOS_FALSE; if ( NV_OK != NV_Read(en_NV_Item_NV_HUAWEI_DOUBLE_IMSI_CFG_I, &usDualIMSIFlag, sizeof(VOS_UINT16)) ) { STK_WARNING_LOG("STK_InitGobal: Read en_NV_Item_NV_HUAWEI_DOUBLE_IMSI_CFG_I Fail"); } /* 前后两个自节均为1,Dual IMSI功能才开启,第一个字节为NV激活标志,第二个为使能位 */ if ( STK_NV_ENABLED == usDualIMSIFlag ) { gstSTKIMSIMatch.usDualIMSIEnable = VOS_TRUE; } if ( NV_OK != NV_Read(en_NV_Item_Stk_SmsInd_Ctrl, &usSmsIndFlag, sizeof(VOS_UINT16)) ) { STK_WARNING_LOG("STK_InitGobal: Read en_NV_Item_Stk_SmsInd_Ctrl Fail"); } /* 前后两个自节均为1,SMS上报功能才开启,第一个字节为NV激活标志,第二个为使能位 */ if ( STK_NV_ENABLED == usSmsIndFlag ) { gusSTKSMSIndEnable = VOS_TRUE; } if(VOS_FALSE == SI_STK_CheckSupportAP()) /*对接非AP才会申请内存*/ { g_pucSTKSndCodeAddr = (VOS_UINT8 *)VOS_MemAlloc(MAPS_STK_PID, STATIC_MEM_PT, STK_PRINT_MAX_LEN); } STK_InitCallGobal(); if ( NV_OK != NV_Read(en_NV_Item_PRIVATE_CMD_STATUS_RPT, &stNvimCmdRptCtrl, sizeof(NVIM_PRIVATE_CMD_STATUS_RPT_STRU)) ) { STK_WARNING_LOG("STK_InitGobal: Read en_NV_Item_PRIVATE_CMD_STATUS_RPT Fail"); } else { if(VOS_TRUE == stNvimCmdRptCtrl.ucStatus) { g_ucCsinCurcRptCfg = stNvimCmdRptCtrl.ucStatusRptGeneralControl; } } if (VOS_TRUE == USIMM_IsSvlte()) { g_enSTKCurCSModem = MODEM_ID_BUTT; } else { #if defined (INSTANCE_1) g_enSTKCurCSModem = MODEM_ID_1; #else g_enSTKCurCSModem = MODEM_ID_0; #endif /*end of defined (INSTANCE_1)*/ } return; }