📄 4010ui.lst
字号:
264 {
265 1 #if 0
hal9255FMRead();
#else
268 1 halFMUp();
269 1
270 1 halWRInfo1();
271 1 // hal9255FMRead();
272 1
273 1 DispSetStatus(DISP_FMCH_STATUS);
274 1 #endif
275 1 return;
276 1 }
277
278 void _halKeyFMDown()
279 {
280 1 halFMDown();
281 1
282 1 halWRInfo1();
283 1
284 1 DispSetStatus(DISP_FMCH_STATUS);
285 1
286 1 return;
287 1 }
288
289 void _halKeyVolUp()
290 {
291 1 halVolUp();
292 1 DispSetStatus(DISP_VOLUMN_STATUS);
293 1
294 1 return;
295 1 }
296
297 void _halKeyVolDown()
298 {
299 1 halVolDown();
300 1 DispSetStatus(DISP_VOLUMN_STATUS);
301 1
C51 COMPILER V8.01 4010UI 04/17/2008 09:54:45 PAGE 6
302 1 return;
303 1 }
304
305 static BYTE SeekMap[] = {
306 SEARCH_MP3_NEXT,
307 SEARCH_MP3_PREV,
308 SEARCH_MP3_JUMP,
309 };
310
311 void _halKeySeek()
312 {
313 1 //DRIVE *drv = DriveGet();
314 1 //UartOutText("-I-_halKeySeek \r\n");
315 1 //UartOutText("keystatus\t");UartOutValue(keystatus,2);
316 1 //UartOutText("SongLocateTick\t");UartOutValue(SongLocateTick,2);
317 1
318 1
319 1 if(mp3status == MP3STATUS_PAUSE)
320 1 mp3status = MP3STATUS_PLAY;
321 1
322 1 if(keystatus == KEY_STATUS_FSEEK){
323 2 JumpSong++;
324 2 JumpType = JUMP_FORWARD;
325 2 //UartOutText("JumpSong\t");UartOutValue(JumpSong,2);
326 2 return;
327 2 }
328 1
329 1 if(keystatus == KEY_STATUS_RSEEK){
330 2 JumpSong++;
331 2 JumpType = JUMP_BACKWARD;
332 2 //UartOutText("JumpSong\t");UartOutValue(JumpSong,2);
333 2 return;
334 2 }
335 1
336 1 Mp3SReq.bySType = SeekMap[keystatus - KEY_STATUS_FSEEK];
337 1
338 1 //MUTE_HW();
339 1 //UartOutText("----MUTE_HW----\r\n");
340 1 //DISABLE_INTERRUPTS;
341 1 //SysTicks = 0;
342 1 //while(SysTicks < 5);
343 1 //ENABLE_INTERRUPTS;
344 1 //DelayMs(200);
345 1 if(mp3status == MP3STATUS_PLAY)//If the current status is playing, the volume smooth procedure should be
-done.
346 1 halVolSmthSet(halVolGet(), SMOOTH_CAUSE_VOLDOWN, VOL_SMTH_BEGIN-1);//Volume down
347 1 else{
348 2 DriveFlush(TRUE);
349 2 FileSearch(&Mp3SearchInfo, &Mp3SReq);
350 2 mp3status = MP3STATUS_WAKEUP;
351 2 DispSetStatus(DISP_SONGIDX_STATUS);
352 2 }
353 1
354 1 return;
355 1 }
356
357 void _halKeyPlay()
358 {
359 1 DRIVE *drv = DriveGet();
360 1 switch(mp3status)
361 1 {
362 2 case MP3STATUS_IDLE:
C51 COMPILER V8.01 4010UI 04/17/2008 09:54:45 PAGE 7
363 2 //MUTE_HW();
364 2 //DelayMs(400);
365 2 //UartOutText("----MUTE_HW----\r\n");
366 2 //UartOutText("--P1--");UartOutValue(P1,2);
367 2 // MP3_MUTE_ENABLE(); //modify by Ivor yan
368 2 // DelayMs(10);
369 2
370 2 DriveFlush(TRUE);
371 2 FileSearch(&Mp3SearchInfo, &Mp3SReq);
372 2 case MP3STATUS_WAKEUP:
373 2 //DISABLE_INTERRUPTS;
374 2 //SysTicks = 0;
375 2 //while(SysTicks < 10);
376 2 //ENABLE_INTERRUPTS;
377 2 //DelayMs(1000);
378 2 //DISMUTE_HW();
379 2 //UartOutText("----DISMUTE_HW----\r\n");
380 2
381 2 fd_mp3 = FileOpenMp3(drv, &Mp3SearchInfo);
382 2 if(fd_mp3 != NULL){
383 3 halWRInfo1();
384 3 DispReset();
385 3 halMp3Play();//fd_mp3);
386 3 mp3status = MP3STATUS_PLAY;
387 3 DispSetStatus(DISP_SONGIDX_STATUS);
388 3 }
389 2
390 2 break;
391 2 case MP3STATUS_PAUSE:
392 2 MP3_PAUSE_DISABLE();
393 2 mp3status = MP3STATUS_PLAY;
394 2 DispSetStatus(DISP_NORMAL_STATUS);
395 2 break;
396 2 case MP3STATUS_PLAY:
397 2
398 2 if(DriveFlush(FALSE) != TRUE){//Cannot Pause at current time
399 3 return; //This key event will not be killed. And should be tried again, or just ignore.
400 3 }
401 2
402 2 MP3_PAUSE_ENABLE();
403 2 mp3status = MP3STATUS_PAUSE;
404 2 DispSetStatus(DISP_NORMAL_STATUS);//Including pause status
405 2 break;
406 2 }
407 1
408 1 keystatus = KEY_STATUS_NOKEY;
409 1 return;
410 1 }
411
412 static void _halKeyDevChg(void)
413 {
414 1
415 1 DRIVE *drv = DriveGet();
416 1
417 1 DriveFlush(TRUE);
418 1 if(drv->DevID == SD_DISK){ //Current device is sd card
419 2 FSMState = FSMSTATE_USB;
420 2 }else{ //Current device is usb
421 2 FSMState = FSMSTATE_SD;
422 2 }
423 1
424 1 //keystatus = KEY_STATUS_NOKEY;
C51 COMPILER V8.01 4010UI 04/17/2008 09:54:45 PAGE 8
425 1 bDEVFlag = DEVAttach[drv->DevID];
426 1 UartOutText("-I-: _halKeyDevChg() \r\n");
427 1
428 1 return;
429 1 }
430
431 void halKeyStop(void)
432 {
433 1 //Mp3Ctrl = 0x00; //disable mp3 dec
434 1 MP3_DEC_DISABLE();
435 1
436 1 DriveFlush(TRUE);
437 1 mp3status = MP3STATUS_WAKEUP;
438 1
439 1 //keystatus = KEY_STATUS_NOKEY;
440 1
441 1 UartOutText("-I-: halKeyStop() \r\n");
442 1
443 1 return;
444 1 }
445
446 //The functions in this table should not have parameters and return value for 8051 Platform.
447 static void (*KeyHandleMap[KEY_STATUS_MAX])(void) = {
448 NULL, //Handler for KEY_STATUS_PLAYMODE
449 _halKeyDevChg,
450 _halKeyFMDown,
451 _halKeyVolUp,
452 _halKeyVolDown,
453 _halKeyEQ,
454 _halKeySeek,
455 _halKeySeek,
456 _halKeySeek,
457 _halKeyPlay,
458 //_halKeyDevChg,
459 halKeyStop,
460 };
461
462 void halKeyHandle(BYTE bStat)
463 {
464 1
465 1 // If keystatus is KEY_STATUS_NOKEY, just return
466 1 if(keystatus == KEY_STATUS_NOKEY){
467 2 #if 1
468 2 if(IsJumpFlag == TRUE){
469 3 //UartOutText("-I-jump is true\r\n");
470 3 if(SongLocateTick >= 6){
471 4 UartOutText("-I-jump over\t");UartOutValue(JumpSong,2);
472 4 if(JumpType == JUMP_FORWARD){
473 5 if((Mp3SReq.swIdx + JumpSong) > Mp3SReq.swTotalCnt)
474 5 Mp3SReq.swJump = Mp3SReq.swIdx + JumpSong - Mp3SReq.swTotalCnt;
475 5 else
476 5 Mp3SReq.swJump = Mp3SReq.swIdx + JumpSong;
477 5 }else if(JumpType == JUMP_BACKWARD){
478 5 if(Mp3SReq.swIdx == JumpSong)
479 5 Mp3SReq.swJump = Mp3SReq.swTotalCnt;
480 5 else
481 5 Mp3SReq.swJump = Mp3SReq.swIdx - JumpSong;
482 5 }
483 4
484 4 keystatus = KEY_STATUS_JUMP;
485 4 JumpType = JUMP_IDLE;
486 4 SongLocateTick = 0;
C51 COMPILER V8.01 4010UI 04/17/2008 09:54:45 PAGE 9
487 4 JumpSong = 0;
488 4 IsJumpFlag = FALSE;
489 4
490 4 //MP3_MUTE_ENABLE(); //modify by Ivor yan
491 4
492 4 //MUTE_HW();
493 4 //UartOutText("----MUTE_HW----\r\n");
494 4 //SysTicks = 0;
495 4 //while(SysTicks < 10);
496 4 }
497 3
498 3 //IsJumpFlag = FALSE;
499 3 }
500 2 #endif
501 2 return;
502 2 }
503 1
504 1 if(bStat != FSMSTATE_INIT){
505 2 if(keystatus >= KEY_STATUS_WITHDEV){
506 3 keystatus = KEY_STATUS_NOKEY; //Cannot handle these keys without device
507 3 return;
508 3 }
509 2 }
510 1
511 1 KeyHandleMap[keystatus]();
512 1
513 1 //if(1)//NOTE: In some cases the keystatus should no be cleared.
514 1 //if(keystatus != KEY_STATUS_PLAYPAUSE)
515 1 keystatus = KEY_STATUS_NOKEY;
516 1
517 1 //halWRInfo1();
518 1
519 1 return;
520 1 }
521
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 637 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = 48 10
PDATA SIZE = ---- ----
DATA SIZE = 6 1
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 + -