亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? panel.c

?? 車載電子影音系統(tǒng)dvd播放系統(tǒng)原程序代碼
?? C
?? 第 1 頁 / 共 2 頁
字號:
//  *****************************************************************************
//
//              PANEL Module provides display panel output function.
//              1.      NOW, it supports WIBBOND NEC, PANASONIC, ROHM and NJU VFD controller.
//              2.      ALL controlling procedures about these controllers are put
//                      in "VFD_CTRL.H" including :
//                              PANEL_Initial(), _Hardware_CTRL(), PANEL_KeyScan(),
//                              _InByteVFD(), _OutByteVFD, and _LightVFD_LED().
//              3.      If the VFD controller is same as any one above, users need
//                      to revise PANEL.H only. If users want to develop a new VFD
//                      controller PANEL.H & VFD_CTRL.H both need to be revised.
//  -----------------------------------------------------------------------------
//              Version 2.00  For Panel ( gerenal version )
//  -----------------------------------------------------------------------------
//              Copyright (c) 2000, Cheertek Corp. All rights reserved.
//
//  *****************************************************************************

#include "winav.h"
#include "fmanager.h"
/*
#ifndef SYSTEM_8051
#define NO_PANEL
#endif
*/
#include "cc.h"
#include "cdinfo.h"
#include "osd.h"
#include "panel.h"
#include "input.h"
#include "hal.h"
#include "navigate.h"
#include "digest.h"

// ** TCH.277a; begin... 
#ifdef EXT_IO
BYTE    __sbVFDcs;
BYTE    __sbVFDsck;
#endif  // #ifdef   EXT_IO
// ** TCH.277a; end... 

BYTE _bPanelTemp1, _bPanelTemp2;

// LLY.160, some important thing for modification:
// [1] Rename _bOSDMode to _bOSDAppMode, and OSD_MODE_XXX to OSD_APPMODE_XXX

// Micky2.78+one_cpu
// Declare variables only when PANEL ias defined.
#ifndef NO_PANEL
BYTE    _bDisplayRam[VFD_GRID_ARRAY];
BYTE    _bLettTimeMessage[VFD_LETTNUM];
BYTE    *_bLettArray=NULL;
BYTE    _bSetupMenu = NULL;

#ifdef  LIGHT_LED
        BYTE    IDATA _bLedData = 0;
#endif
extern BYTE __bAngle;                   // For ANGLE showing flag
extern BIT __btInputProgram;    // For program showing flag
extern BYTE __bACHN;                    // For 5.1 CHANNEL showing flag
extern  STATUS gcShowStatus;
#endif  //#ifndef NO_PANEL

char    code aNumMap[]
        = { NUM_0, NUM_1, NUM_2, NUM_3, NUM_4, NUM_5, NUM_6, NUM_7, NUM_8, NUM_9};
char    code aMessageOpen[]
        = {0, LETT_O, LETT_P, LETT_E, LETT_N};
char    code aMessageClose[]
        = {LETT_C, LETT_L, LETT_O, LETT_S, LETT_E};
char    code aMessageLoading[]
        = {0, LETT_L, LETT_O, LETT_A, LETT_d};
char    code aMessageNoDisc[]
        = {LETT_N, LETT_O, LETT_d, LETT_S, LETT_C};
char    code aMessageStop[]
        = {0, LETT_S, LETT_t, LETT_O, LETT_P};
char    code aMessagePlaying[]
        = {0, LETT_P, LETT_L, LETT_A, LETT_Y};
char    code aMessagePreStop[]
        = {LETT_P, LETT_S, LETT_t, LETT_O, LETT_P};
char    code aMessageSetup[]
        = {LETT_S, LETT_E, LETT_t, LETT_U, LETT_P};
char    code aMessagePbc[]
        = {0, LETT_P, LETT_b, LETT_c, 0};
char    code aMessageUpgrade[]
        = {0, NUM_1, LETT_o, LETT_r, NUM_2};
char    code aMessageDigest[]
        = {LETT_I, LETT_n, LETT_t, LETT_r, LETT_o};

void    _ShowTime ( WORD wTime);        // ** TCH0.50;
void    _LightCircle();
void    _LETT_To_DisplayRam(void);
void    _Updata_System_Status(void);
void    _Repair_System_Status(void);
void    _Show_Program_Message(void);
void    _Show_GotoTime_Message(void);
void    _Show_Search_Message(void);
#include "VFD_CTRL.h"

//  ***************************************************************************
//  Function    :   PANEL_Trigger
//  Abstract    :   Update the value of ( MIN:SEC ) on panel
//  Arguments   :   wTime
//  Return      :   none
//  ***************************************************************************
void PANEL_Trigger(WORD wTime)
{
#ifndef NO_PANEL
    extern BIT __btPlaying;
    extern BYTE __bSetupMode;

    if((__btInputProgram)||(__bSearchMode!=SEARCH_MODE_OFF)||(__bSetupMode))
        return ;

    if(__btDIGEST)
    {
        _bLettArray = aMessageDigest;
        _LETT_To_DisplayRam();
        _Hardware_CTRL();
    }
    else if((__btPlaying)||(__btPause))
    {
        _ShowTime(gcShowStatus.wCurrentTime);
        _LightCircle();
        _Updata_System_Status();
        _Repair_System_Status();
        _Hardware_CTRL();
    }
#endif
}

//  ***************************************************************************
//  Function    :   _Repair_System_Status
//  Abstract    :   _ShowTime function will clear the bit at LETTER byte(8888 8:88:88)
//                                      so will repair the loss System Status.
//  Arguments   :   none
//  Return      :   none
//  ***************************************************************************
void _Repair_System_Status(void)
{
#ifndef NO_PANEL
    if(__bAGL_Ns)
        _bDisplayRam[VFD_ANGLE_ADDR] |= VFD_ANGLE;
    if(__btProgram)
        _bDisplayRam[VFD_PGM_ADDR] |= VFD_PGM;
    if(__wDiscType & BOOK_DVD)
        _bDisplayRam[VFD_DIGITAL_ADDR] |= VFD_DIGITAL;
#endif
}

//  ***************************************************************************
//  Function    :   PANEL_Output
//  Abstract    :   Display the information according to bMessage and wParam.
//  Arguments   :   bMessage : Specifies the behavior of panel display.
//                  wParam : some bMessage use it !!
//  Return      :   none
//  Side Effect :

//  ***************************************************************************
#pragma NOAREGS
void PANEL_Output(BYTE bMessage, WORD wParam)
{
#ifndef NO_PANEL
    extern BYTE  __bTitle;
    extern WORD  __wChapter;
    extern BYTE  __bTrackNO;
    extern BYTE __bPageNO;
    extern BYTE __bSetupMode;
    extern BYTE _bOSDAppMode;

#ifdef  SHOW_LOADING_STATUS
    // don't clear all LED light
    if ( (bMessage==MSG_WAITING) && (wParam == OSD_SERVO_STABLE) )
    {
        for(_bPanelTemp1=0;_bPanelTemp1<VFD_GRID_ARRAY;_bPanelTemp1++)
            _bDisplayRam[_bPanelTemp1] = 0x00;
    }
    else
#endif
    {
        for(_bPanelTemp1=0;_bPanelTemp1<VFD_GRID_ARRAY;_bPanelTemp1++)
            _bDisplayRam[_bPanelTemp1] = 0x00;
#ifdef LIGHT_LED
        _bLedData = 0xFF;
#endif
    }
    if(gcShowStatus.bPowerDown)
    {
        HAL_WriteGPIO(GPIO_GREEN_LED_LO);
        HAL_WriteGPIO(GPIO_RED_LED_HI);
#ifdef LIGHT_LED
        _bLedData = 0x00;
#endif
        _bLettArray = aMessageLoading;  // Prepare power on show "LOAD dISC" message
        goto HARDWARE_CTRL;
    }
    else
    {
        if(__wW99AVGPCRLow & GPIO_LED_OUTPUT)
        {
            HAL_WriteGPIO(GPIO_GREEN_LED_HI);
            HAL_WriteGPIO(GPIO_RED_LED_LO);
        }
    }

    if(_bOSDAppMode == OSD_APPMODE_GAME)
    {
        _bDisplayRam[VFD_CS_ALL_ADDR] |= VFD_CS_ALL;  // Modify by HCC
        goto HARDWARE_CTRL;
    }
    if((__wDiscType & BOOK_SVCD)||(__wDiscType & BOOK_CVD)||(__wDiscType & BOOK_VCD))
    {
        if(__wPlayItem > 999)
            _bLettArray = aMessagePbc;
    }

    if((bMessage == MSG_OPEN)||(bMessage == MSG_STOP))
    {
        __bSearchMode = 0;                              // System will clear __bSearchMode while do KEY_OPEN or KEY_STOP action
    }
    if(__btInputProgram)                               // Show program message:
    {
           //for DVD program Sunny 1.00b
        _Show_Program_Message();                // like: P 01  008
    }
    if(bMessage == MSG_CLEARPROGRAM)
    {
        if((__bModeCmd == KEY_STOP)&&(_bLettArray!=aMessageLoading))
            _bLettArray = aMessageStop;                   //HLHAN1.01A END
    }
    if(__bSearchMode==SEARCH_MODE_TITLE_CHAPTER)                              // DVD search two mode show
    {                                                                   // 1. Title Chapter Search
        _Show_Search_Message();                 // 2. GotoTime Search
    }
    else if(__bSearchMode==SEARCH_MODE_TIME)                               // CD/VCD/SVCD goto time show
    {
        _Show_GotoTime_Message();
    }
    else
    {
        switch(bMessage)                                // Show LETTER message
        {                                                               // like StOP,LOAD dISC,PLAY, OPEN
            case MSG_OPEN:                          // NO dISC
                if(wParam)
                    _bLettArray = aMessageOpen;
                else if(_bSetupMenu==0)    //to avoid show LOAD DISC in setup mode; LHsu.104
                    _bLettArray = aMessageLoading;
                break;
            case MSG_CHECKLOADER:
            case MSG_WAITING:
                _bLettArray = aMessageLoading;
                break;
            case MSG_DISCTYPE:
                if(__wDiscType == NO_DISC_IN_DRIVE)
                    _bLettArray = aMessageNoDisc;
                break;
            case MSG_STOP:
                _bLettArray = aMessageStop;
                break;
            case MSG_PLAYING:
                if( _bLettArray!= _bLettTimeMessage)
                    _bLettArray = aMessagePlaying;
                break;
            case MSG_AUTOUPGRADE:
                _bLettArray = aMessageUpgrade;
                break;
            case MSG_DIGESTNUMBER:
                _bLettArray = _bLettTimeMessage;
                _bLettArray[0] = 0;
                _bLettArray[1] = 0;
                if(__bPageNO)
                {
                    _bLettArray[2] = 0;
                    if(__wDiscType & VCD_2_0)
                    {
                        _bLettArray[3] = aNumMap[__bTrackNO-__bPageNO *9 -1];
                    }
                    else
                    {
                        _bLettArray[3] = aNumMap[__bTrackNO-__bPageNO];
                    }
                }
                else
                {
                    if(__wDiscType & VCD_2_0)
                    {
                        _bLettArray[2] = aNumMap[(__bTrackNO -1)/10];
                        _bLettArray[3] = aNumMap[(__bTrackNO-1)%10];
                    }
                    else
                    {
                        _bLettArray[2] = aNumMap[__bTrackNO/10];
                        _bLettArray[3] = aNumMap[__bTrackNO%10];
                    }
                }
                _bLettArray[4] = 0;
                break;
        }
    }
    if(_bOSDAppMode == OSD_APPMODE_SETUP)
    {
        if(!_bSetupMenu)
        {
            _bSetupMenu = 1;
            if(_bLettArray == aMessageOpen)
                _bSetupMenu = 2;
            else if(_bLettArray == aMessageNoDisc)
                _bSetupMenu = 3;
            _bLettArray = aMessageSetup;
            if(_bSetupMenu > 1)
            {
                _LETT_To_DisplayRam();
                goto HARDWARE_CTRL;
            }
        }
    }
    else if(_bSetupMenu)
    {
        if(__bModeCmd == KEY_STOP)
        {
            switch(_bSetupMenu)
            {
                case 1:
                    _bLettArray = aMessageStop;
                    break;
                case 2:
                    _bLettArray = aMessageOpen;
                    break;
                case 3:
                    _bLettArray = aMessageNoDisc;
                    break;
            }
        }
        _bSetupMenu = NULL;
    }
// Micky2.79, tune the usage of __bCountStop, don't reference DOUBLE_STOP
// Only DOUBLE_STOP is defined, the value will be 1(pre-stop)
//#ifdef DOUBLE_STOP
    if((_bLettArray == aMessageStop)&&(__bCountStop == 1 ))
        _bLettArray = aMessagePreStop;
//#endif

// Micky.051 for debugging usage ...
    if(bMessage==MSG_VERSION)
    {
        _bLettArray = _bLettTimeMessage;
        _bLettArray[4] = aNumMap[wParam%10];
        wParam/=10;
        _bLettArray[3] = aNumMap[wParam%10];
        wParam/=10;
        _bLettArray[2] = aNumMap[wParam%10];
        wParam/=10;
        _bLettArray[1] = aNumMap[wParam%10];
        wParam/=10;
        _bLettArray[0] = aNumMap[wParam%10];
    }
    // Sunny add for 1.02A
    if(bMessage == MSG_ERRCODE)
    {
        _bLettArray = _bLettTimeMessage;
        _bLettArray[4] = aNumMap[wParam%10];
        wParam/=10;
        _bLettArray[3] = aNumMap[wParam%10];
        wParam/=10;
        _bLettArray[2] = aNumMap[wParam%10];
        wParam/=10;
        _bLettArray[1] = aNumMap[wParam%10];
        wParam/=10;
        _bLettArray[0] = aNumMap[wParam%10];
    }
    _LETT_To_DisplayRam();                  // build Letter to DisplayRam

    if((_bLettArray != aMessageOpen)&&(_bLettArray!=aMessageNoDisc))
    {
        _LightCircle();
        if((_bLettArray != aMessageLoading))
            _Updata_System_Status();
    }
HARDWARE_CTRL:
    _Hardware_CTRL();
 #endif  // ifndef NO_PANEL
}

//  ***************************************************************************
//  Function    :   _Updata_System_Status
//  Abstract    :   Display the information according to system status.
//  Arguments   :   noe.
//  Return      :   none
//  Side Effect :
//  ***************************************************************************
#pragma NOAREGS
void _Updata_System_Status(void)
{
#ifndef NO_PANEL
//---- Disctype DVD CD VCD MP3 SVCD ----------------------------------------
    if(__wDiscType & BOOK_DVD )
    {
        _bDisplayRam[VFD_DVD_ADDR] |= VFD_DVD;
        if(__bSearchMode!=SEARCH_MODE_TIME)
        {
            _bDisplayRam[VFD_TITLE_ADDR] |= VFD_TITLE;
            _bDisplayRam[VFD_CHAPTER_ADDR] |= VFD_CHAPTER;
        }
    }
    else if(__wDiscType & BOOK_CDDA)
    {
        _bDisplayRam[VFD_CD_ADDR]  |= VFD_CD;
    }

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美高清激情brazzers| 日韩一区二区三区免费观看| 蜜臀av一区二区在线免费观看| 国产偷国产偷精品高清尤物| 欧美精品乱码久久久久久| 成人午夜av在线| 精品一区二区三区在线观看| 一级精品视频在线观看宜春院 | 欧美日韩亚州综合| 欧美日韩色一区| 懂色av一区二区三区免费观看| 日韩av在线发布| 一区二区三区产品免费精品久久75| 久久麻豆一区二区| 日韩女优电影在线观看| 在线成人av网站| 91精彩视频在线观看| 成人av免费网站| 国产福利91精品| 经典三级在线一区| 免费不卡在线观看| 日韩国产欧美一区二区三区| 亚洲亚洲人成综合网络| 亚洲欧美日韩在线| 亚洲欧洲精品天堂一级| 中文字幕第一页久久| 国产日韩欧美一区二区三区乱码| 精品久久久久久久久久久久久久久 | 日本一区二区三区四区在线视频| 日韩免费观看2025年上映的电影 | 国产女人aaa级久久久级| 久久亚洲一区二区三区四区| 日韩区在线观看| 日韩丝袜情趣美女图片| 欧美一区二区三区四区在线观看| 欧美三级视频在线| 欧美日韩高清在线播放| 欧美日韩国产综合一区二区| 欧美绝品在线观看成人午夜影视| 欧美午夜一区二区| 91精品午夜视频| 日韩视频在线你懂得| 91精品国产手机| 欧美电视剧免费观看| 精品国产百合女同互慰| 久久亚洲免费视频| 日本一区二区免费在线观看视频| 日韩1区2区日韩1区2区| 视频一区二区国产| 日本成人在线电影网| 久久精品久久99精品久久| 久久激情综合网| 国产成人精品亚洲午夜麻豆| 福利电影一区二区| 99re亚洲国产精品| 欧美日韩免费一区二区三区视频| 7799精品视频| 欧美精品一区二区三区视频| 国产日产欧美一区二区三区 | 国产一区二区三区黄视频| 国产精品99久久久| 色婷婷国产精品综合在线观看| 欧美日韩一区二区在线观看| 精品国产三级a在线观看| 欧美激情在线一区二区三区| 亚洲欧美乱综合| 蜜桃精品视频在线| 国产成人欧美日韩在线电影| 欧洲一区二区三区免费视频| 欧美一区二区三区爱爱| 亚洲自拍与偷拍| 免费在线观看一区| 成人综合日日夜夜| 欧美日韩免费高清一区色橹橹| 欧美成人video| 日韩一区在线免费观看| 免费在线观看一区| 95精品视频在线| 精品国产伦一区二区三区观看体验 | 亚洲视频中文字幕| 日韩成人伦理电影在线观看| 成人av在线观| 欧美一区二区精品在线| 国产精品久久久久久久裸模| 日韩 欧美一区二区三区| 成人影视亚洲图片在线| 日韩一区二区精品| 专区另类欧美日韩| 紧缚奴在线一区二区三区| 91免费国产视频网站| 久久综合九色综合欧美亚洲| 一区二区三区欧美| 91色porny在线视频| 欧美精品一区二区三区四区| 亚洲国产精品视频| av午夜精品一区二区三区| 日韩精品一区国产麻豆| 亚洲综合一区在线| 成人av电影免费观看| 精品久久久久一区二区国产| 亚洲一区二区三区中文字幕在线| 丁香一区二区三区| 精品对白一区国产伦| 亚洲va天堂va国产va久| 色综合天天综合网国产成人综合天 | 欧美日韩国产一二三| 国产精品人成在线观看免费| 蜜桃视频免费观看一区| 欧美日本不卡视频| 尤物av一区二区| 不卡av在线网| 中文字幕成人网| 国产成人啪午夜精品网站男同| 国产欧美日韩不卡| 国内精品久久久久影院一蜜桃| 欧美精品在欧美一区二区少妇| 亚洲乱码日产精品bd| 91热门视频在线观看| 国产精品久久久久一区 | av电影在线观看完整版一区二区| 久久综合九色综合久久久精品综合 | 国产精品国产自产拍高清av| 国产成人免费网站| 国产亚洲一二三区| 国产在线精品一区二区不卡了| 91精品国产综合久久婷婷香蕉| 亚洲妇女屁股眼交7| 欧美亚洲国产一区在线观看网站| 一区二区三区在线观看视频| 99re视频这里只有精品| 亚洲视频在线一区观看| 一本色道久久综合狠狠躁的推荐| 综合在线观看色| 91福利国产精品| 亚洲国产欧美在线| 4438x亚洲最大成人网| 精品一区二区综合| 久久精品一区四区| 成人夜色视频网站在线观看| 亚洲国产高清aⅴ视频| jizz一区二区| 亚洲综合久久久久| 欧美丰满一区二区免费视频 | 国产黄色91视频| 中文字幕欧美激情| 97se亚洲国产综合自在线观| 亚洲激情自拍偷拍| 91精品国模一区二区三区| 久久99精品久久只有精品| 久久久久国产精品人| 99久久综合狠狠综合久久| 亚洲免费成人av| 欧美一区二区三区免费大片 | 成人性生交大片免费| 亚洲女爱视频在线| 6080日韩午夜伦伦午夜伦| 精品无码三级在线观看视频 | 国产精品久久久久久久浪潮网站| 97se亚洲国产综合自在线不卡| 免费黄网站欧美| 国产精品久久午夜| 欧美色倩网站大全免费| 久久国产综合精品| 国产精品久久久久久亚洲毛片 | 日韩精品一区二区在线| 成人免费高清在线| 午夜视黄欧洲亚洲| 久久久久久久电影| 日本高清视频一区二区| 美腿丝袜亚洲综合| 国产精品家庭影院| 777精品伊人久久久久大香线蕉| 韩国欧美国产一区| 亚洲免费三区一区二区| 欧美成人一级视频| 色视频一区二区| 国产一本一道久久香蕉| 一个色综合网站| 欧美国产一区视频在线观看| 欧美日韩在线一区二区| 粉嫩13p一区二区三区| 亚洲国产精品自拍| 国产精品久久免费看| 日韩美一区二区三区| 色哟哟一区二区| 国产精品一级片在线观看| 一级特黄大欧美久久久| 亚洲精品高清在线观看| 精品日韩99亚洲| 欧美亚洲综合网| 成人黄色电影在线| 久久精品久久久精品美女| 一区二区三国产精华液| 久久精品日产第一区二区三区高清版 | 91玉足脚交白嫩脚丫在线播放| 麻豆国产精品777777在线| 尤物av一区二区| 中文字幕一区二区三区av| 久久午夜色播影院免费高清 | 亚洲欧美在线另类|