⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 networkfunctions.c

📁 MTK6226修改平台UI的文件介绍
💻 C
📖 第 1 页 / 共 5 页
字号:
 *  void*(?)
 * RETURNS
 *  void
 *****************************************************************************/
void NetworkErrorHandle(void);
void RefreshNwProviderName(U8 *UpdatePlmn);

void NetWorkAttachedIndication(void *inMsg)
{
    /*----------------------------------------------------------------*/
    /* Local Variables                                                */
    /*----------------------------------------------------------------*/
    S8 plmn_prompt[30]; /* Value is hardcoded as temporarly used */
    S8 current_oper[MAX_PLMN_LEN_MMI + 1];

    MMINWATTACHIND *local_data = (mmi_nw_attach_ind_struct*) inMsg;

    /*----------------------------------------------------------------*/
    /* Code Body                                                      */
    /*----------------------------------------------------------------*/
    PRINT_INFORMATION(("MSG_ID_MMI_NW_ATTACH_INDICATION"));

    if (local_data->status == MMI_RAC_SEARCHING)
    {
        return; /* do nothing because L4 is searching network */
    }

#ifdef __MMI_SIMAP_SUPPORT__
    if (mmi_bootup_get_active_bt_access_profile_mode() == MMI_TRUE && local_data->status == MMI_RAC_OK)
    {
        return; /* ignore normal service indication in SAP mode */
    }
#endif /* __MMI_SIMAP_SUPPORT__ */

    /* micha0120 */
    UpdateGPRSStatusIcon(local_data->gprs_status);

    /* micha0317 */
    if (pfnUnicodeStrcmp((PS8) gNWProviderName, (PS8) GetString(STR_ID_NETSET_SEARCHIN_NW)) == 0 ||
        local_data->status != lastNwStatus || memcmp(local_data->plmn, lastPLMN, MAX_PLMN_LEN_MMI))
    {
        gGPRSStatusModified = 1;
    }

    /* diamond, 2006/06/01 Not reset gNWProviderName here to prevent from unable to get EONS PNN file */
#if ( (defined __MMI_EONS_SUPPORT__) && (defined MMI_ON_HARDWARE_P) )
    if (mmi_eons_check_if_plmn_present(gPLMN) == 0)
#endif 
        memset(gNWProviderName, 0, MAX_LENGTH_DISPLAY_NAME * ENCODING_LENGTH);

    switch (local_data->status) /* l4c_rac_response_enum */
    {
        case MMI_RAC_OK:    /* normal service */

            /* Required for othe applications to indicate them full service */
            g_pwr_context.CurrentServiceType = FULL_SERVICE;

            ChangeStatusIconLevel(STATUS_ICON_SIGNAL_STRENGTH, gSignalStrengthLevel);
            ChangeStatusIconLevel(STATUS_ICON_SUBLCD_SIGNAL_STRENGTH, gSignalStrengthLevel);
          // wangbei add start 20071010
        #ifdef __NEW_STATUS_ICONS_STYLE__
         draw_submenu_statusicons();
        #endif
        // wangbei add end
            /* Stop searching screen */
            /* g_pwr_context.NetWorkFlag = 1; */
            g_pwr_context.PowerOnNWStatus |= MMI_NW_STATUS_NETWORK_FLAG;        /* 0x01: receive network attachment */

            memset(current_oper, '\0', sizeof(current_oper));
            memcpy(current_oper, local_data->plmn, MAX_PLMN_LEN_MMI);
            sprintf(plmn_prompt, "PLMN %s", current_oper);
            PRINT_INFORMATION((plmn_prompt));

            /* Copy plmn to global variable to be checked later for displaying roaming signals */
            /* memcpy(gPLMN,local_data->plmn,MAX_PLMN_LEN_MMI); */
            strcpy((S8*) gPLMN, (S8*) local_data->plmn);    /* local_data->plmn is a null-terminated string */
            RefreshNwProviderName(gPLMN);

            /* Send message to check Roaming enabled or not signal */
            if (g_pwr_context.testRoaming == 3) /* Robin 1202, means already get IMSI */
            {
                /* diamond, 2005/09/26 support PNN and OPL */
            #if ( (defined __MMI_EONS_SUPPORT__) && (defined MMI_ON_HARDWARE_P) )
                if (mmi_eons_check_if_plmn_present(gPLMN) == 0)
            #endif 
                    ChangeRoamingState();
            }
            else if (g_pwr_context.testRoaming == 1)    /* No body send get IMSI req */
            {
                RequestToTestRoamingEnabled();
            }

            /* Update last network information */
            lastNwStatus = MMI_RAC_OK;
            /* memcpy(lastPLMN, gPLMN, MAX_PLMN_LEN_MMI); */
            strcpy((S8*) lastPLMN, (S8*) gPLMN);

        #if defined(__GSM_RAT__) && defined(__WCDMA_RAT__) && !defined(__MMI_DUAL_MODE_SELF_TEST__)
            mmi_netset_refresh_rat_icon(local_data->rat); /* set the status icon for RAT */
        #endif

        #ifdef __MMI_IMPS__
            mmi_imps_notify_rac_ready();
        #endif 

        #ifdef __MMI_POC__
            if (mmi_bootup_is_idle_screen_reached() == MMI_TRUE)
            {
                mmi_poc_poweron_reg();
            }
        #endif /* __MMI_POC__ */ 
            break;

        case MMI_RAC_NO_CELL:   /* no service */

            /* Required for othe applications to indicate them no service */
            g_pwr_context.CurrentServiceType = NO_SERVICE;

            PRINT_INFORMATION(("No Service"));

            IdleResetStatusIcon(STATUS_ICON_ROAMING);
            IdleRefreshServiceIndicationArea();

            /* if(g_pwr_context.idleScreenFirst ) //1211 */
            if (mmi_bootup_is_searching_or_idle_reached() == MMI_TRUE)
            {
                StopLEDPatternNoService();  /* MTK add Robin 1009. Stop LED will trigger the Band led pattern resume mechanism */
            }

            /* Reset the signal level to zero */
            ChangeStatusIconLevel(STATUS_ICON_SIGNAL_STRENGTH, 0);
            ChangeStatusIconLevel(STATUS_ICON_SUBLCD_SIGNAL_STRENGTH, 0);
         // wangbei add start 20071010
        #ifdef __NEW_STATUS_ICONS_STYLE__
         draw_submenu_statusicons();
        #endif
        // wangbei add end
            lastNwStatus = MMI_RAC_NO_CELL;

            if (g_idle_context.IsOnIdleScreen)
            {
                IdleSetLRKey();
            }

            break;

        case MMI_RAC_LIMITED_SERVICE:   /* limit service */

            /* Required for othe applications to indicate them no service */
            g_pwr_context.CurrentServiceType = LIMITED_SERVICE;

            ChangeStatusIconLevel(STATUS_ICON_SIGNAL_STRENGTH, gSignalStrengthLevel);
            ChangeStatusIconLevel(STATUS_ICON_SUBLCD_SIGNAL_STRENGTH, gSignalStrengthLevel);
          // wangbei add start 20071010
         #ifdef __NEW_STATUS_ICONS_STYLE__
         draw_submenu_statusicons();
         #endif
        // wangbei add end
            PRINT_INFORMATION(("Limited Service"));

            IdleResetStatusIcon(STATUS_ICON_ROAMING);
            IdleRefreshServiceIndicationArea();

            /* if(g_pwr_context.idleScreenFirst ) //Robin 1211 */
            if (mmi_bootup_is_searching_or_idle_reached() == MMI_TRUE)
            {
                StopLEDPatternLimitService();   /* MTK add Robin 1009. Stop LED will trigger the Band led pattern resume mechanism */
            }

            lastNwStatus = MMI_RAC_LIMITED_SERVICE;

            if (g_idle_context.IsOnIdleScreen)
            {
                IdleSetLRKey(); /* Cylen, __MANUAL_MODE_NW_SEL__ */
            }

            break;

        case MMI_RAC_ATTEMPT_TO_UPDATE:

            g_pwr_context.CurrentServiceType = LIMITED_SERVICE;

            IdleResetStatusIcon(STATUS_ICON_ROAMING);

            PRINT_INFORMATION(("Limited Service"));

            IdleRefreshServiceIndicationArea();

            /* if( g_pwr_context.idleScreenFirst ) //Robin 1211 */
            if (mmi_bootup_is_searching_or_idle_reached() == MMI_TRUE)
            {
                StopLEDPatternLimitService();   /* MTK add Robin 1009. Stop LED will trigger the Band led pattern resume mechanism */
            }

            lastNwStatus = MMI_RAC_ATTEMPT_TO_UPDATE;

            if (g_idle_context.IsOnIdleScreen)
            {
                IdleSetLRKey(); /* Cylen, __MANUAL_MODE_NW_SEL__ */
            }

            break;

        case MMI_RAC_INVALID_SIM:

            /* g_pwr_context.InvalidSim = 1; */
            g_pwr_context.PowerOnNWStatus |= MMI_NW_STATUS_REG_FAILED;  /* network registration failed */
            g_pwr_context.CurrentServiceType = LIMITED_SERVICE;

            PRINT_INFORMATION(("Limited Service"));

            IdleRefreshServiceIndicationArea();

            /* if( g_pwr_context.idleScreenFirst ) //Robin 1211 */
            if (mmi_bootup_is_searching_or_idle_reached() == MMI_TRUE)
            {
                StopLEDPatternNoService();  /* MTK add Robin 1009. Stop LED will trigger the Band led pattern resume mechanism */
            }

            lastNwStatus = MMI_RAC_INVALID_SIM;

            break;

        case MMI_RAC_ERROR:
            NetworkErrorHandle();
            break;
    }

    /* micha0423 */
    if (gGPRSStatusModified)    /* Robin 1128 Enter idle screen after GET IMSI RSP comming */
    {
        if (g_idle_context.IsOnIdleScreen && g_pwr_context.testRoaming == 3)
        {
        #if ( (defined __MMI_EONS_SUPPORT__) && (defined MMI_ON_HARDWARE_P) )
            if (mmi_eons_check_if_plmn_present(gPLMN) == 0 || lastNwStatus != MMI_RAC_OK)
        #endif 
                EntryIdleScreen();
        }
        else
        {
            refresh_status_icon_display();
        }

        gGPRSStatusModified = 0;
    }

    if (!g_pwr_context.IsCampOnTonePlayed && g_pwr_context.CurrentServiceType == FULL_SERVICE)  /* Robin 1128 Play camp on tone after enter idle screen */
    {
        if (g_idle_context.IsOnIdleScreen)  /* Lisen 040406 */
        {
            playRequestedTone(CAMP_ON_TONE);
            g_pwr_context.IsCampOnTonePlayed = 1;
        }
    }

    //micha0923, #169    
    //if( g_pwr_context.InvalidSim  && (g_idle_context.IsOnIdleScreen || IsScreenPresent(IDLE_SCREEN_ID)) &&  !g_pwr_context.InvalidSimShowed) 
    if (mmi_bootup_is_nw_registration_ok() == MMI_FALSE &&
        (g_idle_context.IsOnIdleScreen || IsScreenPresent(IDLE_SCREEN_ID)) && !g_pwr_context.InvalidSimShowed)
    {
        g_pwr_context.InvalidSimShowed = 1;
        DisplayInvalidSimInfo();
    }

}


/*****************************************************************************
 * FUNCTION
 *  NetworkErrorHandle
 * DESCRIPTION
 *  Handler for network attachment case MMI_RAC_ERROR
 * PARAMETERS
 *  void
 * RETURNS
 *  void
 *****************************************************************************/
void NetworkErrorHandle(void)
{
    /*----------------------------------------------------------------*/
    /* Local Variables                                                */
    /*----------------------------------------------------------------*/

    /*----------------------------------------------------------------*/
    /* Code Body                                                      */
    /*----------------------------------------------------------------*/
    switch (lastNwStatus)
    {
        case MMI_RAC_OK:
            g_pwr_context.CurrentServiceType = FULL_SERVICE;
            /* memcpy(gPLMN,lastPLMN,MAX_PLMN_LEN_MMI); */
            strcpy((S8*) gPLMN, (S8*) lastPLMN);
            RefreshNwProviderName(gPLMN);
            if (mmi_bootup_is_searching_or_idle_reached() == MMI_TRUE)
            {
                StopLEDPatternNoService();
            }
            break;

        case MMI_RAC_NO_CELL:
            g_pwr_context.CurrentServiceType = NO_SERVICE;
            /* RefreshNwProviderName(gPLMN); */
            if (mmi_bootup_is_searching_or_idle_reached() == MMI_TRUE)
            {
                StopLEDPatternNoService();
            }
            break;

        case MMI_RAC_LIMITED_SERVICE:
            g_pwr_context.CurrentServiceType = LIMITED_SERVICE;
            /* RefreshNwProviderName(gPLMN); */
            if (mmi_bootup_is_searching_or_idle_reached() == MMI_TRUE)
            {
                StopLEDPatternNoService();
            }
            break;

        case MMI_RAC_INVALID_SIM:
            /* g_pwr_context.InvalidSim = 1; */
            g_pwr_context.PowerOnNWStatus |= MMI_NW_STATUS_REG_FAILED;  /* network registration failed */
            g_pwr_context.CurrentServiceType = LIMITED_SERVICE;
            /* RefreshNwProviderName(gPLMN); */
            if (mmi_bootup_is_searching_or_idle_reached() == MMI_TRUE)
            {
                StopLEDPatternNoService();
            }
            break;

        case MMI_RAC_ATTEMPT_TO_UPDATE:
            g_pwr_context.CurrentServiceType = LIMITED_SERVICE;
            /* RefreshNwProviderName(gPLMN); */
            if (mmi_bootup_is_searching_or_idle_reached() == MMI_TRUE)
            {
                StopLEDPatternNoService();  /* MTK add Robin 1009. Stop LED will trigger the Band led pattern resume mechanism */
            }
            break;

        default:
            break;
    }
}


/*****************************************************************************
 * FUNCTION
 *  RefreshNwProviderName
 * DESCRIPTION
 *  Refresh the network provider name
 * PARAMETERS
 *  UpdatePlmn      [?]     
 *  U8*(?)
 * RETURNS
 *  void
 *****************************************************************************/
void RefreshNwProviderName(U8 *UpdatePlmn)
{
    /*----------------------------------------------------------------*/
    /* Local Variables                                                */
    /*----------------------------------------------------------------*/
#if ( (defined __MMI_EONS_SUPPORT__) && (defined MMI_ON_HARDWARE_P) )
    /* diamond, 2005/09/26 support PNN and OPL */

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -