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 + -
显示快捷键?