Index: output/eeprom.dat
===================================================================
--- /YC1308AC/branch/usb/output/eeprom.dat	(revision 424)
+++ /YC1308AC/branch/usb/output/eeprom.dat	(working copy)
@@ -2,8 +2,8 @@
 02
 aa
 55
-d2
-00
+1a
+01
 c2
 84
 00
@@ -11,19 +11,23 @@
 c0
 00
 00
-06
+07
 c0
 45
 80
-2e
+2f
 c0
 57
 00
-32
+33
 20
 20
 13
 7c
+c0
+48
+00
+35
 20
 20
 13
@@ -35,7 +39,7 @@
 20
 40
 00
-09
+0a
 20
 20
 08
@@ -83,7 +87,7 @@
 20
 20
 80
-17
+18
 6f
 e0
 c9
@@ -155,7 +159,7 @@
 20
 40
 00
-27
+28
 20
 20
 36
@@ -175,7 +179,7 @@
 20
 40
 00
-2c
+2d
 20
 20
 25
@@ -212,8 +216,76 @@
 20
 36
 20
-70
+79
+3f
+80
+23
+6f
+e0
+8b
+59
+1f
+e1
+7e
+80
+c0
+00
+00
+3a
+20
+20
+7a
+34
+6f
+e0
+8b
+59
+1f
+f1
+fe
+00
+1f
+e3
+7e
+00
+1f
+e1
+7e
+03
+c0
+00
+7a
+53
+c0
+00
+80
+41
+20
+20
+7a
+43
+6f
+e0
+8b
+5a
+c0
+04
+80
+44
+20
+20
+7a
+5c
+20
+00
 3a
+98
+20
+20
+7b
+d8
+31
+fd
 aa
 55
 40
@@ -270,7 +342,7 @@
 00
 00
 00
-00
+01
 00
 00
 00
@@ -351,5 +423,11 @@
 ee
 41
 00
-be
-bf
+55
+aa
+aa
+55
+1b
+15
+fa
+e9
Index: output/program.lis
===================================================================
--- /YC1308AC/branch/usb/output/program.lis	(revision 424)
+++ /YC1308AC/branch/usb/output/program.lis	(working copy)
@@ -1,75 +1,101 @@
               include "bt_format "
               org 0x0000
 0000 c2840005 bbit1 8 ,pf_patch_ext 
-0001 c0000006 beq patch00_0 ,p_soft_reset 
-0002 c045802e beq patch11_3 ,p_initialize_radio_cont 
-0003 c0570032 beq patch15_6 ,p_app_init 
+0001 c0000007 beq patch00_0 ,p_soft_reset 
+0002 c045802f beq patch11_3 ,p_initialize_radio_cont 
+0003 c0570033 beq patch15_6 ,p_app_init 
 0004 2020137c branch loop 
 
 pf_patch_ext:
-0005 2020137c branch loop 
+0005 c0480035 beq patch32_0 ,p_usb_class_type 
+0006 2020137c branch loop 
 
 p_soft_reset:
-0006 20800000 clear_stack 
-0007 20400009 call p_app_param_init 
-0008 20200804 branch soft_reset + 3 
+0007 20800000 clear_stack 
+0008 2040000a call p_app_param_init 
+0009 20200804 branch soft_reset + 3 
 
 p_app_param_init:
-0009 20758000 rtn wake 
-000a 20405c15 call app_read_efuse_sys_config 
-000b 20405c1e call app_read_efuse_dig_aon_vsel 
-000c 20405c24 call app_read_efuse_syn_afc_cfg1 
-000d 20405c29 call app_read_efuse_rf_ldo_cfg1 
-000e 20405c2f call app_read_efuse_rc_cal 
-000f 20405c33 call app_read_efuse_agc 
+000a 20758000 rtn wake 
+000b 20405c15 call app_read_efuse_sys_config 
+000c 20405c1e call app_read_efuse_dig_aon_vsel 
+000d 20405c24 call app_read_efuse_syn_afc_cfg1 
+000e 20405c29 call app_read_efuse_rf_ldo_cfg1 
+000f 20405c2f call app_read_efuse_rc_cal 
+0010 20405c33 call app_read_efuse_agc 
 
 p_dongle_default_init:
-0010 20403649 call dongle_xtal_select 
-0011 6fe0c909 fetch 1 ,mem_dg_sys_config 
-0012 2feffe05 isolate1 dg_enable_eeprom ,pdata 
-0013 20208017 branch p_dongle_default_no_eeprom ,true 
-0014 6fe0c909 fetch 1 ,mem_dg_sys_config 
-0015 2feffe06 isolate1 dg_enable_new_chmap ,pdata 
-0016 2040a30e call g24_chamap_param_update ,true 
+0011 20403649 call dongle_xtal_select 
+0012 6fe0c909 fetch 1 ,mem_dg_sys_config 
+0013 2feffe05 isolate1 dg_enable_eeprom ,pdata 
+0014 20208018 branch p_dongle_default_no_eeprom ,true 
+0015 6fe0c909 fetch 1 ,mem_dg_sys_config 
+0016 2feffe06 isolate1 dg_enable_new_chmap ,pdata 
+0017 2040a30e call g24_chamap_param_update ,true 
 
 p_dongle_default_no_eeprom:
-0017 6fe0c909 fetch 1 ,mem_dg_sys_config 
-0018 1fe17e1f and_into 0x1f ,pdata 
-0019 67e0c1e8 store 1 ,mem_tx_power 
-001a 20403100 call app_sys_param_init 
-001b 70487dff jam 0xff ,mem_rssi_buff_index 
-001c 58000c4b setarg mem_dg_rssi_noise_buffer 
-001d 67e148e1 store 2 ,mem_rssi_noise_buffer_ptr 
-001e 58000d4b setarg mem_dg_rssi_noise_dg_buffer 
-001f 67e148e3 store 2 ,mem_rssi_noise_self_buffer_ptr 
-0020 58000e4b setarg mem_dg_rssi_noise_ms_buffer 
-0021 67e148e5 store 2 ,mem_rssi_noise_device1_buffer_ptr 
-0022 58000f4b setarg mem_dg_rssi_noise_kb_buffer 
-0023 67e148e7 store 2 ,mem_rssi_noise_device2_buffer_ptr 
-0024 20402322 call g24_enable_1m 
-0025 20400027 call p_g24_receive_init 
-0026 20203642 branch dongle_default_no_eeprom_next 
+0018 6fe0c909 fetch 1 ,mem_dg_sys_config 
+0019 1fe17e1f and_into 0x1f ,pdata 
+001a 67e0c1e8 store 1 ,mem_tx_power 
+001b 20403100 call app_sys_param_init 
+001c 70487dff jam 0xff ,mem_rssi_buff_index 
+001d 58000c4b setarg mem_dg_rssi_noise_buffer 
+001e 67e148e1 store 2 ,mem_rssi_noise_buffer_ptr 
+001f 58000d4b setarg mem_dg_rssi_noise_dg_buffer 
+0020 67e148e3 store 2 ,mem_rssi_noise_self_buffer_ptr 
+0021 58000e4b setarg mem_dg_rssi_noise_ms_buffer 
+0022 67e148e5 store 2 ,mem_rssi_noise_device1_buffer_ptr 
+0023 58000f4b setarg mem_dg_rssi_noise_kb_buffer 
+0024 67e148e7 store 2 ,mem_rssi_noise_device2_buffer_ptr 
+0025 20402322 call g24_enable_1m 
+0026 20400028 call p_g24_receive_init 
+0027 20203642 branch dongle_default_no_eeprom_next 
 
 p_g24_receive_init:
-0027 79200027 set1 mark_24g_rxmode ,mark 
-0028 6fe0c1e8 fetch 1 ,mem_tx_power 
-0029 67e0c8cc store 1 ,mem_tx_power_temp 
-002a 2040002c call p_g24_rx_window_init 
-002b 202025ed branch rssi_receiver_buff_init 
+0028 79200027 set1 mark_24g_rxmode ,mark 
+0029 6fe0c1e8 fetch 1 ,mem_tx_power 
+002a 67e0c8cc store 1 ,mem_tx_power_temp 
+002b 2040002d call p_g24_rx_window_init 
+002c 202025ed branch rssi_receiver_buff_init 
 
 p_g24_rx_window_init:
-002c d8406978 arg 0x6978 ,temp 
-002d 2020231b branch g24_rx_window_init + 1 
+002d d8406978 arg 0x6978 ,temp 
+002e 2020231b branch g24_rx_window_init + 1 
 
 p_initialize_radio_cont:
-002e 708a0e0b jam 0x0b ,core_rf_ldo_cfg2 
-002f 708a0f05 jam 0x05 ,core_rf_ldo_cfg3 
-0030 708a8390 jam 0x90 ,core_syn_pfd_lkd_cfg 
-0031 20201256 branch initialize_radio_cont + 1 
+002f 708a0e0b jam 0x0b ,core_rf_ldo_cfg2 
+0030 708a0f05 jam 0x05 ,core_rf_ldo_cfg3 
+0031 708a8390 jam 0x90 ,core_syn_pfd_lkd_cfg 
+0032 20201256 branch initialize_radio_cont + 1 
 
 p_app_init:
-0032 20406df3 call enable_authrom 
-0033 20203620 branch dongle_init 
+0033 20406df3 call enable_authrom 
+0034 20203620 branch dongle_init 
+
+p_usb_class_type:
+0035 793f8023 set0 mark_isstr ,mark 
+0036 6fe08b59 fetch 1 ,mem_usb_setup_bmrequesttype 
+0037 1fe17e80 and_into 0x80 ,pdata 
+0038 c000003a beq out_device ,p_usb_out_device 
+0039 20207a34 branch usb_class_type + 4 
+
+p_usb_out_device:
+003a 6fe08b59 fetch 1 ,mem_usb_setup_bmrequesttype 
+003b 1ff1fe00 rshift4 pdata ,pdata 
+003c 1fe37e00 rshift pdata ,pdata 
+003d 1fe17e03 and_into 0x03 ,pdata 
+003e c0007a53 beq standard_req ,usb_out_standard_req 
+003f c0008041 beq class_req ,p_usb_out_class_req 
+0040 20207a43 branch usb_out_device + 4 
+
+p_usb_out_class_req:
+0041 6fe08b5a fetch 1 ,mem_usb_setup_brequest 
+0042 c0048044 beq set_report ,p_usb_set_report 
+0043 20207a5c branch usb_out_class_req + 1 
+
+p_usb_set_report:
+0044 20003a98 nop 15000 
+0045 20207bd8 branch usb_set_report 
               org 0x800
 
 start:
Index: program/patch.prog
===================================================================
--- /YC1308AC/branch/usb/program/patch.prog	(revision 424)
+++ /YC1308AC/branch/usb/program/patch.prog	(working copy)
@@ -6,6 +6,7 @@
 	branch loop
 
 pf_patch_ext:
+	beq patch32_0,p_usb_class_type
 	branch loop
 
 /********************rx window patch************************/
@@ -74,4 +75,30 @@
 	branch dongle_init
 
 
+/************************keyboard led patch**********/
+p_usb_class_type:
+	set0 mark_isstr,mark
+	fetch 1,mem_usb_setup_bmRequestType
+	and_into 0x80,pdata
+	beq OUT_DEVICE,p_usb_out_device
+	branch usb_class_type+4
+
+p_usb_out_device:
+	fetch 1,mem_usb_setup_bmRequestType
+	rshift4 pdata,pdata
+	rshift pdata,pdata
+	and_into 0x03,pdata
+	beq STANDARD_REQ,usb_out_standard_req
+	beq CLASS_REQ,p_usb_out_class_req
+	branch usb_out_device+4
+
+p_usb_out_class_req:
+	fetch 1,mem_usb_setup_bRequest
+	beq SET_REPORT,p_usb_set_report
+	branch usb_out_class_req+1
+
+p_usb_set_report:
+	nop 15000	//delay 1ms
+	branch usb_set_report
+
 
