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

📄 user_main.c

📁 智原mp3 SDK 开发包 与巨力 有mp3 wma ogg decoder
💻 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 + -