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

📄 panel.c

📁 ct952 source code use for Digital Frame Photo
💻 C
📖 第 1 页 / 共 3 页
字号:
//  *****************************************************************************////              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 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}//  ***************************************************************************//  Function    :   PANEL_Output

⌨️ 快捷键说明

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