Index: format/app_dongle.format
===================================================================
--- /branch/keyboard/customer_FW/RY_project/RY_Dongle/format/app_dongle.format	(revision 1988)
+++ /branch/keyboard/customer_FW/RY_project/RY_Dongle/format/app_dongle.format	(working copy)
@@ -46,8 +46,6 @@
 1 mem_dg_keyboard_connected_status
 1 mem_dg_mouse_connected_status
 1 mem_dg_usb_driver_set_end
-1 mem_dg_data_type
-1 mem_dg_data_len
 1 mem_dg_test_mode
 1 mem_dg_test_ch
 64 mem_dg_usb_get_buff
@@ -66,13 +64,18 @@
 1 mem_dg_keyboard_keymatrix_type
 1 mem_dg_keyboard_keymatrix_page
 1 mem_dg_keyboard_keymatrix_len
-56 mem_dg_keyboard_keymatrix_setup_keyvalue
-64 mem_dg_keyboard_keymatrix_getup_keyvalue
+64 mem_dg_keyboard_keymatrix_setup_keyvalue
 65 mem_dg_protocol_usb_in_data_buff
+65 mem_dg_protocol_usb_out_data_buff
 1 mem_24g_device_type
-1 mem_dongle_ms_ep2_ack_data_flag
-65 mem_dongle_ms_ep2_ack_data
+1 mem_dg_ms_ep2_ack_data_flag
+65 mem_dg_ms_ep2_ack_data
 
+1 mem_dg_kb_ep2_ack_data_flag
+65 mem_dg_kb_ep2_ack_data
+160 mem_dg_kb_keymatrix_buff
+1 mem_dg_receive_keymatrix_count
+2 mem_keymatrix_wptr
 )
 
 (
@@ -92,6 +95,9 @@
 5 DATA_HEART
 6 DATA_DPI
 7 DATA_BATTERY
+
+//kb data type
+6 DATA_KEY_MATRIX
 )
 
 (
Index: output/eeprom.dat
===================================================================
--- /branch/keyboard/customer_FW/RY_project/RY_Dongle/output/eeprom.dat	(revision 1988)
+++ /branch/keyboard/customer_FW/RY_project/RY_Dongle/output/eeprom.dat	(working copy)
@@ -2,8 +2,8 @@
 02
 aa
 55
-e6
-10
+96
+11
 c2
 84
 00
@@ -59,7 +59,7 @@
 c0
 1f
 02
-95
+9c
 c0
 58
 82
@@ -111,7 +111,7 @@
 c0
 37
 03
-01
+08
 c0
 37
 82
@@ -119,19 +119,19 @@
 c0
 39
 03
-48
+4f
 c0
 39
 83
-33
+3a
 c0
 3a
 83
-10
+17
 c0
 40
 82
-f0
+f7
 c0
 41
 01
@@ -139,11 +139,11 @@
 c0
 42
 02
-bb
+c2
 c0
 42
 83
-20
+27
 c0
 44
 02
@@ -155,11 +155,11 @@
 c0
 45
 83
-23
+2a
 c0
 4d
 83
-2c
+33
 c1
 7f
 80
@@ -943,7 +943,7 @@
 58
 00
 48
-43
+41
 67
 e1
 07
@@ -1123,11 +1123,11 @@
 58
 00
 48
-f7
+f5
 68
 48
 c8
-f7
+f5
 20
 20
 7a
@@ -1235,7 +1235,7 @@
 da
 20
 49
-3d
+3b
 20
 40
 7d
@@ -1327,7 +1327,7 @@
 da
 20
 49
-3d
+3b
 20
 40
 7d
@@ -1371,7 +1371,7 @@
 da
 20
 49
-3d
+3b
 20
 40
 7d
@@ -1407,7 +1407,7 @@
 6f
 e0
 c9
-4e
+4c
 20
 7a
 00
@@ -1419,7 +1419,7 @@
 d8
 c0
 49
-4f
+4d
 20
 40
 7b
@@ -1427,7 +1427,7 @@
 d8
 a0
 49
-4e
+4c
 df
 20
 00
@@ -1442,16 +1442,16 @@
 40
 d8
 c0
-4a
-0b
+49
+d1
 20
 40
 7b
 db
 d8
 a0
-4a
-0b
+49
+d1
 20
 20
 01
@@ -2279,7 +2279,7 @@
 20
 20
 03
-75
+7c
 58
 00
 00
@@ -2367,7 +2367,7 @@
 58
 00
 03
-53
+5a
 67
 e1
 45
@@ -2375,7 +2375,7 @@
 58
 00
 03
-dc
+f0
 67
 e1
 45
@@ -2383,7 +2383,7 @@
 58
 00
 04
-22
+36
 67
 e1
 45
@@ -2427,7 +2427,7 @@
 c2
 80
 02
-8b
+92
 20
 20
 02
@@ -2439,7 +2439,7 @@
 c2
 80
 82
-8f
+96
 6f
 e0
 c6
@@ -2556,18 +2556,22 @@
 60
 00
 00
+70
+46
+11
+00
 6f
 e0
 ca
-4c
+53
 c0
 02
 82
-82
+83
 c0
 05
 02
-89
+8a
 20
 60
 00
@@ -2579,7 +2583,7 @@
 6f
 e0
 ca
-4e
+55
 67
 e0
 c5
@@ -2591,7 +2595,7 @@
 d8
 c0
 4a
-4f
+56
 d8
 a0
 46
@@ -2604,10 +2608,34 @@
 45
 89
 02
-20
-60
-00
+6f
+e0
+ca
+99
+1f
+e0
+fe
+03
+67
+e0
+c5
+88
+1f
+e2
+72
 00
+d8
+c0
+4a
+97
+d8
+a0
+46
+dd
+20
+20
+7c
+da
 6f
 e0
 c6
@@ -2623,7 +2651,7 @@
 20
 20
 02
-92
+99
 6f
 e0
 c6
@@ -2659,7 +2687,7 @@
 20
 40
 02
-a9
+b0
 20
 40
 48
@@ -2743,11 +2771,11 @@
 20
 40
 02
-a4
+ab
 20
 40
 02
-e5
+ec
 24
 37
 b3
@@ -2799,7 +2827,7 @@
 20
 5a
 02
-c1
+c8
 6f
 e0
 c7
@@ -2807,7 +2835,7 @@
 c0
 7f
 82
-df
+e6
 1f
 e1
 7e
@@ -2815,11 +2843,11 @@
 c0
 00
 82
-c7
+ce
 c0
 01
 02
-d9
+e0
 20
 20
 33
@@ -2879,7 +2907,7 @@
 c0
 00
 82
-d2
+d9
 6f
 e0
 c6
@@ -2935,7 +2963,7 @@
 20
 20
 82
-d7
+de
 6f
 e1
 45
@@ -2947,7 +2975,7 @@
 20
 40
 02
-e3
+ea
 20
 20
 01
@@ -2995,7 +3023,7 @@
 20
 40
 03
-10
+17
 6f
 e0
 c7
@@ -3026,16 +3054,16 @@
 be
 20
 40
-02
-fc
+03
+03
 20
 40
 02
-e8
+ef
 20
 40
 02
-e1
+e8
 20
 40
 49
@@ -3091,7 +3119,7 @@
 c5
 13
 83
-09
+10
 6f
 e0
 c6
@@ -3235,7 +3263,7 @@
 20
 40
 02
-e5
+ec
 24
 37
 b3
@@ -3247,7 +3275,7 @@
 20
 42
 82
-af
+b6
 20
 20
 34
@@ -3367,7 +3395,7 @@
 c5
 17
 83
-4d
+54
 6f
 e0
 c5
@@ -3375,7 +3403,7 @@
 24
 3a
 03
-4d
+54
 78
 4e
 fc
@@ -3439,15 +3467,15 @@
 20
 40
 03
-5d
+64
 20
 40
 03
-69
+70
 20
 20
 03
-54
+5b
 d8
 40
 ff
@@ -3575,43 +3603,43 @@
 c0
 7b
 83
-a1
+a8
 c0
 7b
 03
-af
+b6
 c0
 7a
 83
-8f
+96
 c0
 79
 83
-9f
+a6
 c0
 7a
 03
-99
+a0
 c0
 7e
 03
-b2
+b9
 c0
 7f
 03
-b8
+c1
 c0
 3d
 03
-bb
+c7
 c0
 50
 03
-c3
+ce
 c0
 50
 83
-d1
+e4
 20
 20
 48
@@ -3623,14 +3651,14 @@
 d8
 a0
 4a
-4e
+55
 20
 20
 7c
 a1
 70
 4a
-4d
+54
 01
 70
 46
@@ -3643,7 +3671,7 @@
 d8
 a0
 4a
-4f
+56
 20
 20
 7c
@@ -3659,7 +3687,7 @@
 20
 40
 03
-87
+8e
 6f
 e0
 88
@@ -3667,7 +3695,7 @@
 67
 e0
 ca
-4c
+53
 6f
 e0
 88
@@ -3675,10 +3703,10 @@
 67
 e0
 c9
-4d
+4b
 70
 4a
-4e
+55
 04
 df
 20
@@ -3687,7 +3715,7 @@
 20
 20
 03
-8a
+91
 6f
 e0
 88
@@ -3699,7 +3727,7 @@
 20
 40
 03
-87
+8e
 6f
 e0
 88
@@ -3707,67 +3735,67 @@
 67
 e0
 ca
-4c
+53
 20
 20
 03
-96
+9d
 70
 49
-52
+50
 01
 20
 20
 04
-0a
+1e
 58
 00
 00
 64
 67
 e0
-ca
-0b
+c9
+d1
 58
 00
 00
 64
 67
 e0
-ca
-0c
+c9
+d2
 58
 00
 00
 00
 67
 e0
-ca
-0d
+c9
+d3
 58
 00
 00
 00
 67
 e0
-ca
-0e
+c9
+d4
 58
 00
 00
 01
 67
 e0
-ca
-0f
+c9
+d5
 6f
 e2
 45
 8f
 67
 e2
-4a
-12
+49
+d8
 70
 09
 0c
@@ -3775,55 +3803,75 @@
 20
 20
 04
-19
+2d
 6f
 e0
 88
-77
+76
 67
 e0
-c7
-ff
+ca
+53
 20
 60
 00
 00
-70
-08
-75
+6f
+e0
+88
+76
+67
+e0
+ca
+53
+df
+20
 00
+40
 d8
 c0
-48
-03
-d8
-a0
 08
 b5
-df
-20
-00
-40
+d8
+a0
+49
+d1
 20
 40
 7c
 cc
-20
-20
-48
-7a
+70
+09
+0c
+24
+20
+20
+04
+2d
 6f
 e0
 88
-77
+76
 67
 e0
-c8
+ca
+12
+1f
+e2
+72
 00
+d8
+c0
+08
+77
+d8
+a0
+4a
+13
 20
 20
-48
-7a
+7c
+cc
 70
 46
 16
@@ -3835,59 +3883,55 @@
 6f
 e0
 88
-77
+76
 67
 e0
-c8
-01
+c7
+ff
 6f
 e0
 88
-78
+77
 67
 e0
 c8
-02
-70
-08
-b6
-01
-20
+00
 20
-48
-80
+60
+00
+00
 6f
 e0
 88
-77
+76
 67
 e0
 c9
-8f
+8d
 6f
 e0
 88
-78
+77
 67
 e0
 c9
-90
+8e
 6f
 e0
 88
-79
+78
 67
 e0
 c9
-91
+8f
 6f
 e0
 88
-7a
+79
 67
 e0
 c9
-92
+90
 1f
 e2
 72
@@ -3895,67 +3939,103 @@
 d8
 c0
 08
-7e
+7d
 d8
 a0
 49
-93
+91
 20
 40
 7c
 cc
 70
-08
-b6
+4a
+53
+0a
+70
+4a
+96
 01
+70
+4a
+97
+a2
+70
+4a
+98
+0a
+6f
+e0
+c9
+90
+67
+e0
+ca
+99
+1f
+e2
+72
+00
+d8
+c0
+08
+7d
+d8
+a0
+4a
+9a
 20
 20
-48
-80
+7c
+da
 6f
 e0
 88
-77
+76
 67
 e0
 c9
-8f
+8d
 6f
 e0
 88
-78
+77
 67
 e0
 c9
-90
+8e
 6f
 e0
 88
-79
+78
 67
 e0
 c9
-91
+8f
 df
 20
 00
 40
 d8
-a0
-49
-cb
+c0
+4a
+d8
 d8
 a0
-08
-b6
+49
+d1
 20
 40
 7c
 cc
+70
+09
+0c
+24
 20
 20
-48
-80
+04
+2d
 70
 46
 11
@@ -3967,15 +4047,15 @@
 c2
 83
 04
-04
+18
 c2
 83
 84
-11
+25
 c2
 82
 84
-14
+28
 6f
 e0
 c5
@@ -3986,12 +4066,12 @@
 09
 20
 22
-83
-f1
+84
+05
 20
 40
-03
-f1
+04
+05
 6f
 e0
 c5
@@ -4027,15 +4107,15 @@
 c2
 83
 04
-04
+18
 c2
 83
 84
-11
+25
 c2
 82
 84
-14
+28
 20
 60
 00
@@ -4079,19 +4159,19 @@
 67
 e3
 c9
-45
+43
 6f
 e0
 c9
-45
+43
 68
 48
 c9
-4c
+4a
 67
 e0
 c9
-4c
+4a
 98
 46
 7c
@@ -4099,11 +4179,11 @@
 24
 22
 84
-02
+16
 6f
 e3
 49
-46
+44
 20
 7a
 00
@@ -4115,7 +4195,7 @@
 20
 20
 04
-19
+2d
 6f
 e0
 c7
@@ -4123,11 +4203,11 @@
 68
 48
 c9
-4d
+4b
 67
 e0
 c9
-4d
+4b
 98
 46
 7c
@@ -4138,28 +4218,28 @@
 00
 70
 49
-52
+50
 00
 70
 49
-4e
+4c
 40
 70
 49
-4f
+4d
 a1
 70
 49
-50
+4e
 05
 6f
 e0
 c9
-4d
+4b
 67
 e0
 c9
-51
+4f
 70
 09
 0c
@@ -4167,7 +4247,7 @@
 20
 20
 04
-19
+2d
 6f
 e0
 c7
@@ -4183,14 +4263,14 @@
 6f
 e0
 ca
-4d
+54
 20
 7a
 00
 00
 70
 4a
-4d
+54
 00
 70
 46
@@ -4211,7 +4291,7 @@
 da
 20
 49
-3d
+3b
 20
 40
 7d
@@ -4231,7 +4311,7 @@
 da
 20
 49
-3d
+3b
 20
 20
 7d
@@ -4239,19 +4319,31 @@
 6f
 e0
 c7
+b1
+c2
+83
+04
+4f
+c2
+82
+84
+4a
+6f
+e0
+c7
 b2
 c0
 00
 04
-27
+3e
 c0
 01
 04
-2d
+44
 c0
 01
 84
-30
+47
 20
 20
 33
@@ -4278,32 +4370,116 @@
 b3
 20
 20
-48
-ef
-d8
-a0
-09
-43
+48
+ef
+d8
+a0
+09
+43
+d8
+c0
+47
+b2
+20
+20
+49
+1f
+d8
+a0
+09
+33
+d8
+c0
+47
+b2
+20
+20
+49
+07
+6f
+e0
+ca
+96
+20
+7a
+00
+00
+70
+4a
+96
+00
+70
+46
+11
+08
+20
+60
+00
+00
+6f
+e0
+c7
+b0
+1f
+e0
+ff
+ff
+1f
+e2
+72
+00
+6f
+e1
+4b
+79
+20
+5a
+04
+5a
+24
+5a
+04
+5c
 d8
 c0
 47
 b2
 20
+40
+7c
+cc
+18
+a2
+7e
+00
+67
+e1
+4b
+79
 20
-49
-1f
+60
+00
+00
 d8
 a0
-09
-33
+4a
 d8
-c0
-47
-b2
 20
+60
+00
+00
+6f
+e1
+4b
+79
+1f
+e2
+0a
+00
 20
-49
-07
+60
+00
+00
 da
 20
 00
@@ -4319,7 +4495,7 @@
 c2
 00
 04
-34
+60
 1a
 21
 22
@@ -4328,8 +4504,8 @@
 60
 00
 00
-66
-7c
+83
+0e
 aa
 55
 40
@@ -4511,7 +4687,7 @@
 55
 43
 00
-f7
+f5
 48
 42
 09
@@ -4584,7 +4760,7 @@
 55
 a2
 00
-43
+41
 48
 a1
 05
@@ -4940,186 +5116,10 @@
 aa
 aa
 55
-56
+52
 80
-9d
-37
-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
-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
-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
+e8
+62
 ff
 ff
 ff
@@ -8188,5 +8188,5 @@
 ff
 ff
 ff
-21
-3c
+b4
+f3
Index: output/flash.dat
===================================================================
--- /branch/keyboard/customer_FW/RY_project/RY_Dongle/output/flash.dat	(revision 1988)
+++ /branch/keyboard/customer_FW/RY_project/RY_Dongle/output/flash.dat	(working copy)
@@ -2,8 +2,8 @@
 02
 aa
 55
-da
-10
+96
+11
 c2
 84
 00
@@ -59,7 +59,7 @@
 c0
 1f
 02
-95
+9c
 c0
 58
 82
@@ -111,7 +111,7 @@
 c0
 37
 03
-01
+08
 c0
 37
 82
@@ -119,19 +119,19 @@
 c0
 39
 03
-48
+4f
 c0
 39
 83
-33
+3a
 c0
 3a
 83
-10
+17
 c0
 40
 82
-f0
+f7
 c0
 41
 01
@@ -139,11 +139,11 @@
 c0
 42
 02
-bb
+c2
 c0
 42
 83
-20
+27
 c0
 44
 02
@@ -155,11 +155,11 @@
 c0
 45
 83
-23
+2a
 c0
 4d
 83
-2c
+33
 c1
 7f
 80
@@ -943,7 +943,7 @@
 58
 00
 48
-43
+41
 67
 e1
 07
@@ -1123,11 +1123,11 @@
 58
 00
 48
-f7
+f5
 68
 48
 c8
-f7
+f5
 20
 20
 7a
@@ -1235,7 +1235,7 @@
 da
 20
 49
-3d
+3b
 20
 40
 7d
@@ -1327,7 +1327,7 @@
 da
 20
 49
-3d
+3b
 20
 40
 7d
@@ -1371,7 +1371,7 @@
 da
 20
 49
-3d
+3b
 20
 40
 7d
@@ -1407,7 +1407,7 @@
 6f
 e0
 c9
-4e
+4c
 20
 7a
 00
@@ -1419,7 +1419,7 @@
 d8
 c0
 49
-4f
+4d
 20
 40
 7b
@@ -1427,7 +1427,7 @@
 d8
 a0
 49
-4e
+4c
 df
 20
 00
@@ -1442,16 +1442,16 @@
 40
 d8
 c0
-4a
-0b
+49
+d1
 20
 40
 7b
 db
 d8
 a0
-4a
-0b
+49
+d1
 20
 20
 01
@@ -2279,7 +2279,7 @@
 20
 20
 03
-75
+7c
 58
 00
 00
@@ -2367,7 +2367,7 @@
 58
 00
 03
-53
+5a
 67
 e1
 45
@@ -2375,7 +2375,7 @@
 58
 00
 03
-d9
+f0
 67
 e1
 45
@@ -2383,7 +2383,7 @@
 58
 00
 04
-1f
+36
 67
 e1
 45
@@ -2427,7 +2427,7 @@
 c2
 80
 02
-8b
+92
 20
 20
 02
@@ -2439,7 +2439,7 @@
 c2
 80
 82
-8f
+96
 6f
 e0
 c6
@@ -2556,18 +2556,22 @@
 60
 00
 00
+70
+46
+11
+00
 6f
 e0
 ca
-4c
+53
 c0
 02
 82
-82
+83
 c0
 05
 02
-89
+8a
 20
 60
 00
@@ -2579,7 +2583,7 @@
 6f
 e0
 ca
-4e
+55
 67
 e0
 c5
@@ -2591,7 +2595,7 @@
 d8
 c0
 4a
-4f
+56
 d8
 a0
 46
@@ -2604,10 +2608,34 @@
 45
 89
 02
-20
-60
-00
+6f
+e0
+ca
+99
+1f
+e0
+fe
+03
+67
+e0
+c5
+88
+1f
+e2
+72
 00
+d8
+c0
+4a
+97
+d8
+a0
+46
+dd
+20
+20
+7c
+da
 6f
 e0
 c6
@@ -2623,7 +2651,7 @@
 20
 20
 02
-92
+99
 6f
 e0
 c6
@@ -2659,7 +2687,7 @@
 20
 40
 02
-a9
+b0
 20
 40
 48
@@ -2743,11 +2771,11 @@
 20
 40
 02
-a4
+ab
 20
 40
 02
-e5
+ec
 24
 37
 b3
@@ -2799,7 +2827,7 @@
 20
 5a
 02
-c1
+c8
 6f
 e0
 c7
@@ -2807,7 +2835,7 @@
 c0
 7f
 82
-df
+e6
 1f
 e1
 7e
@@ -2815,11 +2843,11 @@
 c0
 00
 82
-c7
+ce
 c0
 01
 02
-d9
+e0
 20
 20
 33
@@ -2879,7 +2907,7 @@
 c0
 00
 82
-d2
+d9
 6f
 e0
 c6
@@ -2935,7 +2963,7 @@
 20
 20
 82
-d7
+de
 6f
 e1
 45
@@ -2947,7 +2975,7 @@
 20
 40
 02
-e3
+ea
 20
 20
 01
@@ -2995,7 +3023,7 @@
 20
 40
 03
-10
+17
 6f
 e0
 c7
@@ -3026,16 +3054,16 @@
 be
 20
 40
-02
-fc
+03
+03
 20
 40
 02
-e8
+ef
 20
 40
 02
-e1
+e8
 20
 40
 49
@@ -3091,7 +3119,7 @@
 c5
 13
 83
-09
+10
 6f
 e0
 c6
@@ -3235,7 +3263,7 @@
 20
 40
 02
-e5
+ec
 24
 37
 b3
@@ -3247,7 +3275,7 @@
 20
 42
 82
-af
+b6
 20
 20
 34
@@ -3367,7 +3395,7 @@
 c5
 17
 83
-4d
+54
 6f
 e0
 c5
@@ -3375,7 +3403,7 @@
 24
 3a
 03
-4d
+54
 78
 4e
 fc
@@ -3439,15 +3467,15 @@
 20
 40
 03
-5d
+64
 20
 40
 03
-69
+70
 20
 20
 03
-54
+5b
 d8
 40
 ff
@@ -3575,39 +3603,43 @@
 c0
 7b
 83
-9e
+a8
 c0
 7b
 03
-ac
+b6
 c0
 7a
 83
-8e
+96
+c0
+79
+83
+a6
 c0
 7a
 03
-98
+a0
 c0
 7e
 03
-af
+b9
 c0
 7f
 03
-b5
+c1
 c0
 3d
 03
-b8
+c7
 c0
 50
 03
-c0
+ce
 c0
 50
 83
-ce
+e4
 20
 20
 48
@@ -3619,14 +3651,14 @@
 d8
 a0
 4a
-4e
+55
 20
 20
 7c
 a1
 70
 4a
-4d
+54
 01
 70
 46
@@ -3639,7 +3671,7 @@
 d8
 a0
 4a
-4f
+56
 20
 20
 7c
@@ -3655,7 +3687,7 @@
 20
 40
 03
-86
+8e
 6f
 e0
 88
@@ -3663,7 +3695,7 @@
 67
 e0
 ca
-4c
+53
 6f
 e0
 88
@@ -3671,10 +3703,10 @@
 67
 e0
 c9
-4d
+4b
 70
 4a
-4e
+55
 04
 df
 20
@@ -3683,7 +3715,7 @@
 20
 20
 03
-89
+91
 6f
 e0
 88
@@ -3695,7 +3727,7 @@
 20
 40
 03
-86
+8e
 6f
 e0
 88
@@ -3703,59 +3735,67 @@
 67
 e0
 ca
-4c
+53
 20
 20
 03
-95
+9d
+70
+49
+50
+01
+20
+20
+04
+1e
 58
 00
 00
 64
 67
 e0
-ca
-0b
+c9
+d1
 58
 00
 00
 64
 67
 e0
-ca
-0c
+c9
+d2
 58
 00
 00
 00
 67
 e0
-ca
-0d
+c9
+d3
 58
 00
 00
 00
 67
 e0
-ca
-0e
+c9
+d4
 58
 00
 00
 01
 67
 e0
-ca
-0f
+c9
+d5
 6f
 e2
 45
 8f
 67
 e2
-4a
-12
+49
+d8
 70
 09
 0c
@@ -3763,55 +3803,75 @@
 20
 20
 04
-16
+2d
 6f
 e0
 88
-77
+76
 67
 e0
-c7
-ff
+ca
+53
 20
 60
 00
 00
-70
-08
-75
+6f
+e0
+88
+76
+67
+e0
+ca
+53
+df
+20
 00
+40
 d8
 c0
-48
-03
-d8
-a0
 08
 b5
-df
-20
-00
-40
+d8
+a0
+49
+d1
 20
 40
 7c
 cc
+70
+09
+0c
+24
 20
 20
-48
-7a
+04
+2d
 6f
 e0
 88
-77
+76
 67
 e0
-c8
+ca
+12
+1f
+e2
+72
 00
+d8
+c0
+08
+77
+d8
+a0
+4a
+13
 20
 20
-48
-7a
+7c
+cc
 70
 46
 16
@@ -3823,59 +3883,55 @@
 6f
 e0
 88
-77
+76
 67
 e0
-c8
-01
+c7
+ff
 6f
 e0
 88
-78
+77
 67
 e0
 c8
-02
-70
-08
-b6
-01
-20
+00
 20
-48
-80
+60
+00
+00
 6f
 e0
 88
-77
+76
 67
 e0
 c9
-8f
+8d
 6f
 e0
 88
-78
+77
 67
 e0
 c9
-90
+8e
 6f
 e0
 88
-79
+78
 67
 e0
 c9
-91
+8f
 6f
 e0
 88
-7a
+79
 67
 e0
 c9
-92
+90
 1f
 e2
 72
@@ -3883,67 +3939,103 @@
 d8
 c0
 08
-7e
+7d
 d8
 a0
 49
-93
+91
 20
 40
 7c
 cc
 70
-08
-b6
+4a
+53
+0a
+70
+4a
+96
 01
+70
+4a
+97
+a2
+70
+4a
+98
+0a
+6f
+e0
+c9
+90
+67
+e0
+ca
+99
+1f
+e2
+72
+00
+d8
+c0
+08
+7d
+d8
+a0
+4a
+9a
 20
 20
-48
-80
+7c
+da
 6f
 e0
 88
-77
+76
 67
 e0
 c9
-8f
+8d
 6f
 e0
 88
-78
+77
 67
 e0
 c9
-90
+8e
 6f
 e0
 88
-79
+78
 67
 e0
 c9
-91
+8f
 df
 20
 00
 40
 d8
-a0
-49
-cb
+c0
+4a
+d8
 d8
 a0
-08
-b6
+49
+d1
 20
 40
 7c
 cc
+70
+09
+0c
+24
 20
 20
-48
-80
+04
+2d
 70
 46
 11
@@ -3955,15 +4047,15 @@
 c2
 83
 04
-01
+18
 c2
 83
 84
-0e
+25
 c2
 82
 84
-11
+28
 6f
 e0
 c5
@@ -3974,12 +4066,12 @@
 09
 20
 22
-83
-ee
+84
+05
 20
 40
-03
-ee
+04
+05
 6f
 e0
 c5
@@ -4015,15 +4107,15 @@
 c2
 83
 04
-01
+18
 c2
 83
 84
-0e
+25
 c2
 82
 84
-11
+28
 20
 60
 00
@@ -4067,31 +4159,31 @@
 67
 e3
 c9
-45
+43
 6f
 e0
 c9
-45
+43
 68
 48
 c9
-4c
+4a
 67
 e0
 c9
-4c
+4a
 98
 46
 7c
 00
 24
 22
-83
-ff
+84
+16
 6f
 e3
 49
-46
+44
 20
 7a
 00
@@ -4103,7 +4195,7 @@
 20
 20
 04
-16
+2d
 6f
 e0
 c7
@@ -4111,11 +4203,11 @@
 68
 48
 c9
-4d
+4b
 67
 e0
 c9
-4d
+4b
 98
 46
 7c
@@ -4126,28 +4218,28 @@
 00
 70
 49
-4e
+50
+00
+70
+49
+4c
 40
 70
 49
-4f
+4d
 a1
 70
 49
-50
+4e
 05
 6f
 e0
 c9
-4d
+4b
 67
 e0
 c9
-51
-70
-49
-52
-00
+4f
 70
 09
 0c
@@ -4155,7 +4247,7 @@
 20
 20
 04
-16
+2d
 6f
 e0
 c7
@@ -4171,14 +4263,14 @@
 6f
 e0
 ca
-4d
+54
 20
 7a
 00
 00
 70
 4a
-4d
+54
 00
 70
 46
@@ -4199,7 +4291,7 @@
 da
 20
 49
-3d
+3b
 20
 40
 7d
@@ -4219,7 +4311,7 @@
 da
 20
 49
-3d
+3b
 20
 20
 7d
@@ -4227,19 +4319,31 @@
 6f
 e0
 c7
+b1
+c2
+83
+04
+4f
+c2
+82
+84
+4a
+6f
+e0
+c7
 b2
 c0
 00
 04
-24
+3e
 c0
 01
 04
-2a
+44
 c0
 01
 84
-2d
+47
 20
 20
 33
@@ -4278,20 +4382,104 @@
 b2
 20
 20
-49
-1f
+49
+1f
+d8
+a0
+09
+33
+d8
+c0
+47
+b2
+20
+20
+49
+07
+6f
+e0
+ca
+96
+20
+7a
+00
+00
+70
+4a
+96
+00
+70
+46
+11
+08
+20
+60
+00
+00
+6f
+e0
+c7
+b0
+1f
+e0
+ff
+ff
+1f
+e2
+72
+00
+6f
+e1
+4b
+79
+20
+5a
+04
+5a
+24
+5a
+04
+5c
+d8
+c0
+47
+b2
+20
+40
+7c
+cc
+18
+a2
+7e
+00
+67
+e1
+4b
+79
+20
+60
+00
+00
 d8
 a0
-09
-33
+4a
 d8
-c0
-47
-b2
 20
+60
+00
+00
+6f
+e1
+4b
+79
+1f
+e2
+0a
+00
 20
-49
-07
+60
+00
+00
 da
 20
 00
@@ -4307,7 +4495,7 @@
 c2
 00
 04
-31
+60
 1a
 21
 22
@@ -4316,8 +4504,8 @@
 60
 00
 00
-f7
-1f
+83
+0e
 aa
 55
 40
@@ -4499,7 +4687,7 @@
 55
 43
 00
-f7
+f5
 48
 42
 09
@@ -4572,7 +4760,7 @@
 55
 a2
 00
-43
+41
 48
 a1
 05
@@ -4928,198 +5116,10 @@
 aa
 aa
 55
-56
+52
 80
-10
-b3
-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
-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
-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
+e8
+62
 ff
 ff
 ff
@@ -8188,5 +8188,5 @@
 ff
 ff
 ff
-a2
-7a
+b4
+f3
Index: output/memmap.format
===================================================================
--- /branch/keyboard/customer_FW/RY_project/RY_Dongle/output/memmap.format	(revision 1988)
+++ /branch/keyboard/customer_FW/RY_project/RY_Dongle/output/memmap.format	(working copy)
@@ -1496,28 +1496,31 @@
 0x47fc mem_dg_keyboard_connected_status
 0x47fd mem_dg_mouse_connected_status
 0x47fe mem_dg_usb_driver_set_end
-0x47ff mem_dg_data_type
-0x4800 mem_dg_data_len
-0x4801 mem_dg_test_mode
-0x4802 mem_dg_test_ch
-0x4803 mem_dg_usb_get_buff
-0x4843 mem_usb_ep2_config
-0x48f7 mem_config_new
-0x493d mem_usb_ep2_fifo
-0x4945 mem_dg_mouse_data
-0x494c mem_dg_mouse_key_data_last
-0x494d mem_dg_mouse_dpi_level
-0x494e mem_usb_dpi_info_data
-0x498f mem_dg_keyboard_keymatrix_profile
-0x4990 mem_dg_keyboard_keymatrix_type
-0x4991 mem_dg_keyboard_keymatrix_page
-0x4992 mem_dg_keyboard_keymatrix_len
-0x4993 mem_dg_keyboard_keymatrix_setup_keyvalue
-0x49cb mem_dg_keyboard_keymatrix_getup_keyvalue
-0x4a0b mem_dg_protocol_usb_in_data_buff
-0x4a4c mem_24g_device_type
-0x4a4d mem_dongle_ms_ep2_ack_data_flag
-0x4a4e mem_dongle_ms_ep2_ack_data
+0x47ff mem_dg_test_mode
+0x4800 mem_dg_test_ch
+0x4801 mem_dg_usb_get_buff
+0x4841 mem_usb_ep2_config
+0x48f5 mem_config_new
+0x493b mem_usb_ep2_fifo
+0x4943 mem_dg_mouse_data
+0x494a mem_dg_mouse_key_data_last
+0x494b mem_dg_mouse_dpi_level
+0x494c mem_usb_dpi_info_data
+0x498d mem_dg_keyboard_keymatrix_profile
+0x498e mem_dg_keyboard_keymatrix_type
+0x498f mem_dg_keyboard_keymatrix_page
+0x4990 mem_dg_keyboard_keymatrix_len
+0x4991 mem_dg_keyboard_keymatrix_setup_keyvalue
+0x49d1 mem_dg_protocol_usb_in_data_buff
+0x4a12 mem_dg_protocol_usb_out_data_buff
+0x4a53 mem_24g_device_type
+0x4a54 mem_dg_ms_ep2_ack_data_flag
+0x4a55 mem_dg_ms_ep2_ack_data
+0x4a96 mem_dg_kb_ep2_ack_data_flag
+0x4a97 mem_dg_kb_ep2_ack_data
+0x4ad8 mem_dg_kb_keymatrix_buff
+0x4b78 mem_dg_receive_keymatrix_count
+0x4b79 mem_keymatrix_wptr
 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 1988)
+++ /branch/keyboard/customer_FW/RY_project/RY_Dongle/output/otp.dat	(working copy)
@@ -11,8 +11,8 @@
 00
 aa
 55
-e6
-10
+96
+11
 c2
 84
 00
@@ -68,7 +68,7 @@
 c0
 1f
 02
-95
+9c
 c0
 58
 82
@@ -120,7 +120,7 @@
 c0
 37
 03
-01
+08
 c0
 37
 82
@@ -128,19 +128,19 @@
 c0
 39
 03
-48
+4f
 c0
 39
 83
-33
+3a
 c0
 3a
 83
-10
+17
 c0
 40
 82
-f0
+f7
 c0
 41
 01
@@ -148,11 +148,11 @@
 c0
 42
 02
-bb
+c2
 c0
 42
 83
-20
+27
 c0
 44
 02
@@ -164,11 +164,11 @@
 c0
 45
 83
-23
+2a
 c0
 4d
 83
-2c
+33
 c1
 7f
 80
@@ -952,7 +952,7 @@
 58
 00
 48
-43
+41
 67
 e1
 07
@@ -1132,11 +1132,11 @@
 58
 00
 48
-f7
+f5
 68
 48
 c8
-f7
+f5
 20
 20
 7a
@@ -1244,7 +1244,7 @@
 da
 20
 49
-3d
+3b
 20
 40
 7d
@@ -1336,7 +1336,7 @@
 da
 20
 49
-3d
+3b
 20
 40
 7d
@@ -1380,7 +1380,7 @@
 da
 20
 49
-3d
+3b
 20
 40
 7d
@@ -1416,7 +1416,7 @@
 6f
 e0
 c9
-4e
+4c
 20
 7a
 00
@@ -1428,7 +1428,7 @@
 d8
 c0
 49
-4f
+4d
 20
 40
 7b
@@ -1436,7 +1436,7 @@
 d8
 a0
 49
-4e
+4c
 df
 20
 00
@@ -1451,16 +1451,16 @@
 40
 d8
 c0
-4a
-0b
+49
+d1
 20
 40
 7b
 db
 d8
 a0
-4a
-0b
+49
+d1
 20
 20
 01
@@ -2288,7 +2288,7 @@
 20
 20
 03
-75
+7c
 58
 00
 00
@@ -2376,7 +2376,7 @@
 58
 00
 03
-53
+5a
 67
 e1
 45
@@ -2384,7 +2384,7 @@
 58
 00
 03
-dc
+f0
 67
 e1
 45
@@ -2392,7 +2392,7 @@
 58
 00
 04
-22
+36
 67
 e1
 45
@@ -2436,7 +2436,7 @@
 c2
 80
 02
-8b
+92
 20
 20
 02
@@ -2448,7 +2448,7 @@
 c2
 80
 82
-8f
+96
 6f
 e0
 c6
@@ -2565,18 +2565,22 @@
 60
 00
 00
+70
+46
+11
+00
 6f
 e0
 ca
-4c
+53
 c0
 02
 82
-82
+83
 c0
 05
 02
-89
+8a
 20
 60
 00
@@ -2588,7 +2592,7 @@
 6f
 e0
 ca
-4e
+55
 67
 e0
 c5
@@ -2600,7 +2604,7 @@
 d8
 c0
 4a
-4f
+56
 d8
 a0
 46
@@ -2613,10 +2617,34 @@
 45
 89
 02
-20
-60
-00
+6f
+e0
+ca
+99
+1f
+e0
+fe
+03
+67
+e0
+c5
+88
+1f
+e2
+72
 00
+d8
+c0
+4a
+97
+d8
+a0
+46
+dd
+20
+20
+7c
+da
 6f
 e0
 c6
@@ -2632,7 +2660,7 @@
 20
 20
 02
-92
+99
 6f
 e0
 c6
@@ -2668,7 +2696,7 @@
 20
 40
 02
-a9
+b0
 20
 40
 48
@@ -2752,11 +2780,11 @@
 20
 40
 02
-a4
+ab
 20
 40
 02
-e5
+ec
 24
 37
 b3
@@ -2808,7 +2836,7 @@
 20
 5a
 02
-c1
+c8
 6f
 e0
 c7
@@ -2816,7 +2844,7 @@
 c0
 7f
 82
-df
+e6
 1f
 e1
 7e
@@ -2824,11 +2852,11 @@
 c0
 00
 82
-c7
+ce
 c0
 01
 02
-d9
+e0
 20
 20
 33
@@ -2888,7 +2916,7 @@
 c0
 00
 82
-d2
+d9
 6f
 e0
 c6
@@ -2944,7 +2972,7 @@
 20
 20
 82
-d7
+de
 6f
 e1
 45
@@ -2956,7 +2984,7 @@
 20
 40
 02
-e3
+ea
 20
 20
 01
@@ -3004,7 +3032,7 @@
 20
 40
 03
-10
+17
 6f
 e0
 c7
@@ -3035,16 +3063,16 @@
 be
 20
 40
-02
-fc
+03
+03
 20
 40
 02
-e8
+ef
 20
 40
 02
-e1
+e8
 20
 40
 49
@@ -3100,7 +3128,7 @@
 c5
 13
 83
-09
+10
 6f
 e0
 c6
@@ -3244,7 +3272,7 @@
 20
 40
 02
-e5
+ec
 24
 37
 b3
@@ -3256,7 +3284,7 @@
 20
 42
 82
-af
+b6
 20
 20
 34
@@ -3376,7 +3404,7 @@
 c5
 17
 83
-4d
+54
 6f
 e0
 c5
@@ -3384,7 +3412,7 @@
 24
 3a
 03
-4d
+54
 78
 4e
 fc
@@ -3448,15 +3476,15 @@
 20
 40
 03
-5d
+64
 20
 40
 03
-69
+70
 20
 20
 03
-54
+5b
 d8
 40
 ff
@@ -3584,43 +3612,43 @@
 c0
 7b
 83
-a1
+a8
 c0
 7b
 03
-af
+b6
 c0
 7a
 83
-8f
+96
 c0
 79
 83
-9f
+a6
 c0
 7a
 03
-99
+a0
 c0
 7e
 03
-b2
+b9
 c0
 7f
 03
-b8
+c1
 c0
 3d
 03
-bb
+c7
 c0
 50
 03
-c3
+ce
 c0
 50
 83
-d1
+e4
 20
 20
 48
@@ -3632,14 +3660,14 @@
 d8
 a0
 4a
-4e
+55
 20
 20
 7c
 a1
 70
 4a
-4d
+54
 01
 70
 46
@@ -3652,7 +3680,7 @@
 d8
 a0
 4a
-4f
+56
 20
 20
 7c
@@ -3668,7 +3696,7 @@
 20
 40
 03
-87
+8e
 6f
 e0
 88
@@ -3676,7 +3704,7 @@
 67
 e0
 ca
-4c
+53
 6f
 e0
 88
@@ -3684,10 +3712,10 @@
 67
 e0
 c9
-4d
+4b
 70
 4a
-4e
+55
 04
 df
 20
@@ -3696,7 +3724,7 @@
 20
 20
 03
-8a
+91
 6f
 e0
 88
@@ -3708,7 +3736,7 @@
 20
 40
 03
-87
+8e
 6f
 e0
 88
@@ -3716,67 +3744,67 @@
 67
 e0
 ca
-4c
+53
 20
 20
 03
-96
+9d
 70
 49
-52
+50
 01
 20
 20
 04
-0a
+1e
 58
 00
 00
 64
 67
 e0
-ca
-0b
+c9
+d1
 58
 00
 00
 64
 67
 e0
-ca
-0c
+c9
+d2
 58
 00
 00
 00
 67
 e0
-ca
-0d
+c9
+d3
 58
 00
 00
 00
 67
 e0
-ca
-0e
+c9
+d4
 58
 00
 00
 01
 67
 e0
-ca
-0f
+c9
+d5
 6f
 e2
 45
 8f
 67
 e2
-4a
-12
+49
+d8
 70
 09
 0c
@@ -3784,55 +3812,75 @@
 20
 20
 04
-19
+2d
 6f
 e0
 88
-77
+76
 67
 e0
-c7
-ff
+ca
+53
 20
 60
 00
 00
-70
-08
-75
+6f
+e0
+88
+76
+67
+e0
+ca
+53
+df
+20
 00
+40
 d8
 c0
-48
-03
-d8
-a0
 08
 b5
-df
-20
-00
-40
+d8
+a0
+49
+d1
 20
 40
 7c
 cc
-20
-20
-48
-7a
+70
+09
+0c
+24
+20
+20
+04
+2d
 6f
 e0
 88
-77
+76
 67
 e0
-c8
+ca
+12
+1f
+e2
+72
 00
+d8
+c0
+08
+77
+d8
+a0
+4a
+13
 20
 20
-48
-7a
+7c
+cc
 70
 46
 16
@@ -3844,59 +3892,55 @@
 6f
 e0
 88
-77
+76
 67
 e0
-c8
-01
+c7
+ff
 6f
 e0
 88
-78
+77
 67
 e0
 c8
-02
-70
-08
-b6
-01
-20
+00
 20
-48
-80
+60
+00
+00
 6f
 e0
 88
-77
+76
 67
 e0
 c9
-8f
+8d
 6f
 e0
 88
-78
+77
 67
 e0
 c9
-90
+8e
 6f
 e0
 88
-79
+78
 67
 e0
 c9
-91
+8f
 6f
 e0
 88
-7a
+79
 67
 e0
 c9
-92
+90
 1f
 e2
 72
@@ -3904,67 +3948,103 @@
 d8
 c0
 08
-7e
+7d
 d8
 a0
 49
-93
+91
 20
 40
 7c
 cc
 70
-08
-b6
+4a
+53
+0a
+70
+4a
+96
 01
+70
+4a
+97
+a2
+70
+4a
+98
+0a
+6f
+e0
+c9
+90
+67
+e0
+ca
+99
+1f
+e2
+72
+00
+d8
+c0
+08
+7d
+d8
+a0
+4a
+9a
 20
 20
-48
-80
+7c
+da
 6f
 e0
 88
-77
+76
 67
 e0
 c9
-8f
+8d
 6f
 e0
 88
-78
+77
 67
 e0
 c9
-90
+8e
 6f
 e0
 88
-79
+78
 67
 e0
 c9
-91
+8f
 df
 20
 00
 40
 d8
-a0
-49
-cb
+c0
+4a
+d8
 d8
 a0
-08
-b6
+49
+d1
 20
 40
 7c
 cc
+70
+09
+0c
+24
 20
 20
-48
-80
+04
+2d
 70
 46
 11
@@ -3976,15 +4056,15 @@
 c2
 83
 04
-04
+18
 c2
 83
 84
-11
+25
 c2
 82
 84
-14
+28
 6f
 e0
 c5
@@ -3995,12 +4075,12 @@
 09
 20
 22
-83
-f1
+84
+05
 20
 40
-03
-f1
+04
+05
 6f
 e0
 c5
@@ -4036,15 +4116,15 @@
 c2
 83
 04
-04
+18
 c2
 83
 84
-11
+25
 c2
 82
 84
-14
+28
 20
 60
 00
@@ -4088,19 +4168,19 @@
 67
 e3
 c9
-45
+43
 6f
 e0
 c9
-45
+43
 68
 48
 c9
-4c
+4a
 67
 e0
 c9
-4c
+4a
 98
 46
 7c
@@ -4108,11 +4188,11 @@
 24
 22
 84
-02
+16
 6f
 e3
 49
-46
+44
 20
 7a
 00
@@ -4124,7 +4204,7 @@
 20
 20
 04
-19
+2d
 6f
 e0
 c7
@@ -4132,11 +4212,11 @@
 68
 48
 c9
-4d
+4b
 67
 e0
 c9
-4d
+4b
 98
 46
 7c
@@ -4147,28 +4227,28 @@
 00
 70
 49
-52
+50
 00
 70
 49
-4e
+4c
 40
 70
 49
-4f
+4d
 a1
 70
 49
-50
+4e
 05
 6f
 e0
 c9
-4d
+4b
 67
 e0
 c9
-51
+4f
 70
 09
 0c
@@ -4176,7 +4256,7 @@
 20
 20
 04
-19
+2d
 6f
 e0
 c7
@@ -4192,14 +4272,14 @@
 6f
 e0
 ca
-4d
+54
 20
 7a
 00
 00
 70
 4a
-4d
+54
 00
 70
 46
@@ -4220,7 +4300,7 @@
 da
 20
 49
-3d
+3b
 20
 40
 7d
@@ -4240,7 +4320,7 @@
 da
 20
 49
-3d
+3b
 20
 20
 7d
@@ -4248,19 +4328,31 @@
 6f
 e0
 c7
+b1
+c2
+83
+04
+4f
+c2
+82
+84
+4a
+6f
+e0
+c7
 b2
 c0
 00
 04
-27
+3e
 c0
 01
 04
-2d
+44
 c0
 01
 84
-30
+47
 20
 20
 33
@@ -4313,6 +4405,90 @@
 20
 49
 07
+6f
+e0
+ca
+96
+20
+7a
+00
+00
+70
+4a
+96
+00
+70
+46
+11
+08
+20
+60
+00
+00
+6f
+e0
+c7
+b0
+1f
+e0
+ff
+ff
+1f
+e2
+72
+00
+6f
+e1
+4b
+79
+20
+5a
+04
+5a
+24
+5a
+04
+5c
+d8
+c0
+47
+b2
+20
+40
+7c
+cc
+18
+a2
+7e
+00
+67
+e1
+4b
+79
+20
+60
+00
+00
+d8
+a0
+4a
+d8
+20
+60
+00
+00
+6f
+e1
+4b
+79
+1f
+e2
+0a
+00
+20
+60
+00
+00
 da
 20
 00
@@ -4328,7 +4504,7 @@
 c2
 00
 04
-34
+60
 1a
 21
 22
@@ -4337,8 +4513,8 @@
 60
 00
 00
-66
-7c
+83
+0e
 aa
 55
 40
@@ -4520,7 +4696,7 @@
 55
 43
 00
-f7
+f5
 48
 42
 09
@@ -4593,7 +4769,7 @@
 55
 a2
 00
-43
+41
 48
 a1
 05
@@ -4949,8 +5125,8 @@
 aa
 aa
 55
-56
+52
 80
-9d
-37
+e8
+62
 21
Index: output/program.lis
===================================================================
--- /branch/keyboard/customer_FW/RY_project/RY_Dongle/output/program.lis	(revision 1988)
+++ /branch/keyboard/customer_FW/RY_project/RY_Dongle/output/program.lis	(working copy)
@@ -13,7 +13,7 @@
 000a c01c00a6 beq patch07_0 ,p_dongle_read_kb_bind_status 
 000b c01c80a2 beq patch07_1 ,p_dongle_write_kb_bind_status 
 000c c01e8238 beq patch07_5 ,p_dongle_usb_dispatch 
-000d c01f0295 beq patch07_6 ,p_dongle_work_mode_auto 
+000d c01f029c 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 c06d0198 beq patch1b_2 ,p_sadc_calibration 
@@ -28,19 +28,19 @@
 0017 c0030137 beq patch20_6 ,p_usb_tx 
 0018 c01c81e2 beq patch27_1 ,p_le_parse 
 0019 c02681e6 beq patch29_5 ,p_le_init_adv 
-001a c0370301 beq patch2d_6 ,p_g24_receive_update_rxbuff 
+001a c0370308 beq patch2d_6 ,p_g24_receive_update_rxbuff 
 001b c0378244 beq patch2d_7 ,p_g24_receive_skip_end 
-001c c0390348 beq patch2e_2 ,p_g24_transmit_packet 
-001d c0398333 beq patch2e_3 ,p_g24_transmit_prep 
-001e c03a8310 beq patch2e_5 ,p_g24_read_len_pid_crc 
-001f c04082f0 beq patch30_1 ,p_g24_bind_data_process 
+001c c039034f beq patch2e_2 ,p_g24_transmit_packet 
+001d c039833a beq patch2e_3 ,p_g24_transmit_prep 
+001e c03a8317 beq patch2e_5 ,p_g24_read_len_pid_crc 
+001f c04082f7 beq patch30_1 ,p_g24_bind_data_process 
 0020 c04101e8 beq patch30_2 ,p_g24_bind_data_parse_next 
-0021 c04202bb beq patch30_4 ,p_g24_receive_packet_parse_end 
-0022 c0428320 beq patch30_5 ,p_g24_rx_interrupt_clear 
+0021 c04202c2 beq patch30_4 ,p_g24_receive_packet_parse_end 
+0022 c0428327 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 c0458323 beq patch31_3 ,p_g24_search_mode_auto 
-0026 c04d832c beq patch33_3 ,p_g24_ackpayload_parse 
+0025 c045832a beq patch31_3 ,p_g24_search_mode_auto 
+0026 c04d8333 beq patch33_3 ,p_g24_ackpayload_parse 
 0027 c17f8000 rtneq patch3f_7 
 0028 2020235a branch assert 
 
@@ -282,7 +282,7 @@
 p_usb_init:
 00e8 20407396 call enable_authrom 
 00e9 20407932 call usb_init_param 
-00ea 58004843 setarg mem_usb_ep2_config 
+00ea 58004841 setarg mem_usb_ep2_config 
 00eb 67e107a9 store 2 ,mem_hidreportdesc_m 
 00ec 20207915 branch usb_init_restart 
 
@@ -343,8 +343,8 @@
 0116 20207a05 branch usb0_request_get_descriptor + 4 
 
 p_dsc_config_info:
-0117 580048f7 setarg mem_config_new 
-0118 6848c8f7 fetcht 1 ,mem_config_new 
+0117 580048f5 setarg mem_config_new 
+0118 6848c8f5 fetcht 1 ,mem_config_new 
 0119 20207a18 branch dsc_info_set_data_len 
 
 p_usb_out_device:
@@ -379,7 +379,7 @@
 0132 20207b65 branch usb_set_report_next 
 
 p_usb_tx_ep2_queue_buff_check:
-0133 da20493d arg mem_usb_ep2_fifo ,rega 
+0133 da20493b arg mem_usb_ep2_fifo ,rega 
 0134 20407da3 call fifo_is_empty 
 0135 207a0000 rtn blank 
 0136 20204837 branch dongle_usb_tx_enable_ep2 
@@ -408,7 +408,7 @@
 0149 20207bf0 branch usb_tx_data_ep1 + 2 
 
 p_usb_tx_data_ep2:
-014a da20493d arg mem_usb_ep2_fifo ,rega 
+014a da20493b arg mem_usb_ep2_fifo ,rega 
 014b 20407da3 call fifo_is_empty 
 014c 207a0000 rtn blank 
 014d 6ff08c25 fetch 1 ,core_usb_txbusy 
@@ -419,7 +419,7 @@
 0152 6fe0890d fetch 1 ,mem_usb_tx_enable 
 0153 793ffe02 set0 2 ,pdata 
 0154 67e0890d store 1 ,mem_usb_tx_enable 
-0155 da20493d arg mem_usb_ep2_fifo ,rega 
+0155 da20493b arg mem_usb_ep2_fifo ,rega 
 0156 20407d97 call fifo_out 
 0157 207a0000 rtn blank 
 0158 c0107c09 beq usb_ep2_ms ,usb_tx_ms_data 
@@ -430,12 +430,12 @@
 015d 2020235a branch assert 
 
 p_usb_tx_dpi_data:
-015e 6fe0c94e fetch 1 ,mem_usb_dpi_info_data 
+015e 6fe0c94c fetch 1 ,mem_usb_dpi_info_data 
 015f 207a0000 rtn blank 
 0160 1fe27200 copy pdata ,loopcnt 
-0161 d8c0494f arg mem_usb_dpi_info_data + 1 ,contr 
+0161 d8c0494d arg mem_usb_dpi_info_data + 1 ,contr 
 0162 20407bdb call usb_tx_ep2 
-0163 d8a0494e arg mem_usb_dpi_info_data ,contw 
+0163 d8a0494c arg mem_usb_dpi_info_data ,contw 
 
 p_usb_tx_buff_clr:
 0164 df200041 arg 65 ,loopcnt 
@@ -443,9 +443,9 @@
 
 p_usb_tx_protocol_data:
 0166 df200040 arg 64 ,loopcnt 
-0167 d8c04a0b arg mem_dg_protocol_usb_in_data_buff ,contr 
+0167 d8c049d1 arg mem_dg_protocol_usb_in_data_buff ,contr 
 0168 20407bdb call usb_tx_ep2 
-0169 d8a04a0b arg mem_dg_protocol_usb_in_data_buff ,contw 
+0169 d8a049d1 arg mem_dg_protocol_usb_in_data_buff ,contw 
 016a 20200164 branch p_usb_tx_buff_clr 
 
 p_rx_dcoc:
@@ -718,7 +718,7 @@
 0237 20203307 branch g24_bind_init + 8 
 
 p_dongle_usb_dispatch:
-0238 20200375 branch p_dongle_usb_dispatch_analysis 
+0238 2020037c branch p_dongle_usb_dispatch_analysis 
 
 p_wdt_kick:
 0239 58000010 setarg 16 
@@ -748,11 +748,11 @@
 024d 20203195 branch g24_transmit 
 
 p_app_init:
-024e 58000353 setarg p_dongle_dispatch 
+024e 5800035a setarg p_dongle_dispatch 
 024f 67e145e0 store 2 ,mem_cb_24g_receive_process 
-0250 580003dc setarg p_dongle_g24_mouse 
+0250 580003f0 setarg p_dongle_g24_mouse 
 0251 67e145e4 store 2 ,mem_cb_24g_data_device1 
-0252 58000422 setarg p_dongle_g24_kb 
+0252 58000436 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 
@@ -767,12 +767,12 @@
 
 p_dongle_ackpayload_prep_mouse:
 025c 6fe0c693 fetch 1 ,mem_dg_pc_sleep_flag 
-025d c280028b bbit1 0 ,p_dongle_pc_sleep_ackpayload_prep_mouse 
+025d c2800292 bbit1 0 ,p_dongle_pc_sleep_ackpayload_prep_mouse 
 025e 20200261 branch p_dongle_ackpayload_prep_end 
 
 p_dongle_ackpayload_prep_keyboard:
 025f 6fe0c693 fetch 1 ,mem_dg_pc_sleep_flag 
-0260 c280828f bbit1 1 ,p_dongle_pc_sleep_ackpayload_prep_keyboard 
+0260 c2808296 bbit1 1 ,p_dongle_pc_sleep_ackpayload_prep_keyboard 
 
 p_dongle_ackpayload_prep_end:
 0261 6fe0c611 fetch 1 ,mem_24g_ackpayload_enable 
@@ -816,585 +816,639 @@
 027d 20600000 rtn 
 
 p_dongle_g24_protocol_ackpayload_prep:
-027e 6fe0ca4c fetch 1 ,mem_24g_device_type 
-027f c0028282 beq ms_type ,p_dongle_g24_protocol_ms_ackpayload_prep 
-0280 c0050289 beq kb_type ,p_dongle_g24_protocol_kb_ackpayload_prep 
-0281 20600000 rtn 
+027e 70461100 jam 0 ,mem_24g_ackpayload_enable 
+027f 6fe0ca53 fetch 1 ,mem_24g_device_type 
+0280 c0028283 beq ms_type ,p_dongle_g24_protocol_ms_ackpayload_prep 
+0281 c005028a beq kb_type ,p_dongle_g24_protocol_kb_ackpayload_prep 
+0282 20600000 rtn 
 
 p_dongle_g24_protocol_ms_ackpayload_prep:
-0282 70458901 jam type_ms ,mem_24g_data_type 
-0283 6fe0ca4e fetch 1 ,mem_dongle_ms_ep2_ack_data 
-0284 67e0c588 store 1 ,mem_24g_datalen 
-0285 1fe27200 copy pdata ,loopcnt 
-0286 d8c04a4f arg mem_dongle_ms_ep2_ack_data + 1 ,contr 
-0287 d8a046dd arg mem_24g_txbuf_new ,contw 
-0288 20207cda branch memcpy 
+0283 70458901 jam type_ms ,mem_24g_data_type 
+0284 6fe0ca55 fetch 1 ,mem_dg_ms_ep2_ack_data 
+0285 67e0c588 store 1 ,mem_24g_datalen 
+0286 1fe27200 copy pdata ,loopcnt 
+0287 d8c04a56 arg mem_dg_ms_ep2_ack_data + 1 ,contr 
+0288 d8a046dd arg mem_24g_txbuf_new ,contw 
+0289 20207cda branch memcpy 
 
 p_dongle_g24_protocol_kb_ackpayload_prep:
-0289 70458902 jam type_kb ,mem_24g_data_type 
-028a 20600000 rtn 
+028a 70458902 jam type_kb ,mem_24g_data_type 
+028b 6fe0ca99 fetch 1 ,mem_dg_kb_ep2_ack_data + 2 
+028c 1fe0fe03 increase 3 ,pdata 
+028d 67e0c588 store 1 ,mem_24g_datalen 
+028e 1fe27200 copy pdata ,loopcnt 
+028f d8c04a97 arg mem_dg_kb_ep2_ack_data ,contr 
+0290 d8a046dd arg mem_24g_txbuf_new ,contw 
+0291 20207cda branch memcpy 
 
 p_dongle_pc_sleep_ackpayload_prep_mouse:
-028b 6fe0c693 fetch 1 ,mem_dg_pc_sleep_flag 
-028c 793ffe00 set0 0 ,pdata 
-028d 67e0c693 store 1 ,mem_dg_pc_sleep_flag 
-028e 20200292 branch p_dongle_pc_sleep_ackpayload_prep 
+0292 6fe0c693 fetch 1 ,mem_dg_pc_sleep_flag 
+0293 793ffe00 set0 0 ,pdata 
+0294 67e0c693 store 1 ,mem_dg_pc_sleep_flag 
+0295 20200299 branch p_dongle_pc_sleep_ackpayload_prep 
 
 p_dongle_pc_sleep_ackpayload_prep_keyboard:
-028f 6fe0c693 fetch 1 ,mem_dg_pc_sleep_flag 
-0290 793ffe01 set0 1 ,pdata 
-0291 67e0c693 store 1 ,mem_dg_pc_sleep_flag 
+0296 6fe0c693 fetch 1 ,mem_dg_pc_sleep_flag 
+0297 793ffe01 set0 1 ,pdata 
+0298 67e0c693 store 1 ,mem_dg_pc_sleep_flag 
 
 p_dongle_pc_sleep_ackpayload_prep:
-0292 70458801 jam 0x01 ,mem_24g_datalen 
-0293 580000ff setarg 0xff 
-0294 2020027c branch p_dongle_g24_txbuf_store 
+0299 70458801 jam 0x01 ,mem_24g_datalen 
+029a 580000ff setarg 0xff 
+029b 2020027c branch p_dongle_g24_txbuf_store 
 
 p_dongle_work_mode_auto:
-0295 6fe0c616 fetch 1 ,mem_24g_work_mode 
-0296 c1800000 rtnne dongle_work 
-0297 204002a9 call p_g24_work_mode_start 
-0298 20404827 call dongle_g24_blank_data_process 
-0299 6fe0c610 fetch 1 ,mem_24g_pair_mode 
-029a 247a0000 nrtn blank 
-029b 6fe0c611 fetch 1 ,mem_24g_ackpayload_enable 
-029c c1800000 rtnne 0 
-029d 6fe0c614 fetch 1 ,mem_24g_nodata_timer_enable 
-029e 207a0000 rtn blank 
-029f d8e00008 arg g24_timer_nodata ,queue 
-02a0 20407cef call timer_check 
+029c 6fe0c616 fetch 1 ,mem_24g_work_mode 
+029d c1800000 rtnne dongle_work 
+029e 204002b0 call p_g24_work_mode_start 
+029f 20404827 call dongle_g24_blank_data_process 
+02a0 6fe0c610 fetch 1 ,mem_24g_pair_mode 
 02a1 247a0000 nrtn blank 
-02a2 2040351b call g24_ch_process + 3 
-02a3 20203511 branch g24_nodata_timer_over 
+02a2 6fe0c611 fetch 1 ,mem_24g_ackpayload_enable 
+02a3 c1800000 rtnne 0 
+02a4 6fe0c614 fetch 1 ,mem_24g_nodata_timer_enable 
+02a5 207a0000 rtn blank 
+02a6 d8e00008 arg g24_timer_nodata ,queue 
+02a7 20407cef call timer_check 
+02a8 247a0000 nrtn blank 
+02a9 2040351b call g24_ch_process + 3 
+02aa 20203511 branch g24_nodata_timer_over 
 
 p_g24_ch_process:
-02a4 6fe0c60a fetch 1 ,mem_24g_abort_packet 
-02a5 c000b5ea beq 1 ,rssi_noise_monitor 
-02a6 6fe0c612 fetch 1 ,mem_24g_hop_packet 
-02a7 c000b52c beq 1 ,g24_ch_receive_hop_pac 
-02a8 20600000 rtn 
+02ab 6fe0c60a fetch 1 ,mem_24g_abort_packet 
+02ac c000b5ea beq 1 ,rssi_noise_monitor 
+02ad 6fe0c612 fetch 1 ,mem_24g_hop_packet 
+02ae c000b52c beq 1 ,g24_ch_receive_hop_pac 
+02af 20600000 rtn 
 
 p_g24_work_mode_start:
-02a9 6fe0c616 fetch 1 ,mem_24g_work_mode 
-02aa c1800000 rtnne dongle_work 
-02ab 20403451 call g24_work_init 
-02ac 204002a4 call p_g24_ch_process 
+02b0 6fe0c616 fetch 1 ,mem_24g_work_mode 
+02b1 c1800000 rtnne dongle_work 
+02b2 20403451 call g24_work_init 
+02b3 204002ab call p_g24_ch_process 
 
 p_g24_receive_packet_start:
-02ad 204002e5 call p_g24_receive_transmit_ack 
-02ae 2437b3be nbranch g24_rx_interrupt_clear ,user3 
+02b4 204002ec call p_g24_receive_transmit_ack 
+02b5 2437b3be nbranch g24_rx_interrupt_clear ,user3 
 
 p_g24_receive_packet_parse:
-02af 204033e3 call g24_receive_packet_parse_pid_crc 
-02b0 243433be nbranch g24_rx_interrupt_clear ,user 
-02b1 6fe0c57d fetch 1 ,mem_24g_rxdata_length 
-02b2 203a33be branch g24_rx_interrupt_clear ,blank 
-02b3 1fe0fe02 increase 2 ,pdata 
-02b4 98007200 iforce loopcnt 
-02b5 d8c04697 arg mem_24g_rxbuf_new ,contr 
-02b6 d8a047af arg mem_24g_rxdata_temp_new ,contw 
-02b7 20407cda call memcpy 
-02b8 70461300 jam 0 ,mem_24g_mode_switch 
-02b9 6fe0c610 fetch 1 ,mem_24g_pair_mode 
-02ba 205a02c1 call p_g24_enable_nodata_timer ,blank 
+02b6 204033e3 call g24_receive_packet_parse_pid_crc 
+02b7 243433be nbranch g24_rx_interrupt_clear ,user 
+02b8 6fe0c57d fetch 1 ,mem_24g_rxdata_length 
+02b9 203a33be branch g24_rx_interrupt_clear ,blank 
+02ba 1fe0fe02 increase 2 ,pdata 
+02bb 98007200 iforce loopcnt 
+02bc d8c04697 arg mem_24g_rxbuf_new ,contr 
+02bd d8a047af arg mem_24g_rxdata_temp_new ,contw 
+02be 20407cda call memcpy 
+02bf 70461300 jam 0 ,mem_24g_mode_switch 
+02c0 6fe0c610 fetch 1 ,mem_24g_pair_mode 
+02c1 205a02c8 call p_g24_enable_nodata_timer ,blank 
 
 p_g24_receive_packet_parse_end:
-02bb 6fe0c7b1 fetch 1 ,mem_24g_rxdata_temp_new + 2 
-02bc c07f82df beq datatype_attemp ,p_g24_data_receive_attemp 
-02bd 1fe17e03 and pdata ,0x03 ,pdata 
-02be c00082c7 beq datatype_device1 ,p_g24_data_device1 
-02bf c00102d9 beq datatype_device2 ,p_g24_data_device2 
-02c0 202033be branch g24_rx_interrupt_clear 
+02c2 6fe0c7b1 fetch 1 ,mem_24g_rxdata_temp_new + 2 
+02c3 c07f82e6 beq datatype_attemp ,p_g24_data_receive_attemp 
+02c4 1fe17e03 and pdata ,0x03 ,pdata 
+02c5 c00082ce beq datatype_device1 ,p_g24_data_device1 
+02c6 c00102e0 beq datatype_device2 ,p_g24_data_device2 
+02c7 202033be branch g24_rx_interrupt_clear 
 
 p_g24_enable_nodata_timer:
-02c1 6fe0c62b fetch 1 ,mem_24g_bind_device_living 
-02c2 203a33fe branch g24_enable_nodata_timer ,blank 
-02c3 70461401 jam 1 ,mem_24g_nodata_timer_enable 
-02c4 58000640 setarg 1600 
-02c5 d8e00008 arg g24_timer_nodata ,queue 
-02c6 20207ce1 branch timer_init 
+02c8 6fe0c62b fetch 1 ,mem_24g_bind_device_living 
+02c9 203a33fe branch g24_enable_nodata_timer ,blank 
+02ca 70461401 jam 1 ,mem_24g_nodata_timer_enable 
+02cb 58000640 setarg 1600 
+02cc d8e00008 arg g24_timer_nodata ,queue 
+02cd 20207ce1 branch timer_init 
 
 p_g24_data_device1:
-02c7 2040338d call g24_binding_dvc1_living 
-02c8 2040352e call g24_ch_timer_reinit 
-02c9 6fe0c60a fetch 1 ,mem_24g_abort_packet 
-02ca 6848c7af fetcht 1 ,mem_24g_rxdata_temp_new 
-02cb 284ffe03 isolate1 bit_abort ,temp 
-02cc 7920fe00 setflag true ,0 ,pdata 
-02cd 67e0c60a store 1 ,mem_24g_abort_packet 
-02ce c00082d2 beq 1 ,p_g24_data_attemp_device1_abort 
-02cf 6fe0c612 fetch 1 ,mem_24g_hop_packet 
-02d0 6848c7af fetcht 1 ,mem_24g_rxdata_temp_new 
-02d1 202033ce branch g24_data_device1_next 
+02ce 2040338d call g24_binding_dvc1_living 
+02cf 2040352e call g24_ch_timer_reinit 
+02d0 6fe0c60a fetch 1 ,mem_24g_abort_packet 
+02d1 6848c7af fetcht 1 ,mem_24g_rxdata_temp_new 
+02d2 284ffe03 isolate1 bit_abort ,temp 
+02d3 7920fe00 setflag true ,0 ,pdata 
+02d4 67e0c60a store 1 ,mem_24g_abort_packet 
+02d5 c00082d9 beq 1 ,p_g24_data_attemp_device1_abort 
+02d6 6fe0c612 fetch 1 ,mem_24g_hop_packet 
+02d7 6848c7af fetcht 1 ,mem_24g_rxdata_temp_new 
+02d8 202033ce branch g24_data_device1_next 
 
 p_g24_data_attemp_device1_abort:
-02d2 6fe0c5de fetch 1 ,mem_24g_device1_bind_disable 
-02d3 247a0000 nrtn blank 
-02d4 7045de01 jam 1 ,mem_24g_device1_bind_disable 
-02d5 6fe247b9 fetch 4 ,mem_24g_rxdata_temp_new + 10 
-02d6 202035a3 branch g24_store_device1_addr 
+02d9 6fe0c5de fetch 1 ,mem_24g_device1_bind_disable 
+02da 247a0000 nrtn blank 
+02db 7045de01 jam 1 ,mem_24g_device1_bind_disable 
+02dc 6fe247b9 fetch 4 ,mem_24g_rxdata_temp_new + 10 
+02dd 202035a3 branch g24_store_device1_addr 
 
 p_g24_data_attemp_device2_abort:
-02d7 6fe247b9 fetch 4 ,mem_24g_rxdata_temp_new + 10 
-02d8 202035a9 branch g24_store_device2_addr 
+02de 6fe247b9 fetch 4 ,mem_24g_rxdata_temp_new + 10 
+02df 202035a9 branch g24_store_device2_addr 
 
 p_g24_data_device2:
-02d9 20403393 call g24_binding_dvc2_living 
-02da 6848c7af fetcht 1 ,mem_24g_rxdata_temp_new 
-02db 284ffe03 isolate1 bit_abort ,temp 
-02dc 202082d7 branch p_g24_data_attemp_device2_abort ,true 
-02dd 6fe145e6 fetch 2 ,mem_cb_24g_data_device2 
-02de 20207d79 branch callback_func 
+02e0 20403393 call g24_binding_dvc2_living 
+02e1 6848c7af fetcht 1 ,mem_24g_rxdata_temp_new 
+02e2 284ffe03 isolate1 bit_abort ,temp 
+02e3 202082de branch p_g24_data_attemp_device2_abort ,true 
+02e4 6fe145e6 fetch 2 ,mem_cb_24g_data_device2 
+02e5 20207d79 branch callback_func 
 
 p_g24_data_receive_attemp:
-02df 204002e3 call p_g24_bind_device_status 
-02e0 202001f8 branch p_g24_data_attemp 
+02e6 204002ea call p_g24_bind_device_status 
+02e7 202001f8 branch p_g24_data_attemp 
 
 p_g24_bind_device_status_check:
-02e1 6fe0c5d5 fetch 1 ,mem_24g_bind_device_status 
-02e2 207a0000 rtn blank 
+02e8 6fe0c5d5 fetch 1 ,mem_24g_bind_device_status 
+02e9 207a0000 rtn blank 
 
 p_g24_bind_device_status:
-02e3 6fe0c7b2 fetch 1 ,mem_24g_rxdata_temp_new + 3 
-02e4 2020339c branch g24_bind_device_status + 1 
+02ea 6fe0c7b2 fetch 1 ,mem_24g_rxdata_temp_new + 3 
+02eb 2020339c branch g24_bind_device_status + 1 
 
 p_g24_receive_transmit_ack:
-02e5 204033be call g24_rx_interrupt_clear 
-02e6 20403119 call g24_receive_packet 
-02e7 24778000 nrtn user3 
+02ec 204033be call g24_rx_interrupt_clear 
+02ed 20403119 call g24_receive_packet 
+02ee 24778000 nrtn user3 
 
 p_g24_transmit_ack:
-02e8 6fe0c697 fetch 1 ,mem_24g_rxbuf_new 
-02e9 1fe97e00 rshift3 pdata ,pdata 
-02ea 67e0c589 store 1 ,mem_24g_data_type 
-02eb 20400310 call p_g24_read_len_pid_crc 
-02ec 6fe0c7f5 fetch 1 ,mem_24g_rxdata_ack_flag 
-02ed 2feffe00 isolate1 bit_ack_24g ,pdata 
-02ee 2020b3fd branch g24tx_no_ack ,true 
-02ef 202033fa branch g24tx_with_ack 
+02ef 6fe0c697 fetch 1 ,mem_24g_rxbuf_new 
+02f0 1fe97e00 rshift3 pdata ,pdata 
+02f1 67e0c589 store 1 ,mem_24g_data_type 
+02f2 20400317 call p_g24_read_len_pid_crc 
+02f3 6fe0c7f5 fetch 1 ,mem_24g_rxdata_ack_flag 
+02f4 2feffe00 isolate1 bit_ack_24g ,pdata 
+02f5 2020b3fd branch g24tx_no_ack ,true 
+02f6 202033fa branch g24tx_with_ack 
 
 p_g24_bind_data_process:
-02f0 204033be call g24_rx_interrupt_clear 
-02f1 20403119 call g24_receive_packet 
-02f2 2437b3be nbranch g24_rx_interrupt_clear ,user3 
-02f3 204002fc call p_g24_bind_data_parse 
-02f4 204002e8 call p_g24_transmit_ack 
-02f5 204002e1 call p_g24_bind_device_status_check 
-02f6 2040493d call dongle_kb_bind_soft_reset 
-02f7 6fe0c5ae fetch 1 ,mem_24g_pair_switch 
-02f8 207a0000 rtn blank 
-02f9 6fe2462c fetch 4 ,mem_24g_transmitter_addr 
-02fa 207a0000 rtn blank 
-02fb 20203236 branch g24_update_addr_and_synccrc8 
+02f7 204033be call g24_rx_interrupt_clear 
+02f8 20403119 call g24_receive_packet 
+02f9 2437b3be nbranch g24_rx_interrupt_clear ,user3 
+02fa 20400303 call p_g24_bind_data_parse 
+02fb 204002ef call p_g24_transmit_ack 
+02fc 204002e8 call p_g24_bind_device_status_check 
+02fd 2040493d call dongle_kb_bind_soft_reset 
+02fe 6fe0c5ae fetch 1 ,mem_24g_pair_switch 
+02ff 207a0000 rtn blank 
+0300 6fe2462c fetch 4 ,mem_24g_transmitter_addr 
+0301 207a0000 rtn blank 
+0302 20203236 branch g24_update_addr_and_synccrc8 
 
 p_g24_bind_data_parse:
-02fc 70462205 jam bind_mode_continue ,mem_24g_bind_mode_continue 
-02fd d8c04697 arg mem_24g_rxbuf_new ,contr 
-02fe d8a047af arg mem_24g_rxdata_temp_new ,contw 
-02ff 20407c89 call memcpy8 
-0300 20203322 branch g24_bind_data_parse_next 
+0303 70462205 jam bind_mode_continue ,mem_24g_bind_mode_continue 
+0304 d8c04697 arg mem_24g_rxbuf_new ,contr 
+0305 d8a047af arg mem_24g_rxdata_temp_new ,contw 
+0306 20407c89 call memcpy8 
+0307 20203322 branch g24_bind_data_parse_next 
 
 p_g24_receive_update_rxbuff:
-0301 2040317d call g24_receive_byte 
-0302 67e0c697 store 1 ,mem_24g_rxbuf_new 
-0303 c5138309 bmark1 mark_24g_rxmode ,p_g24_receive_skip 
-0304 6fe0c697 fetch 1 ,mem_24g_rxbuf_new 
-0305 1fe97e00 rshift3 pdata ,pdata 
-0306 6848c589 fetcht 1 ,mem_24g_data_type 
-0307 a8400e00 icompare bits_data ,temp 
-0308 2420b18c nbranch g24_type_error ,true 
+0308 2040317d call g24_receive_byte 
+0309 67e0c697 store 1 ,mem_24g_rxbuf_new 
+030a c5138310 bmark1 mark_24g_rxmode ,p_g24_receive_skip 
+030b 6fe0c697 fetch 1 ,mem_24g_rxbuf_new 
+030c 1fe97e00 rshift3 pdata ,pdata 
+030d 6848c589 fetcht 1 ,mem_24g_data_type 
+030e a8400e00 icompare bits_data ,temp 
+030f 2420b18c nbranch g24_type_error ,true 
 
 p_g24_receive_skip:
-0309 2040317d call g24_receive_byte 
-030a e7e08005 istore 1 ,contw 
-030b 1fe67c44 sub pdata ,68 ,null 
-030c 2421318e nbranch g24_len_over_error ,positive 
-030d 1fe27200 copy pdata ,loopcnt 
-030e 2022b154 branch g24rx_nopayload ,zero 
-030f 20203151 branch g24rx_loop 
+0310 2040317d call g24_receive_byte 
+0311 e7e08005 istore 1 ,contw 
+0312 1fe67c44 sub pdata ,68 ,null 
+0313 2421318e nbranch g24_len_over_error ,positive 
+0314 1fe27200 copy pdata ,loopcnt 
+0315 2022b154 branch g24rx_nopayload ,zero 
+0316 20203151 branch g24rx_loop 
 
 p_g24_read_len_pid_crc:
-0310 6fe0c698 fetch 1 ,mem_24g_rxbuf_new + 1 
-0311 67e0c57d store 1 ,mem_24g_rxdata_length 
-0312 1fe0fe01 increase 1 ,pdata 
-0313 d8c04698 arg mem_24g_rxbuf_new + 1 ,contr 
-0314 98c08c00 iadd contr ,contr 
-0315 efe18006 ifetch 3 ,contr 
-0316 67e1c580 store 3 ,mem_24g_sta_crc 
-0317 6fe0c697 fetch 1 ,mem_24g_rxbuf_new 
-0318 1fe10401 and pdata ,0x01 ,temp 
-0319 6048c7f5 storet 1 ,mem_24g_rxdata_ack_flag 
-031a 1fe30400 rshift pdata ,temp 
-031b 18410403 and temp ,0x03 ,temp 
-031c 6048c586 storet 1 ,mem_24g_sta_pid 
-031d 1fe97e00 rshift3 pdata ,pdata 
-031e 67e0c697 store 1 ,mem_24g_rxbuf_new 
-031f 20600000 rtn 
+0317 6fe0c698 fetch 1 ,mem_24g_rxbuf_new + 1 
+0318 67e0c57d store 1 ,mem_24g_rxdata_length 
+0319 1fe0fe01 increase 1 ,pdata 
+031a d8c04698 arg mem_24g_rxbuf_new + 1 ,contr 
+031b 98c08c00 iadd contr ,contr 
+031c efe18006 ifetch 3 ,contr 
+031d 67e1c580 store 3 ,mem_24g_sta_crc 
+031e 6fe0c697 fetch 1 ,mem_24g_rxbuf_new 
+031f 1fe10401 and pdata ,0x01 ,temp 
+0320 6048c7f5 storet 1 ,mem_24g_rxdata_ack_flag 
+0321 1fe30400 rshift pdata ,temp 
+0322 18410403 and temp ,0x03 ,temp 
+0323 6048c586 storet 1 ,mem_24g_sta_pid 
+0324 1fe97e00 rshift3 pdata ,pdata 
+0325 67e0c697 store 1 ,mem_24g_rxbuf_new 
+0326 20600000 rtn 
 
 p_g24_rx_interrupt_clear:
-0320 d8a04697 arg mem_24g_rxbuf_new ,contw 
-0321 df200046 arg 70 ,loopcnt 
-0322 20207ca1 branch clear_mem 
+0327 d8a04697 arg mem_24g_rxbuf_new ,contw 
+0328 df200046 arg 70 ,loopcnt 
+0329 20207ca1 branch clear_mem 
 
 p_g24_search_mode_auto:
-0323 6fe0c616 fetch 1 ,mem_24g_work_mode 
-0324 c1838000 rtnne dongle_search 
-0325 20403476 call g24_search_mode_init 
-0326 204034ae call g24_auto_addr_ch_search 
-0327 204002e5 call p_g24_receive_transmit_ack 
-0328 2437b3be nbranch g24_rx_interrupt_clear ,user3 
-0329 20403506 call g24_receiver_addr_check 
-032a 204282af call p_g24_receive_packet_parse ,zero 
-032b 20203491 branch g24_search_mode_auto + 9 
+032a 6fe0c616 fetch 1 ,mem_24g_work_mode 
+032b c1838000 rtnne dongle_search 
+032c 20403476 call g24_search_mode_init 
+032d 204034ae call g24_auto_addr_ch_search 
+032e 204002ec call p_g24_receive_transmit_ack 
+032f 2437b3be nbranch g24_rx_interrupt_clear ,user3 
+0330 20403506 call g24_receiver_addr_check 
+0331 204282b6 call p_g24_receive_packet_parse ,zero 
+0332 20203491 branch g24_search_mode_auto + 9 
 
 p_g24_ackpayload_parse:
-032c 20403214 call g24_read_len_pid_crc 
-032d 6fe0c57d fetch 1 ,mem_24g_rxdata_length 
-032e 207a0000 rtn blank 
-032f 98007200 iforce loopcnt 
-0330 d8c04699 arg mem_24g_rxbuf_new + 2 ,contr 
-0331 d8a04769 arg mem_24g_rxpayload_new ,contw 
-0332 20207cda branch memcpy 
+0333 20403214 call g24_read_len_pid_crc 
+0334 6fe0c57d fetch 1 ,mem_24g_rxdata_length 
+0335 207a0000 rtn blank 
+0336 98007200 iforce loopcnt 
+0337 d8c04699 arg mem_24g_rxbuf_new + 2 ,contr 
+0338 d8a04769 arg mem_24g_rxpayload_new ,contw 
+0339 20207cda branch memcpy 
 
 p_g24_transmit_prep:
-0333 6fe0c588 fetch 1 ,mem_24g_datalen 
-0334 1fe0fe03 increase 3 ,pdata 
-0335 67e0c58a store 1 ,mem_24g_txlen 
-0336 6fe0c5ac fetch 1 ,mem_24g_syncword_crc8 
-0337 67e0c723 store 1 ,mem_24g_txpayload_new 
-0338 6fe0c589 fetch 1 ,mem_24g_data_type 
-0339 1fe9fe00 lshift3 pdata ,pdata 
-033a 6848c57e fetcht 1 ,mem_24g_pid 
-033b 18410403 and temp ,0x03 ,temp 
-033c 18438400 lshift temp ,temp 
-033d 9841fe00 ior temp ,pdata 
-033e 6848c57f fetcht 1 ,mem_24g_no_ack 
-033f 9840fe00 iadd temp ,pdata 
-0340 e7e08005 istore 1 ,contw 
-0341 6fe0c588 fetch 1 ,mem_24g_datalen 
-0342 e7e08005 istore 1 ,contw 
-0343 6fe0c588 fetch 1 ,mem_24g_datalen 
-0344 98007200 iforce loopcnt 
-0345 d8c046dd arg mem_24g_txbuf_new ,contr 
-0346 20407cda call memcpy 
-0347 202031fc branch g24_transmit_prep_pdu_end 
+033a 6fe0c588 fetch 1 ,mem_24g_datalen 
+033b 1fe0fe03 increase 3 ,pdata 
+033c 67e0c58a store 1 ,mem_24g_txlen 
+033d 6fe0c5ac fetch 1 ,mem_24g_syncword_crc8 
+033e 67e0c723 store 1 ,mem_24g_txpayload_new 
+033f 6fe0c589 fetch 1 ,mem_24g_data_type 
+0340 1fe9fe00 lshift3 pdata ,pdata 
+0341 6848c57e fetcht 1 ,mem_24g_pid 
+0342 18410403 and temp ,0x03 ,temp 
+0343 18438400 lshift temp ,temp 
+0344 9841fe00 ior temp ,pdata 
+0345 6848c57f fetcht 1 ,mem_24g_no_ack 
+0346 9840fe00 iadd temp ,pdata 
+0347 e7e08005 istore 1 ,contw 
+0348 6fe0c588 fetch 1 ,mem_24g_datalen 
+0349 e7e08005 istore 1 ,contw 
+034a 6fe0c588 fetch 1 ,mem_24g_datalen 
+034b 98007200 iforce loopcnt 
+034c d8c046dd arg mem_24g_txbuf_new ,contr 
+034d 20407cda call memcpy 
+034e 202031fc branch g24_transmit_prep_pdu_end 
 
 p_g24_transmit_packet:
-0348 c517834d bmark1 mark_ble_lr ,p_g24_transmit_nolr 
-0349 6fe0c5ca fetch 1 ,mem_24g_disable_fec1 
-034a 243a034d nbranch p_g24_transmit_nolr ,blank 
-034b 784efc00 disable encode_fec0 
-034c 782dfc00 enable encode_fec1 
+034f c5178354 bmark1 mark_ble_lr ,p_g24_transmit_nolr 
+0350 6fe0c5ca fetch 1 ,mem_24g_disable_fec1 
+0351 243a0354 nbranch p_g24_transmit_nolr ,blank 
+0352 784efc00 disable encode_fec0 
+0353 782dfc00 enable encode_fec1 
 
 p_g24_transmit_nolr:
-034d 7823fc00 enable enable_white 
-034e 7824fc00 enable enable_crc 
-034f 6fe0c58a fetch 1 ,mem_24g_txlen 
-0350 98007200 iforce loopcnt 
-0351 d8c04723 arg mem_24g_txpayload_new ,contr 
-0352 202031b3 branch g24tr_loop 
+0354 7823fc00 enable enable_white 
+0355 7824fc00 enable enable_crc 
+0356 6fe0c58a fetch 1 ,mem_24g_txlen 
+0357 98007200 iforce loopcnt 
+0358 d8c04723 arg mem_24g_txpayload_new ,contr 
+0359 202031b3 branch g24tr_loop 
 
 p_dongle_dispatch:
 
 p_dongle_auto_bind:
-0353 20403402 call g24_mode_switch_init 
+035a 20403402 call g24_mode_switch_init 
 
 p_dongle_auto_bind_loop:
-0354 20403407 call g24_mode_switch_bind_work 
-0355 2040342d call g24_mode_switch_bind_search 
-0356 204048a3 call dongle_work_mode_auto 
-0357 20403469 call g24_bind_mode_auto 
-0358 20403488 call g24_search_mode_auto 
-0359 20404867 call dongle_usb_dispatch 
-035a 2040035d call p_dongle_keyboard_heart_tick_timer 
-035b 20400369 call p_dongle_mouse_heart_tick_timer 
-035c 20200354 branch p_dongle_auto_bind_loop 
+035b 20403407 call g24_mode_switch_bind_work 
+035c 2040342d call g24_mode_switch_bind_search 
+035d 204048a3 call dongle_work_mode_auto 
+035e 20403469 call g24_bind_mode_auto 
+035f 20403488 call g24_search_mode_auto 
+0360 20404867 call dongle_usb_dispatch 
+0361 20400364 call p_dongle_keyboard_heart_tick_timer 
+0362 20400370 call p_dongle_mouse_heart_tick_timer 
+0363 2020035b branch p_dongle_auto_bind_loop 
 
 p_dongle_keyboard_heart_tick_timer:
-035d d840fffe arg 0xfffe ,temp 
-035e 6fe147f8 fetch 2 ,mem_dg_keyboard_heart_tick_timer 
-035f 98467c00 isub temp ,null 
-0360 20610000 rtn positive 
-0361 1fe0fe01 increase 1 ,pdata 
-0362 67e147f8 store 2 ,mem_dg_keyboard_heart_tick_timer 
-0363 d8400000 arg 0 ,temp 
-0364 da6005dc arg 1500 ,regc 
-0365 9a667c00 isub regc ,null 
-0366 79210400 setflag positive ,0 ,temp 
-0367 6048c7fc storet 1 ,mem_dg_keyboard_connected_status 
-0368 20600000 rtn 
+0364 d840fffe arg 0xfffe ,temp 
+0365 6fe147f8 fetch 2 ,mem_dg_keyboard_heart_tick_timer 
+0366 98467c00 isub temp ,null 
+0367 20610000 rtn positive 
+0368 1fe0fe01 increase 1 ,pdata 
+0369 67e147f8 store 2 ,mem_dg_keyboard_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 6048c7fc storet 1 ,mem_dg_keyboard_connected_status 
+036f 20600000 rtn 
 
 p_dongle_mouse_heart_tick_timer:
-0369 d840fffe arg 0xfffe ,temp 
-036a 6fe147fa fetch 2 ,mem_dg_mouse_heart_tick_timer 
-036b 98467c00 isub temp ,null 
-036c 20610000 rtn positive 
-036d 1fe0fe01 increase 1 ,pdata 
-036e 67e147fa store 2 ,mem_dg_mouse_heart_tick_timer 
-036f d8400000 arg 0 ,temp 
-0370 da6005dc arg 1500 ,regc 
-0371 9a667c00 isub regc ,null 
-0372 79210400 setflag positive ,0 ,temp 
-0373 6048c7fd storet 1 ,mem_dg_mouse_connected_status 
-0374 20600000 rtn 
+0370 d840fffe arg 0xfffe ,temp 
+0371 6fe147fa fetch 2 ,mem_dg_mouse_heart_tick_timer 
+0372 98467c00 isub temp ,null 
+0373 20610000 rtn positive 
+0374 1fe0fe01 increase 1 ,pdata 
+0375 67e147fa store 2 ,mem_dg_mouse_heart_tick_timer 
+0376 d8400000 arg 0 ,temp 
+0377 da6005dc arg 1500 ,regc 
+0378 9a667c00 isub regc ,null 
+0379 79210400 setflag positive ,0 ,temp 
+037a 6048c7fd storet 1 ,mem_dg_mouse_connected_status 
+037b 20600000 rtn 
 
 p_dongle_usb_dispatch_analysis:
-0375 6fe08901 fetch 1 ,mem_usb_remote_wakeup 
-0376 205a48b5 call dongle_clear_pc_sleep_flag ,blank 
-0377 20407906 call usb_isr 
-0378 6fe088f7 fetch 1 ,mem_usb0_get_set_report 
-0379 207a0000 rtn blank 
-037a 7008f700 jam 0 ,mem_usb0_get_set_report 
-037b 6fe08875 fetch 1 ,mem_usb0_set_report_data 
-037c c07b83a1 beq cmd_check_status ,p_dongle_dispose_cmd_check_status 
-037d c07b03af beq cmd_set ,p_dongle_dispose_cmd_set 
-037e c07a838f beq cmd_set_dpi ,p_dongle_dispose_ms_cmd_set_dpi 
-037f c079839f beq cmd_get_dpi ,p_dongle_dispose_cmd_get_dpi 
-0380 c07a0399 beq cmd_set_report ,p_dongle_dispose_ms_cmd_set_report 
-0381 c07e03b2 beq cmd_get_in_data ,p_dongle_dispose_cmd_get_in_data 
-0382 c07f03b8 beq cmd_get_translen ,p_dongle_dispose_cmd_get_translen 
-0383 c03d03bb beq cmd_set_test ,p_dongle_dispose_cmd_set_test 
-0384 c05003c3 beq cmd_set_key_matrix ,p_dongle_dispose_cmd_set_key_matrix 
-0385 c05083d1 beq cmd_get_key_matrix ,p_dongle_dispose_cmd_get_key_matrix 
-0386 20204875 branch dongle_usb_dispatch_next 
+037c 6fe08901 fetch 1 ,mem_usb_remote_wakeup 
+037d 205a48b5 call dongle_clear_pc_sleep_flag ,blank 
+037e 20407906 call usb_isr 
+037f 6fe088f7 fetch 1 ,mem_usb0_get_set_report 
+0380 207a0000 rtn blank 
+0381 7008f700 jam 0 ,mem_usb0_get_set_report 
+0382 6fe08875 fetch 1 ,mem_usb0_set_report_data 
+0383 c07b83a8 beq cmd_check_status ,p_dongle_dispose_cmd_check_status 
+0384 c07b03b6 beq cmd_set ,p_dongle_dispose_cmd_set 
+0385 c07a8396 beq cmd_set_dpi ,p_dongle_dispose_ms_cmd_set_dpi 
+0386 c07983a6 beq cmd_get_dpi ,p_dongle_dispose_cmd_get_dpi 
+0387 c07a03a0 beq cmd_set_report ,p_dongle_dispose_ms_cmd_set_report 
+0388 c07e03b9 beq cmd_get_in_data ,p_dongle_dispose_cmd_get_in_data 
+0389 c07f03c1 beq cmd_get_translen ,p_dongle_dispose_cmd_get_translen 
+038a c03d03c7 beq cmd_set_test ,p_dongle_dispose_cmd_set_test 
+038b c05003ce beq cmd_set_key_matrix ,p_dongle_dispose_cmd_set_key_matrix 
+038c c05083e4 beq cmd_get_key_matrix ,p_dongle_dispose_cmd_get_key_matrix 
+038d 20204875 branch dongle_usb_dispatch_next 
 
 p_dongle_ms_ep2_ack_data_clr:
-0387 df200041 arg 65 ,loopcnt 
-0388 d8a04a4e arg mem_dongle_ms_ep2_ack_data ,contw 
-0389 20207ca1 branch clear_mem 
+038e df200041 arg 65 ,loopcnt 
+038f d8a04a55 arg mem_dg_ms_ep2_ack_data ,contw 
+0390 20207ca1 branch clear_mem 
 
 p_dongle_ms_ep2_ack_data_copy:
-038a 704a4d01 jam 1 ,mem_dongle_ms_ep2_ack_data_flag 
-038b 70461108 jam protocol_ackpayload ,mem_24g_ackpayload_enable 
-038c d8c00875 arg mem_usb0_set_report_data ,contr 
-038d d8a04a4f arg mem_dongle_ms_ep2_ack_data + 1 ,contw 
-038e 20207cda branch memcpy 
+0391 704a5401 jam 1 ,mem_dg_ms_ep2_ack_data_flag 
+0392 70461108 jam protocol_ackpayload ,mem_24g_ackpayload_enable 
+0393 d8c00875 arg mem_usb0_set_report_data ,contr 
+0394 d8a04a56 arg mem_dg_ms_ep2_ack_data + 1 ,contw 
+0395 20207cda branch memcpy 
 
 p_dongle_dispose_ms_cmd_set_dpi:
-038f 6fe08876 fetch 1 ,mem_usb0_set_report_data + 1 
-0390 c1828000 rtnne ms_type 
-0391 20400387 call p_dongle_ms_ep2_ack_data_clr 
-0392 6fe08876 fetch 1 ,mem_usb0_set_report_data + 1 
-0393 67e0ca4c 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 6fe08876 fetch 1 ,mem_usb0_set_report_data + 1 
+0397 c1828000 rtnne ms_type 
+0398 2040038e call p_dongle_ms_ep2_ack_data_clr 
+0399 6fe08876 fetch 1 ,mem_usb0_set_report_data + 1 
+039a 67e0ca53 store 1 ,mem_24g_device_type 
+039b 6fe08877 fetch 1 ,mem_usb0_set_report_data + 2 
+039c 67e0c94b store 1 ,mem_dg_mouse_dpi_level 
 
 p_dongle_ms_ack_data_copy:
-0396 704a4e04 jam 4 ,mem_dongle_ms_ep2_ack_data 
-0397 df200004 arg 4 ,loopcnt 
-0398 2020038a branch p_dongle_ms_ep2_ack_data_copy 
+039d 704a5504 jam 4 ,mem_dg_ms_ep2_ack_data 
+039e df200004 arg 4 ,loopcnt 
+039f 20200391 branch p_dongle_ms_ep2_ack_data_copy 
 
 p_dongle_dispose_ms_cmd_set_report:
-0399 6fe08876 fetch 1 ,mem_usb0_set_report_data + 1 
-039a c1828000 rtnne ms_type 
-039b 20400387 call p_dongle_ms_ep2_ack_data_clr 
-039c 6fe08876 fetch 1 ,mem_usb0_set_report_data + 1 
-039d 67e0ca4c store 1 ,mem_24g_device_type 
-039e 20200396 branch p_dongle_ms_ack_data_copy 
+03a0 6fe08876 fetch 1 ,mem_usb0_set_report_data + 1 
+03a1 c1828000 rtnne ms_type 
+03a2 2040038e call p_dongle_ms_ep2_ack_data_clr 
+03a3 6fe08876 fetch 1 ,mem_usb0_set_report_data + 1 
+03a4 67e0ca53 store 1 ,mem_24g_device_type 
+03a5 2020039d branch p_dongle_ms_ack_data_copy 
 
 p_dongle_dispose_cmd_get_dpi:
-039f 70495201 jam 1 ,mem_usb_dpi_info_data + 4 
-03a0 2020040a branch p_dongle_usb_tx_dpi_level_enable 
+03a6 70495001 jam 1 ,mem_usb_dpi_info_data + 4 
+03a7 2020041e branch p_dongle_usb_tx_dpi_level_enable 
 
 p_dongle_dispose_cmd_check_status:
-03a1 58000064 setarg 0x64 
-03a2 67e0ca0b store 1 ,mem_dg_protocol_usb_in_data_buff 
-03a3 58000064 setarg 0x64 
-03a4 67e0ca0c store 1 ,mem_dg_protocol_usb_in_data_buff + 1 
-03a5 58000000 setarg 0x00 
-03a6 67e0ca0d store 1 ,mem_dg_protocol_usb_in_data_buff + 2 
-03a7 58000000 setarg 0x00 
-03a8 67e0ca0e store 1 ,mem_dg_protocol_usb_in_data_buff + 3 
-03a9 58000001 setarg 0x01 
-03aa 67e0ca0f store 1 ,mem_dg_protocol_usb_in_data_buff + 4 
-03ab 6fe2458f fetch 4 ,mem_24g_addr 
-03ac 67e24a12 store 4 ,mem_dg_protocol_usb_in_data_buff + 7 
-03ad 70090c24 jam usb_ep2_protocol ,mem_usb_ep2_data 
-03ae 20200419 branch p_dongle_usb_tx_enable_ep2 
+03a8 58000064 setarg 0x64 
+03a9 67e0c9d1 store 1 ,mem_dg_protocol_usb_in_data_buff 
+03aa 58000064 setarg 0x64 
+03ab 67e0c9d2 store 1 ,mem_dg_protocol_usb_in_data_buff + 1 
+03ac 58000000 setarg 0x00 
+03ad 67e0c9d3 store 1 ,mem_dg_protocol_usb_in_data_buff + 2 
+03ae 58000000 setarg 0x00 
+03af 67e0c9d4 store 1 ,mem_dg_protocol_usb_in_data_buff + 3 
+03b0 58000001 setarg 0x01 
+03b1 67e0c9d5 store 1 ,mem_dg_protocol_usb_in_data_buff + 4 
+03b2 6fe2458f fetch 4 ,mem_24g_addr 
+03b3 67e249d8 store 4 ,mem_dg_protocol_usb_in_data_buff + 7 
+03b4 70090c24 jam usb_ep2_protocol ,mem_usb_ep2_data 
+03b5 2020042d branch p_dongle_usb_tx_enable_ep2 
 
 p_dongle_dispose_cmd_set:
-03af 6fe08877 fetch 1 ,mem_usb0_set_report_data + 2 
-03b0 67e0c7ff store 1 ,mem_dg_data_type 
-03b1 20600000 rtn 
+03b6 6fe08876 fetch 1 ,mem_usb0_set_report_data + 1 
+03b7 67e0ca53 store 1 ,mem_24g_device_type 
+03b8 20600000 rtn 
 
 p_dongle_dispose_cmd_get_in_data:
-03b2 70087500 jam 0 ,mem_usb0_set_report_data 
-03b3 d8c04803 arg mem_dg_usb_get_buff ,contr 
-03b4 d8a008b5 arg mem_usb0_get_report_data ,contw 
-03b5 df200040 arg 64 ,loopcnt 
-03b6 20407ccc call memcpy_fast 
-03b7 2020487a branch dongle_usb0_data_ready_report_set0 
+03b9 6fe08876 fetch 1 ,mem_usb0_set_report_data + 1 
+03ba 67e0ca53 store 1 ,mem_24g_device_type 
+03bb df200040 arg 64 ,loopcnt 
+03bc d8c008b5 arg mem_usb0_get_report_data ,contr 
+03bd d8a049d1 arg mem_dg_protocol_usb_in_data_buff ,contw 
+03be 20407ccc call memcpy_fast 
+03bf 70090c24 jam usb_ep2_protocol ,mem_usb_ep2_data 
+03c0 2020042d branch p_dongle_usb_tx_enable_ep2 
 
 p_dongle_dispose_cmd_get_translen:
-03b8 6fe08877 fetch 1 ,mem_usb0_set_report_data + 2 
-03b9 67e0c800 store 1 ,mem_dg_data_len 
-03ba 2020487a branch dongle_usb0_data_ready_report_set0 
+03c1 6fe08876 fetch 1 ,mem_usb0_set_report_data + 1 
+03c2 67e0ca12 store 1 ,mem_dg_protocol_usb_out_data_buff 
+03c3 1fe27200 copy pdata ,loopcnt 
+03c4 d8c00877 arg mem_usb0_set_report_data + 2 ,contr 
+03c5 d8a04a13 arg mem_dg_protocol_usb_out_data_buff + 1 ,contw 
+03c6 20207ccc branch memcpy_fast 
 
 p_dongle_dispose_cmd_set_test:
-03bb 70461602 jam dongle_test ,mem_24g_work_mode 
-03bc 70461500 jam clear_init ,mem_24g_mode_init 
-03bd 6fe08877 fetch 1 ,mem_usb0_set_report_data + 2 
-03be 67e0c801 store 1 ,mem_dg_test_mode 
-03bf 6fe08878 fetch 1 ,mem_usb0_set_report_data + 3 
-03c0 67e0c802 store 1 ,mem_dg_test_ch 
-03c1 7008b601 jam 0x01 ,mem_usb0_get_report_data + 1 
-03c2 20204880 branch dongle_usb0_data_ready_report_set1 
+03c7 70461602 jam dongle_test ,mem_24g_work_mode 
+03c8 70461500 jam clear_init ,mem_24g_mode_init 
+03c9 6fe08876 fetch 1 ,mem_usb0_set_report_data + 1 
+03ca 67e0c7ff store 1 ,mem_dg_test_mode 
+03cb 6fe08877 fetch 1 ,mem_usb0_set_report_data + 2 
+03cc 67e0c800 store 1 ,mem_dg_test_ch 
+03cd 20600000 rtn 
 
 p_dongle_dispose_cmd_set_key_matrix:
-03c3 6fe08877 fetch 1 ,mem_usb0_set_report_data + 2 
-03c4 67e0c98f store 1 ,mem_dg_keyboard_keymatrix_profile 
-03c5 6fe08878 fetch 1 ,mem_usb0_set_report_data + 3 
-03c6 67e0c990 store 1 ,mem_dg_keyboard_keymatrix_type 
-03c7 6fe08879 fetch 1 ,mem_usb0_set_report_data + 4 
-03c8 67e0c991 store 1 ,mem_dg_keyboard_keymatrix_page 
-03c9 6fe0887a fetch 1 ,mem_usb0_set_report_data + 5 
-03ca 67e0c992 store 1 ,mem_dg_keyboard_keymatrix_len 
-03cb 1fe27200 copy pdata ,loopcnt 
-03cc d8c0087e arg mem_usb0_set_report_data + 9 ,contr 
-03cd d8a04993 arg mem_dg_keyboard_keymatrix_setup_keyvalue ,contw 
-03ce 20407ccc call memcpy_fast 
-03cf 7008b601 jam 0x01 ,mem_usb0_get_report_data + 1 
-03d0 20204880 branch dongle_usb0_data_ready_report_set1 
+03ce 6fe08876 fetch 1 ,mem_usb0_set_report_data + 1 
+03cf 67e0c98d store 1 ,mem_dg_keyboard_keymatrix_profile 
+03d0 6fe08877 fetch 1 ,mem_usb0_set_report_data + 2 
+03d1 67e0c98e store 1 ,mem_dg_keyboard_keymatrix_type 
+03d2 6fe08878 fetch 1 ,mem_usb0_set_report_data + 3 
+03d3 67e0c98f store 1 ,mem_dg_keyboard_keymatrix_page 
+03d4 6fe08879 fetch 1 ,mem_usb0_set_report_data + 4 
+03d5 67e0c990 store 1 ,mem_dg_keyboard_keymatrix_len 
+03d6 1fe27200 copy pdata ,loopcnt 
+03d7 d8c0087d arg mem_usb0_set_report_data + 8 ,contr 
+03d8 d8a04991 arg mem_dg_keyboard_keymatrix_setup_keyvalue ,contw 
+03d9 20407ccc call memcpy_fast 
+03da 704a530a jam kb_type ,mem_24g_device_type 
+03db 704a9601 jam 1 ,mem_dg_kb_ep2_ack_data_flag 
+03dc 704a97a2 jam report_id_data_out ,mem_dg_kb_ep2_ack_data 
+03dd 704a980a jam kb_type ,mem_dg_kb_ep2_ack_data + 1 
+03de 6fe0c990 fetch 1 ,mem_dg_keyboard_keymatrix_len 
+03df 67e0ca99 store 1 ,mem_dg_kb_ep2_ack_data + 2 
+03e0 1fe27200 copy pdata ,loopcnt 
+03e1 d8c0087d arg mem_usb0_set_report_data + 8 ,contr 
+03e2 d8a04a9a arg mem_dg_kb_ep2_ack_data + 3 ,contw 
+03e3 20207cda branch memcpy 
 
 p_dongle_dispose_cmd_get_key_matrix:
-03d1 6fe08877 fetch 1 ,mem_usb0_set_report_data + 2 
-03d2 67e0c98f store 1 ,mem_dg_keyboard_keymatrix_profile 
-03d3 6fe08878 fetch 1 ,mem_usb0_set_report_data + 3 
-03d4 67e0c990 store 1 ,mem_dg_keyboard_keymatrix_type 
-03d5 6fe08879 fetch 1 ,mem_usb0_set_report_data + 4 
-03d6 67e0c991 store 1 ,mem_dg_keyboard_keymatrix_page 
-03d7 df200040 arg 64 ,loopcnt 
-03d8 d8a049cb arg mem_dg_keyboard_keymatrix_getup_keyvalue ,contw 
-03d9 d8a008b6 arg mem_usb0_get_report_data + 1 ,contw 
-03da 20407ccc call memcpy_fast 
-03db 20204880 branch dongle_usb0_data_ready_report_set1 
+03e4 6fe08876 fetch 1 ,mem_usb0_set_report_data + 1 
+03e5 67e0c98d store 1 ,mem_dg_keyboard_keymatrix_profile 
+03e6 6fe08877 fetch 1 ,mem_usb0_set_report_data + 2 
+03e7 67e0c98e store 1 ,mem_dg_keyboard_keymatrix_type 
+03e8 6fe08878 fetch 1 ,mem_usb0_set_report_data + 3 
+03e9 67e0c98f store 1 ,mem_dg_keyboard_keymatrix_page 
+03ea df200040 arg 64 ,loopcnt 
+03eb d8c04ad8 arg mem_dg_kb_keymatrix_buff ,contr 
+03ec d8a049d1 arg mem_dg_protocol_usb_in_data_buff ,contw 
+03ed 20407ccc call memcpy_fast 
+03ee 70090c24 jam usb_ep2_protocol ,mem_usb_ep2_data 
+03ef 2020042d branch p_dongle_usb_tx_enable_ep2 
 
 p_dongle_g24_mouse:
-03dc 70461100 jam 0 ,mem_24g_ackpayload_enable 
-03dd 6fe0c7b1 fetch 1 ,mem_24g_rxdata_temp_new + 2 
-03de c2830404 bbit1 data_dpi ,p_dongle_receive_ms_dpi_info 
-03df c2838411 bbit1 data_battery ,p_dongle_receive_ms_battery_info 
-03e0 c2828414 bbit1 data_heart ,p_dongle_receive_ms_heart_info 
+03f0 70461100 jam 0 ,mem_24g_ackpayload_enable 
+03f1 6fe0c7b1 fetch 1 ,mem_24g_rxdata_temp_new + 2 
+03f2 c2830418 bbit1 data_dpi ,p_dongle_receive_ms_dpi_info 
+03f3 c2838425 bbit1 data_battery ,p_dongle_receive_ms_battery_info 
+03f4 c2828428 bbit1 data_heart ,p_dongle_receive_ms_heart_info 
 
 p_dongle_g24_mouse_next:
-03e1 6fe0c57d fetch 1 ,mem_24g_rxdata_length 
-03e2 1fe67c09 sub pdata ,0x09 ,null 
-03e3 202283f1 branch p_dongle_g24_mouse_data ,zero 
-03e4 204003f1 call p_dongle_g24_mouse_data 
-03e5 6fe0c57d fetch 1 ,mem_24g_rxdata_length 
-03e6 1fe0fff8 add pdata ,-8 ,pdata 
-03e7 67e0c57d store 1 ,mem_24g_rxdata_length 
-03e8 1fe27200 copy pdata ,loopcnt 
-03e9 d8a047b1 arg mem_24g_rxdata_temp_new + 2 ,contw 
-03ea d8c047b9 arg mem_24g_rxdata_temp_new + 10 ,contr 
-03eb 20407cda call memcpy 
-03ec 6fe0c7b1 fetch 1 ,mem_24g_rxdata_temp_new + 2 
-03ed c2830404 bbit1 data_dpi ,p_dongle_receive_ms_dpi_info 
-03ee c2838411 bbit1 data_battery ,p_dongle_receive_ms_battery_info 
-03ef c2828414 bbit1 data_heart ,p_dongle_receive_ms_heart_info 
-03f0 20600000 rtn 
+03f5 6fe0c57d fetch 1 ,mem_24g_rxdata_length 
+03f6 1fe67c09 sub pdata ,0x09 ,null 
+03f7 20228405 branch p_dongle_g24_mouse_data ,zero 
+03f8 20400405 call p_dongle_g24_mouse_data 
+03f9 6fe0c57d fetch 1 ,mem_24g_rxdata_length 
+03fa 1fe0fff8 add pdata ,-8 ,pdata 
+03fb 67e0c57d store 1 ,mem_24g_rxdata_length 
+03fc 1fe27200 copy pdata ,loopcnt 
+03fd d8a047b1 arg mem_24g_rxdata_temp_new + 2 ,contw 
+03fe d8c047b9 arg mem_24g_rxdata_temp_new + 10 ,contr 
+03ff 20407cda call memcpy 
+0400 6fe0c7b1 fetch 1 ,mem_24g_rxdata_temp_new + 2 
+0401 c2830418 bbit1 data_dpi ,p_dongle_receive_ms_dpi_info 
+0402 c2838425 bbit1 data_battery ,p_dongle_receive_ms_battery_info 
+0403 c2828428 bbit1 data_heart ,p_dongle_receive_ms_heart_info 
+0404 20600000 rtn 
 
 p_dongle_g24_mouse_data:
-03f1 58000001 setarg ms_report_id 
-03f2 67e08913 store 1 ,mem_usb_mouse_data 
-03f3 6fe3c7b2 fetch 7 ,mem_24g_rxdata_temp_new + 3 
-03f4 e7e38005 istore 7 ,contw 
-03f5 6fe0c7b2 fetch 1 ,mem_24g_rxdata_temp_new + 3 
-03f6 245a48dd ncall dongle_g24_ms_enable_blank_data_forcibly ,blank 
-03f7 6fe0c7b2 fetch 1 ,mem_24g_rxdata_temp_new + 3 
-03f8 205a48e1 call dongle_g24_ms_disable_blank_data_forcibly ,blank 
-03f9 6fe38914 fetch 7 ,mem_usb_mouse_data + 1 
-03fa 67e3c945 store 7 ,mem_dg_mouse_data 
-03fb 6fe0c945 fetch 1 ,mem_dg_mouse_data 
-03fc 6848c94c fetcht 1 ,mem_dg_mouse_key_data_last 
-03fd 67e0c94c store 1 ,mem_dg_mouse_key_data_last 
-03fe 98467c00 isub temp ,null 
-03ff 24228402 nbranch p_dongle_mouse_data_tx_enable ,zero 
+0405 58000001 setarg ms_report_id 
+0406 67e08913 store 1 ,mem_usb_mouse_data 
+0407 6fe3c7b2 fetch 7 ,mem_24g_rxdata_temp_new + 3 
+0408 e7e38005 istore 7 ,contw 
+0409 6fe0c7b2 fetch 1 ,mem_24g_rxdata_temp_new + 3 
+040a 245a48dd ncall dongle_g24_ms_enable_blank_data_forcibly ,blank 
+040b 6fe0c7b2 fetch 1 ,mem_24g_rxdata_temp_new + 3 
+040c 205a48e1 call dongle_g24_ms_disable_blank_data_forcibly ,blank 
+040d 6fe38914 fetch 7 ,mem_usb_mouse_data + 1 
+040e 67e3c943 store 7 ,mem_dg_mouse_data 
+040f 6fe0c943 fetch 1 ,mem_dg_mouse_data 
+0410 6848c94a fetcht 1 ,mem_dg_mouse_key_data_last 
+0411 67e0c94a store 1 ,mem_dg_mouse_key_data_last 
+0412 98467c00 isub temp ,null 
+0413 24228416 nbranch p_dongle_mouse_data_tx_enable ,zero 
 
 p_dongle_receive_mouse_data_check:
-0400 6fe34946 fetch 6 ,mem_dg_mouse_data + 1 
-0401 207a0000 rtn blank 
+0414 6fe34944 fetch 6 ,mem_dg_mouse_data + 1 
+0415 207a0000 rtn blank 
 
 p_dongle_mouse_data_tx_enable:
-0402 70090c20 jam usb_ep2_ms ,mem_usb_ep2_data 
-0403 20200419 branch p_dongle_usb_tx_enable_ep2 
+0416 70090c20 jam usb_ep2_ms ,mem_usb_ep2_data 
+0417 2020042d branch p_dongle_usb_tx_enable_ep2 
 
 p_dongle_receive_ms_dpi_info:
-0404 6fe0c7b2 fetch 1 ,mem_24g_rxdata_temp_new + 3 
-0405 6848c94d fetcht 1 ,mem_dg_mouse_dpi_level 
-0406 67e0c94d store 1 ,mem_dg_mouse_dpi_level 
-0407 98467c00 isub temp ,null 
-0408 20628000 rtn zero 
-0409 70495200 jam 0 ,mem_usb_dpi_info_data + 4 
+0418 6fe0c7b2 fetch 1 ,mem_24g_rxdata_temp_new + 3 
+0419 6848c94b fetcht 1 ,mem_dg_mouse_dpi_level 
+041a 67e0c94b store 1 ,mem_dg_mouse_dpi_level 
+041b 98467c00 isub temp ,null 
+041c 20628000 rtn zero 
+041d 70495000 jam 0 ,mem_usb_dpi_info_data + 4 
 
 p_dongle_usb_tx_dpi_level_enable:
-040a 70494e40 jam 0x40 ,mem_usb_dpi_info_data 
-040b 70494fa1 jam report_id_data_in ,mem_usb_dpi_info_data + 1 
-040c 70495005 jam ms_type ,mem_usb_dpi_info_data + 2 
-040d 6fe0c94d fetch 1 ,mem_dg_mouse_dpi_level 
-040e 67e0c951 store 1 ,mem_usb_dpi_info_data + 3 
-040f 70090c23 jam usb_ep2_dpi ,mem_usb_ep2_data 
-0410 20200419 branch p_dongle_usb_tx_enable_ep2 
+041e 70494c40 jam 0x40 ,mem_usb_dpi_info_data 
+041f 70494da1 jam report_id_data_in ,mem_usb_dpi_info_data + 1 
+0420 70494e05 jam ms_type ,mem_usb_dpi_info_data + 2 
+0421 6fe0c94b fetch 1 ,mem_dg_mouse_dpi_level 
+0422 67e0c94f store 1 ,mem_usb_dpi_info_data + 3 
+0423 70090c23 jam usb_ep2_dpi ,mem_usb_ep2_data 
+0424 2020042d branch p_dongle_usb_tx_enable_ep2 
 
 p_dongle_receive_ms_battery_info:
-0411 6fe0c7b2 fetch 1 ,mem_24g_rxdata_temp_new + 3 
-0412 67e0c7f7 store 1 ,mem_dg_mouse_battery_level 
-0413 20600000 rtn 
+0425 6fe0c7b2 fetch 1 ,mem_24g_rxdata_temp_new + 3 
+0426 67e0c7f7 store 1 ,mem_dg_mouse_battery_level 
+0427 20600000 rtn 
 
 p_dongle_receive_ms_heart_info:
-0414 6fe0ca4d fetch 1 ,mem_dongle_ms_ep2_ack_data_flag 
-0415 207a0000 rtn blank 
-0416 704a4d00 jam 0 ,mem_dongle_ms_ep2_ack_data_flag 
+0428 6fe0ca54 fetch 1 ,mem_dg_ms_ep2_ack_data_flag 
+0429 207a0000 rtn blank 
+042a 704a5400 jam 0 ,mem_dg_ms_ep2_ack_data_flag 
 
 p_24g_ackpayload_enable_set:
-0417 70461108 jam protocol_ackpayload ,mem_24g_ackpayload_enable 
-0418 20600000 rtn 
+042b 70461108 jam protocol_ackpayload ,mem_24g_ackpayload_enable 
+042c 20600000 rtn 
 
 p_dongle_usb_tx_enable_ep2:
-0419 6fe0890e fetch 1 ,mem_usb_device_enumeration_endflag 
-041a 207a0000 rtn blank 
-041b da20493d arg mem_usb_ep2_fifo ,rega 
-041c 20407da5 call fifo_is_full 
-041d 247a0000 nrtn blank 
-041e 6fe0890c fetch 1 ,mem_usb_ep2_data 
-041f 67e0866f store 1 ,mem_fifo_temp 
-0420 da20493d arg mem_usb_ep2_fifo ,rega 
-0421 20207d8b branch fifo_in 
+042d 6fe0890e fetch 1 ,mem_usb_device_enumeration_endflag 
+042e 207a0000 rtn blank 
+042f da20493b arg mem_usb_ep2_fifo ,rega 
+0430 20407da5 call fifo_is_full 
+0431 247a0000 nrtn blank 
+0432 6fe0890c fetch 1 ,mem_usb_ep2_data 
+0433 67e0866f store 1 ,mem_fifo_temp 
+0434 da20493b arg mem_usb_ep2_fifo ,rega 
+0435 20207d8b branch fifo_in 
 
 p_dongle_g24_kb:
-0422 6fe0c7b2 fetch 1 ,mem_24g_rxdata_temp_new + 3 
-0423 c0000427 beq 0 ,p_dongle_g24_kb_type0 
-0424 c001042d beq 2 ,p_dongle_g24_kb_type2 
-0425 c0018430 beq 3 ,p_dongle_g24_kb_type3 
-0426 202033be branch g24_rx_interrupt_clear 
+0436 6fe0c7b1 fetch 1 ,mem_24g_rxdata_temp_new + 2 
+0437 c283044f bbit1 data_key_matrix ,p_dongle_receive_kb_key_matrix_data 
+0438 c282844a bbit1 data_heart ,p_dongle_receive_kb_heart_info 
+0439 6fe0c7b2 fetch 1 ,mem_24g_rxdata_temp_new + 3 
+043a c000043e beq 0 ,p_dongle_g24_kb_type0 
+043b c0010444 beq 2 ,p_dongle_g24_kb_type2 
+043c c0018447 beq 3 ,p_dongle_g24_kb_type3 
+043d 202033be branch g24_rx_interrupt_clear 
 
 p_dongle_g24_kb_type0:
-0427 6fe0c7b4 fetch 1 ,mem_24g_rxdata_temp_new + 5 
-0428 67e0c611 store 1 ,mem_24g_ackpayload_enable 
-0429 7047b400 jam 0 ,mem_24g_rxdata_temp_new + 5 
-042a d8a00923 arg mem_usb_kb_data ,contw 
-042b d8c047b3 arg mem_24g_rxdata_temp_new + 4 ,contr 
-042c 202048ef branch dongle_g24_kb_type0 + 5 
+043e 6fe0c7b4 fetch 1 ,mem_24g_rxdata_temp_new + 5 
+043f 67e0c611 store 1 ,mem_24g_ackpayload_enable 
+0440 7047b400 jam 0 ,mem_24g_rxdata_temp_new + 5 
+0441 d8a00923 arg mem_usb_kb_data ,contw 
+0442 d8c047b3 arg mem_24g_rxdata_temp_new + 4 ,contr 
+0443 202048ef branch dongle_g24_kb_type0 + 5 
 
 p_dongle_g24_kb_type2:
-042d d8a00943 arg mem_usb_kb_system ,contw 
-042e d8c047b2 arg mem_24g_rxdata_temp_new + 3 ,contr 
-042f 2020491f branch dongle_g24_kb_type2 + 2 
+0444 d8a00943 arg mem_usb_kb_system ,contw 
+0445 d8c047b2 arg mem_24g_rxdata_temp_new + 3 ,contr 
+0446 2020491f branch dongle_g24_kb_type2 + 2 
 
 p_dongle_g24_kb_type3:
-0430 d8a00933 arg mem_usb_kb_multikey ,contw 
-0431 d8c047b2 arg mem_24g_rxdata_temp_new + 3 ,contr 
-0432 20204907 branch dongle_g24_kb_type3 + 2 
+0447 d8a00933 arg mem_usb_kb_multikey ,contw 
+0448 d8c047b2 arg mem_24g_rxdata_temp_new + 3 ,contr 
+0449 20204907 branch dongle_g24_kb_type3 + 2 
+
+p_dongle_receive_kb_heart_info:
+044a 6fe0ca96 fetch 1 ,mem_dg_kb_ep2_ack_data_flag 
+044b 207a0000 rtn blank 
+044c 704a9600 jam 0 ,mem_dg_kb_ep2_ack_data_flag 
+
+p_24g_ackpayload_kb_enable_set:
+044d 70461108 jam protocol_ackpayload ,mem_24g_ackpayload_enable 
+044e 20600000 rtn 
+
+p_dongle_receive_kb_key_matrix_data:
+044f 6fe0c7b0 fetch 1 ,mem_24g_rxdata_temp_new + 1 
+0450 1fe0ffff increase -1 ,pdata 
+0451 1fe27200 copy pdata ,loopcnt 
+0452 6fe14b79 fetch 2 ,mem_keymatrix_wptr 
+0453 205a045a call p_dongle_write_from_head ,blank 
+0454 245a045c ncall p_dongle_write_from_last ,blank 
+0455 d8c047b2 arg mem_24g_rxdata_temp_new + 3 ,contr 
+0456 20407ccc call memcpy_fast 
+0457 18a27e00 copy contw ,pdata 
+0458 67e14b79 store 2 ,mem_keymatrix_wptr 
+0459 20600000 rtn 
+
+p_dongle_write_from_head:
+045a d8a04ad8 arg mem_dg_kb_keymatrix_buff ,contw 
+045b 20600000 rtn 
+
+p_dongle_write_from_last:
+045c 6fe14b79 fetch 2 ,mem_keymatrix_wptr 
+045d 1fe20a00 copy pdata ,contw 
+045e 20600000 rtn 
 
 p_checksum_calcu:
-0433 da200000 arg 0 ,rega 
+045f da200000 arg 0 ,rega 
 
 p_dongle_data_checksum:
-0434 efe08006 ifetch 1 ,contr 
-0435 9a20a200 iadd rega ,rega 
-0436 c2000434 loop p_dongle_data_checksum 
-0437 1a2122ff and_into 0xff ,rega 
-0438 20600000 rtn 
+0460 efe08006 ifetch 1 ,contr 
+0461 9a20a200 iadd rega ,rega 
+0462 c2000460 loop p_dongle_data_checksum 
+0463 1a2122ff and_into 0xff ,rega 
+0464 20600000 rtn 
               org 0x2000
 
 start:
Index: program/patch.prog
===================================================================
--- /branch/keyboard/customer_FW/RY_project/RY_Dongle/program/patch.prog	(revision 1988)
+++ /branch/keyboard/customer_FW/RY_project/RY_Dongle/program/patch.prog	(working copy)
@@ -828,22 +828,34 @@
 	rtn
 
 p_dongle_g24_protocol_ackpayload_prep:
+	jam 0,mem_24g_ackpayload_enable
 	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
+
+/****************************************************************************
+* Description:   transmit ack info 
+* Parameters:  1byte type +1byte len + n bytes payload
+****************************************************************************/
 p_dongle_g24_protocol_ms_ackpayload_prep:
 	jam TYPE_MS,mem_24g_data_type
-	fetch 1,mem_dongle_ms_ep2_ack_data
+	fetch 1,mem_dg_ms_ep2_ack_data
 	store 1,mem_24g_datalen
 	copy pdata,loopcnt
-	arg mem_dongle_ms_ep2_ack_data+1,contr
+	arg mem_dg_ms_ep2_ack_data+1,contr
 	arg mem_24g_txbuf_new,contw
 	branch memcpy
 
 p_dongle_g24_protocol_kb_ackpayload_prep:
 	jam TYPE_KB,mem_24g_data_type
-	rtn
+	fetch 1,mem_dg_kb_ep2_ack_data+2
+	increase 3,pdata
+	store 1,mem_24g_datalen
+	copy pdata,loopcnt
+	arg mem_dg_kb_ep2_ack_data,contr
+	arg mem_24g_txbuf_new,contw
+	branch memcpy
 
 p_dongle_pc_sleep_ackpayload_prep_mouse:
 	fetch 1,mem_dg_pc_sleep_flag
@@ -1169,13 +1181,6 @@
 	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
-	//get usb host command
-//	fetch 1,mem_usb0_set_report_data
-//	rtnne PC_REPORT_ID
 	fetch 1,mem_usb0_set_report_data
 	beq CMD_CHECK_STATUS,p_dongle_dispose_cmd_check_status
 	beq CMD_SET,p_dongle_dispose_cmd_set
@@ -1195,14 +1200,14 @@
 **************************************************************************************/
 p_dongle_ms_ep2_ack_data_clr:
 	arg 65,loopcnt
-	arg mem_dongle_ms_ep2_ack_data,contw
+	arg mem_dg_ms_ep2_ack_data,contw
 	branch clear_mem
 
 p_dongle_ms_ep2_ack_data_copy:
-	jam 1,mem_dongle_ms_ep2_ack_data_flag
+	jam 1,mem_dg_ms_ep2_ack_data_flag
 	jam PROTOCOL_ACKPAYLOAD,mem_24g_ackpayload_enable
 	arg mem_usb0_set_report_data,contr
-	arg mem_dongle_ms_ep2_ack_data+1,contw
+	arg mem_dg_ms_ep2_ack_data+1,contw
 	branch memcpy
 
 //1byte opcode + 1byte type +1byte data +1byte checksum
@@ -1215,7 +1220,7 @@
 	fetch 1,mem_usb0_set_report_data+2
 	store 1,mem_dg_mouse_dpi_level
 p_dongle_ms_ack_data_copy:
-	jam 4,mem_dongle_ms_ep2_ack_data
+	jam 4,mem_dg_ms_ep2_ack_data
 	arg 4,loopcnt
 	branch p_dongle_ms_ep2_ack_data_copy	
 
@@ -1260,65 +1265,78 @@
 	
 	
 p_dongle_dispose_cmd_set:
-	fetch 1,mem_usb0_set_report_data+2		//0x0a--keyboard, 0x05--mouse
-	store 1,mem_dg_data_type
+	fetch 1,mem_usb0_set_report_data+1		//0x0a--keyboard, 0x05--mouse
+	store 1,mem_24g_device_type
 	rtn
 
 p_dongle_dispose_cmd_get_in_data:
-	jam 0,mem_usb0_set_report_data
-	arg mem_dg_usb_get_buff,contr
-	arg mem_usb0_get_report_data,contw
+	fetch 1,mem_usb0_set_report_data+1
+	store 1,mem_24g_device_type
 	arg 64,loopcnt
+	arg mem_usb0_get_report_data,contr
+	arg mem_dg_protocol_usb_in_data_buff,contw
 	call memcpy_fast
-	branch dongle_usb0_data_ready_report_set0
+	jam USB_EP2_PROTOCOL,mem_usb_ep2_data
+	branch p_dongle_usb_tx_enable_ep2
 
 p_dongle_dispose_cmd_get_translen:
-	fetch 1,mem_usb0_set_report_data+2
-	store 1,mem_dg_data_len
-	branch dongle_usb0_data_ready_report_set0
+	fetch 1,mem_usb0_set_report_data+1
+	store 1,mem_dg_protocol_usb_out_data_buff	//len
+	copy pdata,loopcnt
+	arg mem_usb0_set_report_data+2,contr
+	arg mem_dg_protocol_usb_out_data_buff+1,contw
+	branch memcpy_fast
 
 p_dongle_dispose_cmd_set_test:
 	jam DONGLE_TEST,mem_24g_work_mode
 	jam CLEAR_INIT,mem_24g_mode_init	
-	fetch 1,mem_usb0_set_report_data+2
+	fetch 1,mem_usb0_set_report_data+1
 	store 1,mem_dg_test_mode
-	fetch 1,mem_usb0_set_report_data+3
+	fetch 1,mem_usb0_set_report_data+2
 	store 1,mem_dg_test_ch
-	
-	jam 0x01,mem_usb0_get_report_data+1
-	branch dongle_usb0_data_ready_report_set1
+	rtn
 
 p_dongle_dispose_cmd_set_key_matrix:
-	fetch 1,mem_usb0_set_report_data+2
+	fetch 1,mem_usb0_set_report_data+1
 	store 1,mem_dg_keyboard_keymatrix_profile
-	fetch 1,mem_usb0_set_report_data+3
+	fetch 1,mem_usb0_set_report_data+2
 	store 1,mem_dg_keyboard_keymatrix_type
-	fetch 1,mem_usb0_set_report_data+4
+	fetch 1,mem_usb0_set_report_data+3
 	store 1,mem_dg_keyboard_keymatrix_page
-	fetch 1,mem_usb0_set_report_data+5
+	fetch 1,mem_usb0_set_report_data+4
 	store 1,mem_dg_keyboard_keymatrix_len
 	copy pdata,loopcnt
-	arg mem_usb0_set_report_data+9,contr
+	arg mem_usb0_set_report_data+8,contr
 	arg mem_dg_keyboard_keymatrix_setup_keyvalue,contw
 	call memcpy_fast
-	
-	jam 0x01,mem_usb0_get_report_data+1
-	branch dongle_usb0_data_ready_report_set1
+
+	jam KB_TYPE,mem_24g_device_type
+	jam 1,mem_dg_kb_ep2_ack_data_flag
+	jam REPORT_ID_DATA_OUT,mem_dg_kb_ep2_ack_data
+	jam KB_TYPE,mem_dg_kb_ep2_ack_data+1
+	fetch 1,mem_dg_keyboard_keymatrix_len
+	store 1,mem_dg_kb_ep2_ack_data+2
+	copy pdata,loopcnt
+	arg mem_usb0_set_report_data+8,contr
+	arg mem_dg_kb_ep2_ack_data+3,contw
+	branch memcpy
+
 
 p_dongle_dispose_cmd_get_key_matrix:
-	fetch 1,mem_usb0_set_report_data+2
+	fetch 1,mem_usb0_set_report_data+1
 	store 1,mem_dg_keyboard_keymatrix_profile
-	fetch 1,mem_usb0_set_report_data+3
+	fetch 1,mem_usb0_set_report_data+2
 	store 1,mem_dg_keyboard_keymatrix_type
-	fetch 1,mem_usb0_set_report_data+4
+	fetch 1,mem_usb0_set_report_data+3
 	store 1,mem_dg_keyboard_keymatrix_page
 
 	arg 64,loopcnt
-	arg mem_dg_keyboard_keymatrix_getup_keyvalue,contw
-	arg mem_usb0_get_report_data+1,contw
+	arg mem_dg_kb_keymatrix_buff,contr
+	arg mem_dg_protocol_usb_in_data_buff,contw
 	call memcpy_fast
-	branch dongle_usb0_data_ready_report_set1
-
+	jam USB_EP2_PROTOCOL,mem_usb_ep2_data
+	branch p_dongle_usb_tx_enable_ep2
+	
 
 p_dongle_g24_mouse:
 	jam 0,mem_24g_ackpayload_enable
@@ -1406,9 +1424,9 @@
 * Parameters:  1byte type +1byte battery
 ****************************************************************************/
 p_dongle_receive_ms_heart_info:
-	fetch 1,mem_dongle_ms_ep2_ack_data_flag
+	fetch 1,mem_dg_ms_ep2_ack_data_flag
 	rtn blank
-	jam 0,mem_dongle_ms_ep2_ack_data_flag
+	jam 0,mem_dg_ms_ep2_ack_data_flag
 p_24g_ackpayload_enable_set:
 	jam PROTOCOL_ACKPAYLOAD,mem_24g_ackpayload_enable
 	rtn
@@ -1425,6 +1443,10 @@
 	branch fifo_in
 
 p_dongle_g24_kb:
+	fetch 1,mem_24g_rxdata_temp_new+2
+	bbit1 DATA_KEY_MATRIX,p_dongle_receive_kb_key_matrix_data
+	bbit1 DATA_HEART,p_dongle_receive_kb_heart_info
+	
 	fetch 1,mem_24g_rxdata_temp_new+3
 	beq 0,p_dongle_g24_kb_type0	//normal key
 	beq 2,p_dongle_g24_kb_type2	//system key
@@ -1449,6 +1471,41 @@
 	arg mem_24g_rxdata_temp_new+3,contr
 	branch dongle_g24_kb_type3+2
 
+p_dongle_receive_kb_heart_info:
+	fetch 1,mem_dg_kb_ep2_ack_data_flag
+	rtn blank
+	jam 0,mem_dg_kb_ep2_ack_data_flag
+p_24g_ackpayload_kb_enable_set:
+	jam PROTOCOL_ACKPAYLOAD,mem_24g_ackpayload_enable
+	rtn
+
+
+/****************************************************************************
+* Description: 	receive keymatrix info from keyboard
+* Parameters:  	1byte len + 64bytes key value
+****************************************************************************/
+p_dongle_receive_kb_key_matrix_data:
+	fetch 1,mem_24g_rxdata_temp_new+1
+	increase -1,pdata	//delete len 1byte
+	copy pdata,loopcnt
+	fetch 2,mem_keymatrix_wptr
+	call p_dongle_write_from_head,blank
+	ncall p_dongle_write_from_last,blank
+	
+	arg mem_24g_rxdata_temp_new+3,contr
+	call memcpy_fast
+	copy contw,pdata
+	store 2,mem_keymatrix_wptr
+	rtn
+
+p_dongle_write_from_head:
+	arg mem_dg_kb_keymatrix_buff,contw
+	rtn
+
+p_dongle_write_from_last:
+	fetch 2,mem_keymatrix_wptr
+	copy pdata,contw
+	rtn
 
 //input: contr--buff ptr, loopcnt--data len
 //output:rega--checksum
