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

📄 alarm.~c

📁 ct952 source code use for Digital Frame Photo
💻 ~C
📖 第 1 页 / 共 2 页
字号:
#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 + -