📄 panel.~c
字号:
// *****************************************************************************//// 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 "ctkav.h"#include "ctkav_platform.h"// wyc0.50-909, make infofilter.h before Mmanager.h because of Mmanager.h need to reference some information defined in infofilter.h#include "infofilter.h"#include "Mmanager.h"#include "cc.h"#include "osd.h"#include "input.h"#include "hal.h"#include "navigate.h"#include "digest.h"#include "utl.h"#include "srcfilter.h"#ifdef CT950_STYLE#include "VFD_CTRL.h" //CoCo2.38#endif //#ifndef NO_PANEL#include "hio.h"#include "panel.h"#include "VFD_CTRL.h"#ifdef USE_VFD_CTRL BYTE _bPanelTemp1, _bPanelTemp2;extern BIT __btPlaying;extern BYTE __bSetupMode;extern BYTE __bMediaSelectUI;extern BYTE __bThumbnailMode; //Jeff 20050908 add for thubmnail mode show ---// 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.BYTE _bDisplayRam[VFD_GRID_ARRAY];BYTE _bLettTimeMessage[VFD_LETTNUM];BYTE _bLettArray_O[VFD_LETTNUM];BYTE *_bLettArray= 0;BYTE _bSetupMenu = 0;BYTE i=0,j=0,shift_letter=0,Message_length=0,COL_Flash=0;BYTE __bMessage_Now;DWORD __dwTimerCount_PANEL_SHIFT;BYTE PREV_MSG;BYTE _bPKEY_REPEAT=0;#ifdef LIGHT_LEDBYTE IDATA _bLedData = 0;#endifextern PTREE_INFO __pMMVolumeDirTree;extern BYTE __bAngle; // For ANGLE showing flagextern BIT __btInputProgram; // For program showing flagextern BYTE __bACHN; // For 5.1 CHANNEL showing flagextern STATUS gcShowStatus;char code aNumMap[]= { NUM_0, NUM_1, NUM_2, NUM_3, NUM_4, NUM_5, NUM_6, NUM_7, NUM_8, NUM_9};void _OutByteVFD(BYTE bByte);void _Hardware_CTRL(void);void _ShowTime ( WORD wTime); // ** TCH0.50;void _LETT_To_DisplayRam(void);void _Updata_System_Status(void);void _Show_Program_Message(void);void _Show_GotoTime_Message(void);void _Show_Search_Message(void);#elif defined(SW_EXPAND_GPIO)static DWORD _dwPrevTimePanelKey = 0;#endif // #ifdef USE_VFD_CTRL#endif // #ifndef NO_PANELvoid PANEL_Initial(void){#ifndef NO_PANEL#ifndef USE_VFD_CTRL // LLY2.13, nothing need to do // Since, initial system will call API to initial expand GPIO#if 0 REG_PLAT_MPLL_CONTROL |= 0x01E00000; // set 21 ~ 24th bits as 1 to enable panel key detect and output REG_PLAT_SYSTEM_CONFIGURATION1 |= 0x00008000; // set 15th bit as 1 to enable panel scan REG_PLAT_PANEL_CLK = 0x00FF0000; REG_PLAT_PANEL_CFG = 0x00000102; // 0000 0001 0000 0110 // REG_PLAT_PROC1_2ND_INT_MASK_DISABLE = INT_PROC1_2ND_PANEL_IR; // This is for Panel intrrupt // REG_PLAT_PANEL_INTCTRL = 0xFFFF0000; // Edge trigger // REG_PLAT_PANEL_INTCTRL = 0x00000000; // Level trigger REG_PLAT_PANEL_INTCTRL = 0x0000FFFF; // Mask panel interrupt REG_PLAT_PANEL_INT = 0x0; REG_PLAT_PANEL_DISP0 = 0;#endif // #if 0#else __icVFDnow=0x01; HAL_I2CSrc_Ctrl(MUTEX_ACTION_LOCK); _VFD_CS_HI; Message_length=0; for(_bPanelTemp1=0;_bPanelTemp1<VFD_GRID_ARRAY;_bPanelTemp1++) _bDisplayRam[_bPanelTemp1]=0; for(_bPanelTemp1=0;_bPanelTemp1<VFD_LETTNUM;_bPanelTemp1++) _bLettTimeMessage[_bPanelTemp1]=_bLettArray[_bPanelTemp1];#ifndef POWERON_STANDBY //_LETT_To_DisplayRam(); __btPowerDown=0; #endif _VFD_CS_LO; _OutByteVFD(0x87); // Command 4 _VFD_CS_HI; for(_bPanelTemp1=0;_bPanelTemp1<4;_bPanelTemp1++){} _VFD_CS_LO; _OutByteVFD(SETCOMMAND_WRITEDISPLAY); // Command 2 _VFD_CS_HI; for(_bPanelTemp1=0;_bPanelTemp1<4;_bPanelTemp1++){} _VFD_CS_LO; _OutByteVFD(SET_ADDRESS); // Command 3 for(_bPanelTemp2=0;_bPanelTemp2<VFD_GRID_ARRAY;_bPanelTemp2++) _OutByteVFD(_bDisplayRam[_bPanelTemp2]); _VFD_CS_HI; for(_bPanelTemp1=0;_bPanelTemp1<4;_bPanelTemp1++){} _VFD_CS_LO; _OutByteVFD(0x02); // Command 1 _VFD_CS_HI; for(_bPanelTemp1=0;_bPanelTemp1<4;_bPanelTemp1++){} _VFD_CS_LO; _OutByteVFD(0x87); // Command 4 _VFD_CS_HI; for(_bPanelTemp1=0;_bPanelTemp1<4;_bPanelTemp1++){} _VFD_CS_LO; _OutByteVFD(0x03); // Command 1 _VFD_CS_HI; for(_bPanelTemp1=0;_bPanelTemp1<4;_bPanelTemp1++){} _VFD_CS_LO; _OutByteVFD(0x8f); // Command 4 _VFD_CS_HI; for(_bPanelTemp1=0;_bPanelTemp1<4;_bPanelTemp1++){} HAL_I2CSrc_Ctrl(MUTEX_ACTION_UNLOCK); __icVFDnow=0x00; /*#ifndef POWERON_STANDBYHAL_WriteGPIO(GPIO_GREEN_LED_HI);HAL_WriteGPIO(GPIO_RED_LED_LO);#endif*/#endif // #define USE_VFD_CTRL#endif // NO_PANEL }#ifdef ADC_KEY#define ADCGLB (*(volatile int *)(0x8000407C)) BYTE RDATA0,RDATA1;DWORD wADCTemp;#endif#include "key.h"BYTE PANEL_KeyScan(void){//#ifdef CT951_PLATFORM //CoCo2.38#ifdef ENABLE_PANEL_KEYSCAN#ifdef ADC_KEY BYTE bGetKey=0; extern BYTE __bThumbnailMode; extern BYTE __bSetupMode; extern BYTE _bOSDNDMsg; RDATA0 = 0xFF; RDATA1 = 0xFF; //wADCTemp = ADCGLB & 0xFF00FFFF; // reset [23:16] //ADCGLB = wADCTemp | 0x008e0000; // write [23:16] 8e ADCGLB = 0x00840000; for (RDATA0=0xF8;RDATA0<0xFE;RDATA0++); wADCTemp = ADCGLB; RDATA0 = (BYTE) (wADCTemp >>24); //wADCTemp = ADCGLB & 0xFF00FFFF; // reset [23:16] //ADCGLB = wADCTemp | 0x00C40000; // write [23:16] A4 #if (DECODER_SYSTEM == DMP952A_EVAL) ADCGLB = 0x00C40000; //FS #endif #if (DECODER_SYSTEM == DMP956A_EVAL) ADCGLB = 0x00E40000; //FE #endif for (RDATA1=0xF8;RDATA1<0xFE;RDATA1++); //printf("wADCTemp = %lx",(wADCTemp | 0x00C40000)); //ADCGLB = 0x00000000; //ADCGLB = 0x00C40000; wADCTemp = ADCGLB; RDATA1 = (BYTE) (wADCTemp >>24); if(RDATA0< 0xF0) { if (RDATA0 > 0xD0) { bGetKey=1; } else if(RDATA0 > 0x90) { bGetKey=2; } else if(RDATA0 > 0x60) { bGetKey=3; } else if(RDATA0 > 0x10) { bGetKey=4; } else { bGetKey=5; } } if(RDATA1< 0xF0) { if (RDATA1 > 0xD0) { bGetKey=6; } else if(RDATA1 > 0x90) { bGetKey=7; } else if(RDATA1 > 0x60) { bGetKey=8; } else if(RDATA1 > 0x10) { bGetKey=9; } else { bGetKey=10; } } if(bGetKey) { printf("\n bGetKey=%d",bGetKey); } return aScanMap[bGetKey];#endif // KEY_8#endif // #ifdef ENABLE_PANEL_KEYSCAN return KEY_NO_KEY;}// ***************************************************************************// Function : PANEL_Trigger// Abstract : Update the value of ( MIN:SEC ) on panel// Arguments : wTime// Return : none// ***************************************************************************// LLY2.53, expand time value unit from WORD to DWORD// Since, we will use [23:16]:hour, [15:8]: min, [7:0]: sec//void PANEL_Trigger(WORD wTime)void PANEL_Trigger(DWORD dwTime){#ifndef NO_PANEL#ifdef USE_VFD_CTRL extern BIT __btPlaying; extern BYTE __bSetupMode; if(__bSetupMode==1) //to avoid show LOAD DISC in setup mode; LHsu.104 { for (i=0;i<10;i++) _bLettArray_O[i]=0; Message_length=4; _bLettArray = _bLettTimeMessage; _bLettArray_O[0] = LETT_S; _bLettArray_O[1] = LETT_E; _bLettArray_O[2] = LETT_t; _bLettArray_O[3] = LETT_U; _bLettArray_O[4] = LETT_P; } else if ((__bMediaSelectUI==1)||(__bThumbnailMode)) { for (i=0;i<10;i++) _bLettArray_O[i]=0; Message_length=2; _bLettArray = _bLettTimeMessage; _bLettArray_O[0] = LETT_DASH; _bLettArray_O[1] = LETT_DASH; _bLettArray_O[2] = LETT_DASH; } else if (!(__wDiscType & CDROM_M1)||(__bMMMenuID != MM_MENU_NONE)) //Jeff 20050908 modify for Jpeg show PANEL_Output(__bMessage_Now,3); // Micky1.20, 4M flash /*#ifndef NO_DIGESTif(__btDIGEST){_bLettArray = aMessageDigest;_LETT_To_DisplayRam(); // _Hardware_CTRL(); } else #endif*/if ((__bSetupMode==0)&&(__bMediaSelectUI==0)&& (!__bThumbnailMode)){ if ((__btPlaying && __dwMMJPEGPreview==false)||(__btPause)) { // LLY2.53, expand the time value from WORD to DWORD unit // Since, we will use [23:16]:hour, [15:8]:min, [7:0]: sec //_ShowTime(gcShowStatus.wCurrentTime); _ShowTime(gcShowStatus.dwCurrentTime); _Updata_System_Status(); // _Hardware_CTRL(); }}if ((Message_length>0)&&(!__btPowerDown)){ _bLettArray = _bLettTimeMessage; for (i=0;i<5;i++) { _bLettArray[i]=0; }#ifdef Pannel_running j=shift_letter; if (Message_length<VFD_NUM) { for (i=0;i<VFD_NUM;i++) { _bLettArray[i]=_bLettArray_O[i]; } } else { for (i=(VFD_NUM);i>0;i--) { _bLettArray[i-1]=_bLettArray_O[j]; if (j==0) break; else j--; } } if ((OS_GetSysTimer()-COUNT_500_MSEC)>__dwTimerCount_PANEL_SHIFT) { __dwTimerCount_PANEL_SHIFT=OS_GetSysTimer(); shift_letter++; if (shift_letter>Message_length+VFD_NUM) { shift_letter=0; } } #else for (i=0;i<VFD_NUM;i++) { _bLettArray[i]=_bLettArray_O[i]; } #endif // #ifdef Pannel_running _LETT_To_DisplayRam(); }_Hardware_CTRL(); #endif // #ifdef USE_VFD_CTRL#endif // #ifndef NO_PANEL}// ***************************************************************************
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -