mminetwork.c
来自「是一个手机功能的模拟程序」· C语言 代码 · 共 2,130 行 · 第 1/5 页
C
2,130 行
break;
case E_NM_LIMITED_SERVICE:
g_nmService = NM_LIMITED_SERVICE;
SEND_EVENT (network_data.network_win, NETWORK_LIMITED_SERVICE, 0, para);
break;
case E_NM_NO_SERVICE:
g_nmService = NM_NO_SERVICE;
SEND_EVENT (network_data.network_win, NETWORK_NO_SERVICE, 0, para);
break;
case E_NM_SEARCH_NETWORK:
g_nmService = NM_SEARCHING;
SEND_EVENT (network_data.network_win, NETWORK_SEARCH_NETWORK, 0, para);
break;
case E_NM_NO_NETWORK:
g_nmService = NM_NO_NETWORK;
SEND_EVENT (network_data.network_win, NETWORK_NO_NETWORK, 0, para);
break;
case E_NM_PLMN_LIST:
SEND_EVENT (network_data.network_win, NETWORK_PLMN_LIST, 0, para);
break;
case E_NM_DEREGISTRATION:
TRACE_EVENT("MmiNetwork:E_NM_DEREGISTRATION");
mainShutdown();
break;
case E_NM_PREF_PLMN_LIST:
TRACE_EVENT("MmiNetwork:E_NM_PREF_PLMN_LIST");
SEND_EVENT (network_data.network_win, NETWORK_PREFERRED_LIST, 0, para);
break;
case E_NM_PPLMN_MEM:
TRACE_EVENT("MmiNetwork:E_NM_PPLMN_MEM");
SEND_EVENT (network_data.network_win, NETWORK_PPLMN_MEM_LIST, 0, para);
break;
/* sbh 29-04-02 - Cell reselection */
case E_NM_CELL_SELECT:
TRACE_FUNCTION("MmiNetwork:E_NM_CELL_SELECT");
SEND_EVENT (network_data.network_win, NETWORK_CELL_SELECT, 0, para);
break;
/* SPR919 - SH - Band selection */
case E_NM_BAND:
TRACE_EVENT("MmiNetwork:E_NM_BAND");
nm_registration (nm_get_mode (),0, 0);
break;
default:
return 0;
}
return 1;
}
/*******************************************************************************
$Function: nm_flag_log_off
$Description: Attribut function for menu entries.
It defines whether the network log off function shall
be displayed or not.
$Returns:
$Arguments:
*******************************************************************************/
USHORT nm_flag_log_off (T_MFW_MNU * m, T_MFW_MNU_ATTR * ma, T_MFW_MNU_ITEM * mi)
{
if( FFS_flashData.net_log_status EQ NM_LOG_AVAIL_USED )
return 0;
return MNU_ITEM_HIDE;
}
/*******************************************************************************
$Function: nm_flag_log_on
$Description: Attribut function for menu entries.
It defines whether the network log on function shall
be displayed or not.
$Returns:
$Arguments:
*******************************************************************************/
USHORT nm_flag_log_on (T_MFW_MNU * m, T_MFW_MNU_ATTR * ma, T_MFW_MNU_ITEM * mi)
{
if( FFS_flashData.network_name == NULL )
{
return MNU_ITEM_HIDE;
}
if( FFS_flashData.net_log_status EQ NM_LOG_AVAIL_NOT_USED )
return 0;
return MNU_ITEM_HIDE;
}
/*******************************************************************************
$Function: network_set_mode_auto
$Description: Start a automatic registration
$Returns:
$Arguments:
*******************************************************************************/
int network_set_mode_auto(T_MFW_MNU *m, T_MFW_MNU_ITEM *i)
{
TRACE_FUNCTION ("network_set_mode_auto()");
// Save the automatic mode in PCM for next power on
nm_set_mode(NM_AUTOMATIC);
//Start the registration of full service
nm_registration (NM_AUTOMATIC,0, FALSE);
// remove network log if needed
network_remove_network_log ();
mnuUpdate(m); //xsf add 2002.09.30
// Remove Main Menu
//JVJEmenuExit();
//network_start_animation ();
return 1;
}
/*******************************************************************************
$Function: network_set_mode_man
$Description: Start a manual registration
$Returns:
$Arguments:
*******************************************************************************/
int network_set_mode_man(T_MFW_MNU *m, T_MFW_MNU_ITEM *i)
{
TRACE_FUNCTION ("network_set_mode_man()");
// Save the automatic mode in PCM for next power on
nm_set_mode(NM_MANUAL);
//network_data.aborted = FALSE; xsf remarked it 01.16
// Start the available plmn search
//nm_registration (NM_MANUAL,0, FALSE); xsf remarked it 01.16
//remove network log if needed
network_remove_network_log ();
mnuUpdate(m); //xsf add 2002.09.30
// Remove Main Menu
//nm menuExit();
//network_start_animation (); xsf remarked it 01.16
return 1;
}
/*
+--------------------------------------------------------------------+
| PROJECT : MMI (6366) MODULE : MmiNetwork |
| STATE : code ROUTINE : network_pref_list |
+--------------------------------------------------------------------+
PURPOSE : Show the preferred list
*/
int network_pref_list(T_MFW_MNU *m, T_MFW_MNU_ITEM *mi)
{
//TRACE_FUNCTION ("network_pref_list()");
/*
* Request the maximum number of preferred PLMN records
* on the SIM card
*/
nm_pplmn_mem_req();
// network_start_animation ();
// show on the screen @Please Wait@ instead
// @Search for Network@
return 1;
}
/*******************************************************************************
$Function: network_remove_network_log
$Description: Reset network log if set.
$Returns:
$Arguments:
*******************************************************************************/
static void network_remove_network_log (void)
{
if( FFS_flashData.net_log_status EQ NM_LOG_AVAIL_USED )
{
/*
* Until now the network log has been used.
* Now write to FFS
*/
FFS_flashData.net_log_status = NM_LOG_AVAIL_NOT_USED;
flash_write();
}
}
/*******************************************************************************
$Function: network_log_off
$Description: Removes a network log and returns to automatic registration.
$Returns:
$Arguments:
*******************************************************************************/
int network_log_off(T_MFW_MNU *m, T_MFW_MNU_ITEM *i)
{
TRACE_FUNCTION ("network_log_off()");
/*
* Same behaviour as automatic registration
*/
network_set_mode_auto (m,i);
/*
* Remove Main Menu
*/
//JVJE menuExit();
network_start_animation ();
return 1;
}
/*******************************************************************************
$Function: network_log_on
$Description: Sets a network log.
$Returns:
$Arguments:
*******************************************************************************/
int network_log_on(T_MFW_MNU *m, T_MFW_MNU_ITEM *i)
{
TRACE_FUNCTION ("network_log_on()");
if( FFS_flashData.net_log_status EQ NM_LOG_AVAIL_NOT_USED OR
FFS_flashData.net_log_status EQ NM_LOG_AVAIL_USED )
{
/*
* Until now the network log has been not used.
* Now set the PCM.
*/
FFS_flashData.net_log_status = NM_LOG_AVAIL_USED;
memcpy (FFS_flashData.plmn_name, network_data.plmn_name, 20);
memcpy (FFS_flashData.network_name, network_data.network_name, 6);
flash_write();
/*
* Save the manual mode in PCM for next power on
*/
nm_set_mode(NM_MANUAL);
/*
* Start the registration of the logged network
*/
nm_select_plmn (network_data.network_name);
}
/*
* Remove Main Menu
*/
//JVJE menuExit();
network_start_animation ();
return 1;
}
/*******************************************************************************
$Function: network_start_full_service
$Description: Starts a full service registration.
a) manual selection
b) automatic selection
c) network log selection
$Returns:
$Arguments:
*******************************************************************************/
void network_start_full_service(void)
{
TRACE_FUNCTION ("network_start_full_service()");
network_data.status = NETWORK_SEARCH_NETWORK;
if( FFS_flashData.plmn_name == NULL ) //if no network data
{
/*
* Start normal Registration
*/
#if defined (WIN32_FORREST)
EXTERN UBYTE mmi_reg_mode;
if( mmi_reg_mode EQ 0 )
nm_registration (NM_AUTOMATIC,0, 0);
else
nm_registration (NM_MANUAL,0, 0);
#else
if( nm_get_mode() == NM_MANUAL ) //condat 1119
SEND_EVENT (idle_get_window(), NETWORK_SEARCH_NETWORK, 0, 0);
nm_registration (nm_get_mode (),0, 0);
#endif
}
else
{
switch( FFS_flashData.net_log_status )
{
case NM_LOG_AVAIL_USED:
memcpy (network_data.plmn_name, FFS_flashData.plmn_name, 20);
memcpy (network_data.network_name, FFS_flashData.network_name, 6);
nm_select_plmn (network_data.network_name);
break;
default:
TRACE_EVENT("XSF:SECON D default");
if( nm_get_mode() == NM_MANUAL ) //condat 1119
{
TRACE_EVENT("XSF: SECON D NM_MANUAL");
//SEND_EVENT (idle_get_window(), NETWORK_SEARCH_NETWORK, 0, 0);
network_data.aborted = FALSE;
//nm_registration (NM_MANUAL,0, 0);
nm_avail_plmn_list();
network_start_animation ();
}
else
nm_registration (NM_AUTOMATIC,0, 0);
//nm_registration (nm_get_mode (),0, 0);
break;
}
}
}
/*******************************************************************************
$Function: network_get_name
$Description: Returns the textual and numeric representation of the
network name.
$Returns:
$Arguments:
*******************************************************************************/
void network_get_name(T_CURRENT_NETWORK * nm)
{
TRACE_FUNCTION ("network_get_name()");
if( CphsPresent() )//if CPHS supported
{
T_MFW_CPHS_OP_NAME* operator_name;
/*SPR 1815, pass network data to CPHS function*/
operator_name = CphsRequestOperatorName(&network_data);
if( operator_name->longName.data[0] != NULL )//if name not blank
{
memcpy(nm->plmn_name, operator_name->longName.data, SIZE_PLMN_NAME);
TRACE_EVENT("Reading PLMN from SIM");
}
else
memcpy (nm->plmn_name, network_data.plmn_name, SIZE_PLMN_NAME);
if( operator_name->shortName.data[0] != NULL )//if name not blank
{
memcpy(nm->network_name, operator_name->shortName.data, SIZE_NETWORK_NAME);
}
else
memcpy (nm->network_name, network_data.network_name, SIZE_NETWORK_NAME);
}
else
{
memcpy (nm->plmn_name, network_data.plmn_name, SIZE_PLMN_NAME);
memcpy (nm->network_name, network_data.network_name, SIZE_NETWORK_NAME);
}
nm->roaming_indicator = network_data.roaming_indicator;
}
/*******************************************************************************
$Function: network_log_enabled
$Description: Checks whether a network log is active or not.
$Returns:
$Arguments:
*******************************************************************************/
static UBYTE network_log_enabled (void)
{
TRACE_FUNCTION ("network_log_enabled()");
if( FFS_flashData.net_log_status EQ NM_LOG_AVAIL_USED )
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?