Index: format/app_dongle.format
===================================================================
--- /1121s/branch/dongle/1m/usb_pc/xzr_project/usb_pc_ai_voice/format/app_dongle.format	(revision 4731)
+++ /1121s/branch/dongle/1m/usb_pc/xzr_project/usb_pc_ai_voice/format/app_dongle.format	(working copy)
@@ -58,12 +58,26 @@
 //80 mem_24g_rxpayload_new 	//dongle not recv ms ackpayload
 80 mem_24g_rxdata_temp_new
 1 mem_24g_rxdata_ack_flag
-
 //24g addr
 4 mem_24g_pair_addr_new
+
+1 mem_dg_ms_rf_key_last
+1 mem_dg_ms_battery_last
+1 mem_dg_rep_ms_ack_data_flag
+65 mem_dg_rep_ms_ack_data
+
 )
 
 
+(
+//data type
+2 PROTOCOL_BIT
+3 AUDIO_BIT
+4 HTTP_BIT
+5 HEART_BIT
+6 BATTERY_BIT
+)
+
 //otp address offset
 (
 0x5A DONGLE_KB_BIND_SUCCESS
@@ -155,6 +169,7 @@
 (
 0x01 BIND_ACKPAYLOAD
 0x03 KB_LED_ACKPAYLOAD
+0x08 PROTOCOL_ACKPAYLOAD
 )
 
 //mem_dg_sys_config
Index: output/eeprom.dat
===================================================================
--- /1121s/branch/dongle/1m/usb_pc/xzr_project/usb_pc_ai_voice/output/eeprom.dat	(revision 4731)
+++ /1121s/branch/dongle/1m/usb_pc/xzr_project/usb_pc_ai_voice/output/eeprom.dat	(working copy)
@@ -2,8 +2,8 @@
 02
 aa
 55
-c2
-0e
+72
+0f
 c2
 84
 00
@@ -147,7 +147,7 @@
 c0
 42
 83
-74
+75
 c0
 44
 02
@@ -2803,7 +2803,7 @@
 58
 00
 03
-96
+97
 67
 e1
 45
@@ -2811,7 +2811,7 @@
 58
 00
 03
-9f
+cb
 67
 e1
 45
@@ -3523,7 +3523,7 @@
 20
 5a
 03
-77
+78
 6f
 e0
 ca
@@ -3531,15 +3531,19 @@
 c0
 7f
 83
-7d
+7e
+1f
+e1
+7e
+03
 c0
 00
 83
-7f
+80
 c0
 01
 03
-8f
+90
 d8
 a0
 49
@@ -3615,7 +3619,7 @@
 c0
 00
 83
-8a
+8b
 6f
 e0
 c6
@@ -3663,7 +3667,7 @@
 20
 20
 83
-94
+95
 20
 20
 33
@@ -3676,6 +3680,102 @@
 20
 35
 a9
+6f
+e0
+ca
+4c
+c2
+81
+03
+bf
+c2
+81
+83
+bf
+c2
+82
+03
+bf
+c2
+82
+83
+c0
+c2
+83
+03
+c5
+6f
+e0
+c5
+7d
+1f
+e6
+7c
+09
+20
+22
+83
+af
+20
+40
+03
+af
+6f
+e0
+c5
+7d
+1f
+e0
+ff
+f8
+67
+e0
+c5
+7d
+1f
+e2
+72
+00
+d8
+a0
+4a
+4c
+d8
+c0
+4a
+54
+20
+40
+7c
+da
+6f
+e0
+ca
+4c
+c2
+81
+03
+bf
+c2
+81
+83
+bf
+c2
+82
+03
+bf
+c2
+82
+83
+c0
+c2
+83
+03
+c5
+20
+60
+00
+00
 58
 00
 00
@@ -3708,10 +3808,86 @@
 5a
 48
 e1
+6f
+e0
+ca
+4d
+68
+48
+ca
+9f
+67
+e0
+ca
+9f
+98
+46
+7c
+00
+24
+22
+c8
+36
+6f
+e3
+4a
+4e
+20
+7a
+00
+00
 20
 20
 48
 36
+20
+60
+00
+00
+6f
+e0
+ca
+a1
+20
+7a
+00
+00
+70
+4a
+a1
+00
+70
+46
+11
+08
+20
+60
+00
+00
+6f
+e0
+ca
+4d
+68
+48
+ca
+a0
+67
+e0
+ca
+a0
+98
+46
+7c
+00
+24
+62
+80
+00
+20
+60
+00
+00
 6f
 e0
 ca
@@ -3719,15 +3895,15 @@
 c0
 00
 03
-a4
+d0
 c0
 01
 03
-aa
+d6
 c0
 01
 83
-ad
+d9
 20
 20
 33
@@ -3780,8 +3956,8 @@
 20
 49
 07
-cb
-21
+64
+8d
 aa
 55
 40
@@ -4446,184 +4622,8 @@
 55
 4e
 8e
-3c
-1d
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
+dd
+c5
 ff
 ff
 ff
@@ -8188,5 +8188,5 @@
 ff
 ff
 ff
-e6
-f4
+67
+6b
Index: output/memmap.format
===================================================================
--- /1121s/branch/dongle/1m/usb_pc/xzr_project/usb_pc_ai_voice/output/memmap.format	(revision 4731)
+++ /1121s/branch/dongle/1m/usb_pc/xzr_project/usb_pc_ai_voice/output/memmap.format	(working copy)
@@ -1504,6 +1504,10 @@
 0x4a4a mem_24g_rxdata_temp_new
 0x4a9a mem_24g_rxdata_ack_flag
 0x4a9b mem_24g_pair_addr_new
+0x4a9f mem_dg_ms_rf_key_last
+0x4aa0 mem_dg_ms_battery_last
+0x4aa1 mem_dg_rep_ms_ack_data_flag
+0x4aa2 mem_dg_rep_ms_ack_data
 0x45d3 mem_rssi_hex_received
 0x45d4 mem_24g_pair_sm
 0x45d5 mem_24g_pair_no_ack
Index: output/otp.dat
===================================================================
--- /1121s/branch/dongle/1m/usb_pc/xzr_project/usb_pc_ai_voice/output/otp.dat	(revision 4731)
+++ /1121s/branch/dongle/1m/usb_pc/xzr_project/usb_pc_ai_voice/output/otp.dat	(working copy)
@@ -11,8 +11,8 @@
 00
 aa
 55
-c2
-0e
+72
+0f
 c2
 84
 00
@@ -156,7 +156,7 @@
 c0
 42
 83
-74
+75
 c0
 44
 02
@@ -2812,7 +2812,7 @@
 58
 00
 03
-96
+97
 67
 e1
 45
@@ -2820,7 +2820,7 @@
 58
 00
 03
-9f
+cb
 67
 e1
 45
@@ -3532,7 +3532,7 @@
 20
 5a
 03
-77
+78
 6f
 e0
 ca
@@ -3540,15 +3540,19 @@
 c0
 7f
 83
-7d
+7e
+1f
+e1
+7e
+03
 c0
 00
 83
-7f
+80
 c0
 01
 03
-8f
+90
 d8
 a0
 49
@@ -3624,7 +3628,7 @@
 c0
 00
 83
-8a
+8b
 6f
 e0
 c6
@@ -3672,7 +3676,7 @@
 20
 20
 83
-94
+95
 20
 20
 33
@@ -3685,6 +3689,102 @@
 20
 35
 a9
+6f
+e0
+ca
+4c
+c2
+81
+03
+bf
+c2
+81
+83
+bf
+c2
+82
+03
+bf
+c2
+82
+83
+c0
+c2
+83
+03
+c5
+6f
+e0
+c5
+7d
+1f
+e6
+7c
+09
+20
+22
+83
+af
+20
+40
+03
+af
+6f
+e0
+c5
+7d
+1f
+e0
+ff
+f8
+67
+e0
+c5
+7d
+1f
+e2
+72
+00
+d8
+a0
+4a
+4c
+d8
+c0
+4a
+54
+20
+40
+7c
+da
+6f
+e0
+ca
+4c
+c2
+81
+03
+bf
+c2
+81
+83
+bf
+c2
+82
+03
+bf
+c2
+82
+83
+c0
+c2
+83
+03
+c5
+20
+60
+00
+00
 58
 00
 00
@@ -3717,10 +3817,86 @@
 5a
 48
 e1
+6f
+e0
+ca
+4d
+68
+48
+ca
+9f
+67
+e0
+ca
+9f
+98
+46
+7c
+00
+24
+22
+c8
+36
+6f
+e3
+4a
+4e
+20
+7a
+00
+00
 20
 20
 48
 36
+20
+60
+00
+00
+6f
+e0
+ca
+a1
+20
+7a
+00
+00
+70
+4a
+a1
+00
+70
+46
+11
+08
+20
+60
+00
+00
+6f
+e0
+ca
+4d
+68
+48
+ca
+a0
+67
+e0
+ca
+a0
+98
+46
+7c
+00
+24
+62
+80
+00
+20
+60
+00
+00
 6f
 e0
 ca
@@ -3728,15 +3904,15 @@
 c0
 00
 03
-a4
+d0
 c0
 01
 03
-aa
+d6
 c0
 01
 83
-ad
+d9
 20
 20
 33
@@ -3789,8 +3965,8 @@
 20
 49
 07
-cb
-21
+64
+8d
 aa
 55
 40
@@ -4455,6 +4631,6 @@
 55
 4e
 8e
-3c
-1d
+dd
+c5
 f0
Index: output/program.lis
===================================================================
--- /1121s/branch/dongle/1m/usb_pc/xzr_project/usb_pc_ai_voice/output/program.lis	(revision 4731)
+++ /1121s/branch/dongle/1m/usb_pc/xzr_project/usb_pc_ai_voice/output/program.lis	(working copy)
@@ -37,7 +37,7 @@
 0020 c040832f beq patch30_1 ,p_g24_bind_data_process 
 0021 c041024f beq patch30_2 ,p_g24_bind_data_parse_next 
 0022 c0420370 beq patch30_4 ,p_g24_receive_packet_parse_end 
-0023 c0428374 beq patch30_5 ,p_g24_rx_interrupt_clear 
+0023 c0428375 beq patch30_5 ,p_g24_rx_interrupt_clear 
 0024 c0440287 beq patch31_0 ,p_g24_mode_switch_bind_search 
 0025 c0450294 beq patch31_2 ,p_g24_bind_mode_auto 
 0026 c0458244 beq patch31_3 ,p_g24_search_mode_auto 
@@ -895,9 +895,9 @@
 p_app_init:
 02b9 580047ea setarg dongle_dispatch 
 02ba 67e145e0 store 2 ,mem_cb_24g_receive_process 
-02bb 58000396 setarg p_dongle_g24_mouse 
+02bb 58000397 setarg p_dongle_g24_mouse 
 02bc 67e145e4 store 2 ,mem_cb_24g_data_device1 
-02bd 5800039f setarg p_dongle_g24_kb 
+02bd 580003cb setarg p_dongle_g24_kb 
 02be 67e145e6 store 2 ,mem_cb_24g_data_device2 
 02bf 580002c4 setarg p_dongle_ackpayload_prep 
 02c0 67e145e2 store 2 ,mem_cb_24g_ackpayload 
@@ -1133,97 +1133,155 @@
 036c 20407cda call memcpy 
 036d 70461300 jam 0 ,mem_24g_mode_switch 
 036e 6fe0c610 fetch 1 ,mem_24g_pair_mode 
-036f 205a0377 call p_g24_enable_nodata_timer ,blank 
+036f 205a0378 call p_g24_enable_nodata_timer ,blank 
 
 p_g24_receive_packet_parse_end:
 0370 6fe0ca4c fetch 1 ,mem_24g_rxdata_temp_new + 2 
-0371 c07f837d beq datatype_attemp ,p_g24_data_receive_attemp 
-0372 c000837f beq datatype_device1 ,p_g24_data_device1 
-0373 c001038f beq datatype_device2 ,p_g24_data_device2 
+0371 c07f837e beq datatype_attemp ,p_g24_data_receive_attemp 
+0372 1fe17e03 and pdata ,0x03 ,pdata 
+0373 c0008380 beq datatype_device1 ,p_g24_data_device1 
+0374 c0010390 beq datatype_device2 ,p_g24_data_device2 
 
 p_g24_rx_interrupt_clear:
-0374 d8a0495a arg mem_24g_rxbuf_new ,contw 
-0375 df200046 arg 70 ,loopcnt 
-0376 20207ca1 branch clear_mem 
+0375 d8a0495a arg mem_24g_rxbuf_new ,contw 
+0376 df200046 arg 70 ,loopcnt 
+0377 20207ca1 branch clear_mem 
 
 p_g24_enable_nodata_timer:
-0377 6fe0c62b fetch 1 ,mem_24g_bind_device_living 
-0378 203a33fe branch g24_enable_nodata_timer ,blank 
-0379 70461401 jam 1 ,mem_24g_nodata_timer_enable 
-037a 58000640 setarg 1600 
-037b d8e00008 arg g24_timer_nodata ,queue 
-037c 20207ce1 branch timer_init 
+0378 6fe0c62b fetch 1 ,mem_24g_bind_device_living 
+0379 203a33fe branch g24_enable_nodata_timer ,blank 
+037a 70461401 jam 1 ,mem_24g_nodata_timer_enable 
+037b 58000640 setarg 1600 
+037c d8e00008 arg g24_timer_nodata ,queue 
+037d 20207ce1 branch timer_init 
 
 p_g24_data_receive_attemp:
-037d 20400348 call p_g24_bind_device_status 
-037e 2020025f branch p_g24_data_attemp 
+037e 20400348 call p_g24_bind_device_status 
+037f 2020025f branch p_g24_data_attemp 
 
 p_g24_data_device1:
-037f 2040338d call g24_binding_dvc1_living 
-0380 2040352e call g24_ch_timer_reinit 
-0381 6fe0c60a fetch 1 ,mem_24g_abort_packet 
-0382 6848ca4a fetcht 1 ,mem_24g_rxdata_temp_new 
-0383 284ffe03 isolate1 bit_abort ,temp 
-0384 7920fe00 setflag true ,0 ,pdata 
-0385 67e0c60a store 1 ,mem_24g_abort_packet 
-0386 c000838a beq 1 ,p_g24_data_attemp_device1_abort 
-0387 6fe0c612 fetch 1 ,mem_24g_hop_packet 
-0388 6848ca4a fetcht 1 ,mem_24g_rxdata_temp_new 
-0389 202033ce branch g24_data_device1_next 
+0380 2040338d call g24_binding_dvc1_living 
+0381 2040352e call g24_ch_timer_reinit 
+0382 6fe0c60a fetch 1 ,mem_24g_abort_packet 
+0383 6848ca4a fetcht 1 ,mem_24g_rxdata_temp_new 
+0384 284ffe03 isolate1 bit_abort ,temp 
+0385 7920fe00 setflag true ,0 ,pdata 
+0386 67e0c60a store 1 ,mem_24g_abort_packet 
+0387 c000838b beq 1 ,p_g24_data_attemp_device1_abort 
+0388 6fe0c612 fetch 1 ,mem_24g_hop_packet 
+0389 6848ca4a fetcht 1 ,mem_24g_rxdata_temp_new 
+038a 202033ce branch g24_data_device1_next 
 
 p_g24_data_attemp_device1_abort:
-038a 6fe0c5de fetch 1 ,mem_24g_device1_bind_disable 
-038b 247a0000 nrtn blank 
-038c 7045de01 jam 1 ,mem_24g_device1_bind_disable 
-038d 6fe24a54 fetch 4 ,mem_24g_rxdata_temp_new + 10 
-038e 202035a3 branch g24_store_device1_addr 
+038b 6fe0c5de fetch 1 ,mem_24g_device1_bind_disable 
+038c 247a0000 nrtn blank 
+038d 7045de01 jam 1 ,mem_24g_device1_bind_disable 
+038e 6fe24a54 fetch 4 ,mem_24g_rxdata_temp_new + 10 
+038f 202035a3 branch g24_store_device1_addr 
 
 p_g24_data_device2:
-038f 20403393 call g24_binding_dvc2_living 
-0390 6848ca4a fetcht 1 ,mem_24g_rxdata_temp_new 
-0391 284ffe03 isolate1 bit_abort ,temp 
-0392 20208394 branch p_g24_data_attemp_device2_abort ,true 
-0393 202033d7 branch g24_data_device2 + 4 
+0390 20403393 call g24_binding_dvc2_living 
+0391 6848ca4a fetcht 1 ,mem_24g_rxdata_temp_new 
+0392 284ffe03 isolate1 bit_abort ,temp 
+0393 20208395 branch p_g24_data_attemp_device2_abort ,true 
+0394 202033d7 branch g24_data_device2 + 4 
 
 p_g24_data_attemp_device2_abort:
-0394 6fe24a54 fetch 4 ,mem_24g_rxdata_temp_new + 10 
-0395 202035a9 branch g24_store_device2_addr 
+0395 6fe24a54 fetch 4 ,mem_24g_rxdata_temp_new + 10 
+0396 202035a9 branch g24_store_device2_addr 
 
 p_dongle_g24_mouse:
-0396 58000001 setarg ms_report_id 
-0397 67e08913 store 1 ,mem_usb_mouse_data 
-0398 6fe3ca4d fetch 7 ,mem_24g_rxdata_temp_new + 3 
-0399 e7e38005 istore 7 ,contw 
-039a 6fe0ca4d fetch 1 ,mem_24g_rxdata_temp_new + 3 
-039b 245a48dd ncall dongle_g24_ms_enable_blank_data_forcibly ,blank 
-039c 6fe0ca4d fetch 1 ,mem_24g_rxdata_temp_new + 3 
-039d 205a48e1 call dongle_g24_ms_disable_blank_data_forcibly ,blank 
-039e 20204836 branch dongle_usb_tx_ms_data 
+0397 6fe0ca4c fetch 1 ,mem_24g_rxdata_temp_new + 2 
+0398 c28103bf bbit1 protocol_bit ,p_dongle_receive_ms_protocol_data 
+0399 c28183bf bbit1 audio_bit ,p_dongle_receive_ms_audio_data 
+039a c28203bf bbit1 http_bit ,p_dongle_receive_ms_http_data 
+039b c28283c0 bbit1 heart_bit ,p_dongle_receive_ms_heart_data 
+039c c28303c5 bbit1 battery_bit ,p_dongle_receive_ms_battery_data 
+
+p_dongle_g24_mouse_next:
+039d 6fe0c57d fetch 1 ,mem_24g_rxdata_length 
+039e 1fe67c09 sub pdata ,0x09 ,null 
+039f 202283af branch p_dongle_g24_mouse_data ,zero 
+03a0 204003af call p_dongle_g24_mouse_data 
+03a1 6fe0c57d fetch 1 ,mem_24g_rxdata_length 
+03a2 1fe0fff8 add pdata ,-8 ,pdata 
+03a3 67e0c57d store 1 ,mem_24g_rxdata_length 
+03a4 1fe27200 copy pdata ,loopcnt 
+03a5 d8a04a4c arg mem_24g_rxdata_temp_new + 2 ,contw 
+03a6 d8c04a54 arg mem_24g_rxdata_temp_new + 10 ,contr 
+03a7 20407cda call memcpy 
+03a8 6fe0ca4c fetch 1 ,mem_24g_rxdata_temp_new + 2 
+03a9 c28103bf bbit1 protocol_bit ,p_dongle_receive_ms_protocol_data 
+03aa c28183bf bbit1 audio_bit ,p_dongle_receive_ms_audio_data 
+03ab c28203bf bbit1 http_bit ,p_dongle_receive_ms_http_data 
+03ac c28283c0 bbit1 heart_bit ,p_dongle_receive_ms_heart_data 
+03ad c28303c5 bbit1 battery_bit ,p_dongle_receive_ms_battery_data 
+03ae 20600000 rtn 
+
+p_dongle_g24_mouse_data:
+03af 58000001 setarg ms_report_id 
+03b0 67e08913 store 1 ,mem_usb_mouse_data 
+03b1 6fe3ca4d fetch 7 ,mem_24g_rxdata_temp_new + 3 
+03b2 e7e38005 istore 7 ,contw 
+03b3 6fe0ca4d fetch 1 ,mem_24g_rxdata_temp_new + 3 
+03b4 245a48dd ncall dongle_g24_ms_enable_blank_data_forcibly ,blank 
+03b5 6fe0ca4d fetch 1 ,mem_24g_rxdata_temp_new + 3 
+03b6 205a48e1 call dongle_g24_ms_disable_blank_data_forcibly ,blank 
+03b7 6fe0ca4d fetch 1 ,mem_24g_rxdata_temp_new + 3 
+03b8 6848ca9f fetcht 1 ,mem_dg_ms_rf_key_last 
+03b9 67e0ca9f store 1 ,mem_dg_ms_rf_key_last 
+03ba 98467c00 isub temp ,null 
+03bb 2422c836 nbranch dongle_usb_tx_ms_data ,zero 
+03bc 6fe34a4e fetch 6 ,mem_24g_rxdata_temp_new + 4 
+03bd 207a0000 rtn blank 
+03be 20204836 branch dongle_usb_tx_ms_data 
+
+p_dongle_receive_ms_protocol_data:
+
+p_dongle_receive_ms_audio_data:
+
+p_dongle_receive_ms_http_data:
+03bf 20600000 rtn 
+
+p_dongle_receive_ms_heart_data:
+03c0 6fe0caa1 fetch 1 ,mem_dg_rep_ms_ack_data_flag 
+03c1 207a0000 rtn blank 
+03c2 704aa100 jam 0 ,mem_dg_rep_ms_ack_data_flag 
+03c3 70461108 jam protocol_ackpayload ,mem_24g_ackpayload_enable 
+03c4 20600000 rtn 
+
+p_dongle_receive_ms_battery_data:
+03c5 6fe0ca4d fetch 1 ,mem_24g_rxdata_temp_new + 3 
+03c6 6848caa0 fetcht 1 ,mem_dg_ms_battery_last 
+03c7 67e0caa0 store 1 ,mem_dg_ms_battery_last 
+03c8 98467c00 isub temp ,null 
+03c9 24628000 nrtn zero 
+03ca 20600000 rtn 
 
 p_dongle_g24_kb:
-039f 6fe0ca4d fetch 1 ,mem_24g_rxdata_temp_new + 3 
-03a0 c00003a4 beq 0 ,p_dongle_g24_kb_type0 
-03a1 c00103aa beq 2 ,p_dongle_g24_kb_type2 
-03a2 c00183ad beq 3 ,p_dongle_g24_kb_type3 
-03a3 202033be branch g24_rx_interrupt_clear 
+03cb 6fe0ca4d fetch 1 ,mem_24g_rxdata_temp_new + 3 
+03cc c00003d0 beq 0 ,p_dongle_g24_kb_type0 
+03cd c00103d6 beq 2 ,p_dongle_g24_kb_type2 
+03ce c00183d9 beq 3 ,p_dongle_g24_kb_type3 
+03cf 202033be branch g24_rx_interrupt_clear 
 
 p_dongle_g24_kb_type0:
-03a4 6fe0ca4f fetch 1 ,mem_24g_rxdata_temp_new + 5 
-03a5 67e0c611 store 1 ,mem_24g_ackpayload_enable 
-03a6 704a4f00 jam 0 ,mem_24g_rxdata_temp_new + 5 
-03a7 d8a00923 arg mem_usb_kb_data ,contw 
-03a8 d8c04a4e arg mem_24g_rxdata_temp_new + 4 ,contr 
-03a9 202048ef branch dongle_g24_kb_type0 + 5 
+03d0 6fe0ca4f fetch 1 ,mem_24g_rxdata_temp_new + 5 
+03d1 67e0c611 store 1 ,mem_24g_ackpayload_enable 
+03d2 704a4f00 jam 0 ,mem_24g_rxdata_temp_new + 5 
+03d3 d8a00923 arg mem_usb_kb_data ,contw 
+03d4 d8c04a4e arg mem_24g_rxdata_temp_new + 4 ,contr 
+03d5 202048ef branch dongle_g24_kb_type0 + 5 
 
 p_dongle_g24_kb_type2:
-03aa d8a00943 arg mem_usb_kb_system ,contw 
-03ab d8c04a4d arg mem_24g_rxdata_temp_new + 3 ,contr 
-03ac 2020491f branch dongle_g24_kb_type2 + 2 
+03d6 d8a00943 arg mem_usb_kb_system ,contw 
+03d7 d8c04a4d arg mem_24g_rxdata_temp_new + 3 ,contr 
+03d8 2020491f branch dongle_g24_kb_type2 + 2 
 
 p_dongle_g24_kb_type3:
-03ad d8a00933 arg mem_usb_kb_multikey ,contw 
-03ae d8c04a4d arg mem_24g_rxdata_temp_new + 3 ,contr 
-03af 20204907 branch dongle_g24_kb_type3 + 2 
+03d9 d8a00933 arg mem_usb_kb_multikey ,contw 
+03da d8c04a4d arg mem_24g_rxdata_temp_new + 3 ,contr 
+03db 20204907 branch dongle_g24_kb_type3 + 2 
               org 0x2000
 
 start:
Index: program/patch.prog
===================================================================
--- /1121s/branch/dongle/1m/usb_pc/xzr_project/usb_pc_ai_voice/program/patch.prog	(revision 4731)
+++ /1121s/branch/dongle/1m/usb_pc/xzr_project/usb_pc_ai_voice/program/patch.prog	(working copy)
@@ -1171,7 +1171,7 @@
 p_g24_receive_packet_parse_end:
 	fetch 1,mem_24g_rxdata_temp_new+2
 	beq DATATYPE_ATTEMP,p_g24_data_receive_attemp	//reconn packet
-	//and pdata,0x03,pdata
+	and pdata,0x03,pdata
 	beq DATATYPE_DEVICE1,p_g24_data_device1	//mouse
 	beq DATATYPE_DEVICE2,p_g24_data_device2	//keyboard
 p_g24_rx_interrupt_clear:
@@ -1224,6 +1224,33 @@
 //================================================mouse data parase==============================================//
 
 p_dongle_g24_mouse:
+	fetch 1,mem_24g_rxdata_temp_new+2
+	bbit1 PROTOCOL_BIT,p_dongle_receive_ms_protocol_data
+	bbit1 AUDIO_BIT,p_dongle_receive_ms_audio_data
+	bbit1 HTTP_BIT,p_dongle_receive_ms_http_data
+	bbit1 HEART_BIT,p_dongle_receive_ms_heart_data
+	bbit1 BATTERY_BIT,p_dongle_receive_ms_battery_data
+p_dongle_g24_mouse_next:
+	fetch 1,mem_24g_rxdata_length
+	sub pdata,0x09,null
+	branch p_dongle_g24_mouse_data,zero
+	call p_dongle_g24_mouse_data
+	fetch 1,mem_24g_rxdata_length
+	add pdata,-8,pdata
+	store 1,mem_24g_rxdata_length
+	copy pdata,loopcnt
+	arg mem_24g_rxdata_temp_new+2,contw
+	arg mem_24g_rxdata_temp_new+10,contr
+	call memcpy
+	fetch 1,mem_24g_rxdata_temp_new+2
+	bbit1 PROTOCOL_BIT,p_dongle_receive_ms_protocol_data
+	bbit1 AUDIO_BIT,p_dongle_receive_ms_audio_data
+	bbit1 HTTP_BIT,p_dongle_receive_ms_http_data
+	bbit1 HEART_BIT,p_dongle_receive_ms_heart_data
+	bbit1 BATTERY_BIT,p_dongle_receive_ms_battery_data
+	rtn
+
+p_dongle_g24_mouse_data:
 	setarg MS_REPORT_ID
 	store 1,mem_usb_mouse_data	//report id
 	fetch 7,mem_24g_rxdata_temp_new+3	//key
@@ -1232,8 +1259,39 @@
 	ncall dongle_g24_ms_enable_blank_data_forcibly,blank//get kb data
 	fetch 1,mem_24g_rxdata_temp_new+3	//key
 	call dongle_g24_ms_disable_blank_data_forcibly,blank
+
+	fetch 1,mem_24g_rxdata_temp_new+3	//key
+	fetcht 1,mem_dg_ms_rf_key_last
+	store 1,mem_dg_ms_rf_key_last
+	isub temp,null
+	nbranch dongle_usb_tx_ms_data,zero
+	fetch 6,mem_24g_rxdata_temp_new+4
+	rtn blank
 	branch dongle_usb_tx_ms_data
 
+p_dongle_receive_ms_protocol_data:
+p_dongle_receive_ms_audio_data:
+p_dongle_receive_ms_http_data:
+	rtn
+
+//1byte type
+p_dongle_receive_ms_heart_data:
+	fetch 1,mem_dg_rep_ms_ack_data_flag
+	rtn blank
+	jam 0,mem_dg_rep_ms_ack_data_flag
+	jam PROTOCOL_ACKPAYLOAD,mem_24g_ackpayload_enable
+	rtn
+
+//1byte type + 1byte data
+p_dongle_receive_ms_battery_data:
+	fetch 1,mem_24g_rxdata_temp_new+3	//key
+	fetcht 1,mem_dg_ms_battery_last
+	store 1,mem_dg_ms_battery_last
+	isub temp,null
+	nrtn zero
+	//battery data usb tx
+	rtn
+
 //===============================================keyboard data parase=============================================//
 p_dongle_g24_kb:
 	fetch 1,mem_24g_rxdata_temp_new+3
