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

📄 mminetwork.c

📁 GSM手机设计软件代码
💻 C
📖 第 1 页 / 共 5 页
字号:
   */
  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 + -