📄 autopower.c
字号:
// Side Effect : none.
// Notes :
//*********************************************************************************************************
void AUTOPWR_Entry(void)
{
_hAUTOPWRMenu = MENU_HANDLE_INVALID;
//Config the OSD to 8 bit mode.
_AUTOPWR_ConfigOSDRegion();
//Initialize the menu setting.
_MENU_AUTOPWR_Power_On_Enable.bDefaultCursorPos = __ImageFrameSetupInfo.bAutoPowerOnEnable - AUTOPWR_POWER_ON_ENABLE_BEGIN;
_MENU_AUTOPWR_Power_On_Enable.bCheckMenuItemPos = _MENU_AUTOPWR_Power_On_Enable.bDefaultCursorPos;
_MENU_AUTOPWR_Power_Off_Enable.bDefaultCursorPos = __ImageFrameSetupInfo.bAutoPowerOffEnable - AUTOPWR_POWER_OFF_ENABLE_BEGIN;
_MENU_AUTOPWR_Power_Off_Enable.bCheckMenuItemPos = _MENU_AUTOPWR_Power_Off_Enable.bDefaultCursorPos;
_AUTOPWR_ShowMenu();
}
// ***************************************************************************
// Function : _AUTOPWR_ConfigOSDRegion
// Description :
// Arguments : None.
// Return : None.
// Side Effect :
// ***************************************************************************
void _AUTOPWR_ConfigOSDRegion(void)
{
GDI_REGION_INFO RegionInfo;
#ifdef BORROW_FRAME_BUFFER
DWORD dwBufferAddr;
#endif //
GDI_ClearRegion(0);
#ifdef BORROW_FRAME_BUFFER
if ((POWERPNMENU_WIDTH == __RegionList[0].wWidth) && (POWERPNMENU_HEIGHT <= __RegionList[0].wHeight) &&
(GDI_OSD_8B_MODE == __RegionList[0].bColorMode))
{
return;
}
else if (__RegionList[0].bColorMode != GDI_OSD_8B_MODE) // Thumbnail mode & preview mode
{
// Use Frame buffer 1 or 2
dwBufferAddr = DISP_QueryAvailableBuffer();
if (0 == dwBufferAddr)
{
RegionInfo.dwTAddr = DS_OSDFRAME_ST;
}
else
{
RegionInfo.dwTAddr = dwBufferAddr;
}
}
else
{
// Use OSD buffer and Frame buffer 0
RegionInfo.dwTAddr = DS_OSDFRAME_ST; // Use OSD buffer and Frame buffer 0
}
#else
RegionInfo.dwTAddr = DS_OSDFRAME_ST;
#endif // #ifdef BORROW_FRAME_BUFFER
RegionInfo.wWidth = POWERPNMENU_WIDTH;
RegionInfo.wHeight = POWERPNMENU_HEIGHT;
RegionInfo.bColorMode = GDI_OSD_8B_MODE;
#ifdef BORROW_FRAME_BUFFER
OSD_SetRegion(0, TRUE, &RegionInfo);
#else
OSD_SetRegion(0, FALSE, &RegionInfo);
#endif
}
void _AUTOPWR_ShowMenu(void)
{
MAINMENU_InitializeGDI(__SetupInfo.bUIStyle-SETUP_CUSTOM_UI_STYLE_BEGIN);
MAINMENU_DrawMainBackground();
MAINMENU_DrawSelectionHelp(FALSE, FALSE);
//Draw the title
MAINMENU_DrawTitleString(aAUTOPWRAutoPowerSetting, NULL, NULL);
if (_hAUTOPWRMenu == MENU_HANDLE_INVALID)
{
_hAUTOPWRMenu = MENU_CreateMenu(&_MENU_AUTOPWR, AUTOPWR_MAX_VISIBLE_MENU_ITEM_NUM, _bAUTOPWRExitKey);
}
MENU_ShowMenu(_hAUTOPWRMenu, TRUE, MAINMENU_PALETTE_ENTRY_CONTENT_REGION);
_bAUTOPWRMode = AUTOPWR_MODE_MENU;
}
//*********************************************************************************************************
// Function : AUTOPWR_ProcessKey
// Abstract : Call this function to process the keys.
// Arguments : none.
// Return : KEY_NO_KEY: The input key is processed.
// : INVALID_KEY: The input key is not allowed.
// : KEY_BYPASS: Will not process this key and pass it to main flow to process it.
// : KEY_XXX: The main program need do more process for the key.
// Side Effect : none.
// Notes :
//*********************************************************************************************************
BYTE AUTOPWR_ProcessKey(void)
{
WORD wMenuAction;
DWORD dwMenuReturn;
if (__bKey == KEY_FUNCTION)
{
AUTOPWR_Exit(FALSE);
POWERONMENU_BackToMainMenu();
}
switch (_bAUTOPWRMode)
{
case AUTOPWR_MODE_MENU:
dwMenuReturn = MENU_ProcessKey(_hAUTOPWRMenu, __bKey);
wMenuAction = HIWORD(dwMenuReturn);
if (HIWORD(dwMenuReturn) == MENU_ACTION_EXIT)
{
AUTOPWR_Exit(FALSE);
POWERONMENU_BackToMainMenu();
}
else if (wMenuAction == MENU_ACTION_PROCESS_MENU_ITEM)
{
_AUTOPWR_ProcessMenuItem(LOWORD(dwMenuReturn));
}
break;
case AUTOPWR_MODE_SET_TIME_POWER_ON:
case AUTOPWR_MODE_SET_TIME_POWER_OFF:
SETTIME_ProcessKey(_hAUTOPWRSetTime, __bKey);
break;
default:
break;
}
return KEY_NO_KEY;
}
void _AUTOPWR_ProcessMenuItem(BYTE bID)
{
switch (bID)
{
case AUTOPWR_POWER_ON_ENABLE_ON:
AUTOPWR_EnableOn();
//Set the setting to flash.
__ImageFrameSetupInfo.bAutoPowerOnEnable = AUTOPWR_POWER_ON_ENABLE_ON;
#ifdef WRITE_EEPROM_ENABLE //SYSTEM_8051
HAL_WriteStorage(SETUP_ADDR_AUTO_POWER_ON_ENABLE, (BYTE *)&(__ImageFrameSetupInfo.bAutoPowerOnEnable), 1);
#endif
break;
case AUTOPWR_POWER_ON_ENABLE_OFF:
AUTOPWR_DisableOn();
//Set the setting to flash.
__ImageFrameSetupInfo.bAutoPowerOnEnable = AUTOPWR_POWER_ON_ENABLE_OFF;
#ifdef WRITE_EEPROM_ENABLE //SYSTEM_8051
HAL_WriteStorage(SETUP_ADDR_AUTO_POWER_ON_ENABLE, (BYTE *)&(__ImageFrameSetupInfo.bAutoPowerOnEnable), 1);
#endif
break;
case AUTOPWR_POWER_OFF_ENABLE_ON:
AUTOPWR_EnableOff();
//Set the setting to flash.
__ImageFrameSetupInfo.bAutoPowerOffEnable = AUTOPWR_POWER_OFF_ENABLE_ON;
#ifdef WRITE_EEPROM_ENABLE //SYSTEM_8051
HAL_WriteStorage(SETUP_ADDR_AUTO_POWER_OFF_ENABLE, (BYTE *)&(__ImageFrameSetupInfo.bAutoPowerOffEnable), 1);
#endif
break;
case AUTOPWR_POWER_OFF_ENABLE_OFF:
AUTOPWR_DisableOff();
//Set the setting to flash.
__ImageFrameSetupInfo.bAutoPowerOffEnable = AUTOPWR_POWER_OFF_ENABLE_OFF;
#ifdef WRITE_EEPROM_ENABLE //SYSTEM_8051
HAL_WriteStorage(SETUP_ADDR_AUTO_POWER_OFF_ENABLE, (BYTE *)&(__ImageFrameSetupInfo.bAutoPowerOffEnable), 1);
#endif
break;
case AUTOPWR_MAIN_EXIT:
AUTOPWR_Exit(FALSE);
POWERONMENU_BackToMainMenu();
break;
case AUTOPWR_SET_TIME_POWER_ON:
_bAUTOPWRMode = AUTOPWR_MODE_SET_TIME_POWER_ON;
_AUTOPWR_SET_TIME.bHour = __AutoPWROnTM.bHr;
_AUTOPWR_SET_TIME.bMinute = __AutoPWROnTM.bMin;
_hAUTOPWRSetTime = SETTIME_Create(&_AUTOPWR_SET_TIME, &_AUTOPWR_SET_TIME_Action);
if (_hAUTOPWRSetTime != SETTIME_HANDLE_INVALID)
{
SETTIME_Show(_hAUTOPWRSetTime, MAINMENU_PALETTE_ENTRY_CONTENT_REGION, __SetupInfo.bUIStyle-SETUP_CUSTOM_UI_STYLE_BEGIN);
}
break;
case AUTOPWR_SET_TIME_POWER_OFF:
_bAUTOPWRMode = AUTOPWR_MODE_SET_TIME_POWER_OFF;
_AUTOPWR_SET_TIME.bHour = __AutoPWROffTM.bHr;
_AUTOPWR_SET_TIME.bMinute = __AutoPWROffTM.bMin;
_hAUTOPWRSetTime = SETTIME_Create(&_AUTOPWR_SET_TIME, &_AUTOPWR_SET_TIME_Action);
if (_hAUTOPWRSetTime != SETTIME_HANDLE_INVALID)
{
SETTIME_Show(_hAUTOPWRSetTime, MAINMENU_PALETTE_ENTRY_CONTENT_REGION, __SetupInfo.bUIStyle-SETUP_CUSTOM_UI_STYLE_BEGIN);
}
break;
default:
break;
}
}
void AUTOPWR_Exit(BYTE bClearBackground)
{
if (_hAUTOPWRMenu != MENU_HANDLE_INVALID)
{
MENU_DeleteMenu(_hAUTOPWRMenu, bClearBackground);
_hAUTOPWRMenu = MENU_HANDLE_INVALID;
}
if (_hAUTOPWRSetTime != SETTIME_HANDLE_INVALID)
{
SETTIME_Exit(_hAUTOPWRSetTime, TRUE);
_hAUTOPWRSetTime = SETTIME_HANDLE_INVALID;
}
}
//*********************************************************************************************************
// Function : AUTOPWR_Recover
// Abstract : Call this function to do recovery.
// Arguments : bRecoverRegion: OSD_RECOVER_UPPER_REGION/OSD_RECOVER_BOTTOM_REGION.
// Return : TRUE: The region is recovered.
// : FALSE: The region doesn't need to be recovered in THUMB UI.
// Side Effect : none.
// Notes :
//*********************************************************************************************************
BYTE AUTOPWR_Recover(BYTE bRecoverRegion)
{
//Config the OSD to 8 bit mode.
_AUTOPWR_ConfigOSDRegion();
_AUTOPWR_ShowMenu();
if ((_bAUTOPWRMode == AUTOPWR_MODE_SET_TIME_POWER_ON) || (_bAUTOPWRMode == AUTOPWR_MODE_SET_TIME_POWER_OFF))
{
SETTIME_Recover(_hAUTOPWRSetTime);
}
return TRUE;
}
void AUTOPWR_SetTime(BYTE bHour, BYTE bMinute, BYTE bSecond)
{
if (_bAUTOPWRMode == AUTOPWR_MODE_SET_TIME_POWER_ON)
{
__AutoPWROnTM.bHr = bHour;
__AutoPWROnTM.bMin = bMinute;
//Save the alarm time to flash.
__ImageFrameSetupInfo.wAutoPowerOnTime = (bHour << 8) | bMinute;
#ifdef WRITE_EEPROM_ENABLE //SYSTEM_8051
HAL_WriteStorage(SETUP_ADDR_AUTO_POWER_ON_TIME, (BYTE *)&(__ImageFrameSetupInfo.wAutoPowerOnTime), 2);
#endif
}
else
{
__AutoPWROffTM.bHr = bHour;
__AutoPWROffTM.bMin = bMinute;
//Save the alarm time to flash.
__ImageFrameSetupInfo.wAutoPowerOffTime = (bHour << 8) | bMinute;
#ifdef WRITE_EEPROM_ENABLE //SYSTEM_8051
HAL_WriteStorage(SETUP_ADDR_AUTO_POWER_OFF_TIME, (BYTE *)&(__ImageFrameSetupInfo.wAutoPowerOffTime), 2);
#endif
}
SETTIME_Exit(_hAUTOPWRSetTime, TRUE);
MENU_ShowMenu(_hAUTOPWRMenu, TRUE, MAINMENU_PALETTE_ENTRY_CONTENT_REGION);
_bAUTOPWRMode = AUTOPWR_MODE_MENU;
}
void AUTOPWR_CancelSetTime(void)
{
SETTIME_Exit(_hAUTOPWRSetTime, TRUE);
MENU_ShowMenu(_hAUTOPWRMenu, TRUE, MAINMENU_PALETTE_ENTRY_CONTENT_REGION);
_bAUTOPWRMode = AUTOPWR_MODE_MENU;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -