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

📄 dispatch.c

📁 Bitek 公司 bit1611b模拟屏驱动芯片外接MCU驱动DEMO源码
💻 C
📖 第 1 页 / 共 5 页
字号:
/* **********************************************************************

         Copyright (c) 2002-2006 Beyond Innovation Technology Co., Ltd

        All rights are reserved. Reproduction in whole or in parts is
    prohibited without the prior written consent of the copyright owner.
   ----------------------------------------------------------------------

    Module: DISPATCH.C

    Purpose: Implementation of DISPATCH module.

    Version: 0.02                                   07:25PM  2005/05/13

    Compiler: Keil 8051 C Compiler v8.01

    Reference:

   ----------------------------------------------------------------------
    Modification:

    R0.01 07:25PM  2005/05/13 Jeffrey Chang
    Reason:
        1. Original.
    Solution:

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

#define _DISPATCH_C_

/* ------------------------------------
    Header Files
   ------------------------------------ */
#include "bitek.h"
#include "common.h"
#include "dispatch.h"
#include "eeprom.h"
#include "i2c.h"
#include "key.h"
#include "led.h"
#include "mcu.h"
#include "menu.h"
#include "osd.h"
#include "platform.h"
#include "por.h"
#include "timer.h"
#include "vp.h"
#include "yuv.h"


#if (AUDIO_CFG != AUDIO_00_NONE)
    #include "audio.h"
#endif

#if (IR_CFG != IR_00_UNUSE)
    #include "ir.h"
#endif

#if (MENU_STYLE_CFG == MENU_STYLE_SCROLLING_5)  ||  \
    (MENU_STYLE_CFG == MENU_STYLE_SCROLLING_6)
    #include "tuner.h"
#endif

/* ------------------------------------
    Macro Definitions
   ------------------------------------ */


/* ------------------------------------
    Type Definitions
   ------------------------------------ */


/* ------------------------------------
    Variables Definitions
   ------------------------------------ */
static UB8 bIdx;
static UB8 bKey;

#if (DISPATCH_BURNINGO)
static UB8 bBurnIn = 0;
#endif

#if (DISPATCH_DISPLAYMODE)

    #if (MENU_STYLE_CFG == MENU_STYLE_SCROLLING_1)      ||  \
        (MENU_STYLE_CFG == MENU_STYLE_SCROLLING_2)      ||  \
        (MENU_STYLE_CFG == MENU_STYLE_SCROLLING_5)      ||  \
        (MENU_STYLE_CFG == MENU_STYLE_SCROLLING_6)      ||  \
        (MENU_STYLE_CFG == MENU_STYLE_SCROLLING_7)

        static UB8 CODE * CODE apbDISPLAY_MODE[ DISPLAY_MODE_SIZE ] =
        {
           //123456
            "16:9-1",
            "16:9-2",
            "4:3",
        };

    #elif (MENU_STYLE_CFG == MENU_STYLE_SCROLLING_3)    ||  \
          (MENU_STYLE_CFG == MENU_STYLE_SCROLLING_4)
    // Nothing !

    #else

        static UB8 CODE * CODE apbDISPLAY_MODE[ DISPLAY_MODE_SIZE ] =
        {
           //123456
            "Linear",
            "Bypass",
        };

    #endif

#endif


#if (DISPATCH_TCON_MODE)
static UB8 CODE * CODE apbTCON_MODE[ TCON_MODE_SIZE ] =
{
    "RU",
    "LU",
    "LD",
    "RD",
};
#endif



/* ------------------------------------
    Function Prototypes
   ------------------------------------ */


#if (DISPATCH_BURNINGO)
/* -------------------------------------------------------------------
    Name: DISPATCH_BurnInGo - 
    Purpose:
    Passed:
    Returns: None.
    Notes:
   ------------------------------------------------------------------- */
void DISPATCH_BurnInGo (void)
{
    if (wTIMER_BurnInTick < 5)
    {
        wTIMER_BurnInTick = 505;         // 500 x 6ms = 3 sec.

        // Video Processor Test Pattern
        BITEK_TxByte(VP_MAD, VP_03D_TESTPAT_G,   0xFF);
        BITEK_TxByte(VP_MAD, VP_03E_TESTPAT_B,   (bBurnIn << 4) | 0x8F);

        // To enable Free-Run Mode
        BITEK_TxByte(VP_MAD,
                     VP_040_TESTPAT_ATTR,
                     BITEK_RxByte(VP_MAD, VP_040_TESTPAT_ATTR) | VP_MASK_FREERUN_EN);

        OSD_ShowValue(OSD_SUBMENU,
                      OSD_SUBMENU_WIDTH - OSD_W_VALUE - 1,
                      OSD_Y_VALUE,
                      bBurnIn,
                      OSD_W_VALUE                         );

        bBurnIn++;
        bBurnIn &= 0x07;
    }
} /* DISPATCH_BurnInGo */
#endif



/* -------------------------------------------------------------------
    Name: DISPATCH_Go -
    Purpose: To execute DISPATCH.
    Passed: None.
    Returns: None.
    Notes:
   ------------------------------------------------------------------- */
void DISPATCH_Go (void)
{
    // OSD Auto OFF !
    wMENU_Tick = MENU_AUTO_OFF_TIME;


    switch (bSystemState)
    {
        case SYSTEM_POWER_OFF:
            switch (bKey = KEY_BufferOut())
            {
                case KEY_POWER:
                case KEY_IR_POWER:
                    if (fKeyReleased)
                        POR_PowerOn();
                    break;

                default:
                    break;
            } // switch
            break;


        case SYSTEM_POWER_ON:
            switch (bKey = KEY_BufferOut())
            {
                case KEY_STILL_POWER:
                case KEY_IR_POWER:
                    if (fKeyReleased)
                        POR_PowerOff();
                    break;

                case KEY_RELEASE_MENU:
                case KEY_IR_MENU:
                    // To vanish Main/Message Menu
                    MENU_EnableMenu(MENU_MAINMENU, ON);
                    MENU_EnableMenu(MENU_MESSAGE, OFF);

                    bSystemState = SYSTEM_MAIN_MENU;
                    break;


                case KEY_RELEASE_SELECT:
                case KEY_IR_SELECT:
                    tsEYD.bYUV_ID = (tsEYD.bYUV_ID + 1) % MAX_YUV_NO;

                    // To setup Video Source and try next one !
                    YUV_SetSourceMode(tsEYD.bYUV_ID);

                    // To enable BLANK COLOR
                    //VP_BlankColor(ON);

                    // To Backup YUV ID
                    EEPROM_TxBurst(EYD_ADDR_YUV_ID,
                                   sizeof(tsEYD.bYUV_ID),
                                   (UB8 *)&tsEYD.bYUV_ID    );

                    OSD_ShowMsg(OSD_MESSAGE,
                                OSD_X_SOURCE,
                                OSD_Y_SOURCE,
                                apbYUV_Source[ tsEYD.bYUV_ID ]);
                    OSD_EnableWindow(OSD_MESSAGE, ON);


                    bLastSB = YUV_SB_BITEK;
                    bLastCS = YUV_CS_NONE;
                    break;

                #if (MENU_STYLE_CFG == MENU_STYLE_SCROLLING_1)      ||  \
                    (MENU_STYLE_CFG == MENU_STYLE_SCROLLING_2)      ||  \
                    (MENU_STYLE_CFG == MENU_STYLE_SCROLLING_7)

                case KEY_UP:
                case KEY_IR_UP:
                    bMenuLastItem       = bMenuCurrentItem - bMenuBaseItem + MENU_HUE;
                    bMenuBaseItem       = MENU_HUE;
                    bMenuCurrentItem    = MENU_DISPLAY_MODE;

                    MENU_ShowMainMenuItem(bMenuBaseItem);
                    MENU_UpdateMainMenuCursor(bMenuBaseItem, bMenuLastItem, bMenuCurrentItem);

                    // To clear Sub Menu
                    MENU_ClearMenu(MENU_SUBMENU);

                    DISPATCH_DisplayModeMenu();

                    // To show Sub Menu
                    MENU_EnableMenu(MENU_SUBMENU, ON);
                    break;

                case KEY_DOWN:
                case KEY_IR_DOWN:
                    bMenuLastItem       = bMenuCurrentItem - bMenuBaseItem + MENU_SATURATION;
                    bMenuBaseItem       = MENU_SATURATION;
                    bMenuCurrentItem    = MENU_SHARPNESS;

                    MENU_ShowMainMenuItem(bMenuBaseItem);
                    MENU_UpdateMainMenuCursor(bMenuBaseItem, bMenuLastItem, bMenuCurrentItem);

                    // To clear Sub Menu
                    MENU_ClearMenu(MENU_SUBMENU);

                    DISPATCH_SharpnessMenu();

                    // To show Sub Menu
                    MENU_EnableMenu(MENU_SUBMENU, ON);
                    break;

                #elif (MENU_STYLE_CFG == MENU_STYLE_SCROLLING_3)    ||  \
                      (MENU_STYLE_CFG == MENU_STYLE_SCROLLING_4)

                case KEY_UP:
                case KEY_IR_UP:
                case KEY_DOWN:
                case KEY_IR_DOWN:
                    bMenuLastItem       = bMenuCurrentItem - bMenuBaseItem + MENU_SATURATION;
                    bMenuBaseItem       = MENU_SATURATION;
                    bMenuCurrentItem    = MENU_SHARPNESS;

                    MENU_ShowMainMenuItem(bMenuBaseItem);
                    MENU_UpdateMainMenuCursor(bMenuBaseItem, bMenuLastItem, bMenuCurrentItem);

                    // To clear Sub Menu
                    MENU_ClearMenu(MENU_SUBMENU);

                    DISPATCH_SharpnessMenu();

                    // To show Sub Menu
                    MENU_EnableMenu(MENU_SUBMENU, ON);
                    break;

                #elif (MENU_STYLE_CFG == MENU_STYLE_SCROLLING_5)

                case KEY_UP:
                case KEY_IR_UP:
                    tsEYD.bChannel++;
                    if (tsEYD.bChannel > TUNER_CHANNEL_MAX)
                        tsEYD.bChannel = TUNER_CHANNEL_MIN;

                    TUNER_Tuning(TUNER_VideoFreq(tsEYD.bChannel));

                    // Show Channel
                    OSD_ShowValue(OSD_MESSAGE,
                                  OSD_WINDOW1_WIDTH - OSD_W_VALUE,
                                  OSD_Y_VALUE,
                                  tsEYD.bChannel,
                                  OSD_W_VALUE                           );
                    MENU_EnableMenu(OSD_MESSAGE, ON);

                    break;

                case KEY_DOWN:
                case KEY_IR_DOWN:
                    tsEYD.bChannel--;
                    if (tsEYD.bChannel < TUNER_CHANNEL_MIN)
                        tsEYD.bChannel = TUNER_CHANNEL_MAX;

                    TUNER_Tuning(TUNER_VideoFreq(tsEYD.bChannel));

                    // Show Channel
                    OSD_ShowValue(OSD_MESSAGE,
                                  OSD_WINDOW1_WIDTH - OSD_W_VALUE,
                                  OSD_Y_VALUE,
                                  tsEYD.bChannel,
                                  OSD_W_VALUE                           );
                    MENU_EnableMenu(OSD_MESSAGE, ON);
                    break;

                #elif (MENU_STYLE_CFG == MENU_STYLE_SCROLLING_6)

                case KEY_UP:
                case KEY_IR_UP:
                case KEY_DOWN:
                case KEY_IR_DOWN:
                    bMenuLastItem       = bMenuCurrentItem - bMenuBaseItem + MENU_HUE;
                    bMenuBaseItem       = MENU_HUE;
                    bMenuCurrentItem    = MENU_VOLUME;

                    MENU_ShowMainMenuItem(bMenuBaseItem);
                    MENU_UpdateMainMenuCursor(bMenuBaseItem, bMenuLastItem, bMenuCurrentItem);

                    // To clear Sub Menu
                    MENU_ClearMenu(MENU_SUBMENU);

                    DISPATCH_VolumeMenu();

                    // To show Sub Menu
                    MENU_EnableMenu(MENU_SUBMENU, ON);
                    break;

                #elif (MENU_STYLE_CFG == MENU_STYLE_SCROLLING_8)

                case KEY_UP:
                case KEY_IR_UP:
                    bMenuLastItem       = bMenuCurrentItem - bMenuBaseItem + MENU_BRIGHTNESS;
                    bMenuBaseItem       = MENU_BRIGHTNESS;
                    bMenuCurrentItem    = MENU_BRIGHTNESS;

                    MENU_ShowMainMenuItem(bMenuBaseItem);
                    MENU_UpdateMainMenuCursor(bMenuBaseItem, bMenuLastItem, bMenuCurrentItem);

                    // To clear Sub Menu
                    MENU_ClearMenu(MENU_SUBMENU);

                    DISPATCH_BrightnessMenu();

                    // To show Sub Menu
                    MENU_EnableMenu(MENU_SUBMENU, ON);
                    break;

                case KEY_DOWN:
                case KEY_IR_DOWN:
                    bMenuLastItem       = bMenuCurrentItem - bMenuBaseItem + MENU_CONTRAST;
                    bMenuBaseItem       = MENU_CONTRAST;
                    bMenuCurrentItem    = MENU_CONTRAST;

                    MENU_ShowMainMenuItem(bMenuBaseItem);
                    MENU_UpdateMainMenuCursor(bMenuBaseItem, bMenuLastItem, bMenuCurrentItem);

                    // To clear Sub Menu
                    MENU_ClearMenu(MENU_SUBMENU);

                    DISPATCH_ContrastMenu();

                    // To show Sub Menu
                    MENU_EnableMenu(MENU_SUBMENU, ON);
                    break;

                #else

                case KEY_DOWN:
                case KEY_UP:
                case KEY_IR_DOWN:
                case KEY_IR_UP:
                    bMenuLastItem     = bMenuCurrentItem;

⌨️ 快捷键说明

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