📄 photobroevent_main.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(¤t_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(¤t_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 + -