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;
}
Exemplo n.º 3
0
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;
}