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

📄 mmiservices.c

📁 是一个手机功能的模拟程序
💻 C
📖 第 1 页 / 共 5 页
字号:
            SEND_EVENT(data->ussd_name_win, DIALOG_DESTROY, 0, 0);
            data->ussd_name_win=0;
        }
        if( data->ussd_num_win )
        {
            SEND_EVENT(data->ussd_num_win, DIALOG_DESTROY, 0, 0);
            data->ussd_num_win=0;
        }
        if( data->input_number_win )
        {
            TRACE_FUNCTION("killing input number win");
            services_input_destroy( data->input_number_win );
            data->input_number_win=0;
        }
    }
}

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

 $Function:    	services_win_cb

 $Description:	

 $Returns:		

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

static int services_win_cb(T_MFW_EVENT e, T_MFW_SS_PARA * para)
{
    /*
     * Top Window has no output
     */
    TRACE_FUNCTION ("services_win_cb()");
    switch( e )
    {
    case MfwWinVisible:
        break;
    default:
        return 0;
    }
    return 1;

}

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

 $Function:    	destroyInfoWindow

 $Description:	

 $Returns:		

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

static void destroyInfoWindow( void)
{
    // TRACE_FUNCTION("destroyInfoWindow");

    /* kill info win if there */
    if( ss_data.info_wait )
    {
        TRACE_EVENT("destroying the wait screen a");
        SEND_EVENT(ss_data.info_wait, DIALOG_DESTROY, 0, 0);
        ss_data.info_wait = 0;
    }
    if( ss_data.input_number_win )
    {
        TRACE_FUNCTION("destroying input window!!!");
        SEND_EVENT(ss_data.input_number_win, SERVICES_INPUT_DESTROY, 0, 0);
        ss_data.input_number_win = 0;
    }

}
/*******************************************************************************

 $Function:    	services_ss_cb

 $Description:	

 $Returns:		

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


static int services_ss_cb(T_MFW_EVENT e, T_MFW_HND para)
{

    TRACE_FUNCTION ("services_ss_cb()");

    {
        char buf[40];
        T_MFW_WIN * win;

        //    sprintf (buf, "event = %d", e);
        //   TRACE_EVENT (buf);
        win = (T_MFW_WIN *) ((T_MFW_HDR *)ss_data.win)->data;
        //   sprintf (buf, "win->user = %d", win->user);
        //    TRACE_FUNCTION (buf);
    }

    switch( e )
    {
    case E_SS_RES:
        if( !ss_data.info_wait )
        {
            TRACE_EVENT ("show the wait screen");
            // showWait( ss_data.win ); //WUFEI Disabled it 0710
            showCFanimation( ss_data.win);// animation test 0710 wufei 
        }
        /*
         * ignore the event
         */
        break;

    case E_SS_NOTIFY:
        if( !ss_data.info_win )
            SEND_EVENT(ss_data.win,E_SS_NOTIFY,0, para);

        destroyInfoWindow();
        break;

    case E_SS_CF_CNF:

        if( !ss_data.info_win )
            SEND_EVENT(ss_data.win,E_SS_CF_CNF,0, para);

        destroyInfoWindow();
        break;

    case E_SS_CW_CNF:
        if( !ss_data.info_win )
            SEND_EVENT(ss_data.win,E_SS_CW_CNF,0, para);

        destroyInfoWindow();
        break;

    case E_SS_CLI_CNF:
        if( !ss_data.info_win )
            SEND_EVENT(ss_data.win,E_SS_CLI_CNF,0, para);

        destroyInfoWindow();
        break;

    case E_SS_CB_CNF:
        //    {
        //      char buf[40];
        //      T_MFW_WIN * win;

        //      sprintf (buf, "event = %d", e);
        //      TRACE_FUNCTION (buf);
        //      win = ((T_MFW_HDR *)ss_data.win)->data;
        //      sprintf (buf, "win->user = %d", win->user);
        //      TRACE_FUNCTION (buf);
        //    }

        //    {
        //      char buf[40];
        //      T_MFW_WIN * win;

        //      sprintf (buf, "event = %d", e);
        //      TRACE_FUNCTION (buf);
        //      win = ((T_MFW_HDR *)ss_data.win)->data;
        //      sprintf (buf, "win->user = %d", win->user);
        //      TRACE_FUNCTION (buf);
        //    }
        if( !ss_data.info_win )
            SEND_EVENT(ss_data.win,E_SS_CB_CNF,0, para);

        destroyInfoWindow();
        break;

        /* we must display the ussd info and then edit and send a user ussd */
    case E_SS_USSD_REQ:

        if( !ss_data.info_win )
            SEND_EVENT(ss_data.win,E_SS_USSD_REQ,0, para);

        destroyInfoWindow();        
        break;

        /* just display the ussd info */
    case E_SS_USSD_CNF:

        if( !ss_data.info_win )
            SEND_EVENT(ss_data.win,E_SS_USSD_CNF,0, para);

        destroyInfoWindow();
        break;

    case E_SS_IMEI:

        if( !ss_data.info_win )
            SEND_EVENT(ss_data.win,E_SS_IMEI,0, para);

        destroyInfoWindow();
        break;


    case E_SS_GET_PW:

        if( !ss_data.info_win )
            SEND_EVENT(ss_data.win,E_SS_GET_PW,0, para);

        destroyInfoWindow();
        break;
    default:
        break;
    }

    return 1;  /* consumed */
}


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

 $Function:    	services

 $Description:	

 $Returns:		

 $Arguments:	
 
*******************************************************************************/
//--------------------------wufei modified-------------------------------------------
void services (T_MFW_HND win, USHORT event, SHORT value, void * parameter)
{
    T_MFW_WIN      * win_data = ((T_MFW_HDR *) win)->data;
    T_ss           * data = (T_ss *)win_data->user;

    T_MFW_SS_PARA  * ss_cnf = (T_MFW_SS_PARA *)parameter;
    T_DISPLAY_DATA   display_info;

    unsigned int i = 0;//WUFEI APPEND
    unsigned int avail;//WUFEI APPEND	
    unsigned int n; //WUFEI APPEND

    char line[MAX_LINE];
    //MmiTrace("serviceshbh");

    TRACE_FUNCTION ("services()");

    switch( event )
    {
    

    case ServicesError:
        TRACE_FUNCTION ("ServicesError");
        //showError(win, ss_cnf->cb_cnf.ss_error);
        services_info_screen(win,TxtFailed);//WUFEI Modify
        break;

    case ServicesFailed:
        TRACE_FUNCTION ("ServicesFailed");
        showFailed(win);
        break;

    case ServicesOtherNumber:
        TRACE_FUNCTION("ServicesOtherNumber");
        ServicesGetOtherNumber(win);
        break;

    case ServicesUsedNumber:       //WUFEI APPEND
        TRACE_FUNCTION("ServicesUsedNumber");
        ServicesGetUsedNumber();
        break;

    case ServicesCUGSetting:     //WUFEI APPEND
        TRACE_FUNCTION("ServicesCUGSetting");
        ServicesCUGMenu();
        break;

    case ServicesOk:
        TRACE_FUNCTION ("ServicesOk");
        showOk(win);
        break;

    case ServicesUSSDEnter:
        {
            T_EDITOR_DATA   editor_data;

            TRACE_EVENT("ServicesUSSDEnter");


            memset(ss_data.edt_buf_number,'\0',PHB_MAX_LEN);
            editor_data.editor_attr.win.px   = 6;
            editor_data.editor_attr.win.py   = 18;
            editor_data.editor_attr.win.sx   = 80;
            editor_data.editor_attr.win.sy   = 28;
            editor_data.editor_attr.fgColor  = 0xffffff;
            editor_data.editor_attr.font     = 0;
            editor_data.editor_attr.mode    = edtCurBar1;
            editor_data.editor_attr.controls   = 0;
            editor_data.hide                = FALSE;

            editor_data.editor_attr.text    = (char*)ss_data.edt_buf_number;

            editor_data.editor_attr.size    = MAX_USSD_LEN;
            editor_data.LeftSoftKey         = TxtSoftOK;
            editor_data.RightSoftKey        = TxtSoftBack;
            editor_data.AlternateLeftSoftKey     = TxtNull;
            editor_data.TextString          = '\0';
            editor_data.TextId              = TxtEntAnw;
            editor_data.Identifier          = ServicesUSSDEnter;
            editor_data.mode                = DIGITS_MODE;
            editor_data.timeout             = FOREVER;
            editor_data.min_enter           = 1;
            editor_data.Callback            = (T_EDIT_CB)services_info_cb;
            editor_data.destroyEditor       = TRUE;


            /* create the dialog handler */
            editor_start(ss_data.win, &editor_data);  /* start the editor */
        }
        break;

    case SERVICES_DO_CALL_VOICE_DIVERT:
        servicesStoreVoiceMailNumber();
        servicesSendCallDivert(0);
        break;
    case ServicesDoCallDivert:
        servicesSendCallDivert(0);
        break;

    case E_SS_RES:
        /*
         * event is ignored
         */
        break;
    case E_SS_NOTIFY:
        //TRACE_FUNCTION(" E_SS_NOTIFY");
        /*zy move 2003-03-12
          we needn't show these information during call
        */
        //        showSSNotify( win, (T_MFW_SS_NOTIFY*) parameter );  /* all short ss-related notfications */
        break;

        /*
         * modified handling for results taking lists in account
         */
    case E_SS_CF_CNF: //wufei modified
        /*
         * check whether we received data what was requested / consistent
         */
        if( CFAction==CFActivate )
        {
            if( CFService==CFVoice )
            {

                //step 1 according whether in CFU state and CFType ,set FlashDCTbData.CFFlag 
                if( !(FlashDCTbData.CFFlag&SetCFU) )   //in CFU state in whick we can not active the other 3 state
                {

                    switch( CFType )
                    {
                    case CFNoReach:
                        FlashDCTbData.CFFlag |=SetCFNRc;
                        break;
                    case CFBusy:
                        FlashDCTbData.CFFlag |=SetCFB;
                        break;
                    case CFNoReply:
                        FlashDCTbData.CFFlag |=SetCFNRy;
                        break;
                    case CFUnconditional:
                        FlashDCTbData.CFFlag |=SetCFU;
                        break;
                    }

                }
                flash_DCTbwrite();  

                //if in CFU state ,we do not change bits in FlashDCTbData.CFFlag,because it can not active CFNoReach CFBusy CFNoReply when in CFUnconditional

                //step 2 show iconIdCallFor
                switch( srv_check_CF_telephony_status ( &ss_cnf->cf_cnf ) )
                {
                case  CF_ACTIVE_STATUS:

                    iconsSetState(iconIdCallFor);
                    showCFStatus(win, data);  //hu binhao 2003-2-21 

                    break;
                case CF_INACTIVE_STATUS:
                    iconsDeleteState(iconIdCallFor);
                    break;
                default:  // CF_UNKNOWN_STATUS
                    //iconsDeleteState(iconIdCallFor); //SPR#984 - DS - Commented out. Leave state unchanged as default.
                    services_info_screen(win,TxtFailed);//hu binhao 2003-2
                    break;
                }
                //step 3 show dialog 
                // showCFStatus(win, data);

⌨️ 快捷键说明

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