Index: format/app_dongle.format
===================================================================
--- /1121s/branch/dongle/1m/usb_1m_mingjian/format/app_dongle.format	(revision 3298)
+++ /1121s/branch/dongle/1m/usb_1m_mingjian/format/app_dongle.format	(working copy)
@@ -57,8 +57,9 @@
 65 mem_24g_rxdata_temp_new
 65 mem_24g_txbuf_new
 69 mem_24g_txpayload_new
-
-
+10 mem_usb_protocol_data
+10 mem_usb_protocol_data_sta
+10 mem_usb_protocol_data_last
 )
 (
 0xA0 REPORT_ID_AUDIO_DATA_IN
Index: format/g24_protocol_stack/24g_pair.format
===================================================================
--- /1121s/branch/dongle/1m/usb_1m_mingjian/format/g24_protocol_stack/24g_pair.format	(revision 3298)
+++ /1121s/branch/dongle/1m/usb_1m_mingjian/format/g24_protocol_stack/24g_pair.format	(working copy)
@@ -48,6 +48,7 @@
 7 DATATYPE_AUDIO
 6 DATATYPE_AUTHCA
 5 DATATYPE_HEART
+4 DATATYPE_PROTOCOL
 )
 
 (
Index: format/usb.format
===================================================================
--- /1121s/branch/dongle/1m/usb_1m_mingjian/format/usb.format	(revision 3298)
+++ /1121s/branch/dongle/1m/usb_1m_mingjian/format/usb.format	(working copy)
@@ -191,6 +191,7 @@
 0x20 USB_EP2_MS
 0x21 USB_EP2_MULTIKEY
 0x22 USB_EP2_SYSTEMKEY
+0x23 USB_EP2_PROTOCOL
 0x24 USB_EP2_AUDIO
 0x26 USB_EP2_AUTHCA
 0x01 MAC_BOOT_MODE
Index: output/memmap.format
===================================================================
--- /1121s/branch/dongle/1m/usb_1m_mingjian/output/memmap.format	(revision 3298)
+++ /1121s/branch/dongle/1m/usb_1m_mingjian/output/memmap.format	(working copy)
@@ -1509,6 +1509,9 @@
 0x4a45 mem_24g_rxdata_temp_new
 0x4a86 mem_24g_txbuf_new
 0x4ac7 mem_24g_txpayload_new
+0x4b0c mem_usb_protocol_data
+0x4b16 mem_usb_protocol_data_sta
+0x4b20 mem_usb_protocol_data_last
 0x45d3 mem_rssi_hex_received
 0x45d4 mem_24g_pair_sm
 0x45d5 mem_24g_pair_no_ack
Index: output/otp.dat
===================================================================
--- /1121s/branch/dongle/1m/usb_1m_mingjian/output/otp.dat	(revision 3298)
+++ /1121s/branch/dongle/1m/usb_1m_mingjian/output/otp.dat	(working copy)
@@ -11,8 +11,8 @@
 00
 aa
 55
-d6
-11
+c6
+12
 c2
 84
 00
@@ -32,7 +32,7 @@
 c0
 0a
 03
-9e
+da
 c0
 0a
 81
@@ -52,7 +52,7 @@
 c0
 1b
 84
-15
+51
 c0
 1c
 01
@@ -64,7 +64,7 @@
 c0
 1e
 84
-07
+43
 c0
 1f
 00
@@ -76,11 +76,11 @@
 c0
 6d
 03
-6f
+ab
 c0
 6e
 03
-7f
+bb
 c0
 7f
 01
@@ -112,19 +112,19 @@
 c0
 1c
 83
-ba
+f6
 c0
 26
 83
-be
+fa
 c0
 37
 04
-1e
+5a
 c0
 37
 84
-38
+74
 c0
 39
 00
@@ -136,7 +136,7 @@
 c0
 3a
 84
-42
+7e
 c0
 3f
 80
@@ -144,23 +144,23 @@
 c0
 40
 84
-52
+8e
 c0
 41
 03
-c0
+fc
 c0
 42
 02
 73
 c0
 44
-03
-ef
+04
+2b
 c0
 45
-03
-fc
+04
+38
 c0
 48
 80
@@ -828,7 +828,7 @@
 20
 20
 03
-16
+39
 6f
 e0
 c6
@@ -1056,11 +1056,11 @@
 20
 40
 03
-41
+7d
 20
 40
 03
-6c
+a8
 20
 40
 01
@@ -1076,7 +1076,7 @@
 20
 20
 03
-6e
+aa
 20
 75
 80
@@ -1624,15 +1624,15 @@
 58
 00
 02
-a3
+a4
 67
 e1
 45
 e4
 58
 00
-02
-fa
+03
+1d
 67
 e1
 45
@@ -1640,7 +1640,7 @@
 58
 00
 03
-0f
+32
 67
 e1
 45
@@ -2516,11 +2516,11 @@
 20
 40
 03
-23
+46
 20
 20
 03
-27
+4a
 70
 4a
 44
@@ -2536,27 +2536,31 @@
 c0
 00
 82
-84
+85
 c0
 01
 02
-9d
+9e
 c0
 7f
 82
-82
+83
 c2
 83
 82
-7d
+7e
 c2
 83
 02
-7d
+7e
 c2
 82
 82
-7d
+7e
+c2
+82
+02
+7e
 20
 20
 33
@@ -2584,11 +2588,11 @@
 20
 40
 04
-71
+ad
 20
 20
-03
-c6
+04
+02
 20
 40
 33
@@ -2620,7 +2624,7 @@
 c0
 00
 82
-93
+94
 6f
 e0
 c6
@@ -2704,7 +2708,7 @@
 20
 20
 82
-9b
+9c
 6f
 e1
 45
@@ -2720,19 +2724,23 @@
 c2
 83
 82
-b7
+cf
 c2
 83
 02
-cd
+e5
 c2
 82
 82
-b1
+b3
+c2
+82
+02
+b9
 20
 20
 02
-a8
+aa
 58
 00
 00
@@ -2798,13 +2806,101 @@
 c5
 7d
 1f
+20
+f3
+ff
+d8
+a0
+4b
+0e
+d8
+c0
+4a
+48
+20
+40
+7c
+da
+6f
+20
+c5
+7d
+1f
 e0
 ff
 ff
 d8
 a0
+4b
+16
+d8
+c0
+4b
+0e
+20
+40
+7c
+da
+6f
+20
+c5
+7d
+1f
+e0
+ff
+ff
+da
+40
+4b
+16
+da
+20
+4b
+20
+20
+40
+7d
+64
+24
+42
+82
+fc
+6f
+20
+c5
+7d
+1f
+e0
+ff
+ff
+d8
+c0
+4b
+16
+d8
+a0
+4b
+20
+20
+40
+7c
+da
+20
+20
+33
+be
+6f
+20
+c5
+7d
+1f
+20
+f3
+ff
+d8
+a0
 47
-a4
+a3
 d8
 c0
 4a
@@ -2828,7 +2924,7 @@
 d8
 c0
 47
-a4
+a3
 20
 40
 7c
@@ -2855,8 +2951,8 @@
 64
 24
 42
-82
-e4
+83
+06
 6f
 20
 c5
@@ -2943,8 +3039,8 @@
 64
 24
 42
-82
-ed
+83
+10
 6f
 20
 c5
@@ -2972,7 +3068,47 @@
 20
 20
 02
-b1
+b3
+70
+4b
+0d
+a1
+6f
+e0
+c5
+7d
+1f
+e0
+ff
+ff
+67
+e0
+cb
+0c
+1f
+e2
+72
+00
+d8
+c0
+4b
+0f
+d8
+a0
+4b
+16
+20
+40
+7c
+da
+70
+09
+0c
+23
+20
+20
+48
+37
 70
 47
 a2
@@ -2996,19 +3132,23 @@
 d8
 c0
 47
-a2
+a4
 d8
 a0
-08
-b5
+47
+e1
 20
 40
 7c
 da
+70
+09
+0c
+24
 20
 20
-02
-09
+48
+37
 58
 00
 00
@@ -3068,15 +3208,15 @@
 c2
 83
 82
-b7
+cf
 c2
 83
 02
-cd
+e5
 20
 20
-02
-fe
+03
+21
 6f
 e0
 ca
@@ -3084,15 +3224,15 @@
 c0
 00
 03
-03
+26
 c0
 01
 03
-09
+2c
 c0
 01
 83
-0c
+2f
 20
 20
 33
@@ -3152,7 +3292,7 @@
 c0
 00
 83
-13
+36
 c0
 01
 00
@@ -3160,7 +3300,7 @@
 20
 20
 03
-13
+36
 6f
 e0
 c6
@@ -3172,7 +3312,7 @@
 20
 20
 03
-16
+39
 6f
 e0
 c6
@@ -3188,7 +3328,7 @@
 c0
 51
 03
-1b
+3e
 20
 60
 00
@@ -3288,7 +3428,7 @@
 c0
 13
 03
-36
+5b
 c0
 10
 fc
@@ -3297,6 +3437,14 @@
 11
 7c
 2c
+c0
+12
+03
+66
+c0
+11
+83
+71
 20
 20
 23
@@ -3332,7 +3480,7 @@
 20
 20
 03
-3e
+63
 d8
 a0
 46
@@ -3345,6 +3493,98 @@
 20
 7c
 a1
+70
+09
+0c
+00
+6f
+20
+c7
+a1
+d8
+c0
+47
+a3
+d8
+e0
+00
+02
+da
+20
+07
+59
+62
+31
+0c
+0c
+20
+40
+7b
+d2
+20
+20
+03
+6e
+d8
+a0
+47
+a1
+df
+20
+00
+40
+20
+20
+7c
+a1
+70
+09
+0c
+00
+6f
+20
+cb
+0c
+1f
+20
+f2
+01
+d8
+c0
+4b
+0d
+d8
+e0
+00
+02
+da
+20
+07
+59
+62
+31
+0c
+0c
+20
+40
+7b
+d2
+20
+20
+03
+7a
+d8
+a0
+4b
+0c
+df
+20
+00
+0a
+20
+20
+7c
+a1
 20
 75
 80
@@ -3396,7 +3636,7 @@
 20
 40
 03
-5e
+9a
 2a
 2f
 fe
@@ -3428,7 +3668,7 @@
 20
 40
 03
-5e
+9a
 d8
 a0
 8a
@@ -3456,7 +3696,7 @@
 20
 21
 03
-53
+8f
 20
 20
 21
@@ -3560,7 +3800,7 @@
 20
 40
 03
-97
+d3
 70
 8a
 08
@@ -3596,7 +3836,7 @@
 20
 40
 03
-8d
+c9
 6f
 f0
 8a
@@ -3640,7 +3880,7 @@
 20
 40
 03
-97
+d3
 70
 80
 cd
@@ -3700,7 +3940,7 @@
 c3
 02
 83
-98
+d4
 68
 59
 01
@@ -3736,7 +3976,7 @@
 c0
 08
 03
-b7
+f3
 58
 00
 57
@@ -3780,7 +4020,7 @@
 c0
 08
 03
-b4
+f0
 58
 00
 2b
@@ -3816,7 +4056,7 @@
 20
 20
 03
-b0
+ec
 58
 00
 83
@@ -3828,7 +4068,7 @@
 20
 20
 03
-a5
+e1
 6f
 e0
 c3
@@ -3867,12 +4107,12 @@
 3a
 c0
 11
-03
-d6
+04
+12
 c0
 7f
-83
-c6
+84
+02
 20
 60
 00
@@ -3883,12 +4123,12 @@
 48
 c0
 00
-83
-ca
+84
+06
 c0
 01
-03
-d0
+04
+0c
 20
 60
 00
@@ -3947,8 +4187,8 @@
 ae
 20
 3a
-03
-dc
+04
+18
 6f
 e2
 4a
@@ -3971,12 +4211,12 @@
 48
 c0
 00
-83
-e0
+84
+1c
 c0
 01
-03
-e7
+04
+23
 20
 60
 00
@@ -3995,8 +4235,8 @@
 d3
 c0
 01
-03
-e5
+04
+21
 20
 60
 00
@@ -4023,8 +4263,8 @@
 d4
 c0
 80
-03
-ec
+04
+28
 20
 60
 00
@@ -4104,7 +4344,7 @@
 20
 40
 04
-00
+3c
 20
 20
 34
@@ -4256,7 +4496,7 @@
 c5
 13
 84
-29
+65
 6f
 e0
 c4
@@ -4300,7 +4540,7 @@
 20
 40
 84
-36
+72
 18
 42
 7e
@@ -4388,7 +4628,7 @@
 20
 40
 84
-36
+72
 18
 42
 7e
@@ -4452,7 +4692,7 @@
 20
 40
 04
-59
+95
 20
 40
 00
@@ -4460,7 +4700,7 @@
 20
 40
 04
-6f
+ab
 20
 20
 33
@@ -4488,15 +4728,15 @@
 c0
 55
 04
-63
+9f
 c0
 2a
 84
-65
+a1
 c0
 11
-03
-d6
+04
+12
 c0
 7f
 b5
@@ -4520,7 +4760,7 @@
 20
 3a
 04
-6b
+a7
 6f
 e2
 4a
@@ -4577,8 +4817,8 @@
 60
 00
 00
-fe
-15
+c1
+24
 aa
 55
 40
@@ -5250,6 +5490,6 @@
 55
 1c
 94
-54
-f9
+51
+51
 f0
Index: output/program.lis
===================================================================
--- /1121s/branch/dongle/1m/usb_1m_mingjian/output/program.lis	(revision 3298)
+++ /1121s/branch/dongle/1m/usb_1m_mingjian/output/program.lis	(working copy)
@@ -4,19 +4,19 @@
 0001 c000002a beq patch00_0 ,p_soft_reset 
 0002 c00100d0 beq patch00_2 ,p_main_loop 
 0003 c00880d9 beq patch02_1 ,p_set_sync_on 
-0004 c00a039e beq patch02_4 ,p_set_lemode 
+0004 c00a03da beq patch02_4 ,p_set_lemode 
 0005 c00a8175 beq patch02_5 ,p_rf_rx_enable 
 0006 c00c0183 beq patch03_0 ,p_txon 
 0007 c00c8129 beq patch03_1 ,p_set_tx_power 
 0008 c00d00e7 beq patch03_2 ,p_initialize_radio_cont 
-0009 c01b8415 beq patch06_7 ,p_dongle_default_init 
+0009 c01b8451 beq patch06_7 ,p_dongle_default_init 
 000a c01c0148 beq patch07_0 ,p_dongle_read_kb_bind_status 
 000b c01c8144 beq patch07_1 ,p_dongle_write_kb_bind_status 
-000c c01e8407 beq patch07_5 ,p_dongle_usb_dispatch 
+000c c01e8443 beq patch07_5 ,p_dongle_usb_dispatch 
 000d c01f003d beq patch07_6 ,p_dongle_work_mode_auto 
 000e c0628141 beq patch18_5 ,p_otp_read_data 
-000f c06d036f beq patch1b_2 ,p_sadc_calibration 
-0010 c06e037f beq patch1b_4 ,p_enable_adc 
+000f c06d03ab beq patch1b_2 ,p_sadc_calibration 
+0010 c06e03bb beq patch1b_4 ,p_enable_adc 
 0011 c07f018e beq patch1f_6 ,p_usb_init 
 0012 c07f81f4 beq patch1f_7 ,p_usb_rx 
 0013 c07e818a beq patch1f_5 ,p_usb_isr 
@@ -26,19 +26,19 @@
 0015 c000021d beq patch20_0 ,p_usb_class_type 
 0016 c0010247 beq patch20_2 ,p_usb0_request_get_descriptor 
 0017 c0030265 beq patch20_6 ,p_usb_tx 
-0018 c01c83ba beq patch27_1 ,p_le_parse 
-0019 c02683be beq patch29_5 ,p_le_init_adv 
-001a c037041e beq patch2d_6 ,p_g24_receive_skip_fec1 
-001b c0378438 beq patch2d_7 ,p_g24_receive_skip_end 
+0018 c01c83f6 beq patch27_1 ,p_le_parse 
+0019 c02683fa beq patch29_5 ,p_le_init_adv 
+001a c037045a beq patch2d_6 ,p_g24_receive_skip_fec1 
+001b c0378474 beq patch2d_7 ,p_g24_receive_skip_end 
 001c c03900a8 beq patch2e_2 ,p_g24_transmit_packet 
 001d c039805c beq patch2e_3 ,p_g24_transmit_prep 
-001e c03a8442 beq patch2e_5 ,p_g24_read_len_pid_crc 
+001e c03a847e beq patch2e_5 ,p_g24_read_len_pid_crc 
 001f c03f8083 beq patch2f_7 ,p_g24_pair_dispatch 
-0020 c0408452 beq patch30_1 ,p_g24_bind_data_process 
-0021 c04103c0 beq patch30_2 ,p_g24_bind_data_parse_next 
+0020 c040848e beq patch30_1 ,p_g24_bind_data_process 
+0021 c04103fc beq patch30_2 ,p_g24_bind_data_parse_next 
 0022 c0420273 beq patch30_4 ,p_g24_receive_packet_start1 
-0023 c04403ef beq patch31_0 ,p_g24_mode_switch_bind_search 
-0024 c04503fc beq patch31_2 ,p_g24_bind_mode_auto 
+0023 c044042b beq patch31_0 ,p_g24_mode_switch_bind_search 
+0024 c0450438 beq patch31_2 ,p_g24_bind_mode_auto 
 0025 c0488059 beq patch32_1 ,p_g24_txbuf_clear 
 0026 c0458030 beq patch31_3 ,p_g24_search_mode_auto 
 0027 c1468000 rtneq patch31_5 
@@ -271,7 +271,7 @@
 p_dongle_ackpayload_prep_keyboard:
 00c9 6fe0c693 fetch 1 ,mem_dg_pc_sleep_flag 
 00ca c28080cc bbit1 1 ,p_dongle_pc_sleep_ackpayload_prep_keyboard 
-00cb 20200316 branch p_dongle_ackpayload_prep_end 
+00cb 20200339 branch p_dongle_ackpayload_prep_end 
 
 p_dongle_pc_sleep_ackpayload_prep_keyboard:
 00cc 6fe0c693 fetch 1 ,mem_dg_pc_sleep_flag 
@@ -338,12 +338,12 @@
 0101 58557474 setarg 0x557474 
 0102 67f18968 store 3 ,0x8968 
 0103 7089606e jam 0x6e ,0x8960 
-0104 20400341 call p_rx_dcoc 
-0105 2040036c call p_rfpll_aac_ghpc 
+0104 2040037d call p_rx_dcoc 
+0105 204003a8 call p_rfpll_aac_ghpc 
 0106 2040010a call p_set_xtal_cap 
 0107 7041480c jam system_clk_12m ,mem_system_clk 
 0108 20406f4e call sadc_calibration 
-0109 2020036e branch p_dpll_ring_ibias_calc 
+0109 202003aa branch p_dpll_ring_ibias_calc 
 
 p_set_xtal_cap:
 010a 20758000 rtn wake 
@@ -518,11 +518,11 @@
 018f 20407932 call usb_init_param 
 0190 5800499a setarg mem_usb_ep2_config 
 0191 67e107a9 store 2 ,mem_hidreportdesc_m 
-0192 580002a3 setarg p_dongle_g24_mouse 
+0192 580002a4 setarg p_dongle_g24_mouse 
 0193 67e145e4 store 2 ,mem_cb_24g_data_device1 
-0194 580002fa setarg p_dongle_g24_keyboard 
+0194 5800031d setarg p_dongle_g24_keyboard 
 0195 67e145e6 store 2 ,mem_cb_24g_data_device2 
-0196 5800030f setarg p_dongle_ackpayload_prep 
+0196 58000332 setarg p_dongle_ackpayload_prep 
 0197 67e145e2 store 2 ,mem_cb_24g_ackpayload 
 
 p_usb_init_restart:
@@ -805,674 +805,750 @@
 026e c0817c06 bne usb_connected ,usb_tx_fifo_release 
 026f 6fe08902 fetch 1 ,mem_usb_clear_remote_wakeup 
 0270 243a7c06 nbranch usb_tx_fifo_release ,blank 
-0271 20400323 call p_usb_tx_data_ep1 
-0272 20200327 branch p_usb_tx_data_ep2 
+0271 20400346 call p_usb_tx_data_ep1 
+0272 2020034a branch p_usb_tx_data_ep2 
 
 p_g24_receive_packet_start1:
 0273 704a4400 jam 0 ,mem_24g_ackpayload_enable_temp 
 0274 70461100 jam 0 ,mem_24g_ackpayload_enable 
 0275 6fe0ca47 fetch 1 ,mem_24g_rxdata_temp_new + 2 
-0276 c0008284 beq datatype_device1 ,p_g24_data_device1 
-0277 c001029d beq datatype_device2 ,p_g24_data_device2 
-0278 c07f8282 beq datatype_attemp ,p_g24_data_receive_attemp 
-0279 c283827d bbit1 datatype_audio ,p_g24_data_receive_heart_authca_audio 
-027a c283027d bbit1 datatype_authca ,p_g24_data_receive_heart_authca_audio 
-027b c282827d bbit1 datatype_heart ,p_g24_data_receive_heart_authca_audio 
-027c 202033be branch g24_rx_interrupt_clear 
+0276 c0008285 beq datatype_device1 ,p_g24_data_device1 
+0277 c001029e beq datatype_device2 ,p_g24_data_device2 
+0278 c07f8283 beq datatype_attemp ,p_g24_data_receive_attemp 
+0279 c283827e bbit1 datatype_audio ,p_g24_data_receive_heart_authca_audio 
+027a c283027e bbit1 datatype_authca ,p_g24_data_receive_heart_authca_audio 
+027b c282827e bbit1 datatype_heart ,p_g24_data_receive_heart_authca_audio 
+027c c282027e bbit1 datatype_protocol ,p_g24_data_receive_heart_authca_audio 
+027d 202033be branch g24_rx_interrupt_clear 
 
 p_g24_data_receive_heart_authca_audio:
-027d 6fe0ca47 fetch 1 ,mem_24g_rxdata_temp_new + 2 
-027e 1fe17e0f and pdata ,0x0f ,pdata 
-027f c000b3c4 beq datatype_device1 ,g24_data_device1 
-0280 c00133d3 beq datatype_device2 ,g24_data_device2 
-0281 202033be branch g24_rx_interrupt_clear 
+027e 6fe0ca47 fetch 1 ,mem_24g_rxdata_temp_new + 2 
+027f 1fe17e0f and pdata ,0x0f ,pdata 
+0280 c000b3c4 beq datatype_device1 ,g24_data_device1 
+0281 c00133d3 beq datatype_device2 ,g24_data_device2 
+0282 202033be branch g24_rx_interrupt_clear 
 
 p_g24_data_receive_attemp:
-0282 20400471 call p_g24_bind_device_status 
-0283 202003c6 branch p_g24_data_attemp 
+0283 204004ad call p_g24_bind_device_status 
+0284 20200402 branch p_g24_data_attemp 
 
 p_g24_data_device1:
-0284 2040338d call g24_binding_dvc1_living 
-0285 2040352e call g24_ch_timer_reinit 
-0286 6fe0c60a fetch 1 ,mem_24g_abort_packet 
-0287 6848ca45 fetcht 1 ,mem_24g_rxdata_temp_new 
-0288 284ffe03 isolate1 bit_abort ,temp 
-0289 7920fe00 setflag true ,0 ,pdata 
-028a 67e0c60a store 1 ,mem_24g_abort_packet 
-028b c0008293 beq 1 ,p_g24_data_attemp_device1_abort 
-028c 6fe0c612 fetch 1 ,mem_24g_hop_packet 
-028d 6848ca45 fetcht 1 ,mem_24g_rxdata_temp_new 
-028e 284ffe04 isolate1 bit_hop ,temp 
-028f 7920fe00 setflag true ,0 ,pdata 
-0290 67e0c612 store 1 ,mem_24g_hop_packet 
-0291 6fe145e4 fetch 2 ,mem_cb_24g_data_device1 
-0292 20207d79 branch callback_func 
+0285 2040338d call g24_binding_dvc1_living 
+0286 2040352e call g24_ch_timer_reinit 
+0287 6fe0c60a fetch 1 ,mem_24g_abort_packet 
+0288 6848ca45 fetcht 1 ,mem_24g_rxdata_temp_new 
+0289 284ffe03 isolate1 bit_abort ,temp 
+028a 7920fe00 setflag true ,0 ,pdata 
+028b 67e0c60a store 1 ,mem_24g_abort_packet 
+028c c0008294 beq 1 ,p_g24_data_attemp_device1_abort 
+028d 6fe0c612 fetch 1 ,mem_24g_hop_packet 
+028e 6848ca45 fetcht 1 ,mem_24g_rxdata_temp_new 
+028f 284ffe04 isolate1 bit_hop ,temp 
+0290 7920fe00 setflag true ,0 ,pdata 
+0291 67e0c612 store 1 ,mem_24g_hop_packet 
+0292 6fe145e4 fetch 2 ,mem_cb_24g_data_device1 
+0293 20207d79 branch callback_func 
 
 p_g24_data_attemp_device1_abort:
-0293 6fe0c3cb fetch 1 ,mem_device_option 
-0294 1fe67c0e sub pdata ,dvc_op_car ,null 
-0295 2042c469 call car_stop_blink ,zero 
-0296 6fe0c5de fetch 1 ,mem_24g_device1_bind_disable 
-0297 247a0000 nrtn blank 
-0298 7045de01 jam 1 ,mem_24g_device1_bind_disable 
-0299 6fe24a4f fetch 4 ,mem_24g_rxdata_temp_new + 10 
-029a 202035a3 branch g24_store_device1_addr 
+0294 6fe0c3cb fetch 1 ,mem_device_option 
+0295 1fe67c0e sub pdata ,dvc_op_car ,null 
+0296 2042c469 call car_stop_blink ,zero 
+0297 6fe0c5de fetch 1 ,mem_24g_device1_bind_disable 
+0298 247a0000 nrtn blank 
+0299 7045de01 jam 1 ,mem_24g_device1_bind_disable 
+029a 6fe24a4f fetch 4 ,mem_24g_rxdata_temp_new + 10 
+029b 202035a3 branch g24_store_device1_addr 
 
 p_g24_data_attemp_device2_abort:
-029b 6fe24a4f fetch 4 ,mem_24g_rxdata_temp_new + 10 
-029c 202035a9 branch g24_store_device2_addr 
+029c 6fe24a4f fetch 4 ,mem_24g_rxdata_temp_new + 10 
+029d 202035a9 branch g24_store_device2_addr 
 
 p_g24_data_device2:
-029d 20403393 call g24_binding_dvc2_living 
-029e 6848ca45 fetcht 1 ,mem_24g_rxdata_temp_new 
-029f 284ffe03 isolate1 bit_abort ,temp 
-02a0 2020829b branch p_g24_data_attemp_device2_abort ,true 
-02a1 6fe145e6 fetch 2 ,mem_cb_24g_data_device2 
-02a2 20207d79 branch callback_func 
+029e 20403393 call g24_binding_dvc2_living 
+029f 6848ca45 fetcht 1 ,mem_24g_rxdata_temp_new 
+02a0 284ffe03 isolate1 bit_abort ,temp 
+02a1 2020829c branch p_g24_data_attemp_device2_abort ,true 
+02a2 6fe145e6 fetch 2 ,mem_cb_24g_data_device2 
+02a3 20207d79 branch callback_func 
 
 p_dongle_g24_mouse:
-02a3 6fe0ca47 fetch 1 ,mem_24g_rxdata_temp_new + 2 
-02a4 c28382b7 bbit1 datatype_audio ,p_dongle_g24_mouse_audio_data 
-02a5 c28302cd bbit1 datatype_authca ,p_dongle_g24_mouse_authca_data 
-02a6 c28282b1 bbit1 datatype_heart ,p_dongle_g24_mouse_heart_data 
-02a7 202002a8 branch p_dongle_g24_mouse_next 
+02a4 6fe0ca47 fetch 1 ,mem_24g_rxdata_temp_new + 2 
+02a5 c28382cf bbit1 datatype_audio ,p_dongle_g24_mouse_audio_data 
+02a6 c28302e5 bbit1 datatype_authca ,p_dongle_g24_mouse_authca_data 
+02a7 c28282b3 bbit1 datatype_heart ,p_dongle_g24_mouse_heart_data 
+02a8 c28202b9 bbit1 datatype_protocol ,p_g24_data_receive_protocol_data 
+02a9 202002aa branch p_dongle_g24_mouse_next 
 
 p_dongle_g24_mouse_next:
-02a8 58000001 setarg ms_report_id 
-02a9 67e08913 store 1 ,mem_usb_mouse_data 
-02aa 6fe3ca48 fetch 7 ,mem_24g_rxdata_temp_new + 3 
-02ab e7e38005 istore 7 ,contw 
-02ac 6fe0ca48 fetch 1 ,mem_24g_rxdata_temp_new + 3 
-02ad 245a48dd ncall dongle_g24_ms_enable_blank_data_forcibly ,blank 
+02aa 58000001 setarg ms_report_id 
+02ab 67e08913 store 1 ,mem_usb_mouse_data 
+02ac 6fe3ca48 fetch 7 ,mem_24g_rxdata_temp_new + 3 
+02ad e7e38005 istore 7 ,contw 
 02ae 6fe0ca48 fetch 1 ,mem_24g_rxdata_temp_new + 3 
-02af 205a48e1 call dongle_g24_ms_disable_blank_data_forcibly ,blank 
-02b0 20204836 branch dongle_usb_tx_ms_data 
+02af 245a48dd ncall dongle_g24_ms_enable_blank_data_forcibly ,blank 
+02b0 6fe0ca48 fetch 1 ,mem_24g_rxdata_temp_new + 3 
+02b1 205a48e1 call dongle_g24_ms_disable_blank_data_forcibly ,blank 
+02b2 20204836 branch dongle_usb_tx_ms_data 
 
 p_dongle_g24_mouse_heart_data:
-02b1 6fe0c896 fetch 1 ,mem_dongle_usb_ep2_data_flag 
-02b2 207a0000 rtn blank 
-02b3 70489600 jam 0 ,mem_dongle_usb_ep2_data_flag 
+02b3 6fe0c896 fetch 1 ,mem_dongle_usb_ep2_data_flag 
+02b4 207a0000 rtn blank 
+02b5 70489600 jam 0 ,mem_dongle_usb_ep2_data_flag 
 
 p_24g_ackpayload_enable_set:
-02b4 704611a2 jam report_id_data_out ,mem_24g_ackpayload_enable 
-02b5 704a44a2 jam report_id_data_out ,mem_24g_ackpayload_enable_temp 
-02b6 20600000 rtn 
+02b6 704611a2 jam report_id_data_out ,mem_24g_ackpayload_enable 
+02b7 704a44a2 jam report_id_data_out ,mem_24g_ackpayload_enable_temp 
+02b8 20600000 rtn 
+
+p_g24_data_receive_protocol_data:
+02b9 6f20c57d fetchr loopcnt ,1 ,mem_24g_rxdata_length 
+02ba 1f20f3ff increase -1 ,loopcnt 
+02bb d8a04b0e arg mem_usb_protocol_data + 2 ,contw 
+02bc d8c04a48 arg mem_24g_rxdata_temp_new + 3 ,contr 
+02bd 20407cda call memcpy 
+02be 6f20c57d fetchr loopcnt ,1 ,mem_24g_rxdata_length 
+02bf 1fe0ffff increase -1 ,pdata 
+02c0 d8a04b16 arg mem_usb_protocol_data_sta ,contw 
+02c1 d8c04b0e arg mem_usb_protocol_data + 2 ,contr 
+02c2 20407cda call memcpy 
+02c3 6f20c57d fetchr loopcnt ,1 ,mem_24g_rxdata_length 
+02c4 1fe0ffff increase -1 ,pdata 
+02c5 da404b16 arg mem_usb_protocol_data_sta ,regb 
+02c6 da204b20 arg mem_usb_protocol_data_last ,rega 
+02c7 20407d64 call compare_loop 
+02c8 244282fc ncall p_dongle_usb_tx_protocol_data ,zero 
+02c9 6f20c57d fetchr loopcnt ,1 ,mem_24g_rxdata_length 
+02ca 1fe0ffff increase -1 ,pdata 
+02cb d8c04b16 arg mem_usb_protocol_data_sta ,contr 
+02cc d8a04b20 arg mem_usb_protocol_data_last ,contw 
+02cd 20407cda call memcpy 
+02ce 202033be branch g24_rx_interrupt_clear 
 
 p_dongle_g24_mouse_audio_data:
-02b7 6f20c57d fetchr loopcnt ,1 ,mem_24g_rxdata_length 
-02b8 1fe0ffff increase -1 ,pdata 
-02b9 d8a047a4 arg mem_usb_audio_data + 3 ,contw 
-02ba d8c04a48 arg mem_24g_rxdata_temp_new + 3 ,contr 
-02bb 20407cda call memcpy 
-02bc 6f20c57d fetchr loopcnt ,1 ,mem_24g_rxdata_length 
-02bd 1fe0ffff increase -1 ,pdata 
-02be d8a047e1 arg mem_usb_audio_data_sta ,contw 
-02bf d8c047a4 arg mem_usb_audio_data + 3 ,contr 
-02c0 20407cda call memcpy 
-02c1 6f20c57d fetchr loopcnt ,1 ,mem_24g_rxdata_length 
-02c2 1fe0ffff increase -1 ,pdata 
-02c3 da4047e1 arg mem_usb_audio_data_sta ,regb 
-02c4 da204821 arg mem_usb_audio_data_last ,rega 
-02c5 20407d64 call compare_loop 
-02c6 244282e4 ncall p_dongle_usb_tx_audio_data ,zero 
-02c7 6f20c57d fetchr loopcnt ,1 ,mem_24g_rxdata_length 
-02c8 1fe0ffff increase -1 ,pdata 
-02c9 d8c047e1 arg mem_usb_audio_data_sta ,contr 
-02ca d8a04821 arg mem_usb_audio_data_last ,contw 
-02cb 20407cda call memcpy 
-02cc 202033be branch g24_rx_interrupt_clear 
+02cf 6f20c57d fetchr loopcnt ,1 ,mem_24g_rxdata_length 
+02d0 1f20f3ff increase -1 ,loopcnt 
+02d1 d8a047a3 arg mem_usb_audio_data + 2 ,contw 
+02d2 d8c04a48 arg mem_24g_rxdata_temp_new + 3 ,contr 
+02d3 20407cda call memcpy 
+02d4 6f20c57d fetchr loopcnt ,1 ,mem_24g_rxdata_length 
+02d5 1fe0ffff increase -1 ,pdata 
+02d6 d8a047e1 arg mem_usb_audio_data_sta ,contw 
+02d7 d8c047a3 arg mem_usb_audio_data + 2 ,contr 
+02d8 20407cda call memcpy 
+02d9 6f20c57d fetchr loopcnt ,1 ,mem_24g_rxdata_length 
+02da 1fe0ffff increase -1 ,pdata 
+02db da4047e1 arg mem_usb_audio_data_sta ,regb 
+02dc da204821 arg mem_usb_audio_data_last ,rega 
+02dd 20407d64 call compare_loop 
+02de 24428306 ncall p_dongle_usb_tx_audio_data ,zero 
+02df 6f20c57d fetchr loopcnt ,1 ,mem_24g_rxdata_length 
+02e0 1fe0ffff increase -1 ,pdata 
+02e1 d8c047e1 arg mem_usb_audio_data_sta ,contr 
+02e2 d8a04821 arg mem_usb_audio_data_last ,contw 
+02e3 20407cda call memcpy 
+02e4 202033be branch g24_rx_interrupt_clear 
 
 p_dongle_g24_mouse_authca_data:
-02cd 6f20c57d fetchr loopcnt ,1 ,mem_24g_rxdata_length 
-02ce 1f20f3ff increase -1 ,loopcnt 
-02cf d8a046e0 arg mem_usb_authca_data + 2 ,contw 
-02d0 d8c04a48 arg mem_24g_rxdata_temp_new + 3 ,contr 
-02d1 20407cda call memcpy 
-02d2 6f20c57d fetchr loopcnt ,1 ,mem_24g_rxdata_length 
-02d3 1fe0ffff increase -1 ,pdata 
-02d4 d8a0471f arg mem_usb_authca_data_sta ,contw 
-02d5 d8c046e0 arg mem_usb_authca_data + 2 ,contr 
-02d6 20407cda call memcpy 
-02d7 6f20c57d fetchr loopcnt ,1 ,mem_24g_rxdata_length 
-02d8 1fe0ffff increase -1 ,pdata 
-02d9 da40471f arg mem_usb_authca_data_sta ,regb 
-02da da204760 arg mem_usb_authca_data_last ,rega 
-02db 20407d64 call compare_loop 
-02dc 244282ed ncall p_dongle_usb_tx_authca_data ,zero 
-02dd 6f20c57d fetchr loopcnt ,1 ,mem_24g_rxdata_length 
-02de 1fe0ffff increase -1 ,pdata 
-02df d8c0471f arg mem_usb_authca_data_sta ,contr 
-02e0 d8a04760 arg mem_usb_authca_data_last ,contw 
-02e1 20407cda call memcpy 
-02e2 204033be call g24_rx_interrupt_clear 
-02e3 202002b1 branch p_dongle_g24_mouse_heart_data 
+02e5 6f20c57d fetchr loopcnt ,1 ,mem_24g_rxdata_length 
+02e6 1f20f3ff increase -1 ,loopcnt 
+02e7 d8a046e0 arg mem_usb_authca_data + 2 ,contw 
+02e8 d8c04a48 arg mem_24g_rxdata_temp_new + 3 ,contr 
+02e9 20407cda call memcpy 
+02ea 6f20c57d fetchr loopcnt ,1 ,mem_24g_rxdata_length 
+02eb 1fe0ffff increase -1 ,pdata 
+02ec d8a0471f arg mem_usb_authca_data_sta ,contw 
+02ed d8c046e0 arg mem_usb_authca_data + 2 ,contr 
+02ee 20407cda call memcpy 
+02ef 6f20c57d fetchr loopcnt ,1 ,mem_24g_rxdata_length 
+02f0 1fe0ffff increase -1 ,pdata 
+02f1 da40471f arg mem_usb_authca_data_sta ,regb 
+02f2 da204760 arg mem_usb_authca_data_last ,rega 
+02f3 20407d64 call compare_loop 
+02f4 24428310 ncall p_dongle_usb_tx_authca_data ,zero 
+02f5 6f20c57d fetchr loopcnt ,1 ,mem_24g_rxdata_length 
+02f6 1fe0ffff increase -1 ,pdata 
+02f7 d8c0471f arg mem_usb_authca_data_sta ,contr 
+02f8 d8a04760 arg mem_usb_authca_data_last ,contw 
+02f9 20407cda call memcpy 
+02fa 204033be call g24_rx_interrupt_clear 
+02fb 202002b3 branch p_dongle_g24_mouse_heart_data 
+
+p_dongle_usb_tx_protocol_data:
+02fc 704b0da1 jam report_id_data_in ,mem_usb_protocol_data + 1 
+02fd 6fe0c57d fetch 1 ,mem_24g_rxdata_length 
+02fe 1fe0ffff increase -1 ,pdata 
+02ff 67e0cb0c store 1 ,mem_usb_protocol_data 
+0300 1fe27200 copy pdata ,loopcnt 
+0301 d8c04b0f arg mem_usb_protocol_data + 3 ,contr 
+0302 d8a04b16 arg mem_usb_protocol_data_sta ,contw 
+0303 20407cda call memcpy 
+0304 70090c23 jam usb_ep2_protocol ,mem_usb_ep2_data 
+0305 20204837 branch dongle_usb_tx_enable_ep2 
 
 p_dongle_usb_tx_audio_data:
-02e4 7047a2a0 jam report_id_audio_data_in ,mem_usb_audio_data + 1 
-02e5 6fe0c57d fetch 1 ,mem_24g_rxdata_length 
-02e6 1fe0ffff increase -1 ,pdata 
-02e7 67e0c7a1 store 1 ,mem_usb_audio_data 
-02e8 1fe27200 copy pdata ,loopcnt 
-02e9 d8c047a2 arg mem_usb_audio_data + 1 ,contr 
-02ea d8a008b5 arg mem_usb0_get_report_data ,contw 
-02eb 20407cda call memcpy 
-02ec 20200209 branch p_usb_get_report_enable 
+0306 7047a2a0 jam report_id_audio_data_in ,mem_usb_audio_data + 1 
+0307 6fe0c57d fetch 1 ,mem_24g_rxdata_length 
+0308 1fe0ffff increase -1 ,pdata 
+0309 67e0c7a1 store 1 ,mem_usb_audio_data 
+030a 1fe27200 copy pdata ,loopcnt 
+030b d8c047a4 arg mem_usb_audio_data + 3 ,contr 
+030c d8a047e1 arg mem_usb_audio_data_sta ,contw 
+030d 20407cda call memcpy 
+030e 70090c24 jam usb_ep2_audio ,mem_usb_ep2_data 
+030f 20204837 branch dongle_usb_tx_enable_ep2 
 
 p_dongle_usb_tx_authca_data:
-02ed 58000040 setarg 0x40 
-02ee 67e0c6de store 1 ,mem_usb_authca_data 
-02ef 7046dfa3 jam report_id_authca_data_in ,mem_usb_authca_data + 1 
-02f0 6fe0c57d fetch 1 ,mem_24g_rxdata_length 
-02f1 1fe0ffff increase -1 ,pdata 
-02f2 67e0c6e0 store 1 ,mem_usb_authca_data + 2 
-02f3 6f20c57d fetchr loopcnt ,1 ,mem_24g_rxdata_length 
-02f4 1fe0ffff increase -1 ,pdata 
-02f5 d8a046e1 arg mem_usb_authca_data + 3 ,contw 
-02f6 d8c0471f arg mem_usb_authca_data_sta ,contr 
-02f7 20407cda call memcpy 
-02f8 70090c26 jam usb_ep2_authca ,mem_usb_ep2_data 
-02f9 20204837 branch dongle_usb_tx_enable_ep2 
+0310 58000040 setarg 0x40 
+0311 67e0c6de store 1 ,mem_usb_authca_data 
+0312 7046dfa3 jam report_id_authca_data_in ,mem_usb_authca_data + 1 
+0313 6fe0c57d fetch 1 ,mem_24g_rxdata_length 
+0314 1fe0ffff increase -1 ,pdata 
+0315 67e0c6e0 store 1 ,mem_usb_authca_data + 2 
+0316 6f20c57d fetchr loopcnt ,1 ,mem_24g_rxdata_length 
+0317 1fe0ffff increase -1 ,pdata 
+0318 d8a046e1 arg mem_usb_authca_data + 3 ,contw 
+0319 d8c0471f arg mem_usb_authca_data_sta ,contr 
+031a 20407cda call memcpy 
+031b 70090c26 jam usb_ep2_authca ,mem_usb_ep2_data 
+031c 20204837 branch dongle_usb_tx_enable_ep2 
 
 p_dongle_g24_keyboard:
-02fa 6fe0ca47 fetch 1 ,mem_24g_rxdata_temp_new + 2 
-02fb c28382b7 bbit1 datatype_audio ,p_dongle_g24_mouse_audio_data 
-02fc c28302cd bbit1 datatype_authca ,p_dongle_g24_mouse_authca_data 
-02fd 202002fe branch p_dongle_g24_kb 
+031d 6fe0ca47 fetch 1 ,mem_24g_rxdata_temp_new + 2 
+031e c28382cf bbit1 datatype_audio ,p_dongle_g24_mouse_audio_data 
+031f c28302e5 bbit1 datatype_authca ,p_dongle_g24_mouse_authca_data 
+0320 20200321 branch p_dongle_g24_kb 
 
 p_dongle_g24_kb:
-02fe 6fe0ca48 fetch 1 ,mem_24g_rxdata_temp_new + 3 
-02ff c0000303 beq 0 ,p_dongle_g24_kb_type0 
-0300 c0010309 beq 2 ,p_dongle_g24_kb_type2 
-0301 c001830c beq 3 ,p_dongle_g24_kb_type3 
-0302 202033be branch g24_rx_interrupt_clear 
+0321 6fe0ca48 fetch 1 ,mem_24g_rxdata_temp_new + 3 
+0322 c0000326 beq 0 ,p_dongle_g24_kb_type0 
+0323 c001032c beq 2 ,p_dongle_g24_kb_type2 
+0324 c001832f beq 3 ,p_dongle_g24_kb_type3 
+0325 202033be branch g24_rx_interrupt_clear 
 
 p_dongle_g24_kb_type0:
-0303 6fe0ca4a fetch 1 ,mem_24g_rxdata_temp_new + 5 
-0304 67e0c611 store 1 ,mem_24g_ackpayload_enable 
-0305 704a4a00 jam 0 ,mem_24g_rxdata_temp_new + 5 
-0306 d8a00923 arg mem_usb_kb_data ,contw 
-0307 d8c04a49 arg mem_24g_rxdata_temp_new + 4 ,contr 
-0308 202048ef branch dongle_g24_kb_type0 + 5 
+0326 6fe0ca4a fetch 1 ,mem_24g_rxdata_temp_new + 5 
+0327 67e0c611 store 1 ,mem_24g_ackpayload_enable 
+0328 704a4a00 jam 0 ,mem_24g_rxdata_temp_new + 5 
+0329 d8a00923 arg mem_usb_kb_data ,contw 
+032a d8c04a49 arg mem_24g_rxdata_temp_new + 4 ,contr 
+032b 202048ef branch dongle_g24_kb_type0 + 5 
 
 p_dongle_g24_kb_type2:
-0309 d8a00943 arg mem_usb_kb_system ,contw 
-030a d8c04a48 arg mem_24g_rxdata_temp_new + 3 ,contr 
-030b 2020491f branch dongle_g24_kb_type2 + 2 
+032c d8a00943 arg mem_usb_kb_system ,contw 
+032d d8c04a48 arg mem_24g_rxdata_temp_new + 3 ,contr 
+032e 2020491f branch dongle_g24_kb_type2 + 2 
 
 p_dongle_g24_kb_type3:
-030c d8a00933 arg mem_usb_kb_multikey ,contw 
-030d d8c04a48 arg mem_24g_rxdata_temp_new + 3 ,contr 
-030e 20204907 branch dongle_g24_kb_type3 + 2 
+032f d8a00933 arg mem_usb_kb_multikey ,contw 
+0330 d8c04a48 arg mem_24g_rxdata_temp_new + 3 ,contr 
+0331 20204907 branch dongle_g24_kb_type3 + 2 
 
 p_dongle_ackpayload_prep:
-030f 6fe0c589 fetch 1 ,mem_24g_data_type 
-0310 c0008313 beq datatype_device1 ,p_dongle_ackpayload_prep_mouse 
-0311 c00100c9 beq datatype_device2 ,p_dongle_ackpayload_prep_keyboard 
-0312 20200313 branch p_dongle_ackpayload_prep_mouse 
+0332 6fe0c589 fetch 1 ,mem_24g_data_type 
+0333 c0008336 beq datatype_device1 ,p_dongle_ackpayload_prep_mouse 
+0334 c00100c9 beq datatype_device2 ,p_dongle_ackpayload_prep_keyboard 
+0335 20200336 branch p_dongle_ackpayload_prep_mouse 
 
 p_dongle_ackpayload_prep_mouse:
-0313 6fe0c693 fetch 1 ,mem_dg_pc_sleep_flag 
-0314 c28000bb bbit1 0 ,p_dongle_pc_sleep_ackpayload_prep_mouse 
-0315 20200316 branch p_dongle_ackpayload_prep_end 
+0336 6fe0c693 fetch 1 ,mem_dg_pc_sleep_flag 
+0337 c28000bb bbit1 0 ,p_dongle_pc_sleep_ackpayload_prep_mouse 
+0338 20200339 branch p_dongle_ackpayload_prep_end 
 
 p_dongle_ackpayload_prep_end:
-0316 6fe0c611 fetch 1 ,mem_24g_ackpayload_enable 
-0317 c00080b3 beq bind_ackpayload ,p_dongle_g24_bind_ackpayload_prep 
-0318 c00180c2 beq kb_led_ackpayload ,p_dongle_g24_kb_led_ackpayload_prep 
-0319 c051031b beq report_id_data_out ,p_dongle_ep2_ackpayload_prep 
-031a 20600000 rtn 
+0339 6fe0c611 fetch 1 ,mem_24g_ackpayload_enable 
+033a c00080b3 beq bind_ackpayload ,p_dongle_g24_bind_ackpayload_prep 
+033b c00180c2 beq kb_led_ackpayload ,p_dongle_g24_kb_led_ackpayload_prep 
+033c c051033e beq report_id_data_out ,p_dongle_ep2_ackpayload_prep 
+033d 20600000 rtn 
 
 p_dongle_ep2_ackpayload_prep:
-031b 704611a2 jam report_id_data_out ,mem_24g_ackpayload_enable 
-031c 704a44a2 jam report_id_data_out ,mem_24g_ackpayload_enable_temp 
-031d 6fe0c897 fetch 1 ,mem_dongle_usb_ep2_data_len 
-031e 67e0c588 store 1 ,mem_24g_datalen 
-031f 1fe27200 copy pdata ,loopcnt 
-0320 d8c04898 arg mem_dongle_g24_usb_ep2_ack_data ,contr 
-0321 d8a04a86 arg mem_24g_txbuf_new ,contw 
-0322 20207cda branch memcpy 
+033e 704611a2 jam report_id_data_out ,mem_24g_ackpayload_enable 
+033f 704a44a2 jam report_id_data_out ,mem_24g_ackpayload_enable_temp 
+0340 6fe0c897 fetch 1 ,mem_dongle_usb_ep2_data_len 
+0341 67e0c588 store 1 ,mem_24g_datalen 
+0342 1fe27200 copy pdata ,loopcnt 
+0343 d8c04898 arg mem_dongle_g24_usb_ep2_ack_data ,contr 
+0344 d8a04a86 arg mem_24g_txbuf_new ,contw 
+0345 20207cda branch memcpy 
 
 p_usb_tx_data_ep1:
-0323 6ff08c25 fetch 1 ,core_usb_txbusy 
-0324 1fe17e0f and_into 0x0f ,pdata 
-0325 247a0000 nrtn blank 
-0326 20207bf0 branch usb_tx_data_ep1 + 2 
+0346 6ff08c25 fetch 1 ,core_usb_txbusy 
+0347 1fe17e0f and_into 0x0f ,pdata 
+0348 247a0000 nrtn blank 
+0349 20207bf0 branch usb_tx_data_ep1 + 2 
 
 p_usb_tx_data_ep2:
-0327 6ff08c25 fetch 1 ,core_usb_txbusy 
-0328 1fe17e0f and_into 0x0f ,pdata 
-0329 247a0000 nrtn blank 
-032a 6fe0890d fetch 1 ,mem_usb_tx_enable 
-032b c4010000 rtnbit0 2 
-032c 6fe0890d fetch 1 ,mem_usb_tx_enable 
-032d 793ffe02 set0 2 ,pdata 
-032e 67e0890d store 1 ,mem_usb_tx_enable 
-032f 6fe0890c fetch 1 ,mem_usb_ep2_data 
-0330 207a0000 rtn blank 
-0331 c0107c09 beq usb_ep2_ms ,usb_tx_ms_data 
-0332 c0130336 beq usb_ep2_authca ,p_usb_tx_authca_data 
-0333 c010fc24 beq usb_ep2_multikey ,usb_tx_kb_multikey_data 
-0334 c0117c2c beq usb_ep2_systemkey ,usb_tx_kb_systemkey_data 
-0335 2020235a branch assert 
+034a 6ff08c25 fetch 1 ,core_usb_txbusy 
+034b 1fe17e0f and_into 0x0f ,pdata 
+034c 247a0000 nrtn blank 
+034d 6fe0890d fetch 1 ,mem_usb_tx_enable 
+034e c4010000 rtnbit0 2 
+034f 6fe0890d fetch 1 ,mem_usb_tx_enable 
+0350 793ffe02 set0 2 ,pdata 
+0351 67e0890d store 1 ,mem_usb_tx_enable 
+0352 6fe0890c fetch 1 ,mem_usb_ep2_data 
+0353 207a0000 rtn blank 
+0354 c0107c09 beq usb_ep2_ms ,usb_tx_ms_data 
+0355 c013035b beq usb_ep2_authca ,p_usb_tx_authca_data 
+0356 c010fc24 beq usb_ep2_multikey ,usb_tx_kb_multikey_data 
+0357 c0117c2c beq usb_ep2_systemkey ,usb_tx_kb_systemkey_data 
+0358 c0120366 beq usb_ep2_audio ,p_usb_tx_audio_data 
+0359 c0118371 beq usb_ep2_protocol ,p_usb_tx_protocol_data 
+035a 2020235a branch assert 
 
 p_usb_tx_authca_data:
-0336 70090c00 jam 0 ,mem_usb_ep2_data 
-0337 6f20c6de fetchr loopcnt ,1 ,mem_usb_authca_data 
-0338 d8c046df arg mem_usb_authca_data + 1 ,contr 
-
-p_usb_tx_ep2:
-0339 d8e00002 arg 2 ,queue 
-033a da200759 arg mem_usb_txbuf2 ,rega 
-033b 62310c0c storer rega ,2 ,core_usb_tx_saddr2 
-033c 20407bd2 call usb_tx_buf 
-033d 2020033e branch p_usb_release_authca_buf 
+035b 70090c00 jam 0 ,mem_usb_ep2_data 
+035c 6f20c6de fetchr loopcnt ,1 ,mem_usb_authca_data 
+035d d8c046df arg mem_usb_authca_data + 1 ,contr 
+
+p_usb_tx_authca_ep2:
+035e d8e00002 arg 2 ,queue 
+035f da200759 arg mem_usb_txbuf2 ,rega 
+0360 62310c0c storer rega ,2 ,core_usb_tx_saddr2 
+0361 20407bd2 call usb_tx_buf 
+0362 20200363 branch p_usb_release_authca_buf 
 
 p_usb_release_authca_buf:
-033e d8a046de arg mem_usb_authca_data ,contw 
-033f df200040 arg 64 ,loopcnt 
-0340 20207ca1 branch clear_mem 
+0363 d8a046de arg mem_usb_authca_data ,contw 
+0364 df200040 arg 64 ,loopcnt 
+0365 20207ca1 branch clear_mem 
+
+p_usb_tx_audio_data:
+0366 70090c00 jam 0 ,mem_usb_ep2_data 
+0367 6f20c7a1 fetchr loopcnt ,1 ,mem_usb_audio_data 
+0368 d8c047a3 arg mem_usb_audio_data + 2 ,contr 
+
+p_usb_tx_audio_ep2:
+0369 d8e00002 arg 2 ,queue 
+036a da200759 arg mem_usb_txbuf2 ,rega 
+036b 62310c0c storer rega ,2 ,core_usb_tx_saddr2 
+036c 20407bd2 call usb_tx_buf 
+036d 2020036e branch p_usb_release_audio_buf 
+
+p_usb_release_audio_buf:
+036e d8a047a1 arg mem_usb_audio_data ,contw 
+036f df200040 arg 64 ,loopcnt 
+0370 20207ca1 branch clear_mem 
+
+p_usb_tx_protocol_data:
+0371 70090c00 jam 0 ,mem_usb_ep2_data 
+0372 6f20cb0c fetchr loopcnt ,1 ,mem_usb_protocol_data 
+0373 1f20f201 increase 1 ,loopcnt 
+0374 d8c04b0d arg mem_usb_protocol_data + 1 ,contr 
+
+p_usb_tx_protocol_ep2:
+0375 d8e00002 arg 2 ,queue 
+0376 da200759 arg mem_usb_txbuf2 ,rega 
+0377 62310c0c storer rega ,2 ,core_usb_tx_saddr2 
+0378 20407bd2 call usb_tx_buf 
+0379 2020037a branch p_usb_release_protocol_buf 
+
+p_usb_release_protocol_buf:
+037a d8a04b0c arg mem_usb_protocol_data ,contw 
+037b df20000a arg 10 ,loopcnt 
+037c 20207ca1 branch clear_mem 
 
 p_rx_dcoc:
-0341 20758000 rtn wake 
-0342 20402160 call set_sync_on 
-0343 d8400027 arg 39 ,temp 
-0344 2040216f call set_freq_rx 
-0345 204021a6 call rf_rx_enable 
-0346 708a257f jam 0x7f ,0x8a25 
-0347 708a301a jam 0x1a ,0x8a30 
-0348 708a3178 jam 0x78 ,0x8a31 
-0349 708a8fb2 jam 0xb2 ,0x8a8f 
-034a 708ac200 jam 0 ,0x8ac2 
-034b 708ac300 jam 0 ,0x8ac3 
-034c d8e00006 arg 6 ,queue 
-034d 2040035e call p_rx_dcoc_avg 
-034e 2a2ffe0d isolate1 13 ,rega 
-034f 2040211d call qset_start 
-0350 2a4ffe0d isolate1 13 ,regb 
-0351 2040211e call qset_p 
-0352 d8e00005 arg 5 ,queue 
+037d 20758000 rtn wake 
+037e 20402160 call set_sync_on 
+037f d8400027 arg 39 ,temp 
+0380 2040216f call set_freq_rx 
+0381 204021a6 call rf_rx_enable 
+0382 708a257f jam 0x7f ,0x8a25 
+0383 708a301a jam 0x1a ,0x8a30 
+0384 708a3178 jam 0x78 ,0x8a31 
+0385 708a8fb2 jam 0xb2 ,0x8a8f 
+0386 708ac200 jam 0 ,0x8ac2 
+0387 708ac300 jam 0 ,0x8ac3 
+0388 d8e00006 arg 6 ,queue 
+0389 2040039a call p_rx_dcoc_avg 
+038a 2a2ffe0d isolate1 13 ,rega 
+038b 2040211d call qset_start 
+038c 2a4ffe0d isolate1 13 ,regb 
+038d 2040211e call qset_p 
+038e d8e00005 arg 5 ,queue 
 
 p_rx_dcoc_loop2:
-0353 2040211c call qset1_p 
-0354 2040211e call qset_p 
-0355 2040035e call p_rx_dcoc_avg 
-0356 d8a08ac2 arg 0x8ac2 ,contw 
-0357 1a31fe00 rshift4 rega ,pdata 
-0358 20402117 call qsetxor 
-0359 1a51fe00 rshift4 regb ,pdata 
-035a 20402117 call qsetxor 
-035b 18e08fff increase -1 ,queue 
-035c 20210353 branch p_rx_dcoc_loop2 ,positive 
-035d 2020214f branch rx_dcoc_loop2 + 10 
+038f 2040211c call qset1_p 
+0390 2040211e call qset_p 
+0391 2040039a call p_rx_dcoc_avg 
+0392 d8a08ac2 arg 0x8ac2 ,contw 
+0393 1a31fe00 rshift4 rega ,pdata 
+0394 20402117 call qsetxor 
+0395 1a51fe00 rshift4 regb ,pdata 
+0396 20402117 call qsetxor 
+0397 18e08fff increase -1 ,queue 
+0398 2021038f branch p_rx_dcoc_loop2 ,positive 
+0399 2020214f branch rx_dcoc_loop2 + 10 
 
 p_rx_dcoc_avg:
-035e 2000003c nop 60 
-035f 58000f00 setarg mem_dcoc_buf 
-0360 67f10982 store 2 ,0x8982 
-0361 58000ff0 setarg mem_dcoc_buf_end 
-0362 67f10984 store 2 ,0x8984 
-0363 70898109 jam 0x9 ,0x8981 
-0364 70898103 jam 0x3 ,0x8981 
-0365 70898006 jam 0x6 ,0x8980 
-0366 2000003c nop 60 
-0367 da200000 arg 0 ,rega 
-0368 da400000 arg 0 ,regb 
-0369 df200010 arg 16 ,loopcnt 
-036a d8c00f00 arg mem_dcoc_buf ,contr 
-036b 2020212d branch rx_dcoc_loop 
+039a 2000003c nop 60 
+039b 58000f00 setarg mem_dcoc_buf 
+039c 67f10982 store 2 ,0x8982 
+039d 58000ff0 setarg mem_dcoc_buf_end 
+039e 67f10984 store 2 ,0x8984 
+039f 70898109 jam 0x9 ,0x8981 
+03a0 70898103 jam 0x3 ,0x8981 
+03a1 70898006 jam 0x6 ,0x8980 
+03a2 2000003c nop 60 
+03a3 da200000 arg 0 ,rega 
+03a4 da400000 arg 0 ,regb 
+03a5 df200010 arg 16 ,loopcnt 
+03a6 d8c00f00 arg mem_dcoc_buf ,contr 
+03a7 2020212d branch rx_dcoc_loop 
 
 p_rfpll_aac_ghpc:
-036c 20758000 rtn wake 
-036d 20202272 branch rfpll_aac_ghpc + 1 
+03a8 20758000 rtn wake 
+03a9 20202272 branch rfpll_aac_ghpc + 1 
 
 p_dpll_ring_ibias_calc:
-036e 20600000 rtn 
+03aa 20600000 rtn 
 
 p_sadc_calibration:
-036f 20758000 rtn wake 
-0370 708a0777 jam 0x77 ,core_gpadc_ctrl 
-0371 708a08c9 jam 0xc9 ,core_gpadc_cfg0 
-0372 708a0b01 jam 0x01 ,core_gpadc_cfg3 
-0373 6fe0c409 fetch 1 ,mem_adc_clkdiv 
-0374 67f080cd store 1 ,core_sadc_clkdiv 
-0375 20000bb8 nop 3000 
-0376 20400397 call p_sadc_read 
-0377 708a08c1 jam 0xc1 ,core_gpadc_cfg0 
-0378 6a40c419 fetchr regb ,1 ,mem_spi_write_addr 
-0379 df200008 arg 8 ,loopcnt 
-037a 20406f58 call sadc_cal_read + 1 
-037b 6fe0c419 fetch 1 ,mem_spi_write_addr 
-037c 67e0c433 store 1 ,mem_adc_cal_c7 
-037d 6240c419 storer regb ,1 ,mem_spi_write_addr 
-037e 20600000 rtn 
+03ab 20758000 rtn wake 
+03ac 708a0777 jam 0x77 ,core_gpadc_ctrl 
+03ad 708a08c9 jam 0xc9 ,core_gpadc_cfg0 
+03ae 708a0b01 jam 0x01 ,core_gpadc_cfg3 
+03af 6fe0c409 fetch 1 ,mem_adc_clkdiv 
+03b0 67f080cd store 1 ,core_sadc_clkdiv 
+03b1 20000bb8 nop 3000 
+03b2 204003d3 call p_sadc_read 
+03b3 708a08c1 jam 0xc1 ,core_gpadc_cfg0 
+03b4 6a40c419 fetchr regb ,1 ,mem_spi_write_addr 
+03b5 df200008 arg 8 ,loopcnt 
+03b6 20406f58 call sadc_cal_read + 1 
+03b7 6fe0c419 fetch 1 ,mem_spi_write_addr 
+03b8 67e0c433 store 1 ,mem_adc_cal_c7 
+03b9 6240c419 storer regb ,1 ,mem_spi_write_addr 
+03ba 20600000 rtn 
 
 p_enable_adc:
-037f 2040038d call p_sadc_cal_write 
-0380 6ff08a09 fetch 1 ,core_gpadc_cfg1 
-0381 793ffe07 set0 7 ,pdata 
-0382 67f08a09 store 1 ,core_gpadc_cfg1 
-0383 708a0777 jam 0x77 ,core_gpadc_ctrl 
-0384 708a08c1 jam 0xc1 ,core_gpadc_cfg0 
-0385 708a0b01 jam 0x01 ,core_gpadc_cfg3 
-0386 20406f90 call sadc_channel 
-0387 6fe0c409 fetch 1 ,mem_adc_clkdiv 
-0388 67f080cd store 1 ,core_sadc_clkdiv 
-0389 20000bb8 nop 3000 
-038a 20400397 call p_sadc_read 
-038b 7080cd00 jam 0 ,core_sadc_clkdiv 
-038c 20206fa1 branch sadc_dma 
+03bb 204003c9 call p_sadc_cal_write 
+03bc 6ff08a09 fetch 1 ,core_gpadc_cfg1 
+03bd 793ffe07 set0 7 ,pdata 
+03be 67f08a09 store 1 ,core_gpadc_cfg1 
+03bf 708a0777 jam 0x77 ,core_gpadc_ctrl 
+03c0 708a08c1 jam 0xc1 ,core_gpadc_cfg0 
+03c1 708a0b01 jam 0x01 ,core_gpadc_cfg3 
+03c2 20406f90 call sadc_channel 
+03c3 6fe0c409 fetch 1 ,mem_adc_clkdiv 
+03c4 67f080cd store 1 ,core_sadc_clkdiv 
+03c5 20000bb8 nop 3000 
+03c6 204003d3 call p_sadc_read 
+03c7 7080cd00 jam 0 ,core_sadc_clkdiv 
+03c8 20206fa1 branch sadc_dma 
 
 p_sadc_cal_write:
-038d 6ff080cc fetch 1 ,core_sadc_ctrl 
-038e 79207e01 set1 1 ,pdata 
-038f 67f080cc store 1 ,core_sadc_ctrl 
-0390 6a40c419 fetchr regb ,1 ,mem_spi_write_addr 
-0391 6fe0c433 fetch 1 ,mem_adc_cal_c7 
-0392 67e0c419 store 1 ,mem_spi_write_addr 
-0393 df200008 arg 8 ,loopcnt 
-0394 20406f67 call sadc_cal_write + 4 
-0395 6240c419 storer regb ,1 ,mem_spi_write_addr 
-0396 20600000 rtn 
+03c9 6ff080cc fetch 1 ,core_sadc_ctrl 
+03ca 79207e01 set1 1 ,pdata 
+03cb 67f080cc store 1 ,core_sadc_ctrl 
+03cc 6a40c419 fetchr regb ,1 ,mem_spi_write_addr 
+03cd 6fe0c433 fetch 1 ,mem_adc_cal_c7 
+03ce 67e0c419 store 1 ,mem_spi_write_addr 
+03cf df200008 arg 8 ,loopcnt 
+03d0 20406f67 call sadc_cal_write + 4 
+03d1 6240c419 storer regb ,1 ,mem_spi_write_addr 
+03d2 20600000 rtn 
 
 p_sadc_read:
-0397 7080cc03 jam 0x03 ,core_sadc_ctrl 
+03d3 7080cc03 jam 0x03 ,core_sadc_ctrl 
 
 p_sadc_read_wait:
-0398 6ff08129 fetch 1 ,core_perf_status 
-0399 c3028398 bbit0 saradc_done ,p_sadc_read_wait 
-039a 68590164 fetcht 2 ,core_sadc_data 
-039b 6049440a storet 2 ,mem_adc_current_value 
-039c 7080cc00 jam 0x00 ,core_sadc_ctrl 
-039d 20600000 rtn 
+03d4 6ff08129 fetch 1 ,core_perf_status 
+03d5 c30283d4 bbit0 saradc_done ,p_sadc_read_wait 
+03d6 68590164 fetcht 2 ,core_sadc_data 
+03d7 6049440a storet 2 ,mem_adc_current_value 
+03d8 7080cc00 jam 0x00 ,core_sadc_ctrl 
+03d9 20600000 rtn 
 
 p_set_lemode:
-039e 708a8211 jam 0x11 ,0x8a82 
-039f 708a8d12 jam 0x12 ,0x8a8d 
-03a0 708a8e0a jam 0x0a ,0x8a8e 
-03a1 6fe0c099 fetch 1 ,mem_fcomp_div 
-03a2 c00803b7 beq xtal_16m ,p_set_lemode_2m_16m 
-03a3 58005762 setarg 0x5762 
-03a4 67f10907 store 2 ,0x8907 
+03da 708a8211 jam 0x11 ,0x8a82 
+03db 708a8d12 jam 0x12 ,0x8a8d 
+03dc 708a8e0a jam 0x0a ,0x8a8e 
+03dd 6fe0c099 fetch 1 ,mem_fcomp_div 
+03de c00803f3 beq xtal_16m ,p_set_lemode_2m_16m 
+03df 58005762 setarg 0x5762 
+03e0 67f10907 store 2 ,0x8907 
 
 p_set_lemode_2m:
-03a5 70890103 jam 3 ,0x8901 
-03a6 70893003 jam 3 ,0x8930 
-03a7 c6168000 rtnmark1 mark_ble_2m 
-03a8 70890101 jam 1 ,0x8901 
-03a9 708a8207 jam 0x07 ,0x8a82 
-03aa 708a8d44 jam 0x44 ,0x8a8d 
-03ab 708a8e0a jam 0x0a ,0x8a8e 
-03ac 6fe0c099 fetch 1 ,mem_fcomp_div 
-03ad c00803b4 beq xtal_16m ,p_set_lemode_1m_16m 
-03ae 58002bb1 setarg 0x2bb1 
-03af 67f10907 store 2 ,0x8907 
+03e1 70890103 jam 3 ,0x8901 
+03e2 70893003 jam 3 ,0x8930 
+03e3 c6168000 rtnmark1 mark_ble_2m 
+03e4 70890101 jam 1 ,0x8901 
+03e5 708a8207 jam 0x07 ,0x8a82 
+03e6 708a8d44 jam 0x44 ,0x8a8d 
+03e7 708a8e0a jam 0x0a ,0x8a8e 
+03e8 6fe0c099 fetch 1 ,mem_fcomp_div 
+03e9 c00803f0 beq xtal_16m ,p_set_lemode_1m_16m 
+03ea 58002bb1 setarg 0x2bb1 
+03eb 67f10907 store 2 ,0x8907 
 
 p_set_lemode_1m:
-03b0 c6978000 rtnmark0 mark_ble_lr 
-03b1 70893024 jam 0x24 ,0x8930 
-03b2 70890105 jam 5 ,0x8901 
-03b3 20600000 rtn 
+03ec c6978000 rtnmark0 mark_ble_lr 
+03ed 70893024 jam 0x24 ,0x8930 
+03ee 70890105 jam 5 ,0x8901 
+03ef 20600000 rtn 
 
 p_set_lemode_1m_16m:
-03b4 58004189 setarg 0x4189 
-03b5 67f10907 store 2 ,0x8907 
-03b6 202003b0 branch p_set_lemode_1m 
+03f0 58004189 setarg 0x4189 
+03f1 67f10907 store 2 ,0x8907 
+03f2 202003ec branch p_set_lemode_1m 
 
 p_set_lemode_2m_16m:
-03b7 58008312 setarg 0x8312 
-03b8 67f10907 store 2 ,0x8907 
-03b9 202003a5 branch p_set_lemode_2m 
+03f3 58008312 setarg 0x8312 
+03f4 67f10907 store 2 ,0x8907 
+03f5 202003e1 branch p_set_lemode_2m 
 
 p_le_parse:
-03ba 6fe0c334 fetch 1 ,mem_le_packet_llid 
-03bb c1000000 rtneq llid_reserved 
-03bc c001b04a beq llid_le_ll ,le_parse_ll 
-03bd 202028e1 branch le_parse_l2cap 
+03f6 6fe0c334 fetch 1 ,mem_le_packet_llid 
+03f7 c1000000 rtneq llid_reserved 
+03f8 c001b04a beq llid_le_ll ,le_parse_ll 
+03f9 202028e1 branch le_parse_l2cap 
 
 p_le_init_adv:
-03be 793f8030 set0 mark_ble_crc_fail ,mark 
-03bf 20202af6 branch le_init_adv + 1 
+03fa 793f8030 set0 mark_ble_crc_fail ,mark 
+03fb 20202af6 branch le_init_adv + 1 
 
 p_g24_bind_data_parse_next:
-03c0 6fe0ca47 fetch 1 ,mem_24g_rxdata_temp_new + 2 
-03c1 c0553329 beq datatype_bind ,g24_bind_first_step 
-03c2 c02ab33a beq datatype_config ,g24_bind_second_step 
-03c3 c01103d6 beq datatype_ok ,p_g24_bind_third_step 
-03c4 c07f83c6 beq datatype_attemp ,p_g24_data_attemp 
-03c5 20600000 rtn 
+03fc 6fe0ca47 fetch 1 ,mem_24g_rxdata_temp_new + 2 
+03fd c0553329 beq datatype_bind ,g24_bind_first_step 
+03fe c02ab33a beq datatype_config ,g24_bind_second_step 
+03ff c0110412 beq datatype_ok ,p_g24_bind_third_step 
+0400 c07f8402 beq datatype_attemp ,p_g24_data_attemp 
+0401 20600000 rtn 
 
 p_g24_data_attemp:
-03c6 6fe0ca48 fetch 1 ,mem_24g_rxdata_temp_new + 3 
-03c7 c00083ca beq datatype_device1 ,p_g24_data_attemp_device1 
-03c8 c00103d0 beq datatype_device2 ,p_g24_data_attemp_device2 
-03c9 20600000 rtn 
+0402 6fe0ca48 fetch 1 ,mem_24g_rxdata_temp_new + 3 
+0403 c0008406 beq datatype_device1 ,p_g24_data_attemp_device1 
+0404 c001040c beq datatype_device2 ,p_g24_data_attemp_device2 
+0405 20600000 rtn 
 
 p_g24_data_attemp_device1:
-03ca 6fe0c5de fetch 1 ,mem_24g_device1_bind_disable 
-03cb 247a0000 nrtn blank 
-03cc 6fe24a49 fetch 4 ,mem_24g_rxdata_temp_new + 4 
-03cd 67e2462c store 4 ,mem_24g_transmitter_addr 
+0406 6fe0c5de fetch 1 ,mem_24g_device1_bind_disable 
+0407 247a0000 nrtn blank 
+0408 6fe24a49 fetch 4 ,mem_24g_rxdata_temp_new + 4 
+0409 67e2462c store 4 ,mem_24g_transmitter_addr 
 
 p_g24_store_device1_addr:
-03ce 67e24630 store 4 ,mem_24g_device1_addr 
-03cf 20600000 rtn 
+040a 67e24630 store 4 ,mem_24g_device1_addr 
+040b 20600000 rtn 
 
 p_g24_data_attemp_device2:
-03d0 6fe0c5df fetch 1 ,mem_24g_device2_bind_disable 
-03d1 247a0000 nrtn blank 
-03d2 6fe24a49 fetch 4 ,mem_24g_rxdata_temp_new + 4 
-03d3 67e2462c store 4 ,mem_24g_transmitter_addr 
+040c 6fe0c5df fetch 1 ,mem_24g_device2_bind_disable 
+040d 247a0000 nrtn blank 
+040e 6fe24a49 fetch 4 ,mem_24g_rxdata_temp_new + 4 
+040f 67e2462c store 4 ,mem_24g_transmitter_addr 
 
 p_g24_store_device2_addr:
-03d4 67e24634 store 4 ,mem_24g_device2_addr 
-03d5 20600000 rtn 
+0410 67e24634 store 4 ,mem_24g_device2_addr 
+0411 20600000 rtn 
 
 p_g24_bind_third_step:
-03d6 6fe0c5ae fetch 1 ,mem_24g_pair_switch 
-03d7 203a03dc branch p_g24_bind_third_step_skip ,blank 
-03d8 6fe24a49 fetch 4 ,mem_24g_rxdata_temp_new + 4 
-03d9 684a462c fetcht 4 ,mem_24g_transmitter_addr 
-03da 98467c00 isub temp ,null 
-03db 24628000 nrtn zero 
+0412 6fe0c5ae fetch 1 ,mem_24g_pair_switch 
+0413 203a0418 branch p_g24_bind_third_step_skip ,blank 
+0414 6fe24a49 fetch 4 ,mem_24g_rxdata_temp_new + 4 
+0415 684a462c fetcht 4 ,mem_24g_transmitter_addr 
+0416 98467c00 isub temp ,null 
+0417 24628000 nrtn zero 
 
 p_g24_bind_third_step_skip:
-03dc 6fe0ca48 fetch 1 ,mem_24g_rxdata_temp_new + 3 
-03dd c00083e0 beq datatype_device1 ,p_g24_bind_third_step_device1 
-03de c00103e7 beq datatype_device2 ,p_g24_bind_third_step_device2 
-03df 20600000 rtn 
+0418 6fe0ca48 fetch 1 ,mem_24g_rxdata_temp_new + 3 
+0419 c000841c beq datatype_device1 ,p_g24_bind_third_step_device1 
+041a c0010423 beq datatype_device2 ,p_g24_bind_third_step_device2 
+041b 20600000 rtn 
 
 p_g24_bind_third_step_device1:
-03e0 6fe0c5de fetch 1 ,mem_24g_device1_bind_disable 
-03e1 247a0000 nrtn blank 
-03e2 6fe0c5d3 fetch 1 ,mem_24g_device1_bind_step 
-03e3 c00103e5 beq 2 ,p_g24_bind_dvc1_step_success 
-03e4 20600000 rtn 
+041c 6fe0c5de fetch 1 ,mem_24g_device1_bind_disable 
+041d 247a0000 nrtn blank 
+041e 6fe0c5d3 fetch 1 ,mem_24g_device1_bind_step 
+041f c0010421 beq 2 ,p_g24_bind_dvc1_step_success 
+0420 20600000 rtn 
 
 p_g24_bind_dvc1_step_success:
-03e5 7045de01 jam 1 ,mem_24g_device1_bind_disable 
-03e6 2020336b branch g24_bind_dvc1_step_success + 1 
+0421 7045de01 jam 1 ,mem_24g_device1_bind_disable 
+0422 2020336b branch g24_bind_dvc1_step_success + 1 
 
 p_g24_bind_third_step_device2:
-03e7 6fe0c5df fetch 1 ,mem_24g_device2_bind_disable 
-03e8 247a0000 nrtn blank 
-03e9 6fe0c5d4 fetch 1 ,mem_24g_device2_bind_step 
-03ea c08003ec bne 0 ,p_g24_bind_dvc2_step_success 
-03eb 20600000 rtn 
+0423 6fe0c5df fetch 1 ,mem_24g_device2_bind_disable 
+0424 247a0000 nrtn blank 
+0425 6fe0c5d4 fetch 1 ,mem_24g_device2_bind_step 
+0426 c0800428 bne 0 ,p_g24_bind_dvc2_step_success 
+0427 20600000 rtn 
 
 p_g24_bind_dvc2_step_success:
-03ec 7045df01 jam 1 ,mem_24g_device2_bind_disable 
-03ed 20403393 call g24_binding_dvc2_living 
-03ee 20203378 branch g24_bind_dvc2_step_success + 1 
+0428 7045df01 jam 1 ,mem_24g_device2_bind_disable 
+0429 20403393 call g24_binding_dvc2_living 
+042a 20203378 branch g24_bind_dvc2_step_success + 1 
 
 p_g24_mode_switch_bind_search:
-03ef 6fe0c616 fetch 1 ,mem_24g_work_mode 
-03f0 c1000000 rtneq dongle_work 
-03f1 6fe0c62a fetch 1 ,mem_24g_b_s_mode_switch_disable 
-03f2 247a0000 nrtn blank 
-03f3 6fe0c628 fetch 1 ,mem_24g_mode_b_s_switch_exit 
-03f4 247a0000 nrtn blank 
-03f5 6fe0c624 fetch 1 ,mem_24g_mode_b_s_switch 
-03f6 207a0000 rtn blank 
-03f7 6fe0c5d3 fetch 1 ,mem_24g_device1_bind_step 
-03f8 c1800000 rtnne 0 
-03f9 6fe0c5d4 fetch 1 ,mem_24g_device2_bind_step 
-03fa c1800000 rtnne 0 
-03fb 20203436 branch g24_mode_switch_bind_search + 9 
+042b 6fe0c616 fetch 1 ,mem_24g_work_mode 
+042c c1000000 rtneq dongle_work 
+042d 6fe0c62a fetch 1 ,mem_24g_b_s_mode_switch_disable 
+042e 247a0000 nrtn blank 
+042f 6fe0c628 fetch 1 ,mem_24g_mode_b_s_switch_exit 
+0430 247a0000 nrtn blank 
+0431 6fe0c624 fetch 1 ,mem_24g_mode_b_s_switch 
+0432 207a0000 rtn blank 
+0433 6fe0c5d3 fetch 1 ,mem_24g_device1_bind_step 
+0434 c1800000 rtnne 0 
+0435 6fe0c5d4 fetch 1 ,mem_24g_device2_bind_step 
+0436 c1800000 rtnne 0 
+0437 20203436 branch g24_mode_switch_bind_search + 9 
 
 p_g24_bind_mode_auto:
-03fc 6fe0c616 fetch 1 ,mem_24g_work_mode 
-03fd c1808000 rtnne dongle_bind 
-03fe 20400400 call p_g24_bind_init 
-03ff 2020346d branch g24_bind_mode_auto + 4 
+0438 6fe0c616 fetch 1 ,mem_24g_work_mode 
+0439 c1808000 rtnne dongle_bind 
+043a 2040043c call p_g24_bind_init 
+043b 2020346d branch g24_bind_mode_auto + 4 
 
 p_g24_bind_init:
-0400 6fe0c615 fetch 1 ,mem_24g_mode_init 
-0401 c3808000 rtnbit1 dongle_bind 
-0402 79207e01 set1 dongle_bind ,pdata 
-0403 67e0c615 store 1 ,mem_24g_mode_init 
-0404 58000000 setarg 0 
-0405 67e1c5d3 store 3 ,mem_24g_device1_bind_step 
-0406 20203307 branch g24_bind_init + 8 
+043c 6fe0c615 fetch 1 ,mem_24g_mode_init 
+043d c3808000 rtnbit1 dongle_bind 
+043e 79207e01 set1 dongle_bind ,pdata 
+043f 67e0c615 store 1 ,mem_24g_mode_init 
+0440 58000000 setarg 0 
+0441 67e1c5d3 store 3 ,mem_24g_device1_bind_step 
+0442 20203307 branch g24_bind_init + 8 
 
 p_dongle_usb_dispatch:
-0407 70804300 jam 0 ,0x8043 
-0408 6fe08901 fetch 1 ,mem_usb_remote_wakeup 
-0409 205a48b5 call dongle_clear_pc_sleep_flag ,blank 
-040a 20407906 call usb_isr 
-040b 6fe088f7 fetch 1 ,mem_usb0_get_set_report 
-040c 207a0000 rtn blank 
-040d 7008f700 jam 0 ,mem_usb0_get_set_report 
-040e 6fe108f5 fetch 2 ,mem_usb_setup_bvalue_temp 
-040f d84002a4 arg pc_set_report ,temp 
-0410 98467c00 isub temp ,null 
-0411 24628000 nrtn zero 
-0412 20200205 branch p_dongle_usb_data_received_analysis 
+0443 70804300 jam 0 ,0x8043 
+0444 6fe08901 fetch 1 ,mem_usb_remote_wakeup 
+0445 205a48b5 call dongle_clear_pc_sleep_flag ,blank 
+0446 20407906 call usb_isr 
+0447 6fe088f7 fetch 1 ,mem_usb0_get_set_report 
+0448 207a0000 rtn blank 
+0449 7008f700 jam 0 ,mem_usb0_get_set_report 
+044a 6fe108f5 fetch 2 ,mem_usb_setup_bvalue_temp 
+044b d84002a4 arg pc_set_report ,temp 
+044c 98467c00 isub temp ,null 
+044d 24628000 nrtn zero 
+044e 20200205 branch p_dongle_usb_data_received_analysis 
 
 p_wdt_kick:
-0413 58000010 setarg 16 
-0414 202070c8 branch wdt_init_config 
+044f 58000010 setarg 16 
+0450 202070c8 branch wdt_init_config 
 
 p_dongle_default_init:
-0415 204047c3 call dongle_default_init + 1 
-0416 6fe0c695 fetch 1 ,mem_24g_pair_tx_power_init 
-0417 67e0c5d1 store 1 ,mem_24g_pair_tx_power 
-0418 7045ca00 jam off ,mem_24g_disable_fec1 
-0419 20403281 call g24_enable_1m 
-041a 6fe0c669 fetch 1 ,mem_dg_sys_config 
-041b c4000000 rtnbit0 dg_enable_new_revision 
-041c 7045ca01 jam on ,mem_24g_disable_fec1 
-041d 20203284 branch g24_enable_2m 
+0451 204047c3 call dongle_default_init + 1 
+0452 6fe0c695 fetch 1 ,mem_24g_pair_tx_power_init 
+0453 67e0c5d1 store 1 ,mem_24g_pair_tx_power 
+0454 7045ca00 jam off ,mem_24g_disable_fec1 
+0455 20403281 call g24_enable_1m 
+0456 6fe0c669 fetch 1 ,mem_dg_sys_config 
+0457 c4000000 rtnbit0 dg_enable_new_revision 
+0458 7045ca01 jam on ,mem_24g_disable_fec1 
+0459 20203284 branch g24_enable_2m 
 
 p_g24_receive_skip_fec1:
-041e 7858fc00 disable user7 
-041f 280ffe2f isolate1 mark_ble_lr ,mark 
-0420 2040b16f call g24_lr_receive_pdu_len ,true 
-0421 2038b18a branch g24_lr_len_error ,user7 
-0422 2040317d call g24_receive_byte 
-0423 67e0c4f7 store 1 ,mem_24g_rxbuf 
-0424 c5138429 bmark1 mark_24g_rxmode ,p_g24_receive_skip 
-0425 6fe0c4f7 fetch 1 ,mem_24g_rxbuf 
-0426 6848c589 fetcht 1 ,mem_24g_data_type 
-0427 a8400e00 icompare bits_data ,temp 
-0428 2420b18c nbranch g24_type_error ,true 
+045a 7858fc00 disable user7 
+045b 280ffe2f isolate1 mark_ble_lr ,mark 
+045c 2040b16f call g24_lr_receive_pdu_len ,true 
+045d 2038b18a branch g24_lr_len_error ,user7 
+045e 2040317d call g24_receive_byte 
+045f 67e0c4f7 store 1 ,mem_24g_rxbuf 
+0460 c5138465 bmark1 mark_24g_rxmode ,p_g24_receive_skip 
+0461 6fe0c4f7 fetch 1 ,mem_24g_rxbuf 
+0462 6848c589 fetcht 1 ,mem_24g_data_type 
+0463 a8400e00 icompare bits_data ,temp 
+0464 2420b18c nbranch g24_type_error ,true 
 
 p_g24_receive_skip:
-0429 2040317d call g24_receive_byte 
-042a 280ffe2f isolate1 mark_ble_lr ,mark 
-042b 2040b178 call g24_lr_receive_payload_len ,true 
-042c e7e08005 istore 1 ,contw 
-042d 1fe90400 rshift3 pdata ,temp 
-042e 2feffe00 isolate1 0 ,pdata 
-042f 20408436 call p_g24_receive_payload_len_ext ,true 
-0430 18427e00 copy temp ,pdata 
-0431 1fe67c3f sub pdata ,0x3f ,null 
-0432 2421318e nbranch g24_len_over_error ,positive 
-0433 1fe27200 copy pdata ,loopcnt 
-0434 2022b154 branch g24rx_nopayload ,zero 
-0435 20203151 branch g24rx_loop 
+0465 2040317d call g24_receive_byte 
+0466 280ffe2f isolate1 mark_ble_lr ,mark 
+0467 2040b178 call g24_lr_receive_payload_len ,true 
+0468 e7e08005 istore 1 ,contw 
+0469 1fe90400 rshift3 pdata ,temp 
+046a 2feffe00 isolate1 0 ,pdata 
+046b 20408472 call p_g24_receive_payload_len_ext ,true 
+046c 18427e00 copy temp ,pdata 
+046d 1fe67c3f sub pdata ,0x3f ,null 
+046e 2421318e nbranch g24_len_over_error ,positive 
+046f 1fe27200 copy pdata ,loopcnt 
+0470 2022b154 branch g24rx_nopayload ,zero 
+0471 20203151 branch g24rx_loop 
 
 p_g24_receive_payload_len_ext:
-0436 79200405 set1 5 ,temp 
-0437 20600000 rtn 
+0472 79200405 set1 5 ,temp 
+0473 20600000 rtn 
 
 p_g24_receive_skip_end:
-0438 6fe0c669 fetch 1 ,mem_dg_sys_config 
-0439 c3003165 bbit0 dg_enable_new_revision ,g24_receive_skip_end + 1 
-043a 7837fc00 enable user3 
-043b 20000018 nop 24 
-043c 6fe0c4f8 fetch 1 ,mem_24g_rxbuf + 1 
-043d 79207e00 set1 bit_ack_24g ,pdata 
-043e 67e0c4f8 store 1 ,mem_24g_rxbuf + 1 
-043f 204033a5 call g24_ackpayload_prep 
-0440 204031e5 call g24_transmit_prep 
-0441 20203195 branch g24_transmit 
+0474 6fe0c669 fetch 1 ,mem_dg_sys_config 
+0475 c3003165 bbit0 dg_enable_new_revision ,g24_receive_skip_end + 1 
+0476 7837fc00 enable user3 
+0477 20000018 nop 24 
+0478 6fe0c4f8 fetch 1 ,mem_24g_rxbuf + 1 
+0479 79207e00 set1 bit_ack_24g ,pdata 
+047a 67e0c4f8 store 1 ,mem_24g_rxbuf + 1 
+047b 204033a5 call g24_ackpayload_prep 
+047c 204031e5 call g24_transmit_prep 
+047d 20203195 branch g24_transmit 
 
 p_g24_read_len_pid_crc:
-0442 6fe0c4f8 fetch 1 ,mem_24g_rxbuf + 1 
-0443 1fe90400 rshift3 pdata ,temp 
-0444 2feffe00 isolate1 0 ,pdata 
-0445 20408436 call p_g24_receive_payload_len_ext ,true 
-0446 18427e00 copy temp ,pdata 
-0447 67e0c57d store 1 ,mem_24g_rxdata_length 
-0448 1fe0fe01 increase 1 ,pdata 
-0449 d8c044f8 arg mem_24g_rxbuf + 1 ,contr 
-044a 98c08c00 iadd contr ,contr 
-044b efe18006 ifetch 3 ,contr 
-044c 67e1c580 store 3 ,mem_24g_sta_crc 
-044d 6fe0c4f8 fetch 1 ,mem_24g_rxbuf + 1 
-044e 1fe37e00 rshift pdata ,pdata 
-044f 1fe17e03 and pdata ,0x03 ,pdata 
-0450 67e0c586 store 1 ,mem_24g_sta_pid 
-0451 20600000 rtn 
+047e 6fe0c4f8 fetch 1 ,mem_24g_rxbuf + 1 
+047f 1fe90400 rshift3 pdata ,temp 
+0480 2feffe00 isolate1 0 ,pdata 
+0481 20408472 call p_g24_receive_payload_len_ext ,true 
+0482 18427e00 copy temp ,pdata 
+0483 67e0c57d store 1 ,mem_24g_rxdata_length 
+0484 1fe0fe01 increase 1 ,pdata 
+0485 d8c044f8 arg mem_24g_rxbuf + 1 ,contr 
+0486 98c08c00 iadd contr ,contr 
+0487 efe18006 ifetch 3 ,contr 
+0488 67e1c580 store 3 ,mem_24g_sta_crc 
+0489 6fe0c4f8 fetch 1 ,mem_24g_rxbuf + 1 
+048a 1fe37e00 rshift pdata ,pdata 
+048b 1fe17e03 and pdata ,0x03 ,pdata 
+048c 67e0c586 store 1 ,mem_24g_sta_pid 
+048d 20600000 rtn 
 
 p_g24_bind_data_process:
-0452 204033be call g24_rx_interrupt_clear 
-0453 20403119 call g24_receive_packet 
-0454 2437b3be nbranch g24_rx_interrupt_clear ,user3 
-0455 20400459 call p_g24_bind_data_parse 
-0456 20400039 call p_g24_transmit_ack 
-0457 2040046f call p_g24_bind_device_status_check 
-0458 20203316 branch g24_bind_data_process + 7 
+048e 204033be call g24_rx_interrupt_clear 
+048f 20403119 call g24_receive_packet 
+0490 2437b3be nbranch g24_rx_interrupt_clear ,user3 
+0491 20400495 call p_g24_bind_data_parse 
+0492 20400039 call p_g24_transmit_ack 
+0493 204004ab call p_g24_bind_device_status_check 
+0494 20203316 branch g24_bind_data_process + 7 
 
 p_g24_bind_data_parse:
-0459 70462205 jam bind_mode_continue ,mem_24g_bind_mode_continue 
-045a d8c044f7 arg mem_24g_rxbuf ,contr 
-045b d8a04a45 arg mem_24g_rxdata_temp_new ,contw 
-045c 20407c89 call memcpy8 
-045d 6fe0ca47 fetch 1 ,mem_24g_rxdata_temp_new + 2 
-045e c0550463 beq datatype_bind ,p_g24_bind_first_step 
-045f c02a8465 beq datatype_config ,p_g24_bind_second_step 
-0460 c01103d6 beq datatype_ok ,p_g24_bind_third_step 
-0461 c07fb59b beq datatype_attemp ,g24_data_attemp 
-0462 20600000 rtn 
+0495 70462205 jam bind_mode_continue ,mem_24g_bind_mode_continue 
+0496 d8c044f7 arg mem_24g_rxbuf ,contr 
+0497 d8a04a45 arg mem_24g_rxdata_temp_new ,contw 
+0498 20407c89 call memcpy8 
+0499 6fe0ca47 fetch 1 ,mem_24g_rxdata_temp_new + 2 
+049a c055049f beq datatype_bind ,p_g24_bind_first_step 
+049b c02a84a1 beq datatype_config ,p_g24_bind_second_step 
+049c c0110412 beq datatype_ok ,p_g24_bind_third_step 
+049d c07fb59b beq datatype_attemp ,g24_data_attemp 
+049e 20600000 rtn 
 
 p_g24_bind_first_step:
-0463 6fe0ca48 fetch 1 ,mem_24g_rxdata_temp_new + 3 
-0464 2020332a branch g24_bind_first_step + 1 
+049f 6fe0ca48 fetch 1 ,mem_24g_rxdata_temp_new + 3 
+04a0 2020332a branch g24_bind_first_step + 1 
 
 p_g24_bind_second_step:
-0465 6fe0c5ae fetch 1 ,mem_24g_pair_switch 
-0466 203a046b branch p_g24_bind_second_step_skip ,blank 
-0467 6fe24a49 fetch 4 ,mem_24g_rxdata_temp_new + 4 
-0468 684a44f1 fetcht 4 ,mem_24g_lap 
-0469 98467c00 isub temp ,null 
-046a 24628000 nrtn zero 
+04a1 6fe0c5ae fetch 1 ,mem_24g_pair_switch 
+04a2 203a04a7 branch p_g24_bind_second_step_skip ,blank 
+04a3 6fe24a49 fetch 4 ,mem_24g_rxdata_temp_new + 4 
+04a4 684a44f1 fetcht 4 ,mem_24g_lap 
+04a5 98467c00 isub temp ,null 
+04a6 24628000 nrtn zero 
 
 p_g24_bind_second_step_skip:
-046b 6fe0ca48 fetch 1 ,mem_24g_rxdata_temp_new + 3 
-046c c000b344 beq datatype_device1 ,g24_bind_second_step_device1 
-046d c0013351 beq datatype_device2 ,g24_bind_second_step_device2 
-046e 20600000 rtn 
+04a7 6fe0ca48 fetch 1 ,mem_24g_rxdata_temp_new + 3 
+04a8 c000b344 beq datatype_device1 ,g24_bind_second_step_device1 
+04a9 c0013351 beq datatype_device2 ,g24_bind_second_step_device2 
+04aa 20600000 rtn 
 
 p_g24_bind_device_status_check:
-046f 6fe0c5d5 fetch 1 ,mem_24g_bind_device_status 
-0470 207a0000 rtn blank 
+04ab 6fe0c5d5 fetch 1 ,mem_24g_bind_device_status 
+04ac 207a0000 rtn blank 
 
 p_g24_bind_device_status:
-0471 6fe0ca48 fetch 1 ,mem_24g_rxdata_temp_new + 3 
-0472 c000b38d beq datatype_device1 ,g24_binding_dvc1_living 
-0473 c0013393 beq datatype_device2 ,g24_binding_dvc2_living 
-0474 20600000 rtn 
+04ad 6fe0ca48 fetch 1 ,mem_24g_rxdata_temp_new + 3 
+04ae c000b38d beq datatype_device1 ,g24_binding_dvc1_living 
+04af c0013393 beq datatype_device2 ,g24_binding_dvc2_living 
+04b0 20600000 rtn 
               org 0x2000
 
 start:
Index: program/patch.prog
===================================================================
--- /1121s/branch/dongle/1m/usb_1m_mingjian/program/patch.prog	(revision 3298)
+++ /1121s/branch/dongle/1m/usb_1m_mingjian/program/patch.prog	(working copy)
@@ -835,6 +835,7 @@
 	bbit1 DATATYPE_AUDIO,p_g24_data_receive_heart_authca_audio
 	bbit1 DATATYPE_AUTHCA,p_g24_data_receive_heart_authca_audio
 	bbit1 DATATYPE_HEART,p_g24_data_receive_heart_authca_audio
+	bbit1 DATATYPE_PROTOCOL,p_g24_data_receive_heart_authca_audio
 	branch g24_rx_interrupt_clear
 p_g24_data_receive_heart_authca_audio:
 	fetch 1,mem_24g_rxdata_temp_new+2
@@ -891,6 +892,7 @@
 	bbit1 DATATYPE_AUDIO,p_dongle_g24_mouse_audio_data
 	bbit1 DATATYPE_AUTHCA,p_dongle_g24_mouse_authca_data
 	bbit1 DATATYPE_HEART,p_dongle_g24_mouse_heart_data
+	bbit1 DATATYPE_PROTOCOL,p_g24_data_receive_protocol_data
 	branch p_dongle_g24_mouse_next
 
 p_dongle_g24_mouse_next:
@@ -913,16 +915,41 @@
 	jam REPORT_ID_DATA_OUT,mem_24g_ackpayload_enable_temp
 	rtn
 
-p_dongle_g24_mouse_audio_data:
+p_g24_data_receive_protocol_data:
+	fetchr loopcnt,1,mem_24g_rxdata_length
+	increase -1,loopcnt
+	arg mem_usb_protocol_data+2,contw
+	arg mem_24g_rxdata_temp_new+3,contr
+	call memcpy
+	fetchr loopcnt,1,mem_24g_rxdata_length
+	increase -1,pdata
+	arg mem_usb_protocol_data_sta,contw
+	arg mem_usb_protocol_data+2,contr
+	call memcpy
+	fetchr loopcnt,1,mem_24g_rxdata_length
+	increase -1,pdata
+	arg mem_usb_protocol_data_sta,regb
+	arg mem_usb_protocol_data_last,rega
+	call compare_loop
+	ncall p_dongle_usb_tx_protocol_data,zero
 	fetchr loopcnt,1,mem_24g_rxdata_length
 	increase -1,pdata
-	arg mem_usb_audio_data+3,contw
+	arg mem_usb_protocol_data_sta,contr
+	arg mem_usb_protocol_data_last,contw
+	call memcpy
+	branch g24_rx_interrupt_clear
+
+
+p_dongle_g24_mouse_audio_data:
+	fetchr loopcnt,1,mem_24g_rxdata_length
+	increase -1,loopcnt
+	arg mem_usb_audio_data+2,contw
 	arg mem_24g_rxdata_temp_new+3,contr
 	call memcpy
 	fetchr loopcnt,1,mem_24g_rxdata_length
 	increase -1,pdata
 	arg mem_usb_audio_data_sta,contw
-	arg mem_usb_audio_data+3,contr
+	arg mem_usb_audio_data+2,contr
 	call memcpy
 	fetchr loopcnt,1,mem_24g_rxdata_length
 	increase -1,pdata
@@ -964,16 +991,30 @@
 	branch p_dongle_g24_mouse_heart_data
 	
 
+p_dongle_usb_tx_protocol_data:	// all length 1B + IN_DATA_ID 1B + payload length 1B + payload N*B
+	jam REPORT_ID_DATA_IN,mem_usb_protocol_data+1	//mem_usb_audio_data 03 41 02 00
+	fetch 1,mem_24g_rxdata_length						//mem_usb_audio_data 03 a1 02 00
+	increase -1,pdata
+	store 1,mem_usb_protocol_data
+	copy pdata,loopcnt
+	arg mem_usb_protocol_data+3,contr
+	arg mem_usb_protocol_data_sta,contw					//mem_usb0_get_report_data a1 02 02 00
+	call memcpy
+	jam USB_EP2_PROTOCOL,mem_usb_ep2_data
+	branch dongle_usb_tx_enable_ep2
+
+
 p_dongle_usb_tx_audio_data:	// all length 1B + IN_DATA_ID 1B + payload length 1B + payload N*B
 	jam REPORT_ID_AUDIO_DATA_IN,mem_usb_audio_data+1	//mem_usb_audio_data 03 41 02 00
 	fetch 1,mem_24g_rxdata_length						//mem_usb_audio_data 03 a1 02 00
 	increase -1,pdata
 	store 1,mem_usb_audio_data
 	copy pdata,loopcnt
-	arg mem_usb_audio_data+1,contr
-	arg mem_usb0_get_report_data,contw					//mem_usb0_get_report_data a1 02 02 00
+	arg mem_usb_audio_data+3,contr
+	arg mem_usb_audio_data_sta,contw					//mem_usb0_get_report_data a1 02 02 00
 	call memcpy
-	branch p_usb_get_report_enable
+	jam USB_EP2_AUDIO,mem_usb_ep2_data
+	branch dongle_usb_tx_enable_ep2
 
 
 p_dongle_usb_tx_authca_data:
@@ -1075,13 +1116,15 @@
 	beq USB_EP2_AUTHCA,p_usb_tx_authca_data
 	beq USB_EP2_MULTIKEY,usb_tx_kb_multikey_data
 	beq USB_EP2_SYSTEMKEY,usb_tx_kb_systemkey_data
+	beq USB_EP2_AUDIO,p_usb_tx_audio_data
+	beq USB_EP2_PROTOCOL,p_usb_tx_protocol_data
 	branch assert
 
 p_usb_tx_authca_data:
 	jam 0,mem_usb_ep2_data
 	fetchr loopcnt,1,mem_usb_authca_data
 	arg mem_usb_authca_data+1,contr
-p_usb_tx_ep2:
+p_usb_tx_authca_ep2:
 	arg 2,queue
 	arg mem_usb_txbuf2,rega
 	storer rega,2,core_usb_tx_saddr2
@@ -1093,6 +1136,38 @@
 	arg 64,loopcnt
 	branch clear_mem
 
+p_usb_tx_audio_data:
+	jam 0,mem_usb_ep2_data
+	fetchr loopcnt,1,mem_usb_audio_data
+	arg mem_usb_audio_data+2,contr
+p_usb_tx_audio_ep2:
+	arg 2,queue
+	arg mem_usb_txbuf2,rega
+	storer rega,2,core_usb_tx_saddr2
+	call usb_tx_buf
+	branch p_usb_release_audio_buf
+
+p_usb_release_audio_buf:
+	arg mem_usb_audio_data,contw
+	arg 64,loopcnt
+	branch clear_mem
+
+p_usb_tx_protocol_data:
+	jam 0,mem_usb_ep2_data
+	fetchr loopcnt,1,mem_usb_protocol_data
+	increase 1,loopcnt
+	arg mem_usb_protocol_data+1,contr
+p_usb_tx_protocol_ep2:
+	arg 2,queue
+	arg mem_usb_txbuf2,rega
+	storer rega,2,core_usb_tx_saddr2
+	call usb_tx_buf
+	branch p_usb_release_protocol_buf
+
+p_usb_release_protocol_buf:
+	arg mem_usb_protocol_data,contw
+	arg 10,loopcnt
+	branch clear_mem
 
 p_rx_dcoc:
 	rtn wake
