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

📄 clockalarmapi.c

📁 C 代码C 代码C 代码C 代码C 代码C 代码C 代码C 代码C 代码C 代码
💻 C
字号:
//********************************************************************
// Name:     mjpAPI.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:
//   motion jpg function
//   
//   
//********************************************************************

#include <intr6502.h>
#include "sys.h"
#include "img_position.h"
#include "ST3110_img_define.h"
#include "ClockAlarm.h"

#pragma codeseg(APP)

uint8 alarm_state,alarm_selection,alarm_fcous;
uint8 alarm_enable[2];
uint8 alarm_hr[2],alarm_min[2];
uint8 slide_bat_lv_idx,cur_bat_lv_icon_idx;

void _alarm_init(void);
void _alarm1_show(void);
void _alarm2_show(void);
void _alarm_show_update(void);
void _alarm_set(void);
void _exit_to_PhoBro(void);
void _show_battery(void);
uint8 _get_battery_icon_index(void);



void _alarm_init(void)
{
  alarm_state = CLOCKALARM_STATE_BEGIN;
  alarm_selection = 0;
  alarm_fcous = 0;
  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);

  API_LcmSetLanguage(CS_BIG5);
  API_LcmSetCharForm(CHFS_16x16);
  API_LcmSetCharColor(COLOR_WHITE,COLOR_DPF_BG);
  API_LcmEnableKeepBackGround();
  // show BG
  API_LcmPutSysImage(IMG_BACKGD,0,0);
  //show logo
  API_LcmPutSysImage(IMG_HEADER_ALARM,POS_CLKALM_LOG_X,POS_CLKALM_LOG_Y);
  //show battery
  _show_battery();
  slide_bat_lv_idx = _get_battery_icon_index();
  cur_bat_lv_icon_idx =  _get_battery_icon_index();
  
  _alarm1_show();
  _alarm2_show();
  
  _alarm_set();
}

void _alarm1_show(void)
{
 uint8 alarm_fcous_up_x[]={POS_CLKALM_1UP_FCOUS1_X,POS_CLKALM_1UP_FCOUS2_X,POS_CLKALM_1UP_FCOUS3_X};
 uint8 alarm_fcous_up_y[]={POS_CLKALM_1UP_FCOUS1_Y,POS_CLKALM_1UP_FCOUS2_Y,POS_CLKALM_1UP_FCOUS3_Y};
 uint8 alarm_fcous_down_x[]={POS_CLKALM_1DOWN_FCOUS1_X,POS_CLKALM_1DOWN_FCOUS2_X,POS_CLKALM_1DOWN_FCOUS3_X};
 uint8 alarm_fcous_down_y[]={POS_CLKALM_1DOWN_FCOUS1_Y,POS_CLKALM_1DOWN_FCOUS2_Y,POS_CLKALM_1DOWN_FCOUS3_Y};

 if(alarm_selection == 1)
 {
  if(alarm_state != CLOCKALARM_STATE_ADJUST)
  {
   // show selection bar
   API_LcmPutSysImage(IMG_BAR_ON_BACKGD_BEST,POS_CLKALM_SELBAR1_X,POS_CLKALM_SELBAR1_Y);
   // show left right fcous  
   API_LcmPutSysImage(IMG_BUTTON_LEFT,POS_CLKALM_1LEFT_FCOUS_X,POS_CLKALM_1LEFT_FCOUS_Y);
   API_LcmPutSysImage(IMG_BUTTON_RIGHT,POS_CLKALM_1RIGHT_FCOUS_X,POS_CLKALM_1RIGHT_FCOUS_Y);
  }

  if(alarm_state == CLOCKALARM_STATE_SEL_FCOUS)
  {
   // show up/down fcous  
   API_LcmPutSysImage(IMG_BUTTON_UP,alarm_fcous_up_x[alarm_fcous],alarm_fcous_up_y[alarm_fcous]);
   API_LcmPutSysImage(IMG_BUTTON_DOWN,alarm_fcous_down_x[alarm_fcous],alarm_fcous_down_y[alarm_fcous]);
  }

  // show alarm icon
  API_LcmPutSysImage(IMG_ICON_ALARM1_DISABLE+alarm_enable[0],POS_CLKALM_ALARM1_ICON_X,POS_CLKALM_ALARM1_ICON_Y);
  // show hour
  API_LcmPutSysImage(IMG_NUMBER_0_ON+(alarm_hr[0]/10),POS_CLKALM_TIME1_H1_X,POS_CLKALM_TIME1_H1_Y);
  API_LcmPutSysImage(IMG_NUMBER_0_ON+(alarm_hr[0]%10),POS_CLKALM_TIME1_H2_X,POS_CLKALM_TIME1_H2_Y);
  // show colon
  API_LcmPutSysImage(IMG_NUMBER_COLON_ON,POS_CLKALM_COLON1_X,POS_CLKALM_COLON1_Y);
  // show minute
  API_LcmPutSysImage(IMG_NUMBER_0_ON+(alarm_min[0]/10),POS_CLKALM_TIME1_M1_X,POS_CLKALM_TIME1_M1_Y);
  API_LcmPutSysImage(IMG_NUMBER_0_ON+(alarm_min[0]%10),POS_CLKALM_TIME1_M2_X,POS_CLKALM_TIME1_M2_Y);
 }
 else
 {
  // clear selection bar
  API_LcmPutSysImage(IMG_BAR_OFF_BACKGD_BEST,POS_CLKALM_SELBAR1_X,POS_CLKALM_SELBAR1_Y);
  // show alarm icon
  API_LcmPutSysImage(IMG_ICON_ALARM1_OFF+alarm_enable[0],POS_CLKALM_ALARM1_ICON_X,POS_CLKALM_ALARM1_ICON_Y);
  // show hour
  API_LcmPutSysImage(IMG_NUMBER_0_NORMAL+(alarm_hr[0]/10),POS_CLKALM_TIME1_H1_X,POS_CLKALM_TIME1_H1_Y);
  API_LcmPutSysImage(IMG_NUMBER_0_NORMAL+(alarm_hr[0]%10),POS_CLKALM_TIME1_H2_X,POS_CLKALM_TIME1_H2_Y);
  // show colon
  API_LcmPutSysImage(IMG_NUMBER_COLON_NORMAL,POS_CLKALM_COLON1_X,POS_CLKALM_COLON1_Y);
  // show minute
  API_LcmPutSysImage(IMG_NUMBER_0_NORMAL+(alarm_min[0]/10),POS_CLKALM_TIME1_M1_X,POS_CLKALM_TIME1_M1_Y);
  API_LcmPutSysImage(IMG_NUMBER_0_NORMAL+(alarm_min[0]%10),POS_CLKALM_TIME1_M2_X,POS_CLKALM_TIME1_M2_Y);
 }
}

void _alarm2_show(void)
{
 uint8 alarm_fcous_up_x[]={POS_CLKALM_2UP_FCOUS1_X,POS_CLKALM_2UP_FCOUS2_X,POS_CLKALM_2UP_FCOUS3_X};
 uint8 alarm_fcous_up_y[]={POS_CLKALM_2UP_FCOUS1_Y,POS_CLKALM_2UP_FCOUS2_Y,POS_CLKALM_2UP_FCOUS3_Y};
 uint8 alarm_fcous_down_x[]={POS_CLKALM_2DOWN_FCOUS1_X,POS_CLKALM_2DOWN_FCOUS2_X,POS_CLKALM_2DOWN_FCOUS3_X};
 uint8 alarm_fcous_down_y[]={POS_CLKALM_2DOWN_FCOUS1_Y,POS_CLKALM_2DOWN_FCOUS2_Y,POS_CLKALM_2DOWN_FCOUS3_Y};

 if(alarm_selection == 2)
 {
  if(alarm_state != CLOCKALARM_STATE_ADJUST)
  {
   // show selection bar
   API_LcmPutSysImage(IMG_BAR_ON_BACKGD_BEST,POS_CLKALM_SELBAR2_X,POS_CLKALM_SELBAR2_Y);
   // show left right fcous  
   API_LcmPutSysImage(IMG_BUTTON_LEFT,POS_CLKALM_2LEFT_FCOUS_X,POS_CLKALM_2LEFT_FCOUS_Y);
   API_LcmPutSysImage(IMG_BUTTON_RIGHT,POS_CLKALM_2RIGHT_FCOUS_X,POS_CLKALM_2RIGHT_FCOUS_Y);
  }

  if(alarm_state == CLOCKALARM_STATE_SEL_FCOUS)
  {
   // show up down fcous  
   API_LcmPutSysImage(IMG_BUTTON_UP,alarm_fcous_up_x[alarm_fcous],alarm_fcous_up_y[alarm_fcous]);
   API_LcmPutSysImage(IMG_BUTTON_DOWN,alarm_fcous_down_x[alarm_fcous],alarm_fcous_down_y[alarm_fcous]);
  }

  // show alarm icon
  API_LcmPutSysImage(IMG_ICON_ALARM2_DISABLE+alarm_enable[1],POS_CLKALM_ALARM2_ICON_X,POS_CLKALM_ALARM2_ICON_Y);
  // show hour
  API_LcmPutSysImage(IMG_NUMBER_0_ON+(alarm_hr[1]/10),POS_CLKALM_TIME2_H1_X,POS_CLKALM_TIME2_H1_Y);
  API_LcmPutSysImage(IMG_NUMBER_0_ON+(alarm_hr[1]%10),POS_CLKALM_TIME2_H2_X,POS_CLKALM_TIME2_H2_Y);
  // show colon
  API_LcmPutSysImage(IMG_NUMBER_COLON_ON,POS_CLKALM_COLON2_X,POS_CLKALM_COLON2_Y);
  // show minute
  API_LcmPutSysImage(IMG_NUMBER_0_ON+(alarm_min[1]/10),POS_CLKALM_TIME2_M1_X,POS_CLKALM_TIME2_M1_Y);
  API_LcmPutSysImage(IMG_NUMBER_0_ON+(alarm_min[1]%10),POS_CLKALM_TIME2_M2_X,POS_CLKALM_TIME2_M2_Y);
 }
 else
 {
  // clear selection bar
  API_LcmPutSysImage(IMG_BAR_OFF_BACKGD_BEST,POS_CLKALM_SELBAR2_X,POS_CLKALM_SELBAR2_Y);
  // show alarm icon
  API_LcmPutSysImage(IMG_ICON_ALARM2_OFF+alarm_enable[1],POS_CLKALM_ALARM2_ICON_X,POS_CLKALM_ALARM2_ICON_Y);
  // show hour
  API_LcmPutSysImage(IMG_NUMBER_0_NORMAL+(alarm_hr[1]/10),POS_CLKALM_TIME2_H1_X,POS_CLKALM_TIME2_H1_Y);
  API_LcmPutSysImage(IMG_NUMBER_0_NORMAL+(alarm_hr[1]%10),POS_CLKALM_TIME2_H2_X,POS_CLKALM_TIME2_H2_Y);
  // show colon
  API_LcmPutSysImage(IMG_NUMBER_COLON_NORMAL,POS_CLKALM_COLON2_X,POS_CLKALM_COLON2_Y);
  // show minute
  API_LcmPutSysImage(IMG_NUMBER_0_NORMAL+(alarm_min[1]/10),POS_CLKALM_TIME2_M1_X,POS_CLKALM_TIME2_M1_Y);
  API_LcmPutSysImage(IMG_NUMBER_0_NORMAL+(alarm_min[1]%10),POS_CLKALM_TIME2_M2_X,POS_CLKALM_TIME2_M2_Y);
 }
}

void _alarm_show_update(void)
{
 if(alarm_selection == 1)
  _alarm1_show();
 else
  _alarm2_show();
}

//***************************************************************************
// 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]);
 }
}


void _exit_to_PhoBro(void)
{
 // paint photo browser BG
 API_SysWriteValue(RAM_SHARING_ADR,LAST_TASK,TASKID_CLOCKALARM);

 //set photo browser parameter
#if  RECORD_PATH
 API_SysWriteValue(RAM_SHARING_ADR,PHO_PAINT_FLAG,3); 
#else
 API_SysWriteValue(RAM_SHARING_ADR,PHO_PAINT_FLAG,1);
#endif
 API_OsSetCurrentTask(TASKID_PHOTOBROWSER);
}

void _show_battery(void)
{
           API_LcmPutSysImage(IMG_BATTERY_0+_get_battery_icon_index(),POS_MUSBRO_BATTERY_X,POS_MUSBRO_BATTERY_Y);  
}

uint8 _get_battery_icon_index(void)
{
           uint8 bat_lv_icon_index;
           uint8 bat_lv;
         
           bat_lv = API_SysGetVolLv();
           if(BATTERY_LV4 <= bat_lv)                                // > LV4
            bat_lv_icon_index = 4; 
           else if( BATTERY_LV3 <= bat_lv && bat_lv < BATTERY_LV4)  //  LV3<=  <LV4
            bat_lv_icon_index = 3;         
           else if( BATTERY_LV2 <= bat_lv && bat_lv < BATTERY_LV3)  //  LV2<=  <LV3
            bat_lv_icon_index = 2;         
           else if( BATTERY_LV1 <= bat_lv && bat_lv < BATTERY_LV2)  //  LV1<=  <LV2
            bat_lv_icon_index = 1;         
           else if( BATTERY_LV0 <= bat_lv && bat_lv < BATTERY_LV1)  //  LV0<=  <LV1
            bat_lv_icon_index = 0;
           
           return bat_lv_icon_index;
}

⌨️ 快捷键说明

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