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

📄 photobroevent_main.c

📁 C 代码C 代码C 代码C 代码C 代码C 代码C 代码C 代码C 代码C 代码
💻 C
字号:
//********************************************************************
// Name:     PhotoMenu_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:
//   pure code framework --- _main.c
//   
//   
//********************************************************************
#pragma codeseg(APP)
#include "sys.h"
#include "PhotoBrowser.h"
#include "PhotoShow.h"
#include "img_position.h"
#include "ST3110_img_define.h"


extern uint16 file_curr_sel_item;
extern uint16 Folders,Files;
extern uint8 page,file_curr_sel_icon,file_pre_sel_icon;
extern uint8 root_order,file_repaint_flag,nand_sd_flag;
extern uint8 sfnPtr[13],lfnPtr[256];
extern uint16 total_page,total_item;
extern uint8 next_task;

extern void _photo_sel_up(void);
extern void _photo_sel_down(void);
extern void _photo_sel_left(void);
extern void _photo_sel_right(void);
extern void _photo_sel_play(void);
void _process_events(void);

void APP_MAIN(void)
{
 // 1. Check event occur
 // 2. Release the event which had been occurred
 // 3. Process event
 // 4. Pend event
 _process_events();
}

void _process_events(void)
{
 //API_SysWriteValue(RAM_SHARING_ADR,LAST_TASK,TASKID_PHOTOBROEVENT);
 API_SysWriteValue(RAM_SHARING_ADR,LAST_TASK,TASKID_PHOTOBROWSER);
 // paint photo browser BG
 if(API_OsCheckEventOccur(EVID_PHOTO_RESPONSE))
 {
  API_OsReleaseEvent(EVID_PHOTO_RESPONSE);
  if(API_PhotoGetThreadState() == TS_FILEEND && next_task)
  {
   //reset photo_thu
   API_SysWriteValue(RAM_SHARING_ADR,PHOTO_THU_0_7,0);
   API_SysWriteValue(RAM_SHARING_ADR,PHOTO_THU_8,0);
   API_OsSetCurrentTask(next_task);
  } 
  API_OsPendEvent(EVID_PHOTO_RESPONSE);
  return;
 } 

 if(API_OsCheckEventOccur(EVID_BT_32HZ))
 {
  uint8 index;
  API_OsReleaseEvent(EVID_BT_32HZ);

 //if( (API_PhotoGetThreadState() == TS_FILEEND))
 if( (API_PhotoGetThreadState() != TS_PLAY))
 {
  for(index=0;index<9;index++)
  //for(index=0;index<8;index++)
  {
   if( ((index < 8) && (API_SysReadValue(RAM_SHARING_ADR,PHOTO_THU_0_7) & 1<<index) > 0) || ((index == 8) && (API_SysReadValue(RAM_SHARING_ADR,PHOTO_THU_8))) )
   //if((API_SysReadValue(RAM_SHARING_ADR,PHOTO_THU_0_7) & 1<<index) > 0)
   {
        
      uint8 thu_pos_x[] = {POS_PHOBRO_THU0_X,POS_PHOBRO_THU1_X,POS_PHOBRO_THU2_X,
                           POS_PHOBRO_THU3_X,POS_PHOBRO_THU4_X,POS_PHOBRO_THU5_X,
                           POS_PHOBRO_THU6_X,POS_PHOBRO_THU7_X,POS_PHOBRO_THU8_X};
      uint8 thu_pos_y[] = {POS_PHOBRO_THU0_Y,POS_PHOBRO_THU1_Y,POS_PHOBRO_THU2_Y,
                           POS_PHOBRO_THU3_Y,POS_PHOBRO_THU4_Y,POS_PHOBRO_THU5_Y,
                           POS_PHOBRO_THU6_Y,POS_PHOBRO_THU7_Y,POS_PHOBRO_THU8_Y};
        //uint8 root_order,page;
        uint16 file_curr_paint_item;
        
        //root_order = API_SysReadValue(RAM_SHARING_ADR,ROOT_ORDER);
        //page = API_SysReadValue(RAM_SHARING_ADR,PHO_PAGE);
        
        if(root_order) //after second layer
         file_curr_paint_item = (page*PHOBRO_ITEM) + index; //item number is from 0
        else //root
         file_curr_paint_item = (page*PHOBRO_ITEM) + index+1; //item number is from 1
       
        API_PhotoSetEffect(PPM_NORMAL,0);
        API_PhotoSetFile(FF_PHOTO_FORM,file_curr_paint_item-Folders);
        API_LcmClearScreen(thu_pos_x[index],thu_pos_y[index],PHOBRO_THUMB_W,PHOBRO_THUMB_H);
        if(!API_PhotoPlay(thu_pos_x[index],thu_pos_y[index],PHOBRO_THUMB_W,PHOBRO_THUMB_H))
        {
          //reload MPL lib
          //API_SysLoadMediaLib();
          // set hardware volume
          //API_SysSetHardwareVolume(0,0); // DAC set 0
          //API_SysSetHardwareVolume(4,10); // Mixer set 10
          //set mixer output
          //API_SysMixerOutputSelection(MIXER_DAC); 
        }
        if(index < 8)
         API_SysWriteValue(RAM_SHARING_ADR,PHOTO_THU_0_7,(API_SysReadValue(RAM_SHARING_ADR,PHOTO_THU_0_7) & ~(1<<index)) );
        else
         API_SysWriteValue(RAM_SHARING_ADR,PHOTO_THU_8,0);
        break;
   }    
  }
   
 } 
  API_OsPendEvent(EVID_BT_32HZ);

  //API_LcmDisableKeepBackGround();
  //API_LcmShowNumber(API_PhotoGetThreadState(),60,POS_PHOBRO_ICON_Y,0);  
  //API_LcmShowNumber(API_SysReadValue(RAM_SHARING_ADR,PHOTO_THU_0_7),32,POS_PHOBRO_ICON_Y,0);  
 } 
 
 if(API_OsCheckEventOccur(EVID_KEY_DOWN_60MS))
 {
   API_OsReleaseEvent(EVID_KEY_DOWN_60MS);
   switch(API_OsGetKeyId())
   {
     
     case KEYID_MODE:
          API_OsPendEvent(EVID_KEY_UP);
          break;
     
     case KEYID_PLAY:
          _photo_sel_play();
          break;
     case KEYID_UP:
          _photo_sel_up();
          break;
     case KEYID_DOWN:
          _photo_sel_down();
          break;
     case KEYID_LEFT:
          _photo_sel_left();
          break;
     case KEYID_RIGHT:
          _photo_sel_right();
          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)
         {
          API_PhotoAbort();
          next_task = TASKID_MUSICBROWSER;
         }
         else
         {
          file_repaint_flag = 3;
          API_SysWriteValue(RAM_SHARING_ADR,LAST_TASK,TASKID_PHOTOBROWSER);
          API_OsSetCurrentTask(TASKID_MUSICBROWSER);
         }
  }
  API_OsPendEvent(EVID_KEY_UP);
 } 
 
 if(API_OsCheckEventOccur(EVID_KEY_KEEP_DOWN))
 {
   API_OsReleaseEvent(EVID_KEY_KEEP_DOWN);
   switch(API_OsGetKeyId())
   {
     case KEYID_UP:
          _photo_sel_up();
          break;
     case KEYID_DOWN:
          _photo_sel_down();
          break;
     case KEYID_LEFT:
          _photo_sel_left();
          break;
     case KEYID_RIGHT:
          _photo_sel_right();
          break;
     case KEYID_MODE:
         if(API_PhotoGetThreadState() == TS_PLAY)
         {
          API_PhotoAbort();
          next_task = TASKID_POWEROFF;
         }
         else
         {
          API_OsSetCurrentTask(TASKID_POWEROFF);
         }
          break;
     default:
          break;        
   }   
   API_OsPendEvent(EVID_KEY_KEEP_DOWN);
 }
 
 if(API_OsCheckEventOccur(EVID_UPDATE_SD))
 {
  API_OsReleaseEvent(EVID_UPDATE_SD);
         if(API_PhotoGetThreadState() == TS_PLAY)
         {
          API_PhotoAbort();
          next_task = TASKID_CHANGESOURCE;
         }
         else
         {
          API_OsSetCurrentTask(TASKID_CHANGESOURCE);
         }
  API_OsPendEvent(EVID_UPDATE_SD);
 }
 
 if (API_OsCheckEventOccur(EVID_VBUS_PLUGIN))
 {              
        API_OsReleaseEvent(EVID_VBUS_PLUGIN);
        if(API_SysGetUSBSource() == VBUS_SRC_USB_ON_LINE)
        {
                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_PHOTOBROWSER);
                API_SysWriteValue(RAM_SHARING_ADR,VBUS_STATE,VBUS_SRC_USB_ON_LINE);
                if(API_PhotoGetThreadState() == TS_PLAY)
                {
                 API_PhotoAbort();
                 next_task = TASKID_USBAPP;
                }
                else
                {
                 API_OsSetCurrentTask(TASKID_USBAPP);
                }
        }
        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_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)
        {
         if(API_PhotoGetThreadState() == TS_PLAY)
         {
          API_PhotoAbort();
          next_task = TASKID_POWEROFF;
         }
         else
         {
          API_OsSetCurrentTask(TASKID_POWEROFF);
         }
        }
        API_OsPendEvent(EVID_UPDATE_BATVOL);
 }                      
 
 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_PHOTOBROWSER);
                if(API_PhotoGetThreadState() == TS_PLAY)
                {
                 API_PhotoAbort();
                 next_task = TASKID_ALARMOCCUR;
                }
                else
                {
                 API_OsSetCurrentTask(TASKID_ALARMOCCUR);
                }
                API_OsPendEvent(EVID_ALARM_OCCUR);
 }       
        
 
 
 // save photo browser parameter
  API_SysWriteValue(RAM_SHARING_ADR,PHO_PAGE,page); 
  API_SysWriteValue(RAM_SHARING_ADR,PHO_CUR_SEL,file_curr_sel_icon);
  API_SysWriteValue(RAM_SHARING_ADR,PHO_PRE_SEL,file_pre_sel_icon);
  API_SysWriteValue(RAM_SHARING_ADR,PHO_PAINT_FLAG,file_repaint_flag);
}

⌨️ 快捷键说明

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