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

📄 ui_flow_ctrl.c

📁 其乐达(Cheertek)LCD驱动芯片(CT675)的C51源代码
💻 C
字号:
#include "..\INC\SYS_DECLARE.H"
#include "..\INC\SYS_GLOBAL.H"
#include "..\INC\SYS_KEY.H"

#include "INC\UI_OSD.H"
#include "INC\UI_FLOW_CTRL.H"

EN_FLOW_STATE  enFlowState      = FS_NORMAL_PLAY;
EN_FLOW_STATE  enLast1FlowState = FS_NORMAL_PLAY;
EN_FLOW_STATE  enLast2FlowState = FS_NORMAL_PLAY;
EN_FLOW_STATE  enLast3FlowState = FS_NORMAL_PLAY;

/****************************************************************************
 * Flow & related function table
 ***************************************************************************/

ST_STATE_ITEM code stStateTable[] =
{
    // Normal state
    {1, FS_NORMAL_PLAY,            UI_FL_NormalPlayInit,       UI_FL_NormalPlayProc},

    // Main menu
    {0, FS_MENU_MAIN,              UI_FL_MainInit,             UI_FL_MainProc},
    {0, FS_MENU_PICTURE,           UI_FL_PictureInit,          UI_FL_PictureProc},
    {0, FS_MENU_INPUT,             UI_FL_InputInit,            UI_FL_InputProc},
    //{0, FS_MENU_TV,                UI_FL_TvInit,               UI_FL_TvProc},
    {0, FS_MENU_FACTORY,           UI_FL_FacInit,              UI_FL_FacProc},

    // Picture sub-menu
    {0, FS_PICTURE_BRIGHTNESS,     UI_FL_PicBrightnessInit,    UI_FL_PicBrightnessProc},
    {0, FS_PICTURE_CONTRAST,       UI_FL_PicContrastInit,      UI_FL_PicContrastProc},
    {0, FS_PICTURE_HUE,            UI_FL_PicHueInit,           UI_FL_PicHueProc},
    {0, FS_PICTURE_SATURATION,     UI_FL_PicSaturationInit,    UI_FL_PicSaturationProc},
    {0, FS_PICTURE_SHARPNESS,      UI_FL_PicSharpnessInit,     UI_FL_PicSharpnessProc},
    {0, FS_PICTURE_ZOOM,           UI_FL_PicZoomInit,          UI_FL_PicZoomProc},
    {0, FS_PICTURE_FLIP,           UI_FL_PicFlipInit,          UI_FL_PicFlipProc},

    // Input source sub-menu
    {0, FS_INPUT_CVBS,             UI_FL_InputSourceSwitch,    UI_FL_DoNothing},
    {0, FS_INPUT_SVIDEO,           UI_FL_InputSourceSwitch,    UI_FL_DoNothing},
    //{0, FS_INPUT_TV,               UI_FL_InputSourceSwitch,    UI_FL_DoNothing},
    //{0, FS_INPUT_CCIR656,          UI_FL_InputSourceSwitch,    UI_FL_DoNothing},

    // TV sub-menu
    //{0, FS_TV_AUTOSCAN,            UI_FL_TvAutoscanInit,       UI_FL_TvAutoscanProc},

    // Factory mode sub-menu
    {0, FS_FACTORY_BATTERY,        UI_FL_FacBatteryInit,       UI_FL_FacBatteryProc},
    {0, FS_FACTORY_ENVDETECT,      UI_FL_FacEnvDetectInit,     UI_FL_FacEnvDetectProc},
    {0, FS_FACTORY_GAMMA,          UI_FL_FacGammaInit,         UI_FL_FacGammaProc},
    {1, FS_FACTORY_SAR_ADC,        UI_FL_FacSarAdcInit,        UI_FL_FacSarAdcProc},

    // Dummy end condition
    {0, FS_END,                    0,                          0}
};

/****************************************************************************
 * Menu function
 ***************************************************************************/
void UI_FLC_Initial(void)
{
    UI_OSD_Initial();
    UI_FLC_Reset();
    UI_FLC_EnterNewState(FS_NORMAL_PLAY);
}

//--------------------------------------------------------------------------
void UI_FLC_NewStateInitial(EN_FLOW_STATE enState)
{
    if( enState < FS_END && enState >= FS_NORMAL_PLAY)
        stStateTable[enState].fpInit();
    else
        stStateTable[FS_NORMAL_PLAY].fpInit();
}

/****************************************************************************
 * Function    :   UI_FLC_Reset
 * Description :   Reset the flow state queue to normal play.
 * Argument    :   none
 * Return      :   none
 ***************************************************************************/
void UI_FLC_Reset(void)
{
    enFlowState      = FS_NORMAL_PLAY;
    enLast1FlowState = FS_NORMAL_PLAY;
    enLast2FlowState = FS_NORMAL_PLAY;
    enLast3FlowState = FS_NORMAL_PLAY;

    gbFocusItemIdx = 0;
}

/****************************************************************************
 * Function    :   UI_FLC_GetCurrentState
 * Description :   Get the current state.
 * Argument    :   none
 * Return      :   the current state
 ***************************************************************************/
EN_FLOW_STATE UI_FLC_GetCurrentState(void)
{
    return enFlowState;
}

/****************************************************************************
 * Function    :   UI_FLC_EnterNewState
 * Description :   Push a new state to state queue, the oldest state will be discard
 * Argument    :   the new state
 * Return      :   none
 ***************************************************************************/
void UI_FLC_EnterNewState(EN_FLOW_STATE enState)
{
    enLast3FlowState = enLast2FlowState;
    enLast2FlowState = enLast1FlowState;
    enLast1FlowState = enFlowState;
    enFlowState      = enState;

    UI_FLC_NewStateInitial(enState);
}

/****************************************************************************
 * Function    :   UI_FLC_ReturnLastState
 * Description :   Pop a old state from state queue.
 * Argument    :   none
 * Return      :   the current state
 ***************************************************************************/
EN_FLOW_STATE UI_FLC_ReturnLastState(void)
{
    enFlowState      = enLast1FlowState;
    enLast1FlowState = enLast2FlowState;
    enLast2FlowState = enLast3FlowState;
    enLast3FlowState = FS_NORMAL_PLAY;
    UI_FLC_NewStateInitial(enFlowState);

    return enFlowState;
}

/****************************************************************************
 * Function    :   UI_FLC_PassKey
 * Description :   AP flow control
 * Argument    :   none
 * Return      :   none
 ***************************************************************************/
void UI_FLC_PassKey(BYTE bKey)
{
    EN_FLOW_STATE enState;

    enState = UI_FLC_GetCurrentState();

    if(enState == FS_MENU_INPUT)
        gSysInfo.fStopPolling = 1;
    else
        gSysInfo.fStopPolling = 0;

    if((enState < FS_END) && (enState >= FS_NORMAL_PLAY))
    {
        if(stStateTable[enState].fRealtimeResponse)
            gbKeyRepeatCnt++;

        if(gbKeyRepeatCnt > 0xF0 || bKey != KEY_NO_KEY)
        {
            stStateTable[enState].fpProc(bKey);
            gbKeyRepeatCnt = 0;
        }
    }
}

#if 0
/****************************************************************************
 * Function    :   UI_FLC_GetLastState
 * Description :   Get a old state from state queue.
 * Argument    :   none
 * Return      :   the current state
 ***************************************************************************/
EN_FLOW_STATE UI_FLC_GetLastState(void)
{
    return enLast1FlowState;
}
#endif

⌨️ 快捷键说明

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