📄 alarm.~c
字号:
#define ALARM_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 "alarm.h"#include "input.h"#include "disp.h"#include "gdi.h"#include "osd.h"#include "setup.h"#include "poweronmenu.h"#include "mainmenu.h"#include "menu.h"#include "settime.h"#include "osdss.h"#ifdef SUPPORT_ALARM_WITH_FM_TUNER#include "radio.h"#endif#define MAXSNDFILESIZE 16384ALARM_TM __Alarm;BOOL __bEnableAlarm;BOOL __bTriggerAlarm;BYTE __bAlarmState;BYTE _bALARMRealStopKey = KEY_NO_KEY;//For UI partsHMENU _hALARMMenu = MENU_HANDLE_INVALID;BYTE _bALARMMode;SETTIME_TIME _AlarmSetTime;HDIALOG _hALARMDlg = DIALOG_HANDLE_INVALID;HSETTIME _hAlarmSetTime = SETTIME_HANDLE_INVALID;
BYTE _bALARMExitKey[] = {KEY_LEFT};extern IMAGE_FRAME_SETUPINFO __ImageFrameSetupInfo;
#ifdef SUPPORT_JPEG_AUDIO_PLAYING
extern void MM_ExitJPEGAudioMode(void);
#endif //SUPPORT_JPEG_AUDIO_PLAYING#ifdef SUPPORT_ALARM_AUTO_EXITDWORD __dwTimerAlarm=0xffffffff;BYTE AlarmTimes=0;#define AlarmPlayMaxTimes 2#endif/************************************************************************** Function : ALARM_InitialValue* Description : Initialize the variables of ALARM module * Arguments : None* Return : None* Side Effect :**************************************************************************/void ALARM_Initial ( void ){ __bTriggerAlarm = FALSE; __bAlarmState = ALARM_NONE; _bALARMRealStopKey = KEY_NO_KEY; if (__ImageFrameSetupInfo.bAlarmEnable == ALARM_ENABLE_ON) { ALARM_Enable(); } else { ALARM_Disable(); } __Alarm.bHr = HIBYTE(__ImageFrameSetupInfo.wAlarmTime); __Alarm.bMin = LOBYTE(__ImageFrameSetupInfo.wAlarmTime);}/************************************************************************** Function : ALARM_Enable* Description : Enable the System Alarm * Arguments : None* Return : None* Side Effect :* *************************************************************************/void ALARM_Enable(void){ __bEnableAlarm = TRUE;}/************************************************************************** Function : ALARM_Disable* Description : Disable the System Alarm * Arguments : None* Return : None* Side Effect :* *************************************************************************/void ALARM_Disable(void){ __bEnableAlarm = FALSE;}/************************************************************************** Function : ALARM_Set* Description : Set Alarm Timer* Arguments : None* Return : None* Side Effect :* *************************************************************************/void ALARM_Set ( PALARM_TM ptm){ //__Alarm.bYear = ptm->bYear; //__Alarm.bMon = ptm->bMon; //__Alarm.bDate = ptm->bDate; __Alarm.bHr = ptm->bHr; __Alarm.bMin = ptm->bMin; //__Alarm.bSec = ptm->bSec; }/************************************************************************** Function : ALARM_Get* Description : Get current Alarm Timer* Arguments : None* Return : None* Side Effect :* *************************************************************************/void ALARM_Get ( PALARM_TM ptm ){ //ptm->bYear = __Alarm.bYear; //ptm->bMon = __Alarm.bMon; //ptm->bDate = __Alarm.bDate; ptm->bHr = __Alarm.bHr; ptm->bMin = __Alarm.bMin; //ptm->bSec = __Alarm.bSec; }/************************************************************************** Function : ALARM_Stop* Description : Stop the Alarm* Arguments : None* Return : None* Side Effect :* *************************************************************************/void ALARM_Stop ( void ){ if ( __bAlarmState == ALARM_GOING ) { __bTriggerAlarm = FALSE; __bAlarmState = ALARM_NONE; _ALARM_StopPlaySound(); if (_hALARMDlg != DIALOG_HANDLE_INVALID) { DIALOG_DeleteDialog(_hALARMDlg, TRUE); _hALARMDlg = DIALOG_HANDLE_INVALID; }#ifdef SUUPORT_ALARM_AGAIN if (__bKey == KEY_STOP) { ALARM_RealStop(); } else { __Alarm.bMin += ALARM_AGAIN_TIME; if (__Alarm.bMin > 59) { __Alarm.bMin -= 60; __Alarm.bHr += 1; } if (__Alarm.bHr > 23) { __Alarm.bHr = 0; } }#endif //SUUPORT_ALARM_AGAIN#ifdef SUPPORT_ALARM_AUTO_EXIT ALARM_RealStop(); AlarmTimes=0;#endif //__bKey = KEY_NO_KEY; //Go to Power on Menu //POWERONMENU_Initial(); __bKey = KEY_FUNCTION; } }#ifdef SUPPORT_ALARM_AUTO_EXITvoid ALARM_TIME_Stop ( void ){ if ( __bAlarmState == ALARM_GOING ) { if( OS_GetSysTimer()-__dwTimerAlarm>COUNT_10_SEC*3) { __bTriggerAlarm = FALSE; __bAlarmState = ALARM_NONE; _ALARM_StopPlaySound(); if (_hALARMDlg != DIALOG_HANDLE_INVALID) { DIALOG_DeleteDialog(_hALARMDlg, TRUE); _hALARMDlg = DIALOG_HANDLE_INVALID; } POWERONMENU_Initial(); AlarmTimes=AlarmTimes+1; if(AlarmTimes<AlarmPlayMaxTimes) { __Alarm.bMin += ALARM_AGAIN_TIME; if (__Alarm.bMin > 59) { __Alarm.bMin -= 60; __Alarm.bHr += 1; } if (__Alarm.bHr > 23) { __Alarm.bHr = 0; } printf("\n alarm tims pause , AlarmTimes=%d",AlarmTimes); } else { ALARM_RealStop(); printf("\n alarm tims pause , AlarmTimes=%d",AlarmTimes); AlarmTimes=0; printf("\n alarm tims stop"); } } }} #endif/************************************************************************** Function : ALARM_Trigger* Description : Check the Alarm should be triggered or not* Arguments : None* Return : None* Side Effect :* *************************************************************************/void ALARM_Trigger(void){ if(__bEnableAlarm && !__btPowerDown) { _ALARM_Check(); _ALARM_Monitor(); #ifdef SUPPORT_ALARM_AUTO_EXIT ALARM_TIME_Stop(); #endif }}/************************************************************************** Function : _ALARM_PlaySound* Description : Playback the Alarm sound* Arguments : None* Return : None* Side Effect :* *************************************************************************/void _ALARM_PlaySound(void){ DWORD dwToneBitSize, dwToneBitStart, dwCnt; PWORD pwPtr; PSECTION_ENTRY pWavTbl; pWavTbl = ROMLD_GetSectionByName(0, "SND1"); pwPtr = (PWORD) pWavTbl->dwRMA; HAL_IOMute(TRUE); //Aron, must do it, otherwise it will play no sound. HAL_ResetAIUPCM(); __bAudioType = HAL_AUDIO_MP3; if ( pWavTbl->dwRSize > MAXSNDFILESIZE ) { pWavTbl->dwRSize = MAXSNDFILESIZE; } dwToneBitSize = (pWavTbl->dwRSize)/sizeof(WORD); //see HAL_SetBuffer for categorization if(__bAttrPlay == ATTR_AVI) //AVI/DivX { dwToneBitStart = DS_AD0BUF_ST_AVI;//DS_AD0BUF_ST_DIVX; } else if(__bAttrPlay & TYPE_CDROM_AUDIO || __bAttrPlay==ATTR_CDDA) //.MP3/.MP2/.WMA/CDDA/CD-DTS { dwToneBitStart = DS_AD0BUF_ST_MM; } //CDROM/ DVDROM motion case except AVI else if(__bAttrPlay & TYPE_CDROM_AV) { dwToneBitStart = DS_AD0BUF_ST_MM_MOTION; } else //DVD/VCD { dwToneBitStart = DS_AD0BUF_ST; } //HAL_WriteAM(HAL_AM_CHANNEL_MODE, bCh); HAL_SetAudioType(HAL_AUDIO_MP3); //HAL_SetAudioType(HAL_AUDIO_MPG); HAL_WriteAM(HAL_AM_PCM_SCALE, VOLUME_MAX); MACRO_MCU_SET_AIU_UNPACKER0_READ_BUFFER(dwToneBitStart, dwToneBitStart+pWavTbl->dwRSize, dwToneBitStart); MACRO_MCU_SET_AIU_UNPACKER1_READ_BUFFER(dwToneBitStart, dwToneBitStart+pWavTbl->dwRSize, dwToneBitStart); for(dwCnt=0; dwCnt<dwToneBitSize; dwCnt++) { *( (volatile WORD *)dwToneBitStart + dwCnt ) = *(pwPtr+dwCnt); } HAL_SetAudioDAC ( AUDIO_FREQ_44K );#ifdef CT909P_IC_SYSTEM *(volatile DWORD *)(0x80000F10) |= 0x10FFFFF; // Set a0 buffer Remainder *(volatile DWORD *)(0x80000F20) |= 0x10FFFFF; // Set a1 buffer Remainder HAL_WriteAM(HAL_AM_PLAY_COMMAND, 1); *(volatile DWORD *)(0x80000F00) &= 0xFFFFFFFC; // Set a0 & a1 buffer remainder disable#else *(volatile DWORD *)(0x80000F10) |= 0x10000F0; // Set buffer Remainder *(volatile DWORD *)(0x80000F00) &= 0xFFFFFFFE; // Set buffer remainder disable HAL_WriteAM(HAL_AM_PLAY_COMMAND, 1);#endif HAL_IOMute(FALSE); }/************************************************************************** Function : _ALARM_StopPlaySound* Description : Stop playback the Alarm sound* Arguments : None* Return : None* Side Effect :* *************************************************************************/void _ALARM_StopPlaySound(void){ HAL_Reset(HAL_RESET_AUDIO); HAL_WriteAM(HAL_AM_PLAY_COMMAND, 0); #ifdef CT909P_IC_SYSTEM *(volatile DWORD *)(0x80000F00) |= 0x3; // Set a0 a1 buffer remainder enable *(volatile DWORD *)(0x80000F10) &= 0x1000000;// Set a0 buffer remainder 0 *(volatile DWORD *)(0x80000F20) &= 0x1000000;// Set a1 buffer remainder 0 #else *(volatile DWORD *)(0x80000F00) |= 0x1; // Set buffer remainder enable *(volatile DWORD *)(0x80000F10) &= 0x1000000;// Set buffer remainder 0 #endif }/************************************************************************** Function : _ALARM_Check* Description : Check the timing to trigger Alarm* Arguments : None* Return : None* Side Effect :* *************************************************************************/void _ALARM_Check ( void ){ ALARM_TM alarm_tm; RTC_TM rtc_tm; __bTriggerAlarm = FALSE; ALARM_Get ( &alarm_tm ); RTC_GetTime ( &rtc_tm ); if ( ( 0 == rtc_tm.bSec) && (alarm_tm.bHr == rtc_tm.bHr) && ( alarm_tm.bMin == rtc_tm.bMin) ) { __bTriggerAlarm = TRUE; } }/************************************************************************** Function : _ALARM_Monitor* Description : State machine of ALARM* Arguments : None* Return : None* Side Effect :* *************************************************************************/void _ALARM_Monitor ( void ){ switch ( __bAlarmState ) {
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -