📄 user_main.c
字号:
/* * user_main.c * * User Code Entry Function * * Copyright (c) FARADAY, All Right Reserved 2006 * * Created by: K.J. Lin <kjlin@faraday-tech.com> * */#include <stdio.h>#include "api.h"#include "lcd.h"#include "key.h"#include "common.h"#include "ap_common.h"#include "display.h"#include "res_show.h"#include "res.h"#include "prefer.h"#include "usb_main.h"#include "movie_display.h"#include "movie_sub_menu.h"#include "movie_main.h"#include "ui_main.h"#include "batt.h"#include "global_user.h"#include "event.h"UINT8 cartoon_count=0;INT8U low_batt_count = 0;extern BOOLEAN movie_init; INT8U batt_count = 0;#define CONFIG_EVB#define CONFIG_NAND_LARGEPAGE#define KEY(name) KEY_##name #ifdef CONFIG_EVB // EVB Boardcode UINT8 key_map[] ={ KEY(UNUSED) , KEY(UNUSED) , KEY(PLAY) , KEY(PLAY) , KEY(PLAY) , KEY(PLAY) , KEY(PLAY) , KEY(PLAY) , KEY(PLAY) , KEY(PREV) , KEY(PREV) , KEY(PREV) , KEY(PREV) , KEY(PREV) , KEY(PREV) , KEY(NEXT) , KEY(NEXT) , KEY(NEXT) , KEY(NEXT) , KEY(AB_REPEAT), KEY(AB_REPEAT), KEY(AB_REPEAT), KEY(AB_REPEAT), KEY(AB_REPEAT), KEY(AB_REPEAT), KEY(MENU) , KEY(MENU) , KEY(MENU) , KEY(MENU) , KEY(MENU) , KEY(MENU) , KEY(MENU) ,};#else // FPGA Board code UINT8 key_map[] ={ KEY(UNUSED) , KEY(UNUSED) , KEY(UNUSED) , KEY(UNUSED) , KEY(UNUSED) , KEY(UNUSED) , KEY(UNUSED) , KEY(UNUSED) , KEY(UNUSED) , KEY(UNUSED) , KEY(UNUSED) , KEY(MENU) , KEY(MENU) , KEY(MENU) , KEY(VOL_DN) , KEY(VOL_DN) , KEY(VOL_UP) , KEY(VOL_UP) , KEY(VOL_UP) , KEY(AB_REPEAT), KEY(AB_REPEAT), KEY(PLAY) , KEY(PLAY) , KEY(PLAY) , KEY(STOP) , KEY(STOP) , KEY(STOP) , KEY(NEXT) , KEY(NEXT) , KEY(NEXT) , KEY(PREV) , KEY(PREV) ,};#endifcode UINT8 battery_map[] ={ BATTERY_LEVEL_1, BATTERY_LEVEL_2, BATTERY_LEVEL_3, BATTERY_LEVEL_4 , BATTERY_LEVEL_5, BATTERY_LEVEL_6, BATTERY_LEVEL_7, BATTERY_LEVEL_8 , BATTERY_LEVEL_9, BATTERY_LEVEL_10, BATTERY_LEVEL_11, BATTERY_LEVEL_12, BATTERY_LEVEL_13, BATTERY_LEVEL_14, BATTERY_LEVEL_15, BATTERY_LEVEL_16, BATTERY_LEVEL_17, BATTERY_LEVEL_18, BATTERY_LEVEL_19, BATTERY_LEVEL_20, BATTERY_LEVEL_21, BATTERY_LEVEL_22, BATTERY_LEVEL_23, BATTERY_LEVEL_24, BATTERY_LEVEL_25, BATTERY_LEVEL_26, BATTERY_LEVEL_27, BATTERY_LEVEL_28, BATTERY_LEVEL_29, BATTERY_LEVEL_30, BATTERY_LEVEL_31, BATTERY_LEVEL_32,};UINT8 event_argv;UINT8 _flash=0;#ifndef CONFIG_NAND_LARGEPAGEINT16U free_mem_ptr;INT16U free_mem_end_ptr;INT32U *file_entry;void xdata *my_malloc(UINT16 size){ void xdata *p; if(size <= 0 || (free_mem_ptr + size > free_mem_end_ptr)) return 0; p = (void *)free_mem_ptr; free_mem_ptr += size; return p;}#endifvoid event_short_button(void){ key_process(event_argv);}void event_long_button(void){ //Print("Long Button\n"); switch(event_argv) { case KEY(NEXT): case KEY(PREV): if(curr_screen->id == SCREEN_MOVIE) event_argv += (KEY_FORWARD - KEY_NEXT); break; case KEY(VOL_DN): case KEY(VOL_UP): case KEY(PLAY): event_argv += (KEY_LONG_PLAY - KEY_PLAY); break; case KEY(MENU): event_argv += (KEY_LONG_MENU - KEY_MENU); break; case KEY(AB_REPEAT ): event_argv += (KEY_LONG_AB_REPEAT - KEY_AB_REPEAT); break; default: return; } key_process(event_argv);}void event_button_release(void){ //Print("Button lease\n"); key_process(KEY_RELEASE);}void event_card_change(){ if(event_argv==CARD_STATUS_REMOVED) { have_sd = 0; if(curr_screen->id == SCREEN_MENU&&screen_level == SCREEN_LEVEL_MOVIE_STOP) movie_sub_menu(); if(my_disk == DISK_SD) { api_bPause(); if(api_bChangeDisk(DISK_NAND)) my_disk = DISK_NAND; screen_level = SCREEN_LEVEL_MUSIC_STOP; movie_init = 1; if(curr_screen->id != SCREEN_MENU) screen_map(SCREEN_MOVIE); } } else if(event_argv==CARD_STATUS_INSERTED) { have_sd = 1; if(curr_screen->id == SCREEN_MENU&&screen_level == SCREEN_LEVEL_MOVIE_STOP) movie_sub_menu(); }}void event_usb_status_change(void){}void event_init_startup(void);void event_usb_cable_out(void){}void event_usb_cable_in(void){ //usb_online(); //screen_map(SCREEN_USB); api_vLoad(Code_USER13,1);} void event_quarter_sec(void){ if((usb_plug) && (screen_level == SCREEN_LEVEL_MOVIE_STOP)) ui_show_charge(); if(batt_count++ > 6 ) { batt_count = 0; if(screen_level != SCREEN_LEVEL_MOVIE_PLAY) ui_show_batt(); } if(api_u8GetBatteryRemain() <= BATTERY_LEVEL_20) { low_batt_count++; } else { low_batt_count = 0; } if(low_batt_count==6) //shut down { close_volume(); bResShowPic(LOWPOWER,0,0); delay(10000); delay(10000); vShutDown(); } if(vol_flag && screen_level != SCREEN_LEVEL_MOVIE_PLAY && curr_screen->id == SCREEN_MOVIE) { if(_flash) { _flash = 0; bResShowPic(MVOL_CLR,66,144); } else { _flash = 1; ui_show_vol(); } } vKeyTimeOut();}void event_dsp_exception(void){#if 1 if((curr_screen->id == SCREEN_MOVIE && screen_level == SCREEN_LEVEL_MOVIE_PLAY)) { key_process(KEY(EOS)); }#endif }void event_loop_epilog(void){#if 1 if(curr_screen->id == SCREEN_MOVIE && screen_level == SCREEN_LEVEL_MOVIE_PLAY) { if(eSysState == STATE_IDLE){ key_process(KEY(EOS)); } }#if 0 #endif#endif}void event_init_startup(void){#ifndef CONFIG_NAND_LARGEPAGE /* Nothing, just for demo "api_vGetFreeXdataInfo()" in small page flash. */ INT16U free_size, free_start; api_vGetFreeXdataInfo(&free_size, &free_start); free_mem_ptr = free_start; free_mem_end_ptr = free_mem_ptr + free_size; file_entry = (INT32U *)my_malloc(FILE_ENTRY_MAX * sizeof(UINT32));#endif api_vKeyMapRegister(key_map); api_vSetPassCount(30); api_vBatteryLevelRegister(battery_map); api_bLoadPreferenceData((void*)(&tUserPreference),sizeof(USER_PREFERENCE_T)); if(tUserPreference.u8LanguageId>4) api_bSetLanguage(0); else api_bSetLanguage(tUserPreference.u8LanguageId); if(api_bChangeDisk(DISK_SD)) have_sd = 1; else have_sd = 0; api_bChangeDisk(DISK_NAND); u16TimerCount = 0; movie_init = 1; gui_init(); api_vSetAVMFwRwdSpeed(1); screen_level = SCREEN_LEVEL_MUSIC_STOP; screen_map(SCREEN_MOVIE);}typedef void event_handler(void);static code event_handler *handlers[] = { event_init_startup, // EVENT_INIT_STARTUP NULL, // EVENT_WATCHDOG_UP NULL, // EVENT_LOOP_PROLOG event_loop_epilog, // EVENT_LOOP_EPILOG NULL, // EVENT_OCTANT_SEC event_quarter_sec, // EVENT_QUARTER_SEC event_usb_cable_in, // EVENT_USB_CABLE_IN event_usb_cable_out, // EVENT_USB_CABLE_OUT event_usb_status_change, // EVENT_USB_STATUS_CHANGE event_card_change, // EVENT_CARD_CHANGE event_long_button, // EVENT_LONG_BUTTON event_short_button, // EVENT_SHORT_BUTTON event_button_release, // EVENT_BUTTON_RELEASE event_dsp_exception, // EVENT_DSP_EXCEPTION};void user_main(UINT8 event, UINT8 argv){ event_argv = argv; event -= 0x80; if(handlers[event]) (*handlers[event])();}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -