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

📄 jvm_screen_switch.c

📁 java 1.1 gemini 08_16
💻 C
📖 第 1 页 / 共 5 页
字号:

/*****************************************************************************
 * FUNCTION
 *  jvm_resmgr_file_controller
 * DESCRIPTION
 *  manage file  depending upon the source state and destination state of VM
 * PARAMETERS
 *  src     [IN]        
 *  dst     [IN]        
 * RETURNS
 *****************************************************************************/
kal_int32 jvm_resmgr_file_controller(jvm_state_enum src, jvm_state_enum dst)
{
    /*----------------------------------------------------------------*/
    /* Local Variables                                                */
    /*----------------------------------------------------------------*/

    /*----------------------------------------------------------------*/
    /* Code Body                                                      */
    /*----------------------------------------------------------------*/
    /* Justin TODO: JSR75-File  */

    if (dst == JVM_FG_RUNNING_STATE)
    {
        disk_changed = KAL_TRUE;
    }
    else if (src == JVM_FG_RUNNING_STATE)
    {
    }

    return 0;
}


/*****************************************************************************
 * FUNCTION
 *  jvm_resmgr_network_controller
 * DESCRIPTION
 *  manage network depending upon the source state and destination state of VM
 * PARAMETERS
 *  src     [IN]        
 *  dst     [IN]        
 * RETURNS
 *****************************************************************************/
kal_int32 jvm_resmgr_network_controller(jvm_state_enum src, jvm_state_enum dst)
{
    /*----------------------------------------------------------------*/
    /* Local Variables                                                */
    /*----------------------------------------------------------------*/

    /*----------------------------------------------------------------*/
    /* Code Body                                                      */
    /*----------------------------------------------------------------*/
    /* Justin TODO: Socket, datagram */
    /* Tony TODO:  Network, SMS, MMS, Platform Request */
    return 0;
}


/*****************************************************************************
 * FUNCTION
 *  jvm_resmgr_vm_controller
 * DESCRIPTION
 *  manage VM depending upon the source state and destination state of VM
 * PARAMETERS
 *  src     [IN]        
 *  dst     [IN]        
 * RETURNS
 *****************************************************************************/
kal_int32 jvm_resmgr_vm_controller(jvm_state_enum src, jvm_state_enum dst)
{
    /*----------------------------------------------------------------*/
    /* Local Variables                                                */
    /*----------------------------------------------------------------*/

    /*----------------------------------------------------------------*/
    /* Code Body                                                      */
    /*----------------------------------------------------------------*/
    if (dst == JVM_TERMINATE_STATE)
    {
        jvm_stopVMExternal();
    }
    else if (dst == JVM_FG_RUNNING_STATE)
    {
        if (src == JVM_TERMINATE_STATE)
        {
            jvm_initVMExternal();
        }
        else
        {
            jvm_resumeVMExternal();
        }
    }
    else
    {
        jvm_pauseVMExternal(src, dst);
    }

    if (dst == JVM_BG_RUNNING_STATE)
    {
        stack_change_priority_by_module_ID(MOD_J2ME, TASK_PRIORITY_JVM_BG);
    }
    else if (src == JVM_BG_RUNNING_STATE)
    {
        stack_change_priority_by_module_ID(MOD_J2ME, TASK_PRIORITY_JVM);
    }

    return 0;
}

/*****************************************************************************
 *****************************************************************************/
typedef struct
{
    kal_int32(*controller) (jvm_state_enum, jvm_state_enum);
} jvm_resmgr_ctrl_entry;

jvm_resmgr_ctrl_entry ctrl_tbl[] = 
{
    jvm_resmgr_fbbr_controller,
    jvm_resmgr_lcd_controller,
    jvm_resmgr_device_controller,
    jvm_resmgr_audio_controller,
    jvm_resmgr_video_controller,
    jvm_resmgr_graphics3d_controller,
    jvm_resmgr_event_controller,
    jvm_resmgr_file_controller,
    jvm_resmgr_network_controller,
    jvm_resmgr_vm_controller
};

#define CTRL_TBL_SIZE (sizeof(ctrl_tbl) / sizeof(jvm_resmgr_ctrl_entry))


/*****************************************************************************
 * FUNCTION
 *  jvm_resmgr_state_transition
 * DESCRIPTION
 *  This function will be invoked when state will be changed.
 *  It call all resource manager callback function to do correspounding action
 * PARAMETERS
 *  dst     [IN]        
 * RETURNS
 *  void
 *****************************************************************************/
void jvm_resmgr_state_transition(jvm_state_enum dst)
{
    /*----------------------------------------------------------------*/
    /* Local Variables                                                */
    /*----------------------------------------------------------------*/
    kal_int32 result, i;
    jvm_state_enum src = jvm_state;

    /*----------------------------------------------------------------*/
    /* Code Body                                                      */
    /*----------------------------------------------------------------*/
    kal_trace(TRACE_STATE, FUNC_JVM_RESMGR_STATE_TRANSITION, jvm_state, dst);

    if (src == dst)
    {
        return;
    }

    /* invalid state transition */
    if ((src == JVM_FG_RUNNING_STATE && dst == JVM_PAUSED_STATE) ||
        (src == JVM_BG_RUNNING_STATE && dst == JVM_SHORT_EVENT_STATE) ||
        (src == JVM_BG_RUNNING_STATE && dst == JVM_LONG_EVENT_STATE) ||
        (src == JVM_BG_RUNNING_STATE && dst == JVM_PAUSED_STATE) ||
        (src == JVM_SHORT_EVENT_STATE && dst == JVM_BG_RUNNING_STATE) ||
        (src == JVM_SHORT_EVENT_STATE && dst == JVM_PAUSED_STATE) ||
        (src == JVM_LONG_EVENT_STATE && dst == JVM_SHORT_EVENT_STATE) ||
        (src == JVM_PAUSED_STATE && dst == JVM_BG_RUNNING_STATE) ||
        (src == JVM_PAUSED_STATE && dst == JVM_SHORT_EVENT_STATE) ||
        (src == JVM_PAUSED_STATE && dst == JVM_LONG_EVENT_STATE) ||
        (src == JVM_TERMINATE_STATE && dst != JVM_FG_RUNNING_STATE))
    {
        ASSERT(0);
    }

    StopTimer(J2ME_VM_EVENT_TIMER);

    JVM_RES_LOCK;

    jvm_state = dst;

    if (src > dst)  /* release */
    {
        for (i = CTRL_TBL_SIZE - 1; i >= 0; i--)
        {
            result = ctrl_tbl[i].controller(src, dst);
            if (result < 0)
            {
                ASSERT(0);

            }
        }
    }
    else    /* get */
    {

        for (i = 0; i < CTRL_TBL_SIZE; i++)
        {
            result = ctrl_tbl[i].controller(src, dst);
            if (result < 0)
            {
                ASSERT(0);

            }
        }
    }

    JVM_RES_UNLOCK;
}


/*****************************************************************************
 * FUNCTION
 *  jvm_is_minimize_mode
 * DESCRIPTION
 *  
 * PARAMETERS
 *  void
 * RETURNS
 *  
 *****************************************************************************/
kal_bool jvm_is_minimize_mode(void)
{
    /*----------------------------------------------------------------*/
    /* Local Variables                                                */
    /*----------------------------------------------------------------*/

    /*----------------------------------------------------------------*/
    /* Code Body                                                      */
    /*----------------------------------------------------------------*/
#ifdef J2ME_SUPPORT_BACKGROUND
    return (jvm_state == JVM_BG_RUNNING_STATE);
#else 
    return KAL_FALSE;
#endif 
}


/*****************************************************************************
 * FUNCTION
 *  jvm_is_pause_mode
 * DESCRIPTION
 *  
 * PARAMETERS
 *  void
 * RETURNS
 *  
 *****************************************************************************/
kal_bool jvm_is_pause_mode(void)
{
    /*----------------------------------------------------------------*/
    /* Local Variables                                                */
    /*----------------------------------------------------------------*/

    /*----------------------------------------------------------------*/
    /* Code Body                                                      */
    /*----------------------------------------------------------------*/
#ifdef J2ME_SUPPORT_PAUSE
    return (jvm_state == JVM_PAUSED_STATE || jvm_state == JVM_SHORT_EVENT_STATE || jvm_state == JVM_LONG_EVENT_STATE);
#else 
    return (jvm_state == JVM_SHORT_EVENT_STATE || jvm_state == JVM_LONG_EVENT_STATE);;
#endif 
}


/*****************************************************************************
 * FUNCTION
 *  jvm_is_teminate_mode
 * DESCRIPTION
 *  
 * PARAMETERS
 *  void
 * RETURNS
 *  
 *****************************************************************************/
kal_bool jvm_is_teminate_mode(void)
{
    /*----------------------------------------------------------------*/
    /* Local Variables                                                */
    /*----------------------------------------------------------------*/

    /*----------------------------------------------------------------*/
    /* Code Body                                                      */
    /*----------------------------------------------------------------*/
    return (jvm_state == JVM_TERMINATE_STATE);
}


/*****************************************************************************
 * FUNCTION
 *  jvm_get_state
 * DESCRIPTION
 *  
 * PARAMETERS
 *  void
 * RETURNS
 *  
 *****************************************************************************/
kal_int32 jvm_get_state(void)
{
    /*----------------------------------------------------------------*/
    /* Local Variables                                                */
    /*----------------------------------------------------------------*/

    /*----------------------------------------------------------------*/
    /* Code Body                                                      */
    /*----------------------------------------------------------------*/
    return jvm_state;
}


/*****************************************************************************
 * FUNCTION
 *  jvm_is_in_background_long_time
 * DESCRIPTION
 *  
 * PARAMETERS
 *  void
 * RETURNS
 *  
 *****************************************************************************/
kal_bool jvm_is_in_background_long_time(void)
{
    /*----------------------------------------------------------------*/
    /* Local Variables                                                */
    /*----------------------------------------------------------------*/

    /*----------------------------------------------------------------*/
    /* Code Body                                                      */
    /*----------------------------------------------------------------*/
    return (jvm_state != JVM_TERMINATE_STATE && midlet_state == JVM_MIDLET_PAUSED);
}


/*****************************************************************************
 * FUNCTION
 *  jvm_is_own_screen
 * DESCRIPTION
 *  To check if java task get the control now
 *  (PS. resource may not be ready)
 * PARAMETERS
 *  void
 * RETURNS
 *  KAL_TRUE    java task get the control
 *****************************************************************************/
kal_bool jvm_is_own_screen(void)
{
    /*----------------------------------------------------------------*/
    /* Local Variables                                                */
    /*----------------------------------------------------------------*/
    kal_bool result;

    /*----------------------------------------------------------------*/
    /* Code Body                                                      */
    /*----------------------------------------------------------------*/
    /* Use JVM_RES_LOCK/UNLOCK will cause deadlock */
    if (jvm_state == JVM_FG_RUNNING_STATE)
    {
        result = KAL_TRUE;
    }
    else
    {
        result = KAL_FALSE;
    }

    return result;
}


/*****************************************************************************
 * FUNCTION
 *  jvm_is_lock_mmi
 * DESCRIPTION
 *  
 * PARAMETERS
 *  void
 * RETURNS

⌨️ 快捷键说明

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