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

📄 poweroff_main.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
//   
//   
//********************************************************************
#pragma codeseg(APP)
#include <intr6502.h>
#include "sys.h"
#include "MusicPlayer.h"
#include "img_position.h"
#include "ST3110_img_define.h"
#include "PowerOff.h"

extern void _save_setting(void);
extern void _show_low_power_box(void);
extern uint8 counter_2HZ;
extern uint8 vbus_plagin_flag;
extern uint8 state;

void system_sleep(void);
void system_wakeup(void);



void APP_MAIN(void)
{       

        if (API_OsCheckEventOccur(EVID_KEY_UP))
        {               
         API_OsReleaseEvent(EVID_KEY_UP);
         if(API_OsGetKeyId() == KEYID_MODE)
         {
          API_OsPendEvent(EVID_KEY_KEEP_DOWN);
/*
          if(vbus_plagin_flag)
           system_wakeup();
*/           
         }
         //API_OsPendEvent(EVID_KEY_UP);                            
        }


        if (API_OsCheckEventOccur(EVID_KEY_KEEP_DOWN))
        {               
         API_OsReleaseEvent(EVID_KEY_KEEP_DOWN);
         if(API_OsGetKeyId() == KEYID_MODE)
         {
          system_wakeup();
/*
          if(vbus_plagin_flag)
           API_OsPendEvent(EVID_KEY_UP);
*/           
         }
         //API_OsPendEvent(EVID_KEY_KEEP_DOWN);                            
        }

        
        if (API_OsCheckEventOccur(EVID_AUD_THD_RESPONSE))
        {               
         API_OsReleaseEvent(EVID_AUD_THD_RESPONSE);
         if( (API_MusicGetThreadState() == TS_STOP) )
         {
                if(API_SysGetVolLv() < BATTERY_LV0)
                {
                 _show_low_power_box();
                }
                else
                {
                 counter_2HZ = LOWPOWER_WAIT_TIME;
                 API_LcmPutSysImage(IMG_GOODBYE,0,0);
                }
                API_OsPendEvent(EVID_BT_2HZ);
         }
         API_OsPendEvent(EVID_AUD_THD_RESPONSE);                            
        }        


        if (API_OsCheckEventOccur(EVID_BT_2HZ))
        {               
         API_OsReleaseEvent(EVID_BT_2HZ);
         counter_2HZ++;
         //API_LcmShowNumber(counter_2HZ,0,0,1);
         // time out to power off
         if(state == ON_MODE)
         {
           if(counter_2HZ == LOWPOWER_WAIT_TIME)
           {
            API_LcmPutSysImage(IMG_GOODBYE,0,0);
           }
           else if(counter_2HZ == POWEROFF_WAIT_TIME)
           {
             _save_setting();
             if(vbus_plagin_flag)
             {
              system_sleep();
             }
             else
             {
              API_SysPowerOff();
             }
           }
               
         }
         else //to power on
         {
           if(counter_2HZ == POWERON_WAIT_TIME)
             API_OsSetCurrentTask(TASKID_OPENING);
         }
         API_OsPendEvent(EVID_BT_2HZ);
        }
        
        if (API_OsCheckEventOccur(EVID_VBUS_PLUGIN))
        {               
         API_OsReleaseEvent(EVID_VBUS_PLUGIN);
         if(API_SysGetUSBSource() == VBUS_SRC_USB_ON_LINE || API_SysGetUSBSource() == VBUS_SRC_ADAPTER)
         {
          vbus_plagin_flag = TRUE;
         }
         API_OsPendEvent(EVID_VBUS_PLUGIN);                            
        }
        
        if(API_OsCheckEventOccur(EVID_VBUS_PLUGOUT))
        {      
         API_OsReleaseEvent(EVID_VBUS_PLUGOUT);
         API_SysWriteValue(RAM_SHARING_ADR,VBUS_STATE,VBUS_SRC_NONE);
         vbus_plagin_flag = FALSE;
         //if(counter_2HZ == POWEROFF_WAIT_TIME)
         if(state == SLEEP_MODE)
          API_SysPowerOff();
         API_OsPendEvent(EVID_VBUS_PLUGOUT);
        }

        if(API_OsCheckEventOccur(EVID_ALARM_OCCUR))
        {       
                uint32 frame_no;
                uint16 current_song_no;
                
                API_OsReleaseEvent(EVID_ALARM_OCCUR);

                if(API_MusicGetThreadState() == TS_PLAY || API_MusicGetThreadState() == TS_PAUSE)
                {
                 API_MusicGetCurrentSongIndex(&current_song_no);
                 API_SysWriteValue2B(RAM_SHARING_ADR,B_SONG_FILE_L,current_song_no);
                 API_MusicGetFrame(&frame_no);
                 API_SysWriteValue4B(RAM_SHARING_ADR,FRAME_NO_LL,frame_no);
                }
                
                API_SysWriteValue(RAM_SHARING_ADR,LAST_TASK,TASKID_POWEROFF);
                API_OsSetCurrentTask(TASKID_ALARMOCCUR);
                
                API_OsPendEvent(EVID_ALARM_OCCUR);
        }       
}

void system_sleep(void)
{
 // close back light
 API_LcmSetBackLight(0);
 state = SLEEP_MODE;
}

void system_wakeup(void)
{
 uint8 bl;
 uint16 i=0;
 bl = API_SysReadValue(RAM_SETTING_ADR,SET_BL); //level 0~6 ((bl+1)*4)+3
 LCM_CLEAN_SCREEN_ALL();
 //set BL        
 {
  uint8 BL_array[7] = {BL7_L0,BL7_L1,BL7_L2,BL7_L3,BL7_L4,BL7_L5,BL7_L6};
  API_LcmSetBackLight(BL_array[bl]);
 }
 API_LcmPutSysImage(IMG_OPENING,0,0);
 API_OsPendEvent(EVID_BT_2HZ);
 counter_2HZ = 0;
}

⌨️ 快捷键说明

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