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

📄 mmisimtoolkit.c

📁 是一个手机功能的模拟程序
💻 C
📖 第 1 页 / 共 5 页
字号:
        MfwSatRefresh |     /* refresh SIM fields           */
		MfwSatDataRefreshed | /*data Refreshed */
		MfwSatTextOut|         /* display string           */
        MfwSatGetKey|          /* get user keystroke       */
        MfwSatGetString|       /* get user input           */
        MfwSatPlayTone|        /* play audio tone          */
        MfwSatSetupMenu|       /* setup toolkit menu       */
        MfwSatSelectItem|      /* select menu item         */
        MfwSatSendSMS|         /* send short message       */
        MfwSatSendSS|          /* send service command     */
        MfwSatCall|            /* setup a call             */
		MfwSatSetEvents|      /* setup event lists 		*/        
		MfwSatCcRes|           /* call control result      */
        MfwSatCcAlert           /* call control alerting    */
#if defined(WAP)
        |MfwSatLaunchBrowser
#else
#endif

		/* Robert.Chen added, 2004-02-28, imported from TI RITA release TCS2112 */
		|MfwSatOpenChannel|
		 MfwSatCloseChannel|
		 MfwSatSendData|
		 MfwSatReceiveData|
		 MfwSatErrBusy /* SAT error handling */
		/* add end */
       ,
        (T_MFW_CB)sim_toolkit_sat_cb,  // event callback
        data->sat_command);            // control block for MFW

    /*
     * initialize global variables
     */
    data->sat_setup_menu_command = NULL;
    data->sat_command = NULL;
    data->info_win = NULL;
    data->call_setup_parameter = NULL;
    data->active_sat_session = SAT_SESSION_END;
  data->sat_available_on_SIM = FALSE;
    data->satCallWithRedial = 0; /*zy 2003-04-16 checkin SPR#1779 - DS - Initialise 'with redial' flag */
	sat_mainmenu_label = NULL;
	
    /*
     * Initialise MFW
     */
    sat_init ((UBYTE *)sat_terminal_profile, (UBYTE)sizeof (sat_terminal_profile));

    /*
     * return window handle
     */
    win_show(data->win);
    return data->win;
}
/*******************************************************************************

 $Function:  sim_toolkit_destroy

 $Description:  Destroy the sim toolkit dialog.

 $Returns:    none.

 $Arguments:

*******************************************************************************/
static void sim_toolkit_destroy (T_MFW_HND own_window)
{
    T_MFW_WIN     * win;
    T_sim_toolkit * data;

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

            if (data)
                {
                    /*
                     * Exit SAT and Delete SAT Handler
                     */
                    sat_exit ();
                    sat_delete (data->sat_handle);

                    /*
                     * Delete WIN Handler
                     */
                    win_delete (data->win);
                    /*
                     * Free Memory
                     */
                    if (data->sat_setup_menu_command NEQ NULL)
                    {
                        FREE_MEMORY ((U8 *)data->sat_setup_menu_command, sizeof (T_SAT_CMD));
                        data->sat_setup_menu_command = NULL;
                    }
                    FREE_MEMORY ((U8 *)data->sat_command, sizeof (T_SAT_CMD)); // c022 rsa
                    data->sat_command = NULL;
                    FREE_MEMORY ((U8 *)data, sizeof (T_sim_toolkit));
                }
        }
}

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

 $Function:  sim_toolkit_exec

 $Description:   Dialog function for sim toolkit top window.
        Handle the SAT commands delivered by MFW<-ACI<-SIM

 $Returns:    none.

 $Arguments:

*******************************************************************************/
static void sim_toolkit_exec (T_MFW_HND win, USHORT event, SHORT value, T_SAT_CMD * sat_command)
{
    T_MFW_WIN       * win_data = ((T_MFW_HDR *) win)->data;
    T_sim_toolkit    * data     = (T_sim_toolkit *)win_data->user;
    T_MFW_HND         sat_win;
    T_SAT_RES sat_res;

    TRACE_FUNCTION ("sim_toolkit_exec()");

    if (event NEQ SAT_SESSION_END)
        data->active_sat_session = event;

    switch (event)
        {
        case SAT_DISPLAY_TEXT:
            TRACE_EVENT("SAT_DISPLAY_TEXT");

            if (data->info_win NEQ NULL)      //zhaowm 2002.12.26
             {
                /* destroy any infoscreen */
                SEND_EVENT (data->info_win, E_EDITOR_DEINIT, 0, NULL);
                data->info_win = NULL;
              }

            /*
             * Text with normal priority will be displayed
             * only in idle screen and in SAT Menu Item
             */
            if ((sat_command->qual & SAT_M_TEXT_HIGH_PRIO) EQ 0)
            {
            TRACE_EVENT("NOT SAT_M_TEXT_HIGH_PRIO");
        /* Check if Idle AND Sat Session are inactiv    */
          if ((!g_SATsession_is_active)&&(!idleIsFocussed()))
        {
                TRACE_EVENT("BUSY SCREEN");
                    /* idle is not in focus and not currently in a SAT session: we are busy elsewhere */
            sat_res[SAT_ERR_INDEX] = SAT_RES_BUSY_ME;
            sat_res[SAT_AI_INDEX]  = SatResAiBusyScreen;
            sat_done (sat_command, sat_res, sizeof(T_SAT_RES));
                    return;
                }
            }

            sat_win = sat_display_text_create (data->win);
            if (sat_win)
                {
                    data->sat_command = sat_command;
                    SEND_EVENT (sat_win, event, 0, data->sat_command);
                }
            else
    {
        sat_res[SAT_ERR_INDEX] = SAT_RES_IMPOSSIBLE;
        sat_res[SAT_AI_INDEX]  = SatResAiNoCause;
        sat_done (sat_command, sat_res, sizeof(T_SAT_RES));
    }
            break;

        case SAT_PLAY_TONE:
            TRACE_EVENT("SAT_PLAY_TONE");
            /*
             * Create and initiate Play Tone Window
             */
            sat_win = sat_play_tone_create (data->win);
            if (sat_win)
                {
                    data->sat_command = sat_command;
                    SEND_EVENT (sat_win, event, 0, data->sat_command);
                }
            else
    {
        sat_res[SAT_ERR_INDEX] = SAT_RES_IMPOSSIBLE;
        sat_res[SAT_AI_INDEX]  = SatResAiNoCause;
        sat_done (sat_command, sat_res, sizeof(T_SAT_RES));
    }
            break;

        case SAT_GET_KEY:
            TRACE_EVENT("SAT_GET_KEY");
            /*
             * Create and initiate Get Key Window
             */
            sat_win = sat_get_key_create (data->win);
            if (sat_win)
                {
                    data->sat_command = sat_command;
                    SEND_EVENT (sat_win, event, 0, data->sat_command);
                }
            else
    {
        sat_res[SAT_ERR_INDEX] = SAT_RES_IMPOSSIBLE;
        sat_res[SAT_AI_INDEX]  = SatResAiNoCause;
        sat_done (sat_command, sat_res, sizeof(T_SAT_RES));
    }
            break;
        case SAT_GET_STRING:
            TRACE_EVENT("SAT_GET_STRING");
            /*
             * Create and initiate Get String Window
             */
            sat_win = sat_get_string_create (data->win);
            if (sat_win)
                {
                    data->sat_command = sat_command;
                    SEND_EVENT (sat_win, event, 0, data->sat_command);
                }
            else
    {
        sat_res[SAT_ERR_INDEX] = SAT_RES_IMPOSSIBLE;
        sat_res[SAT_AI_INDEX]  = SatResAiNoCause;
        sat_done (sat_command, sat_res, sizeof(T_SAT_RES));
    }
            break;

            // c016 rsa
        case SAT_SETUP_MENU:
            TRACE_EVENT("SAT_SETUP_MENU");

      		/* Robert.Chen added, 2004-02-28, imported from TI RITA release TCS2112 */      
			sat_call_active = FALSE;   // Marcus: Issue 1812: 13/03/2003
			/* add end */ 

      //SAT is on the SIM available
      data->sat_available_on_SIM = TRUE;

            /*
             * initiate Setup Menu
             */
            sat_setup_menu_proc(sat_command);
      sat_res[SAT_ERR_INDEX] = SatResSuccess;
      sat_res[SAT_AI_INDEX]  = SatResAiNoCause;
            sat_done (sat_command, sat_res, sizeof(T_SAT_RES));
            break;

        case SAT_SELECT_ITEM:
            TRACE_EVENT("SAT_SELECT_ITEM");
            /*
             * Create and initiate select item Window
             */
            sat_win = sat_select_item_create (data->win);
            if (sat_win)
                {
                    data->sat_command = sat_command;
                    SEND_EVENT (sat_win, event, 0, data->sat_command);
                }
            else
    {
        sat_res[SAT_ERR_INDEX] = SAT_RES_IMPOSSIBLE;
        sat_res[SAT_AI_INDEX]  = SatResAiNoCause;
        sat_done (sat_command, sat_res, sizeof(T_SAT_RES));
    }
            break;
            // end c016 rsa

            // c001 xas
        case SAT_SEND_SMS:
            TRACE_EVENT("SAT_SEND_SMS");
            /*
             * --> display alpha identifier if available
             */
            if ((sat_command->c.sms.info.len NEQ 0) &&
                (sat_command->c.sms.info.len NEQ (U8)-1))
                {
                   /*
                    * Setup an editor to display a string
                    */
                    data->editor_data.LeftSoftKey          = TxtNull;
                    data->editor_data.AlternateLeftSoftKey = TxtNull;
                    data->editor_data.RightSoftKey         = TxtNull;
                    data->editor_data.hide                 = FALSE;
                    data->editor_data.mode                 = ONLYREAD_MODE;// E_EDIT_READ_ONLY_MODE;
                    data->editor_data.timeout              = FOREVER;
                    data->editor_data.Identifier           = event;
                    data->editor_data.destroyEditor        =  TRUE;
                    data->editor_data.Callback   = (T_EDIT_CB)sat_info_cb;
                    data->editor_data.TextString       =
                        (char *)sat_create_TEXT_ASCIIZ (&sat_command->c.sms.info);
                    data->editor_data.min_enter  = 0;
                    data->info_win = editor_start(win, &data->editor_data);
                }
            break;

        case SAT_SEND_SS:
            TRACE_EVENT("SAT_SEND_SS");
            /*
             * --> display alpha identifier if available
             */
            if ((sat_command->c.ss.info.len NEQ 0) &&
                (sat_command->c.ss.info.len NEQ (U8)-1))
                {
                   /*
                    * Setup an editor to display a string
                    */

                    data->editor_data.LeftSoftKey          = TxtNull;
                    data->editor_data.AlternateLeftSoftKey = TxtNull;
                    data->editor_data.RightSoftKey         = TxtNull;
                    data->editor_data.hide                 = FALSE;
                    data->editor_data.mode                 = E_EDIT_READ_ONLY_MODE;
                    data->editor_data.timeout              = FOREVER;
                    data->editor_data.Identifier           = event;
                    data->editor_data.Callback   = (T_EDIT_CB)sat_info_cb;
                    data->editor_data.destroyEditor        =  TRUE;
                    data->editor_data.TextString       =
                        (char *)sat_create_TEXT_ASCIIZ (&sat_command->c.ss.info);
                    data->editor_data.min_enter  = 0;
                    data->info_win = editor_start(win, &data->editor_data);
                }
            break;
            // end c001 xas

        case SAT_SETUP_CALL:
            TRACE_EVENT("SAT_SETUP_CALL");

            TRACE_EVENT_P2("Redial durUnit %d durValue %d",
				sat_command->c.call.durUnit,sat_command->c.call.durValue);
            data->sat_command = sat_command;
            cmd1 = sat_command;//zhaowm,2002.0620

            /* create parameter space for call, or reuse old */
            if (data->call_setup_parameter EQ NULL)
            {
                data->call_setup_parameter =
                    (T_SAT_call_setup_parameter *)ALLOC_MEMORY (sizeof(T_SAT_call_setup_parameter));
            }

            /*zy 2003-04-16 checkin  SPR#1779 - DS - If command qualifier is set to 'with redial' (01, 03 or 05) set a global redial flag */
            if ( (sat_command->qual & 0x01) == TRUE )
            {
                if (sat_command->qual > 0x05)
                {
                    TRACE_EVENT("Invalid call command qualifier!");
                }
                else
                {
                    set_sat_redial_flag(1);
                }
            }
           /*end of zy checkin*/
            /* gather the name of the called party (if any) */
            if ((sat_command->c.call.info.len NEQ 0) &&
                (sat_command->c.call.info.len NEQ (U8)-1))
            {
//JVJE                data->call_setup_parameter->TextStringUCS2 = sat_create_TEXT_UCODE(&sat_command->c.call.info);
                data->call_setup_parameter->TextString = sat_create_TEXT_ASCIIZ(&sat_command->c.call.info);
            }
            else
            {
                /* provide an empty string; NULL would crash in info_dialog() */
                sat_command->c.call.info.len = 0;
//JVJE                data->call_setup_parameter->TextStringUCS2 = sat_create_TEXT_UCODE(&sat_command->c.call.info);
                data->call_setup_parameter->TextString = sat_create_TEXT_ASCIIZ(&sat_command->c.call.info);
            }

            /* Robert.Chen added, 2004-02-28, imported from TI RITA release TCS2112 */

            /* SPR#1700 - DS - Save info2 (if available). This should be used for the "calling" dialog.
             * If not available, info (above) can be used.
             */
             
             /* gather the name of the called party (if any) */
            if ((sat_command->c.call.info2.len NEQ 0) &&
                (sat_command->c.call.info2.len NEQ (U8)-1))
            {
                TRACE_EVENT("call.info2 contains data.");
                data->call_setup_parameter->TextString2 = sat_create_TEXT_ASCIIZ(&sat_command->c.call.info2);
			#ifdef NO_ASCIIZ/*MC SPR 940/2 Add tag to Unicode strings so info dialogue displays them correctly*/
				sat_add_unicode_tag_if_needed(data->call_setup_parameter->TextString2);
			#endif
            }
            else
            {
                /* provide an empty string; NULL would crash in info_dialog() */
                TRACE_EVENT("call.info2 contains no data!");
                sat_command->c.call.info2.len = 0;

⌨️ 快捷键说明

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