📄 networkfunctions.c
字号:
* 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 + -