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

📄 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 "event.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 "logo.h"#include "fm_tea5767.h"#include "ui_main.h"#include "batt.h"#include "global_user.h"UINT16  count=0;UINT16  count1=0;UINT8   _flash;INT8U low_batt_count = 0;BOOLEAN bDisplayIDLE;INT8U data u8DelayToDisplayIDLEcount;INT8U loop_count2=0;extern INT16U code main_menu_fm[9];extern INT16U code main_menu_nofm[8];extern INT16U code main_menu_topfm[9];extern INT16U code main_menu_topnofm[8];#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;#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_MAIN)				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;						default:			return;	}	//	key_process(event_argv);}void event_button_release(void){	//Print("Button lease\n");	key_process(KEY_RELEASE);}void event_usb_status_change(void){	if(event_argv == USB_STATUS_IDLE) 	{		bDisplayIDLE = TRUE;		u8DelayToDisplayIDLEcount = 16;	}	else {		bDisplayIDLE = FALSE;				if(event_argv == USB_STATUS_PC2DEV)		{			if(loop_count2++>50)	     		{				bResShowPic(UDISKUPL,64,74);				loop_count2 = 0;			}			}			else		{			if(loop_count2++>50)	     		{	     			bResShowPic(UDISKDL,64,74);	     			loop_count2 = 0;         		}					}	}	}void event_card_change(){	if(event_argv==2) {	//	if(my_disk == DISK_SD)	//	{			/*			if(music_on)			{				api_bStop();				music_on = false;			}			if(api_bChangeDisk(DISK_NAND))				my_disk = DISK_NAND;			*/	//	}	//	}}void event_init_startup(void);void event_usb_cable_out(void){	Print("UOUT\n");	if(api_bIsUSBCableIn())	{		event_init_startup();	}}void event_usb_cable_in(void){	screen_map(SCREEN_USB);}					void event_quarter_sec(void){		    		if(api_bIsUSBmode()) {		if(bDisplayIDLE) {			if(u8DelayToDisplayIDLEcount == 0) {			bResShowPic(UDISKRDY,0,0);				bDisplayIDLE = FALSE;			}			else				u8DelayToDisplayIDLEcount--;		}		if(usb_plug)		{			ui_show_charge1();				}		return;			}    else    {        key_process(KEY_PLAY);        return;    }			vKeyTimeOut();}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(30);	api_vBatteryLevelRegister(battery_map);	api_bLoadPreferenceData((void*)(&tUserPreference),sizeof(USER_PREFERENCE_T));                         if (tUserPreference.u8magic != 0xa5)        {            vPreferenceDataInit();            tUserPreference.u8LanguageId =0;            api_bSavePreferenceData(&tUserPreference,sizeof(USER_PREFERENCE_T));        } 	 	if(tUserPreference.u8LanguageId>4)  		api_bSetLanguage(0);	else 		api_bSetLanguage(tUserPreference.u8LanguageId);				loop_count2 = 0;	usb_plug = 1;
screen_map(SCREEN_USB);
}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 + -