Index: format/app_usb.format
===================================================================
--- /branch/mouse_project/TestTools/1021s_quick_connector_ai_mingjian/format/app_usb.format	(revision 7372)
+++ /branch/mouse_project/TestTools/1021s_quick_connector_ai_mingjian/format/app_usb.format	(working copy)
@@ -111,6 +111,11 @@
 )
 
 (
+7 DATATYPE_AUDIO
+4 DATATYPE_AI_KEY
+)
+
+(
 0x8ffa	HID_KBDATA_ADDR
 0x903a	HID_MSDATA_ADDR
 0x90fe	HID_CONFDATA_ADDR
@@ -236,8 +241,13 @@
 0x32 PC_EVT_MS_DATA_7B_UPLOAD
 0x33 PC_EVT_DEVICE_NAME_UPLOAD
 
+0x34 PC_EVT_AI_KEY_UPLOAD
+0x35 PC_EVT_AUDIO_UPLOAD
+
+0x04 PC_EVT_MS_DATA_LEN_4B
 0x07 PC_EVT_MS_DATA_LEN_7B
 0x08 PC_EVT_MS_DATA_LEN_8B
+0x20 PC_EVT_MS_DATA_LEN_20B
 
 0X01 PC_EVT_BLE_BATTERY_DATA_LEN_1B
 0x02 PC_EVT_KB_SYSCTRL_DATA_LEN_2B
Index: output/eeprom.dat
===================================================================
--- /branch/mouse_project/TestTools/1021s_quick_connector_ai_mingjian/output/eeprom.dat	(revision 7372)
+++ /branch/mouse_project/TestTools/1021s_quick_connector_ai_mingjian/output/eeprom.dat	(working copy)
@@ -2,7 +2,7 @@
 02
 aa
 55
-86
+e2
 1c
 c2
 84
@@ -1059,7 +1059,7 @@
 c0
 00
 06
-34
+58
 20
 60
 00
@@ -3903,7 +3903,7 @@
 20
 20
 06
-5a
+7e
 70
 11
 9e
@@ -3939,7 +3939,7 @@
 20
 20
 06
-75
+99
 60
 08
 c7
@@ -4039,7 +4039,7 @@
 20
 20
 06
-5a
+7e
 68
 02
 47
@@ -4071,11 +4071,11 @@
 20
 40
 06
-5b
+7f
 20
 20
 06
-9f
+b6
 68
 02
 47
@@ -4187,7 +4187,7 @@
 20
 20
 06
-9f
+b6
 68
 00
 c7
@@ -4215,7 +4215,7 @@
 20
 40
 06
-9f
+b6
 70
 47
 65
@@ -4359,7 +4359,7 @@
 20
 40
 06
-9f
+b6
 70
 47
 65
@@ -4383,7 +4383,7 @@
 20
 40
 06
-9f
+b6
 70
 47
 65
@@ -4407,7 +4407,7 @@
 20
 40
 06
-75
+99
 70
 47
 25
@@ -4555,7 +4555,7 @@
 20
 40
 07
-03
+1a
 18
 00
 2a
@@ -4583,11 +4583,11 @@
 20
 40
 06
-c2
+d9
 20
 57
-86
-fe
+87
+15
 20
 60
 00
@@ -4667,7 +4667,7 @@
 24
 21
 06
-9f
+b6
 1f
 e0
 fe
@@ -4699,7 +4699,7 @@
 20
 40
 06
-68
+8c
 68
 00
 c7
@@ -4903,7 +4903,7 @@
 20
 40
 06
-5a
+7e
 20
 20
 04
@@ -5267,15 +5267,15 @@
 20
 40
 06
-5a
+7e
 20
 40
 06
-9f
+b6
 20
 20
 05
-a9
+ab
 68
 00
 c7
@@ -5351,7 +5351,7 @@
 20
 20
 06
-9f
+b6
 70
 47
 a3
@@ -5359,7 +5359,7 @@
 20
 20
 06
-9f
+b6
 1c
 42
 7e
@@ -5383,7 +5383,7 @@
 20
 40
 06
-4e
+72
 60
 08
 c7
@@ -5399,7 +5399,7 @@
 20
 20
 06
-9f
+b6
 20
 40
 05
@@ -5531,11 +5531,11 @@
 20
 40
 05
-a9
+ab
 20
 40
 06
-b9
+d0
 24
 77
 80
@@ -5555,7 +5555,7 @@
 20
 40
 06
-68
+8c
 20
 40
 05
@@ -5563,15 +5563,15 @@
 20
 40
 06
-75
+99
 20
 40
 07
-03
+1a
 20
 20
-06
-fe
+07
+15
 70
 47
 20
@@ -5735,7 +5735,7 @@
 24
 37
 85
-a9
+ab
 20
 20
 05
@@ -5743,11 +5743,11 @@
 20
 40
 05
-ac
+ae
 24
 34
 05
-a9
+ab
 68
 00
 c7
@@ -5755,7 +5755,7 @@
 20
 3a
 05
-a9
+ab
 1f
 e0
 fe
@@ -5791,15 +5791,23 @@
 c0
 00
 85
-ba
+bc
 c0
 01
 05
-d6
+fa
 c0
 7f
 86
-26
+4a
+c2
+82
+05
+bc
+c2
+83
+85
+bc
 d8
 a0
 46
@@ -5895,7 +5903,7 @@
 c0
 00
 86
-30
+54
 68
 00
 c7
@@ -5916,6 +5924,78 @@
 00
 c7
 a3
+68
+00
+c7
+6d
+c2
+82
+05
+e2
+c2
+83
+85
+e9
+68
+00
+c7
+1e
+1f
+e6
+7c
+09
+20
+22
+85
+da
+20
+40
+05
+da
+68
+00
+c7
+1e
+1f
+e0
+ff
+f8
+60
+00
+c7
+1e
+1f
+e2
+72
+00
+d8
+a0
+47
+6d
+d8
+c0
+47
+75
+20
+40
+7f
+01
+68
+00
+c7
+6d
+c2
+82
+05
+e2
+c2
+83
+85
+e9
+20
+60
+00
+00
 20
 40
 01
@@ -5935,7 +6015,7 @@
 24
 5a
 05
-ce
+f2
 68
 00
 c7
@@ -5943,7 +6023,71 @@
 20
 5a
 05
+f6
+20
+20
+01
+8c
+70
+13
 d2
+ba
+70
+13
+d3
+02
+70
+13
+d4
+34
+70
+13
+d5
+04
+68
+02
+47
+6e
+60
+02
+13
+d6
+20
+20
+01
+8c
+70
+13
+d2
+ba
+70
+13
+d3
+02
+70
+13
+d4
+35
+70
+13
+d5
+20
+df
+20
+00
+14
+d8
+c0
+47
+6e
+d8
+a0
+13
+d6
+20
+40
+7f
+01
 20
 20
 01
@@ -5991,27 +6135,27 @@
 20
 20
 86
-32
+56
 68
 00
 c7
 6e
 c0
 00
-05
-de
+06
+02
 c0
 01
 06
-18
+3c
 c0
 01
-85
-fb
+86
+1f
 20
 20
 05
-a9
+ab
 68
 00
 c7
@@ -6034,24 +6178,24 @@
 d6
 20
 40
-05
-f0
+06
+14
 68
 04
 13
 d6
 24
 5a
-05
-f3
+06
+17
 68
 04
 13
 d6
 20
 5a
-05
-f7
+06
+1b
 68
 04
 13
@@ -6083,7 +6227,7 @@
 20
 20
 05
-a9
+ab
 d8
 c0
 47
@@ -6199,7 +6343,7 @@
 20
 20
 05
-a9
+ab
 d8
 c0
 47
@@ -6255,7 +6399,7 @@
 20
 40
 06
-23
+47
 68
 01
 13
@@ -6287,7 +6431,7 @@
 20
 20
 05
-a9
+ab
 d8
 c0
 47
@@ -6307,11 +6451,11 @@
 c0
 00
 86
-2a
+4e
 c0
 01
 06
-2d
+51
 20
 60
 00
@@ -6347,7 +6491,7 @@
 20
 20
 06
-2b
+4f
 68
 02
 47
@@ -6355,7 +6499,7 @@
 20
 20
 06
-2e
+52
 70
 47
 a2
@@ -6383,7 +6527,7 @@
 20
 40
 06
-3d
+61
 60
 08
 c7
@@ -6471,7 +6615,7 @@
 c5
 16
 06
-52
+76
 df
 20
 00
@@ -6495,7 +6639,7 @@
 c2
 00
 06
-54
+78
 18
 49
 7e
@@ -6535,7 +6679,7 @@
 c2
 00
 06
-5e
+82
 1a
 22
 7e
@@ -6659,7 +6803,7 @@
 20
 40
 86
-90
+b4
 68
 08
 c7
@@ -6733,65 +6877,13 @@
 00
 00
 68
-00
-c7
-20
-1f
-e9
-fe
-00
-68
-08
-c7
-1f
-18
-41
-04
-03
-18
-43
-84
-00
-98
-41
-fe
-00
-68
-08
-c7
-5c
-98
-40
-fe
-00
-e0
-a0
-80
-00
-68
-00
-c7
-20
-98
-00
-72
-00
-d8
-c0
-46
-bc
-20
-20
-7f
-01
-68
 08
 c7
 2b
 20
 40
 06
-a3
+ba
 60
 08
 c7
@@ -6803,7 +6895,7 @@
 20
 40
 06
-a7
+be
 18
 40
 84
@@ -6927,7 +7019,7 @@
 20
 40
 06
-b0
+c7
 78
 57
 fc
@@ -6962,8 +7054,8 @@
 00
 24
 2c
-06
-fc
+07
+13
 78
 23
 fc
@@ -6974,8 +7066,8 @@
 00
 20
 40
-06
-f9
+07
+10
 60
 00
 c7
@@ -6990,12 +7082,12 @@
 00
 24
 22
-86
-fe
+87
+15
 20
 40
-06
-f9
+07
+10
 60
 00
 c6
@@ -7003,7 +7095,7 @@
 c5
 16
 06
-da
+f1
 68
 00
 c6
@@ -7018,12 +7110,12 @@
 00
 24
 20
-86
-fe
+87
+15
 20
 40
-06
-f9
+07
+10
 e0
 a0
 80
@@ -7039,11 +7131,11 @@
 20
 22
 86
-e2
+f9
 20
 40
-06
-f9
+07
+10
 e0
 a0
 80
@@ -7051,19 +7143,19 @@
 c2
 00
 06
-df
+f6
 c5
 16
 06
-e7
+fe
 18
 a2
 22
 00
 20
 40
-06
-f9
+07
+10
 60
 00
 c7
@@ -7106,8 +7198,8 @@
 bb
 20
 23
-06
-fe
+07
+15
 78
 37
 fc
@@ -7143,7 +7235,7 @@
 20
 20
 06
-44
+68
 09
 80
 00
@@ -7163,7 +7255,7 @@
 20
 40
 86
-36
+5a
 78
 4d
 fc
@@ -7199,11 +7291,11 @@
 20
 40
 06
-b0
+c7
 20
 40
 07
-00
+17
 79
 20
 2a
@@ -7267,11 +7359,11 @@
 c2
 00
 07
-15
+2c
 c5
 96
 07
-19
+30
 78
 24
 7c
@@ -7304,8 +7396,8 @@
 60
 00
 00
-c0
-73
+b0
+d6
 aa
 55
 01
@@ -8018,5 +8110,5 @@
 55
 e4
 a2
-9e
-b4
+e4
+66
Index: output/program.lis
===================================================================
--- /branch/mouse_project/TestTools/1021s_quick_connector_ai_mingjian/output/program.lis	(revision 7372)
+++ /branch/mouse_project/TestTools/1021s_quick_connector_ai_mingjian/output/program.lis	(working copy)
@@ -341,7 +341,7 @@
 0104 6800c85d fetch 1 ,mem_app_mode_select 
 0105 c00082d5 beq quick_conn_ble ,p_le_send_kb_led_ctrl 
 0106 c001036d beq quick_conn_classic ,p_classic_send_kb_led_ctrl 
-0107 c0000634 beq quick_conn_24g_receiver ,p_g24_send_kb_led_ctrl 
+0107 c0000658 beq quick_conn_24g_receiver ,p_g24_send_kb_led_ctrl 
 0108 20600000 rtn 
 
 p_usb_init:
@@ -1314,7 +1314,7 @@
 
 p_g24_store_dongle_addr:
 03cd 68024700 fetch 4 ,mem_24g_rxpayload + 2 
-03ce 2020065a branch p_g24_update_addr_and_synccrc8 
+03ce 2020067e branch p_g24_update_addr_and_synccrc8 
 
 p_g24_tx_attemp_data_prep:
 03cf 70119eff jam 0xff ,mem_24g_common_temp 
@@ -1325,7 +1325,7 @@
 03d4 d8400006 arg 6 ,temp 
 03d5 da20119e arg mem_24g_common_temp ,rega 
 03d6 204003d8 call p_g24_put_data_in_buff 
-03d7 20200675 branch p_g24_transmit_prep 
+03d7 20200699 branch p_g24_transmit_prep 
 
 p_g24_put_data_in_buff:
 03d8 6008c720 storet 1 ,mem_24g_datalen 
@@ -1362,7 +1362,7 @@
 p_g24_pair_init:
 03ee 70472a4e jam g24_pair_ch ,mem_24g_ch 
 03ef 6802472c fetch 4 ,mem_24g_paring_addr 
-03f0 2020065a branch p_g24_update_addr_and_synccrc8 
+03f0 2020067e branch p_g24_update_addr_and_synccrc8 
 
 p_g24_auto_pair_first_attemp:
 03f1 68024757 fetch 4 ,mem_24g_device_addr 
@@ -1374,8 +1374,8 @@
 03f7 20600000 rtn 
 
 p_g24_ch_syncword_crc8_init:
-03f8 2040065b call p_g24_syncword_crc8 
-03f9 2020069f branch p_g24_ch 
+03f8 2040067f call p_g24_syncword_crc8 
+03f9 202006b6 branch p_g24_ch 
 
 p_g24_auto_pair_all_powerful:
 03fa 680247ed fetch 4 ,mem_24g_allpowerful_addr 
@@ -1417,7 +1417,7 @@
 0412 793ffe04 set0 bit_hop ,pdata 
 0413 6000c721 store 1 ,mem_24g_data_type 
 0414 6000c6dc store 1 ,mem_24g_txpayload 
-0415 2020069f branch p_g24_ch 
+0415 202006b6 branch p_g24_ch 
 
 p_g24_rf_hop_attemp_again:
 0416 6800c7db fetch 1 ,mem_24g_rf_hop_ch 
@@ -1428,7 +1428,7 @@
 0419 1fe0fe01 increase 1 ,pdata 
 041a 6000c7d9 store 1 ,mem_24g_hop_fastly_cnt 
 041b c002041f beq 4 ,p_g24_rf_hop_fastly_exit 
-041c 2040069f call p_g24_ch 
+041c 204006b6 call p_g24_ch 
 041d 70476502 jam 2 ,mem_24g_max_retry 
 041e 2020045d branch p_g24_transmit_packet 
 
@@ -1478,7 +1478,7 @@
 043d 1fe0ffff increase -1 ,pdata 
 043e 6000c7de store 1 ,mem_24g_sync_cnt 
 043f 7047dd02 jam 2 ,mem_24g_rf_work_stage 
-0440 2040069f call p_g24_ch 
+0440 204006b6 call p_g24_ch 
 0441 70476504 jam 4 ,mem_24g_max_retry 
 0442 20600000 rtn 
 
@@ -1486,7 +1486,7 @@
 0443 7047dd03 jam 3 ,mem_24g_rf_work_stage 
 0444 6800c7db fetch 1 ,mem_24g_rf_hop_ch 
 0445 243a0416 nbranch p_g24_rf_hop_attemp_again ,blank 
-0446 2040069f call p_g24_ch 
+0446 204006b6 call p_g24_ch 
 0447 70476502 jam 2 ,mem_24g_max_retry 
 0448 20600000 rtn 
 
@@ -1498,7 +1498,7 @@
 044b 2040044f call p_g24_package_data 
 
 p_g24_txdata_enable_tx:
-044c 20400675 call p_g24_transmit_prep 
+044c 20400699 call p_g24_transmit_prep 
 044d 70472501 jam ensure_on_24g ,mem_24g_ensure 
 044e 20600000 rtn 
 
@@ -1549,15 +1549,15 @@
 
 p_g24_transmit_receive_ack:
 0470 7857fc00 disable user3 
-0471 20400703 call p_g24_transmit 
+0471 2040071a call p_g24_transmit 
 0472 18002a00 force 0 ,radio_ctrl 
 0473 68024748 fetch 4 ,mem_24g_addr 
 0474 98001200 iforce access 
 0475 68088017 fetcht 1 ,mem_last_freq 
 0476 2040291f call set_freq_rx 
 0477 20402924 call rf_rx_enable 
-0478 204006c2 call p_g24_receive_rxon 
-0479 205786fe call p_g24_end_of_packet ,user3 
+0478 204006d9 call p_g24_receive_rxon 
+0479 20578715 call p_g24_end_of_packet ,user3 
 047a 20600000 rtn 
 
 p_g24_retransmit:
@@ -1585,7 +1585,7 @@
 p_g24_tx_hop_ch_process:
 048b 6800c729 fetch 1 ,mem_24g_retry 
 048c 1fe67c0b sub pdata ,11 ,null 
-048d 2421069f nbranch p_g24_ch ,positive 
+048d 242106b6 nbranch p_g24_ch ,positive 
 048e 1fe0fe01 increase 1 ,pdata 
 048f 6000c729 store 1 ,mem_24g_retry 
 0490 c001040a beq 2 ,p_g24_hop_ch_enable 
@@ -1595,7 +1595,7 @@
 0494 20600000 rtn 
 
 p_g24_ackpayload_parse:
-0495 20400668 call p_g24_read_len_pid_crc 
+0495 2040068c call p_g24_read_len_pid_crc 
 0496 6800c71e fetch 1 ,mem_24g_rxdata_length 
 0497 207a0000 rtn blank 
 0498 98007200 iforce loopcnt 
@@ -1670,7 +1670,7 @@
 04c5 700a9939 jam bt_evt_24g_pairing_complete ,mem_fifo_temp 
 04c6 20407d86 call ui_ipc_send_event 
 04c7 68024700 fetch 4 ,mem_24g_rxpayload + 2 
-04c8 2040065a call p_g24_update_addr_and_synccrc8 
+04c8 2040067e call p_g24_update_addr_and_synccrc8 
 04c9 2020046c branch p_g24_transmit_abandon 
 
 p_g24_check_51cmd_stop_24g:
@@ -1793,9 +1793,9 @@
 0520 70479b01 jam 1 ,mem_24g_abort_packet 
 0521 70471f00 jam 0 ,mem_24g_pid 
 0522 6802478d fetch 4 ,mem_24g_rx_addr 
-0523 2040065a call p_g24_update_addr_and_synccrc8 
-0524 2040069f call p_g24_ch 
-0525 202005a9 branch p_g24_rx_interrupt_clear 
+0523 2040067e call p_g24_update_addr_and_synccrc8 
+0524 204006b6 call p_g24_ch 
+0525 202005ab branch p_g24_rx_interrupt_clear 
 
 p_g24_ch_process:
 0526 6800c79b fetch 1 ,mem_24g_abort_packet 
@@ -1816,11 +1816,11 @@
 0535 793ffe1c set0 28 ,pdata 
 0536 6002479d store 4 ,mem_24g_hop_btclk 
 0537 70479b01 jam 1 ,mem_24g_abort_packet 
-0538 2020069f branch p_g24_ch 
+0538 202006b6 branch p_g24_ch 
 
 p_g24_ch_receive_hop_pac:
 0539 7047a300 jam 0 ,mem_24g_hop_packet 
-053a 2020069f branch p_g24_ch 
+053a 202006b6 branch p_g24_ch 
 
 p_g24_ch_timer_reinit:
 053b 1c427e00 copy clkn_bt ,pdata 
@@ -1830,11 +1830,11 @@
 
 p_g24_noise_rssi:
 053f da200d9e arg mem_rssi_noise_buffer ,rega 
-0540 2040064e call p_rssi_average 
+0540 20400672 call p_rssi_average 
 0541 6008c7c6 storet 1 ,mem_rssi_noise_avg 
 0542 18467c50 sub temp ,rssi_thresh_noise ,null 
 0543 24610000 nrtn positive 
-0544 2020069f branch p_g24_ch 
+0544 202006b6 branch p_g24_ch 
 
 p_g24_blank_data_process:
 0545 20400548 call p_g24_ms_blank_data 
@@ -1879,23 +1879,23 @@
 0564 2020018c branch p_usb_in_data_push 
 
 p_g24_receive_transmit_ack:
-0565 204005a9 call p_g24_rx_interrupt_clear 
-0566 204006b9 call p_g24_receive_packet 
+0565 204005ab call p_g24_rx_interrupt_clear 
+0566 204006d0 call p_g24_receive_packet 
 0567 24778000 nrtn user3 
 0568 20200569 branch p_g24_transmit_ack 
 
 p_g24_transmit_ack:
 0569 6800c69a fetch 1 ,mem_24g_rxbuf 
 056a 6000c721 store 1 ,mem_24g_data_type 
-056b 20400668 call p_g24_read_len_pid_crc 
+056b 2040068c call p_g24_read_len_pid_crc 
 
 p_g24tx_with_ack:
 056c 20400570 call p_g24_ackpayload_prep 
-056d 20400675 call p_g24_transmit_prep 
-056e 20400703 call p_g24_transmit 
+056d 20400699 call p_g24_transmit_prep 
+056e 2040071a call p_g24_transmit 
 
 p_g24tx_no_ack:
-056f 202006fe branch p_g24_end_of_packet 
+056f 20200715 branch p_g24_end_of_packet 
 
 p_g24_ackpayload_prep:
 0570 70472000 jam 0 ,mem_24g_datalen 
@@ -1950,14 +1950,14 @@
 
 p_g24_receive_packet_start:
 0597 20400565 call p_g24_receive_transmit_ack 
-0598 243785a9 nbranch p_g24_rx_interrupt_clear ,user3 
+0598 243785ab nbranch p_g24_rx_interrupt_clear ,user3 
 0599 2020059a branch p_g24_receive_packet_parse 
 
 p_g24_receive_packet_parse:
-059a 204005ac call p_g24_receive_packet_parse_pid_crc 
-059b 243405a9 nbranch p_g24_rx_interrupt_clear ,user 
+059a 204005ae call p_g24_receive_packet_parse_pid_crc 
+059b 243405ab nbranch p_g24_rx_interrupt_clear ,user 
 059c 6800c71e fetch 1 ,mem_24g_rxdata_length 
-059d 203a05a9 branch p_g24_rx_interrupt_clear ,blank 
+059d 203a05ab branch p_g24_rx_interrupt_clear ,blank 
 059e 1fe0fe02 increase 2 ,pdata 
 059f 98007200 iforce loopcnt 
 05a0 d8c0469a arg mem_24g_rxbuf ,contr 
@@ -1966,493 +1966,526 @@
 05a3 20400585 call p_g24_enable_nodata_timer 
 05a4 20400592 call p_g24_connected_upload 
 05a5 6800c76d fetch 1 ,mem_24g_rxdata_temp + 2 
-05a6 c00085ba beq 0x01 ,p_g24_data_type1 
-05a7 c00105d6 beq 0x02 ,p_g24_data_type2 
-05a8 c07f8626 beq 0xff ,p_g24_data_attemp 
+05a6 c00085bc beq 0x01 ,p_g24_data_type1 
+05a7 c00105fa beq 0x02 ,p_g24_data_type2 
+05a8 c07f864a beq 0xff ,p_g24_data_attemp 
+05a9 c28205bc bbit1 datatype_ai_key ,p_g24_data_type1 
+05aa c28385bc bbit1 datatype_audio ,p_g24_data_type1 
 
 p_g24_rx_interrupt_clear:
-05a9 d8a0469a arg mem_24g_rxbuf ,contw 
-05aa df200042 arg 66 ,loopcnt 
-05ab 20207ed4 branch clear_mem 
+05ab d8a0469a arg mem_24g_rxbuf ,contw 
+05ac df200042 arg 66 ,loopcnt 
+05ad 20207ed4 branch clear_mem 
 
 p_g24_receive_packet_parse_pid_crc:
-05ac 20407fe9 call disable_user 
-05ad 6800c763 fetch 1 ,mem_24g_sta_pid 
-05ae 6808c764 fetcht 1 ,mem_24g_last_pid 
-05af 98467c00 isub temp ,null 
-05b0 2442ffe7 ncall enable_user ,zero 
-05b1 6800c763 fetch 1 ,mem_24g_sta_pid 
-05b2 6000c764 store 1 ,mem_24g_last_pid 
-05b3 6801c75d fetch 3 ,mem_24g_sta_crc 
-05b4 6809c760 fetcht 3 ,mem_24g_last_crc 
-05b5 98467c00 isub temp ,null 
-05b6 2442ffe7 ncall enable_user ,zero 
-05b7 6801c75d fetch 3 ,mem_24g_sta_crc 
-05b8 6001c760 store 3 ,mem_24g_last_crc 
-05b9 20600000 rtn 
+05ae 20407fe9 call disable_user 
+05af 6800c763 fetch 1 ,mem_24g_sta_pid 
+05b0 6808c764 fetcht 1 ,mem_24g_last_pid 
+05b1 98467c00 isub temp ,null 
+05b2 2442ffe7 ncall enable_user ,zero 
+05b3 6800c763 fetch 1 ,mem_24g_sta_pid 
+05b4 6000c764 store 1 ,mem_24g_last_pid 
+05b5 6801c75d fetch 3 ,mem_24g_sta_crc 
+05b6 6809c760 fetcht 3 ,mem_24g_last_crc 
+05b7 98467c00 isub temp ,null 
+05b8 2442ffe7 ncall enable_user ,zero 
+05b9 6801c75d fetch 3 ,mem_24g_sta_crc 
+05ba 6001c760 store 3 ,mem_24g_last_crc 
+05bb 20600000 rtn 
 
 p_g24_data_type1:
-05ba 2040053b call p_g24_ch_timer_reinit 
-05bb 6800c79b fetch 1 ,mem_24g_abort_packet 
-05bc 6808c76b fetcht 1 ,mem_24g_rxdata_temp 
-05bd 284ffe03 isolate1 bit_abort ,temp 
-05be 7920fe00 setflag true ,0 ,pdata 
-05bf 6000c79b store 1 ,mem_24g_abort_packet 
-05c0 c0008630 beq 1 ,p_g24_data_attemp_mouse_abort 
-05c1 6800c7a3 fetch 1 ,mem_24g_hop_packet 
-05c2 6808c76b fetcht 1 ,mem_24g_rxdata_temp 
-05c3 284ffe04 isolate1 bit_hop ,temp 
-05c4 7920fe00 setflag true ,0 ,pdata 
-05c5 6000c7a3 store 1 ,mem_24g_hop_packet 
-05c6 20400153 call p_usb_ms_data_header 
-05c7 6803c76e fetch 7 ,mem_24g_rxdata_temp + 3 
-05c8 600393d6 store 7 ,mem_usb_in_data + 4 
-05c9 6800c76e fetch 1 ,mem_24g_rxdata_temp + 3 
-05ca 245a05ce ncall p_g24_ms_enable_blank_data_forcibly ,blank 
-05cb 6800c76e fetch 1 ,mem_24g_rxdata_temp + 3 
-05cc 205a05d2 call p_g24_ms_disable_blank_data_forcibly ,blank 
-05cd 2020018c branch p_usb_in_data_push 
+05bc 2040053b call p_g24_ch_timer_reinit 
+05bd 6800c79b fetch 1 ,mem_24g_abort_packet 
+05be 6808c76b fetcht 1 ,mem_24g_rxdata_temp 
+05bf 284ffe03 isolate1 bit_abort ,temp 
+05c0 7920fe00 setflag true ,0 ,pdata 
+05c1 6000c79b store 1 ,mem_24g_abort_packet 
+05c2 c0008654 beq 1 ,p_g24_data_attemp_mouse_abort 
+05c3 6800c7a3 fetch 1 ,mem_24g_hop_packet 
+05c4 6808c76b fetcht 1 ,mem_24g_rxdata_temp 
+05c5 284ffe04 isolate1 bit_hop ,temp 
+05c6 7920fe00 setflag true ,0 ,pdata 
+05c7 6000c7a3 store 1 ,mem_24g_hop_packet 
+
+p_dongle_g24_mouse:
+05c8 6800c76d fetch 1 ,mem_24g_rxdata_temp + 2 
+05c9 c28205e2 bbit1 datatype_ai_key ,p_g24_data_receive_ai_key_data 
+05ca c28385e9 bbit1 datatype_audio ,p_dongle_g24_mouse_audio_data 
+
+p_dongle_g24_mouse_next:
+05cb 6800c71e fetch 1 ,mem_24g_rxdata_length 
+05cc 1fe67c09 sub pdata ,0x09 ,null 
+05cd 202285da branch p_dongle_g24_mouse_data ,zero 
+05ce 204005da call p_dongle_g24_mouse_data 
+05cf 6800c71e fetch 1 ,mem_24g_rxdata_length 
+05d0 1fe0fff8 add pdata ,-8 ,pdata 
+05d1 6000c71e store 1 ,mem_24g_rxdata_length 
+05d2 1fe27200 copy pdata ,loopcnt 
+05d3 d8a0476d arg mem_24g_rxdata_temp + 2 ,contw 
+05d4 d8c04775 arg mem_24g_rxdata_temp + 10 ,contr 
+05d5 20407f01 call memcpy 
+05d6 6800c76d fetch 1 ,mem_24g_rxdata_temp + 2 
+05d7 c28205e2 bbit1 datatype_ai_key ,p_g24_data_receive_ai_key_data 
+05d8 c28385e9 bbit1 datatype_audio ,p_dongle_g24_mouse_audio_data 
+05d9 20600000 rtn 
+
+p_dongle_g24_mouse_data:
+05da 20400153 call p_usb_ms_data_header 
+05db 6803c76e fetch 7 ,mem_24g_rxdata_temp + 3 
+05dc 600393d6 store 7 ,mem_usb_in_data + 4 
+05dd 6800c76e fetch 1 ,mem_24g_rxdata_temp + 3 
+05de 245a05f2 ncall p_g24_ms_enable_blank_data_forcibly ,blank 
+05df 6800c76e fetch 1 ,mem_24g_rxdata_temp + 3 
+05e0 205a05f6 call p_g24_ms_disable_blank_data_forcibly ,blank 
+05e1 2020018c branch p_usb_in_data_push 
+
+p_g24_data_receive_ai_key_data:
+05e2 7013d2ba jam pc_report_id ,mem_usb_in_data 
+05e3 7013d302 jam pc_evt_type ,mem_usb_in_data + 1 
+05e4 7013d434 jam pc_evt_ai_key_upload ,mem_usb_in_data + 2 
+05e5 7013d504 jam pc_evt_ms_data_len_4b ,mem_usb_in_data + 3 
+05e6 6802476e fetch 4 ,mem_24g_rxdata_temp + 3 
+05e7 600213d6 store 4 ,mem_usb_in_data + 4 
+05e8 2020018c branch p_usb_in_data_push 
+
+p_dongle_g24_mouse_audio_data:
+05e9 7013d2ba jam pc_report_id ,mem_usb_in_data 
+05ea 7013d302 jam pc_evt_type ,mem_usb_in_data + 1 
+05eb 7013d435 jam pc_evt_audio_upload ,mem_usb_in_data + 2 
+05ec 7013d520 jam pc_evt_ms_data_len_20b ,mem_usb_in_data + 3 
+05ed df200014 arg 20 ,loopcnt 
+05ee d8c0476e arg mem_24g_rxdata_temp + 3 ,contr 
+05ef d8a013d6 arg mem_usb_in_data + 4 ,contw 
+05f0 20407f01 call memcpy 
+05f1 2020018c branch p_usb_in_data_push 
 
 p_g24_ms_enable_blank_data_forcibly:
-05ce 7047bc01 jam 1 ,mem_24g_ms_blank_data_enable 
-05cf 58000180 setarg timer_new_ms_blank_delay 
-05d0 d8e0000b arg timer_new_ms_blank ,queue 
-05d1 20207f08 branch timer_init 
+05f2 7047bc01 jam 1 ,mem_24g_ms_blank_data_enable 
+05f3 58000180 setarg timer_new_ms_blank_delay 
+05f4 d8e0000b arg timer_new_ms_blank ,queue 
+05f5 20207f08 branch timer_init 
 
 p_g24_ms_disable_blank_data_forcibly:
-05d2 7047bc00 jam 0 ,mem_24g_ms_blank_data_enable 
-05d3 58000000 setarg 0 
-05d4 d8e0000b arg timer_new_ms_blank ,queue 
-05d5 20207f08 branch timer_init 
+05f6 7047bc00 jam 0 ,mem_24g_ms_blank_data_enable 
+05f7 58000000 setarg 0 
+05f8 d8e0000b arg timer_new_ms_blank ,queue 
+05f9 20207f08 branch timer_init 
 
 p_g24_data_type2:
-05d6 6808c76b fetcht 1 ,mem_24g_rxdata_temp 
-05d7 284ffe03 isolate1 bit_abort ,temp 
-05d8 20208632 branch p_g24_data_attemp_kbd_abort ,true 
-05d9 6800c76e fetch 1 ,mem_24g_rxdata_temp + 3 
-05da c00005de beq 0 ,p_g24_data_type2_data1 
-05db c0010618 beq 2 ,p_g24_data_type2_data3 
-05dc c00185fb beq 3 ,p_g24_data_type2_data2 
-05dd 202005a9 branch p_g24_rx_interrupt_clear 
+05fa 6808c76b fetcht 1 ,mem_24g_rxdata_temp 
+05fb 284ffe03 isolate1 bit_abort ,temp 
+05fc 20208656 branch p_g24_data_attemp_kbd_abort ,true 
+05fd 6800c76e fetch 1 ,mem_24g_rxdata_temp + 3 
+05fe c0000602 beq 0 ,p_g24_data_type2_data1 
+05ff c001063c beq 2 ,p_g24_data_type2_data3 
+0600 c001861f beq 3 ,p_g24_data_type2_data2 
+0601 202005ab branch p_g24_rx_interrupt_clear 
 
 p_g24_data_type2_data1:
-05de 6800c770 fetch 1 ,mem_24g_rxdata_temp + 5 
-05df 6000c7a2 store 1 ,mem_24g_ackpayload_enable 
-05e0 70477000 jam 0 ,mem_24g_rxdata_temp + 5 
-05e1 20400158 call p_usb_kb_normal_data_header 
-05e2 d8a013d6 arg mem_usb_in_data + 4 ,contw 
-05e3 204005f0 call p_g24_data_type2_copy_data1 
-05e4 680413d6 fetch 8 ,mem_usb_in_data + 4 
-05e5 245a05f3 ncall p_g24_kb_enable_blank_data_forcibly ,blank 
-05e6 680413d6 fetch 8 ,mem_usb_in_data + 4 
-05e7 205a05f7 call p_g24_kb_disable_blank_data_forcibly ,blank 
-05e8 680413d6 fetch 8 ,mem_usb_in_data + 4 
-05e9 600447a4 store 8 ,mem_24g_kb_data_sta_data 
-05ea 680c47ac fetcht 8 ,mem_24g_kb_data_last_data 
-05eb 98467c00 isub temp ,null 
-05ec 2442818c ncall p_usb_in_data_push ,zero 
-05ed 680447a4 fetch 8 ,mem_24g_kb_data_sta_data 
-05ee 600447ac store 8 ,mem_24g_kb_data_last_data 
-05ef 202005a9 branch p_g24_rx_interrupt_clear 
+0602 6800c770 fetch 1 ,mem_24g_rxdata_temp + 5 
+0603 6000c7a2 store 1 ,mem_24g_ackpayload_enable 
+0604 70477000 jam 0 ,mem_24g_rxdata_temp + 5 
+0605 20400158 call p_usb_kb_normal_data_header 
+0606 d8a013d6 arg mem_usb_in_data + 4 ,contw 
+0607 20400614 call p_g24_data_type2_copy_data1 
+0608 680413d6 fetch 8 ,mem_usb_in_data + 4 
+0609 245a0617 ncall p_g24_kb_enable_blank_data_forcibly ,blank 
+060a 680413d6 fetch 8 ,mem_usb_in_data + 4 
+060b 205a061b call p_g24_kb_disable_blank_data_forcibly ,blank 
+060c 680413d6 fetch 8 ,mem_usb_in_data + 4 
+060d 600447a4 store 8 ,mem_24g_kb_data_sta_data 
+060e 680c47ac fetcht 8 ,mem_24g_kb_data_last_data 
+060f 98467c00 isub temp ,null 
+0610 2442818c ncall p_usb_in_data_push ,zero 
+0611 680447a4 fetch 8 ,mem_24g_kb_data_sta_data 
+0612 600447ac store 8 ,mem_24g_kb_data_last_data 
+0613 202005ab branch p_g24_rx_interrupt_clear 
 
 p_g24_data_type2_copy_data1:
-05f0 d8c0476f arg mem_24g_rxdata_temp + 4 ,contr 
-05f1 df200008 arg 8 ,loopcnt 
-05f2 20207f01 branch memcpy 
+0614 d8c0476f arg mem_24g_rxdata_temp + 4 ,contr 
+0615 df200008 arg 8 ,loopcnt 
+0616 20207f01 branch memcpy 
 
 p_g24_kb_enable_blank_data_forcibly:
-05f3 7047ba01 jam 1 ,mem_24g_kb_blank_data_enable 
-05f4 58000180 setarg timer_new_kb_blank_delay 
-05f5 d8e0000e arg timer_new_kb_blank ,queue 
-05f6 20207f08 branch timer_init 
+0617 7047ba01 jam 1 ,mem_24g_kb_blank_data_enable 
+0618 58000180 setarg timer_new_kb_blank_delay 
+0619 d8e0000e arg timer_new_kb_blank ,queue 
+061a 20207f08 branch timer_init 
 
 p_g24_kb_disable_blank_data_forcibly:
-05f7 7047ba00 jam 0 ,mem_24g_kb_blank_data_enable 
-05f8 58000000 setarg 0 
-05f9 d8e0000e arg timer_new_kb_blank ,queue 
-05fa 20207f08 branch timer_init 
+061b 7047ba00 jam 0 ,mem_24g_kb_blank_data_enable 
+061c 58000000 setarg 0 
+061d d8e0000e arg timer_new_kb_blank ,queue 
+061e 20207f08 branch timer_init 
 
 p_g24_data_type2_data2:
-05fb 2040015d call p_usb_kb_multimedia_data_header 
-05fc 6800c76e fetch 1 ,mem_24g_rxdata_temp + 3 
-05fd 600093d6 store 1 ,mem_usb_in_data + 4 
-05fe 6801476f fetch 2 ,mem_24g_rxdata_temp + 4 
-05ff 60014975 store 2 ,mem_quickconn_media_data 
-0600 70497400 jam 0 ,mem_quickconn_data_bit1_count 
-0601 6802476f fetch 4 ,mem_24g_rxdata_temp + 4 
-0602 2040023c call p_usb_tx_kb_multimedia_data_bit1_check 
-0603 68014975 fetch 2 ,mem_quickconn_media_data 
-0604 600113d7 store 2 ,mem_usb_in_data + 5 
-0605 680193d6 fetch 3 ,mem_usb_in_data + 4 
-0606 6001c7b4 store 3 ,mem_24g_kb_multikey_sta_data 
-0607 6809c7b7 fetcht 3 ,mem_24g_kb_multikey_last_data 
-0608 98467c00 isub temp ,null 
-0609 2442818c ncall p_usb_in_data_push ,zero 
-060a 6801c7b4 fetch 3 ,mem_24g_kb_multikey_sta_data 
-060b 6001c7b7 store 3 ,mem_24g_kb_multikey_last_data 
-060c 202005a9 branch p_g24_rx_interrupt_clear 
+061f 2040015d call p_usb_kb_multimedia_data_header 
+0620 6800c76e fetch 1 ,mem_24g_rxdata_temp + 3 
+0621 600093d6 store 1 ,mem_usb_in_data + 4 
+0622 6801476f fetch 2 ,mem_24g_rxdata_temp + 4 
+0623 60014975 store 2 ,mem_quickconn_media_data 
+0624 70497400 jam 0 ,mem_quickconn_data_bit1_count 
+0625 6802476f fetch 4 ,mem_24g_rxdata_temp + 4 
+0626 2040023c call p_usb_tx_kb_multimedia_data_bit1_check 
+0627 68014975 fetch 2 ,mem_quickconn_media_data 
+0628 600113d7 store 2 ,mem_usb_in_data + 5 
+0629 680193d6 fetch 3 ,mem_usb_in_data + 4 
+062a 6001c7b4 store 3 ,mem_24g_kb_multikey_sta_data 
+062b 6809c7b7 fetcht 3 ,mem_24g_kb_multikey_last_data 
+062c 98467c00 isub temp ,null 
+062d 2442818c ncall p_usb_in_data_push ,zero 
+062e 6801c7b4 fetch 3 ,mem_24g_kb_multikey_sta_data 
+062f 6001c7b7 store 3 ,mem_24g_kb_multikey_last_data 
+0630 202005ab branch p_g24_rx_interrupt_clear 
 
 p_g24_data_type2_copy_data2:
-060d d8c0476e arg mem_24g_rxdata_temp + 3 ,contr 
-060e df200003 arg 3 ,loopcnt 
-060f 20207f01 branch memcpy 
+0631 d8c0476e arg mem_24g_rxdata_temp + 3 ,contr 
+0632 df200003 arg 3 ,loopcnt 
+0633 20207f01 branch memcpy 
 
 p_g24_kb_mul_enable_blank_data_forcibly:
-0610 7047bb01 jam 1 ,mem_24g_kb_mul_blank_data_enable 
-0611 58000180 setarg timer_new_kb_mul_blank_delay 
-0612 d8e0000c arg timer_new_kb_mul_blank ,queue 
-0613 20207f08 branch timer_init 
+0634 7047bb01 jam 1 ,mem_24g_kb_mul_blank_data_enable 
+0635 58000180 setarg timer_new_kb_mul_blank_delay 
+0636 d8e0000c arg timer_new_kb_mul_blank ,queue 
+0637 20207f08 branch timer_init 
 
 p_g24_kb_mul_disable_blank_data_forcibly:
-0614 7047bb00 jam 0 ,mem_24g_kb_mul_blank_data_enable 
-0615 58000000 setarg 0 
-0616 d8e0000c arg timer_new_kb_mul_blank ,queue 
-0617 20207f08 branch timer_init 
+0638 7047bb00 jam 0 ,mem_24g_kb_mul_blank_data_enable 
+0639 58000000 setarg 0 
+063a d8e0000c arg timer_new_kb_mul_blank ,queue 
+063b 20207f08 branch timer_init 
 
 p_g24_data_type2_data3:
-0618 20400162 call p_usb_kb_sysctrl_data_header 
-0619 d8a013d6 arg mem_usb_in_data + 4 ,contw 
-061a 20400623 call p_g24_data_type2_copy_data3 
-061b 680113d6 fetch 2 ,mem_usb_in_data + 4 
-061c 600113cc store 2 ,mem_usb_kb_system_sta_data 
-061d 680913cf fetcht 2 ,mem_usb_kb_system_last_data 
-061e 98467c00 isub temp ,null 
-061f 2442818c ncall p_usb_in_data_push ,zero 
-0620 680113cc fetch 2 ,mem_usb_kb_system_sta_data 
-0621 600113cf store 2 ,mem_usb_kb_system_last_data 
-0622 202005a9 branch p_g24_rx_interrupt_clear 
+063c 20400162 call p_usb_kb_sysctrl_data_header 
+063d d8a013d6 arg mem_usb_in_data + 4 ,contw 
+063e 20400647 call p_g24_data_type2_copy_data3 
+063f 680113d6 fetch 2 ,mem_usb_in_data + 4 
+0640 600113cc store 2 ,mem_usb_kb_system_sta_data 
+0641 680913cf fetcht 2 ,mem_usb_kb_system_last_data 
+0642 98467c00 isub temp ,null 
+0643 2442818c ncall p_usb_in_data_push ,zero 
+0644 680113cc fetch 2 ,mem_usb_kb_system_sta_data 
+0645 600113cf store 2 ,mem_usb_kb_system_last_data 
+0646 202005ab branch p_g24_rx_interrupt_clear 
 
 p_g24_data_type2_copy_data3:
-0623 d8c0476e arg mem_24g_rxdata_temp + 3 ,contr 
-0624 df200002 arg 2 ,loopcnt 
-0625 20207f01 branch memcpy 
+0647 d8c0476e arg mem_24g_rxdata_temp + 3 ,contr 
+0648 df200002 arg 2 ,loopcnt 
+0649 20207f01 branch memcpy 
 
 p_g24_data_attemp:
-0626 6800c76e fetch 1 ,mem_24g_rxdata_temp + 3 
-0627 c000862a beq datatype_mouse ,p_g24_data_attemp_mouse 
-0628 c001062d beq datatype_keyboard ,p_g24_data_attemp_kbd 
-0629 20600000 rtn 
+064a 6800c76e fetch 1 ,mem_24g_rxdata_temp + 3 
+064b c000864e beq datatype_mouse ,p_g24_data_attemp_mouse 
+064c c0010651 beq datatype_keyboard ,p_g24_data_attemp_kbd 
+064d 20600000 rtn 
 
 p_g24_data_attemp_mouse:
-062a 6802476f fetch 4 ,mem_24g_rxdata_temp + 4 
+064e 6802476f fetch 4 ,mem_24g_rxdata_temp + 4 
 
 p_g24_store_mouse_addr:
-062b 600247c1 store 4 ,mem_24g_ms_addr 
-062c 20600000 rtn 
+064f 600247c1 store 4 ,mem_24g_ms_addr 
+0650 20600000 rtn 
 
 p_g24_data_attemp_kbd:
-062d 6802476f fetch 4 ,mem_24g_rxdata_temp + 4 
+0651 6802476f fetch 4 ,mem_24g_rxdata_temp + 4 
 
 p_g24_store_kbd_addr:
-062e 600247bd store 4 ,mem_24g_kb_addr 
-062f 20600000 rtn 
+0652 600247bd store 4 ,mem_24g_kb_addr 
+0653 20600000 rtn 
 
 p_g24_data_attemp_mouse_abort:
-0630 68024775 fetch 4 ,mem_24g_rxdata_temp + 10 
-0631 2020062b branch p_g24_store_mouse_addr 
+0654 68024775 fetch 4 ,mem_24g_rxdata_temp + 10 
+0655 2020064f branch p_g24_store_mouse_addr 
 
 p_g24_data_attemp_kbd_abort:
-0632 68024775 fetch 4 ,mem_24g_rxdata_temp + 10 
-0633 2020062e branch p_g24_store_kbd_addr 
+0656 68024775 fetch 4 ,mem_24g_rxdata_temp + 10 
+0657 20200652 branch p_g24_store_kbd_addr 
 
 p_g24_send_kb_led_ctrl:
-0634 7047a203 jam kb_led_ackpayload ,mem_24g_ackpayload_enable 
-0635 20600000 rtn 
+0658 7047a203 jam kb_led_ackpayload ,mem_24g_ackpayload_enable 
+0659 20600000 rtn 
 
 p_rssi_noise:
-0636 204029bb call save_rssi 
-0637 207a0000 rtn blank 
-0638 6808c7c7 fetcht 1 ,mem_rssi_noise_index 
-0639 da200d9e arg mem_rssi_noise_buffer ,rega 
-063a 2040063d call p_rssi_store 
-063b 6008c7c7 storet 1 ,mem_rssi_noise_index 
-063c 20600000 rtn 
+065a 204029bb call save_rssi 
+065b 207a0000 rtn blank 
+065c 6808c7c7 fetcht 1 ,mem_rssi_noise_index 
+065d da200d9e arg mem_rssi_noise_buffer ,rega 
+065e 20400661 call p_rssi_store 
+065f 6008c7c7 storet 1 ,mem_rssi_noise_index 
+0660 20600000 rtn 
 
 p_rssi_store:
-063d 1a227e00 copy rega ,pdata 
-063e 98408a00 iadd temp ,contw 
-063f 68008018 fetch 1 ,mem_rssi 
-0640 e0a08000 istore 1 ,contw 
-0641 18408401 increase 1 ,temp 
-0642 184104ff and_into rssi_buf_len_noise ,temp 
-0643 20600000 rtn 
+0661 1a227e00 copy rega ,pdata 
+0662 98408a00 iadd temp ,contw 
+0663 68008018 fetch 1 ,mem_rssi 
+0664 e0a08000 istore 1 ,contw 
+0665 18408401 increase 1 ,temp 
+0666 184104ff and_into rssi_buf_len_noise ,temp 
+0667 20600000 rtn 
 
 p_rssi_signal:
-0644 1fe22200 copy pdata ,rega 
-0645 6808c7c8 fetcht 1 ,mem_rssi_signal_index 
-0646 580047cf setarg mem_rssi_signal_buf 
-0647 98408a00 iadd temp ,contw 
-0648 1a227e00 copy rega ,pdata 
-0649 e0a08000 istore 1 ,contw 
-064a 18408401 increase 1 ,temp 
-064b 18410407 and_into rssi_buf_len_signal ,temp 
-064c 6008c7c8 storet 1 ,mem_rssi_signal_index 
-064d 20600000 rtn 
+0668 1fe22200 copy pdata ,rega 
+0669 6808c7c8 fetcht 1 ,mem_rssi_signal_index 
+066a 580047cf setarg mem_rssi_signal_buf 
+066b 98408a00 iadd temp ,contw 
+066c 1a227e00 copy rega ,pdata 
+066d e0a08000 istore 1 ,contw 
+066e 18408401 increase 1 ,temp 
+066f 18410407 and_into rssi_buf_len_signal ,temp 
+0670 6008c7c8 storet 1 ,mem_rssi_signal_index 
+0671 20600000 rtn 
 
 p_rssi_average:
-064e d8400000 arg 0 ,temp 
-064f df200100 arg rssi_buf_len_noise + 1 ,loopcnt 
-0650 c5160652 bmark1 mark_24g_rxmode ,p_rssi_average2 
-0651 df200008 arg rssi_buf_len_signal + 1 ,loopcnt 
+0672 d8400000 arg 0 ,temp 
+0673 df200100 arg rssi_buf_len_noise + 1 ,loopcnt 
+0674 c5160676 bmark1 mark_24g_rxmode ,p_rssi_average2 
+0675 df200008 arg rssi_buf_len_signal + 1 ,loopcnt 
 
 p_rssi_average2:
-0652 1a220c00 copy rega ,contr 
-0653 c5162e64 bmark1 mark_24g_rxmode ,rssi_average_loop 
+0676 1a220c00 copy rega ,contr 
+0677 c5162e64 bmark1 mark_24g_rxmode ,rssi_average_loop 
 
 p_rssi_average_loop:
-0654 e8c08000 ifetch 1 ,contr 
-0655 98408400 iadd temp ,temp 
-0656 c2000654 loop p_rssi_average_loop 
-0657 18497e00 rshift3 temp ,pdata 
-0658 1fe20400 copy pdata ,temp 
-0659 20600000 rtn 
+0678 e8c08000 ifetch 1 ,contr 
+0679 98408400 iadd temp ,temp 
+067a c2000678 loop p_rssi_average_loop 
+067b 18497e00 rshift3 temp ,pdata 
+067c 1fe20400 copy pdata ,temp 
+067d 20600000 rtn 
 
 p_g24_update_addr_and_synccrc8:
-065a 60024748 store 4 ,mem_24g_addr 
+067e 60024748 store 4 ,mem_24g_addr 
 
 p_g24_syncword_crc8:
-065b da200000 arg 0 ,rega 
-065c df200004 arg 4 ,loopcnt 
-065d d8c04748 arg mem_24g_addr ,contr 
+067f da200000 arg 0 ,rega 
+0680 df200004 arg 4 ,loopcnt 
+0681 d8c04748 arg mem_24g_addr ,contr 
 
 p_g24_syncword_crc8_loop:
-065e e8c08000 ifetch 1 ,contr 
-065f 9a20a200 iadd rega ,rega 
-0660 c200065e loop p_g24_syncword_crc8_loop 
-0661 1a227e00 copy rega ,pdata 
-0662 60014767 store 2 ,mem_24g_syncword 
-0663 6800c767 fetch 1 ,mem_24g_syncword 
-0664 6808c768 fetcht 1 ,mem_24g_syncword + 1 
-0665 9840fe00 iadd temp ,pdata 
-0666 6000c769 store 1 ,mem_24g_syncword_crc8 
-0667 20600000 rtn 
+0682 e8c08000 ifetch 1 ,contr 
+0683 9a20a200 iadd rega ,rega 
+0684 c2000682 loop p_g24_syncword_crc8_loop 
+0685 1a227e00 copy rega ,pdata 
+0686 60014767 store 2 ,mem_24g_syncword 
+0687 6800c767 fetch 1 ,mem_24g_syncword 
+0688 6808c768 fetcht 1 ,mem_24g_syncword + 1 
+0689 9840fe00 iadd temp ,pdata 
+068a 6000c769 store 1 ,mem_24g_syncword_crc8 
+068b 20600000 rtn 
 
 p_g24_read_len_pid_crc:
-0668 6800c69b fetch 1 ,mem_24g_rxbuf + 1 
-0669 1fe97e00 rshift3 pdata ,pdata 
-066a 6000c71e store 1 ,mem_24g_rxdata_length 
-066b 1fe0fe01 increase 1 ,pdata 
-066c d8c0469b arg mem_24g_rxbuf + 1 ,contr 
-066d 98c08c00 iadd contr ,contr 
-066e e8c18000 ifetch 3 ,contr 
-066f 6001c75d store 3 ,mem_24g_sta_crc 
-0670 6800c69b fetch 1 ,mem_24g_rxbuf + 1 
-0671 1fe37e00 rshift pdata ,pdata 
-0672 1fe17e03 and pdata ,0x03 ,pdata 
-0673 6000c763 store 1 ,mem_24g_sta_pid 
-0674 20600000 rtn 
+068c 6800c69b fetch 1 ,mem_24g_rxbuf + 1 
+068d 1fe97e00 rshift3 pdata ,pdata 
+068e 6000c71e store 1 ,mem_24g_rxdata_length 
+068f 1fe0fe01 increase 1 ,pdata 
+0690 d8c0469b arg mem_24g_rxbuf + 1 ,contr 
+0691 98c08c00 iadd contr ,contr 
+0692 e8c18000 ifetch 3 ,contr 
+0693 6001c75d store 3 ,mem_24g_sta_crc 
+0694 6800c69b fetch 1 ,mem_24g_rxbuf + 1 
+0695 1fe37e00 rshift pdata ,pdata 
+0696 1fe17e03 and pdata ,0x03 ,pdata 
+0697 6000c763 store 1 ,mem_24g_sta_pid 
+0698 20600000 rtn 
 
 p_g24_transmit_prep:
-0675 6800c720 fetch 1 ,mem_24g_datalen 
-0676 1fe0fe03 increase 3 ,pdata 
-0677 6000c722 store 1 ,mem_24g_txlen 
-0678 6800c769 fetch 1 ,mem_24g_syncword_crc8 
-0679 6000c6dc store 1 ,mem_24g_txpayload 
-067a 6800c721 fetch 1 ,mem_24g_data_type 
-067b e0a08000 istore 1 ,contw 
-067c 6800c720 fetch 1 ,mem_24g_datalen 
-067d 2feffe05 isolate1 5 ,pdata 
+0699 6800c720 fetch 1 ,mem_24g_datalen 
+069a 1fe0fe03 increase 3 ,pdata 
+069b 6000c722 store 1 ,mem_24g_txlen 
+069c 6800c769 fetch 1 ,mem_24g_syncword_crc8 
+069d 6000c6dc store 1 ,mem_24g_txpayload 
+069e 6800c721 fetch 1 ,mem_24g_data_type 
+069f e0a08000 istore 1 ,contw 
+06a0 6800c720 fetch 1 ,mem_24g_datalen 
+06a1 2feffe05 isolate1 5 ,pdata 
 
 p_g24_transmit_prep_pdu:
-067e 1fe9fe00 lshift3 pdata ,pdata 
-067f 20408690 call p_g24_tx_transmit_data_prep_ext_len ,true 
-0680 6808c71f fetcht 1 ,mem_24g_pid 
-0681 18410403 and temp ,0x03 ,temp 
-0682 18438400 lshift temp ,temp 
-0683 9841fe00 ior temp ,pdata 
-0684 e0a08000 istore 1 ,contw 
-0685 6800c720 fetch 1 ,mem_24g_datalen 
-0686 98007200 iforce loopcnt 
-0687 d8c046bc arg mem_24g_txbuf ,contr 
-0688 20407f01 call memcpy 
-0689 c6960000 rtnmark0 mark_24g_rxmode 
-068a 6800c7c5 fetch 1 ,mem_rssi_hex 
-068b e0a08000 istore 1 ,contw 
-068c 6800c722 fetch 1 ,mem_24g_txlen 
-068d 1fe0fe01 increase 1 ,pdata 
-068e 6000c722 store 1 ,mem_24g_txlen 
-068f 20600000 rtn 
+06a2 1fe9fe00 lshift3 pdata ,pdata 
+06a3 204086b4 call p_g24_tx_transmit_data_prep_ext_len ,true 
+06a4 6808c71f fetcht 1 ,mem_24g_pid 
+06a5 18410403 and temp ,0x03 ,temp 
+06a6 18438400 lshift temp ,temp 
+06a7 9841fe00 ior temp ,pdata 
+06a8 e0a08000 istore 1 ,contw 
+06a9 6800c720 fetch 1 ,mem_24g_datalen 
+06aa 98007200 iforce loopcnt 
+06ab d8c046bc arg mem_24g_txbuf ,contr 
+06ac 20407f01 call memcpy 
+06ad c6960000 rtnmark0 mark_24g_rxmode 
+06ae 6800c7c5 fetch 1 ,mem_rssi_hex 
+06af e0a08000 istore 1 ,contw 
+06b0 6800c722 fetch 1 ,mem_24g_txlen 
+06b1 1fe0fe01 increase 1 ,pdata 
+06b2 6000c722 store 1 ,mem_24g_txlen 
+06b3 20600000 rtn 
 
 p_g24_tx_transmit_data_prep_ext_len:
-0690 79207e00 set1 0 ,pdata 
-0691 20600000 rtn 
-0692 6800c720 fetch 1 ,mem_24g_datalen 
-0693 1fe9fe00 lshift3 pdata ,pdata 
-0694 6808c71f fetcht 1 ,mem_24g_pid 
-0695 18410403 and temp ,0x03 ,temp 
-0696 18438400 lshift temp ,temp 
-0697 9841fe00 ior temp ,pdata 
-0698 6808c75c fetcht 1 ,mem_24g_no_ack 
-0699 9840fe00 iadd temp ,pdata 
-069a e0a08000 istore 1 ,contw 
-069b 6800c720 fetch 1 ,mem_24g_datalen 
-069c 98007200 iforce loopcnt 
-069d d8c046bc arg mem_24g_txbuf ,contr 
-069e 20207f01 branch memcpy 
+06b4 79207e00 set1 0 ,pdata 
+06b5 20600000 rtn 
 
 p_g24_ch:
-069f 6808c72b fetcht 1 ,mem_24g_current_ch_number 
-06a0 204006a3 call p_g24_ch_map_size 
-06a1 6008c72b storet 1 ,mem_24g_current_ch_number 
-06a2 20600000 rtn 
+06b6 6808c72b fetcht 1 ,mem_24g_current_ch_number 
+06b7 204006ba call p_g24_ch_map_size 
+06b8 6008c72b storet 1 ,mem_24g_current_ch_number 
+06b9 20600000 rtn 
 
 p_g24_ch_map_size:
-06a3 204006a7 call p_g24_ch_calc 
-06a4 18408401 increase 1 ,temp 
-06a5 18410403 and_into 3 ,temp 
-06a6 20600000 rtn 
+06ba 204006be call p_g24_ch_calc 
+06bb 18408401 increase 1 ,temp 
+06bc 18410403 and_into 3 ,temp 
+06bd 20600000 rtn 
 
 p_g24_ch_calc:
-06a7 6800c748 fetch 1 ,mem_24g_addr 
-06a8 1fe17e03 and_into 0x03 ,pdata 
-06a9 1fefa204 mul32 pdata ,4 ,rega 
-06aa 58004731 setarg mem_24g_ch_map1 
-06ab 9a20fe00 iadd rega ,pdata 
-06ac 98408c00 iadd temp ,contr 
-06ad e8c08000 ifetch 1 ,contr 
-06ae 6000c72a store 1 ,mem_24g_ch 
-06af 20600000 rtn 
+06be 6800c748 fetch 1 ,mem_24g_addr 
+06bf 1fe17e03 and_into 0x03 ,pdata 
+06c0 1fefa204 mul32 pdata ,4 ,rega 
+06c1 58004731 setarg mem_24g_ch_map1 
+06c2 9a20fe00 iadd rega ,pdata 
+06c3 98408c00 iadd temp ,contr 
+06c4 e8c08000 ifetch 1 ,contr 
+06c5 6000c72a store 1 ,mem_24g_ch 
+06c6 20600000 rtn 
 
 p_g24_prep:
-06b0 7844fc00 disable enable_crc 
-06b1 7843fc00 disable enable_white 
-06b2 58555555 setarg 0x555555 
-06b3 98001e00 iforce crc24_init 
-06b4 6800c72a fetch 1 ,mem_24g_ch 
-06b5 1fed8400 reverse pdata ,temp 
-06b6 79200401 set1 1 ,temp 
-06b7 18431c00 rshift temp ,white_init 
-06b8 20600000 rtn 
+06c7 7844fc00 disable enable_crc 
+06c8 7843fc00 disable enable_white 
+06c9 58555555 setarg 0x555555 
+06ca 98001e00 iforce crc24_init 
+06cb 6800c72a fetch 1 ,mem_24g_ch 
+06cc 1fed8400 reverse pdata ,temp 
+06cd 79200401 set1 1 ,temp 
+06ce 18431c00 rshift temp ,white_init 
+06cf 20600000 rtn 
 
 p_g24_receive_packet:
-06b9 204053c4 call le_enable 
-06ba 68024748 fetch 4 ,mem_24g_addr 
-06bb 98001200 iforce access 
-06bc 20402918 call set_sync_on 
-06bd 6808c72a fetcht 1 ,mem_24g_ch 
-06be 2040291f call set_freq_rx 
-06bf 58000500 setarg param_pll_setup 
-06c0 20402a8f call sleep 
-06c1 20402924 call rf_rx_enable 
+06d0 204053c4 call le_enable 
+06d1 68024748 fetch 4 ,mem_24g_addr 
+06d2 98001200 iforce access 
+06d3 20402918 call set_sync_on 
+06d4 6808c72a fetcht 1 ,mem_24g_ch 
+06d5 2040291f call set_freq_rx 
+06d6 58000500 setarg param_pll_setup 
+06d7 20402a8f call sleep 
+06d8 20402924 call rf_rx_enable 
 
 p_g24_receive_rxon:
-06c2 204006b0 call p_g24_prep 
-06c3 7857fc00 disable user3 
-06c4 7826fc00 enable decode_fec0 
-06c5 7830fc00 enable is_rx 
-06c6 78507c00 disable is_tx 
-06c7 78287c00 enable swfine 
-06c8 68014723 fetch 2 ,mem_24g_rx_window 
-06c9 98003600 iforce stop_watch 
-06ca 37c18400 correlate null ,timeout 
-06cb 242c06fc nbranch p_g24_sync_timeout ,sync 
-06cc 7823fc00 enable enable_white 
-06cd 7824fc00 enable enable_crc 
-06ce 204006f9 call p_g24_receive_byte 
-06cf 6000c76a store 1 ,mem_24g_get_syncword_crc8 
-06d0 6808c769 fetcht 1 ,mem_24g_syncword_crc8 
-06d1 98467c00 isub temp ,null 
-06d2 242286fe nbranch p_g24_end_of_packet ,zero 
-06d3 204006f9 call p_g24_receive_byte 
-06d4 6000c69a store 1 ,mem_24g_rxbuf 
-06d5 c51606da bmark1 mark_24g_rxmode ,p_g24_receive_skip 
-06d6 6800c69a fetch 1 ,mem_24g_rxbuf 
-06d7 6808c721 fetcht 1 ,mem_24g_data_type 
-06d8 a8400e00 icompare bits_data ,temp 
-06d9 242086fe nbranch p_g24_end_of_packet ,true 
+06d9 204006c7 call p_g24_prep 
+06da 7857fc00 disable user3 
+06db 7826fc00 enable decode_fec0 
+06dc 7830fc00 enable is_rx 
+06dd 78507c00 disable is_tx 
+06de 78287c00 enable swfine 
+06df 68014723 fetch 2 ,mem_24g_rx_window 
+06e0 98003600 iforce stop_watch 
+06e1 37c18400 correlate null ,timeout 
+06e2 242c0713 nbranch p_g24_sync_timeout ,sync 
+06e3 7823fc00 enable enable_white 
+06e4 7824fc00 enable enable_crc 
+06e5 20400710 call p_g24_receive_byte 
+06e6 6000c76a store 1 ,mem_24g_get_syncword_crc8 
+06e7 6808c769 fetcht 1 ,mem_24g_syncword_crc8 
+06e8 98467c00 isub temp ,null 
+06e9 24228715 nbranch p_g24_end_of_packet ,zero 
+06ea 20400710 call p_g24_receive_byte 
+06eb 6000c69a store 1 ,mem_24g_rxbuf 
+06ec c51606f1 bmark1 mark_24g_rxmode ,p_g24_receive_skip 
+06ed 6800c69a fetch 1 ,mem_24g_rxbuf 
+06ee 6808c721 fetcht 1 ,mem_24g_data_type 
+06ef a8400e00 icompare bits_data ,temp 
+06f0 24208715 nbranch p_g24_end_of_packet ,true 
 
 p_g24_receive_skip:
-06da 204006f9 call p_g24_receive_byte 
-06db e0a08000 istore 1 ,contw 
-06dc 1fe97e00 rshift3 pdata ,pdata 
-06dd 1fe1721f and pdata ,0x1f ,loopcnt 
-06de 202286e2 branch p_g24rx_nopayload ,zero 
+06f1 20400710 call p_g24_receive_byte 
+06f2 e0a08000 istore 1 ,contw 
+06f3 1fe97e00 rshift3 pdata ,pdata 
+06f4 1fe1721f and pdata ,0x1f ,loopcnt 
+06f5 202286f9 branch p_g24rx_nopayload ,zero 
 
 p_g24rx_loop:
-06df 204006f9 call p_g24_receive_byte 
-06e0 e0a08000 istore 1 ,contw 
-06e1 c20006df loop p_g24rx_loop 
+06f6 20400710 call p_g24_receive_byte 
+06f7 e0a08000 istore 1 ,contw 
+06f8 c20006f6 loop p_g24rx_loop 
 
 p_g24rx_nopayload:
-06e2 c51606e7 bmark1 mark_24g_rxmode ,p_g24rx_crc 
-06e3 18a22200 copy contw ,rega 
-06e4 204006f9 call p_g24_receive_byte 
-06e5 6000c7e1 store 1 ,mem_rssi_hex_received 
-06e6 1a220a00 copy rega ,contw 
+06f9 c51606fe bmark1 mark_24g_rxmode ,p_g24rx_crc 
+06fa 18a22200 copy contw ,rega 
+06fb 20400710 call p_g24_receive_byte 
+06fc 6000c7e1 store 1 ,mem_rssi_hex_received 
+06fd 1a220a00 copy rega ,contw 
 
 p_g24rx_crc:
-06e7 09800018 parse demod ,bucket ,24 
-06e8 78287c00 enable swfine 
-06e9 db600664 arg param_sifs ,stop_watch 
-06ea 1fef7e00 rshift32 pdata ,pdata 
-06eb 1ff17e00 rshift16 pdata ,pdata 
-06ec e0a18000 istore 3 ,contw 
-06ed 280ffe2c isolate1 mark_24g_rxmode ,mark 
-06ee 2040a9bb call save_rssi ,true 
-06ef 202306fe branch p_g24_end_of_packet ,crc_failed 
-06f0 7837fc00 enable user3 
-06f1 68008017 fetch 1 ,mem_last_freq 
-06f2 1fe0a200 add pdata ,0 ,rega 
-06f3 20402981 call rf_write_freq 
-06f4 7846fc00 disable decode_fec0 
-06f5 20402918 call set_sync_on 
-06f6 c6160000 rtnmark1 mark_24g_rxmode 
-06f7 6800c7e1 fetch 1 ,mem_rssi_hex_received 
-06f8 20200644 branch p_rssi_signal 
+06fe 09800018 parse demod ,bucket ,24 
+06ff 78287c00 enable swfine 
+0700 db600664 arg param_sifs ,stop_watch 
+0701 1fef7e00 rshift32 pdata ,pdata 
+0702 1ff17e00 rshift16 pdata ,pdata 
+0703 e0a18000 istore 3 ,contw 
+0704 280ffe2c isolate1 mark_24g_rxmode ,mark 
+0705 2040a9bb call save_rssi ,true 
+0706 20230715 branch p_g24_end_of_packet ,crc_failed 
+0707 7837fc00 enable user3 
+0708 68008017 fetch 1 ,mem_last_freq 
+0709 1fe0a200 add pdata ,0 ,rega 
+070a 20402981 call rf_write_freq 
+070b 7846fc00 disable decode_fec0 
+070c 20402918 call set_sync_on 
+070d c6160000 rtnmark1 mark_24g_rxmode 
+070e 6800c7e1 fetch 1 ,mem_rssi_hex_received 
+070f 20200668 branch p_rssi_signal 
 
 p_g24_receive_byte:
-06f9 09800008 parse demod ,bucket ,8 
-06fa 19897e00 rshift3 pwindow ,pdata 
-06fb 20600000 rtn 
+0710 09800008 parse demod ,bucket ,8 
+0711 19897e00 rshift3 pwindow ,pdata 
+0712 20600000 rtn 
 
 p_g24_sync_timeout:
-06fc 280ffe2c isolate1 mark_24g_rxmode ,mark 
-06fd 20408636 call p_rssi_noise ,true 
+0713 280ffe2c isolate1 mark_24g_rxmode ,mark 
+0714 2040865a call p_rssi_noise ,true 
 
 p_g24_end_of_packet:
-06fe 784dfc00 disable encode_fec1 
-06ff 2020264d branch end_of_packet 
+0715 784dfc00 disable encode_fec1 
+0716 2020264d branch end_of_packet 
 
 p_g24_set_freq_tx:
-0700 20402918 call set_sync_on 
-0701 6808c72a fetcht 1 ,mem_24g_ch 
-0702 20202933 branch set_freq_tx 
+0717 20402918 call set_sync_on 
+0718 6808c72a fetcht 1 ,mem_24g_ch 
+0719 20202933 branch set_freq_tx 
 
 p_g24_transmit:
-0703 204053c4 call le_enable 
-0704 68024748 fetch 4 ,mem_24g_addr 
-0705 98001200 iforce access 
-0706 204006b0 call p_g24_prep 
-0707 20400700 call p_g24_set_freq_tx 
-0708 79202a00 set1 txgfsk ,radio_ctrl 
-0709 782efc00 enable encode_fec0 
-070a 78307c00 enable is_tx 
-070b 7850fc00 disable is_rx 
-070c 19317e00 rshift16 access ,pdata 
-070d 1fecfe00 rshift8 pdata ,pdata 
-070e 1ff1fe00 rshift4 pdata ,pdata 
-070f 08008628 inject mod ,40 
-0710 7823fc00 enable enable_white 
-0711 7824fc00 enable enable_crc 
-0712 6800c722 fetch 1 ,mem_24g_txlen 
-0713 98007200 iforce loopcnt 
-0714 d8c046dc arg mem_24g_txpayload ,contr 
+071a 204053c4 call le_enable 
+071b 68024748 fetch 4 ,mem_24g_addr 
+071c 98001200 iforce access 
+071d 204006c7 call p_g24_prep 
+071e 20400717 call p_g24_set_freq_tx 
+071f 79202a00 set1 txgfsk ,radio_ctrl 
+0720 782efc00 enable encode_fec0 
+0721 78307c00 enable is_tx 
+0722 7850fc00 disable is_rx 
+0723 19317e00 rshift16 access ,pdata 
+0724 1fecfe00 rshift8 pdata ,pdata 
+0725 1ff1fe00 rshift4 pdata ,pdata 
+0726 08008628 inject mod ,40 
+0727 7823fc00 enable enable_white 
+0728 7824fc00 enable enable_crc 
+0729 6800c722 fetch 1 ,mem_24g_txlen 
+072a 98007200 iforce loopcnt 
+072b d8c046dc arg mem_24g_txpayload ,contr 
 
 p_g24tr_loop:
-0715 e8c08000 ifetch 1 ,contr 
-0716 08008608 inject mod ,8 
-0717 c2000715 loop p_g24tr_loop 
-0718 c5960719 bmark0 mark_24g_rxmode ,p_g24tr_crc 
+072c e8c08000 ifetch 1 ,contr 
+072d 08008608 inject mod ,8 
+072e c200072c loop p_g24tr_loop 
+072f c5960730 bmark0 mark_24g_rxmode ,p_g24tr_crc 
 
 p_g24tr_crc:
-0719 78247c00 enable enable_parity 
-071a 08008618 inject mod ,24 
-071b 78447c00 disable enable_parity 
-071c 37d38200 until null ,tx_clear 
-071d 20000064 nop 100 
-071e 784efc00 disable encode_fec0 
-071f 784dfc00 disable encode_fec1 
-0720 20600000 rtn 
+0730 78247c00 enable enable_parity 
+0731 08008618 inject mod ,24 
+0732 78447c00 disable enable_parity 
+0733 37d38200 until null ,tx_clear 
+0734 20000064 nop 100 
+0735 784efc00 disable encode_fec0 
+0736 784dfc00 disable encode_fec1 
+0737 20600000 rtn 
               org 0x2000
 
 start:
Index: program/patch.prog
===================================================================
--- /branch/mouse_project/TestTools/1021s_quick_connector_ai_mingjian/program/patch.prog	(revision 7372)
+++ /branch/mouse_project/TestTools/1021s_quick_connector_ai_mingjian/program/patch.prog	(working copy)
@@ -420,7 +420,7 @@
 	rtnbit1 2	
 	arg mem_usb_in_data,rega
 	call queue_pop
-	nrtn user
+	nrtn user	
 	arg 32,loopcnt
 	arg mem_usb_in_data,contr
 	branch usb_tx_ep2
@@ -2019,6 +2019,8 @@
 	beq 0x01,p_g24_data_type1	//mouse
 	beq 0x02,p_g24_data_type2	//keyboard
 	beq 0xff,p_g24_data_attemp	//reconn packet
+	bbit1 DATATYPE_AI_KEY,p_g24_data_type1
+	bbit1 DATATYPE_AUDIO,p_g24_data_type1
 p_g24_rx_interrupt_clear:
 	arg mem_24g_rxbuf,contw
 	arg 66,loopcnt
@@ -2053,6 +2055,29 @@
 	isolate1 bit_hop,temp
 	setflag true,0,pdata
 	store 1,mem_24g_hop_packet
+	
+p_dongle_g24_mouse:
+	fetch 1,mem_24g_rxdata_temp+2
+	bbit1 DATATYPE_AI_KEY,p_g24_data_receive_ai_key_data
+	bbit1 DATATYPE_AUDIO,p_dongle_g24_mouse_audio_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+2,contw
+	arg mem_24g_rxdata_temp+10,contr
+	call memcpy
+	fetch 1,mem_24g_rxdata_temp+2
+	bbit1 DATATYPE_AI_KEY,p_g24_data_receive_ai_key_data
+	bbit1 DATATYPE_AUDIO,p_dongle_g24_mouse_audio_data
+	rtn
+
+p_dongle_g24_mouse_data:
 	call p_usb_ms_data_header
 	fetch 7,mem_24g_rxdata_temp+3	//key
 	store 7,mem_usb_in_data+4
@@ -2062,6 +2087,26 @@
 	call p_g24_ms_disable_blank_data_forcibly,blank
 	branch p_usb_in_data_push
 
+p_g24_data_receive_ai_key_data:
+	jam PC_REPORT_ID,mem_usb_in_data
+	jam PC_EVT_TYPE,mem_usb_in_data+1
+	jam PC_EVT_AI_KEY_UPLOAD,mem_usb_in_data+2
+	jam PC_EVT_MS_DATA_LEN_4B,mem_usb_in_data+3
+	fetch 4,mem_24g_rxdata_temp+3	//key
+	store 4,mem_usb_in_data+4
+	branch p_usb_in_data_push
+
+p_dongle_g24_mouse_audio_data:
+	jam PC_REPORT_ID,mem_usb_in_data
+	jam PC_EVT_TYPE,mem_usb_in_data+1
+	jam PC_EVT_AUDIO_UPLOAD,mem_usb_in_data+2
+	jam PC_EVT_MS_DATA_LEN_20B,mem_usb_in_data+3
+	arg 20,loopcnt
+	arg mem_24g_rxdata_temp+3,contr
+	arg mem_usb_in_data+4,contw
+	call memcpy
+	branch p_usb_in_data_push
+
 p_g24_ms_enable_blank_data_forcibly:
 	jam 1,mem_24g_ms_blank_data_enable
 	setarg TIMER_NEW_MS_BLANK_DELAY
@@ -2332,22 +2377,6 @@
 	set1 0,pdata
 	rtn
 
-
-	fetch 1,mem_24g_datalen
-	lshift3 pdata,pdata
-	fetcht 1,mem_24g_pid
-	and temp,0x03,temp
-	lshift temp,temp
-	ior temp,pdata
-	fetcht 1,mem_24g_no_ack
-	iadd temp,pdata
-	istore 1,contw
-//prepare payload data
-	fetch 1,mem_24g_datalen
-	iforce loopcnt
-	arg mem_24g_txbuf,contr
-	branch memcpy
-
 p_g24_ch:
 	fetcht 1,mem_24g_current_ch_number
 	call p_g24_ch_map_size
