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

📄 photoshow_main.c

📁 C 代码C 代码C 代码C 代码C 代码C 代码C 代码C 代码C 代码C 代码
💻 C
字号:
//********************************************************************
// Name:    mjp_ap_main.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:
//   deal with event 
//   
//   
//********************************************************************

#include <intr6502.h>
#include <stdlib.h>
#include "sys.h"
#include "PhotoShow.h"
#include "PhotoBrowser.h"
#include "img_position.h"
#include "ST3110_img_define.h"

#pragma codeseg(APP)

extern uint8 sfnPtr[13],lfnPtr[256];
extern uint16 Folders,Files;
extern uint16 current_file_no;
extern uint8 slide_show_enable,slide_time,slide_seq,bl;
extern uint8 photo_action;
extern uint8 del_all_flag;
extern uint8 photo_state;
uint16 counter_2HZ;

void v_process_key_events(void);
extern void _PhoShow_play_next(void);
extern void _PhoShow_play_last(void);
extern void _PhotoShow_play_random(void);
        
void APP_MAIN(void)
{
 v_process_key_events();        
}


void v_process_key_events(void)
{
        // 1s, 2s, 3, 5s, 10s, 30s, 1m, 5m, 30m, 1hr, 2hr
        uint16 slide_time_array[] = {2,4,6,10,20,60,120,600,3600,7200,14400};
        
        if(API_OsCheckEventOccur(EVID_KEY_DOWN_60MS))
        {       
                API_OsReleaseEvent(EVID_KEY_DOWN_60MS);
                //if(del_all_flag || photo_state == PHO_STATE_ERROR)
                if(del_all_flag)
                {
                 // paint photo browser BG
                 API_SysWriteValue(RAM_SHARING_ADR,LAST_TASK,TASKID_PHOTOSHOW);
                 //set photo browser parameter
                 API_SysWriteValue(RAM_SHARING_ADR,PHO_PAINT_FLAG,3); 
                 API_OsSetCurrentTask(TASKID_PHOTOBROWSER);
                 return;                      
                }
                
                switch(API_OsGetKeyId())
                {
                 case KEYID_PLAY:
                        if( (API_PhotoGetThreadState() == TS_PLAY ) || (photo_state == PHO_STATE_PLAY))
                        {
                         API_PhotoAbort();
                         photo_action = PHOTOSHOW_ACTION_PLAY;
                         photo_state = PHO_STATE_STOP;
                        }
                        else
                        {
                         API_OsSetCurrentTask(TASKID_PHOTOMENU);
                         return;                      
                        }
                        break;
                 case KEYID_UP:
                        if(bl < BL_NUM-1)
                         bl++;
                         
                         //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_SysWriteValue(RAM_SETTING_ADR,SET_BL,bl);            
                        break;
                 case KEYID_DOWN:
                        if(bl > 0)
                         bl--;

                         //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_SysWriteValue(RAM_SETTING_ADR,SET_BL,bl);            
                        break;
                 case KEYID_RIGHT:
                        if(API_PhotoGetThreadState() == TS_PLAY)
                        {
                         API_PhotoAbort();
                         photo_state = PHO_STATE_STOP;
                         photo_action = PHOTOSHOW_ACTION_RIGHT;
                        }
                        else
                        {
                         API_OsReleaseEvent(EVID_BT_2HZ);
                         _PhoShow_play_next();
                        }
                        break;
                 case KEYID_LEFT:
                        if(API_PhotoGetThreadState() == TS_PLAY)
                        {
                         API_PhotoAbort();
                         photo_state = PHO_STATE_STOP;
                         photo_action = PHOTOSHOW_ACTION_LEFT;
                        }
                        else
                        {
                         API_OsReleaseEvent(EVID_BT_2HZ);
                         _PhoShow_play_last();
                        }
                        break;
                 default:
                        break;
                }
                API_OsPendEvent(EVID_KEY_DOWN_60MS);
        }

        if(API_OsCheckEventOccur(EVID_KEY_UP))
        {
         API_OsReleaseEvent(EVID_KEY_UP);
         if(API_OsGetKeyId() == KEYID_MODE)
         {
          if( (API_PhotoGetThreadState() == TS_PLAY ) || (photo_state == PHO_STATE_PLAY))
          {
            API_PhotoAbort();
            photo_state = PHO_STATE_STOP;
            photo_action = PHOTOSHOW_ACTION_MODE;
          }
          else
          {
            // paint photo browser BG
            API_SysWriteValue(RAM_SHARING_ADR,LAST_TASK,TASKID_PHOTOSHOW);

            //set photo browser parameter
            API_SysWriteValue(RAM_SHARING_ADR,PHO_PAINT_FLAG,3); 
            API_OsSetCurrentTask(TASKID_PHOTOBROWSER);
            return;                      
          }         
         }
         API_OsPendEvent(EVID_KEY_UP);
        } 
 
        if(API_OsCheckEventOccur(EVID_KEY_KEEP_DOWN))
        {
         API_OsReleaseEvent(EVID_KEY_KEEP_DOWN);
         if(API_OsGetKeyId() == KEYID_MODE)
         {
          if( (API_PhotoGetThreadState() == TS_PLAY ) || (photo_state == PHO_STATE_PLAY))
          {
            API_PhotoAbort();
            photo_state = PHO_STATE_POWEROFF;
            photo_action = PHOTOSHOW_ACTION_MODE;
          }
          else
          {
           API_OsSetCurrentTask(TASKID_POWEROFF);
           return;
          }
         }
         API_OsPendEvent(EVID_KEY_KEEP_DOWN);
        }  
                           
        if(API_OsCheckEventOccur(EVID_PHOTO_RESPONSE))
        {       
                API_OsReleaseEvent(EVID_PHOTO_RESPONSE);
                switch(API_PhotoGetThreadState())
                {
                 case TS_FILEEND:
                        if(slide_show_enable)
                        {
                         counter_2HZ = 0;
                         API_OsPendEvent(EVID_BT_2HZ);
                        }
                        switch(photo_action)
                        {
                         case PHOTOSHOW_ACTION_MODE:
                               if(photo_state == PHO_STATE_STOP) 
                               {
                                // paint photo browser BG
                                API_SysWriteValue(RAM_SHARING_ADR,LAST_TASK,TASKID_PHOTOSHOW);
                                //set photo browser parameter
                                API_SysWriteValue(RAM_SHARING_ADR,PHO_PAINT_FLAG,3); 
                                API_OsSetCurrentTask(TASKID_PHOTOBROWSER);
                               }
                               else if(photo_state == PHO_STATE_POWEROFF)
                               {
                                API_OsSetCurrentTask(TASKID_POWEROFF);
                               }
                                return;
                                //break;
                         case PHOTOSHOW_ACTION_PLAY:
                                API_OsSetCurrentTask(TASKID_PHOTOMENU);
                                return;
                                //break;
                         case PHOTOSHOW_ACTION_RIGHT:
                                API_OsReleaseEvent(EVID_BT_2HZ);
                                _PhoShow_play_next();
                                break;
                         case PHOTOSHOW_ACTION_LEFT:
                                API_OsReleaseEvent(EVID_BT_2HZ);
                                _PhoShow_play_last();
                                break;
                         case PHOTOSHOW_ACTION_SD:
                                API_OsSetCurrentTask(TASKID_CHANGESOURCE);
                                return;
                                //break;
                         case PHOTOSHOW_ACTION_USB:
                                API_SysWriteValue(RAM_SHARING_ADR,LAST_TASK,TASKID_PHOTOSHOW);
                                API_OsSetCurrentTask(TASKID_USBAPP);
                                return;
                                //break;
                         case PHOTOSHOW_ACTION_ALARM:
                               {
                                uint32 frame_no;
                                uint16 current_song_no;
          
                                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_PHOTOSHOW);
                                API_OsSetCurrentTask(TASKID_ALARMOCCUR);
                                return;
                                //break;
                               }
                        }
                        photo_action = PHOTOSHOW_ACTION_NONE;
                        photo_state = PHO_STATE_STOP;
                        break;
                 default:
                        break;
                }
                API_OsPendEvent(EVID_PHOTO_RESPONSE);
        }
        
        if(API_OsCheckEventOccur(EVID_BT_2HZ))
        {       
                API_OsReleaseEvent(EVID_BT_2HZ);
                counter_2HZ++;
                if( counter_2HZ == slide_time_array[slide_time])
                {
                 if(slide_seq)
                  _PhotoShow_play_random();
                 else
                  _PhoShow_play_next();
                 counter_2HZ = 0;
                }
                else
                {
                 API_OsPendEvent(EVID_BT_2HZ);
                }
        } 
                       
        if(API_OsCheckEventOccur(EVID_UPDATE_SD))
        {
         API_OsReleaseEvent(EVID_UPDATE_SD);
         
         if(API_PhotoGetThreadState() == TS_PLAY)
         {
          API_PhotoAbort();
          photo_state = PHO_STATE_STOP;
          photo_action = PHOTOSHOW_ACTION_SD;
         }
         else
         {
          API_OsSetCurrentTask(TASKID_CHANGESOURCE);
          return;           
         }
                                     
         API_OsPendEvent(EVID_UPDATE_SD);
        }
 
        if (API_OsCheckEventOccur(EVID_VBUS_PLUGIN))
        {              
         API_OsReleaseEvent(EVID_VBUS_PLUGIN);
         if(API_SysGetUSBSource() == VBUS_SRC_USB_ON_LINE)
         {
          if(API_PhotoGetThreadState() == TS_PLAY)
          {
           API_PhotoAbort();
           photo_state = PHO_STATE_STOP;
           photo_action = PHOTOSHOW_ACTION_USB;
          }
          else
          {
                uint32 frame_no;
                uint16 current_song_no;
                
                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_PHOTOSHOW);
                API_SysWriteValue(RAM_SHARING_ADR,VBUS_STATE,VBUS_SRC_USB_ON_LINE);
                API_OsSetCurrentTask(TASKID_USBAPP);
                return;                          
          }
         }
         else
         {
          API_SysWriteValue(RAM_SHARING_ADR,VBUS_STATE,VBUS_SRC_ADAPTER);
          //
         }
         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);
         //API_LcmPutSysImage((API_SysGetVolLv()/4)+IMG_BATTERY_0,POS_MUSBRO_BATTERY_X,POS_MUSBRO_BATTERY_Y);
         API_OsPendEvent(EVID_VBUS_PLUGOUT);
        }              
 
        if(API_OsCheckEventOccur(EVID_UPDATE_BATVOL))
        {      
         uint8 bat_lv;
               
         API_OsReleaseEvent(EVID_UPDATE_BATVOL);
        
         bat_lv = API_SysGetVolLv();
         if(bat_lv < BATTERY_LV0)
         {
          API_OsSetCurrentTask(TASKID_POWEROFF);
         }
         API_OsPendEvent(EVID_UPDATE_BATVOL);
        }                      
                
        if(API_OsCheckEventOccur(EVID_ALARM_OCCUR))
        {       
         API_OsReleaseEvent(EVID_ALARM_OCCUR);

         if(API_PhotoGetThreadState() == TS_PLAY)
         {
          API_PhotoAbort();
          photo_action = PHOTOSHOW_ACTION_ALARM;
          photo_state = PHO_STATE_STOP;
         }
         else
         {
          uint32 frame_no;
          uint16 current_song_no;
          
          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_PHOTOSHOW);
          API_OsSetCurrentTask(TASKID_ALARMOCCUR);
          return;
         }
         API_OsPendEvent(EVID_ALARM_OCCUR);
        }
         
        

}

⌨️ 快捷键说明

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