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

📄 events_md.c

📁 java 1.1 gemini 08_16
💻 C
📖 第 1 页 / 共 3 页
字号:
/*****************************************************************************
*  Copyright Statement:
*  --------------------
*  This software is protected by Copyright and the information contained
*  herein is confidential. The software may not be copied and the information
*  contained herein may not be used or disclosed except with the written
*  permission of MediaTek Inc. (C) 2001
*
*****************************************************************************/

/*****************************************************************************
 *
 * Filename:
 * ---------
 *   jam_events.c
 *
 * Project:
 * --------
 *   Maui_Software
 *
 * Description:
 * ------------
 *   This file implements JAM (Java Application Manager) event handling APIs
 *
 * Author:
 * -------
 * -------
 *
 *============================================================================
 *             HISTORY
 * Below this line, this part is controlled by PVCS VM. DO NOT MODIFY!!
 *------------------------------------------------------------------------------
 * removed!
 *
 * removed!
 * removed!
 * removed!
 *
 * removed!
 * removed!
 * removed!
 *
 * removed!
 * removed!
 * removed!
 *
 * removed!
 * removed!
 * removed!
 *
 * removed!
 * removed!
 * removed!
 *
 * removed!
 * removed!
 * removed!
 *
 * removed!
 * removed!
 * removed!
 *
 * removed!
 * removed!
 * removed!
 *
 * removed!
 * removed!
 * removed!
 *
 * removed!
 * removed!
 * removed!
 *
 * removed!
 * removed!
 * removed!
 *
 * removed!
 * removed!
 * removed!
 *
 * removed!
 * removed!
 * removed!
 *
 * removed!
 * removed!
 * removed!
 *
 * removed!
 * removed!
 * removed!
 *
 * removed!
 * removed!
 * removed!
 *
 * removed!
 * removed!
 * removed!
 *
 * removed!
 * removed!
 * removed!
 *
 * removed!
 * removed!
 * removed!
 *
 * removed!
 * removed!
 * removed!
 *
 * removed!
 * removed!
 * removed!
 *
 * removed!
 * removed!
 * removed!
 *
 * removed!
 * removed!
 * removed!
 *
 * removed!
 * removed!
 * removed!
 *
 * removed!
 * removed!
 * removed!
 *
 * removed!
 * removed!
 * removed!
 *
 * removed!
 * removed!
 * removed!
 *
 * removed!
 * removed!
 * removed!
 *
 * removed!
 * removed!
 * removed!
 *
 * removed!
 * removed!
 * removed!
 *
 * removed!
 * removed!
 * removed!
 *
 * removed!
 * removed!
 * removed!
 *
 * removed!
 * removed!
 * removed!
 *
 * removed!
 * removed!
 * removed!
 *
 * removed!
 * removed!
 * removed!
 *
 * removed!
 * removed!
 * removed!
 *
 * removed!
 * removed!
 * removed!
 *
 * removed!
 * removed!
 * removed!
 *
 * removed!
 * removed!
 * removed!
 *
 * removed!
 * removed!
 * removed!
 *
 * removed!
 * removed!
 * removed!
 *
 * removed!
 * removed!
 * removed!
 *
 * removed!
 * removed!
 * removed!
 *
 * removed!
 * removed!
 * removed!
 *
 * removed!
 * removed!
 * removed!
 *
 * removed!
 * removed!
 * removed!
 *
 * removed!
 * removed!
 * removed!
 *
 * removed!
 * removed!
 * removed!
 *
 * removed!
 * removed!
 * removed!
 *
 * removed!
 * removed!
 * removed!
 *
 * removed!
 * removed!
 * removed!
 *
 * removed!
 * removed!
 * removed!
 *
 * removed!
 * removed!
 * removed!
 *
 * removed!
 * removed!
 * removed!
 *
 * removed!
 * removed!
 * removed!
 *
 * removed!
 * removed!
 * removed!
 *
 *------------------------------------------------------------------------------
 * Upper this line, this part is controlled by PVCS VM. DO NOT MODIFY!!
 *============================================================================
 ****************************************************************************/

/*************************************************************************
 * Include Statements
 *************************************************************************/
#include "jal.h" 
#include "jam_internal.h"
#include "jma_internal.h"
#include "jvm_adaptor.h"
#include "jam_msg_handler.h"
#include "kni.h"
#include "defaultLCDUI.h"
#include "pushregistry.h"
#include "commandState.h"
#include "globalconstants.h"
#include "TouchScreenGprot.h" 
#include "FrameworkStruct.h"

/*************************************************************************
* Constant Definiton 
 *************************************************************************/
#define KPEEKMESSAGE_PERIOD									(1)

/*************************************************************************
* Function Declaration or Global Definition
 *************************************************************************/
extern void process_soc_async_ind(ilm_struct* ilm_ptr);
extern void TurnOnBacklight(kal_uint8);
extern void J2ME_PauseScreenTime_md(void);
extern void J2ME_ResumeScreenTime_md(void);
extern void InsertKVMEvent(BOOL inFront, cell type, int argCount, ...);
extern void jvm_resume_vm_external(void);   /*implemented by vendor */
extern void jvm_file_update_diskinfo(void);
extern kal_eventgrpid J2ME_mmi_screen_eventgroup;
extern event_scheduler *j2me_alarm_es_ptr;
extern int checkEventCountTimeSlice;
extern kal_int32 g_jvm_card_plugin_event;

static ulong64 previos_sleep_time = 0;
extern kal_eventgrpid J2ME_pause_event_group;
extern kal_bool j2me_quit_tck_mode;
extern kal_bool notify_pause;
extern void jui_widget_reset_current_menu_string(void);

#ifdef __J2ME_F1_3X_EXTENSION__
extern int custom3X_Data[];
extern int custom3X_axis;

extern jboolean support3XDEventTrigger;
extern int j2me_3xdevice_query(void);
#endif /* __J2ME_F1_3X_EXTENSION__ */

int vm_is_force_terminated;
kal_bool pauseThread = KAL_FALSE;
kal_bool pause_app_executed = KAL_FALSE;
kal_bool saved_vm_pause = KAL_FALSE;
static kal_uint64 pausedTime;
static kal_int32 current_pause_level;
static kal_uint64 terminateTime;
/* KAL_FALSE --> can store pause event, KAL_TRUE --> can store resume event 
  * This variable will insure storing pause event and resume event to be paired
  */
static kal_bool store_pause_or_resume_event = KAL_FALSE;
static kal_bool suspend_all_executed = KAL_FALSE;
static kal_bool shutdonw_event_sent = KAL_FALSE;
static kal_bool is_bg_running = KAL_FALSE;
kal_char* pause_mids_work_dir_path;

#ifdef __SUPPORT_INFUSIO__
extern bool_t ege_launch_next_ap_flag;
extern int infusio_mids_type;
extern void set_work_sys_dir_path_for_EGE(void);
#endif /* __SUPPORT_INFUSIO__ */ 

void jvm_resume_vm_external(void);


/*************************************************************************
* FUNCTION
*  KPeekMessage
*
* DESCRIPTION
*	Get message with timeout waiting
*
* PARAMETERS
*
* RETURNS
*
* GLOBALS AFFECTED
*
*************************************************************************/
int
KPeekMessage(ilm_struct *current_ilm, unsigned timeout_msecs)
{
	kal_status status = KAL_Q_EMPTY;
	kal_uint16 msg_size;

	if (timeout_msecs == 0)
	{
		status = kal_deque_msg( task_info_g[INDX_J2ME].task_ext_qid, 
								(void*)current_ilm, 
								&msg_size, 
								KAL_NO_WAIT );
	} else
	{
		kal_uint32 timeout_ticks = timeout_msecs >> 2;
		kal_uint32 count_ticks = 0;

		jvm_keypad_register_notify();

		/* waitUntil is in miliseconds, KPeekMessage use frameticks as time base. */
		while (count_ticks <= timeout_ticks)
		{
			/* prevent not exit forever on pause state */
			if (vm_is_force_terminated && CurrentTime_md() - terminateTime > MAX_TERMINAT_TIME)
			{
				vm_is_force_terminated = KAL_FALSE;
				/* Flush key ring buffer */
				jvm_keypad_flush();
				jvm_tp_flush();
				MidpCommandState.nextCommand = EXIT;
				ERROR_THROW(-1); /* long jump back to VM exit point*/
			}
			count_ticks += KPEEKMESSAGE_PERIOD;
			status = kal_deque_msg( task_info_g[INDX_J2ME].task_ext_qid, 
									(void*)current_ilm, 
									&msg_size, 
									KAL_NO_WAIT );

			if (status == KAL_SUCCESS)
				break;
			else if (status == KAL_Q_EMPTY)
				/* Sleep for a while, and polling again. */
				kal_sleep_task(KPEEKMESSAGE_PERIOD);
			else
				ASSERT(0);
		}
	}

	return(int)(status);
}

/*************************************************************************
* FUNCTION
*  KPeekMessage
*
* DESCRIPTION
*	Get message with forever waiting
*
* PARAMETERS
*
* RETURNS
*
* GLOBALS AFFECTED
*
*************************************************************************/
extern int eventCount;
int
KGetMessage(ilm_struct *current_ilm)
{
	kal_status status;

	jvm_keypad_register_notify();
	status = receive_msg_ext_q(task_info_g[INDX_J2ME].task_ext_qid, current_ilm );

	return(int)(status);
}

/*************************************************************************
* FUNCTION
*  j2me_translate_keyevent
*
* DESCRIPTION
*
* PARAMETERS
*

⌨️ 快捷键说明

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