📄 ui.c
字号:
/*++
Copyright (c) 2001 Sunplus Technology Co., Ltd.
Module Name:
ui.c
Abstract:
Module related to user interface
Environment:
Keil C51 Compiler
Revision History:
08/28/2001 Anonymous created
--*/
//=============================================================================
//Header file
//=============================================================================
#include "general.h"
#include "ui.h"
#include "main.h" //yichang
#include "uiflow.h"
//ada@0415 test ui
#include "timer.h"
//Joe@2003.3.4 20:36 add begin
#include "JoeToEvb.h"
#include "string.h"
//Joe@2003.3.4 20:36 add end
//=============================================================================
//Symbol
//=============================================================================
//-----------------------------------------------------------------------------
//Constant
//-----------------------------------------------------------------------------
#if (SIMULATE) // WWWW0409
sbit Key_Column1;
sbit Key_Column2;
#else
sbit Key_Column1 = P3^4;
sbit Key_Column2 = P3^5;
//Joe@2003.3.5 11:12 add begin
sbit Key_Column3 = P3^3;
//Joe@2003.3.5 11:12 add end
#endif
//-----------------------------------------------------------------------------
//Variable
//-----------------------------------------------------------------------------
xdata UCHAR pressing_key;
//ada@0415 test ui
xdata UCHAR old_key;
xdata UCHAR key;
xdata UCHAR old_Audeokey;
//Joe@2003.2.28 10:32 mask begin
/*
xdata UCHAR mode_change;
xdata UCHAR keymode1;
xdata UCHAR old_keymode1;
xdata UCHAR keymode2;
xdata UCHAR old_keymode2;
xdata UCHAR keymode3;
xdata UCHAR old_keymode3;
xdata UCHAR keymode4;
xdata UCHAR old_keymode4;
*/
//Joe@2003.2.28 10:32 mask end
//Joe@2003.2.25 10:10 add begin
extern xdata UCHAR AEtype;//patch4.5@jhyu@50HzTable
extern xdata UCHAR G_KeepPushKeyCount;
//Joe@2003.2.25 10:10 add end
//=============================================================================
//Program
//=============================================================================
//=============================================================================
//InitialGPIO
//=============================================================================
void UI_InitialGPIO(void) USING_0
{
#if(TURNKEY_OPTION == 1)
//L2_SetGPIOBit(8,0); //ROM_A16
//L2_SetGPIOBit(9,0); //ROM_A17
//L2_SetGPIOBit(10,0); //ROM_A18
L2_SetGPIOBit(11,0); //USB_RDY
L2_SetGPIOBit(12,0); //TRIG
//L2_SetGPIOBit(13,0); //ONE_EXTAL
L2_SetGPIOBit(14,0); //POWER_CTRL
L2_SetGPIOBit(15,0); //LCD_BACKLIGHT
//DbgPrint("L2_TurnOnOffDisplay17=%bu\n",17);
L2_SetGPIOBit(16,1); //LCD_POWER //Davis:patch3.01 open
L2_SetGPIOBit(40,1); //LCD_CTRL //Davis:patch5.0.0.3_2005/Jun/30
L2_SetGPIOBit(17,0); //BUZZER
L2_SetGPIOBit(18,0); //USB_DET
L2_SetGPIOBit(29,0);
L2_SetGPIOBit(19,1); //SCAN_A
L2_SetGPIOBit(20,1); //SCAN_B
L2_SetGPIOBit(21,1); //SCAN_C
L2_SetGPIOBit(22,0); //DET_A
L2_SetGPIOBit(23,0); //DET_B
L2_SetGPIOBit(24,0); //DET_C
L2_SetGPIOBit(35,0); //SW_ROM5 //Davis:patch5.0.0.5_2005/Jul/19
L2_SetGPIOBit(25,0); //SW_ROM4
L2_SetGPIOBit(26,0); //SW_ROM3
L2_SetGPIOBit(27,0); //SW_ROM2
L2_SetGPIOBit(28,0); //SW_ROM1
//Davis:patch3.01 mask L2_SetGPIOBit(0,0); //SW_ROM1
XBYTE[0x2d72] = 0xfe; //digtv[8,11]
XBYTE[0x203b] |= 0x20; //gpio29self_led//wendy@2004/8/7
XBYTE[0x2033] &= 0xdf;//gpio29self_led//wendy@2004/8/7
// L2_SetGPIOBit(6,1); //SENSOR_POWER
// L2_SetGPIOBit(7,0); //SENSOR_RESET
XBYTE[0x2c03] &= 0xef; //power_det//wendy@2004/8/10
// XBYTE[0x2050] &= 0xfe;
// XBYTE[0x2058] &= 0x00;
XBYTE[0x2053] &= 0xfe;
XBYTE[0x205b] &= 0x00;
//L2_ConfigGPIOBit(8,0); //ROM_A16
//L2_ConfigGPIOBit(9,0); //ROM_A17
//L2_ConfigGPIOBit(10,0); //ROM_A18
L2_ConfigGPIOBit(11,1); //USB_RDY
L2_ConfigGPIOBit(12,1); //TRIG
//L2_ConfigGPIOBit(13,0); //ONE_EXTAL
L2_ConfigGPIOBit(14,1); //POWER_CTRL
L2_ConfigGPIOBit(15,1); //LCD_BACKLIGHT
L2_ConfigGPIOBit(16,1); //LCD_POWER//Davis:patch3.01 close //open for debug
L2_ConfigGPIOBit(17,1); //BUZZER
L2_ConfigGPIOBit(18,1); //USB_DET
L2_ConfigGPIOBit(19,1); //SCAN_A
L2_ConfigGPIOBit(20,1); //SCAN_B
L2_ConfigGPIOBit(21,1); //SCAN_C
L2_ConfigGPIOBit(22,0); //DET_A
L2_ConfigGPIOBit(23,0); //DET_B
L2_ConfigGPIOBit(24,0); //DET_C
L2_ConfigGPIOBit(35,0); //SW_ROM5 //Davis:patch5.0.0.5_2005/Jul/19
L2_ConfigGPIOBit(25,0); //SW_ROM4
L2_ConfigGPIOBit(26,0); //SW_ROM3
L2_ConfigGPIOBit(27,0); //SW_ROM2
L2_ConfigGPIOBit(28,0); //SW_ROM1
//Davis:pacth3.01 mask L2_ConfigGPIOBit(0,0); //TV_DET
L2_ConfigGPIOBit(29,1); //SELF_TIMER
L2_ConfigGPIOBit(40,1); //LCD_Ctrl //Davis:patch5.0.0.3_2005/Jun/30
L2_ConfigGPIOBit(6,1); //SENSOR_POWER
// L2_ConfigGPIOBit(7,0); //SENSOR_RESET
L2_ConfigGPIOBit(4,1); //gpio 4
L2_ConfigGPIOBit(3,0); //gpio 3
L2_SetGPIOBit(4,0); //SW_ROM1
L2_SetGPIOBit(3,0); //SW_ROM1
XBYTE[0x2038] &= 0xdf; //digtv[8,11]
XBYTE[0x2408] &= 0xcf; //wendy for low power detect //Davis:patch5.0.0.3_2005/Jun/30 FMGPIO28 29
#else
L2_SetGPIOBit(0,0); //TV_DET
L2_SetGPIOBit(1,0); //USB_DET
L2_SetGPIOBit(2,0); //POWER_DET
L2_SetGPIOBit(3,0); //CHARGE_EN
L2_SetGPIOBit(4,0); //CHARGE_OK
L2_SetGPIOBit(5,0); //CHARGE_RDY
L2_SetGPIOBit(6,1); //SENSOR_POWER
L2_SetGPIOBit(7,0); //SENSOR_RESET
//L2_SetGPIOBit(8,0); //ROM_A16
//L2_SetGPIOBit(9,0); //ROM_A17
//L2_SetGPIOBit(10,0); //ROM_A18
//L2_SetGPIOBit(11,0); //ROM_A19
L2_SetGPIOBit(12,0); //TRIG
//L2_SetGPIOBit(13,0); //ONE_EXTAL
L2_SetGPIOBit(14,0); //POWER_CTRL
L2_SetGPIOBit(15,0); //CF_POWER
L2_SetGPIOBit(16,0); //LCD_POWER
L2_SetGPIOBit(17,0); //BUZZER
L2_SetGPIOBit(18,1); //RDY/BUSY
L2_SetGPIOBit(19,0); //SELF_TIMER
//L2_SetGPIOBit(20,0); //OSD_DOWN
//L2_SetGPIOBit(21,0); //
//L2_SetGPIOBit(22,0); //OSD_UP
L2_SetGPIOBit(23,1); //LCD_BRIGHT
L2_SetGPIOBit(24,0); //USB_RDY
L2_SetGPIOBit(25,0); //SW_ROW1
L2_SetGPIOBit(26,0); //SW_ROW2
L2_SetGPIOBit(27,0); //SW_ROW3
L2_SetGPIOBit(28,0); //SW_ROW4
L2_SetGPIOBit(29,0); //SW_MODE1
L2_SetGPIOBit(30,0); //SW_MODE2
//L2_SetGPIOBit(31,0); //STROBE
//L2_SetGPIOBit(32,0); //ACK
//L2_SetGPIOBit(33,0); //DATA
L2_SetGPIOBit(34,0); //LB1
L2_SetGPIOBit(35,0); //LB2
L2_SetGPIOBit(36,0); //LB3
L2_SetGPIOBit(37,0); //SDRAM_CS
L2_SetGPIOBit(38,0); //SW_MODE3
L2_SetGPIOBit(39,0); //SW_MODE4
L2_SetGPIOBit(40,0); //AUDIO_CTRL
//L2_SetGPIOBit(41,0); //
L2_ConfigGPIOBit(0,0); //TV_DET
L2_ConfigGPIOBit(1,0); //USB_DET
L2_ConfigGPIOBit(2,0); //POWER_DET
L2_ConfigGPIOBit(3,1); //CHARGE_EN
L2_ConfigGPIOBit(4,0); //CHARGE_OK
L2_ConfigGPIOBit(5,1); //CHARGE_RDY
L2_ConfigGPIOBit(6,1); //SENSOR_POWER
L2_ConfigGPIOBit(7,0); //SENSOR_RESET
//L2_ConfigGPIOBit(8,0); //ROM_A16
//L2_ConfigGPIOBit(9,0); //ROM_A17
//L2_ConfigGPIOBit(10,0); //ROM_A18
//L2_ConfigGPIOBit(11,0); //ROM_A19
L2_ConfigGPIOBit(12,1); //TRIG
//L2_ConfigGPIOBit(13,0); //ONE_EXTAL
L2_ConfigGPIOBit(14,1); //POWER_CTRL
L2_ConfigGPIOBit(15,1); //CF_POWER
L2_ConfigGPIOBit(16,1); //LCD_POWER
L2_ConfigGPIOBit(17,1); //BUZZER
L2_ConfigGPIOBit(18,1); //RDY/BUSY
L2_ConfigGPIOBit(19,1); //SELF_TIMER
//L2_ConfigGPIOBit(20,0); //OSD_DOWN
//L2_ConfigGPIOBit(21,0); //
//L2_ConfigGPIOBit(22,0); //OSD_UP
L2_ConfigGPIOBit(23,1); //LCD_BRIGHT
L2_ConfigGPIOBit(24,1); //USB_RDY
L2_ConfigGPIOBit(25,0); //SW_ROW1
L2_ConfigGPIOBit(26,0); //SW_ROW2
L2_ConfigGPIOBit(27,0); //SW_ROW3
L2_ConfigGPIOBit(28,0); //SW_ROW4
L2_ConfigGPIOBit(29,0); //SW_MODE1
L2_ConfigGPIOBit(30,0); //SW_MODE2
//L2_ConfigGPIOBit(31,0); //STROBE
//L2_ConfigGPIOBit(32,0); //ACK
//L2_ConfigGPIOBit(33,0); //DATA
L2_ConfigGPIOBit(34,0); //LB1
L2_ConfigGPIOBit(35,0); //LB2
L2_ConfigGPIOBit(36,0); //LB3
L2_ConfigGPIOBit(37,0); //SDRAM_CS
L2_ConfigGPIOBit(38,0); //SW_MODE3
L2_ConfigGPIOBit(39,0); //SW_MODE4
L2_ConfigGPIOBit(40,1); //AUDIO_CTRL
//L2_ConfigGPIOBit(41,0); //
#endif
}
//=============================================================================
//Y_UI_Initialize
//=============================================================================
void UI_Initialize(void) USING_0
{
//Joe@2003.2.27 14:13 mask begin
//UI_InitialGPIO(); //GPIO initialization
//Joe@2003.2.27 14:13 mask end
//ada@0415 test ui
pressing_key = 0x00;
old_key = 0x00;
key = 0x00;
//Joe@2003.2.28 10:32 mask begin
/*
mode_change = 1;
keymode1 = 0;
old_keymode1 = 0;
keymode2 = 0;
old_keymode2 = 0;
keymode3 = 0;
old_keymode3 = 0;
keymode4 = 0;
old_keymode4 = 0;
*/
//Joe@2003.2.28 10:32 mask end
//Joe@2003.2.25 9:57 add begin
G_AutoPowerOffCount = 0;
G_StayInMenuCount = 0;
G_StayInMenu = 0;
G_KeepPushKeyCount = 0;
G_FlashChargingCount = 0;
G_FlashCharging = 0;
G_LowPowerCount = 0;
G_MidPowerCount = 0;
G_HighPowerCount = 0;
G_DisplayMode = K_DisplayModeOsdOn;
G_Language = 0; //English
AEtype = 0;
G_BatteryStatus = K_BATTERY_STATUS_HIGH;
//Joe@2003.2.25 9:57 add end
}
//=============================================================================
//UI_Keypad_Scan
//=============================================================================
void UI_Keypad_Scan(void) USING_0 // @WYEO, 103101
{
//UCHAR USB_Status;
UCHAR mode;
G_KeyState = K_UI_BUTTON_NULL; //yichang
//patch4.2@ada@0527 for Key scan
//G_bRequestLock = 0x60;
//detect if USB is connect....
//USB_Status = USB_Connect_Detect();
//USB_Status = 0;
//Joe@2003.3.5 11:09 add begin
#if(ROTARY_KEY == 1)
//Joe@2003.3.5 11:09 add end
switch(UI_Get_Hardware_Keypad2())
{
case K_RotarySwitchMode0:
mode = (UCHAR)(((G_UIStatusH& UI_Status_Level2_Mask) >> 8) - 1);
if(mode != K_UI_MODE_DSC_PREVIEW)
{
G_KeyState = K_UI_BUTTON_PREVIEW_SWITCH;
}
break;
case K_RotarySwitchMode1:
mode = (UCHAR)(((G_UIStatusH& UI_Status_Level2_Mask) >> 8) - 1);
if(mode != K_UI_MODE_DSC_PLAY)
{
G_KeyState = K_UI_BUTTON_PLAY_SWITCH;
}
break;
case K_RotarySwitchMode2:
mode = (UCHAR)(((G_UIStatusH& UI_Status_Level2_Mask) >> 8) - 1);
if(mode != K_UI_MODE_DSC_VIDEO)
{
G_KeyState = K_UI_BUTTON_VIDEO_SWITCH;
}
break;
case K_RotarySwitchMode3:
mode = (UCHAR)(((G_UIStatusH& UI_Status_Level2_Mask) >> 8) - 1);
if(mode != K_UI_MODE_USB_PCCAM)
{
G_KeyState = K_UI_BUTTON_PCCAM_SWITCH;
}
break;
case K_RotarySwitchMode4:
mode = (UCHAR)(((G_UIStatusH& UI_Status_Level2_Mask) >> 8) - 1);
if(mode != K_UI_MODE_DSC_AUDIO)
{
G_KeyState = K_UI_BUTTON_AUDIO_SWITCH;
}
break;
case K_RotarySwitchPreviousMode:
break;
default: //unknown mode for future use
break;
}
//Joe@2003.3.7 13:21 add begin
#else
mode = (UCHAR)(((G_UIStatus & UI_Status_Level2_Mask) >> 8) - 1);
if (G_IsKeyRelease == 0)
{
if ((mode == K_UI_MODE_USB_PCCAM) || (mode == K_UI_MODE_DSC_PREVIEW))
{
G_KeyState = K_UI_BUTTON_PREVIEW_SWITCH;
}
else if((mode == K_UI_MODE_USB_MASS_STORAGE) || (mode == K_UI_MODE_DSC_PLAY))
{
G_KeyState = K_UI_BUTTON_PLAY_SWITCH;
}
}
#endif
//Joe@2003.3.7 13:21 add end
UI_Get_Hardware_Keypad1();
switch(pressing_key)
{
case K_LeftKey:
if (G_IsKeyRelease == 0)
{
G_KeyState = K_UI_BUTTON_LEFT;
G_IsKeyRelease = 1;
}
break;
case K_UpKey:
if (G_IsKeyRelease == 0)
{
G_KeyState = K_UI_BUTTON_UP;
G_IsKeyRelease = 1;
}
break;
case K_RightKey:
if (G_IsKeyRelease == 0)
{
G_KeyState = K_UI_BUTTON_RIGHT;
G_IsKeyRelease = 1;
}
break;
case K_DownKey:
if (G_IsKeyRelease == 0)
{
G_KeyState = K_UI_BUTTON_DOWN;
G_IsKeyRelease = 1;
}
break;
case K_MenuKey:
if (G_IsKeyRelease == 0)
{
G_KeyState = K_UI_BUTTON_MENU;
G_IsKeyRelease = 1;
}
break;
case K_SelectKey:
if (G_IsKeyRelease == 0)
{
G_KeyState = K_UI_BUTTON_SELECT;
G_IsKeyRelease = 1;
}
break;
case K_Snap1Key:
if (G_IsKeyRelease == 0)
{
G_KeyState = K_UI_BUTTON_SNAP1;
//G_IsKeyRelease = 1;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -