Index: format/app_dongle.format
===================================================================
--- /1121s/branch/dongle/1m/usb_pc/xzr_project/usb_pc_ai_voice/format/app_dongle.format	(revision 4742)
+++ /1121s/branch/dongle/1m/usb_pc/xzr_project/usb_pc_ai_voice/format/app_dongle.format	(working copy)
@@ -61,14 +61,25 @@
 //24g addr
 4 mem_24g_pair_addr_new
 
+//diff pack type set
 1 mem_dg_ms_rf_key_last
-1 mem_dg_ms_battery_last
+0 mem_dg_ms_battery_start
+1 mem_dg_ms_battery_event
+1 mem_dg_ms_battery_opcode
+1 mem_dg_ms_battery_len
+1 mem_dg_ms_battery_data
+1 mem_dg_ms_battery_data_in_type
+0 mem_dg_ms_battery_end
+2 mem_dg_version
 1 mem_dg_rep_ms_ack_data_flag
 65 mem_dg_rep_ms_ack_data
-
+64 mem_dg_ms_audio_data_sta
+65 mem_dg_ms_audio_data
+64 mem_dg_ms_protocol_data_sta
+65 mem_dg_ms_protocol_data
+8 mem_usb_ep3_data
 )
 
-
 (
 //data type
 2 PROTOCOL_BIT
@@ -78,6 +89,40 @@
 6 BATTERY_BIT
 )
 
+(
+//cmd opcode
+0x01 HCI_CMD_GET_DEVICE_INFO
+0x02 HCI_CMD_SET_DPI
+0x03 HCI_CMD_GET_DPI
+0x04 HCI_CMD_SET_SN
+0x05 HCI_CMD_GET_SN
+0x06 HCI_CMD_GET_BATTERY
+0x07 HCI_CMD_GET_CONNECT_STATE
+0x08 HCI_CMD_SET_B4_FUCTION
+0x09 HCI_CMD_SET_B5_FUCTION
+
+//rep opcode
+0x01 HCI_EVENT_DEVICE_INFO_REP
+0x02 HCI_EVENT_DPI_RSP
+0x03 HCI_EVENT_SN_RSP
+0x04 HCI_EVENT_KEY_REP
+0x05 HCI_EVENT_CONNECT_REP
+0x06 HCI_EVENT_BATTERY_REP
+0x07 HCI_EVENT_COMMAND_REP
+0x08 HCI_EVENT_OPEN_APP_REP
+0xff HCI_EVENT_ERROR_REP //cmd or opcode or len error
+
+//hci type
+0x01 HCI_CMD_HEADER
+0x02 HCI_EVT_HEADER
+0x010c DEVICE_INFO_REP
+
+//report id
+0xA0 REPORT_ID_AUDIO_DATA_IN
+0xA1 REPORT_ID_DATA_IN
+0xA2 REPORT_ID_DATA_OUT
+)
+
 //otp address offset
 (
 0x5A DONGLE_KB_BIND_SUCCESS
Index: format/usb.format
===================================================================
--- /1121s/branch/dongle/1m/usb_pc/xzr_project/usb_pc_ai_voice/format/usb.format	(revision 4731)
+++ /1121s/branch/dongle/1m/usb_pc/xzr_project/usb_pc_ai_voice/format/usb.format	(working copy)
@@ -193,6 +193,9 @@
 0x01 MAC_BOOT_MODE
 0x02 R_KEY
 0x03 LR_KEY
+
+0x30 USB_EP3_AUDIO
+0x31 USB_EP3_PROTOCOL
 )
 
 
Index: output/eeprom.dat
===================================================================
--- /1121s/branch/dongle/1m/usb_pc/xzr_project/usb_pc_ai_voice/output/eeprom.dat	(revision 4742)
+++ /1121s/branch/dongle/1m/usb_pc/xzr_project/usb_pc_ai_voice/output/eeprom.dat	(working copy)
@@ -2,8 +2,8 @@
 02
 aa
 55
-72
-0f
+7a
+10
 c2
 84
 00
@@ -2810,8 +2810,8 @@
 e4
 58
 00
-03
-cb
+04
+0d
 67
 e1
 45
@@ -3691,19 +3691,19 @@
 c2
 81
 83
-bf
+de
 c2
 82
 03
-bf
+dd
 c2
 82
 83
-c0
+f6
 c2
 83
 03
-c5
+fb
 6f
 e0
 c5
@@ -3759,19 +3759,19 @@
 c2
 81
 83
-bf
+de
 c2
 82
 03
-bf
+dd
 c2
 82
 83
-c0
+f6
 c2
 83
 03
-c5
+fb
 20
 60
 00
@@ -3840,21 +3840,237 @@
 20
 48
 36
+6f
+e0
+ca
+4d
+c1
+81
+00
+00
+6f
+20
+c5
+7d
+1f
+20
+f3
+ff
+da
+40
+4a
+4d
+da
+20
+4b
+6a
+20
+40
+7d
+64
+c1
+02
+80
+00
+6f
+20
+c5
+7d
+1f
+20
+f3
+ff
+d8
+c0
+4a
+4d
+d8
+a0
+4b
+6a
+20
+40
+7c
+da
+70
+4b
+aa
+40
+70
+4b
+ab
+a1
+6f
+20
+c5
+7d
+1f
+20
+f3
+ff
+d8
+c0
+4b
+6a
+d8
+a0
+4b
+ac
+20
+40
+7c
+da
+6f
+e1
+4b
+ad
+1f
+e6
+7d
+0c
+20
+42
+83
+d8
+70
+4b
+eb
+31
+20
+20
+04
+04
+68
+49
+4b
+b7
+6f
+e1
+4a
+a5
+67
+e1
+4b
+b7
+60
+49
+00
+05
 20
 60
 00
 00
+20
+60
+00
+00
+6f
+20
+c5
+7d
+1f
+20
+f3
+ff
+da
+40
+4a
+4d
+da
+20
+4a
+e9
+20
+40
+7d
+64
+c1
+02
+80
+00
+6f
+20
+c5
+7d
+1f
+20
+f3
+ff
+d8
+c0
+4a
+4d
+d8
+a0
+4a
+e9
+20
+40
+7c
+da
+70
+4b
+29
+40
+70
+4b
+2a
+a1
+6f
+e0
+c5
+7d
+1f
+e0
+ff
+ff
+67
+e0
+cb
+2b
+6f
+20
+c5
+7d
+1f
+20
+f3
+ff
+d8
+c0
+4a
+e9
+d8
+a0
+4b
+2c
+20
+40
+7c
+da
+20
+40
+03
+75
+70
+4b
+eb
+30
+20
+20
+04
+04
 6f
 e0
 ca
-a1
+a7
 20
 7a
 00
 00
 70
 4a
-a1
+a7
 00
 70
 46
@@ -3865,15 +4081,11 @@
 00
 00
 6f
-e0
+e2
 ca
 4d
 68
-48
-ca
-a0
-67
-e0
+4a
 ca
 a0
 98
@@ -3884,26 +4096,78 @@
 62
 80
 00
-20
-60
-00
-00
-6f
-e0
+67
+e2
 ca
-4d
-c0
-00
-03
-d0
-c0
-01
+a0
+67
+e2
+cb
+ac
+70
+4b
+aa
+40
+70
+4b
+ab
+a1
+20
+20
 03
 d6
+6f
+e0
+89
+0e
+20
+7a
+00
+00
+da
+20
+4b
+eb
+20
+40
+7d
+a5
+24
+7a
+00
+00
+6f
+e0
+89
+0c
+67
+e0
+86
+6f
+da
+20
+4b
+eb
+20
+20
+7d
+8b
+6f
+e0
+ca
+4d
+c0
+00
+04
+12
 c0
 01
-83
-d9
+04
+18
+c0
+01
+84
+1b
 20
 20
 33
@@ -3956,8 +4220,8 @@
 20
 49
 07
-64
-8d
+27
+5a
 aa
 55
 40
@@ -4163,6 +4427,14 @@
 10
 aa
 55
+02
+00
+a5
+4a
+01
+00
+aa
+55
 55
 00
 55
@@ -4620,282 +4892,10 @@
 aa
 aa
 55
-4e
-8e
-dd
-c5
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
+3f
+90
+c9
+62
 ff
 ff
 ff
@@ -8188,5 +8188,5 @@
 ff
 ff
 ff
-67
-6b
+c9
+48
Index: output/memmap.format
===================================================================
--- /1121s/branch/dongle/1m/usb_pc/xzr_project/usb_pc_ai_voice/output/memmap.format	(revision 4742)
+++ /1121s/branch/dongle/1m/usb_pc/xzr_project/usb_pc_ai_voice/output/memmap.format	(working copy)
@@ -1505,9 +1505,21 @@
 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
+0x4aa0 mem_dg_ms_battery_start
+0x4aa0 mem_dg_ms_battery_event
+0x4aa1 mem_dg_ms_battery_opcode
+0x4aa2 mem_dg_ms_battery_len
+0x4aa3 mem_dg_ms_battery_data
+0x4aa4 mem_dg_ms_battery_data_in_type
+0x4aa5 mem_dg_ms_battery_end
+0x4aa5 mem_dg_version
+0x4aa7 mem_dg_rep_ms_ack_data_flag
+0x4aa8 mem_dg_rep_ms_ack_data
+0x4ae9 mem_dg_ms_audio_data_sta
+0x4b29 mem_dg_ms_audio_data
+0x4b6a mem_dg_ms_protocol_data_sta
+0x4baa mem_dg_ms_protocol_data
+0x4beb mem_usb_ep3_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 4742)
+++ /1121s/branch/dongle/1m/usb_pc/xzr_project/usb_pc_ai_voice/output/otp.dat	(working copy)
@@ -11,8 +11,8 @@
 00
 aa
 55
-72
-0f
+7a
+10
 c2
 84
 00
@@ -2819,8 +2819,8 @@
 e4
 58
 00
-03
-cb
+04
+0d
 67
 e1
 45
@@ -3700,19 +3700,19 @@
 c2
 81
 83
-bf
+de
 c2
 82
 03
-bf
+dd
 c2
 82
 83
-c0
+f6
 c2
 83
 03
-c5
+fb
 6f
 e0
 c5
@@ -3768,19 +3768,19 @@
 c2
 81
 83
-bf
+de
 c2
 82
 03
-bf
+dd
 c2
 82
 83
-c0
+f6
 c2
 83
 03
-c5
+fb
 20
 60
 00
@@ -3849,21 +3849,237 @@
 20
 48
 36
+6f
+e0
+ca
+4d
+c1
+81
+00
+00
+6f
+20
+c5
+7d
+1f
+20
+f3
+ff
+da
+40
+4a
+4d
+da
+20
+4b
+6a
+20
+40
+7d
+64
+c1
+02
+80
+00
+6f
+20
+c5
+7d
+1f
+20
+f3
+ff
+d8
+c0
+4a
+4d
+d8
+a0
+4b
+6a
+20
+40
+7c
+da
+70
+4b
+aa
+40
+70
+4b
+ab
+a1
+6f
+20
+c5
+7d
+1f
+20
+f3
+ff
+d8
+c0
+4b
+6a
+d8
+a0
+4b
+ac
+20
+40
+7c
+da
+6f
+e1
+4b
+ad
+1f
+e6
+7d
+0c
+20
+42
+83
+d8
+70
+4b
+eb
+31
+20
+20
+04
+04
+68
+49
+4b
+b7
+6f
+e1
+4a
+a5
+67
+e1
+4b
+b7
+60
+49
+00
+05
+20
+60
+00
+00
 20
 60
 00
 00
 6f
+20
+c5
+7d
+1f
+20
+f3
+ff
+da
+40
+4a
+4d
+da
+20
+4a
+e9
+20
+40
+7d
+64
+c1
+02
+80
+00
+6f
+20
+c5
+7d
+1f
+20
+f3
+ff
+d8
+c0
+4a
+4d
+d8
+a0
+4a
+e9
+20
+40
+7c
+da
+70
+4b
+29
+40
+70
+4b
+2a
+a1
+6f
+e0
+c5
+7d
+1f
+e0
+ff
+ff
+67
+e0
+cb
+2b
+6f
+20
+c5
+7d
+1f
+20
+f3
+ff
+d8
+c0
+4a
+e9
+d8
+a0
+4b
+2c
+20
+40
+7c
+da
+20
+40
+03
+75
+70
+4b
+eb
+30
+20
+20
+04
+04
+6f
 e0
 ca
-a1
+a7
 20
 7a
 00
 00
 70
 4a
-a1
+a7
 00
 70
 46
@@ -3874,15 +4090,11 @@
 00
 00
 6f
-e0
+e2
 ca
 4d
 68
-48
-ca
-a0
-67
-e0
+4a
 ca
 a0
 98
@@ -3893,26 +4105,78 @@
 62
 80
 00
+67
+e2
+ca
+a0
+67
+e2
+cb
+ac
+70
+4b
+aa
+40
+70
+4b
+ab
+a1
+20
+20
+03
+d6
+6f
+e0
+89
+0e
+20
+7a
+00
+00
+da
 20
-60
+4b
+eb
+20
+40
+7d
+a5
+24
+7a
 00
 00
 6f
 e0
+89
+0c
+67
+e0
+86
+6f
+da
+20
+4b
+eb
+20
+20
+7d
+8b
+6f
+e0
 ca
 4d
 c0
 00
-03
-d0
+04
+12
 c0
 01
-03
-d6
+04
+18
 c0
 01
-83
-d9
+84
+1b
 20
 20
 33
@@ -3965,8 +4229,8 @@
 20
 49
 07
-64
-8d
+27
+5a
 aa
 55
 40
@@ -4172,6 +4436,14 @@
 10
 aa
 55
+02
+00
+a5
+4a
+01
+00
+aa
+55
 55
 00
 55
@@ -4629,8 +4901,8 @@
 aa
 aa
 55
-4e
-8e
-dd
-c5
+3f
+90
+c9
+62
 f0
Index: output/program.lis
===================================================================
--- /1121s/branch/dongle/1m/usb_pc/xzr_project/usb_pc_ai_voice/output/program.lis	(revision 4742)
+++ /1121s/branch/dongle/1m/usb_pc/xzr_project/usb_pc_ai_voice/output/program.lis	(working copy)
@@ -897,7 +897,7 @@
 02ba 67e145e0 store 2 ,mem_cb_24g_receive_process 
 02bb 58000397 setarg p_dongle_g24_mouse 
 02bc 67e145e4 store 2 ,mem_cb_24g_data_device1 
-02bd 580003cb setarg p_dongle_g24_kb 
+02bd 5800040d 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 
@@ -1193,10 +1193,10 @@
 p_dongle_g24_mouse:
 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 
+0399 c28183de bbit1 audio_bit ,p_dongle_receive_ms_audio_data 
+039a c28203dd bbit1 http_bit ,p_dongle_receive_ms_http_data 
+039b c28283f6 bbit1 heart_bit ,p_dongle_receive_ms_heart_data 
+039c c28303fb bbit1 battery_bit ,p_dongle_receive_ms_battery_data 
 
 p_dongle_g24_mouse_next:
 039d 6fe0c57d fetch 1 ,mem_24g_rxdata_length 
@@ -1212,10 +1212,10 @@
 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 
+03aa c28183de bbit1 audio_bit ,p_dongle_receive_ms_audio_data 
+03ab c28203dd bbit1 http_bit ,p_dongle_receive_ms_http_data 
+03ac c28283f6 bbit1 heart_bit ,p_dongle_receive_ms_heart_data 
+03ad c28303fb bbit1 battery_bit ,p_dongle_receive_ms_battery_data 
 03ae 20600000 rtn 
 
 p_dongle_g24_mouse_data:
@@ -1237,51 +1237,123 @@
 03be 20204836 branch dongle_usb_tx_ms_data 
 
 p_dongle_receive_ms_protocol_data:
-
-p_dongle_receive_ms_audio_data:
+03bf 6fe0ca4d fetch 1 ,mem_24g_rxdata_temp_new + 3 
+03c0 c1810000 rtnne hci_evt_header 
+03c1 6f20c57d fetchr loopcnt ,1 ,mem_24g_rxdata_length 
+03c2 1f20f3ff increase -1 ,loopcnt 
+03c3 da404a4d arg mem_24g_rxdata_temp_new + 3 ,regb 
+03c4 da204b6a arg mem_dg_ms_protocol_data_sta ,rega 
+03c5 20407d64 call compare_loop 
+03c6 c1028000 rtneq zero 
+03c7 6f20c57d fetchr loopcnt ,1 ,mem_24g_rxdata_length 
+03c8 1f20f3ff increase -1 ,loopcnt 
+03c9 d8c04a4d arg mem_24g_rxdata_temp_new + 3 ,contr 
+03ca d8a04b6a arg mem_dg_ms_protocol_data_sta ,contw 
+03cb 20407cda call memcpy 
+03cc 704baa40 jam 0x40 ,mem_dg_ms_protocol_data 
+03cd 704baba1 jam report_id_data_in ,mem_dg_ms_protocol_data + 1 
+03ce 6f20c57d fetchr loopcnt ,1 ,mem_24g_rxdata_length 
+03cf 1f20f3ff increase -1 ,loopcnt 
+03d0 d8c04b6a arg mem_dg_ms_protocol_data_sta ,contr 
+03d1 d8a04bac arg mem_dg_ms_protocol_data + 2 ,contw 
+03d2 20407cda call memcpy 
+03d3 6fe14bad fetch 2 ,mem_dg_ms_protocol_data + 3 
+03d4 1fe67d0c sub pdata ,device_info_rep ,null 
+03d5 204283d8 call p_dongle_receive_ms_device_info_data ,zero 
+
+p_dongle_usb_tx_protocol_data_enable:
+03d6 704beb31 jam usb_ep3_protocol ,mem_usb_ep3_data 
+03d7 20200404 branch p_dongle_usb_tx_enable_ep3 
+
+p_dongle_receive_ms_device_info_data:
+03d8 68494bb7 fetcht 2 ,mem_dg_ms_protocol_data + 13 
+03d9 6fe14aa5 fetch 2 ,mem_dg_version 
+03da 67e14bb7 store 2 ,mem_dg_ms_protocol_data + 13 
+03db 60490005 storet 2 ,contw 
+03dc 20600000 rtn 
 
 p_dongle_receive_ms_http_data:
-03bf 20600000 rtn 
+03dd 20600000 rtn 
+
+p_dongle_receive_ms_audio_data:
+03de 6f20c57d fetchr loopcnt ,1 ,mem_24g_rxdata_length 
+03df 1f20f3ff increase -1 ,loopcnt 
+03e0 da404a4d arg mem_24g_rxdata_temp_new + 3 ,regb 
+03e1 da204ae9 arg mem_dg_ms_audio_data_sta ,rega 
+03e2 20407d64 call compare_loop 
+03e3 c1028000 rtneq zero 
+03e4 6f20c57d fetchr loopcnt ,1 ,mem_24g_rxdata_length 
+03e5 1f20f3ff increase -1 ,loopcnt 
+03e6 d8c04a4d arg mem_24g_rxdata_temp_new + 3 ,contr 
+03e7 d8a04ae9 arg mem_dg_ms_audio_data_sta ,contw 
+03e8 20407cda call memcpy 
+03e9 704b2940 jam 0x40 ,mem_dg_ms_audio_data 
+03ea 704b2aa1 jam report_id_data_in ,mem_dg_ms_audio_data + 1 
+03eb 6fe0c57d fetch 1 ,mem_24g_rxdata_length 
+03ec 1fe0ffff increase -1 ,pdata 
+03ed 67e0cb2b store 1 ,mem_dg_ms_audio_data + 2 
+03ee 6f20c57d fetchr loopcnt ,1 ,mem_24g_rxdata_length 
+03ef 1f20f3ff increase -1 ,loopcnt 
+03f0 d8c04ae9 arg mem_dg_ms_audio_data_sta ,contr 
+03f1 d8a04b2c arg mem_dg_ms_audio_data + 3 ,contw 
+03f2 20407cda call memcpy 
+03f3 20400375 call p_g24_rx_interrupt_clear 
+03f4 704beb30 jam usb_ep3_audio ,mem_usb_ep3_data 
+03f5 20200404 branch p_dongle_usb_tx_enable_ep3 
 
 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 
+03f6 6fe0caa7 fetch 1 ,mem_dg_rep_ms_ack_data_flag 
+03f7 207a0000 rtn blank 
+03f8 704aa700 jam 0 ,mem_dg_rep_ms_ack_data_flag 
+03f9 70461108 jam protocol_ackpayload ,mem_24g_ackpayload_enable 
+03fa 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 
+03fb 6fe2ca4d fetch 5 ,mem_24g_rxdata_temp_new + 3 
+03fc 684acaa0 fetcht 5 ,mem_dg_ms_battery_start 
+03fd 98467c00 isub temp ,null 
+03fe 24628000 nrtn zero 
+03ff 67e2caa0 store 5 ,mem_dg_ms_battery_start 
+0400 67e2cbac store 5 ,mem_dg_ms_protocol_data + 2 
+0401 704baa40 jam 0x40 ,mem_dg_ms_protocol_data 
+0402 704baba1 jam report_id_data_in ,mem_dg_ms_protocol_data + 1 
+0403 202003d6 branch p_dongle_usb_tx_protocol_data_enable 
+
+p_dongle_usb_tx_enable_ep3:
+0404 6fe0890e fetch 1 ,mem_usb_device_enumeration_endflag 
+0405 207a0000 rtn blank 
+0406 da204beb arg mem_usb_ep3_data ,rega 
+0407 20407da5 call fifo_is_full 
+0408 247a0000 nrtn blank 
+0409 6fe0890c fetch 1 ,mem_usb_ep2_data 
+040a 67e0866f store 1 ,mem_fifo_temp 
+040b da204beb arg mem_usb_ep3_data ,rega 
+040c 20207d8b branch fifo_in 
 
 p_dongle_g24_kb:
-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 
+040d 6fe0ca4d fetch 1 ,mem_24g_rxdata_temp_new + 3 
+040e c0000412 beq 0 ,p_dongle_g24_kb_type0 
+040f c0010418 beq 2 ,p_dongle_g24_kb_type2 
+0410 c001841b beq 3 ,p_dongle_g24_kb_type3 
+0411 202033be branch g24_rx_interrupt_clear 
 
 p_dongle_g24_kb_type0:
-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 
+0412 6fe0ca4f fetch 1 ,mem_24g_rxdata_temp_new + 5 
+0413 67e0c611 store 1 ,mem_24g_ackpayload_enable 
+0414 704a4f00 jam 0 ,mem_24g_rxdata_temp_new + 5 
+0415 d8a00923 arg mem_usb_kb_data ,contw 
+0416 d8c04a4e arg mem_24g_rxdata_temp_new + 4 ,contr 
+0417 202048ef branch dongle_g24_kb_type0 + 5 
 
 p_dongle_g24_kb_type2:
-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 
+0418 d8a00943 arg mem_usb_kb_system ,contw 
+0419 d8c04a4d arg mem_24g_rxdata_temp_new + 3 ,contr 
+041a 2020491f branch dongle_g24_kb_type2 + 2 
 
 p_dongle_g24_kb_type3:
-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 
+041b d8a00933 arg mem_usb_kb_multikey ,contw 
+041c d8c04a4d arg mem_24g_rxdata_temp_new + 3 ,contr 
+041d 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 4742)
+++ /1121s/branch/dongle/1m/usb_pc/xzr_project/usb_pc_ai_voice/program/patch.prog	(working copy)
@@ -1221,7 +1221,7 @@
 p_g24_data_attemp_device2_abort:
 	fetch 4,mem_24g_rxdata_temp_new+10
 	branch g24_store_device2_addr	
-//================================================mouse data parase==============================================//
+//================================================dg recv ms data parase==============================================//
 
 p_dongle_g24_mouse:
 	fetch 1,mem_24g_rxdata_temp_new+2
@@ -1269,12 +1269,82 @@
 	rtn blank
 	branch dongle_usb_tx_ms_data
 
+/**************************************************************************************
+* recv data:1byte event + 1byte opcode + 1byte len + nbyte payload
+* usb in pack:1byte len + 1byte report id +recv data
+**************************************************************************************/
 p_dongle_receive_ms_protocol_data:
-p_dongle_receive_ms_audio_data:
+	fetch 1,mem_24g_rxdata_temp_new+3
+	rtnne HCI_EVT_HEADER
+	fetchr loopcnt,1,mem_24g_rxdata_length
+	increase -1,loopcnt
+	arg mem_24g_rxdata_temp_new+3,regb
+	arg mem_dg_ms_protocol_data_sta,rega
+	call compare_loop
+	rtneq zero
+	fetchr loopcnt,1,mem_24g_rxdata_length
+	increase -1,loopcnt
+	arg mem_24g_rxdata_temp_new+3,contr
+	arg mem_dg_ms_protocol_data_sta,contw
+	call memcpy
+	jam 0x40,mem_dg_ms_protocol_data
+	jam REPORT_ID_DATA_IN,mem_dg_ms_protocol_data+1
+	fetchr loopcnt,1,mem_24g_rxdata_length
+	increase -1,loopcnt
+	arg mem_dg_ms_protocol_data_sta,contr
+	arg mem_dg_ms_protocol_data+2,contw
+	call memcpy
+	fetch 2,mem_dg_ms_protocol_data+3
+	sub pdata,DEVICE_INFO_REP,null
+	call p_dongle_receive_ms_device_info_data,zero
+p_dongle_usb_tx_protocol_data_enable:
+	jam USB_EP3_PROTOCOL,mem_usb_ep3_data
+	branch p_dongle_usb_tx_enable_ep3
+	
+/**************************************************************************************
+* recv data:1byte event + 1byte opcode + 1byte len + 6byte addr + 2byte ms version + 2byte code
+* usb in pack:1byte len + 1byte report id +recv data + 2byte dg version
+**************************************************************************************/
+p_dongle_receive_ms_device_info_data:
+	fetcht 2,mem_dg_ms_protocol_data+13	//2byte code data
+	fetch 2,mem_dg_version
+	store 2,mem_dg_ms_protocol_data+13
+	storet 2,contw
+	rtn
+	
 p_dongle_receive_ms_http_data:
 	rtn
 
-//1byte type
+/**************************************************************************************
+* recv data:1byte type + 60byte data
+* usb in pack:1byte len + 1byte report id +1 byte len + 60 byte audio data
+**************************************************************************************/
+p_dongle_receive_ms_audio_data:
+	fetchr loopcnt,1,mem_24g_rxdata_length
+	increase -1,loopcnt
+	arg mem_24g_rxdata_temp_new+3,regb
+	arg mem_dg_ms_audio_data_sta,rega
+	call compare_loop
+	rtneq zero
+	fetchr loopcnt,1,mem_24g_rxdata_length
+	increase -1,loopcnt
+	arg mem_24g_rxdata_temp_new+3,contr
+	arg mem_dg_ms_audio_data_sta,contw
+	call memcpy
+	jam 0x40,mem_dg_ms_audio_data
+	jam REPORT_ID_DATA_IN,mem_dg_ms_audio_data+1
+	fetch 1,mem_24g_rxdata_length
+	increase -1,pdata
+	store 1,mem_dg_ms_audio_data+2
+	fetchr loopcnt,1,mem_24g_rxdata_length
+	increase -1,loopcnt
+	arg mem_dg_ms_audio_data_sta,contr
+	arg mem_dg_ms_audio_data+3,contw
+	call memcpy
+	call p_g24_rx_interrupt_clear
+	jam USB_EP3_AUDIO,mem_usb_ep3_data
+	branch p_dongle_usb_tx_enable_ep3
+
 p_dongle_receive_ms_heart_data:
 	fetch 1,mem_dg_rep_ms_ack_data_flag
 	rtn blank
@@ -1282,16 +1352,32 @@
 	jam PROTOCOL_ACKPAYLOAD,mem_24g_ackpayload_enable
 	rtn
 
-//1byte type + 1byte data
+/**************************************************************************************
+* recv data:1byte event + 1byte opcode + 1byte len +1byte data +1byte data in type
+* usb in pack:1byte len + 1byte report id + recv 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
+	fetch 5,mem_24g_rxdata_temp_new+3
+	fetcht 5,mem_dg_ms_battery_start
 	isub temp,null
 	nrtn zero
-	//battery data usb tx
-	rtn
-
+	store 5,mem_dg_ms_battery_start
+	store 5,mem_dg_ms_protocol_data+2
+	jam 0x40,mem_dg_ms_protocol_data
+	jam REPORT_ID_DATA_IN,mem_dg_ms_protocol_data+1
+	branch p_dongle_usb_tx_protocol_data_enable
+
+//pack data type header enter fifo
+p_dongle_usb_tx_enable_ep3:
+	fetch 1,mem_usb_device_enumeration_endflag
+	rtn blank
+	arg mem_usb_ep3_data,rega
+	call fifo_is_full
+	nrtn blank
+	fetch 1,mem_usb_ep2_data
+	store 1,mem_fifo_temp
+	arg mem_usb_ep3_data,rega
+	branch fifo_in
 //===============================================keyboard data parase=============================================//
 p_dongle_g24_kb:
 	fetch 1,mem_24g_rxdata_temp_new+3
Index: sched/dongle.dat
===================================================================
--- /1121s/branch/dongle/1m/usb_pc/xzr_project/usb_pc_ai_voice/sched/dongle.dat	(revision 4731)
+++ /1121s/branch/dongle/1m/usb_pc/xzr_project/usb_pc_ai_voice/sched/dongle.dat	(working copy)
@@ -68,6 +68,8 @@
 
 mem_24g_pair_addr_new:25 20 15 10
 
+mem_dg_version:01 00
+
 ################USB CONFIG##################
 #===================USB Configuration Descriptor=====================#
 mem_confdesc_all:
