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

📄 mminetwork.c

📁 是一个手机功能的模拟程序
💻 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"
#include "mfw_edt.h"
#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"

#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 "MmiEditor.h"
#include "mfw_ffs.h"
#include "MmiCPHS.h"
#include "Mmiicons.h"
#ifdef MMI_HOMEZONE_ENABLED
    #include "MmiHomezone.h"
#endif

#include "MmiNetwork.h"

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

//#include "mmiicnother.h"

//#define TDTRACE 1
#include "mmiutilapi.h"

/*SPR 1815, moved definition of T_network data struct to MmiNetwork.c*/

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];   
    T_EDITOR_DATA     editor_info; /* storage for editor attributes */    
} 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);
extern USHORT  rr_get_bcch_channel(void); ////xsf add 2002.08.05 3 lines
extern USHORT * rr_get_found_channel();

/*
 * Local Definitions
 */
/* glowing: comment the following define and add it in the mminetwork.h */
//#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
//gb DEAD CODE #define NETWORK_LIST_INIT         431
#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 char buf[200];

//xsf add 2002.07.23 5 lines
static T_MFW_NETWORK_STRUCT homeplmn;
static T_MFW_PLMN_LIST availablePlmnList;
static int availablePlmnIndex;
SHORT               Band[MAX_PLMN]; //Get the band indicate whenever we get the network list event
extern USHORT *rr_get_found_channels(void);

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 =
{
    0,
    &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     */
};



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


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

 $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, 20);
    memset (data->network_name, 0, 6);

    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;

⌨️ 快捷键说明

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