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 + -
显示快捷键?