📄 autopower.c
字号:
#define AUTOPWR_MAIN_FILE
#include "winav.h"#include "ctkav.h"#include "comdef.h"#include "utl.h"#include "chips.h"#include "romld.h"#include "hal.h"#include "comutl.h"#include "cc.h"#include "RTCdrv.h"#include "autopower.h"#include "input.h"#include "gdi.h"
#include "osd.h"
#include "setup.h"
#include "poweronmenu.h"
#include "mainmenu.h"
#include "menu.h"
#include "settime.h"
#include "autopower.h"
#include "disp.h"
extern BIT __btPowerDown;AUTOPWR_TM __AutoPWROnTM;AUTOPWR_TM __AutoPWROffTM;BOOL __bEnableAutoPWROn;BOOL __bEnableAutoPWROff;BOOL __bTriggerAlarm;BYTE __bAutoPWRState;
//For UI parts
HMENU _hAUTOPWRMenu = MENU_HANDLE_INVALID;
BYTE _bAUTOPWRMode;
SETTIME_TIME _AUTOPWRSetTime;
HSETTIME _hAUTOPWRSetTime = SETTIME_HANDLE_INVALID;
BYTE _bAUTOPWRExitKey[] = {KEY_LEFT};
extern IMAGE_FRAME_SETUPINFO __ImageFrameSetupInfo;
extern BYTE CC_PWRCtrl(void);/************************************************************************** Function : AUTOPWR_InitialValue* Description : Initialize the variables of auto power module * Arguments : None* Return : None* Side Effect :**************************************************************************/void AUTOPWR_Initial ( void ){ __bAutoPWRState = AUTOPWR_NONE;
//Initialize the value
if (__ImageFrameSetupInfo.bAutoPowerOnEnable == AUTOPWR_POWER_ON_ENABLE_ON)
{
AUTOPWR_EnableOn();
}
else
{
AUTOPWR_DisableOn();
}
if (__ImageFrameSetupInfo.bAutoPowerOffEnable == AUTOPWR_POWER_OFF_ENABLE_ON)
{
AUTOPWR_EnableOff();
}
else
{
AUTOPWR_DisableOff();
}
__AutoPWROnTM.bHr = HIBYTE(__ImageFrameSetupInfo.wAutoPowerOnTime);
__AutoPWROnTM.bMin = LOBYTE(__ImageFrameSetupInfo.wAutoPowerOnTime);
__AutoPWROffTM.bHr = HIBYTE(__ImageFrameSetupInfo.wAutoPowerOffTime);
__AutoPWROffTM.bMin = LOBYTE(__ImageFrameSetupInfo.wAutoPowerOffTime);}/************************************************************************** Function : AUTOPWR_EnableOn* Description : Enable auto power on* Arguments : None* Return : None* Side Effect :**************************************************************************/void AUTOPWR_EnableOn(void){ __bEnableAutoPWROn = TRUE;}/************************************************************************** Function : AUTOPWR_DisableOn* Description : Disable auto power on* Arguments : None* Return : None* Side Effect :**************************************************************************/void AUTOPWR_DisableOn(void){ __bEnableAutoPWROn = FALSE;}/************************************************************************** Function : AUTOPWR_EnableOff* Description : Enable auto power off* Arguments : None* Return : None* Side Effect :**************************************************************************/void AUTOPWR_EnableOff(void){ __bEnableAutoPWROff = TRUE;}/************************************************************************** Function : AUTOPWR_DisableOff* Description : Disable auto power off* Arguments : None* Return : None* Side Effect :**************************************************************************/void AUTOPWR_DisableOff(void){ __bEnableAutoPWROff = FALSE;}/************************************************************************** Function : AUTOPWR_SetOnTM* Description : Set auto power on timer* Arguments : None* Return : None* Side Effect :**************************************************************************/void AUTOPWR_SetOnTM ( PAUTOPWR_TM ptm){ __AutoPWROnTM.bHr = ptm->bHr; __AutoPWROnTM.bMin = ptm->bMin; //__AutoPWROnTM.bSec = ptm->bSec; }/************************************************************************** Function : AUTOPWR_GetOnTM* Description : Get auto power on timer* Arguments : None* Return : None* Side Effect :**************************************************************************/void AUTOPWR_GetOnTM ( PAUTOPWR_TM ptm ){ ptm->bHr = __AutoPWROnTM.bHr; ptm->bMin = __AutoPWROnTM.bMin; //ptm->bSec = __AutoPWROnTM.bSec; }/************************************************************************** Function : AUTOPWR_SetOffTM* Description : Set auto power off timer* Arguments : None* Return : None* Side Effect :**************************************************************************/void AUTOPWR_SetOffTM ( PAUTOPWR_TM ptm){ __AutoPWROffTM.bHr = ptm->bHr; __AutoPWROffTM.bMin = ptm->bMin; //__AutoPWROffTM.bSec = ptm->bSec; }/************************************************************************** Function : AUTOPWR_GetOffTM* Description : Get auto power off timer* Arguments : None* Return : None* Side Effect :**************************************************************************/void AUTOPWR_GetOffTM ( PAUTOPWR_TM ptm ){ ptm->bHr = __AutoPWROffTM.bHr; ptm->bMin = __AutoPWROffTM.bMin; //ptm->bSec = __AutoPWROffTM.bSec; }/************************************************************************** Function : AUTOPWR_Trigger* Description : Check auto power status* Arguments : None* Return : None* Side Effect :**************************************************************************/void AUTOPWR_Trigger(void){ _AUTOPWR_Check(); _AUTOPWR_Monitor();}/************************************************************************** Function : _AUTOPWR_Check* Description : Check auto power status* Arguments : None* Return : None* Side Effect :**************************************************************************/void _AUTOPWR_Check ( void ){ AUTOPWR_TM poweron_tm; AUTOPWR_TM poweroff_tm; RTC_TM rtc_tm; RTC_GetTime ( &rtc_tm ); if ( __bEnableAutoPWROn && __btPowerDown) { AUTOPWR_GetOnTM ( &poweron_tm ); if ( (0 == rtc_tm.bSec) &&
(poweron_tm.bHr == rtc_tm.bHr) && (poweron_tm.bMin == rtc_tm.bMin) ) { //Bingo! __bAutoPWRState = AUTOPWR_ON; } } else if ( __bEnableAutoPWROff && !__btPowerDown) { AUTOPWR_GetOffTM ( &poweroff_tm ); if ( (0 == rtc_tm.bSec) &&
(poweroff_tm.bHr == rtc_tm.bHr) && (poweroff_tm.bMin == rtc_tm.bMin) ) { //Bingo! __bAutoPWRState = AUTOPWR_OFF; } } else { __bAutoPWRState = AUTOPWR_NONE; }}/************************************************************************** Function : _AUTOPWR_Monitor* Description : Core state machine of auto power module* Arguments : None* Return : None* Side Effect :**************************************************************************/void _AUTOPWR_Monitor ( void ){ //extern BYTE __bFWKey; if(__bAutoPWRState == AUTOPWR_ON && __btPowerDown) { //Do power switch Off -> On CC_PWRCtrl(); POWERONMENU_Initial(); __bAutoPWRState = AUTOPWR_NONE; } else if(__bAutoPWRState == AUTOPWR_OFF && !__btPowerDown) { //Do power switch On -> Off CC_PWRCtrl(); __bAutoPWRState = AUTOPWR_NONE; } else { //Do nothing __bAutoPWRState = AUTOPWR_NONE; }}/************************************************************************** Function : AUTOPWR_Test* Description : Unit test* Arguments : None* Return : None* Side Effect :**************************************************************************/void AUTOPWR_Test ( void ){ AUTOPWR_TM poweron_tm; AUTOPWR_TM poweroff_tm; poweroff_tm.bHr = 0; poweroff_tm.bMin = 1; //poweroff_tm.bSec = 15; poweron_tm.bHr = 0; poweron_tm.bMin = 2; //poweron_tm.bSec = 20; __bAutoPWRState = AUTOPWR_NONE; AUTOPWR_EnableOn(); AUTOPWR_EnableOff(); RTC_Test_Set(); AUTOPWR_SetOffTM(&poweroff_tm); AUTOPWR_SetOnTM(&poweron_tm);}
//*********************************************************************************************************
// Function : AUTOPWR_Entry
// Abstract : This is the entry function of the Auto-Power.
// Arguments : none.
// Return :
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -