ap_message2_formusic.lst
来自「炬力方案176*132软件源码,适用于AK1025」· LST 代码 · 共 1,069 行 · 第 1/4 页
LST
1,069 行
364 *
365 * Notes :
366 *
367 ********************************************************************************
368 */
369 //void ap_del_event(WORD event)
370 //{
371 // g_ap_event &= (~event);
372 //}
373
374 /*
375 ********************************************************************************
376 * Description : 睡眠指定的时间
377 *
378 * Arguments : half_sec, 时间, 0.5秒为单位
379 *
380 * Returns : 如果指定的时间内没有其他消息产生, 返回0
381 如果指定的时间内有其他消息产生, 返回该消息
382 * Notes : 如果指定的时间内有其他消息产生, 睡眠的时间将< 指定的时间
383 *
384 ********************************************************************************
385 */
386 char ap_sleep(int half_sec)
387 {
\ 0287 CD0000 CALL LWRD ?ENT_AUTO_DIRECT_L09
\ 028A FEFF DEFW 65534
388 unsigned char n=0; //rtc counter
\ 028C DD36FF00 LD (IX-1),0
\ 0290 ?0079:
389 char key;
390
391 while(1)
392 {
393 key = ap_get_message();
\ 0290 CD0000 CALL LWRD ap_get_message
\ 0293 DD77FE LD (IX-2),A
394 if(key == AP_MSG_RTC ||
395 key == AP_MSG_CHARGING ||
396 key == AP_MSG_WAIT_TIMEOUT) //sleep 时不管timeout
\ 0296 FE1C CP 28
\ 0298 2808 JR Z,?0083
\ 029A FE1B CP 27
\ 029C 2804 JR Z,?0083
\ 029E FE1E CP 30
\ 02A0 2016 JR NZ,?0082
\ 02A2 ?0083:
\ 02A2 ?0084:
\ 02A2 ?0081:
397 {
398 n++;
\ 02A2 DD34FF INC (IX-1)
399 if(n >= half_sec) return 0;
\ 02A5 DD6EFF LD L,(IX-1)
\ 02A8 2600 LD H,0
\ 02AA DD4E02 LD C,(IX+2)
\ 02AD DD4603 LD B,(IX+3)
\ 02B0 CD0000 CALL LWRD ?SS_CMP_L02
\ 02B3 38DB JR C,?0079
\ 02B5 ?0085:
\ 02B5 6C LD L,H
400 }
\ 02B6 181B JR ?0092
\ 02B8 ?0086:
\ 02B8 ?0082:
401 else if(key == AP_KEY_NULL ||
402 key == AP_MSG_UNLOCK ||
403 key == (AP_MSG_UNLOCK | AP_KEY_UP) ||
404 key == AP_MSG_LOCK ||
405 key == (AP_MSG_LOCK | AP_KEY_UP)) //lock 只有up, 没有long/hold
\ 02B8 AF XOR A
\ 02B9 DDB6FE OR (IX-2)
\ 02BC 28D2 JR Z,?0079
\ 02BE FE18 CP 24
\ 02C0 28CE JR Z,?0079
\ 02C2 FE38 CP 56
\ 02C4 28CA JR Z,?0079
\ 02C6 FE19 CP 25
\ 02C8 28C6 JR Z,?0079
\ 02CA FE39 CP 57
\ 02CC 28C2 JR Z,?0079
\ 02CE ?0090:
\ 02CE ?0091:
\ 02CE ?0088:
406 {
407 continue;
\ 02CE ?0089:
408 }
409 else
410 {
411 //here maybe hotkey
412 return ap_handle_hotkey(key);
\ 02CE 5F LD E,A
\ 02CF CD0000 CALL LWRD ap_handle_hotkey
\ 02D2 6F LD L,A
413 }
\ 02D3 ?0092:
\ 02D3 C30000 JP LWRD ?BANK_LEAVE_DIRECT_L08
\ 02D6 ?0087:
414 }
415
416 }
\ 02D6 ap_handle_hotkey_core:
417
418 /*
419 ********************************************************************************
420 * Description : 处理热键消息, 返回结果消息
421 *
422 * Arguments : key, 按键消息
423 *
424 * Returns : 如果有可识别的热键消息, 返回结果消息
425 如果没有可识别的热键消息, 返回0
426 *
427 * Notes :
428 *
429 ********************************************************************************
430 */
431 char ap_handle_hotkey_core(char key)
432 {
\ 02D6 D5 PUSH DE
433 switch( key )
\ 02D7 CD0000 CALL LWRD ?C_V_SWITCH_L06
\ 02DA 0900 DEFW 9
\ 02DC 18 DEFB 24
\ 02DD 19 DEFB 25
\ 02DE 1A DEFB 26
\ 02DF 1D DEFB 29
\ 02E0 1F DEFB 31
\ 02E1 31 DEFB 49
\ 02E2 81 DEFB 129
\ 02E3 8B DEFB 139
\ 02E4 90 DEFB 144
\ 02E5 2303 DEFW ?0102
\ 02E7 0103 DEFW ?0096
\ 02E9 F902 DEFW ?0094
\ 02EB FD02 DEFW ?0095
\ 02ED 0503 DEFW ?0097
\ 02EF FD02 DEFW ?0095
\ 02F1 FD02 DEFW ?0095
\ 02F3 0903 DEFW ?0098
\ 02F5 0D03 DEFW ?0099
\ 02F7 0D03 DEFW ?0099
\ 02F9 ?0094:
434 {
435 case AP_MSG_LOW_POWER_MY:
436 return RESULT_STANDBYY;
\ 02F9 2ECA LD L,202
437
438 case AP_KEY_PLAY | AP_KEY_LONG: //长按play发standby
\ 02FB 1828 JR ?0103
\ 02FD ?0095:
439 case AP_MSG_STANDBY: //自动关机
440 //case AP_MSG_SLEEP: //睡眠
441 //case AP_MSG_LOW_POWER: //低电自动关机
442 case AP_MSG_FORCE_STANDBY: //使用上两个会报label duplicate
443 return RESULT_STANDBY;
\ 02FD 2E02 LD L,2
444 case AP_KEY_MODE | AP_KEY_LONG: //长按menu进入main
\ 02FF 1824 JR ?0103
\ 0301 ?0096:
445 return RESULT_MAIN;
\ 0301 2E0A LD L,10
446 //break;
447 case AP_KEY_AB | AP_KEY_UP: //进入录音
\ 0303 1820 JR ?0103
\ 0305 ?0097:
448 return RESULT_RECORD;
\ 0305 2E09 LD L,9
449 case AP_MSG_USB_PLUGIN: //进入udisk 模式
\ 0307 181C JR ?0103
\ 0309 ?0098:
450 return RESULT_UDISK;
\ 0309 2E04 LD L,4
451 case AP_MSG_LOCK: //locked
\ 030B 1818 JR ?0103
\ 030D ?0099:
452 case AP_MSG_UNLOCK: //unlocked
453 if(ui_run_realtime) //实时模式不显示lock
\ 030D 3A0000 LD A,(ui_run_realtime)
\ 0310 B7 OR A
\ 0311 2010 JR NZ,?0102
\ 0313 ?0100:
454 {
455 //TODO: send lock message to message queue
456 return 0;
457 }
\ 0313 ?0101:
458 else
459 {
460 ///-ui_show_lock(1); //这里不处理热键,防止嵌套
461 ui_show_lock(key - AP_MSG_UNLOCK);
\ 0313 7B LD A,E
\ 0314 C6E8 ADD A,232
\ 0316 5F LD E,A
\ 0317 3E00 LD A,BYTE3 ui_show_lock
\ 0319 210000 LD HL,LWRD ui_show_lock
\ 031C CD0000 CALL LWRD ?BANK_CALL_DIRECT_L08
462 return RESULT_REDRAW;
\ 031F 2E32 LD L,50
463 }
\ 0321 1802 JR ?0103
\ 0323 ?0102:
464 default:
465 //here just drop the key
466 return 0;
\ 0323 2E00 LD L,0
467 }
\ 0325 ?0103:
\ 0325 F1 POP AF
\ 0326 C30000 JP LWRD ?BANK_FAST_LEAVE_L08
\ 0329 ?0093:
468 }
\ 0000 RSEG UDATA0
\ 0000 g_EarProtect_flag:
\ 0001 DEFS 1
\ 0001 EarProtectThreshold:
\ 0002 DEFS 1
\ 0002 g_autoswitch_time:
\ 0004 DEFS 2
\ 0000 RSEG IDATA0
\ 0000 g_decrease_time:
\ 0001 DEFS 1
\ 0001 g_half_hour_counter:
\ 0003 DEFS 2
\ 0003 g_autoswitch_counter:
\ 0005 DEFS 2
\ 0005 g_light_time:
\ 0006 DEFS 1
\ 0006 g_light_mode:
\ 0007 DEFS 1
\ 0007 g_contrast_num:
\ 0008 DEFS 1
\ 0008 g_sleep_time:
\ 000A DEFS 2
\ 000A g_standby_time:
\ 000C DEFS 2
\ 000C g_rtc_counter:
\ 000E DEFS 2
\ 000E g_light_flag:
\ 000F DEFS 1
\ 000F ?0012:
\ 0011 DEFS 2
\ 0011 ?0013:
\ 0012 DEFS 1
\ 0000 RSEG CDATA0
\ 0000 00 DEFB 0
\ 0001 0000 DEFW 0
\ 0003 0000 DEFW 0
\ 0005 00 DEFB 0
\ 0006 00 DEFB 0
\ 0007 00 DEFB 0
\ 0008 0000 DEFW 0
\ 000A 0000 DEFW 0
\ 000C 0000 DEFW 0
\ 000E 01 DEFB 1
\ 000F 0000 DEFW 0
\ 0011 00 DEFB 0
\ 0012 END
Errors: none
Warnings: none
Code size: 809
Constant size: 18
Static variable size: Data(22) Iram(0)
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?