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

📄 mmisimtoolkit.c

📁 是一个手机功能的模拟程序
💻 C
📖 第 1 页 / 共 5 页
字号:
		display_info.Callback 		= NULL;
	display_info.Time			= THREE_SECS;
	display_info.KeyEvents		= KEY_LEFT|KEY_RIGHT|KEY_HUP;
	display_info.iconindex=REMIND_COMPLETE;
            /*
            * Call Info Screen
            */
            info_dialog (win, &display_info);
            }
            
            break;
        default:
            TRACE_EVENT("sim_toolkit_exec() unexp. event");
            break;
        }
}
/*******************************************************************************

 $Function:  sim_toolkit_sat_cb

 $Description:    Callback function for SAT handler of top window

 $Returns:    none.

 $Arguments:

*******************************************************************************/
static int sim_toolkit_sat_cb ( T_MFW_EVENT event, T_MFW_SAT * sat_bits)
{
    USHORT sat_event;

    TRACE_EVENT("sim_toolkit_sat_cb");
    /*
     * check whether a decoded message is available
     */
    if ((sat_bits EQ NULL) || (g_sim_toolkit_data->win EQ NULL))
    {
        TRACE_EVENT("sim_toolkit_sat_cb() unexp. event");
        return MFW_EVENT_CONSUMED;
    }

    /* convert the flag into an event */
    if (event == MfwSatSessionEnd)
    {
        sat_event = SAT_SESSION_END;
    }
    else
    {
        switch (event)
        {
        case MfwSatTextOut:         /* display string           */
            sat_event = SAT_DISPLAY_TEXT;
            break;
        case MfwSatGetKey:          /* get user keystroke       */
            sat_event = SAT_GET_KEY;
            break;
        case MfwSatGetString:       /* get user input           */
            sat_event = SAT_GET_STRING;
            break;
        case MfwSatPlayTone:        /* play audio tone          */
            sat_event = SAT_PLAY_TONE;
            break;
        case MfwSatSetupMenu:       /* setup toolkit menu       */
            sat_event = SAT_SETUP_MENU;
            break;
        case MfwSatSelectItem:      /* select menu item         */
            sat_event = SAT_SELECT_ITEM;
            break;
        case MfwSatSendSMS:         /* send short message       */
            sat_event = SAT_SEND_SMS;
            break;
        case MfwSatSendUSSD:    /* Robert.Chen add, 2004-02-28, imported from TCS2112 release */	
        case MfwSatSendSS:          /* send service command     */
            sat_event = SAT_SEND_SS;
            break;
        case MfwSatCall:            /* setup a call             */
            sat_event = SAT_SETUP_CALL;
            break;
        case MfwSatCcRes:           /* call control result      */
            sat_event = SAT_CALL_RESULT;
            break;
        case MfwSatCcAlert:         /* call control alerting    */
            sat_event = SAT_CALL_ALERT;
            break;
        case MfwSatRefresh:         /* refresh SIM fields     */
            sat_event = SAT_REFRESH;
            break;
        case MfwSatSetEvents:         /* Sat Set Events updated   */
            sat_event = SAT_SET_EVENTS;
            break;
        case MfwSatDataRefreshed:         /* Data refreshed     */
				TRACE_EVENT("MfwSatDataRefreshed event sent");
            break;
		/* Robert.Chen added, 2004-02-28, imported from TCS2112 release */
		case MfwSatOpenChannel:         /* Open channel     */
	    	sat_event = SAT_OPEN_CHANNEL;
            break;
		case MfwSatCloseChannel:         /* Close channel    */
			sat_event = SAT_CLOSE_CHANNEL;
            break;
        case MfwSatSendData:         	/* Send data     */
			sat_event = SAT_SEND_DATA;
            break;
        case MfwSatReceiveData:         /* Receive data     */
			sat_event = SAT_RECEIVE_DATA;
            break;
		/* add end */

        
#ifdef MMI_WAP_ENABLED /*Disable for testing without WAP*/
        case MfwSatLaunchBrowser:
				TRACE_EVENT("SAT_LAUNCH_BROWSER got to MMI");
#ifdef MMI_TEST_SAT_LAUNCH_BROWSER
           {
             #define LENGTH_URL 40
			 T_SAT_RES sat_res;
			 SatLaunchBrowser laun_brow;
			 char prov_url[LENGTH_URL];
             short pos = 0;
             int i;

             sat_res[SAT_ERR_INDEX] = SAT_RES_SUCCESS;
		     sat_res[SAT_AI_INDEX]  = SatResAiNoCause;
		     sat_done (sat_bits->cmd, sat_res, sizeof(T_SAT_RES));            
            sat_event = SAT_LAUNCH_BROWSER;
             laun_brow = sat_bits->cmd->c.browser;
             memset(information,'\0',INFORMATION_SIZE);
			 TRACE_EVENT_P1("Browser identity -> %d",laun_brow.identity);
             memcpy(&prov_url,laun_brow.url,LENGTH_URL);
             prov_url[LENGTH_URL-1] = '\0';
			 TRACE_EVENT_P1("Browser url -> %s",prov_url);
             pos += sprintf(information+pos,
             	"BROWSER\n-Identity=%d\n-Url=%s\n-Bearers(%d)=",
             	laun_brow.identity,
             	prov_url,
             	laun_brow.n_bearer);
             for (i=0;i<5;i++)
                 pos+=sprintf(information+pos," %d",*laun_brow.bearer++);
             mmiOpenDummyBrowser(g_sim_toolkit_data->win,information);		  
		   }
			break;
#endif /*WAP*/
#endif /* MMI_TEST_SAT_LAUNCH_BROWSER */
    	//glowing,2005-05-25, add _M188_ for compatible with M288B( rita project)
      #ifdef _M188_
        case MfwSatSimBusy:
	  #else
	    case MfwSatErrBusy:
	  #endif
            /*zy 2003-04-16 checkin SPR#1779 - DS - SIM has returned busy (SW1=0x93) */
            sat_event = SAT_SIM_BUSY;
            break;
        default:
            sat_event = SAT_UNKNOWN;
            break;
        }
    }
    SEND_EVENT (g_sim_toolkit_data->win, sat_event, 0, sat_bits->cmd);
    return MFW_EVENT_CONSUMED;
}

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

 $Function:  sat_setup_menu_proc

 $Description:   process SAT_SETUP_MENU event

 $Returns:    none.

 $Arguments:

*******************************************************************************/
static void sat_setup_menu_proc(T_SAT_CMD * sat_command)
{
	UBYTE header_len;
  TRACE_FUNCTION("sat_setup_menu_proc");

    if (sat_command->c.menu.items[0].len EQ 0)
    {
       /*
        * "Item data object for item 1" is a null data object:
        * hide the SIM toolkit menu item in the main menu
        */
        menuDisableSimMenu();
    g_sim_toolkit_data->sat_available_on_SIM = FALSE;
		//release the labe of the mainmenu
		//GW-SPR#1035 Free memory using sat_destroy_TEXT_ASCIIZ (as it is allocated using corresponding procedure) 
		if (sat_mainmenu_label NEQ NULL)
		{
			sat_destroy_TEXT_ASCIIZ (sat_mainmenu_label);
			sat_mainmenu_label = NULL;
		}
		
        if (sat_get_setup_menu_win() NEQ NULL)
        {
            /* there's an active SETUP MENU */
            SEND_EVENT (sat_get_setup_menu_win(), SAT_EXIT, 0, NULL); /* SETUP_MENU shall selfdestroy */
        }
        if (g_sim_toolkit_data->sat_setup_menu_command NEQ NULL)
        {
            FREE_MEMORY ((U8 *)(g_sim_toolkit_data->sat_setup_menu_command), sizeof (T_SAT_CMD));
            g_sim_toolkit_data->sat_setup_menu_command = NULL;
        }
    }
    else
    {
        /* install new setup menu */
        if (sat_get_setup_menu_win() NEQ NULL)
        {
           TRACE_EVENT("2SETUP_MENU shall selfdestroy");
            /* there's already an active SETUP MENU */
            if(g_SATsession_is_active)     //zhaowm 2003 03.14 for avoiding memory leak
              {
                 return;
              }
            else
            SEND_EVENT (sat_get_setup_menu_win(), SAT_EXIT, 0, NULL); /* SETUP_MENU shall selfdestroy */
            //sat_destroy_TEXT_UCODE(g_sim_toolkit_data->sat_setup_menu_label);
        }

        /* store command contents for later use in sat_setup_menu_start() */
        if (g_sim_toolkit_data->sat_setup_menu_command EQ NULL)
        {
            /* if not already allocated, get storage for the SETUP MENU command */
            g_sim_toolkit_data->sat_setup_menu_command =
                (T_SAT_CMD *)ALLOC_MEMORY (sizeof (T_SAT_CMD));
        }
        *(g_sim_toolkit_data->sat_setup_menu_command) = *sat_command; /* copy contents */

		/*
		  The label for the main menu 
	  
		*/
		//GW-SPR#1035-Corrected code to read label out
 		{

			/* taking the label from menu command file and convert to ascii */
			//GW Memory is allocated 'sat_create_TEXT_ASCIIZ'
			//   sat_mainmenu_label = (char *)ALLOC_MEMORY (header_len);
		/* Robert.Chen added, 2004-02-28, imported from TCS2112 */
		#ifdef NO_ASCIIZ
			/*MC,  SPR 940/2if we're in chinese, header may be converted from ASCII to Unicode*/
			if (Mmi_getCurrentLanguage() == CHINESE_LANGUAGE)
				header_len = g_sim_toolkit_data->sat_setup_menu_command->c.menu.header.len *2;
			else
		#endif
			/* taking the label from menu command file and convert to ascii */
				 header_len = g_sim_toolkit_data->sat_setup_menu_command->c.menu.header.len;
				 

			sat_mainmenu_label = sat_create_TEXT_ASCIIZ (&g_sim_toolkit_data->sat_setup_menu_command->c.menu.header);

			/* Robert.Chen added, 2004-02-28, improted from TCS2112 */
			sat_mainmenu_label[header_len] = '\0';

			LanguageIndex_1[TxtSimToolkit].Text = sat_mainmenu_label;
//#ifndef CHINESE_MMI
			LanguageIndex_2[TxtSimToolkit].Text = sat_mainmenu_label;
//#else
			//We need to define the chinese output and test for Asciii/ Unicode data
//#endif
		}
        /* unhide the SIM toolkit menu item in the main menu */
        menuEnableSimMenu
            (
            "",  /* label */
            (SimMenuFunc)sat_setup_menu_start, /* callback when menu entered */
            g_sim_toolkit_data->sat_setup_menu_command /* parameter to callback */
            );
    }
    sat_set_setup_menu_win(NULL); // avoid notifications to a non-existent window
}


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

 $Function:  sat_win_cb

 $Description:   Default sat window event handler. Avoid intermediate visibility of lower menus


 $Returns:    none.

 $Arguments:

*******************************************************************************/
int sat_win_cb (T_MFW_EVENT event, T_MFW_WIN * win)
{

//  T_DISPLAY_DATA display_info; /*2003/12/4, wangyan add*/ 

  TRACE_FUNCTION("sat_win_cb");
    if (win EQ NULL)
  return MFW_EVENT_CONSUMED;

    switch (event)
        {
        case E_WIN_VISIBLE: /* window changed visibility */
            if (win->flags & E_WIN_VISIBLE)
                {
                    /* window becomes visible */
 //                   dspl_ClearAll(); 
			draw_popup_background();
#if(MAIN_LCD_SIZE==4)
			ALIGNED_PROMPT(CENTER,DIALOG_SECOND_LINE,DSPL_TXTATTR_TRANSPARENT,TxtPleaseWait);
#elif(MAIN_LCD_SIZE==3)
			ALIGNED_PROMPT(CENTER_RIGHT,DIALOG_HALF_FIRSTSECOND,DSPL_TXTATTR_TRANSPARENT,TxtPleaseWait);
#endif
  //                  dspl_TextOut(32,18,DSPL_TXTATTR_NORMAL,GET_TEXT(TxtPleaseWait)); 
/*

  dialog_info_init(&display_info);
  display_info.KeyEvents    = KEY_CLEAR | KEY_RIGHT;
  display_info.TextId2       = 0;  
  display_info.TextId      = TxtPleaseWait;  
  display_info.TextString   = 0;  
  display_info.TextString2  = 0;  
  display_info.LeftSoftKey  = '\0';
  display_info.RightSoftKey = TxtSoftBack;
  display_info.Time         = ONE_SECS;  
  display_info.iconindex=REMIND_COMPLETE;


info_dialog (win, &display_info);
*/					
                }
            break;
        default:
            return MFW_EVENT_REJECTED;
        }
    return MFW_EVENT_CONSUMED;
}

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

 $Function:  sat_kbd_cb

 $Description:   Default sat window keyboard handler


 $Returns:    none.

 $Arguments:

*******************************************************************************/
int sat_kbd_cb (T_MFW_EVENT event, T_MFW_KBD * key)
{
  T_MFW_HND   win     = mfwParent( mfw_header() );

  TRACE_FUNCTION("sat_kbd_cb");

  /* make sure we handle null keyboards
  */
  if ( key == NULL )
    return MFW_EVENT_CONSUMED;

  /* deal with the incoming key code
  */
    switch( key->code )
    {

      /* Destroy the window on either right softkey or hangup keypresses */
    case KCD_HUP:
    case KCD_RIGHT:
    {
        /* 2004/07/12 sunsj remove for close key action at simtoolkit action */
      //SEND_EVENT(win, SAT_DESTROY_WINDOW, 0, 0);
      break;
    }
    }

    return MFW_EVENT_CONSUMED;
}


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

 $Function:  sat_info_cb

 $Description:  Callback function information dialog.

 $Returns:    none.

 $Arguments:

*******************************************************************************/
static void sat_info_cb(T_MFW_HND win, UBYTE identifier, UBYTE reason)
{

⌨️ 快捷键说明

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