📄 user_main.lst
字号:
C51 COMPILER V7.50 USER_MAIN 09/05/2008 09:54:28 PAGE 1
C51 COMPILER V7.50, COMPILATION OF MODULE USER_MAIN
OBJECT MODULE PLACED IN ..\output\output_bin\output_mainmenu\user_main.obj
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE ..\..\code\ap_main\src\user_main.c LARGE OPTIMIZE(9,SIZE) BROWSE INCDIR(..\
-..\..\bsp\include;..\..\code\ap_main\src\include;..\..\code\global;..\..\code\include) DEFINE(dynamic_load) DEBUG OBJECT
-EXTEND PRINT(..\output\output_bin\output_mainmenu\user_main.lst) OBJECT(..\output\output_bin\output_mainmenu\user_main.o
-bj)
line level source
1 /*
2 * user_main.c
3 *
4 * User Code Entry Function
5 *
6 * Copyright (c) FARADAY, All Right Reserved 2006
7 *
8 * Created by: K.J. Lin <kjlin@faraday-tech.com>
9 *
10 */
11 #include <stdio.h>
12 #include "api.h"
13 #include "lcd.h"
14 #include "key.h"
15 #include "common.h"
16 #include "ap_common.h"
17 #include "display.h"
18 #include "res_show.h"
19 #include "res.h"
20 #include "prefer.h"
21 #include "usb_main.h"
22 #include "logo.h"
23 #include "fm_tea5767.h"
24 #include "ui_main.h"
25 #include "batt.h"
26 #include "global_user.h"
27
28 UINT16 count=0;
29 UINT16 count1=0;
30 UINT8 _flash;
31 INT8U low_batt_count = 0;
32 extern INT16U active;
33
34 extern INT16U code main_menu_fm[9];
35 extern INT16U code main_menu_nofm[8];
36 extern INT16U code main_menu_topfm[9];
37 extern INT16U code main_menu_topnofm[8];
38
39 #define CONFIG_EVB
40 #define CONFIG_NAND_LARGEPAGE
41
42 #define KEY(name) KEY_##name
43
44 #ifdef CONFIG_EVB // EVB Board
45 code UINT8 key_map[] =
46 {
47 KEY(UNUSED) , KEY(UNUSED) , KEY(PLAY) , KEY(PLAY) ,
48 KEY(PLAY) , KEY(PLAY) , KEY(PLAY) , KEY(PLAY) ,
49 KEY(PLAY) , KEY(PREV) , KEY(PREV) , KEY(PREV) ,
50 KEY(PREV) , KEY(PREV) , KEY(PREV) , KEY(NEXT) ,
51 KEY(NEXT) , KEY(NEXT) , KEY(NEXT) , KEY(NEXT) ,
52 KEY(AB_REPEAT), KEY(AB_REPEAT), KEY(AB_REPEAT), KEY(AB_REPEAT),
C51 COMPILER V7.50 USER_MAIN 09/05/2008 09:54:28 PAGE 2
53 KEY(AB_REPEAT), KEY(MENU) , KEY(MENU) , KEY(MENU) ,
54 KEY(MENU) , KEY(MENU) , KEY(MENU) , KEY(MENU) ,
55 };
56 #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) ,
};
#endif
69
70
71 code UINT8 battery_map[] =
72 {
73 BATTERY_LEVEL_1, BATTERY_LEVEL_2, BATTERY_LEVEL_3, BATTERY_LEVEL_4 ,
74 BATTERY_LEVEL_5, BATTERY_LEVEL_6, BATTERY_LEVEL_7, BATTERY_LEVEL_8 ,
75 BATTERY_LEVEL_9, BATTERY_LEVEL_10, BATTERY_LEVEL_11, BATTERY_LEVEL_12,
76 BATTERY_LEVEL_13, BATTERY_LEVEL_14, BATTERY_LEVEL_15, BATTERY_LEVEL_16,
77 BATTERY_LEVEL_17, BATTERY_LEVEL_18, BATTERY_LEVEL_19, BATTERY_LEVEL_20,
78 BATTERY_LEVEL_21, BATTERY_LEVEL_22, BATTERY_LEVEL_23, BATTERY_LEVEL_24,
79 BATTERY_LEVEL_25, BATTERY_LEVEL_26, BATTERY_LEVEL_27, BATTERY_LEVEL_28,
80 BATTERY_LEVEL_29, BATTERY_LEVEL_30, BATTERY_LEVEL_31, BATTERY_LEVEL_32,
81 };
82
83
84 UINT8 event_argv;
85
86 #ifndef CONFIG_NAND_LARGEPAGE
INT16U 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;
}
#endif
104
105
106 void event_short_button(void)
107 {
108 1 key_process(event_argv);
109 1 }
110
111 void event_long_button(void)
112 {
113 1 //Print("Long Button\n");
114 1 switch(event_argv) {
C51 COMPILER V7.50 USER_MAIN 09/05/2008 09:54:28 PAGE 3
115 2 case KEY(NEXT):
116 2 case KEY(PREV):
117 2 if(curr_screen->id == SCREEN_MAIN)
118 2 event_argv += (KEY_FORWARD - KEY_NEXT);
119 2 break;
120 2 case KEY(VOL_DN):
121 2 case KEY(VOL_UP):
122 2 case KEY(PLAY):
123 2 event_argv += (KEY_LONG_PLAY - KEY_PLAY);
124 2 break;
125 2 case KEY(MENU):
126 2 event_argv += (KEY_LONG_MENU - KEY_MENU);
127 2 break;
128 2 default:
129 2 return;
130 2 }
131 1
132 1 key_process(event_argv);
133 1 }
134
135 void event_button_release(void)
136 {
137 1 //Print("Button lease\n");
138 1 key_process(KEY_RELEASE);
139 1 }
140
141 void event_usb_status_change(void)
142 {
143 1 }
144 void event_card_change()
145 {
146 1 if(event_argv==2)
147 1 {
148 2 // if(my_disk == DISK_SD)
149 2 // {
150 2 /*
151 2 if(music_on)
152 2 {
153 2 api_bStop();
154 2 music_on = false;
155 2 }
156 2 if(api_bChangeDisk(DISK_NAND))
157 2 my_disk = DISK_NAND;
158 2 */
159 2 // }
160 2 //
161 2 }
162 1 }
163
164
165 void event_init_startup(void);
166 void event_usb_cable_out(void)
167 {
168 1
169 1 }
170
171
172 void event_usb_cable_in(void)
173 {
174 1 api_vLoad(Code_USER13,1);
175 1 }
176
C51 COMPILER V7.50 USER_MAIN 09/05/2008 09:54:28 PAGE 4
177 void event_quarter_sec(void)
178 {
179 1 //INT8 buf[4];
180 1 #ifdef TEST
bg_color = 0x0000F77F;
gfx_set_bg(0x0000F77F);
fg_color = COLOR_SELECT;
my_sprintf(_buf, "%02d",(INT16U)api_u8GetBatteryRemain());
lcd_puts(32, 32, _buf, FONTSIZE_HYPER);
#endif
189 1
190 1 vKeyTimeOut();
191 1 /*
192 1 if(api_u8GetBatteryRemain() <= BATTERY_LEVEL_20)
193 1 {
194 1 low_batt_count++;
195 1 }
196 1 else
197 1 {
198 1 low_batt_count = 0;
199 1 }
200 1 if(low_batt_count==6) //shut down
201 1 {
202 1 close_volume();
203 1 bResShowPic(LOWPOWER,0,0);
204 1 delay(10000);
205 1 delay(10000);
206 1 vShutDown();
207 1 }
208 1
209 1 */
210 1 }
211
212 void event_loop_epilog(void)
213 {
214 1 }
215
216 void event_init_startup(void)
217 {
218 1 #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
228 1 api_vKeyMapRegister(key_map);
229 1
230 1 api_vSetPassCount(20);
231 1
232 1 api_vBatteryLevelRegister(battery_map);
233 1
234 1 api_bLoadPreferenceData((void*)(&tUserPreference),sizeof(USER_PREFERENCE_T));
235 1
236 1 if (tUserPreference.u8magic != 0xa5)
237 1 {
238 2 vPreferenceDataInit();
C51 COMPILER V7.50 USER_MAIN 09/05/2008 09:54:28 PAGE 5
239 2 tUserPreference.u8LanguageId =0;
240 2 api_bSavePreferenceData(&tUserPreference,sizeof(USER_PREFERENCE_T));
241 2 }
242 1
243 1 if(tUserPreference.u8LanguageId>4)
244 1 api_bSetLanguage(0);
245 1 else
246 1 api_bSetLanguage(tUserPreference.u8LanguageId);
247 1
248 1 u16TimerCount = 0;
249 1
250 1 my_disk = DISK_NAND;
251 1
252 1 #ifdef FIRST
lcd_init();
lcd_set_brightness(tUserPreference.u8Contrast);
#endif
256 1
257 1 count = 0;
258 1 gui_init();
259 1
260 1 #ifdef dynamic_load
261 1 #ifdef FIRST
bRadioInit();
delay(2);
api_vSetFMOnOFF(FM_TURN_OFF);
bRadioStop();
menu_id = 100;
usb_plug = 0;
#endif
269 1 if(menu_id==100 /*|| menu_id == 0*/)
270 1 active = 0;
271 1 else
272 1 active = menu_id;
273 1
274 1 #endif
275 1
276 1 api_bChangeDisk(DISK_NAND);
277 1 vOpenBackLight();
278 1
279 1 screen_map(SCREEN_MAIN);
280 1 }
281
282
283 typedef void event_handler(void);
284
285 static code event_handler *handlers[] = {
286 event_init_startup, // EVENT_INIT_STARTUP
287 NULL, // EVENT_WATCHDOG_UP
288 NULL, // EVENT_LOOP_PROLOG
289 event_loop_epilog, // EVENT_LOOP_EPILOG
290 NULL, // EVENT_OCTANT_SEC
291 event_quarter_sec, // EVENT_QUARTER_SEC
292 event_usb_cable_in, // EVENT_USB_CABLE_IN
293 event_usb_cable_out, // EVENT_USB_CABLE_OUT
294 event_usb_status_change, // EVENT_USB_STATUS_CHANGE
295 event_card_change, // EVENT_CARD_CHANGE
296 event_long_button, // EVENT_LONG_BUTTON
297 event_short_button, // EVENT_SHORT_BUTTON
298 event_button_release, // EVENT_BUTTON_RELEASE
299 // event_dsp_exception, // EVENT_DSP_EXCEPTION
300 };
C51 COMPILER V7.50 USER_MAIN 09/05/2008 09:54:28 PAGE 6
301
302 void user_main(UINT8 event, UINT8 argv)
303 {
304 1 event_argv = argv;
305 1 event -= 0x80;
306 1
307 1 if(handlers[event])
308 1 (*handlers[event])();
309 1 }
310
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 308 ----
CONSTANT SIZE = 90 ----
XDATA SIZE = 7 ----
PDATA SIZE = ---- ----
DATA SIZE = ---- ----
IDATA SIZE = ---- ----
BIT SIZE = ---- ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -