📄 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 "event.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 "lrc_parse.h"#include "prefer.h"#include "usb_main.h"#include "ui_main.h"#include "batt.h"#include "global_user.h"#include "mine.h"UINT8 cartoon_count=0;UINT8 txt_count=0;INT8U low_batt_count = 0;extern BOOLEAN play_statu;#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(NEXT) , 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;#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_GAME) 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){ key_process(KEY_RELEASE);}void event_card_change(){ if(event_argv==CARD_STATUS_REMOVED) { if(my_disk == DISK_SD) { api_bStop(); if(api_bChangeDisk(DISK_NAND)) my_disk = DISK_NAND; screen_level = SCREEN_LEVEL_MUSIC_STOP; screen_map(SCREEN_GAME); } } else if(event_argv==CARD_STATUS_INSERTED) { have_sd = 1; }}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(); mine.mine_status = 1; mine.mine_flash = 0; api_vLoad(Code_USER13,1);} void event_quarter_sec(void){ 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(1000000); vShutDown(); } mine.mine_time++; if(mine.mine_flash && mine.mine_status ==2) { mine_show_cursor(); if(mine.mine_cursor) { mine_show_time(); } } vKeyTimeOut();}void event_dsp_exception(void){#if 0 if((curr_screen->id == SCREEN_MOVIE && screen_level == SCREEN_LEVEL_MOVIE_PLAY) || (curr_screen->id == SCREEN_PICTURE && screen_level == SCREEN_LEVEL_JPEG_DISP)) { Print("Fmt err\n"); lcd_set_rw_area(SCREEN_START_X, SCREEN_START_Y, SCREEN_WIDTH, SCREEN_HEIGHT); key_process(KEY(NEXT)); }#endif }void event_loop_epilog(void){}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(20); api_vBatteryLevelRegister(battery_map); api_bLoadPreferenceData((void*)(&tUserPreference),sizeof(USER_PREFERENCE_T)); // if(tUserPreference.u8LanguageId>4 || tUserPreference.u8LanguageId == 0) // 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 = 1; //lcd_init(); gui_init(); mine.mine_status = 1; screen_map(SCREEN_GAME);}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 NULL, // EVENT_USB_CABLE_OUT NULL, // EVENT_USB_CABLE_OUT 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 + -