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

📄 mmiservices.c

📁 是一个手机功能的模拟程序
💻 C
📖 第 1 页 / 共 5 页
字号:
                FREE_MEMORY ((void *)data->mfw_ss_cf, sizeof (T_ss_feature_cf));  //hu binhao 2003-2-19
                data->mfw_ss_cf = NULL;    

                //step 4 save number to usually used number list
                /***********************************WUFEI APPEND*********************************************/
                if( strlen(ss_data.edt_buf_number)!=0 )
                {
                    n=usednumber_GetListCount(RES_USEDNUMBER);
                    i=0;
                    avail=1;
                    while( avail==1 AND i<n )
                    {
                        if( strstr((char*)FlashDCTbData.UsedNumberTable[i],ss_data.edt_buf_number)!=NULL )
                            avail=0;
                        i++;
                    }
                    if( avail==1 )
                    {
                        if( FlashDCTbData.UsedTbIdx==10 )
                        {
                            FlashDCTbData.UsedTbIdx=0;
                        }
                        if( FlashDCTbData.UsedTbIdx<10 )
                        {
                            strcpy((char*)FlashDCTbData.UsedNumberTable[FlashDCTbData.UsedTbIdx],ss_data.edt_buf_number);
                            FlashDCTbData.UsedTbIdx++;
                            flash_DCTbwrite();
                        }

                    }
                    memset(ss_data.edt_buf_number,'\0',PHB_MAX_LEN);
                }
                /*************************************************************************************/
            }
            else
            {
                switch( srv_check_CF_telephony_status ( &ss_cnf->cf_cnf ) )
                {
                case  CF_ACTIVE_STATUS:
                    iconsSetState(iconIdCallFor);
                    break;
                case CF_INACTIVE_STATUS:
                    iconsDeleteState(iconIdCallFor);
                    break;
                default:  // CF_UNKNOWN_STATUS
                    //iconsDeleteState(iconIdCallFor); //SPR#984 - DS - Commented out. Leave state unchanged as default.
                    break;
                }
                showCFStatus(win, data);
                /***********************************WUFEI APPEND*********************************************/
                if( strlen(ss_data.edt_buf_number)!=0 )
                {
                    n=usednumber_GetListCount(RES_USEDNUMBER);
                    i=0;
                    avail=1;
                    while( avail==1 AND i<n )
                    {
                        if( strstr((char*)FlashDCTbData.UsedNumberTable[i],ss_data.edt_buf_number)!=NULL )
                            avail=0;
                        i++;
                    }
                    if( avail==1 )
                    {
                        if( FlashDCTbData.UsedTbIdx==10 )
                        {
                            FlashDCTbData.UsedTbIdx=0;
                        }
                        if( FlashDCTbData.UsedTbIdx<10 )
                        {
                            strcpy((char*)FlashDCTbData.UsedNumberTable[FlashDCTbData.UsedTbIdx],ss_data.edt_buf_number);
                            FlashDCTbData.UsedTbIdx++;
                            flash_DCTbwrite();  
                        }
                    }
                    memset(ss_data.edt_buf_number,'\0',PHB_MAX_LEN);
                }
                /*************************************************************************************/
            } 
        }
        else
        {
            switch( ss_cnf->cf_cnf.ss_code )
            {
            case SS_CODES_UNKNOWN:
                //break;/*2004/4/30, wangyan modify*/
            case SS_CF_CFU:
            case SS_CF_ALL:
            case SS_CLIR:
            case SS_CF_ALL_COND:
            case SS_CF_CFNRy:
            case SS_CF_CFNR:
            case SS_CF_CFB:       
                switch( ss_cnf->cf_cnf.ss_error )
                {
                case MFW_SS_NO_ERROR:
                    //  HU begin
                    //SPR#984 - DS - Only update icons if activating / cancelling.

                    //	MmiTrace("mmiservices.c MFW_SS_NO_ERROR hubh11");

                    if( CFAction==CFDeactivate )
                    {
                        //step1 if CFDeactivate,then change CFFlag according CFType
                        switch( CFType )
                        {
                        case CFNoReach:
                            FlashDCTbData.CFFlag &=ReSetCFNRc;
                            break;
                        case CFBusy:
                            FlashDCTbData.CFFlag &=ReSetCFB;
                            break;
                        case CFNoReply:
                            FlashDCTbData.CFFlag &=ReSetCFNRy;
                            break;
                        case CFUnconditional:
                            FlashDCTbData.CFFlag &=ReSetCFU;
                            break;
                        case CFAllCalls:
                            FlashDCTbData.CFFlag =0;
                            break;
                        }
                        //if CFFlag equal 0, iconsDeleteState(iconIdCallFor)
                        if( !(FlashDCTbData.CFFlag&GetFourbits) )
                        {

                            if( ss_cnf->cf_cnf.ss_category != SS_INTERROGATION )
                            {
                                switch( srv_check_CF_telephony_status ( &ss_cnf->cf_cnf ) )
                                {
                                case  CF_ACTIVE_STATUS:

                                    iconsSetState(iconIdCallFor);
                                    // MmiTrace("ser MFW_SS_NO_ERROR  hubh11");

                                    break;
                                case CF_INACTIVE_STATUS:
                                    iconsDeleteState(iconIdCallFor);
                                    break;
                                default:  // CF_UNKNOWN_STATUS
                                    //iconsDeleteState(iconIdCallFor); //SPR#984 - DS - Commented out. Leave state unchanged as default.
                                    break;
                                }
                            }
                        }
                        flash_DCTbwrite();  //wriite to flash hu binhao 2003-2-11
                    }
                    /*
                     * now store the MFW data under the SS window
                     */
                    data->mfw_ss_cf = (T_ss_feature_cf *)ALLOC_MEMORY (sizeof (T_ss_feature_cf));

                    /*
                     * copy all interesting feature entries
                     */
                    data->max_feature = srv_copy_feature_list_cf (data->mfw_ss_cf, &ss_cnf->cf_cnf);
                    data->current_feature = /*CFService*/0;

                    if( data->max_feature EQ 0 )
                    {
                        srv_empty_list_result (ss_cnf->cf_cnf.ss_category);
                        FREE_MEMORY ((void *)data->mfw_ss_cf, sizeof (T_ss_feature_cf));
                        data->mfw_ss_cf = NULL;

                        //consider the change sim card sitation ,for delet the call forward icon in idile interface.
                        // begin hu binhao 2003-4-30
                        {
                            unsigned char Tempflag;
                            Tempflag=0;
                            switch( CFType )
                            {
                            //step1 1:to adjust the bit in FlashDCTbData.CFFlag after check state ,according CFType
                            case CFNoReach:
                                if( (FlashDCTbData.CFFlag&SetCFNRc)!=0 )
                                {
                                    FlashDCTbData.CFFlag &=ReSetCFNRc;
                                    Tempflag=1;
                                }
                                break;
                            case CFBusy:
                                if( (FlashDCTbData.CFFlag&SetCFB)!=0 )
                                {
                                    FlashDCTbData.CFFlag &=ReSetCFB;
                                    Tempflag=1;
                                }
                                break;
                            case CFNoReply:
                                if( (FlashDCTbData.CFFlag&SetCFNRy)!=0 )
                                {

                                    FlashDCTbData.CFFlag &=ReSetCFNRy;
                                    Tempflag=1;
                                }
                                break;
                            case CFUnconditional:
                                if( (FlashDCTbData.CFFlag&SetCFU)!=0 )
                                {
                                    FlashDCTbData.CFFlag &=ReSetCFU;
                                    Tempflag=1;
                                }
                                break;
                            }
                            //step 2: if there are some change,we must write the DCTB flash file
                            if( Tempflag!=0 )
                            {
                                flash_DCTbwrite();  
                            }
                            //step 3: if it has not any type of call forward ,we delete the icon in idile interface
                            if( !(FlashDCTbData.CFFlag&GetFourbits) )
                            {
                                iconsDeleteState(iconIdCallFor);  
                            }
                        }
                        //2003-4-30  hu binhao end
                    }
                    else
                    {
                        /*
                         * now display status
                         */
                        showCFStatus(win, data);
                        FREE_MEMORY ((void *)data->mfw_ss_cf, sizeof (T_ss_feature_cf));  //hu binhao 2003-2-19
                        data->mfw_ss_cf = NULL;                                       //hu binhao 2003-2-19
                    }
                    break;

                default:
                    // TRACE_FUNCTION("ERROR in CFU,INTERROGATION");
                    //showError(win, ss_cnf->cf_cnf.ss_error);
                    services_info_screen(win,TxtFailed);//WUFEI Modify
                    break;
                }
                break;

            default:
                break;
            } /* end switch(ss_cnf->cf_cnf.ss_code) */

        }
        break;


    case E_SS_CW_CNF:
        if( ss_cnf->cw_cnf.ss_error == MFW_SS_NO_ERROR )
        {
            /*
             * now store the MFW data under the SS window
             */
            data->mfw_ss_cw = (T_ss_feature_cw *)ALLOC_MEMORY (sizeof (T_ss_feature_cw));

            /*
             * copy all interesting feature entries
             */
            data->max_feature = srv_copy_feature_list_cw (data->mfw_ss_cw, &ss_cnf->cw_cnf);
            data->current_feature = 0;

            if( data->max_feature EQ 0 )
            {
                //glowing, 2003/11/21, fix the bug that if the SIMcard does not have calling
                // waiting function, it still give the active info.
                if( ss_cnf->cw_cnf.ss_status NEQ 0xFF AND ss_cnf->cw_cnf.ss_status NEQ 0x00 )
                    //if (ss_cnf->cw_cnf.ss_status NEQ 0xFF)
                    srv_display_status (ss_cnf->cw_cnf.ss_status);
                else
                    //srv_empty_list_result (ss_cnf->cw_cnf.ss_category);
                    srv_empty_list_result_new (ss_cnf->cw_cnf.ss_category, event, ss_cnf->cw_cnf.ss_status);  /* Marcus: Issue 1214: 22/10/2002 */

                FREE_MEMORY ((void *)data->mfw_ss_cw, sizeof (T_ss_feature_cw));
                data->mfw_ss_cw = NULL;
            }
            else
            {
                /*
                 * now display status
                 */
                showCWStatus(win, data);
                /*
                if(cwflag)
                  services_info_screen(win,TxtActivated);
                else
                  services_info_screen(win,TxtDeActivated);
                  */
            }
            if( cwflag )
            {
                FlashDCTbData.callwaitflag=1;
                flash_DCTbwrite();
            }
            else
            {
                FlashDCTbData.callwaitflag=0;
                flash_DCTbwrite();
            }   
        }
        else
        {
            //showError(win, ss_cnf->cw_cnf.ss_error);
            services_info_screen(win,TxtFailed);//WUFEI Modify
        }
        break;

    case E_SS_CLI_CNF:
        //TRACE_FUNCTION("  E_SS_CLI_CNF");    //hu hubh marked 11-28

        if( ss_cnf->cli_cnf.ss_error == MFW_SS_NO_ERROR )
        {

            showCLIStatus(win, ss_cnf);
        }
        else
        {
            //showError(win, ss_cnf->cli_cnf.ss_error);
            services_info_screen(win,TxtFailed);//WUFEI Modify
        }
        break;


    case E_SS_CB_CNF:
        switch( ss_cnf->cb_cnf.ss_error )
        {
        case MFW_SS_NO_ERROR:
            /*
             * now store the MFW data under the SS window
             */
            data->mfw_ss_cb = (T_ss_feature_cb *)ALLOC_MEMORY (sizeof (T_ss_feature_cb));

            /*
             * copy all interesting feature entries
             */
            data->max_feature = srv_copy_feature_list_cb (data->mfw_ss_cb, &ss_cnf->cb_cnf);
            data->current_feature = 0;

            if( data->max_feature EQ 0 )
            {
                srv_empty_list_result (ss_cnf->cb_cnf.ss_category);
                FREE_MEMORY ((void *)data->mfw_ss_cb, sizeof (T_ss_feature_cb));
                data->mfw_ss_cb = NULL;
            }
            else
            {
                /*
                 * now display status
                 */
                showCBStatus(win, data);
            }
            break;

        default:
            //showError(win, ss_cnf->cb_cnf.ss_error);
            services_info_screen(win,TxtFailed);//WUFEI Modify
            break;
        }
        break;

    case E_SS_IMEI:   /* present IMEI */
        /* T_MFW_IMEI imei_cnf;*/
        //TRACE_FUNCTION("  E_SS_IMEI");

        switch( ss_cnf->imei_info.error )
        {
        case MFW_SS_NO_ERROR:
            //TRACE_FUNCTION( "Handling IMEI no error" );
            showIMEI2(win, ss_cnf);
            break;

        default:
            //TRACE_FUNCTION("ERROR in IMEI");
            //showError(win, ss_cnf->imei_info.error);
            services_info_screen(win,TxtFailed);//WUFEI MODIFY
            break;
        }
        break;

        /* we must display the ussd info and then edit and send a user ussd */
    case E_SS_USSD_REQ:
        //TRACE_FUNCTION(" E_SS_USSD_REQ");

        switch( ss_cnf->ussd_info.error )
        {
        case MFW_SS_NO_ERROR:
            //TRACE_FUNCTION( "Handling USSD_REQ no error" );
            showUSSDREQ(win, ss_cnf );
            break;

        default:
            //TRACE_FUNCTION("ERROR in USSD REQ");
            //showError(win, ss_cnf->ussd_info.error);
            services_info_screen(win,TxtFailed);//WUFEI Modify
            break;
        }

        break;

        /* just display the ussd info */
    case E_SS_USSD_CNF:
        // TRACE_FUNCTION(" E_SS_USSD_CNF");
        switch( ss_cnf->ussd_info.error )
        {
        case MFW_SS_NO_ERROR:
            //TRACE_FUNCTION( "Handling USSD_CNF no error" );

⌨️ 快捷键说明

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