📄 mminetwork.c
字号:
*/
network_remove_network_log ();
/*
* 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);
/*
* Start the available plmn search
*/
nm_avail_plmn_list();
/*
* remove network log if needed
*/
network_remove_network_log ();
/*
* Remove Main Menu
*/
//nm menuExit();
network_start_animation ();
network_data.aborted = FALSE;
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();
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);
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, SIZE_PLMN_NAME);
memcpy (FFS_flashData.network_name, network_data.network_name, SIZE_NETWORK_NAME);
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);
}
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)
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)
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, SIZE_PLMN_NAME);
memcpy (network_data.network_name, FFS_flashData.network_name, SIZE_NETWORK_NAME);
nm_select_plmn (network_data.network_name);
break;
default:
if (nm_get_mode() == NM_MANUAL)
SEND_EVENT (idle_get_window(), NETWORK_SEARCH_NETWORK, 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)
{
#ifdef NO_ASCIIZ
T_MFW_SP_NAME service_provider_name;
#else
U8 service_provider_name[LONG_NAME];
#endif
TRACE_FUNCTION ("network_get_name()");
if (CphsPresent() )//if CPHS supported
{ T_MFW_CPHS_OP_NAME* operator_name;
operator_name = CphsRequestOperatorName(); //get operator name
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);
}
/* Marcus: Issue 1618: 24/01/2003: Start */
/* Obtain the service provider name (from the SIM EF-SPN file) if any */
nm->service_provider_name[0] = '\0';
#ifdef NO_ASCIIZ
nm_get_spn(&service_provider_name);
if ((service_provider_name.len != 0) &&
(service_provider_name.data[0] != '\0'))
{
if (service_provider_name.len > sizeof(nm->service_provider_name)-1)
service_provider_name.len = sizeof(nm->service_provider_name)-1;
memcpy(nm->service_provider_name,
service_provider_name.data,
service_provider_name.len);
nm->service_provider_name[service_provider_name.len] = '\0';
}
#else
nm_get_spn(service_provider_name);
if (strlen(service_provider_name))
{
strncpy(nm->service_provider_name,
service_provider_name,
sizeof(nm->service_provider_name)-1);
nm->service_provider_name[sizeof(nm->service_provider_name)-1] = '\0';
}
#endif
/* Marcus: Issue 1618: 24/01/2003: End */
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)
return TRUE;
return FALSE;
}
/*******************************************************************************
$Function: ListMenuData
$Description: Creates a list of available PLMNs for selection.
$Returns:
$Arguments:
*******************************************************************************/
static ListMenuData * network_create_list (T_network * data, T_MFW_PLMN_LIST * plmn_list)
{
UBYTE i;
ListMenuData *list_menu_data = (ListMenuData *)ALLOC_MEMORY (sizeof (ListMenuData));
if (list_menu_data EQ 0)
return NULL;
list_menu_data->List = (T_MFW_MNU_ITEM *) ALLOC_MEMORY (MAX_PLMN * sizeof (T_MFW_MNU_ITEM));
if (list_menu_data->List EQ 0)
return NULL;
/*
* Fill Menu List
*/
for (i=0;i<MAX_PLMN_ID;i++)
{
mnuInitDataItem(&list_menu_data->List[i]);
if (i<plmn_list->count)
{
/*
* set network name
*/
#ifdef NO_ASCIIZ
if (plmn_list->plmn[i].network_long.len NEQ 0)
list_menu_data->List[i].str = (char *)plmn_list->plmn[i].network_long.data;
#else
if (strlen((char *)plmn_list->plmn[i].network_long) NEQ 0)
list_menu_data->List[i].str = (char *)plmn_list->plmn[i].network_long;
#endif
else
list_menu_data->List[i].str = (char *)plmn_list->plmn[i].network_numeric;
/*
* Store numeric network name in any case
*/
strncpy ((char *)data->network_search_name[i], (char *)plmn_list->plmn[i].network_numeric, 6);
/*
* NOTE : add forbidden indicator
*/
list_menu_data->List[i].flagFunc = item_flag_none;
}
else
{
}
}
/*
* Fill common parameter for list handling
*/
list_menu_data->ListLength = plmn_list->count;
list_menu_data->ListPosition = 1;
list_menu_data->CursorPosition = 1;
list_menu_data->SnapshotSize = plmn_list->count;
list_menu_data->Font = 0;
list_menu_data->LeftSoftKey = TxtSoftSelect;
list_menu_data->RightSoftKey = TxtSoftBack;
list_menu_data->KeyEvents = KEY_CLEAR | KEY_RIGHT | KEY_LEFT | KEY_MNUUP | KEY_MNUDOWN;
list_menu_data->Reason = 0;
list_menu_data->Strings = TRUE;
list_menu_data->Attr = &network_menuAttrib;
list_menu_data->autoDestroy = TRUE;
list_menu_data->listCol = COLOUR_LIST_XX;
return list_menu_data;
}
/*******************************************************************************
$Function: network_create_pref_list
$Description: Creates a list of preferred PLMNs for selection.
$Returns:
$Arguments:
*******************************************************************************/
static ListMenuData * network_create_pref_list (T_network * data)
{
UBYTE i;
ListMenuData *list_menu_data = (ListMenuData *)ALLOC_MEMORY (sizeof (ListMenuData));
if (list_menu_data EQ 0)
{
return NULL;
}
list_menu_data->List = (T_MFW_MNU_ITEM *) ALLOC_MEMORY ((data->pplmn_mem.maxRcd) * sizeof (T_MFW_MNU_ITEM));
if (list_menu_data->List EQ 0)
{
return NULL;
}
TRACE_EVENT ("network_create_pref_list ()");
/*
* Fill Menu List
*/
for (i=0; i < (network_data.pplmn_mem.maxRcd); i++)
{
mnuInitDataItem(&list_menu_data->List[i]);
/*
* set network name
*/
#ifdef NO_ASCIIZ
if (network_data.pplmn[i].network_long.len NEQ 0 )
{
list_menu_data->List[i].str = (char *)network_data.pplmn[i].network_long.data;
}
#else
if (strlen((char *)network_data.pplmn[i].network_long) NEQ 0 )
{
list_menu_data->List[i].str = (char *)network_data.pplmn[i].network_long;
}
#endif
else
{
list_menu_data->List[i].str = GET_TEXT(TxtEmpty);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -