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

📄 alarmoccur_init.c

📁 C 代码C 代码C 代码C 代码C 代码C 代码C 代码C 代码C 代码C 代码
💻 C
字号:
//********************************************************************
// Name:     MusicAPI.c
// 
// Copyright (C) Sitronix TECHNOLOGY INC.
// All rights reserved by Sitronix TECHNOLOGY INC.
//
// Project:    ST3110
// Author:      Terry Wu
// Begin Date:  2008/01/01
// Last update: 2008/04/01
// $Header: $
// Description:
//   music function
//   
//   
//********************************************************************



#include <intr6502.h>
#include <stdlib.h>
#include "sys.h"
#include "img_position.h"
#include "ST3110_img_define.h"
#include "MusicPlayer.h"
#pragma codeseg(APP)

uint8 counter_2hz;
uint8 timer;
uint8 alarm_state,bg_music_state;
void _alarm_set(void);
uint8 PlayAlarmRing(void);

#define ALARM_STATE_BEGIN         0
#define ALARM_STATE_MUSIC_END     1
#define ALARM_STATE_RING_END      2
#define ALARM_STATE_MUSIC_RESUME  3

void APP_INIT(void)
{       
  counter_2hz = 0;
  timer = 0;
  alarm_state = ALARM_STATE_BEGIN;

  if( (API_MusicGetThreadState() == TS_PLAY) || (API_MusicGetThreadState() == TS_PAUSE))
  {
   API_MusicStop();
   API_OsPendEvent(EVID_AUD_THD_RESPONSE);
   bg_music_state = API_MusicGetThreadState();
   if ((API_MusicGetThreadState() == TS_PAUSE) && (API_SysReadValue(RAM_SHARING_ADR,LAST_TASK) == TASKID_VIDEOPLAYER))
    API_SysWriteValue(RAM_SHARING_ADR,PAUSE_VIDEO,1);
  }
/*  
  else if((API_VideoGetThreadState() == TS_PLAY) || (API_VideoGetThreadState() == TS_PAUSE))
  {
   API_VideoStop();
   API_OsPendEvent(EVID_VID_THD_RESPONSE);  
  }
*/  
  else
  {
   API_LcmPutSysImage(IMG_BACKGD,0,0);
   if(PlayAlarmRing())
     API_MusicSetRepeatMode(RM_REP_1);
   alarm_state = ALARM_STATE_MUSIC_END;     
   API_OsPendEvent(EVID_BT_2HZ);        
  }
  _alarm_set();

 //API_OsPendEvent(EVID_BT_2HZ);
 API_OsPendEvent(EVID_AUD_THD_RESPONSE);
 API_OsPendEvent(EVID_KEY_DOWN_60MS);
 API_OsPendEvent(EVID_KEY_UP);
 API_OsPendEvent(EVID_KEY_KEEP_DOWN);
 API_OsPendEvent(EVID_UPDATE_SD);
 API_OsPendEvent(EVID_VBUS_PLUGIN);
 API_OsPendEvent(EVID_VBUS_PLUGOUT);
 API_OsPendEvent(EVID_UPDATE_BATVOL);
}

//***************************************************************************
// Func:        void _alarm_set(void)
// Input:       alarm parameter from RAM Setting value
// Output:      none
//
// Description: set near alarm time according to current time      
//
//***************************************************************************
void _alarm_set(void)
{
 uint8 alarm_enable[2];
 uint8 alarm_hr[2],alarm_min[2];
 uint8 hour,minute,alarm_select;
 
 hour = API_TimeGetHour();
 minute = API_TimeGetMinute();
 alarm_enable[0] = API_SysReadValue(RAM_SETTING_ADR,SET_ALARM1_EN);
 alarm_enable[1] = API_SysReadValue(RAM_SETTING_ADR,SET_ALARM2_EN);
 alarm_hr[0] = API_SysReadValue(RAM_SETTING_ADR,SET_ALARM1_HOUR);
 alarm_hr[1] = API_SysReadValue(RAM_SETTING_ADR,SET_ALARM2_HOUR);
 alarm_min[0] = API_SysReadValue(RAM_SETTING_ADR,SET_ALARM1_MIN);
 alarm_min[1] = API_SysReadValue(RAM_SETTING_ADR,SET_ALARM2_MIN);
  
 
 if(alarm_enable[0] && alarm_enable[1]) // all alarm1 and alarm2 are on
 {
  if( (uint8)(alarm_hr[0]-hour) < (uint8)(alarm_hr[1]-hour) )//alarm1
  {
   alarm_select = 1;
  }
  else if( (alarm_hr[0]-hour) == (alarm_hr[1]-hour) )
  {
   if( (uint8)(alarm_min[0]-minute) < (uint8)(alarm_min[1]-minute) ) // alarm1 
   {
    alarm_select = 1;
    if(alarm_min[0]-minute == 0)
    {
     alarm_select = 2;
    }
   }
   else if( (alarm_min[0]-minute) == (alarm_min[1]-minute) ) //both
   {
    alarm_select = 1;
   }
   else //alarm2
   {
    if(alarm_min[1]-minute == 0)
    {
     alarm_select = 1;
    }
    else
    {
     alarm_select = 2;
    }
   }
  }
  else //alarm2
  {
   alarm_select = 2;
  }
  
  
 }
 else if(alarm_enable[0]) // alarm1
 {
  alarm_select = 1;
 }
 else if(alarm_enable[1]) // alarm2
 {
  alarm_select = 2;
 }
 if(alarm_enable[0] || alarm_enable[1])
 {
  API_TimeSetAlertHour(alarm_hr[alarm_select-1]);
  API_TimeSetAlertMinute(alarm_min[alarm_select-1]);
 }
}


uint8 PlayAlarmRing(void)
{
 //return API_MusicPlayResMedia(0,2);
 return API_MusicPlayResMedia(0,0);
 //return 1;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -