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

📄 mminetwork.c

📁 GSM手机设计软件代码
💻 C
📖 第 1 页 / 共 5 页
字号:
/*******************************************************************************

					CONDAT (UK)

********************************************************************************                                                                              

 This software product is the property of Condat (UK) Ltd and may not be
 disclosed to any third party without the express permission of the owner.                                 
                                                                              
********************************************************************************

 $Project name:	Basic MMI                                                      
 $Project code:	BMI (6349)                                                           
 $Module:		Network
 $File:		    MmiNetwork.c
 $Revision:		1.0                                                       
                                                                              
 $Author:		Condat(UK)                                                         
 $Date:		    22/02/01                                                      
                                                                               
********************************************************************************
                                                                              
 Description:

  

********************************************************************************

 $History:
 
	25/10/00			Original Condat(UK) BMI version.	
	   
 $End

*******************************************************************************/


/*******************************************************************************
                                                                              
                                Include Files
                                                                              
*******************************************************************************/

#define ENTITY_MFW

/* includes */
#include <string.h>
#include <stdio.h>
#include <stdlib.h>

#if defined (NEW_FRAME)

#include "typedefs.h"
#include "vsi.h"
#include "pei.h"
#include "custom.h"
#include "gsm.h"

#else

#include "stddefs.h"
#include "custom.h"
#include "gsm.h"
#include "vsi.h"

#endif
#include "mfw_sys.h"

#include "p_sim.h"

#include "mfw_mfw.h"
#include "mfw_win.h"
#include "mfw_kbd.h"
/* SPR#1428 - SH - New Editor changes */
#ifndef NEW_EDITOR
#include "mfw_edt.h"
#endif
#include "mfw_lng.h"
#include "mfw_icn.h"
#include "mfw_mnu.h"
#include "mfw_tim.h"
#include "mfw_sim.h"
#include "mfw_nm.h"
#include "mfw_cm.h"
#include "mfw_sat.h"
#include "mfw_phb.h"
#include "mfw_sms.h"


#include "dspl.h"

#include "ksd.h"
#include "psa.h"


#include "MmiDummy.h"
#include "MmiMmi.h"
#include "MmiMain.h"
#include "MmiStart.h"
#include "MmiPins.h"

#include "MmiDialogs.h"
#include "MmiLists.h"
/* SPR#1428 - SH - New Editor changes */
#ifdef NEW_EDITOR
#include "ATBCommon.h"
#include "ATBDisplay.h"
#include "ATBEditor.h"
#include "AUIEditor.h"
#else
#include "MmiEditor.h"
#endif

#include "MmiMenu.h"
#include "MmiIdle.h"
#include "MmiCall.h"
#include "MmiBookController.h"
#include "MmiNetwork.h"
#include "MmiSoftKeys.h"
#include "MmiSounds.h"
#include "MmiPcm.h"
#include "mfw_ffs.h"
#include "MmiCPHS.h"

#ifdef MMI_HOMEZONE_ENABLED
#include "MmiHomezone.h"
#endif

#include "MmiNetwork.h"

#include "cus_aci.h"
#include "p_sim.h"
#include "pcm.h"

#include "mmiColours.h"

/*
 * Data for top window
 */
typedef struct
{
  T_MMI_CONTROL    mmi_control;
  T_MFW_HND        network_win;        /* MFW win handler      */
  T_MFW_HND        nm_handle;          /* MFW network handler  */
  UBYTE			   aborted;
  UBYTE			   keep_plmn_list;
  T_MFW_NETWORK_STRUCT  *pplmn;              /* pref. PLMN list */
  T_MFW_PPLMN_MEM  pplmn_mem;
  UBYTE            plmn_name[SIZE_PLMN_NAME];      /* textual network name */
  UBYTE            network_name[SIZE_NETWORK_NAME];    /* numeric network name */
  USHORT           status;             /* current status       */
  UBYTE            roaming_indicator;  /* Roaming Indicator    */
  ListMenuData   * network_list;       /* PLMN available List  */
  UBYTE            network_list_status;/* Network List Status */
  UBYTE            network_search_name[MAX_PLMN][6]; /* numeric network name */
  T_MFW_HND        network_search_win;
  UBYTE			    Listposition;
} T_network;

T_network network_data;

typedef struct
{
    T_MMI_CONTROL    mmi_control;
    T_MFW_HND        win;
    SHORT            id;
    T_MFW_HND        parent;
    T_MFW_HND        kbd;
    T_MFW_HND        kbd_long;
    T_MFW_HND        menu;
    T_MFW_HND        dialog_win;
	ListMenuData     *network_list;       
	T_MFW_NETWORK_STRUCT  *pplmn; /* available List in the MOBILE */
    CHAR 			   buffer[6];
#ifdef NEW_EDITOR
	T_AUI_EDITOR_DATA	editor_info;	/* SPR#1428 - SH - New Editor data */
#else
	T_EDITOR_DATA     editor_info; /* storage for editor attributes */ 
#endif
} T_network_OPT;


typedef enum
{
    E_INIT,
    E_BACK,
    E_RETURN,
    E_ABORT,
    E_EXIT
} e_lists_events;




/*
 * Local prototypes
 */
static int            network_win_cb                 (T_MFW_EVENT event, T_MFW_WIN * win);
static int            network_nm_cb                  (T_MFW_EVENT event, T_MFW_HND para);
static void           network_remove_network_log     (void);
static UBYTE          network_log_enabled            (void);
static void           network_list_cb                (T_MFW_HND win, ListMenuData * ListData);
static void           network_pref_list_cb           (T_MFW_HND win, ListMenuData * ListData);
static ListMenuData * network_create_list            (T_network * data, T_MFW_PLMN_LIST * plmn_list);
static ListMenuData * network_create_pref_list       (T_network * data);
static ListMenuData * network_create_mobile_list     (T_network_OPT * data);
static void 		network_start_animation_plmn_selection	(int plmn_value);
static void           network_start_animation        (void);
static void           network_stop_animation         (void);
static void           network_selected				         (void);
static void           network_forbidden_plmn         (void);
static void           network_no_plmns               (void);
       void           network_animation_cb           (T_MFW_HND win, UBYTE identifier, UBYTE reason);
     T_MFW_HND      network_MNU_start(T_MFW_HND parent_window, MfwMnuAttr *menuAttr);
static T_MFW_HND      network_MNU_create(MfwHnd parent_window);
static void           network_MNU_destroy(MfwHnd own_window);
     void           network_MNU_exec_cb (T_MFW_HND win, USHORT event, SHORT value, void * parameter);
static int            network_MNU_mnu_cb (MfwEvt e, MfwMnu *m);
static int            network_MNU_win_cb (MfwEvt e, MfwWin *w);
static int            network_MNU_kbd_cb (MfwEvt e, MfwKbd *k);
static int		   network_request_plnm_list (MfwMnu* m, MfwMnuItem* i);
void                network_delete_pref_plnm (T_MFW_HND win , USHORT identifier, UBYTE reason);
void                network_info_screen (T_MFW_HND win, USHORT MessageId);
static int            network_delete(MfwMnu* m, MfwMnuItem* i);
	T_MFW_HND network_EDT_start (MfwMnu* m, MfwMnuItem* i);
static T_MFW_HND network_EDT_create (T_MFW_HND parent);
static void network_EDT_destroy (T_MFW_HND window);
static void network_EDT_exec_cb (T_MFW_HND win, USHORT event, SHORT value, void * parameter);
static void network_EDT_editor_cb (T_MFW_HND win, USHORT Identifier, USHORT event);


/*
 * Local Definitions
 */
#define NETWORK_LIMITED_SERVICE   420
#define NETWORK_NO_NETWORK        421
#define NETWORK_PLMN_LIST         422
#define NETWORK_PREFERRED_LIST    423
#define NETWORK_PPLMN_MEM_LIST    424
/* SPR759 - SH - Cell reselection */
#define NETWORK_CELL_SELECT        425

#define NETWORK_LIST_DISPLAY      430
#define NETWORK_LIST_SELECT_PLMN  432

/*
 * Local Network List Status
 */
#define NETWORK_LIST_DISPLAY_FIRST   1
#define NETWORK_LIST_SELECTED        2
#define NETWORK_LIST_REGISTRATION    3
#define NETWORK_PREF_LIST_SELECTED   4
#define NETWORK_MENU_ITEM            2

//nm 5.3.01 this number will be change
#define MAX_SHOW_OF_PLMN 			99

static MfwMnuItem network_OPTItems [] =
{
    {0,0,0,(char *)TxtSelectFromList,    0,  (MenuFunc)network_request_plnm_list, item_flag_none},
    {0,0,0,(char *)TxtEnterNetworkCode, 0,  (MenuFunc)network_EDT_start,   item_flag_none},
    {0,0,0,(char *)TxtDelete,           0,  (MenuFunc)network_delete,          item_flag_none}
};

static MfwMnuAttr network_OPTAttrib =
{
    &network_menuArea,
    MNU_LEFT | MNU_LIST | MNU_CUR_LINE, /* centered page menu       */
    -1,                                 /* use default font         */
    network_OPTItems,                      /* with these items         */
    sizeof(network_OPTItems)/sizeof(MfwMnuItem), /* number of items     */
	COLOUR_LIST_NETWORK, TxtNull, NULL, MNUATTRSPARE


};



static MfwMnuAttr network_menuAttrib =
{
    &network_menuArea,
    MNU_LEFT | MNU_LIST | MNU_CUR_LINE, /* centered page menu       */
    -1,                                 /* use default font         */
    NULL,                               /* with these items         */
    0,                                   /* number of items     */
	COLOUR_LIST_NETWORK, TxtNull, NULL, MNUATTRSPARE

};


/*******************************************************************************

 $Function:    	networkInit

 $Description:	

 $Returns:		

 $Arguments:	
 
*******************************************************************************/
T_MFW_HND networkInit (T_MFW_HND parent_window)
{
  return (network_create (parent_window));
}


/*******************************************************************************

 $Function:    	networkExit

 $Description:	exit network handling (Backward Compatibility interface)

 $Returns:		

 $Arguments:	
 *********************************************************************/


void networkExit (void)
{
  network_destroy (network_data.network_win);
}

/*********************************************************************
 *
 * Network Dialog
 *
 * Window - Structure
 *
 * network    -->  network_list
 *            -->  network_search_animation
 *
 *********************************************************************/

/*******************************************************************************

 $Function:    	network_create

 $Description:	create network top window

 $Returns:		

 $Arguments:	
 
*******************************************************************************/
T_MFW_HND network_create (T_MFW_HND parent_window)
{
  T_network * data = &network_data;
  T_MFW_WIN * win;

  TRACE_FUNCTION ("network_create()");

  data->network_win = win_create (parent_window, 0, 0, (T_MFW_CB)network_win_cb);

  if (data->network_win EQ 0)
    return 0;

  /*
   * Create window handler
   */
  data->mmi_control.dialog = (T_DIALOG_FUNC)network;
  data->mmi_control.data   = data;
  win                      = ((T_MFW_HDR *)data->network_win)->data;
  win->user                = (void *) data;

  /*
   * Initialise MFW
   */
  nm_init ();

  /*
   * Create any other handler
   */
    data->nm_handle = nm_create (data->network_win, E_NM_ALL_SERVICES, (T_MFW_CB)network_nm_cb);

  memset (data->plmn_name, 0, SIZE_PLMN_NAME);
  memset (data->network_name, 0, SIZE_NETWORK_NAME);

  data->aborted = FALSE;
  data->keep_plmn_list = FALSE;

  data->status   = NETWORK_NO_SERVICE;
  data->network_list = NULL;
  data->network_search_win = 0;
  data->Listposition = 0;



  winShow(data->network_win);
  /*
   * return window handle
   */
  return data->network_win;
}

/*******************************************************************************

 $Function:    	network_destroy

 $Description:	destroy network top window

 $Returns:		

 $Arguments:	
 
*******************************************************************************/
void network_destroy (T_MFW_HND own_window)
{
  T_MFW_WIN * win;
  T_network * data;

  TRACE_FUNCTION ("network_destroy()");

  if (own_window)
  {
    win  = ((T_MFW_HDR *)own_window)->data;
    data = (T_network *)win->user;

    if (data)
    {
      /*
       * Exit NM and delete NM handler
       */
      nm_exit ();
      nm_delete (data->nm_handle);

      /*
       * Delete WIN handler
       */
      win_delete (data->network_win);
    }
  }
}

/*******************************************************************************

 $Function:    	network

 $Description:	network top window dialog function

 $Returns:		

 $Arguments:	
 
*******************************************************************************/
void network (T_MFW_HND win, USHORT event, SHORT value, void * parameter)
{
  T_MFW_WIN         * win_data = ((T_MFW_HDR *) win)->data;
  T_network         * data     = (T_network *)win_data->user;
  T_MFW_NETWORK_STRUCT  * plmn_ident;

  TRACE_FUNCTION(">>> network()");


  switch (event)
  {
    case NETWORK_NO_SERVICE:
    case NETWORK_LIMITED_SERVICE:
      TRACE_EVENT ("NETWORK NO/LIMITED SERVICE");
      /*
       * Set Status
       */
      data->status = NETWORK_NO_SERVICE;

      /*
       * Check if network log is enabled
       */
      if (network_log_enabled ())
      {
        SEND_EVENT (idle_get_window(), NETWORK_NO_PLMN_XXX_AVAIL, 0, 0);
      }
      else
      {
        SEND_EVENT (idle_get_window(), NETWORK_NO_SERVICE, 0, 0);
        if (data->network_list NEQ NULL)

⌨️ 快捷键说明

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