Index: format/app_dongle.format
===================================================================
--- /branch/keyboard/customer_FW/RY_project/RY_Dongle/format/app_dongle.format	(revision 1982)
+++ /branch/keyboard/customer_FW/RY_project/RY_Dongle/format/app_dongle.format	(working copy)
@@ -69,6 +69,9 @@
 1 mem_dg_keyboard_keymatrix_len
 56 mem_dg_keyboard_keymatrix_setup_keyvalue
 64 mem_dg_keyboard_keymatrix_getup_keyvalue
+65 mem_dg_protocol_usb_in_data_buff
+1 mem_24g_device_type
+
 )
 
 (
@@ -179,6 +182,7 @@
 (
 0x01 BIND_ACKPAYLOAD
 0x03 KB_LED_ACKPAYLOAD
+0x08 PROTOCOL_ACKPAYLOAD
 )
 
 //mem_dg_sys_config
@@ -192,6 +196,7 @@
 )
 
 (
+0xF5 CMD_SET_DPI
 0xF6 CMD_SET
 0xF7 CMD_CHECK_STATUS
 0xFA CMD_GET_KB_ADDR
Index: format/usb.format
===================================================================
--- /branch/keyboard/customer_FW/RY_project/RY_Dongle/format/usb.format	(revision 1982)
+++ /branch/keyboard/customer_FW/RY_project/RY_Dongle/format/usb.format	(working copy)
@@ -191,6 +191,7 @@
 0x21 USB_EP2_MULTIKEY
 0x22 USB_EP2_SYSTEMKEY
 0x23 USB_EP2_DPI
+0x24 USB_EP2_PROTOCOL
 0x01 MAC_BOOT_MODE
 0x02 R_KEY
 0x03 LR_KEY
Index: output/eeprom.dat
===================================================================
--- /branch/keyboard/customer_FW/RY_project/RY_Dongle/output/eeprom.dat	(revision 1982)
+++ /branch/keyboard/customer_FW/RY_project/RY_Dongle/output/eeprom.dat	(working copy)
@@ -2,7 +2,7 @@
 02
 aa
 55
-2e
+72
 10
 c2
 84
@@ -23,7 +23,7 @@
 c0
 0a
 01
-c0
+c6
 c0
 0a
 80
@@ -43,7 +43,7 @@
 c0
 1b
 82
-35
+3b
 c0
 1c
 00
@@ -55,15 +55,15 @@
 c0
 1e
 82
-32
+38
 c0
 1f
 02
-81
+90
 c0
 58
 82
-48
+4e
 c0
 62
 80
@@ -71,11 +71,11 @@
 c0
 6d
 01
-92
+98
 c0
 6e
 01
-a2
+a8
 c0
 7f
 00
@@ -103,63 +103,63 @@
 c0
 1c
 81
-dc
+e2
 c0
 26
 81
-e0
+e6
 c0
 37
 02
-ed
+fc
 c0
 37
 82
-3e
+44
 c0
 39
 03
-34
+43
 c0
 39
 83
-1f
+2e
 c0
 3a
-82
-fc
+83
+0b
 c0
 40
 82
-dc
+eb
 c0
 41
 01
-e2
+e8
 c0
 42
 02
-a7
+b6
 c0
 42
 83
-0c
+1b
 c0
 44
 02
-1a
+20
 c0
 45
 02
-27
+2d
 c0
 45
 83
-0f
+1e
 c0
 4d
 83
-18
+27
 c1
 7f
 80
@@ -403,11 +403,11 @@
 20
 40
 01
-65
+6b
 20
 40
 01
-90
+96
 20
 40
 00
@@ -1395,7 +1395,11 @@
 c0
 11
 81
-5d
+5e
+c0
+12
+01
+66
 20
 20
 23
@@ -1432,6 +1436,26 @@
 20
 7c
 a1
+df
+20
+00
+40
+d8
+c0
+4a
+0c
+20
+40
+7b
+db
+d8
+a0
+4a
+0c
+20
+20
+01
+64
 20
 75
 80
@@ -1483,7 +1507,7 @@
 20
 40
 01
-82
+88
 2a
 2f
 fe
@@ -1515,7 +1539,7 @@
 20
 40
 01
-82
+88
 d8
 a0
 8a
@@ -1543,7 +1567,7 @@
 20
 21
 01
-77
+7d
 20
 20
 21
@@ -1643,7 +1667,7 @@
 20
 40
 01
-ba
+c0
 70
 8a
 08
@@ -1679,7 +1703,7 @@
 20
 40
 01
-b0
+b6
 6f
 f0
 8a
@@ -1723,7 +1747,7 @@
 20
 40
 01
-ba
+c0
 70
 80
 cd
@@ -1783,7 +1807,7 @@
 c3
 02
 81
-bb
+c1
 68
 59
 01
@@ -1815,7 +1839,7 @@
 c0
 08
 01
-d9
+df
 58
 00
 57
@@ -1859,7 +1883,7 @@
 c0
 08
 01
-d6
+dc
 58
 00
 2b
@@ -1895,7 +1919,7 @@
 20
 20
 01
-d2
+d8
 58
 00
 83
@@ -1907,7 +1931,7 @@
 20
 20
 01
-c7
+cd
 6f
 e0
 c3
@@ -1939,19 +1963,19 @@
 c0
 55
 01
-e8
+ee
 c0
 2a
 81
-ea
+f0
 c0
 11
 02
-00
+06
 c0
 7f
 81
-f2
+f8
 20
 60
 00
@@ -1971,7 +1995,7 @@
 20
 3a
 01
-f0
+f6
 6f
 e2
 47
@@ -2003,11 +2027,11 @@
 c0
 00
 81
-f6
+fc
 c0
 01
+02
 01
-fb
 20
 60
 00
@@ -2059,7 +2083,7 @@
 20
 3a
 02
-06
+0c
 6f
 e2
 47
@@ -2083,11 +2107,11 @@
 c0
 00
 82
-0a
+10
 c0
 01
 02
-12
+18
 20
 60
 00
@@ -2107,7 +2131,7 @@
 c0
 01
 02
-0f
+15
 20
 60
 00
@@ -2139,7 +2163,7 @@
 c0
 80
 02
-17
+1d
 20
 60
 00
@@ -2219,7 +2243,7 @@
 20
 40
 02
-2b
+31
 20
 20
 34
@@ -2255,7 +2279,7 @@
 20
 20
 03
-61
+70
 58
 00
 00
@@ -2343,7 +2367,7 @@
 58
 00
 03
-3f
+4e
 67
 e1
 45
@@ -2351,15 +2375,15 @@
 58
 00
 03
-b0
+c1
 67
 e1
 45
 e4
 58
 00
-03
-f4
+04
+05
 67
 e1
 45
@@ -2367,7 +2391,7 @@
 58
 00
 02
-53
+59
 67
 e1
 45
@@ -2391,11 +2415,11 @@
 c0
 00
 82
-56
+5c
 c0
 01
 02
-59
+5f
 6f
 e0
 c6
@@ -2403,11 +2427,11 @@
 c2
 80
 02
-77
+86
 20
 20
 02
-5b
+61
 6f
 e0
 c6
@@ -2415,7 +2439,7 @@
 c2
 80
 82
-7b
+8a
 6f
 e0
 c6
@@ -2423,11 +2447,15 @@
 c0
 00
 82
-5f
+66
 c0
 01
 82
-6f
+76
+c0
+04
+02
+7e
 20
 60
 00
@@ -2439,7 +2467,7 @@
 20
 40
 02
-67
+6e
 24
 77
 80
@@ -2503,11 +2531,11 @@
 c0
 00
 82
-5f
+66
 c0
 7f
 82
-5f
+66
 70
 08
 f9
@@ -2530,6 +2558,38 @@
 00
 6f
 e0
+ca
+4d
+c0
+02
+82
+82
+c0
+05
+02
+84
+20
+60
+00
+00
+70
+45
+89
+01
+20
+60
+00
+00
+70
+45
+89
+02
+20
+60
+00
+00
+6f
+e0
 c6
 93
 79
@@ -2543,7 +2603,7 @@
 20
 20
 02
-7e
+8d
 6f
 e0
 c6
@@ -2567,7 +2627,7 @@
 20
 20
 02
-75
+7c
 6f
 e0
 c6
@@ -2579,7 +2639,7 @@
 20
 40
 02
-95
+a4
 20
 40
 48
@@ -2663,11 +2723,11 @@
 20
 40
 02
-90
+9f
 20
 40
 02
-d1
+e0
 24
 37
 b3
@@ -2719,7 +2779,7 @@
 20
 5a
 02
-ad
+bc
 6f
 e0
 c7
@@ -2727,7 +2787,7 @@
 c0
 7f
 82
-cb
+da
 1f
 e1
 7e
@@ -2735,11 +2795,11 @@
 c0
 00
 82
-b3
+c2
 c0
 01
 02
-c5
+d4
 20
 20
 33
@@ -2799,7 +2859,7 @@
 c0
 00
 82
-be
+cd
 6f
 e0
 c6
@@ -2855,7 +2915,7 @@
 20
 20
 82
-c3
+d2
 6f
 e1
 45
@@ -2867,11 +2927,11 @@
 20
 40
 02
-cf
+de
 20
 20
 01
-f2
+f8
 6f
 e0
 c5
@@ -2914,8 +2974,8 @@
 89
 20
 40
-02
-fc
+03
+0b
 6f
 e0
 c7
@@ -2947,15 +3007,15 @@
 20
 40
 02
-e8
+f7
 20
 40
 02
-d4
+e3
 20
 40
 02
-cd
+dc
 20
 40
 49
@@ -3010,8 +3070,8 @@
 97
 c5
 13
-82
-f5
+83
+04
 6f
 e0
 c6
@@ -3155,7 +3215,7 @@
 20
 40
 02
-d1
+e0
 24
 37
 b3
@@ -3167,7 +3227,7 @@
 20
 42
 82
-9b
+aa
 20
 20
 34
@@ -3287,7 +3347,7 @@
 c5
 17
 83
-39
+48
 6f
 e0
 c5
@@ -3295,7 +3355,7 @@
 24
 3a
 03
-39
+48
 78
 4e
 fc
@@ -3359,15 +3419,15 @@
 20
 40
 03
-49
+58
 20
 40
 03
-55
+64
 20
 20
 03
-40
+4f
 d8
 40
 ff
@@ -3489,117 +3549,101 @@
 f7
 00
 6f
-e1
-08
-f5
-d8
-40
-02
-ba
-98
-46
-7c
-00
-24
-62
-80
-00
-6f
 e0
 88
 75
-c1
-dd
-00
-00
-6f
-e0
-88
-76
 c0
 7b
 83
-76
+80
 c0
 7b
 03
+8e
+c0
+7a
 83
+91
 c0
 7e
 03
-86
+97
 c0
 7f
 03
-8c
+9d
 c0
 3d
 03
-8f
+a0
 c0
 50
 03
-97
+a8
 c0
 50
 83
-a5
+b6
 20
 20
 48
 75
-6f
-e0
-c7
-f6
+58
+00
+00
+64
 67
 e0
-88
-b6
-6f
-e0
-c7
-f7
+ca
+0c
+58
+00
+00
+64
 67
 e0
-88
-b7
-6f
-e0
-c7
-fc
+ca
+0d
+58
+00
+00
+00
 67
 e0
-88
-b8
-6f
-e0
-c7
-fd
+ca
+0e
+58
+00
+00
+00
 67
 e0
-88
-b9
-6f
-e0
-c7
-fe
+ca
+0f
+58
+00
+00
+01
 67
 e0
-88
-ba
+ca
+10
 6f
 e2
 45
 8f
 67
 e2
-08
-bd
+4a
+13
+70
+09
+0c
+24
 20
 20
-48
-80
+03
+fc
 6f
 e0
 88
@@ -3609,9 +3653,33 @@
 c7
 ff
 20
+60
+00
+00
+6f
+e0
+88
+76
+c1
+82
+80
+00
+67
+e0
+ca
+4d
+6f
+e0
+88
+77
+67
+e0
+c9
+4d
 20
-48
-7a
+60
+00
+00
 70
 08
 75
@@ -3787,15 +3855,15 @@
 c2
 83
 03
-d7
+e8
 c2
 83
 83
-e4
+f5
 c2
 82
 83
-e7
+f8
 6f
 e0
 c5
@@ -3807,11 +3875,11 @@
 20
 22
 83
-c4
+d5
 20
 40
 03
-c4
+d5
 6f
 e0
 c5
@@ -3847,15 +3915,15 @@
 c2
 83
 03
-d7
+e8
 c2
 83
 83
-e4
+f5
 c2
 82
 83
-e7
+f8
 20
 60
 00
@@ -3919,7 +3987,7 @@
 24
 22
 83
-d5
+e6
 6f
 e3
 49
@@ -3935,7 +4003,7 @@
 20
 20
 03
-eb
+fc
 6f
 e0
 c7
@@ -3987,7 +4055,7 @@
 20
 20
 03
-eb
+fc
 6f
 e0
 c7
@@ -4058,16 +4126,16 @@
 b2
 c0
 00
-03
-f9
+04
+0a
 c0
 01
-03
-ff
+04
+10
 c0
 01
 84
-02
+13
 20
 20
 33
@@ -4135,7 +4203,7 @@
 c2
 00
 04
-06
+17
 1a
 21
 22
@@ -4144,8 +4212,8 @@
 60
 00
 00
-2d
-f3
+be
+91
 aa
 55
 40
@@ -4758,76 +4826,8 @@
 55
 56
 80
-ad
-e8
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
+fd
+78
 ff
 ff
 ff
@@ -8188,5 +8188,5 @@
 ff
 ff
 ff
-a4
-da
+b6
+6e
Index: output/flash.dat
===================================================================
--- /branch/keyboard/customer_FW/RY_project/RY_Dongle/output/flash.dat	(revision 1982)
+++ /branch/keyboard/customer_FW/RY_project/RY_Dongle/output/flash.dat	(working copy)
@@ -2,7 +2,7 @@
 02
 aa
 55
-2e
+72
 10
 c2
 84
@@ -23,7 +23,7 @@
 c0
 0a
 01
-c0
+c6
 c0
 0a
 80
@@ -43,7 +43,7 @@
 c0
 1b
 82
-35
+3b
 c0
 1c
 00
@@ -55,15 +55,15 @@
 c0
 1e
 82
-32
+38
 c0
 1f
 02
-81
+90
 c0
 58
 82
-48
+4e
 c0
 62
 80
@@ -71,11 +71,11 @@
 c0
 6d
 01
-92
+98
 c0
 6e
 01
-a2
+a8
 c0
 7f
 00
@@ -103,63 +103,63 @@
 c0
 1c
 81
-dc
+e2
 c0
 26
 81
-e0
+e6
 c0
 37
 02
-ed
+fc
 c0
 37
 82
-3e
+44
 c0
 39
 03
-34
+43
 c0
 39
 83
-1f
+2e
 c0
 3a
-82
-fc
+83
+0b
 c0
 40
 82
-dc
+eb
 c0
 41
 01
-e2
+e8
 c0
 42
 02
-a7
+b6
 c0
 42
 83
-0c
+1b
 c0
 44
 02
-1a
+20
 c0
 45
 02
-27
+2d
 c0
 45
 83
-0f
+1e
 c0
 4d
 83
-18
+27
 c1
 7f
 80
@@ -403,11 +403,11 @@
 20
 40
 01
-65
+6b
 20
 40
 01
-90
+96
 20
 40
 00
@@ -1395,7 +1395,11 @@
 c0
 11
 81
-5d
+5e
+c0
+12
+01
+66
 20
 20
 23
@@ -1432,6 +1436,26 @@
 20
 7c
 a1
+df
+20
+00
+40
+d8
+c0
+4a
+0c
+20
+40
+7b
+db
+d8
+a0
+4a
+0c
+20
+20
+01
+64
 20
 75
 80
@@ -1483,7 +1507,7 @@
 20
 40
 01
-82
+88
 2a
 2f
 fe
@@ -1515,7 +1539,7 @@
 20
 40
 01
-82
+88
 d8
 a0
 8a
@@ -1543,7 +1567,7 @@
 20
 21
 01
-77
+7d
 20
 20
 21
@@ -1643,7 +1667,7 @@
 20
 40
 01
-ba
+c0
 70
 8a
 08
@@ -1679,7 +1703,7 @@
 20
 40
 01
-b0
+b6
 6f
 f0
 8a
@@ -1723,7 +1747,7 @@
 20
 40
 01
-ba
+c0
 70
 80
 cd
@@ -1783,7 +1807,7 @@
 c3
 02
 81
-bb
+c1
 68
 59
 01
@@ -1815,7 +1839,7 @@
 c0
 08
 01
-d9
+df
 58
 00
 57
@@ -1859,7 +1883,7 @@
 c0
 08
 01
-d6
+dc
 58
 00
 2b
@@ -1895,7 +1919,7 @@
 20
 20
 01
-d2
+d8
 58
 00
 83
@@ -1907,7 +1931,7 @@
 20
 20
 01
-c7
+cd
 6f
 e0
 c3
@@ -1939,19 +1963,19 @@
 c0
 55
 01
-e8
+ee
 c0
 2a
 81
-ea
+f0
 c0
 11
 02
-00
+06
 c0
 7f
 81
-f2
+f8
 20
 60
 00
@@ -1971,7 +1995,7 @@
 20
 3a
 01
-f0
+f6
 6f
 e2
 47
@@ -2003,11 +2027,11 @@
 c0
 00
 81
-f6
+fc
 c0
 01
+02
 01
-fb
 20
 60
 00
@@ -2059,7 +2083,7 @@
 20
 3a
 02
-06
+0c
 6f
 e2
 47
@@ -2083,11 +2107,11 @@
 c0
 00
 82
-0a
+10
 c0
 01
 02
-12
+18
 20
 60
 00
@@ -2107,7 +2131,7 @@
 c0
 01
 02
-0f
+15
 20
 60
 00
@@ -2139,7 +2163,7 @@
 c0
 80
 02
-17
+1d
 20
 60
 00
@@ -2219,7 +2243,7 @@
 20
 40
 02
-2b
+31
 20
 20
 34
@@ -2255,7 +2279,7 @@
 20
 20
 03
-61
+70
 58
 00
 00
@@ -2343,7 +2367,7 @@
 58
 00
 03
-3f
+4e
 67
 e1
 45
@@ -2351,15 +2375,15 @@
 58
 00
 03
-b0
+c1
 67
 e1
 45
 e4
 58
 00
-03
-f4
+04
+05
 67
 e1
 45
@@ -2367,7 +2391,7 @@
 58
 00
 02
-53
+59
 67
 e1
 45
@@ -2391,11 +2415,11 @@
 c0
 00
 82
-56
+5c
 c0
 01
 02
-59
+5f
 6f
 e0
 c6
@@ -2403,11 +2427,11 @@
 c2
 80
 02
-77
+86
 20
 20
 02
-5b
+61
 6f
 e0
 c6
@@ -2415,7 +2439,7 @@
 c2
 80
 82
-7b
+8a
 6f
 e0
 c6
@@ -2423,11 +2447,15 @@
 c0
 00
 82
-5f
+66
 c0
 01
 82
-6f
+76
+c0
+04
+02
+7e
 20
 60
 00
@@ -2439,7 +2467,7 @@
 20
 40
 02
-67
+6e
 24
 77
 80
@@ -2503,11 +2531,11 @@
 c0
 00
 82
-5f
+66
 c0
 7f
 82
-5f
+66
 70
 08
 f9
@@ -2530,6 +2558,38 @@
 00
 6f
 e0
+ca
+4d
+c0
+02
+82
+82
+c0
+05
+02
+84
+20
+60
+00
+00
+70
+45
+89
+01
+20
+60
+00
+00
+70
+45
+89
+02
+20
+60
+00
+00
+6f
+e0
 c6
 93
 79
@@ -2543,7 +2603,7 @@
 20
 20
 02
-7e
+8d
 6f
 e0
 c6
@@ -2567,7 +2627,7 @@
 20
 20
 02
-75
+7c
 6f
 e0
 c6
@@ -2579,7 +2639,7 @@
 20
 40
 02
-95
+a4
 20
 40
 48
@@ -2663,11 +2723,11 @@
 20
 40
 02
-90
+9f
 20
 40
 02
-d1
+e0
 24
 37
 b3
@@ -2719,7 +2779,7 @@
 20
 5a
 02
-ad
+bc
 6f
 e0
 c7
@@ -2727,7 +2787,7 @@
 c0
 7f
 82
-cb
+da
 1f
 e1
 7e
@@ -2735,11 +2795,11 @@
 c0
 00
 82
-b3
+c2
 c0
 01
 02
-c5
+d4
 20
 20
 33
@@ -2799,7 +2859,7 @@
 c0
 00
 82
-be
+cd
 6f
 e0
 c6
@@ -2855,7 +2915,7 @@
 20
 20
 82
-c3
+d2
 6f
 e1
 45
@@ -2867,11 +2927,11 @@
 20
 40
 02
-cf
+de
 20
 20
 01
-f2
+f8
 6f
 e0
 c5
@@ -2914,8 +2974,8 @@
 89
 20
 40
-02
-fc
+03
+0b
 6f
 e0
 c7
@@ -2947,15 +3007,15 @@
 20
 40
 02
-e8
+f7
 20
 40
 02
-d4
+e3
 20
 40
 02
-cd
+dc
 20
 40
 49
@@ -3010,8 +3070,8 @@
 97
 c5
 13
-82
-f5
+83
+04
 6f
 e0
 c6
@@ -3155,7 +3215,7 @@
 20
 40
 02
-d1
+e0
 24
 37
 b3
@@ -3167,7 +3227,7 @@
 20
 42
 82
-9b
+aa
 20
 20
 34
@@ -3287,7 +3347,7 @@
 c5
 17
 83
-39
+48
 6f
 e0
 c5
@@ -3295,7 +3355,7 @@
 24
 3a
 03
-39
+48
 78
 4e
 fc
@@ -3359,15 +3419,15 @@
 20
 40
 03
-49
+58
 20
 40
 03
-55
+64
 20
 20
 03
-40
+4f
 d8
 40
 ff
@@ -3489,117 +3549,101 @@
 f7
 00
 6f
-e1
-08
-f5
-d8
-40
-02
-ba
-98
-46
-7c
-00
-24
-62
-80
-00
-6f
 e0
 88
 75
-c1
-dd
-00
-00
-6f
-e0
-88
-76
 c0
 7b
 83
-76
+80
 c0
 7b
 03
+8e
+c0
+7a
 83
+91
 c0
 7e
 03
-86
+97
 c0
 7f
 03
-8c
+9d
 c0
 3d
 03
-8f
+a0
 c0
 50
 03
-97
+a8
 c0
 50
 83
-a5
+b6
 20
 20
 48
 75
-6f
-e0
-c7
-f6
+58
+00
+00
+64
 67
 e0
-88
-b6
-6f
-e0
-c7
-f7
+ca
+0c
+58
+00
+00
+64
 67
 e0
-88
-b7
-6f
-e0
-c7
-fc
+ca
+0d
+58
+00
+00
+00
 67
 e0
-88
-b8
-6f
-e0
-c7
-fd
+ca
+0e
+58
+00
+00
+00
 67
 e0
-88
-b9
-6f
-e0
-c7
-fe
+ca
+0f
+58
+00
+00
+01
 67
 e0
-88
-ba
+ca
+10
 6f
 e2
 45
 8f
 67
 e2
-08
-bd
+4a
+13
+70
+09
+0c
+24
 20
 20
-48
-80
+03
+fc
 6f
 e0
 88
@@ -3609,9 +3653,33 @@
 c7
 ff
 20
+60
+00
+00
+6f
+e0
+88
+76
+c1
+82
+80
+00
+67
+e0
+ca
+4d
+6f
+e0
+88
+77
+67
+e0
+c9
+4d
 20
-48
-7a
+60
+00
+00
 70
 08
 75
@@ -3787,15 +3855,15 @@
 c2
 83
 03
-d7
+e8
 c2
 83
 83
-e4
+f5
 c2
 82
 83
-e7
+f8
 6f
 e0
 c5
@@ -3807,11 +3875,11 @@
 20
 22
 83
-c4
+d5
 20
 40
 03
-c4
+d5
 6f
 e0
 c5
@@ -3847,15 +3915,15 @@
 c2
 83
 03
-d7
+e8
 c2
 83
 83
-e4
+f5
 c2
 82
 83
-e7
+f8
 20
 60
 00
@@ -3919,7 +3987,7 @@
 24
 22
 83
-d5
+e6
 6f
 e3
 49
@@ -3935,7 +4003,7 @@
 20
 20
 03
-eb
+fc
 6f
 e0
 c7
@@ -3987,7 +4055,7 @@
 20
 20
 03
-eb
+fc
 6f
 e0
 c7
@@ -4058,16 +4126,16 @@
 b2
 c0
 00
-03
-f9
+04
+0a
 c0
 01
-03
-ff
+04
+10
 c0
 01
 84
-02
+13
 20
 20
 33
@@ -4135,7 +4203,7 @@
 c2
 00
 04
-06
+17
 1a
 21
 22
@@ -4144,8 +4212,8 @@
 60
 00
 00
-2d
-f3
+be
+91
 aa
 55
 40
@@ -4758,76 +4826,8 @@
 55
 56
 80
-ad
-e8
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
+fd
+78
 ff
 ff
 ff
@@ -8188,5 +8188,5 @@
 ff
 ff
 ff
-a4
-da
+b6
+6e
Index: output/memmap.format
===================================================================
--- /branch/keyboard/customer_FW/RY_project/RY_Dongle/output/memmap.format	(revision 1982)
+++ /branch/keyboard/customer_FW/RY_project/RY_Dongle/output/memmap.format	(working copy)
@@ -1515,6 +1515,8 @@
 0x4993 mem_dg_keyboard_keymatrix_len
 0x4994 mem_dg_keyboard_keymatrix_setup_keyvalue
 0x49cc mem_dg_keyboard_keymatrix_getup_keyvalue
+0x4a0c mem_dg_protocol_usb_in_data_buff
+0x4a4d mem_24g_device_type
 0x45d3 mem_rssi_hex_received
 0x45d4 mem_24g_pair_sm
 0x45d5 mem_24g_pair_no_ack
Index: output/otp.dat
===================================================================
--- /branch/keyboard/customer_FW/RY_project/RY_Dongle/output/otp.dat	(revision 1982)
+++ /branch/keyboard/customer_FW/RY_project/RY_Dongle/output/otp.dat	(working copy)
@@ -11,7 +11,7 @@
 00
 aa
 55
-2e
+72
 10
 c2
 84
@@ -32,7 +32,7 @@
 c0
 0a
 01
-c0
+c6
 c0
 0a
 80
@@ -52,7 +52,7 @@
 c0
 1b
 82
-35
+3b
 c0
 1c
 00
@@ -64,15 +64,15 @@
 c0
 1e
 82
-32
+38
 c0
 1f
 02
-81
+90
 c0
 58
 82
-48
+4e
 c0
 62
 80
@@ -80,11 +80,11 @@
 c0
 6d
 01
-92
+98
 c0
 6e
 01
-a2
+a8
 c0
 7f
 00
@@ -112,63 +112,63 @@
 c0
 1c
 81
-dc
+e2
 c0
 26
 81
-e0
+e6
 c0
 37
 02
-ed
+fc
 c0
 37
 82
-3e
+44
 c0
 39
 03
-34
+43
 c0
 39
 83
-1f
+2e
 c0
 3a
-82
-fc
+83
+0b
 c0
 40
 82
-dc
+eb
 c0
 41
 01
-e2
+e8
 c0
 42
 02
-a7
+b6
 c0
 42
 83
-0c
+1b
 c0
 44
 02
-1a
+20
 c0
 45
 02
-27
+2d
 c0
 45
 83
-0f
+1e
 c0
 4d
 83
-18
+27
 c1
 7f
 80
@@ -412,11 +412,11 @@
 20
 40
 01
-65
+6b
 20
 40
 01
-90
+96
 20
 40
 00
@@ -1404,7 +1404,11 @@
 c0
 11
 81
-5d
+5e
+c0
+12
+01
+66
 20
 20
 23
@@ -1441,6 +1445,26 @@
 20
 7c
 a1
+df
+20
+00
+40
+d8
+c0
+4a
+0c
+20
+40
+7b
+db
+d8
+a0
+4a
+0c
+20
+20
+01
+64
 20
 75
 80
@@ -1492,7 +1516,7 @@
 20
 40
 01
-82
+88
 2a
 2f
 fe
@@ -1524,7 +1548,7 @@
 20
 40
 01
-82
+88
 d8
 a0
 8a
@@ -1552,7 +1576,7 @@
 20
 21
 01
-77
+7d
 20
 20
 21
@@ -1652,7 +1676,7 @@
 20
 40
 01
-ba
+c0
 70
 8a
 08
@@ -1688,7 +1712,7 @@
 20
 40
 01
-b0
+b6
 6f
 f0
 8a
@@ -1732,7 +1756,7 @@
 20
 40
 01
-ba
+c0
 70
 80
 cd
@@ -1792,7 +1816,7 @@
 c3
 02
 81
-bb
+c1
 68
 59
 01
@@ -1824,7 +1848,7 @@
 c0
 08
 01
-d9
+df
 58
 00
 57
@@ -1868,7 +1892,7 @@
 c0
 08
 01
-d6
+dc
 58
 00
 2b
@@ -1904,7 +1928,7 @@
 20
 20
 01
-d2
+d8
 58
 00
 83
@@ -1916,7 +1940,7 @@
 20
 20
 01
-c7
+cd
 6f
 e0
 c3
@@ -1948,19 +1972,19 @@
 c0
 55
 01
-e8
+ee
 c0
 2a
 81
-ea
+f0
 c0
 11
 02
-00
+06
 c0
 7f
 81
-f2
+f8
 20
 60
 00
@@ -1980,7 +2004,7 @@
 20
 3a
 01
-f0
+f6
 6f
 e2
 47
@@ -2012,11 +2036,11 @@
 c0
 00
 81
-f6
+fc
 c0
 01
+02
 01
-fb
 20
 60
 00
@@ -2068,7 +2092,7 @@
 20
 3a
 02
-06
+0c
 6f
 e2
 47
@@ -2092,11 +2116,11 @@
 c0
 00
 82
-0a
+10
 c0
 01
 02
-12
+18
 20
 60
 00
@@ -2116,7 +2140,7 @@
 c0
 01
 02
-0f
+15
 20
 60
 00
@@ -2148,7 +2172,7 @@
 c0
 80
 02
-17
+1d
 20
 60
 00
@@ -2228,7 +2252,7 @@
 20
 40
 02
-2b
+31
 20
 20
 34
@@ -2264,7 +2288,7 @@
 20
 20
 03
-61
+70
 58
 00
 00
@@ -2352,7 +2376,7 @@
 58
 00
 03
-3f
+4e
 67
 e1
 45
@@ -2360,15 +2384,15 @@
 58
 00
 03
-b0
+c1
 67
 e1
 45
 e4
 58
 00
-03
-f4
+04
+05
 67
 e1
 45
@@ -2376,7 +2400,7 @@
 58
 00
 02
-53
+59
 67
 e1
 45
@@ -2400,11 +2424,11 @@
 c0
 00
 82
-56
+5c
 c0
 01
 02
-59
+5f
 6f
 e0
 c6
@@ -2412,11 +2436,11 @@
 c2
 80
 02
-77
+86
 20
 20
 02
-5b
+61
 6f
 e0
 c6
@@ -2424,7 +2448,7 @@
 c2
 80
 82
-7b
+8a
 6f
 e0
 c6
@@ -2432,11 +2456,15 @@
 c0
 00
 82
-5f
+66
 c0
 01
 82
-6f
+76
+c0
+04
+02
+7e
 20
 60
 00
@@ -2448,7 +2476,7 @@
 20
 40
 02
-67
+6e
 24
 77
 80
@@ -2512,11 +2540,11 @@
 c0
 00
 82
-5f
+66
 c0
 7f
 82
-5f
+66
 70
 08
 f9
@@ -2539,6 +2567,38 @@
 00
 6f
 e0
+ca
+4d
+c0
+02
+82
+82
+c0
+05
+02
+84
+20
+60
+00
+00
+70
+45
+89
+01
+20
+60
+00
+00
+70
+45
+89
+02
+20
+60
+00
+00
+6f
+e0
 c6
 93
 79
@@ -2552,7 +2612,7 @@
 20
 20
 02
-7e
+8d
 6f
 e0
 c6
@@ -2576,7 +2636,7 @@
 20
 20
 02
-75
+7c
 6f
 e0
 c6
@@ -2588,7 +2648,7 @@
 20
 40
 02
-95
+a4
 20
 40
 48
@@ -2672,11 +2732,11 @@
 20
 40
 02
-90
+9f
 20
 40
 02
-d1
+e0
 24
 37
 b3
@@ -2728,7 +2788,7 @@
 20
 5a
 02
-ad
+bc
 6f
 e0
 c7
@@ -2736,7 +2796,7 @@
 c0
 7f
 82
-cb
+da
 1f
 e1
 7e
@@ -2744,11 +2804,11 @@
 c0
 00
 82
-b3
+c2
 c0
 01
 02
-c5
+d4
 20
 20
 33
@@ -2808,7 +2868,7 @@
 c0
 00
 82
-be
+cd
 6f
 e0
 c6
@@ -2864,7 +2924,7 @@
 20
 20
 82
-c3
+d2
 6f
 e1
 45
@@ -2876,11 +2936,11 @@
 20
 40
 02
-cf
+de
 20
 20
 01
-f2
+f8
 6f
 e0
 c5
@@ -2923,8 +2983,8 @@
 89
 20
 40
-02
-fc
+03
+0b
 6f
 e0
 c7
@@ -2956,15 +3016,15 @@
 20
 40
 02
-e8
+f7
 20
 40
 02
-d4
+e3
 20
 40
 02
-cd
+dc
 20
 40
 49
@@ -3019,8 +3079,8 @@
 97
 c5
 13
-82
-f5
+83
+04
 6f
 e0
 c6
@@ -3164,7 +3224,7 @@
 20
 40
 02
-d1
+e0
 24
 37
 b3
@@ -3176,7 +3236,7 @@
 20
 42
 82
-9b
+aa
 20
 20
 34
@@ -3296,7 +3356,7 @@
 c5
 17
 83
-39
+48
 6f
 e0
 c5
@@ -3304,7 +3364,7 @@
 24
 3a
 03
-39
+48
 78
 4e
 fc
@@ -3368,15 +3428,15 @@
 20
 40
 03
-49
+58
 20
 40
 03
-55
+64
 20
 20
 03
-40
+4f
 d8
 40
 ff
@@ -3498,117 +3558,101 @@
 f7
 00
 6f
-e1
-08
-f5
-d8
-40
-02
-ba
-98
-46
-7c
-00
-24
-62
-80
-00
-6f
 e0
 88
 75
-c1
-dd
-00
-00
-6f
-e0
-88
-76
 c0
 7b
 83
-76
+80
 c0
 7b
 03
+8e
+c0
+7a
 83
+91
 c0
 7e
 03
-86
+97
 c0
 7f
 03
-8c
+9d
 c0
 3d
 03
-8f
+a0
 c0
 50
 03
-97
+a8
 c0
 50
 83
-a5
+b6
 20
 20
 48
 75
-6f
-e0
-c7
-f6
+58
+00
+00
+64
 67
 e0
-88
-b6
-6f
-e0
-c7
-f7
+ca
+0c
+58
+00
+00
+64
 67
 e0
-88
-b7
-6f
-e0
-c7
-fc
+ca
+0d
+58
+00
+00
+00
 67
 e0
-88
-b8
-6f
-e0
-c7
-fd
+ca
+0e
+58
+00
+00
+00
 67
 e0
-88
-b9
-6f
-e0
-c7
-fe
+ca
+0f
+58
+00
+00
+01
 67
 e0
-88
-ba
+ca
+10
 6f
 e2
 45
 8f
 67
 e2
-08
-bd
+4a
+13
+70
+09
+0c
+24
 20
 20
-48
-80
+03
+fc
 6f
 e0
 88
@@ -3618,9 +3662,33 @@
 c7
 ff
 20
+60
+00
+00
+6f
+e0
+88
+76
+c1
+82
+80
+00
+67
+e0
+ca
+4d
+6f
+e0
+88
+77
+67
+e0
+c9
+4d
 20
-48
-7a
+60
+00
+00
 70
 08
 75
@@ -3796,15 +3864,15 @@
 c2
 83
 03
-d7
+e8
 c2
 83
 83
-e4
+f5
 c2
 82
 83
-e7
+f8
 6f
 e0
 c5
@@ -3816,11 +3884,11 @@
 20
 22
 83
-c4
+d5
 20
 40
 03
-c4
+d5
 6f
 e0
 c5
@@ -3856,15 +3924,15 @@
 c2
 83
 03
-d7
+e8
 c2
 83
 83
-e4
+f5
 c2
 82
 83
-e7
+f8
 20
 60
 00
@@ -3928,7 +3996,7 @@
 24
 22
 83
-d5
+e6
 6f
 e3
 49
@@ -3944,7 +4012,7 @@
 20
 20
 03
-eb
+fc
 6f
 e0
 c7
@@ -3996,7 +4064,7 @@
 20
 20
 03
-eb
+fc
 6f
 e0
 c7
@@ -4067,16 +4135,16 @@
 b2
 c0
 00
-03
-f9
+04
+0a
 c0
 01
-03
-ff
+04
+10
 c0
 01
 84
-02
+13
 20
 20
 33
@@ -4144,7 +4212,7 @@
 c2
 00
 04
-06
+17
 1a
 21
 22
@@ -4153,8 +4221,8 @@
 60
 00
 00
-2d
-f3
+be
+91
 aa
 55
 40
@@ -4767,6 +4835,6 @@
 55
 56
 80
-ad
-e8
+fd
+78
 21
Index: output/program.lis
===================================================================
--- /branch/keyboard/customer_FW/RY_project/RY_Dongle/output/program.lis	(revision 1982)
+++ /branch/keyboard/customer_FW/RY_project/RY_Dongle/output/program.lis	(working copy)
@@ -4,20 +4,20 @@
 0001 c0000029 beq patch00_0 ,p_soft_reset 
 0002 c001002f beq patch00_2 ,p_main_loop 
 0003 c0088038 beq patch02_1 ,p_set_sync_on 
-0004 c00a01c0 beq patch02_4 ,p_set_lemode 
+0004 c00a01c6 beq patch02_4 ,p_set_lemode 
 0005 c00a80d3 beq patch02_5 ,p_rf_rx_enable 
 0006 c00c00e1 beq patch03_0 ,p_txon 
 0007 c00c8087 beq patch03_1 ,p_set_tx_power 
 0008 c00d0046 beq patch03_2 ,p_initialize_radio_cont 
-0009 c01b8235 beq patch06_7 ,p_dongle_default_init 
+0009 c01b823b beq patch06_7 ,p_dongle_default_init 
 000a c01c00a6 beq patch07_0 ,p_dongle_read_kb_bind_status 
 000b c01c80a2 beq patch07_1 ,p_dongle_write_kb_bind_status 
-000c c01e8232 beq patch07_5 ,p_dongle_usb_dispatch 
-000d c01f0281 beq patch07_6 ,p_dongle_work_mode_auto 
-000e c0588248 beq patch16_1 ,p_app_init 
+000c c01e8238 beq patch07_5 ,p_dongle_usb_dispatch 
+000d c01f0290 beq patch07_6 ,p_dongle_work_mode_auto 
+000e c058824e beq patch16_1 ,p_app_init 
 000f c062809f beq patch18_5 ,p_otp_read_data 
-0010 c06d0192 beq patch1b_2 ,p_sadc_calibration 
-0011 c06e01a2 beq patch1b_4 ,p_enable_adc 
+0010 c06d0198 beq patch1b_2 ,p_sadc_calibration 
+0011 c06e01a8 beq patch1b_4 ,p_enable_adc 
 0012 c07f00e8 beq patch1f_6 ,p_usb_init 
 0013 c07f80f0 beq patch1f_7 ,p_usb_rx 
 0014 2020235a branch assert 
@@ -26,21 +26,21 @@
 0015 c000010d beq patch20_0 ,p_usb_class_type 
 0016 c0010113 beq patch20_2 ,p_usb0_request_get_descriptor 
 0017 c0030137 beq patch20_6 ,p_usb_tx 
-0018 c01c81dc beq patch27_1 ,p_le_parse 
-0019 c02681e0 beq patch29_5 ,p_le_init_adv 
-001a c03702ed beq patch2d_6 ,p_g24_receive_update_rxbuff 
-001b c037823e beq patch2d_7 ,p_g24_receive_skip_end 
-001c c0390334 beq patch2e_2 ,p_g24_transmit_packet 
-001d c039831f beq patch2e_3 ,p_g24_transmit_prep 
-001e c03a82fc beq patch2e_5 ,p_g24_read_len_pid_crc 
-001f c04082dc beq patch30_1 ,p_g24_bind_data_process 
-0020 c04101e2 beq patch30_2 ,p_g24_bind_data_parse_next 
-0021 c04202a7 beq patch30_4 ,p_g24_receive_packet_parse_end 
-0022 c042830c beq patch30_5 ,p_g24_rx_interrupt_clear 
-0023 c044021a beq patch31_0 ,p_g24_mode_switch_bind_search 
-0024 c0450227 beq patch31_2 ,p_g24_bind_mode_auto 
-0025 c045830f beq patch31_3 ,p_g24_search_mode_auto 
-0026 c04d8318 beq patch33_3 ,p_g24_ackpayload_parse 
+0018 c01c81e2 beq patch27_1 ,p_le_parse 
+0019 c02681e6 beq patch29_5 ,p_le_init_adv 
+001a c03702fc beq patch2d_6 ,p_g24_receive_update_rxbuff 
+001b c0378244 beq patch2d_7 ,p_g24_receive_skip_end 
+001c c0390343 beq patch2e_2 ,p_g24_transmit_packet 
+001d c039832e beq patch2e_3 ,p_g24_transmit_prep 
+001e c03a830b beq patch2e_5 ,p_g24_read_len_pid_crc 
+001f c04082eb beq patch30_1 ,p_g24_bind_data_process 
+0020 c04101e8 beq patch30_2 ,p_g24_bind_data_parse_next 
+0021 c04202b6 beq patch30_4 ,p_g24_receive_packet_parse_end 
+0022 c042831b beq patch30_5 ,p_g24_rx_interrupt_clear 
+0023 c0440220 beq patch31_0 ,p_g24_mode_switch_bind_search 
+0024 c045022d beq patch31_2 ,p_g24_bind_mode_auto 
+0025 c045831e beq patch31_3 ,p_g24_search_mode_auto 
+0026 c04d8327 beq patch33_3 ,p_g24_ackpayload_parse 
 0027 c17f8000 rtneq patch3f_7 
 0028 2020235a branch assert 
 
@@ -111,8 +111,8 @@
 0060 58557474 setarg 0x557474 
 0061 67f18968 store 3 ,0x8968 
 0062 7089606e jam 0x6e ,0x8960 
-0063 20400165 call p_rx_dcoc 
-0064 20400190 call p_rfpll_aac_ghpc 
+0063 2040016b call p_rx_dcoc 
+0064 20400196 call p_rfpll_aac_ghpc 
 0065 20400068 call p_set_xtal_cap 
 0066 7041480c jam system_clk_12m ,mem_system_clk 
 0067 20206f4e branch sadc_calibration 
@@ -425,910 +425,937 @@
 0158 c0107c09 beq usb_ep2_ms ,usb_tx_ms_data 
 0159 c010fc24 beq usb_ep2_multikey ,usb_tx_kb_multikey_data 
 015a c0117c2c beq usb_ep2_systemkey ,usb_tx_kb_systemkey_data 
-015b c011815d beq usb_ep2_dpi ,p_usb_tx_dpi_data 
-015c 2020235a branch assert 
+015b c011815e beq usb_ep2_dpi ,p_usb_tx_dpi_data 
+015c c0120166 beq usb_ep2_protocol ,p_usb_tx_protocol_data 
+015d 2020235a branch assert 
 
 p_usb_tx_dpi_data:
-015d 6fe0c94f fetch 1 ,mem_usb_dpi_info_data 
-015e 207a0000 rtn blank 
-015f 1fe27200 copy pdata ,loopcnt 
-0160 d8c04950 arg mem_usb_dpi_info_data + 1 ,contr 
-0161 20407bdb call usb_tx_ep2 
-0162 d8a0494f arg mem_usb_dpi_info_data ,contw 
+015e 6fe0c94f fetch 1 ,mem_usb_dpi_info_data 
+015f 207a0000 rtn blank 
+0160 1fe27200 copy pdata ,loopcnt 
+0161 d8c04950 arg mem_usb_dpi_info_data + 1 ,contr 
+0162 20407bdb call usb_tx_ep2 
+0163 d8a0494f arg mem_usb_dpi_info_data ,contw 
 
 p_usb_tx_buff_clr:
-0163 df200041 arg 65 ,loopcnt 
-0164 20207ca1 branch clear_mem 
+0164 df200041 arg 65 ,loopcnt 
+0165 20207ca1 branch clear_mem 
+
+p_usb_tx_protocol_data:
+0166 df200040 arg 64 ,loopcnt 
+0167 d8c04a0c arg mem_dg_protocol_usb_in_data_buff ,contr 
+0168 20407bdb call usb_tx_ep2 
+0169 d8a04a0c arg mem_dg_protocol_usb_in_data_buff ,contw 
+016a 20200164 branch p_usb_tx_buff_clr 
 
 p_rx_dcoc:
-0165 20758000 rtn wake 
-0166 20402160 call set_sync_on 
-0167 d8400027 arg 39 ,temp 
-0168 2040216f call set_freq_rx 
-0169 204021a6 call rf_rx_enable 
-016a 708a257f jam 0x7f ,0x8a25 
-016b 708a301a jam 0x1a ,0x8a30 
-016c 708a3178 jam 0x78 ,0x8a31 
-016d 708a8fb2 jam 0xb2 ,0x8a8f 
-016e 708ac200 jam 0 ,0x8ac2 
-016f 708ac300 jam 0 ,0x8ac3 
-0170 d8e00006 arg 6 ,queue 
-0171 20400182 call p_rx_dcoc_avg 
-0172 2a2ffe0d isolate1 13 ,rega 
-0173 2040211d call qset_start 
-0174 2a4ffe0d isolate1 13 ,regb 
-0175 2040211e call qset_p 
-0176 d8e00005 arg 5 ,queue 
+016b 20758000 rtn wake 
+016c 20402160 call set_sync_on 
+016d d8400027 arg 39 ,temp 
+016e 2040216f call set_freq_rx 
+016f 204021a6 call rf_rx_enable 
+0170 708a257f jam 0x7f ,0x8a25 
+0171 708a301a jam 0x1a ,0x8a30 
+0172 708a3178 jam 0x78 ,0x8a31 
+0173 708a8fb2 jam 0xb2 ,0x8a8f 
+0174 708ac200 jam 0 ,0x8ac2 
+0175 708ac300 jam 0 ,0x8ac3 
+0176 d8e00006 arg 6 ,queue 
+0177 20400188 call p_rx_dcoc_avg 
+0178 2a2ffe0d isolate1 13 ,rega 
+0179 2040211d call qset_start 
+017a 2a4ffe0d isolate1 13 ,regb 
+017b 2040211e call qset_p 
+017c d8e00005 arg 5 ,queue 
 
 p_rx_dcoc_loop2:
-0177 2040211c call qset1_p 
-0178 2040211e call qset_p 
-0179 20400182 call p_rx_dcoc_avg 
-017a d8a08ac2 arg 0x8ac2 ,contw 
-017b 1a31fe00 rshift4 rega ,pdata 
-017c 20402117 call qsetxor 
-017d 1a51fe00 rshift4 regb ,pdata 
-017e 20402117 call qsetxor 
-017f 18e08fff increase -1 ,queue 
-0180 20210177 branch p_rx_dcoc_loop2 ,positive 
-0181 2020214f branch rx_dcoc_loop2 + 10 
+017d 2040211c call qset1_p 
+017e 2040211e call qset_p 
+017f 20400188 call p_rx_dcoc_avg 
+0180 d8a08ac2 arg 0x8ac2 ,contw 
+0181 1a31fe00 rshift4 rega ,pdata 
+0182 20402117 call qsetxor 
+0183 1a51fe00 rshift4 regb ,pdata 
+0184 20402117 call qsetxor 
+0185 18e08fff increase -1 ,queue 
+0186 2021017d branch p_rx_dcoc_loop2 ,positive 
+0187 2020214f branch rx_dcoc_loop2 + 10 
 
 p_rx_dcoc_avg:
-0182 2000003c nop 60 
-0183 58000f00 setarg mem_dcoc_buf 
-0184 67f10982 store 2 ,0x8982 
-0185 58000ff0 setarg mem_dcoc_buf_end 
-0186 67f10984 store 2 ,0x8984 
-0187 70898109 jam 0x9 ,0x8981 
-0188 70898103 jam 0x3 ,0x8981 
-0189 70898006 jam 0x6 ,0x8980 
-018a 2000003c nop 60 
-018b da200000 arg 0 ,rega 
-018c da400000 arg 0 ,regb 
-018d df200010 arg 16 ,loopcnt 
-018e d8c00f00 arg mem_dcoc_buf ,contr 
-018f 2020212d branch rx_dcoc_loop 
+0188 2000003c nop 60 
+0189 58000f00 setarg mem_dcoc_buf 
+018a 67f10982 store 2 ,0x8982 
+018b 58000ff0 setarg mem_dcoc_buf_end 
+018c 67f10984 store 2 ,0x8984 
+018d 70898109 jam 0x9 ,0x8981 
+018e 70898103 jam 0x3 ,0x8981 
+018f 70898006 jam 0x6 ,0x8980 
+0190 2000003c nop 60 
+0191 da200000 arg 0 ,rega 
+0192 da400000 arg 0 ,regb 
+0193 df200010 arg 16 ,loopcnt 
+0194 d8c00f00 arg mem_dcoc_buf ,contr 
+0195 2020212d branch rx_dcoc_loop 
 
 p_rfpll_aac_ghpc:
-0190 20758000 rtn wake 
-0191 20202272 branch rfpll_aac_ghpc + 1 
+0196 20758000 rtn wake 
+0197 20202272 branch rfpll_aac_ghpc + 1 
 
 p_sadc_calibration:
-0192 20758000 rtn wake 
-0193 708a0777 jam 0x77 ,core_gpadc_ctrl 
-0194 708a08c9 jam 0xc9 ,core_gpadc_cfg0 
-0195 708a0b01 jam 0x01 ,core_gpadc_cfg3 
-0196 6fe0c409 fetch 1 ,mem_adc_clkdiv 
-0197 67f080cd store 1 ,core_sadc_clkdiv 
-0198 20000bb8 nop 3000 
-0199 204001ba call p_sadc_read 
-019a 708a08c1 jam 0xc1 ,core_gpadc_cfg0 
-019b 6a40c419 fetchr regb ,1 ,mem_spi_write_addr 
-019c df200008 arg 8 ,loopcnt 
-019d 20406f58 call sadc_cal_read + 1 
-019e 6fe0c419 fetch 1 ,mem_spi_write_addr 
-019f 67e0c433 store 1 ,mem_adc_cal_c7 
-01a0 6240c419 storer regb ,1 ,mem_spi_write_addr 
-01a1 20600000 rtn 
+0198 20758000 rtn wake 
+0199 708a0777 jam 0x77 ,core_gpadc_ctrl 
+019a 708a08c9 jam 0xc9 ,core_gpadc_cfg0 
+019b 708a0b01 jam 0x01 ,core_gpadc_cfg3 
+019c 6fe0c409 fetch 1 ,mem_adc_clkdiv 
+019d 67f080cd store 1 ,core_sadc_clkdiv 
+019e 20000bb8 nop 3000 
+019f 204001c0 call p_sadc_read 
+01a0 708a08c1 jam 0xc1 ,core_gpadc_cfg0 
+01a1 6a40c419 fetchr regb ,1 ,mem_spi_write_addr 
+01a2 df200008 arg 8 ,loopcnt 
+01a3 20406f58 call sadc_cal_read + 1 
+01a4 6fe0c419 fetch 1 ,mem_spi_write_addr 
+01a5 67e0c433 store 1 ,mem_adc_cal_c7 
+01a6 6240c419 storer regb ,1 ,mem_spi_write_addr 
+01a7 20600000 rtn 
 
 p_enable_adc:
-01a2 204001b0 call p_sadc_cal_write 
-01a3 6ff08a09 fetch 1 ,core_gpadc_cfg1 
-01a4 793ffe07 set0 7 ,pdata 
-01a5 67f08a09 store 1 ,core_gpadc_cfg1 
-01a6 708a0777 jam 0x77 ,core_gpadc_ctrl 
-01a7 708a08c1 jam 0xc1 ,core_gpadc_cfg0 
-01a8 708a0b01 jam 0x01 ,core_gpadc_cfg3 
-01a9 20406f90 call sadc_channel 
-01aa 6fe0c409 fetch 1 ,mem_adc_clkdiv 
-01ab 67f080cd store 1 ,core_sadc_clkdiv 
-01ac 20000bb8 nop 3000 
-01ad 204001ba call p_sadc_read 
-01ae 7080cd00 jam 0 ,core_sadc_clkdiv 
-01af 20206fa1 branch sadc_dma 
+01a8 204001b6 call p_sadc_cal_write 
+01a9 6ff08a09 fetch 1 ,core_gpadc_cfg1 
+01aa 793ffe07 set0 7 ,pdata 
+01ab 67f08a09 store 1 ,core_gpadc_cfg1 
+01ac 708a0777 jam 0x77 ,core_gpadc_ctrl 
+01ad 708a08c1 jam 0xc1 ,core_gpadc_cfg0 
+01ae 708a0b01 jam 0x01 ,core_gpadc_cfg3 
+01af 20406f90 call sadc_channel 
+01b0 6fe0c409 fetch 1 ,mem_adc_clkdiv 
+01b1 67f080cd store 1 ,core_sadc_clkdiv 
+01b2 20000bb8 nop 3000 
+01b3 204001c0 call p_sadc_read 
+01b4 7080cd00 jam 0 ,core_sadc_clkdiv 
+01b5 20206fa1 branch sadc_dma 
 
 p_sadc_cal_write:
-01b0 6ff080cc fetch 1 ,core_sadc_ctrl 
-01b1 79207e01 set1 1 ,pdata 
-01b2 67f080cc store 1 ,core_sadc_ctrl 
-01b3 6a40c419 fetchr regb ,1 ,mem_spi_write_addr 
-01b4 6fe0c433 fetch 1 ,mem_adc_cal_c7 
-01b5 67e0c419 store 1 ,mem_spi_write_addr 
-01b6 df200008 arg 8 ,loopcnt 
-01b7 20406f67 call sadc_cal_write + 4 
-01b8 6240c419 storer regb ,1 ,mem_spi_write_addr 
-01b9 20600000 rtn 
+01b6 6ff080cc fetch 1 ,core_sadc_ctrl 
+01b7 79207e01 set1 1 ,pdata 
+01b8 67f080cc store 1 ,core_sadc_ctrl 
+01b9 6a40c419 fetchr regb ,1 ,mem_spi_write_addr 
+01ba 6fe0c433 fetch 1 ,mem_adc_cal_c7 
+01bb 67e0c419 store 1 ,mem_spi_write_addr 
+01bc df200008 arg 8 ,loopcnt 
+01bd 20406f67 call sadc_cal_write + 4 
+01be 6240c419 storer regb ,1 ,mem_spi_write_addr 
+01bf 20600000 rtn 
 
 p_sadc_read:
-01ba 7080cc03 jam 0x03 ,core_sadc_ctrl 
+01c0 7080cc03 jam 0x03 ,core_sadc_ctrl 
 
 p_sadc_read_wait:
-01bb 6ff08129 fetch 1 ,core_perf_status 
-01bc c30281bb bbit0 saradc_done ,p_sadc_read_wait 
-01bd 68590164 fetcht 2 ,core_sadc_data 
-01be 6049440a storet 2 ,mem_adc_current_value 
-01bf 20206f9f branch sadc_read_wait2 + 2 
+01c1 6ff08129 fetch 1 ,core_perf_status 
+01c2 c30281c1 bbit0 saradc_done ,p_sadc_read_wait 
+01c3 68590164 fetcht 2 ,core_sadc_data 
+01c4 6049440a storet 2 ,mem_adc_current_value 
+01c5 20206f9f branch sadc_read_wait2 + 2 
 
 p_set_lemode:
-01c0 708a8211 jam 0x11 ,0x8a82 
-01c1 708a8d12 jam 0x12 ,0x8a8d 
-01c2 708a8e0a jam 0x0a ,0x8a8e 
-01c3 6fe0c099 fetch 1 ,mem_fcomp_div 
-01c4 c00801d9 beq xtal_16m ,p_set_lemode_2m_16m 
-01c5 58005762 setarg 0x5762 
-01c6 67f10907 store 2 ,0x8907 
+01c6 708a8211 jam 0x11 ,0x8a82 
+01c7 708a8d12 jam 0x12 ,0x8a8d 
+01c8 708a8e0a jam 0x0a ,0x8a8e 
+01c9 6fe0c099 fetch 1 ,mem_fcomp_div 
+01ca c00801df beq xtal_16m ,p_set_lemode_2m_16m 
+01cb 58005762 setarg 0x5762 
+01cc 67f10907 store 2 ,0x8907 
 
 p_set_lemode_2m:
-01c7 70890103 jam 3 ,0x8901 
-01c8 70893003 jam 3 ,0x8930 
-01c9 c6168000 rtnmark1 mark_ble_2m 
-01ca 70890101 jam 1 ,0x8901 
-01cb 708a8207 jam 0x07 ,0x8a82 
-01cc 708a8d44 jam 0x44 ,0x8a8d 
-01cd 708a8e0a jam 0x0a ,0x8a8e 
-01ce 6fe0c099 fetch 1 ,mem_fcomp_div 
-01cf c00801d6 beq xtal_16m ,p_set_lemode_1m_16m 
-01d0 58002bb1 setarg 0x2bb1 
-01d1 67f10907 store 2 ,0x8907 
+01cd 70890103 jam 3 ,0x8901 
+01ce 70893003 jam 3 ,0x8930 
+01cf c6168000 rtnmark1 mark_ble_2m 
+01d0 70890101 jam 1 ,0x8901 
+01d1 708a8207 jam 0x07 ,0x8a82 
+01d2 708a8d44 jam 0x44 ,0x8a8d 
+01d3 708a8e0a jam 0x0a ,0x8a8e 
+01d4 6fe0c099 fetch 1 ,mem_fcomp_div 
+01d5 c00801dc beq xtal_16m ,p_set_lemode_1m_16m 
+01d6 58002bb1 setarg 0x2bb1 
+01d7 67f10907 store 2 ,0x8907 
 
 p_set_lemode_1m:
-01d2 c6978000 rtnmark0 mark_ble_lr 
-01d3 70893024 jam 0x24 ,0x8930 
-01d4 70890105 jam 5 ,0x8901 
-01d5 20600000 rtn 
+01d8 c6978000 rtnmark0 mark_ble_lr 
+01d9 70893024 jam 0x24 ,0x8930 
+01da 70890105 jam 5 ,0x8901 
+01db 20600000 rtn 
 
 p_set_lemode_1m_16m:
-01d6 58004189 setarg 0x4189 
-01d7 67f10907 store 2 ,0x8907 
-01d8 202001d2 branch p_set_lemode_1m 
+01dc 58004189 setarg 0x4189 
+01dd 67f10907 store 2 ,0x8907 
+01de 202001d8 branch p_set_lemode_1m 
 
 p_set_lemode_2m_16m:
-01d9 58008312 setarg 0x8312 
-01da 67f10907 store 2 ,0x8907 
-01db 202001c7 branch p_set_lemode_2m 
+01df 58008312 setarg 0x8312 
+01e0 67f10907 store 2 ,0x8907 
+01e1 202001cd branch p_set_lemode_2m 
 
 p_le_parse:
-01dc 6fe0c334 fetch 1 ,mem_le_packet_llid 
-01dd c1000000 rtneq llid_reserved 
-01de c001b04a beq llid_le_ll ,le_parse_ll 
-01df 202028e1 branch le_parse_l2cap 
+01e2 6fe0c334 fetch 1 ,mem_le_packet_llid 
+01e3 c1000000 rtneq llid_reserved 
+01e4 c001b04a beq llid_le_ll ,le_parse_ll 
+01e5 202028e1 branch le_parse_l2cap 
 
 p_le_init_adv:
-01e0 793f8030 set0 mark_ble_crc_fail ,mark 
-01e1 20202af6 branch le_init_adv + 1 
+01e6 793f8030 set0 mark_ble_crc_fail ,mark 
+01e7 20202af6 branch le_init_adv + 1 
 
 p_g24_bind_data_parse_next:
-01e2 6fe0c7b1 fetch 1 ,mem_24g_rxdata_temp_new + 2 
-01e3 c05501e8 beq datatype_bind ,p_g24_bind_first_step 
-01e4 c02a81ea beq datatype_config ,p_g24_bind_second_step 
-01e5 c0110200 beq datatype_ok ,p_g24_bind_third_step 
-01e6 c07f81f2 beq datatype_attemp ,p_g24_data_attemp 
-01e7 20600000 rtn 
+01e8 6fe0c7b1 fetch 1 ,mem_24g_rxdata_temp_new + 2 
+01e9 c05501ee beq datatype_bind ,p_g24_bind_first_step 
+01ea c02a81f0 beq datatype_config ,p_g24_bind_second_step 
+01eb c0110206 beq datatype_ok ,p_g24_bind_third_step 
+01ec c07f81f8 beq datatype_attemp ,p_g24_data_attemp 
+01ed 20600000 rtn 
 
 p_g24_bind_first_step:
-01e8 6fe0c7b2 fetch 1 ,mem_24g_rxdata_temp_new + 3 
-01e9 2020332a branch g24_bind_first_step + 1 
+01ee 6fe0c7b2 fetch 1 ,mem_24g_rxdata_temp_new + 3 
+01ef 2020332a branch g24_bind_first_step + 1 
 
 p_g24_bind_second_step:
-01ea 6fe0c5ae fetch 1 ,mem_24g_pair_switch 
-01eb 203a01f0 branch p_g24_bind_second_step_skip ,blank 
-01ec 6fe247b3 fetch 4 ,mem_24g_rxdata_temp_new + 4 
-01ed 684a44f1 fetcht 4 ,mem_24g_lap 
-01ee 98467c00 isub temp ,null 
-01ef 24628000 nrtn zero 
+01f0 6fe0c5ae fetch 1 ,mem_24g_pair_switch 
+01f1 203a01f6 branch p_g24_bind_second_step_skip ,blank 
+01f2 6fe247b3 fetch 4 ,mem_24g_rxdata_temp_new + 4 
+01f3 684a44f1 fetcht 4 ,mem_24g_lap 
+01f4 98467c00 isub temp ,null 
+01f5 24628000 nrtn zero 
 
 p_g24_bind_second_step_skip:
-01f0 6fe0c7b2 fetch 1 ,mem_24g_rxdata_temp_new + 3 
-01f1 20203341 branch g24_bind_second_step_skip + 1 
+01f6 6fe0c7b2 fetch 1 ,mem_24g_rxdata_temp_new + 3 
+01f7 20203341 branch g24_bind_second_step_skip + 1 
 
 p_g24_data_attemp:
-01f2 6fe0c7b2 fetch 1 ,mem_24g_rxdata_temp_new + 3 
-01f3 c00081f6 beq datatype_device1 ,p_g24_data_attemp_device1 
-01f4 c00101fb beq datatype_device2 ,p_g24_data_attemp_device2 
-01f5 20600000 rtn 
+01f8 6fe0c7b2 fetch 1 ,mem_24g_rxdata_temp_new + 3 
+01f9 c00081fc beq datatype_device1 ,p_g24_data_attemp_device1 
+01fa c0010201 beq datatype_device2 ,p_g24_data_attemp_device2 
+01fb 20600000 rtn 
 
 p_g24_data_attemp_device1:
-01f6 6fe0c5de fetch 1 ,mem_24g_device1_bind_disable 
-01f7 247a0000 nrtn blank 
-01f8 6fe247b3 fetch 4 ,mem_24g_rxdata_temp_new + 4 
-01f9 67e2462c store 4 ,mem_24g_transmitter_addr 
-01fa 202035a3 branch g24_store_device1_addr 
+01fc 6fe0c5de fetch 1 ,mem_24g_device1_bind_disable 
+01fd 247a0000 nrtn blank 
+01fe 6fe247b3 fetch 4 ,mem_24g_rxdata_temp_new + 4 
+01ff 67e2462c store 4 ,mem_24g_transmitter_addr 
+0200 202035a3 branch g24_store_device1_addr 
 
 p_g24_data_attemp_device2:
-01fb 6fe0c5df fetch 1 ,mem_24g_device2_bind_disable 
-01fc 247a0000 nrtn blank 
-01fd 6fe247b3 fetch 4 ,mem_24g_rxdata_temp_new + 4 
-01fe 67e2462c store 4 ,mem_24g_transmitter_addr 
-01ff 202035a9 branch g24_store_device2_addr 
+0201 6fe0c5df fetch 1 ,mem_24g_device2_bind_disable 
+0202 247a0000 nrtn blank 
+0203 6fe247b3 fetch 4 ,mem_24g_rxdata_temp_new + 4 
+0204 67e2462c store 4 ,mem_24g_transmitter_addr 
+0205 202035a9 branch g24_store_device2_addr 
 
 p_g24_bind_third_step:
-0200 6fe0c5ae fetch 1 ,mem_24g_pair_switch 
-0201 203a0206 branch p_g24_bind_third_step_skip ,blank 
-0202 6fe247b3 fetch 4 ,mem_24g_rxdata_temp_new + 4 
-0203 684a462c fetcht 4 ,mem_24g_transmitter_addr 
-0204 98467c00 isub temp ,null 
-0205 24628000 nrtn zero 
+0206 6fe0c5ae fetch 1 ,mem_24g_pair_switch 
+0207 203a020c branch p_g24_bind_third_step_skip ,blank 
+0208 6fe247b3 fetch 4 ,mem_24g_rxdata_temp_new + 4 
+0209 684a462c fetcht 4 ,mem_24g_transmitter_addr 
+020a 98467c00 isub temp ,null 
+020b 24628000 nrtn zero 
 
 p_g24_bind_third_step_skip:
-0206 6fe0c7b2 fetch 1 ,mem_24g_rxdata_temp_new + 3 
-0207 c000820a beq datatype_device1 ,p_g24_bind_third_step_device1 
-0208 c0010212 beq datatype_device2 ,p_g24_bind_third_step_device2 
-0209 20600000 rtn 
+020c 6fe0c7b2 fetch 1 ,mem_24g_rxdata_temp_new + 3 
+020d c0008210 beq datatype_device1 ,p_g24_bind_third_step_device1 
+020e c0010218 beq datatype_device2 ,p_g24_bind_third_step_device2 
+020f 20600000 rtn 
 
 p_g24_bind_third_step_device1:
-020a 6fe0c5de fetch 1 ,mem_24g_device1_bind_disable 
-020b 247a0000 nrtn blank 
-020c 6fe0c5d3 fetch 1 ,mem_24g_device1_bind_step 
-020d c001020f beq 2 ,p_g24_bind_dvc1_step_success 
-020e 20600000 rtn 
+0210 6fe0c5de fetch 1 ,mem_24g_device1_bind_disable 
+0211 247a0000 nrtn blank 
+0212 6fe0c5d3 fetch 1 ,mem_24g_device1_bind_step 
+0213 c0010215 beq 2 ,p_g24_bind_dvc1_step_success 
+0214 20600000 rtn 
 
 p_g24_bind_dvc1_step_success:
-020f 7045de01 jam 1 ,mem_24g_device1_bind_disable 
-0210 2040338d call g24_binding_dvc1_living 
-0211 2020336b branch g24_bind_dvc1_step_success + 1 
+0215 7045de01 jam 1 ,mem_24g_device1_bind_disable 
+0216 2040338d call g24_binding_dvc1_living 
+0217 2020336b branch g24_bind_dvc1_step_success + 1 
 
 p_g24_bind_third_step_device2:
-0212 6fe0c5df fetch 1 ,mem_24g_device2_bind_disable 
-0213 247a0000 nrtn blank 
-0214 6fe0c5d4 fetch 1 ,mem_24g_device2_bind_step 
-0215 c0800217 bne 0 ,p_g24_bind_dvc2_step_success 
-0216 20600000 rtn 
+0218 6fe0c5df fetch 1 ,mem_24g_device2_bind_disable 
+0219 247a0000 nrtn blank 
+021a 6fe0c5d4 fetch 1 ,mem_24g_device2_bind_step 
+021b c080021d bne 0 ,p_g24_bind_dvc2_step_success 
+021c 20600000 rtn 
 
 p_g24_bind_dvc2_step_success:
-0217 7045df01 jam 1 ,mem_24g_device2_bind_disable 
-0218 20403393 call g24_binding_dvc2_living 
-0219 20203378 branch g24_bind_dvc2_step_success + 1 
+021d 7045df01 jam 1 ,mem_24g_device2_bind_disable 
+021e 20403393 call g24_binding_dvc2_living 
+021f 20203378 branch g24_bind_dvc2_step_success + 1 
 
 p_g24_mode_switch_bind_search:
-021a 6fe0c616 fetch 1 ,mem_24g_work_mode 
-021b c1000000 rtneq dongle_work 
-021c 6fe0c62a fetch 1 ,mem_24g_b_s_mode_switch_disable 
-021d 247a0000 nrtn blank 
-021e 6fe0c628 fetch 1 ,mem_24g_mode_b_s_switch_exit 
-021f 247a0000 nrtn blank 
-0220 6fe0c624 fetch 1 ,mem_24g_mode_b_s_switch 
-0221 207a0000 rtn blank 
-0222 6fe0c5d3 fetch 1 ,mem_24g_device1_bind_step 
-0223 c1800000 rtnne 0 
-0224 6fe0c5d4 fetch 1 ,mem_24g_device2_bind_step 
-0225 c1800000 rtnne 0 
-0226 20203436 branch g24_mode_switch_bind_search + 9 
+0220 6fe0c616 fetch 1 ,mem_24g_work_mode 
+0221 c1000000 rtneq dongle_work 
+0222 6fe0c62a fetch 1 ,mem_24g_b_s_mode_switch_disable 
+0223 247a0000 nrtn blank 
+0224 6fe0c628 fetch 1 ,mem_24g_mode_b_s_switch_exit 
+0225 247a0000 nrtn blank 
+0226 6fe0c624 fetch 1 ,mem_24g_mode_b_s_switch 
+0227 207a0000 rtn blank 
+0228 6fe0c5d3 fetch 1 ,mem_24g_device1_bind_step 
+0229 c1800000 rtnne 0 
+022a 6fe0c5d4 fetch 1 ,mem_24g_device2_bind_step 
+022b c1800000 rtnne 0 
+022c 20203436 branch g24_mode_switch_bind_search + 9 
 
 p_g24_bind_mode_auto:
-0227 6fe0c616 fetch 1 ,mem_24g_work_mode 
-0228 c1808000 rtnne dongle_bind 
-0229 2040022b call p_g24_bind_init 
-022a 2020346d branch g24_bind_mode_auto + 4 
+022d 6fe0c616 fetch 1 ,mem_24g_work_mode 
+022e c1808000 rtnne dongle_bind 
+022f 20400231 call p_g24_bind_init 
+0230 2020346d branch g24_bind_mode_auto + 4 
 
 p_g24_bind_init:
-022b 6fe0c615 fetch 1 ,mem_24g_mode_init 
-022c c3808000 rtnbit1 dongle_bind 
-022d 79207e01 set1 dongle_bind ,pdata 
-022e 67e0c615 store 1 ,mem_24g_mode_init 
-022f 58000000 setarg 0 
-0230 67e1c5d3 store 3 ,mem_24g_device1_bind_step 
-0231 20203307 branch g24_bind_init + 8 
+0231 6fe0c615 fetch 1 ,mem_24g_mode_init 
+0232 c3808000 rtnbit1 dongle_bind 
+0233 79207e01 set1 dongle_bind ,pdata 
+0234 67e0c615 store 1 ,mem_24g_mode_init 
+0235 58000000 setarg 0 
+0236 67e1c5d3 store 3 ,mem_24g_device1_bind_step 
+0237 20203307 branch g24_bind_init + 8 
 
 p_dongle_usb_dispatch:
-0232 20200361 branch p_dongle_usb_dispatch_analysis 
+0238 20200370 branch p_dongle_usb_dispatch_analysis 
 
 p_wdt_kick:
-0233 58000010 setarg 16 
-0234 202070c8 branch wdt_init_config 
+0239 58000010 setarg 16 
+023a 202070c8 branch wdt_init_config 
 
 p_dongle_default_init:
-0235 204047c3 call dongle_default_init + 1 
-0236 6fe0c695 fetch 1 ,mem_24g_pair_tx_power_init 
-0237 67e0c5d1 store 1 ,mem_24g_pair_tx_power 
-0238 7045ca01 jam on ,mem_24g_disable_fec1 
-0239 20403281 call g24_enable_1m 
-023a 6fe0c669 fetch 1 ,mem_dg_sys_config 
-023b c4000000 rtnbit0 dg_enable_new_revision 
-023c 7045ca01 jam on ,mem_24g_disable_fec1 
-023d 20203284 branch g24_enable_2m 
+023b 204047c3 call dongle_default_init + 1 
+023c 6fe0c695 fetch 1 ,mem_24g_pair_tx_power_init 
+023d 67e0c5d1 store 1 ,mem_24g_pair_tx_power 
+023e 7045ca01 jam on ,mem_24g_disable_fec1 
+023f 20403281 call g24_enable_1m 
+0240 6fe0c669 fetch 1 ,mem_dg_sys_config 
+0241 c4000000 rtnbit0 dg_enable_new_revision 
+0242 7045ca01 jam on ,mem_24g_disable_fec1 
+0243 20203284 branch g24_enable_2m 
 
 p_g24_receive_skip_end:
-023e 6fe0c669 fetch 1 ,mem_dg_sys_config 
-023f c3003165 bbit0 dg_enable_new_revision ,g24_receive_skip_end + 1 
-0240 7837fc00 enable user3 
-0241 20000018 nop 24 
-0242 6fe0c6dd fetch 1 ,mem_24g_txbuf_new 
-0243 79207e00 set1 bit_ack_24g ,pdata 
-0244 67e0c6dd store 1 ,mem_24g_txbuf_new 
-0245 204033a5 call g24_ackpayload_prep 
-0246 204031e5 call g24_transmit_prep 
-0247 20203195 branch g24_transmit 
+0244 6fe0c669 fetch 1 ,mem_dg_sys_config 
+0245 c3003165 bbit0 dg_enable_new_revision ,g24_receive_skip_end + 1 
+0246 7837fc00 enable user3 
+0247 20000018 nop 24 
+0248 6fe0c6dd fetch 1 ,mem_24g_txbuf_new 
+0249 79207e00 set1 bit_ack_24g ,pdata 
+024a 67e0c6dd store 1 ,mem_24g_txbuf_new 
+024b 204033a5 call g24_ackpayload_prep 
+024c 204031e5 call g24_transmit_prep 
+024d 20203195 branch g24_transmit 
 
 p_app_init:
-0248 5800033f setarg p_dongle_dispatch 
-0249 67e145e0 store 2 ,mem_cb_24g_receive_process 
-024a 580003b0 setarg p_dongle_g24_mouse 
-024b 67e145e4 store 2 ,mem_cb_24g_data_device1 
-024c 580003f4 setarg p_dongle_g24_kb 
-024d 67e145e6 store 2 ,mem_cb_24g_data_device2 
-024e 58000253 setarg p_dongle_ackpayload_prep 
-024f 67e145e2 store 2 ,mem_cb_24g_ackpayload 
-0250 580047f9 setarg dongle_usb_config 
-0251 67e10859 store 2 ,mem_cb_usb_config 
-0252 20207912 branch usb_init 
+024e 5800034e setarg p_dongle_dispatch 
+024f 67e145e0 store 2 ,mem_cb_24g_receive_process 
+0250 580003c1 setarg p_dongle_g24_mouse 
+0251 67e145e4 store 2 ,mem_cb_24g_data_device1 
+0252 58000405 setarg p_dongle_g24_kb 
+0253 67e145e6 store 2 ,mem_cb_24g_data_device2 
+0254 58000259 setarg p_dongle_ackpayload_prep 
+0255 67e145e2 store 2 ,mem_cb_24g_ackpayload 
+0256 580047f9 setarg dongle_usb_config 
+0257 67e10859 store 2 ,mem_cb_usb_config 
+0258 20207912 branch usb_init 
 
 p_dongle_ackpayload_prep:
-0253 6fe0c589 fetch 1 ,mem_24g_data_type 
-0254 c0008256 beq datatype_device1 ,p_dongle_ackpayload_prep_mouse 
-0255 c0010259 beq datatype_device2 ,p_dongle_ackpayload_prep_keyboard 
+0259 6fe0c589 fetch 1 ,mem_24g_data_type 
+025a c000825c beq datatype_device1 ,p_dongle_ackpayload_prep_mouse 
+025b c001025f beq datatype_device2 ,p_dongle_ackpayload_prep_keyboard 
 
 p_dongle_ackpayload_prep_mouse:
-0256 6fe0c693 fetch 1 ,mem_dg_pc_sleep_flag 
-0257 c2800277 bbit1 0 ,p_dongle_pc_sleep_ackpayload_prep_mouse 
-0258 2020025b branch p_dongle_ackpayload_prep_end 
+025c 6fe0c693 fetch 1 ,mem_dg_pc_sleep_flag 
+025d c2800286 bbit1 0 ,p_dongle_pc_sleep_ackpayload_prep_mouse 
+025e 20200261 branch p_dongle_ackpayload_prep_end 
 
 p_dongle_ackpayload_prep_keyboard:
-0259 6fe0c693 fetch 1 ,mem_dg_pc_sleep_flag 
-025a c280827b bbit1 1 ,p_dongle_pc_sleep_ackpayload_prep_keyboard 
+025f 6fe0c693 fetch 1 ,mem_dg_pc_sleep_flag 
+0260 c280828a bbit1 1 ,p_dongle_pc_sleep_ackpayload_prep_keyboard 
 
 p_dongle_ackpayload_prep_end:
-025b 6fe0c611 fetch 1 ,mem_24g_ackpayload_enable 
-025c c000825f beq bind_ackpayload ,p_dongle_g24_bind_ackpayload_prep 
-025d c001826f beq kb_led_ackpayload ,p_dongle_g24_kb_led_ackpayload_prep 
-025e 20600000 rtn 
+0261 6fe0c611 fetch 1 ,mem_24g_ackpayload_enable 
+0262 c0008266 beq bind_ackpayload ,p_dongle_g24_bind_ackpayload_prep 
+0263 c0018276 beq kb_led_ackpayload ,p_dongle_g24_kb_led_ackpayload_prep 
+0264 c004027e beq protocol_ackpayload ,p_dongle_g24_protocol_ackpayload_prep 
+0265 20600000 rtn 
 
 p_dongle_g24_bind_ackpayload_prep:
-025f 70461101 jam 1 ,mem_24g_ackpayload_enable 
-0260 20400267 call p_g24_binding_device_check 
-0261 24778000 nrtn user3 
+0266 70461101 jam 1 ,mem_24g_ackpayload_enable 
+0267 2040026e call p_g24_binding_device_check 
+0268 24778000 nrtn user3 
 
 p_g24_bind_ackpayload_prep:
-0262 70461101 jam 1 ,mem_24g_ackpayload_enable 
-0263 70458808 jam 0x08 ,mem_24g_datalen 
-0264 d8c045d6 arg mem_24g_bind_payload ,contr 
-0265 d8a046dd arg mem_24g_txbuf_new ,contw 
-0266 20207c89 branch memcpy8 
+0269 70461101 jam 1 ,mem_24g_ackpayload_enable 
+026a 70458808 jam 0x08 ,mem_24g_datalen 
+026b d8c045d6 arg mem_24g_bind_payload ,contr 
+026c d8a046dd arg mem_24g_txbuf_new ,contw 
+026d 20207c89 branch memcpy8 
 
 p_g24_binding_device_check:
-0267 6fe0c616 fetch 1 ,mem_24g_work_mode 
-0268 c1808000 rtnne dongle_bind 
-0269 6fe0c610 fetch 1 ,mem_24g_pair_mode 
-026a 247a0000 nrtn blank 
-026b 6fe0c69a fetch 1 ,mem_24g_rxbuf_new + 3 
-026c c000b386 beq datatype_device1 ,g24_binding_dvc1_status 
-026d c001338a beq datatype_device2 ,g24_binding_dvc2_status 
-026e 20600000 rtn 
+026e 6fe0c616 fetch 1 ,mem_24g_work_mode 
+026f c1808000 rtnne dongle_bind 
+0270 6fe0c610 fetch 1 ,mem_24g_pair_mode 
+0271 247a0000 nrtn blank 
+0272 6fe0c69a fetch 1 ,mem_24g_rxbuf_new + 3 
+0273 c000b386 beq datatype_device1 ,g24_binding_dvc1_status 
+0274 c001338a beq datatype_device2 ,g24_binding_dvc2_status 
+0275 20600000 rtn 
 
 p_dongle_g24_kb_led_ackpayload_prep:
-026f 6fe0c699 fetch 1 ,mem_24g_rxbuf_new + 2 
-0270 c000825f beq datatype_device1 ,p_dongle_g24_bind_ackpayload_prep 
-0271 c07f825f beq datatype_attemp ,p_dongle_g24_bind_ackpayload_prep 
-0272 7008f900 jam 0 ,mem_usb_tx_win_enable 
-0273 70458801 jam 0x01 ,mem_24g_datalen 
-0274 6fe0c621 fetch 1 ,mem_24g_led_status 
+0276 6fe0c699 fetch 1 ,mem_24g_rxbuf_new + 2 
+0277 c0008266 beq datatype_device1 ,p_dongle_g24_bind_ackpayload_prep 
+0278 c07f8266 beq datatype_attemp ,p_dongle_g24_bind_ackpayload_prep 
+0279 7008f900 jam 0 ,mem_usb_tx_win_enable 
+027a 70458801 jam 0x01 ,mem_24g_datalen 
+027b 6fe0c621 fetch 1 ,mem_24g_led_status 
 
 p_dongle_g24_txbuf_store:
-0275 67e0c6dd store 1 ,mem_24g_txbuf_new 
-0276 20600000 rtn 
+027c 67e0c6dd store 1 ,mem_24g_txbuf_new 
+027d 20600000 rtn 
+
+p_dongle_g24_protocol_ackpayload_prep:
+027e 6fe0ca4d fetch 1 ,mem_24g_device_type 
+027f c0028282 beq ms_type ,p_dongle_g24_protocol_ms_ackpayload_prep 
+0280 c0050284 beq kb_type ,p_dongle_g24_protocol_kb_ackpayload_prep 
+0281 20600000 rtn 
+
+p_dongle_g24_protocol_ms_ackpayload_prep:
+0282 70458901 jam type_ms ,mem_24g_data_type 
+0283 20600000 rtn 
+
+p_dongle_g24_protocol_kb_ackpayload_prep:
+0284 70458902 jam type_kb ,mem_24g_data_type 
+0285 20600000 rtn 
 
 p_dongle_pc_sleep_ackpayload_prep_mouse:
-0277 6fe0c693 fetch 1 ,mem_dg_pc_sleep_flag 
-0278 793ffe00 set0 0 ,pdata 
-0279 67e0c693 store 1 ,mem_dg_pc_sleep_flag 
-027a 2020027e branch p_dongle_pc_sleep_ackpayload_prep 
+0286 6fe0c693 fetch 1 ,mem_dg_pc_sleep_flag 
+0287 793ffe00 set0 0 ,pdata 
+0288 67e0c693 store 1 ,mem_dg_pc_sleep_flag 
+0289 2020028d branch p_dongle_pc_sleep_ackpayload_prep 
 
 p_dongle_pc_sleep_ackpayload_prep_keyboard:
-027b 6fe0c693 fetch 1 ,mem_dg_pc_sleep_flag 
-027c 793ffe01 set0 1 ,pdata 
-027d 67e0c693 store 1 ,mem_dg_pc_sleep_flag 
+028a 6fe0c693 fetch 1 ,mem_dg_pc_sleep_flag 
+028b 793ffe01 set0 1 ,pdata 
+028c 67e0c693 store 1 ,mem_dg_pc_sleep_flag 
 
 p_dongle_pc_sleep_ackpayload_prep:
-027e 70458801 jam 0x01 ,mem_24g_datalen 
-027f 580000ff setarg 0xff 
-0280 20200275 branch p_dongle_g24_txbuf_store 
+028d 70458801 jam 0x01 ,mem_24g_datalen 
+028e 580000ff setarg 0xff 
+028f 2020027c branch p_dongle_g24_txbuf_store 
 
 p_dongle_work_mode_auto:
-0281 6fe0c616 fetch 1 ,mem_24g_work_mode 
-0282 c1800000 rtnne dongle_work 
-0283 20400295 call p_g24_work_mode_start 
-0284 20404827 call dongle_g24_blank_data_process 
-0285 6fe0c610 fetch 1 ,mem_24g_pair_mode 
-0286 247a0000 nrtn blank 
-0287 6fe0c611 fetch 1 ,mem_24g_ackpayload_enable 
-0288 c1800000 rtnne 0 
-0289 6fe0c614 fetch 1 ,mem_24g_nodata_timer_enable 
-028a 207a0000 rtn blank 
-028b d8e00008 arg g24_timer_nodata ,queue 
-028c 20407cef call timer_check 
-028d 247a0000 nrtn blank 
-028e 2040351b call g24_ch_process + 3 
-028f 20203511 branch g24_nodata_timer_over 
+0290 6fe0c616 fetch 1 ,mem_24g_work_mode 
+0291 c1800000 rtnne dongle_work 
+0292 204002a4 call p_g24_work_mode_start 
+0293 20404827 call dongle_g24_blank_data_process 
+0294 6fe0c610 fetch 1 ,mem_24g_pair_mode 
+0295 247a0000 nrtn blank 
+0296 6fe0c611 fetch 1 ,mem_24g_ackpayload_enable 
+0297 c1800000 rtnne 0 
+0298 6fe0c614 fetch 1 ,mem_24g_nodata_timer_enable 
+0299 207a0000 rtn blank 
+029a d8e00008 arg g24_timer_nodata ,queue 
+029b 20407cef call timer_check 
+029c 247a0000 nrtn blank 
+029d 2040351b call g24_ch_process + 3 
+029e 20203511 branch g24_nodata_timer_over 
 
 p_g24_ch_process:
-0290 6fe0c60a fetch 1 ,mem_24g_abort_packet 
-0291 c000b5ea beq 1 ,rssi_noise_monitor 
-0292 6fe0c612 fetch 1 ,mem_24g_hop_packet 
-0293 c000b52c beq 1 ,g24_ch_receive_hop_pac 
-0294 20600000 rtn 
+029f 6fe0c60a fetch 1 ,mem_24g_abort_packet 
+02a0 c000b5ea beq 1 ,rssi_noise_monitor 
+02a1 6fe0c612 fetch 1 ,mem_24g_hop_packet 
+02a2 c000b52c beq 1 ,g24_ch_receive_hop_pac 
+02a3 20600000 rtn 
 
 p_g24_work_mode_start:
-0295 6fe0c616 fetch 1 ,mem_24g_work_mode 
-0296 c1800000 rtnne dongle_work 
-0297 20403451 call g24_work_init 
-0298 20400290 call p_g24_ch_process 
+02a4 6fe0c616 fetch 1 ,mem_24g_work_mode 
+02a5 c1800000 rtnne dongle_work 
+02a6 20403451 call g24_work_init 
+02a7 2040029f call p_g24_ch_process 
 
 p_g24_receive_packet_start:
-0299 204002d1 call p_g24_receive_transmit_ack 
-029a 2437b3be nbranch g24_rx_interrupt_clear ,user3 
+02a8 204002e0 call p_g24_receive_transmit_ack 
+02a9 2437b3be nbranch g24_rx_interrupt_clear ,user3 
 
 p_g24_receive_packet_parse:
-029b 204033e3 call g24_receive_packet_parse_pid_crc 
-029c 243433be nbranch g24_rx_interrupt_clear ,user 
-029d 6fe0c57d fetch 1 ,mem_24g_rxdata_length 
-029e 203a33be branch g24_rx_interrupt_clear ,blank 
-029f 1fe0fe02 increase 2 ,pdata 
-02a0 98007200 iforce loopcnt 
-02a1 d8c04697 arg mem_24g_rxbuf_new ,contr 
-02a2 d8a047af arg mem_24g_rxdata_temp_new ,contw 
-02a3 20407cda call memcpy 
-02a4 70461300 jam 0 ,mem_24g_mode_switch 
-02a5 6fe0c610 fetch 1 ,mem_24g_pair_mode 
-02a6 205a02ad call p_g24_enable_nodata_timer ,blank 
+02aa 204033e3 call g24_receive_packet_parse_pid_crc 
+02ab 243433be nbranch g24_rx_interrupt_clear ,user 
+02ac 6fe0c57d fetch 1 ,mem_24g_rxdata_length 
+02ad 203a33be branch g24_rx_interrupt_clear ,blank 
+02ae 1fe0fe02 increase 2 ,pdata 
+02af 98007200 iforce loopcnt 
+02b0 d8c04697 arg mem_24g_rxbuf_new ,contr 
+02b1 d8a047af arg mem_24g_rxdata_temp_new ,contw 
+02b2 20407cda call memcpy 
+02b3 70461300 jam 0 ,mem_24g_mode_switch 
+02b4 6fe0c610 fetch 1 ,mem_24g_pair_mode 
+02b5 205a02bc call p_g24_enable_nodata_timer ,blank 
 
 p_g24_receive_packet_parse_end:
-02a7 6fe0c7b1 fetch 1 ,mem_24g_rxdata_temp_new + 2 
-02a8 c07f82cb beq datatype_attemp ,p_g24_data_receive_attemp 
-02a9 1fe17e03 and pdata ,0x03 ,pdata 
-02aa c00082b3 beq datatype_device1 ,p_g24_data_device1 
-02ab c00102c5 beq datatype_device2 ,p_g24_data_device2 
-02ac 202033be branch g24_rx_interrupt_clear 
+02b6 6fe0c7b1 fetch 1 ,mem_24g_rxdata_temp_new + 2 
+02b7 c07f82da beq datatype_attemp ,p_g24_data_receive_attemp 
+02b8 1fe17e03 and pdata ,0x03 ,pdata 
+02b9 c00082c2 beq datatype_device1 ,p_g24_data_device1 
+02ba c00102d4 beq datatype_device2 ,p_g24_data_device2 
+02bb 202033be branch g24_rx_interrupt_clear 
 
 p_g24_enable_nodata_timer:
-02ad 6fe0c62b fetch 1 ,mem_24g_bind_device_living 
-02ae 203a33fe branch g24_enable_nodata_timer ,blank 
-02af 70461401 jam 1 ,mem_24g_nodata_timer_enable 
-02b0 58000640 setarg 1600 
-02b1 d8e00008 arg g24_timer_nodata ,queue 
-02b2 20207ce1 branch timer_init 
+02bc 6fe0c62b fetch 1 ,mem_24g_bind_device_living 
+02bd 203a33fe branch g24_enable_nodata_timer ,blank 
+02be 70461401 jam 1 ,mem_24g_nodata_timer_enable 
+02bf 58000640 setarg 1600 
+02c0 d8e00008 arg g24_timer_nodata ,queue 
+02c1 20207ce1 branch timer_init 
 
 p_g24_data_device1:
-02b3 2040338d call g24_binding_dvc1_living 
-02b4 2040352e call g24_ch_timer_reinit 
-02b5 6fe0c60a fetch 1 ,mem_24g_abort_packet 
-02b6 6848c7af fetcht 1 ,mem_24g_rxdata_temp_new 
-02b7 284ffe03 isolate1 bit_abort ,temp 
-02b8 7920fe00 setflag true ,0 ,pdata 
-02b9 67e0c60a store 1 ,mem_24g_abort_packet 
-02ba c00082be beq 1 ,p_g24_data_attemp_device1_abort 
-02bb 6fe0c612 fetch 1 ,mem_24g_hop_packet 
-02bc 6848c7af fetcht 1 ,mem_24g_rxdata_temp_new 
-02bd 202033ce branch g24_data_device1_next 
+02c2 2040338d call g24_binding_dvc1_living 
+02c3 2040352e call g24_ch_timer_reinit 
+02c4 6fe0c60a fetch 1 ,mem_24g_abort_packet 
+02c5 6848c7af fetcht 1 ,mem_24g_rxdata_temp_new 
+02c6 284ffe03 isolate1 bit_abort ,temp 
+02c7 7920fe00 setflag true ,0 ,pdata 
+02c8 67e0c60a store 1 ,mem_24g_abort_packet 
+02c9 c00082cd beq 1 ,p_g24_data_attemp_device1_abort 
+02ca 6fe0c612 fetch 1 ,mem_24g_hop_packet 
+02cb 6848c7af fetcht 1 ,mem_24g_rxdata_temp_new 
+02cc 202033ce branch g24_data_device1_next 
 
 p_g24_data_attemp_device1_abort:
-02be 6fe0c5de fetch 1 ,mem_24g_device1_bind_disable 
-02bf 247a0000 nrtn blank 
-02c0 7045de01 jam 1 ,mem_24g_device1_bind_disable 
-02c1 6fe247b9 fetch 4 ,mem_24g_rxdata_temp_new + 10 
-02c2 202035a3 branch g24_store_device1_addr 
+02cd 6fe0c5de fetch 1 ,mem_24g_device1_bind_disable 
+02ce 247a0000 nrtn blank 
+02cf 7045de01 jam 1 ,mem_24g_device1_bind_disable 
+02d0 6fe247b9 fetch 4 ,mem_24g_rxdata_temp_new + 10 
+02d1 202035a3 branch g24_store_device1_addr 
 
 p_g24_data_attemp_device2_abort:
-02c3 6fe247b9 fetch 4 ,mem_24g_rxdata_temp_new + 10 
-02c4 202035a9 branch g24_store_device2_addr 
+02d2 6fe247b9 fetch 4 ,mem_24g_rxdata_temp_new + 10 
+02d3 202035a9 branch g24_store_device2_addr 
 
 p_g24_data_device2:
-02c5 20403393 call g24_binding_dvc2_living 
-02c6 6848c7af fetcht 1 ,mem_24g_rxdata_temp_new 
-02c7 284ffe03 isolate1 bit_abort ,temp 
-02c8 202082c3 branch p_g24_data_attemp_device2_abort ,true 
-02c9 6fe145e6 fetch 2 ,mem_cb_24g_data_device2 
-02ca 20207d79 branch callback_func 
+02d4 20403393 call g24_binding_dvc2_living 
+02d5 6848c7af fetcht 1 ,mem_24g_rxdata_temp_new 
+02d6 284ffe03 isolate1 bit_abort ,temp 
+02d7 202082d2 branch p_g24_data_attemp_device2_abort ,true 
+02d8 6fe145e6 fetch 2 ,mem_cb_24g_data_device2 
+02d9 20207d79 branch callback_func 
 
 p_g24_data_receive_attemp:
-02cb 204002cf call p_g24_bind_device_status 
-02cc 202001f2 branch p_g24_data_attemp 
+02da 204002de call p_g24_bind_device_status 
+02db 202001f8 branch p_g24_data_attemp 
 
 p_g24_bind_device_status_check:
-02cd 6fe0c5d5 fetch 1 ,mem_24g_bind_device_status 
-02ce 207a0000 rtn blank 
+02dc 6fe0c5d5 fetch 1 ,mem_24g_bind_device_status 
+02dd 207a0000 rtn blank 
 
 p_g24_bind_device_status:
-02cf 6fe0c7b2 fetch 1 ,mem_24g_rxdata_temp_new + 3 
-02d0 2020339c branch g24_bind_device_status + 1 
+02de 6fe0c7b2 fetch 1 ,mem_24g_rxdata_temp_new + 3 
+02df 2020339c branch g24_bind_device_status + 1 
 
 p_g24_receive_transmit_ack:
-02d1 204033be call g24_rx_interrupt_clear 
-02d2 20403119 call g24_receive_packet 
-02d3 24778000 nrtn user3 
+02e0 204033be call g24_rx_interrupt_clear 
+02e1 20403119 call g24_receive_packet 
+02e2 24778000 nrtn user3 
 
 p_g24_transmit_ack:
-02d4 6fe0c697 fetch 1 ,mem_24g_rxbuf_new 
-02d5 1fe97e00 rshift3 pdata ,pdata 
-02d6 67e0c589 store 1 ,mem_24g_data_type 
-02d7 204002fc call p_g24_read_len_pid_crc 
-02d8 6fe0c7f5 fetch 1 ,mem_24g_rxdata_ack_flag 
-02d9 2feffe00 isolate1 bit_ack_24g ,pdata 
-02da 2020b3fd branch g24tx_no_ack ,true 
-02db 202033fa branch g24tx_with_ack 
+02e3 6fe0c697 fetch 1 ,mem_24g_rxbuf_new 
+02e4 1fe97e00 rshift3 pdata ,pdata 
+02e5 67e0c589 store 1 ,mem_24g_data_type 
+02e6 2040030b call p_g24_read_len_pid_crc 
+02e7 6fe0c7f5 fetch 1 ,mem_24g_rxdata_ack_flag 
+02e8 2feffe00 isolate1 bit_ack_24g ,pdata 
+02e9 2020b3fd branch g24tx_no_ack ,true 
+02ea 202033fa branch g24tx_with_ack 
 
 p_g24_bind_data_process:
-02dc 204033be call g24_rx_interrupt_clear 
-02dd 20403119 call g24_receive_packet 
-02de 2437b3be nbranch g24_rx_interrupt_clear ,user3 
-02df 204002e8 call p_g24_bind_data_parse 
-02e0 204002d4 call p_g24_transmit_ack 
-02e1 204002cd call p_g24_bind_device_status_check 
-02e2 2040493d call dongle_kb_bind_soft_reset 
-02e3 6fe0c5ae fetch 1 ,mem_24g_pair_switch 
-02e4 207a0000 rtn blank 
-02e5 6fe2462c fetch 4 ,mem_24g_transmitter_addr 
-02e6 207a0000 rtn blank 
-02e7 20203236 branch g24_update_addr_and_synccrc8 
+02eb 204033be call g24_rx_interrupt_clear 
+02ec 20403119 call g24_receive_packet 
+02ed 2437b3be nbranch g24_rx_interrupt_clear ,user3 
+02ee 204002f7 call p_g24_bind_data_parse 
+02ef 204002e3 call p_g24_transmit_ack 
+02f0 204002dc call p_g24_bind_device_status_check 
+02f1 2040493d call dongle_kb_bind_soft_reset 
+02f2 6fe0c5ae fetch 1 ,mem_24g_pair_switch 
+02f3 207a0000 rtn blank 
+02f4 6fe2462c fetch 4 ,mem_24g_transmitter_addr 
+02f5 207a0000 rtn blank 
+02f6 20203236 branch g24_update_addr_and_synccrc8 
 
 p_g24_bind_data_parse:
-02e8 70462205 jam bind_mode_continue ,mem_24g_bind_mode_continue 
-02e9 d8c04697 arg mem_24g_rxbuf_new ,contr 
-02ea d8a047af arg mem_24g_rxdata_temp_new ,contw 
-02eb 20407c89 call memcpy8 
-02ec 20203322 branch g24_bind_data_parse_next 
+02f7 70462205 jam bind_mode_continue ,mem_24g_bind_mode_continue 
+02f8 d8c04697 arg mem_24g_rxbuf_new ,contr 
+02f9 d8a047af arg mem_24g_rxdata_temp_new ,contw 
+02fa 20407c89 call memcpy8 
+02fb 20203322 branch g24_bind_data_parse_next 
 
 p_g24_receive_update_rxbuff:
-02ed 2040317d call g24_receive_byte 
-02ee 67e0c697 store 1 ,mem_24g_rxbuf_new 
-02ef c51382f5 bmark1 mark_24g_rxmode ,p_g24_receive_skip 
-02f0 6fe0c697 fetch 1 ,mem_24g_rxbuf_new 
-02f1 1fe97e00 rshift3 pdata ,pdata 
-02f2 6848c589 fetcht 1 ,mem_24g_data_type 
-02f3 a8400e00 icompare bits_data ,temp 
-02f4 2420b18c nbranch g24_type_error ,true 
+02fc 2040317d call g24_receive_byte 
+02fd 67e0c697 store 1 ,mem_24g_rxbuf_new 
+02fe c5138304 bmark1 mark_24g_rxmode ,p_g24_receive_skip 
+02ff 6fe0c697 fetch 1 ,mem_24g_rxbuf_new 
+0300 1fe97e00 rshift3 pdata ,pdata 
+0301 6848c589 fetcht 1 ,mem_24g_data_type 
+0302 a8400e00 icompare bits_data ,temp 
+0303 2420b18c nbranch g24_type_error ,true 
 
 p_g24_receive_skip:
-02f5 2040317d call g24_receive_byte 
-02f6 e7e08005 istore 1 ,contw 
-02f7 1fe67c44 sub pdata ,68 ,null 
-02f8 2421318e nbranch g24_len_over_error ,positive 
-02f9 1fe27200 copy pdata ,loopcnt 
-02fa 2022b154 branch g24rx_nopayload ,zero 
-02fb 20203151 branch g24rx_loop 
+0304 2040317d call g24_receive_byte 
+0305 e7e08005 istore 1 ,contw 
+0306 1fe67c44 sub pdata ,68 ,null 
+0307 2421318e nbranch g24_len_over_error ,positive 
+0308 1fe27200 copy pdata ,loopcnt 
+0309 2022b154 branch g24rx_nopayload ,zero 
+030a 20203151 branch g24rx_loop 
 
 p_g24_read_len_pid_crc:
-02fc 6fe0c698 fetch 1 ,mem_24g_rxbuf_new + 1 
-02fd 67e0c57d store 1 ,mem_24g_rxdata_length 
-02fe 1fe0fe01 increase 1 ,pdata 
-02ff d8c04698 arg mem_24g_rxbuf_new + 1 ,contr 
-0300 98c08c00 iadd contr ,contr 
-0301 efe18006 ifetch 3 ,contr 
-0302 67e1c580 store 3 ,mem_24g_sta_crc 
-0303 6fe0c697 fetch 1 ,mem_24g_rxbuf_new 
-0304 1fe10401 and pdata ,0x01 ,temp 
-0305 6048c7f5 storet 1 ,mem_24g_rxdata_ack_flag 
-0306 1fe30400 rshift pdata ,temp 
-0307 18410403 and temp ,0x03 ,temp 
-0308 6048c586 storet 1 ,mem_24g_sta_pid 
-0309 1fe97e00 rshift3 pdata ,pdata 
-030a 67e0c697 store 1 ,mem_24g_rxbuf_new 
-030b 20600000 rtn 
+030b 6fe0c698 fetch 1 ,mem_24g_rxbuf_new + 1 
+030c 67e0c57d store 1 ,mem_24g_rxdata_length 
+030d 1fe0fe01 increase 1 ,pdata 
+030e d8c04698 arg mem_24g_rxbuf_new + 1 ,contr 
+030f 98c08c00 iadd contr ,contr 
+0310 efe18006 ifetch 3 ,contr 
+0311 67e1c580 store 3 ,mem_24g_sta_crc 
+0312 6fe0c697 fetch 1 ,mem_24g_rxbuf_new 
+0313 1fe10401 and pdata ,0x01 ,temp 
+0314 6048c7f5 storet 1 ,mem_24g_rxdata_ack_flag 
+0315 1fe30400 rshift pdata ,temp 
+0316 18410403 and temp ,0x03 ,temp 
+0317 6048c586 storet 1 ,mem_24g_sta_pid 
+0318 1fe97e00 rshift3 pdata ,pdata 
+0319 67e0c697 store 1 ,mem_24g_rxbuf_new 
+031a 20600000 rtn 
 
 p_g24_rx_interrupt_clear:
-030c d8a04697 arg mem_24g_rxbuf_new ,contw 
-030d df200046 arg 70 ,loopcnt 
-030e 20207ca1 branch clear_mem 
+031b d8a04697 arg mem_24g_rxbuf_new ,contw 
+031c df200046 arg 70 ,loopcnt 
+031d 20207ca1 branch clear_mem 
 
 p_g24_search_mode_auto:
-030f 6fe0c616 fetch 1 ,mem_24g_work_mode 
-0310 c1838000 rtnne dongle_search 
-0311 20403476 call g24_search_mode_init 
-0312 204034ae call g24_auto_addr_ch_search 
-0313 204002d1 call p_g24_receive_transmit_ack 
-0314 2437b3be nbranch g24_rx_interrupt_clear ,user3 
-0315 20403506 call g24_receiver_addr_check 
-0316 2042829b call p_g24_receive_packet_parse ,zero 
-0317 20203491 branch g24_search_mode_auto + 9 
+031e 6fe0c616 fetch 1 ,mem_24g_work_mode 
+031f c1838000 rtnne dongle_search 
+0320 20403476 call g24_search_mode_init 
+0321 204034ae call g24_auto_addr_ch_search 
+0322 204002e0 call p_g24_receive_transmit_ack 
+0323 2437b3be nbranch g24_rx_interrupt_clear ,user3 
+0324 20403506 call g24_receiver_addr_check 
+0325 204282aa call p_g24_receive_packet_parse ,zero 
+0326 20203491 branch g24_search_mode_auto + 9 
 
 p_g24_ackpayload_parse:
-0318 20403214 call g24_read_len_pid_crc 
-0319 6fe0c57d fetch 1 ,mem_24g_rxdata_length 
-031a 207a0000 rtn blank 
-031b 98007200 iforce loopcnt 
-031c d8c04699 arg mem_24g_rxbuf_new + 2 ,contr 
-031d d8a04769 arg mem_24g_rxpayload_new ,contw 
-031e 20207cda branch memcpy 
+0327 20403214 call g24_read_len_pid_crc 
+0328 6fe0c57d fetch 1 ,mem_24g_rxdata_length 
+0329 207a0000 rtn blank 
+032a 98007200 iforce loopcnt 
+032b d8c04699 arg mem_24g_rxbuf_new + 2 ,contr 
+032c d8a04769 arg mem_24g_rxpayload_new ,contw 
+032d 20207cda branch memcpy 
 
 p_g24_transmit_prep:
-031f 6fe0c588 fetch 1 ,mem_24g_datalen 
-0320 1fe0fe03 increase 3 ,pdata 
-0321 67e0c58a store 1 ,mem_24g_txlen 
-0322 6fe0c5ac fetch 1 ,mem_24g_syncword_crc8 
-0323 67e0c723 store 1 ,mem_24g_txpayload_new 
-0324 6fe0c589 fetch 1 ,mem_24g_data_type 
-0325 1fe9fe00 lshift3 pdata ,pdata 
-0326 6848c57e fetcht 1 ,mem_24g_pid 
-0327 18410403 and temp ,0x03 ,temp 
-0328 18438400 lshift temp ,temp 
-0329 9841fe00 ior temp ,pdata 
-032a 6848c57f fetcht 1 ,mem_24g_no_ack 
-032b 9840fe00 iadd temp ,pdata 
-032c e7e08005 istore 1 ,contw 
-032d 6fe0c588 fetch 1 ,mem_24g_datalen 
-032e e7e08005 istore 1 ,contw 
-032f 6fe0c588 fetch 1 ,mem_24g_datalen 
-0330 98007200 iforce loopcnt 
-0331 d8c046dd arg mem_24g_txbuf_new ,contr 
-0332 20407cda call memcpy 
-0333 202031fc branch g24_transmit_prep_pdu_end 
+032e 6fe0c588 fetch 1 ,mem_24g_datalen 
+032f 1fe0fe03 increase 3 ,pdata 
+0330 67e0c58a store 1 ,mem_24g_txlen 
+0331 6fe0c5ac fetch 1 ,mem_24g_syncword_crc8 
+0332 67e0c723 store 1 ,mem_24g_txpayload_new 
+0333 6fe0c589 fetch 1 ,mem_24g_data_type 
+0334 1fe9fe00 lshift3 pdata ,pdata 
+0335 6848c57e fetcht 1 ,mem_24g_pid 
+0336 18410403 and temp ,0x03 ,temp 
+0337 18438400 lshift temp ,temp 
+0338 9841fe00 ior temp ,pdata 
+0339 6848c57f fetcht 1 ,mem_24g_no_ack 
+033a 9840fe00 iadd temp ,pdata 
+033b e7e08005 istore 1 ,contw 
+033c 6fe0c588 fetch 1 ,mem_24g_datalen 
+033d e7e08005 istore 1 ,contw 
+033e 6fe0c588 fetch 1 ,mem_24g_datalen 
+033f 98007200 iforce loopcnt 
+0340 d8c046dd arg mem_24g_txbuf_new ,contr 
+0341 20407cda call memcpy 
+0342 202031fc branch g24_transmit_prep_pdu_end 
 
 p_g24_transmit_packet:
-0334 c5178339 bmark1 mark_ble_lr ,p_g24_transmit_nolr 
-0335 6fe0c5ca fetch 1 ,mem_24g_disable_fec1 
-0336 243a0339 nbranch p_g24_transmit_nolr ,blank 
-0337 784efc00 disable encode_fec0 
-0338 782dfc00 enable encode_fec1 
+0343 c5178348 bmark1 mark_ble_lr ,p_g24_transmit_nolr 
+0344 6fe0c5ca fetch 1 ,mem_24g_disable_fec1 
+0345 243a0348 nbranch p_g24_transmit_nolr ,blank 
+0346 784efc00 disable encode_fec0 
+0347 782dfc00 enable encode_fec1 
 
 p_g24_transmit_nolr:
-0339 7823fc00 enable enable_white 
-033a 7824fc00 enable enable_crc 
-033b 6fe0c58a fetch 1 ,mem_24g_txlen 
-033c 98007200 iforce loopcnt 
-033d d8c04723 arg mem_24g_txpayload_new ,contr 
-033e 202031b3 branch g24tr_loop 
+0348 7823fc00 enable enable_white 
+0349 7824fc00 enable enable_crc 
+034a 6fe0c58a fetch 1 ,mem_24g_txlen 
+034b 98007200 iforce loopcnt 
+034c d8c04723 arg mem_24g_txpayload_new ,contr 
+034d 202031b3 branch g24tr_loop 
 
 p_dongle_dispatch:
 
 p_dongle_auto_bind:
-033f 20403402 call g24_mode_switch_init 
+034e 20403402 call g24_mode_switch_init 
 
 p_dongle_auto_bind_loop:
-0340 20403407 call g24_mode_switch_bind_work 
-0341 2040342d call g24_mode_switch_bind_search 
-0342 204048a3 call dongle_work_mode_auto 
-0343 20403469 call g24_bind_mode_auto 
-0344 20403488 call g24_search_mode_auto 
-0345 20404867 call dongle_usb_dispatch 
-0346 20400349 call p_dongle_keyboard_heart_tick_timer 
-0347 20400355 call p_dongle_mouse_heart_tick_timer 
-0348 20200340 branch p_dongle_auto_bind_loop 
+034f 20403407 call g24_mode_switch_bind_work 
+0350 2040342d call g24_mode_switch_bind_search 
+0351 204048a3 call dongle_work_mode_auto 
+0352 20403469 call g24_bind_mode_auto 
+0353 20403488 call g24_search_mode_auto 
+0354 20404867 call dongle_usb_dispatch 
+0355 20400358 call p_dongle_keyboard_heart_tick_timer 
+0356 20400364 call p_dongle_mouse_heart_tick_timer 
+0357 2020034f branch p_dongle_auto_bind_loop 
 
 p_dongle_keyboard_heart_tick_timer:
-0349 d840fffe arg 0xfffe ,temp 
-034a 6fe147f8 fetch 2 ,mem_dg_keyboard_heart_tick_timer 
-034b 98467c00 isub temp ,null 
-034c 20610000 rtn positive 
-034d 1fe0fe01 increase 1 ,pdata 
-034e 67e147f8 store 2 ,mem_dg_keyboard_heart_tick_timer 
-034f d8400000 arg 0 ,temp 
-0350 da6005dc arg 1500 ,regc 
-0351 9a667c00 isub regc ,null 
-0352 79210400 setflag positive ,0 ,temp 
-0353 6048c7fc storet 1 ,mem_dg_keyboard_connected_status 
-0354 20600000 rtn 
+0358 d840fffe arg 0xfffe ,temp 
+0359 6fe147f8 fetch 2 ,mem_dg_keyboard_heart_tick_timer 
+035a 98467c00 isub temp ,null 
+035b 20610000 rtn positive 
+035c 1fe0fe01 increase 1 ,pdata 
+035d 67e147f8 store 2 ,mem_dg_keyboard_heart_tick_timer 
+035e d8400000 arg 0 ,temp 
+035f da6005dc arg 1500 ,regc 
+0360 9a667c00 isub regc ,null 
+0361 79210400 setflag positive ,0 ,temp 
+0362 6048c7fc storet 1 ,mem_dg_keyboard_connected_status 
+0363 20600000 rtn 
 
 p_dongle_mouse_heart_tick_timer:
-0355 d840fffe arg 0xfffe ,temp 
-0356 6fe147fa fetch 2 ,mem_dg_mouse_heart_tick_timer 
-0357 98467c00 isub temp ,null 
-0358 20610000 rtn positive 
-0359 1fe0fe01 increase 1 ,pdata 
-035a 67e147fa store 2 ,mem_dg_mouse_heart_tick_timer 
-035b d8400000 arg 0 ,temp 
-035c da6005dc arg 1500 ,regc 
-035d 9a667c00 isub regc ,null 
-035e 79210400 setflag positive ,0 ,temp 
-035f 6048c7fd storet 1 ,mem_dg_mouse_connected_status 
-0360 20600000 rtn 
+0364 d840fffe arg 0xfffe ,temp 
+0365 6fe147fa fetch 2 ,mem_dg_mouse_heart_tick_timer 
+0366 98467c00 isub temp ,null 
+0367 20610000 rtn positive 
+0368 1fe0fe01 increase 1 ,pdata 
+0369 67e147fa store 2 ,mem_dg_mouse_heart_tick_timer 
+036a d8400000 arg 0 ,temp 
+036b da6005dc arg 1500 ,regc 
+036c 9a667c00 isub regc ,null 
+036d 79210400 setflag positive ,0 ,temp 
+036e 6048c7fd storet 1 ,mem_dg_mouse_connected_status 
+036f 20600000 rtn 
 
 p_dongle_usb_dispatch_analysis:
-0361 6fe08901 fetch 1 ,mem_usb_remote_wakeup 
-0362 205a48b5 call dongle_clear_pc_sleep_flag ,blank 
-0363 20407906 call usb_isr 
-0364 6fe088f7 fetch 1 ,mem_usb0_get_set_report 
-0365 207a0000 rtn blank 
-0366 7008f700 jam 0 ,mem_usb0_get_set_report 
-0367 6fe108f5 fetch 2 ,mem_usb_setup_bvalue_temp 
-0368 d84002ba arg pc_set_report ,temp 
-0369 98467c00 isub temp ,null 
-036a 24628000 nrtn zero 
-036b 6fe08875 fetch 1 ,mem_usb0_set_report_data 
-036c c1dd0000 rtnne pc_report_id 
-036d 6fe08876 fetch 1 ,mem_usb0_set_report_data + 1 
-036e c07b8376 beq cmd_check_status ,p_dongle_dispose_cmd_check_status 
-036f c07b0383 beq cmd_set ,p_dongle_dispose_cmd_set 
-0370 c07e0386 beq cmd_get_in_data ,p_dongle_dispose_cmd_get_in_data 
-0371 c07f038c beq cmd_get_translen ,p_dongle_dispose_cmd_get_translen 
-0372 c03d038f beq cmd_set_test ,p_dongle_dispose_cmd_set_test 
-0373 c0500397 beq cmd_set_key_matrix ,p_dongle_dispose_cmd_set_key_matrix 
-0374 c05083a5 beq cmd_get_key_matrix ,p_dongle_dispose_cmd_get_key_matrix 
-0375 20204875 branch dongle_usb_dispatch_next 
+0370 6fe08901 fetch 1 ,mem_usb_remote_wakeup 
+0371 205a48b5 call dongle_clear_pc_sleep_flag ,blank 
+0372 20407906 call usb_isr 
+0373 6fe088f7 fetch 1 ,mem_usb0_get_set_report 
+0374 207a0000 rtn blank 
+0375 7008f700 jam 0 ,mem_usb0_get_set_report 
+0376 6fe08875 fetch 1 ,mem_usb0_set_report_data 
+0377 c07b8380 beq cmd_check_status ,p_dongle_dispose_cmd_check_status 
+0378 c07b038e beq cmd_set ,p_dongle_dispose_cmd_set 
+0379 c07a8391 beq cmd_set_dpi ,p_dongle_dispose_cmd_set_dpi 
+037a c07e0397 beq cmd_get_in_data ,p_dongle_dispose_cmd_get_in_data 
+037b c07f039d beq cmd_get_translen ,p_dongle_dispose_cmd_get_translen 
+037c c03d03a0 beq cmd_set_test ,p_dongle_dispose_cmd_set_test 
+037d c05003a8 beq cmd_set_key_matrix ,p_dongle_dispose_cmd_set_key_matrix 
+037e c05083b6 beq cmd_get_key_matrix ,p_dongle_dispose_cmd_get_key_matrix 
+037f 20204875 branch dongle_usb_dispatch_next 
 
 p_dongle_dispose_cmd_check_status:
-0376 6fe0c7f6 fetch 1 ,mem_dg_keyboard_battery_level 
-0377 67e088b6 store 1 ,mem_usb0_get_report_data + 1 
-0378 6fe0c7f7 fetch 1 ,mem_dg_mouse_battery_level 
-0379 67e088b7 store 1 ,mem_usb0_get_report_data + 2 
-037a 6fe0c7fc fetch 1 ,mem_dg_keyboard_connected_status 
-037b 67e088b8 store 1 ,mem_usb0_get_report_data + 3 
-037c 6fe0c7fd fetch 1 ,mem_dg_mouse_connected_status 
-037d 67e088b9 store 1 ,mem_usb0_get_report_data + 4 
-037e 6fe0c7fe fetch 1 ,mem_dg_usb_driver_set_end 
-037f 67e088ba store 1 ,mem_usb0_get_report_data + 5 
-0380 6fe2458f fetch 4 ,mem_24g_addr 
-0381 67e208bd store 4 ,mem_usb0_get_report_data + 8 
-0382 20204880 branch dongle_usb0_data_ready_report_set1 
+0380 58000064 setarg 0x64 
+0381 67e0ca0c store 1 ,mem_dg_protocol_usb_in_data_buff 
+0382 58000064 setarg 0x64 
+0383 67e0ca0d store 1 ,mem_dg_protocol_usb_in_data_buff + 1 
+0384 58000000 setarg 0x00 
+0385 67e0ca0e store 1 ,mem_dg_protocol_usb_in_data_buff + 2 
+0386 58000000 setarg 0x00 
+0387 67e0ca0f store 1 ,mem_dg_protocol_usb_in_data_buff + 3 
+0388 58000001 setarg 0x01 
+0389 67e0ca10 store 1 ,mem_dg_protocol_usb_in_data_buff + 4 
+038a 6fe2458f fetch 4 ,mem_24g_addr 
+038b 67e24a13 store 4 ,mem_dg_protocol_usb_in_data_buff + 7 
+038c 70090c24 jam usb_ep2_protocol ,mem_usb_ep2_data 
+038d 202003fc branch p_dongle_usb_tx_enable_ep2 
 
 p_dongle_dispose_cmd_set:
-0383 6fe08877 fetch 1 ,mem_usb0_set_report_data + 2 
-0384 67e0c7ff store 1 ,mem_dg_data_type 
-0385 2020487a branch dongle_usb0_data_ready_report_set0 
+038e 6fe08877 fetch 1 ,mem_usb0_set_report_data + 2 
+038f 67e0c7ff store 1 ,mem_dg_data_type 
+0390 20600000 rtn 
+
+p_dongle_dispose_cmd_set_dpi:
+0391 6fe08876 fetch 1 ,mem_usb0_set_report_data + 1 
+0392 c1828000 rtnne ms_type 
+0393 67e0ca4d store 1 ,mem_24g_device_type 
+0394 6fe08877 fetch 1 ,mem_usb0_set_report_data + 2 
+0395 67e0c94d store 1 ,mem_dg_mouse_dpi_level 
+0396 20600000 rtn 
 
 p_dongle_dispose_cmd_get_in_data:
-0386 70087500 jam 0 ,mem_usb0_set_report_data 
-0387 d8c04803 arg mem_dg_usb_get_buff ,contr 
-0388 d8a008b5 arg mem_usb0_get_report_data ,contw 
-0389 df200040 arg 64 ,loopcnt 
-038a 20407ccc call memcpy_fast 
-038b 2020487a branch dongle_usb0_data_ready_report_set0 
+0397 70087500 jam 0 ,mem_usb0_set_report_data 
+0398 d8c04803 arg mem_dg_usb_get_buff ,contr 
+0399 d8a008b5 arg mem_usb0_get_report_data ,contw 
+039a df200040 arg 64 ,loopcnt 
+039b 20407ccc call memcpy_fast 
+039c 2020487a branch dongle_usb0_data_ready_report_set0 
 
 p_dongle_dispose_cmd_get_translen:
-038c 6fe08877 fetch 1 ,mem_usb0_set_report_data + 2 
-038d 67e0c800 store 1 ,mem_dg_data_len 
-038e 2020487a branch dongle_usb0_data_ready_report_set0 
+039d 6fe08877 fetch 1 ,mem_usb0_set_report_data + 2 
+039e 67e0c800 store 1 ,mem_dg_data_len 
+039f 2020487a branch dongle_usb0_data_ready_report_set0 
 
 p_dongle_dispose_cmd_set_test:
-038f 70461602 jam dongle_test ,mem_24g_work_mode 
-0390 70461500 jam clear_init ,mem_24g_mode_init 
-0391 6fe08877 fetch 1 ,mem_usb0_set_report_data + 2 
-0392 67e0c801 store 1 ,mem_dg_test_mode 
-0393 6fe08878 fetch 1 ,mem_usb0_set_report_data + 3 
-0394 67e0c802 store 1 ,mem_dg_test_ch 
-0395 7008b601 jam 0x01 ,mem_usb0_get_report_data + 1 
-0396 20204880 branch dongle_usb0_data_ready_report_set1 
+03a0 70461602 jam dongle_test ,mem_24g_work_mode 
+03a1 70461500 jam clear_init ,mem_24g_mode_init 
+03a2 6fe08877 fetch 1 ,mem_usb0_set_report_data + 2 
+03a3 67e0c801 store 1 ,mem_dg_test_mode 
+03a4 6fe08878 fetch 1 ,mem_usb0_set_report_data + 3 
+03a5 67e0c802 store 1 ,mem_dg_test_ch 
+03a6 7008b601 jam 0x01 ,mem_usb0_get_report_data + 1 
+03a7 20204880 branch dongle_usb0_data_ready_report_set1 
 
 p_dongle_dispose_cmd_set_key_matrix:
-0397 6fe08877 fetch 1 ,mem_usb0_set_report_data + 2 
-0398 67e0c990 store 1 ,mem_dg_keyboard_keymatrix_profile 
-0399 6fe08878 fetch 1 ,mem_usb0_set_report_data + 3 
-039a 67e0c991 store 1 ,mem_dg_keyboard_keymatrix_type 
-039b 6fe08879 fetch 1 ,mem_usb0_set_report_data + 4 
-039c 67e0c992 store 1 ,mem_dg_keyboard_keymatrix_page 
-039d 6fe0887a fetch 1 ,mem_usb0_set_report_data + 5 
-039e 67e0c993 store 1 ,mem_dg_keyboard_keymatrix_len 
-039f 1fe27200 copy pdata ,loopcnt 
-03a0 d8c0087e arg mem_usb0_set_report_data + 9 ,contr 
-03a1 d8a04994 arg mem_dg_keyboard_keymatrix_setup_keyvalue ,contw 
-03a2 20407ccc call memcpy_fast 
-03a3 7008b601 jam 0x01 ,mem_usb0_get_report_data + 1 
-03a4 20204880 branch dongle_usb0_data_ready_report_set1 
+03a8 6fe08877 fetch 1 ,mem_usb0_set_report_data + 2 
+03a9 67e0c990 store 1 ,mem_dg_keyboard_keymatrix_profile 
+03aa 6fe08878 fetch 1 ,mem_usb0_set_report_data + 3 
+03ab 67e0c991 store 1 ,mem_dg_keyboard_keymatrix_type 
+03ac 6fe08879 fetch 1 ,mem_usb0_set_report_data + 4 
+03ad 67e0c992 store 1 ,mem_dg_keyboard_keymatrix_page 
+03ae 6fe0887a fetch 1 ,mem_usb0_set_report_data + 5 
+03af 67e0c993 store 1 ,mem_dg_keyboard_keymatrix_len 
+03b0 1fe27200 copy pdata ,loopcnt 
+03b1 d8c0087e arg mem_usb0_set_report_data + 9 ,contr 
+03b2 d8a04994 arg mem_dg_keyboard_keymatrix_setup_keyvalue ,contw 
+03b3 20407ccc call memcpy_fast 
+03b4 7008b601 jam 0x01 ,mem_usb0_get_report_data + 1 
+03b5 20204880 branch dongle_usb0_data_ready_report_set1 
 
 p_dongle_dispose_cmd_get_key_matrix:
-03a5 6fe08877 fetch 1 ,mem_usb0_set_report_data + 2 
-03a6 67e0c990 store 1 ,mem_dg_keyboard_keymatrix_profile 
-03a7 6fe08878 fetch 1 ,mem_usb0_set_report_data + 3 
-03a8 67e0c991 store 1 ,mem_dg_keyboard_keymatrix_type 
-03a9 6fe08879 fetch 1 ,mem_usb0_set_report_data + 4 
-03aa 67e0c992 store 1 ,mem_dg_keyboard_keymatrix_page 
-03ab df200040 arg 64 ,loopcnt 
-03ac d8a049cc arg mem_dg_keyboard_keymatrix_getup_keyvalue ,contw 
-03ad d8a008b6 arg mem_usb0_get_report_data + 1 ,contw 
-03ae 20407ccc call memcpy_fast 
-03af 20204880 branch dongle_usb0_data_ready_report_set1 
+03b6 6fe08877 fetch 1 ,mem_usb0_set_report_data + 2 
+03b7 67e0c990 store 1 ,mem_dg_keyboard_keymatrix_profile 
+03b8 6fe08878 fetch 1 ,mem_usb0_set_report_data + 3 
+03b9 67e0c991 store 1 ,mem_dg_keyboard_keymatrix_type 
+03ba 6fe08879 fetch 1 ,mem_usb0_set_report_data + 4 
+03bb 67e0c992 store 1 ,mem_dg_keyboard_keymatrix_page 
+03bc df200040 arg 64 ,loopcnt 
+03bd d8a049cc arg mem_dg_keyboard_keymatrix_getup_keyvalue ,contw 
+03be d8a008b6 arg mem_usb0_get_report_data + 1 ,contw 
+03bf 20407ccc call memcpy_fast 
+03c0 20204880 branch dongle_usb0_data_ready_report_set1 
 
 p_dongle_g24_mouse:
-03b0 6fe0c7b1 fetch 1 ,mem_24g_rxdata_temp_new + 2 
-03b1 c28303d7 bbit1 data_dpi ,p_dongle_receive_ms_dpi_info 
-03b2 c28383e4 bbit1 data_battery ,p_dongle_receive_ms_battery_info 
-03b3 c28283e7 bbit1 data_heart ,p_dongle_receive_ms_heart_info 
+03c1 6fe0c7b1 fetch 1 ,mem_24g_rxdata_temp_new + 2 
+03c2 c28303e8 bbit1 data_dpi ,p_dongle_receive_ms_dpi_info 
+03c3 c28383f5 bbit1 data_battery ,p_dongle_receive_ms_battery_info 
+03c4 c28283f8 bbit1 data_heart ,p_dongle_receive_ms_heart_info 
 
 p_dongle_g24_mouse_next:
-03b4 6fe0c57d fetch 1 ,mem_24g_rxdata_length 
-03b5 1fe67c09 sub pdata ,0x09 ,null 
-03b6 202283c4 branch p_dongle_g24_mouse_data ,zero 
-03b7 204003c4 call p_dongle_g24_mouse_data 
-03b8 6fe0c57d fetch 1 ,mem_24g_rxdata_length 
-03b9 1fe0fff8 add pdata ,-8 ,pdata 
-03ba 67e0c57d store 1 ,mem_24g_rxdata_length 
-03bb 1fe27200 copy pdata ,loopcnt 
-03bc d8a047b1 arg mem_24g_rxdata_temp_new + 2 ,contw 
-03bd d8c047b9 arg mem_24g_rxdata_temp_new + 10 ,contr 
-03be 20407cda call memcpy 
-03bf 6fe0c7b1 fetch 1 ,mem_24g_rxdata_temp_new + 2 
-03c0 c28303d7 bbit1 data_dpi ,p_dongle_receive_ms_dpi_info 
-03c1 c28383e4 bbit1 data_battery ,p_dongle_receive_ms_battery_info 
-03c2 c28283e7 bbit1 data_heart ,p_dongle_receive_ms_heart_info 
-03c3 20600000 rtn 
+03c5 6fe0c57d fetch 1 ,mem_24g_rxdata_length 
+03c6 1fe67c09 sub pdata ,0x09 ,null 
+03c7 202283d5 branch p_dongle_g24_mouse_data ,zero 
+03c8 204003d5 call p_dongle_g24_mouse_data 
+03c9 6fe0c57d fetch 1 ,mem_24g_rxdata_length 
+03ca 1fe0fff8 add pdata ,-8 ,pdata 
+03cb 67e0c57d store 1 ,mem_24g_rxdata_length 
+03cc 1fe27200 copy pdata ,loopcnt 
+03cd d8a047b1 arg mem_24g_rxdata_temp_new + 2 ,contw 
+03ce d8c047b9 arg mem_24g_rxdata_temp_new + 10 ,contr 
+03cf 20407cda call memcpy 
+03d0 6fe0c7b1 fetch 1 ,mem_24g_rxdata_temp_new + 2 
+03d1 c28303e8 bbit1 data_dpi ,p_dongle_receive_ms_dpi_info 
+03d2 c28383f5 bbit1 data_battery ,p_dongle_receive_ms_battery_info 
+03d3 c28283f8 bbit1 data_heart ,p_dongle_receive_ms_heart_info 
+03d4 20600000 rtn 
 
 p_dongle_g24_mouse_data:
-03c4 58000001 setarg ms_report_id 
-03c5 67e08913 store 1 ,mem_usb_mouse_data 
-03c6 6fe3c7b2 fetch 7 ,mem_24g_rxdata_temp_new + 3 
-03c7 e7e38005 istore 7 ,contw 
-03c8 6fe0c7b2 fetch 1 ,mem_24g_rxdata_temp_new + 3 
-03c9 245a48dd ncall dongle_g24_ms_enable_blank_data_forcibly ,blank 
-03ca 6fe0c7b2 fetch 1 ,mem_24g_rxdata_temp_new + 3 
-03cb 205a48e1 call dongle_g24_ms_disable_blank_data_forcibly ,blank 
-03cc 6fe38914 fetch 7 ,mem_usb_mouse_data + 1 
-03cd 67e3c945 store 7 ,mem_dg_mouse_data 
-03ce 6fe0c945 fetch 1 ,mem_dg_mouse_data 
-03cf 6848c94c fetcht 1 ,mem_dg_mouse_key_data_last 
-03d0 67e0c94c store 1 ,mem_dg_mouse_key_data_last 
-03d1 98467c00 isub temp ,null 
-03d2 242283d5 nbranch p_dongle_mouse_data_tx_enable ,zero 
+03d5 58000001 setarg ms_report_id 
+03d6 67e08913 store 1 ,mem_usb_mouse_data 
+03d7 6fe3c7b2 fetch 7 ,mem_24g_rxdata_temp_new + 3 
+03d8 e7e38005 istore 7 ,contw 
+03d9 6fe0c7b2 fetch 1 ,mem_24g_rxdata_temp_new + 3 
+03da 245a48dd ncall dongle_g24_ms_enable_blank_data_forcibly ,blank 
+03db 6fe0c7b2 fetch 1 ,mem_24g_rxdata_temp_new + 3 
+03dc 205a48e1 call dongle_g24_ms_disable_blank_data_forcibly ,blank 
+03dd 6fe38914 fetch 7 ,mem_usb_mouse_data + 1 
+03de 67e3c945 store 7 ,mem_dg_mouse_data 
+03df 6fe0c945 fetch 1 ,mem_dg_mouse_data 
+03e0 6848c94c fetcht 1 ,mem_dg_mouse_key_data_last 
+03e1 67e0c94c store 1 ,mem_dg_mouse_key_data_last 
+03e2 98467c00 isub temp ,null 
+03e3 242283e6 nbranch p_dongle_mouse_data_tx_enable ,zero 
 
 p_dongle_receive_mouse_data_check:
-03d3 6fe34946 fetch 6 ,mem_dg_mouse_data + 1 
-03d4 207a0000 rtn blank 
+03e4 6fe34946 fetch 6 ,mem_dg_mouse_data + 1 
+03e5 207a0000 rtn blank 
 
 p_dongle_mouse_data_tx_enable:
-03d5 70090c20 jam usb_ep2_ms ,mem_usb_ep2_data 
-03d6 202003eb branch p_dongle_usb_tx_enable_ep2 
+03e6 70090c20 jam usb_ep2_ms ,mem_usb_ep2_data 
+03e7 202003fc branch p_dongle_usb_tx_enable_ep2 
 
 p_dongle_receive_ms_dpi_info:
-03d7 6fe0c7b2 fetch 1 ,mem_24g_rxdata_temp_new + 3 
-03d8 6848c94d fetcht 1 ,mem_dg_mouse_dpi_level 
-03d9 67e0c94d store 1 ,mem_dg_mouse_dpi_level 
-03da 98467c00 isub temp ,null 
-03db 20628000 rtn zero 
+03e8 6fe0c7b2 fetch 1 ,mem_24g_rxdata_temp_new + 3 
+03e9 6848c94d fetcht 1 ,mem_dg_mouse_dpi_level 
+03ea 67e0c94d store 1 ,mem_dg_mouse_dpi_level 
+03eb 98467c00 isub temp ,null 
+03ec 20628000 rtn zero 
 
 p_dongle_usb_tx_dpi_level_enable:
-03dc 70494f40 jam 0x40 ,mem_usb_dpi_info_data 
-03dd 704950a1 jam report_id_data_in ,mem_usb_dpi_info_data + 1 
-03de 70495105 jam ms_type ,mem_usb_dpi_info_data + 2 
-03df 6fe0c94d fetch 1 ,mem_dg_mouse_dpi_level 
-03e0 67e0c952 store 1 ,mem_usb_dpi_info_data + 3 
-03e1 70495300 jam 0 ,mem_usb_dpi_info_data + 4 
-03e2 70090c23 jam usb_ep2_dpi ,mem_usb_ep2_data 
-03e3 202003eb branch p_dongle_usb_tx_enable_ep2 
+03ed 70494f40 jam 0x40 ,mem_usb_dpi_info_data 
+03ee 704950a1 jam report_id_data_in ,mem_usb_dpi_info_data + 1 
+03ef 70495105 jam ms_type ,mem_usb_dpi_info_data + 2 
+03f0 6fe0c94d fetch 1 ,mem_dg_mouse_dpi_level 
+03f1 67e0c952 store 1 ,mem_usb_dpi_info_data + 3 
+03f2 70495300 jam 0 ,mem_usb_dpi_info_data + 4 
+03f3 70090c23 jam usb_ep2_dpi ,mem_usb_ep2_data 
+03f4 202003fc branch p_dongle_usb_tx_enable_ep2 
 
 p_dongle_receive_ms_battery_info:
-03e4 6fe0c7b2 fetch 1 ,mem_24g_rxdata_temp_new + 3 
-03e5 67e0c7f7 store 1 ,mem_dg_mouse_battery_level 
-03e6 20600000 rtn 
+03f5 6fe0c7b2 fetch 1 ,mem_24g_rxdata_temp_new + 3 
+03f6 67e0c7f7 store 1 ,mem_dg_mouse_battery_level 
+03f7 20600000 rtn 
 
 p_dongle_receive_ms_heart_info:
-03e7 6fe0c94e fetch 1 ,mem_dg_usb_ep2_data_flag 
-03e8 207a0000 rtn blank 
-03e9 70494e00 jam 0 ,mem_dg_usb_ep2_data_flag 
+03f8 6fe0c94e fetch 1 ,mem_dg_usb_ep2_data_flag 
+03f9 207a0000 rtn blank 
+03fa 70494e00 jam 0 ,mem_dg_usb_ep2_data_flag 
 
 p_24g_ackpayload_enable_set:
-03ea 20600000 rtn 
+03fb 20600000 rtn 
 
 p_dongle_usb_tx_enable_ep2:
-03eb 6fe0890e fetch 1 ,mem_usb_device_enumeration_endflag 
-03ec 207a0000 rtn blank 
-03ed da20493d arg mem_usb_ep2_fifo ,rega 
-03ee 20407da5 call fifo_is_full 
-03ef 247a0000 nrtn blank 
-03f0 6fe0890c fetch 1 ,mem_usb_ep2_data 
-03f1 67e0866f store 1 ,mem_fifo_temp 
-03f2 da20493d arg mem_usb_ep2_fifo ,rega 
-03f3 20207d8b branch fifo_in 
+03fc 6fe0890e fetch 1 ,mem_usb_device_enumeration_endflag 
+03fd 207a0000 rtn blank 
+03fe da20493d arg mem_usb_ep2_fifo ,rega 
+03ff 20407da5 call fifo_is_full 
+0400 247a0000 nrtn blank 
+0401 6fe0890c fetch 1 ,mem_usb_ep2_data 
+0402 67e0866f store 1 ,mem_fifo_temp 
+0403 da20493d arg mem_usb_ep2_fifo ,rega 
+0404 20207d8b branch fifo_in 
 
 p_dongle_g24_kb:
-03f4 6fe0c7b2 fetch 1 ,mem_24g_rxdata_temp_new + 3 
-03f5 c00003f9 beq 0 ,p_dongle_g24_kb_type0 
-03f6 c00103ff beq 2 ,p_dongle_g24_kb_type2 
-03f7 c0018402 beq 3 ,p_dongle_g24_kb_type3 
-03f8 202033be branch g24_rx_interrupt_clear 
+0405 6fe0c7b2 fetch 1 ,mem_24g_rxdata_temp_new + 3 
+0406 c000040a beq 0 ,p_dongle_g24_kb_type0 
+0407 c0010410 beq 2 ,p_dongle_g24_kb_type2 
+0408 c0018413 beq 3 ,p_dongle_g24_kb_type3 
+0409 202033be branch g24_rx_interrupt_clear 
 
 p_dongle_g24_kb_type0:
-03f9 6fe0c7b4 fetch 1 ,mem_24g_rxdata_temp_new + 5 
-03fa 67e0c611 store 1 ,mem_24g_ackpayload_enable 
-03fb 7047b400 jam 0 ,mem_24g_rxdata_temp_new + 5 
-03fc d8a00923 arg mem_usb_kb_data ,contw 
-03fd d8c047b3 arg mem_24g_rxdata_temp_new + 4 ,contr 
-03fe 202048ef branch dongle_g24_kb_type0 + 5 
+040a 6fe0c7b4 fetch 1 ,mem_24g_rxdata_temp_new + 5 
+040b 67e0c611 store 1 ,mem_24g_ackpayload_enable 
+040c 7047b400 jam 0 ,mem_24g_rxdata_temp_new + 5 
+040d d8a00923 arg mem_usb_kb_data ,contw 
+040e d8c047b3 arg mem_24g_rxdata_temp_new + 4 ,contr 
+040f 202048ef branch dongle_g24_kb_type0 + 5 
 
 p_dongle_g24_kb_type2:
-03ff d8a00943 arg mem_usb_kb_system ,contw 
-0400 d8c047b2 arg mem_24g_rxdata_temp_new + 3 ,contr 
-0401 2020491f branch dongle_g24_kb_type2 + 2 
+0410 d8a00943 arg mem_usb_kb_system ,contw 
+0411 d8c047b2 arg mem_24g_rxdata_temp_new + 3 ,contr 
+0412 2020491f branch dongle_g24_kb_type2 + 2 
 
 p_dongle_g24_kb_type3:
-0402 d8a00933 arg mem_usb_kb_multikey ,contw 
-0403 d8c047b2 arg mem_24g_rxdata_temp_new + 3 ,contr 
-0404 20204907 branch dongle_g24_kb_type3 + 2 
+0413 d8a00933 arg mem_usb_kb_multikey ,contw 
+0414 d8c047b2 arg mem_24g_rxdata_temp_new + 3 ,contr 
+0415 20204907 branch dongle_g24_kb_type3 + 2 
 
 p_checksum_calcu:
-0405 da200000 arg 0 ,rega 
+0416 da200000 arg 0 ,rega 
 
 p_dongle_data_checksum:
-0406 efe08006 ifetch 1 ,contr 
-0407 9a20a200 iadd rega ,rega 
-0408 c2000406 loop p_dongle_data_checksum 
-0409 1a2122ff and_into 0xff ,rega 
-040a 20600000 rtn 
+0417 efe08006 ifetch 1 ,contr 
+0418 9a20a200 iadd rega ,rega 
+0419 c2000417 loop p_dongle_data_checksum 
+041a 1a2122ff and_into 0xff ,rega 
+041b 20600000 rtn 
               org 0x2000
 
 start:
Index: program/patch.prog
===================================================================
--- /branch/keyboard/customer_FW/RY_project/RY_Dongle/program/patch.prog	(revision 1982)
+++ /branch/keyboard/customer_FW/RY_project/RY_Dongle/program/patch.prog	(working copy)
@@ -444,6 +444,7 @@
 	beq USB_EP2_MULTIKEY,usb_tx_kb_multikey_data
 	beq USB_EP2_SYSTEMKEY,usb_tx_kb_systemkey_data
 	beq USB_EP2_DPI,p_usb_tx_dpi_data
+	beq USB_EP2_PROTOCOL,p_usb_tx_protocol_data
 	branch assert
 
 p_usb_tx_dpi_data:
@@ -457,6 +458,13 @@
 	arg 65,loopcnt
 	branch clear_mem
 
+p_usb_tx_protocol_data:
+	arg 64,loopcnt
+	arg mem_dg_protocol_usb_in_data_buff,contr
+	call usb_tx_ep2
+	arg mem_dg_protocol_usb_in_data_buff,contw
+	branch p_usb_tx_buff_clr
+
 p_rx_dcoc:
 	rtn wake
 	call set_sync_on
@@ -784,6 +792,7 @@
 	fetch 1,mem_24g_ackpayload_enable
 	beq BIND_ACKPAYLOAD,p_dongle_g24_bind_ackpayload_prep
 	beq KB_LED_ACKPAYLOAD,p_dongle_g24_kb_led_ackpayload_prep
+	beq PROTOCOL_ACKPAYLOAD,p_dongle_g24_protocol_ackpayload_prep
 	rtn
 
 p_dongle_g24_bind_ackpayload_prep:
@@ -818,6 +827,18 @@
 	store 1,mem_24g_txbuf_new
 	rtn
 
+p_dongle_g24_protocol_ackpayload_prep:
+	fetch 1,mem_24g_device_type
+	beq MS_TYPE,p_dongle_g24_protocol_ms_ackpayload_prep
+	beq KB_TYPE,p_dongle_g24_protocol_kb_ackpayload_prep
+	rtn
+p_dongle_g24_protocol_ms_ackpayload_prep:
+	jam TYPE_MS,mem_24g_data_type
+	rtn
+
+p_dongle_g24_protocol_kb_ackpayload_prep:
+	jam TYPE_KB,mem_24g_data_type
+	rtn
 
 p_dongle_pc_sleep_ackpayload_prep_mouse:
 	fetch 1,mem_dg_pc_sleep_flag
@@ -1143,16 +1164,17 @@
 	fetch 1,mem_usb0_get_set_report
 	rtn blank
 	jam 0,mem_usb0_get_set_report
-	fetch 2,mem_usb_setup_bValue_temp
-	arg PC_SET_REPORT,temp
-	isub temp,null
-	nrtn zero
+//	fetch 2,mem_usb_setup_bValue_temp
+//	arg PC_SET_REPORT,temp
+//	isub temp,null
+//	nrtn zero
 	//get usb host command
+//	fetch 1,mem_usb0_set_report_data
+//	rtnne PC_REPORT_ID
 	fetch 1,mem_usb0_set_report_data
-	rtnne PC_REPORT_ID
-	fetch 1,mem_usb0_set_report_data+1
 	beq CMD_CHECK_STATUS,p_dongle_dispose_cmd_check_status
 	beq CMD_SET,p_dongle_dispose_cmd_set
+	beq CMD_SET_DPI,p_dongle_dispose_cmd_set_dpi
 	beq CMD_GET_IN_DATA,p_dongle_dispose_cmd_get_in_data
 	beq CMD_GET_TRANSLEN,p_dongle_dispose_cmd_get_translen
 	beq CMD_SET_TEST,p_dongle_dispose_cmd_set_test
@@ -1161,29 +1183,45 @@
 	branch dongle_usb_dispatch_next
 
 p_dongle_dispose_cmd_check_status:
-	fetch 1,mem_dg_keyboard_battery_level
-	store 1,mem_usb0_get_report_data+1
-
-	fetch 1,mem_dg_mouse_battery_level
-	store 1,mem_usb0_get_report_data+2
-
-	fetch 1,mem_dg_keyboard_connected_status
-	store 1,mem_usb0_get_report_data+3
-
-	fetch 1,mem_dg_mouse_connected_status
-	store 1,mem_usb0_get_report_data+4
-
-	fetch 1,mem_dg_usb_driver_set_end
-	store 1,mem_usb0_get_report_data+5
+	//fetch 1,mem_dg_keyboard_battery_level
+	setarg 0x64
+	store 1,mem_dg_protocol_usb_in_data_buff
+
+	//fetch 1,mem_dg_mouse_battery_level
+	setarg 0x64
+	store 1,mem_dg_protocol_usb_in_data_buff+1
+
+	//fetch 1,mem_dg_keyboard_connected_status
+	setarg 0x00
+	store 1,mem_dg_protocol_usb_in_data_buff+2
+
+	//fetch 1,mem_dg_mouse_connected_status
+	setarg 0x00
+	store 1,mem_dg_protocol_usb_in_data_buff+3
+
+	//fetch 1,mem_dg_usb_driver_set_end
+	setarg 0x01
+	store 1,mem_dg_protocol_usb_in_data_buff+4
 
 	fetch 4,mem_24g_addr
-	store 4,mem_usb0_get_report_data+8
-	branch dongle_usb0_data_ready_report_set1
+	store 4,mem_dg_protocol_usb_in_data_buff+7
+	jam USB_EP2_PROTOCOL,mem_usb_ep2_data
+	branch p_dongle_usb_tx_enable_ep2
+	
 	
 p_dongle_dispose_cmd_set:
 	fetch 1,mem_usb0_set_report_data+2		//0x0a--keyboard, 0x05--mouse
 	store 1,mem_dg_data_type
-	branch dongle_usb0_data_ready_report_set0
+	rtn
+
+p_dongle_dispose_cmd_set_dpi:
+	fetch 1,mem_usb0_set_report_data+1
+	rtnne MS_TYPE
+	store 1,mem_24g_device_type
+	fetch 1,mem_usb0_set_report_data+2
+	store 1,mem_dg_mouse_dpi_level
+	rtn
+
 
 p_dongle_dispose_cmd_get_in_data:
 	jam 0,mem_usb0_set_report_data
