Index: d.bat
===================================================================
--- /YC1308AC/branch/usb/d.bat	(revision 1169)
+++ /YC1308AC/branch/usb/d.bat	(working copy)
@@ -1,5 +1,6 @@
 call do.bat eep
 e pu
+e 8043 00
 e 8070 00000000000000000000
 e 807a 00000000000000000000
 e 8070 3e6c6d   
Index: format/app_dongle.format
===================================================================
--- /YC1308AC/branch/usb/format/app_dongle.format	(revision 1169)
+++ /YC1308AC/branch/usb/format/app_dongle.format	(working copy)
@@ -54,6 +54,23 @@
 1 mem_g24_ota_version_timer
 1 mem_g24_ota_txbuf_len
 31 mem_g24_ota_txbuf
+
+1 mem_g24_reportrate_count
+1 mem_g24_reportrate_count2
+1 mem_g24_reportrate_count3
+6 mem_g24_reportrate_lasttime
+6 mem_g24_reportrate_lasttime2
+6 mem_g24_reportrate_lasttime3
+
+4 mem_g24_reportrate_detatime
+4 mem_g24_reportrate_detatime3
+
+1 mem_g24_reportrate_check_count
+3 mem_24g_tsniff
+7 mem_g24_tx_last
+1 mem_g24_reportrate_add
+1 mem_g24_reportrate_continue
+0 mem_dongle_end
 )
 
 
Index: output/eeprom.dat
===================================================================
--- /YC1308AC/branch/usb/output/eeprom.dat	(revision 1169)
+++ /YC1308AC/branch/usb/output/eeprom.dat	(working copy)
@@ -2,8 +2,8 @@
 02
 aa
 55
-1a
-02
+4e
+04
 c2
 84
 00
@@ -11,43 +11,51 @@
 c0
 41
 80
-1c
+1e
 c0
 45
 80
-12
+14
 c0
 46
 00
-71
+74
 c0
 57
 00
-23
+25
 c0
 5d
 80
-33
+35
 c0
 5e
 00
-35
+37
 20
 20
 13
 7c
 c0
+47
+fa
+26
+c0
+48
+fa
+7e
+c0
 48
 00
-56
+5f
 c0
 4a
 80
-66
+89
 c0
 54
 80
-0c
+0e
 20
 20
 13
@@ -162,8 +170,8 @@
 89
 58
 00
-37
-01
+00
+8f
 67
 e1
 48
@@ -211,7 +219,7 @@
 20
 40
 00
-31
+33
 20
 20
 36
@@ -226,12 +234,40 @@
 00
 20
 40
+00
+dd
+20
+40
+00
+e3
+6f
+e0
+8b
+f9
+2f
+ef
+fe
+02
+24
+40
+80
+b8
+6f
+e0
+8b
+f9
+2f
+ef
+fe
+02
 24
+40
+a4
 91
 20
 40
 00
-3a
+43
 20
 20
 36
@@ -243,11 +279,11 @@
 20
 40
 00
-3d
+46
 20
 20
 00
-49
+52
 6f
 e0
 c9
@@ -363,7 +399,7 @@
 c0
 00
 00
-5b
+64
 20
 20
 7a
@@ -387,7 +423,7 @@
 c0
 00
 80
-61
+6a
 20
 20
 7a
@@ -399,7 +435,7 @@
 c0
 04
 80
-64
+6d
 20
 20
 7a
@@ -412,30 +448,6 @@
 20
 7b
 d8
-6f
-e0
-8b
-f9
-20
-7a
-00
-00
-6f
-f0
-8c
-24
-1f
-e1
-7e
-0f
-24
-3a
-7c
-a4
-20
-20
-7c
-59
 2f
 ef
 fe
@@ -503,7 +515,7 @@
 20
 40
 00
-6c
+6f
 1f
 e6
 7e
@@ -527,7 +539,7 @@
 24
 20
 80
-84
+87
 58
 00
 00
@@ -540,65 +552,617 @@
 20
 12
 91
-01
-02
-aa
-55
-40
+6f
+e0
+8b
+f9
+20
+7a
 00
 00
+6f
+f0
+8c
+24
+1f
+e1
+7e
+0f
+24
+3a
+7c
+a4
+20
+20
+7c
+59
+20
+40
+37
+01
+6f
+e3
+c8
+94
+67
+e3
+c9
+89
+20
 40
 00
+95
+20
+40
 00
+9b
+20
+20
 00
+a2
+6f
+e0
+c9
+68
+1f
+e0
+fe
+01
+67
+e0
+c9
+68
+1b
+22
+7e
 00
+67
+e3
+49
+6b
+20
+20
 00
+ff
+6f
+e0
+c9
+69
+1f
+e0
+fe
+01
+67
+e0
+c9
+69
+c1
+80
+80
 00
+1b
+22
+7e
 00
+67
+e3
+49
+71
+20
+60
 00
 00
+6f
+e0
+c9
+6a
+1f
+e0
+fe
+01
+67
+e0
+c9
+6a
+20
+60
 00
 00
+6f
+e0
+c9
+69
+c1
+be
+80
 00
+70
+49
+69
 00
+68
+4b
+49
+71
+1b
+22
+7e
 00
-00
-00
-08
-18
-00
-00
-00
+20
 40
+7d
+95
+1f
+e2
+04
 00
-18
+58
+80
+2c
+80
+98
+46
+7c
 00
+20
+21
 00
+b4
+6f
+e1
+c9
+86
+24
+7a
 00
 00
+58
+01
+77
 00
+20
+20
 00
+b5
+58
 00
+bb
+80
+67
+e1
+c9
+86
+20
+40
+01
+04
+20
+20
+01
+0a
+6f
+e1
+c9
+86
+20
+7a
 00
 00
+68
+48
+c9
+85
+98
+4f
+de
 00
+1f
+f1
+fe
 00
+9d
+e0
+de
 00
+68
+4b
+49
+77
+18
+46
+7c
 00
+20
+62
+80
 00
+1b
+22
+7e
 00
+20
+40
+7d
+95
+68
+4a
+49
+81
+98
+40
+fe
+00
+9d
+e6
+04
+00
+24
+61
 00
 00
+58
+12
+4f
+80
+98
+46
+7c
 00
+24
+21
+01
+0a
+60
+4a
+49
+81
+1b
+22
+7e
 00
+67
+e3
+49
+77
+6f
+e0
+c9
+85
+68
+48
+c9
+90
+98
+40
+fe
 00
+68
+48
+c9
+6a
+70
+49
+6a
 00
+98
+46
+7e
 00
+20
+22
+81
+08
+24
+21
+01
+0a
+1f
+e6
+7c
+04
+24
+21
+01
+0a
+1f
+e0
+ff
+ff
+67
+e0
+c9
+90
+6f
+e0
+c9
+91
+1f
+e6
+7c
+05
+24
+21
+01
+0a
+20
+20
+01
+0e
+6f
+e1
+c9
+86
+20
+3a
 00
+a6
+d8
+40
+bb
+80
+98
+46
+7c
 00
+24
+42
+80
+a6
+20
+60
 00
 00
+6f
+e1
+c9
+86
+20
+7a
+00
+00
+68
+48
+c9
+91
+18
+40
+84
+02
+98
+4f
+de
+00
+68
+4b
+49
+6b
+18
+46
+7c
+00
+20
+62
+80
+00
+1b
+22
+7e
+00
+20
+40
+7d
+95
+68
+4a
+49
+7d
+98
+40
+fe
+00
+9d
+e6
+04
+00
+24
+61
+00
+00
+58
+09
+27
+c0
+98
+46
+7c
+00
+24
 21
+01
+04
+60
+4a
+49
+7d
+6f
+e0
+c9
+91
+68
+48
+c9
+68
+98
+46
+7e
+00
+6f
+e0
+c9
+91
+1f
+e6
+7c
+05
+24
+21
+01
+04
+1f
+e0
+fe
+01
+67
+e0
+c9
+91
+20
+40
+01
+0e
+20
+20
+00
+a2
+70
+49
+91
+00
+20
+20
+01
+04
+58
+00
+00
+00
+67
+e2
+49
+7d
+20
+60
+00
+00
+70
+49
+68
+00
+20
+20
+01
+01
+58
+00
+00
+00
+67
+e2
+49
+81
+70
+49
+90
+00
+20
+60
+00
+00
+1b
+22
+7e
+00
+67
+e3
+49
+77
+70
+49
+6a
+00
+20
+20
+01
+06
+58
+00
+00
+01
+67
+e0
+8b
+ff
+6f
+e3
+c9
+89
+e7
+e3
+80
+05
+20
+20
+36
+94
+3d
+e0
+aa
+55
+40
+00
+00
+40
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+08
+18
+00
+00
+00
+40
+00
+18
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+80
+23
 00
 00
 02
@@ -635,7 +1199,7 @@
 a8
 40
 37
-28
+fa
 10
 30
 11
@@ -707,5 +1271,155 @@
 ee
 41
 00
-e4
-1d
+aa
+55
+78
+00
+4b
+10
+1b
+06
+00
+ff
+09
+01
+a1
+01
+85
+af
+95
+1f
+75
+08
+26
+ff
+00
+15
+00
+09
+01
+81
+02
+09
+01
+91
+02
+c0
+5b
+09
+02
+5b
+00
+03
+01
+00
+a0
+32
+09
+04
+00
+00
+01
+03
+01
+01
+00
+09
+21
+00
+02
+00
+01
+22
+1a
+00
+07
+05
+81
+03
+40
+00
+02
+09
+04
+01
+00
+01
+03
+01
+02
+00
+09
+21
+00
+02
+00
+01
+22
+a3
+00
+07
+05
+82
+03
+40
+00
+02
+09
+04
+02
+00
+02
+03
+00
+00
+00
+09
+21
+00
+02
+00
+01
+22
+1b
+00
+07
+05
+83
+03
+40
+00
+02
+07
+05
+03
+03
+40
+00
+02
+aa
+55
+01
+00
+85
+49
+10
+aa
+55
+05
+00
+32
+49
+02
+40
+00
+92
+05
+55
+aa
+aa
+55
+75
+30
+7f
+f5
Index: output/memmap.format
===================================================================
--- /YC1308AC/branch/usb/output/memmap.format	(revision 1169)
+++ /YC1308AC/branch/usb/output/memmap.format	(working copy)
@@ -1930,6 +1930,20 @@
 0x4947 mem_g24_ota_version_timer
 0x4948 mem_g24_ota_txbuf_len
 0x4949 mem_g24_ota_txbuf
+0x4968 mem_g24_reportrate_count
+0x4969 mem_g24_reportrate_count2
+0x496a mem_g24_reportrate_count3
+0x496b mem_g24_reportrate_lasttime
+0x4971 mem_g24_reportrate_lasttime2
+0x4977 mem_g24_reportrate_lasttime3
+0x497d mem_g24_reportrate_detatime
+0x4981 mem_g24_reportrate_detatime3
+0x4985 mem_g24_reportrate_check_count
+0x4986 mem_24g_tsniff
+0x4989 mem_g24_tx_last
+0x4990 mem_g24_reportrate_add
+0x4991 mem_g24_reportrate_continue
+0x4992 mem_dongle_end
 0x487e mem_rssi_hex_received
 0x487f mem_24g_pair_sm
 0x4880 mem_24g_pair_no_ack
Index: program/patch.prog
===================================================================
--- /YC1308AC/branch/usb/program/patch.prog	(revision 1169)
+++ /YC1308AC/branch/usb/program/patch.prog	(working copy)
@@ -1,4 +1,5 @@
 //define KEYBOARD
+//define OTA_CODE
 
 	bbit1 8,pf_patch_ext
 	beq patch10_3,p_set_sync_on
@@ -10,9 +11,14 @@
 	branch loop
 
 pf_patch_ext:
+ifdef OTA_CODE
 	beq patch31_7,p_usb_rx
-	beq patch32_0,p_usb_class_type
 	beq patch32_1,p_usb0_request_get_descriptor
+else
+	beq patch31_7,usb_rx+1
+	beq patch32_1,usb0_request_get_descriptor+1
+endif 
+	beq patch32_0,p_usb_class_type
 	beq patch32_5,p_usb_tx
 	beq patch35_1,p_le_enable
 	branch loop
@@ -62,6 +68,7 @@
 	arg 0x6978,temp
 	call g24_rx_window_store
 
+ifdef OTA_CODE
 	call p_g24_check_ota_data
 	call p_g24_load_ota_config,user
 
@@ -81,6 +88,12 @@
 	
 	setarg p_dongle_dispatch
 	store 2,mem_cb_24g_receive_process
+
+else
+	setarg dongle_dispatch
+	store 2,mem_cb_24g_receive_process
+	
+endif	
 	setarg p_dongle_g24_mouse
 	store 2,mem_cb_24g_data_device1
 	setarg dongle_g24_kb
@@ -103,6 +116,7 @@
 	setarg 125
 	branch wdt_init_config
 
+ifdef OTA_CODE
 
 /********************add wdt************************/
 
@@ -573,6 +587,30 @@
 //	branch callback_func
 
 
+else
+/********************add wdt************************/
+p_dongle_usb_dispatch:
+	call p_wdt_kick
+	branch dongle_usb_dispatch+1
+
+
+/************************keyboard blank patch**********/
+p_dongle_work_mode_auto:
+	fetch 1,mem_24g_work_mode
+	rtnne DONGLE_WORK
+	call p_g24_check_reportrate2
+	call p_g24_check_reportrate
+	fetch 1,mem_usb_tx_enable
+	isolate1 2,pdata
+	ncall p_g24_check_reportrate3,true
+	fetch 1,mem_usb_tx_enable
+	isolate1 2,pdata
+	ncall g24_work_mode_start,true
+	call p_dongle_g24_blank_data_process
+	branch dongle_work_mode_auto+5
+	
+endif 
+
 p_dongle_g24_blank_data_process:
 	call dongle_g24_ms_blank_data
 	call p_dongle_g24_kb_blank_data
@@ -669,6 +707,9 @@
 	branch rssi_hex2dec
 
 
+ifdef OTA_CODE
+
+
 /************************usb mac wakeup patch**********/
 p_usb_tx:
 	fetch 1,mem_usb_tx_enable
@@ -1048,5 +1089,205 @@
 //	jam p_start_g24_ota
 	//nop 1
 	branch p_g24_dongle_ota_version_no_mouse
+
+else
+
+/************************usb mac wakeup patch**********/
+p_usb_tx:
+	fetch 1,mem_usb_tx_enable
+	rtn blank
+	fetch 1,core_usb_txbusy
+	and_into 0x0f,pdata
+	nbranch usb_inwake_state_tx_dispose,blank
+	branch usb_tx+3
+
+p_dongle_g24_mouse:
+	call dongle_g24_mouse
+	fetch 7,mem_24g_rxdata_temp+3
+	store 7,mem_g24_tx_last
+	call p_g24_check_reportrate_count1
+	call p_g24_check_reportrate_count2
+	branch p_g24_check_reportrate_count3
+	
+p_g24_check_reportrate_count1:	
+	fetch 1,mem_g24_reportrate_count
+	increase 1,pdata
+	store 1,mem_g24_reportrate_count
+//	rtnne 1
+	copy clkn,pdata
+	store 6,mem_g24_reportrate_lasttime	
+	branch p_g24_check_reportrate_continue0
+	
+p_g24_check_reportrate_count2:	
+	fetch 1,mem_g24_reportrate_count2
+	increase 1,pdata
+	store 1,mem_g24_reportrate_count2
+	rtnne 1
+	copy clkn,pdata
+	store 6,mem_g24_reportrate_lasttime2	
+	rtn
 	
+p_g24_check_reportrate_count3:	
+	fetch 1,mem_g24_reportrate_count3
+	increase 1,pdata
+	store 1,mem_g24_reportrate_count3
+	rtn
+		
+p_g24_check_reportrate_auto:
+	fetch 1,mem_g24_reportrate_count2
+	rtnne 125
+	jam 0,mem_g24_reportrate_count2
+	
+	fetcht 6,mem_g24_reportrate_lasttime2
+	copy clkn,pdata
+	call clk_diff_rt
+	copy pdata,temp
+	setarg 8400000 //700ms 
+	isub temp,null
+	branch p_g24_check_reportrate_250,positive
+	fetch 3,mem_24g_tsniff
+	nrtn blank
+p_g24_check_reportrate_125:
+	setarg 0x17700
+	branch p_g24_check_reportrate_common
+
+
+p_g24_check_reportrate_250:
+	setarg 0xbb80
+p_g24_check_reportrate_common:
+	store 3,mem_24g_tsniff
+	call p_g24_check_reportrate_reset
+	branch p_g24_check_reportrate_reset3
+	
+p_g24_check_reportrate3:
+	fetch 3,mem_24g_tsniff
+	rtn blank
+	fetcht 1,mem_g24_reportrate_check_count
+//increase 1,temp
+	imul32 temp,regext
+	rshift4 pdata,pdata
+	iadd regext ,regext
+	fetcht 6,mem_g24_reportrate_lasttime3
+	sub temp,0,null
+	rtn zero
+	copy clkn,pdata
+	call clk_diff_rt
+	fetcht 4,mem_g24_reportrate_detatime3
+	iadd temp,pdata
+	isub regext,temp
+	nrtn positive
+	setarg  1200000 //100ms
+	isub temp,null
+	nbranch p_g24_check_reportrate_reset3,positive
+	storet 4,mem_g24_reportrate_detatime3
+
+//	setarg 0
+//	store 6,mem_g24_reportrate_lasttime
+	copy clkn,pdata
+	store 6,mem_g24_reportrate_lasttime3	
+	fetch 1,mem_g24_reportrate_check_count
+	fetcht 1,mem_g24_reportrate_add
+	iadd temp,pdata
+	fetcht 1,mem_g24_reportrate_count3
+	jam 0,mem_g24_reportrate_count3
+	isub temp,pdata
+	branch p_g24_check_reportrate_add3, zero
+	nbranch p_g24_check_reportrate_reset3, positive
+//	beq  1,p_g24_check_reportrate_continue0
+	sub pdata,4,null
+	nbranch p_g24_check_reportrate_reset3, positive
+	increase -1,pdata
+	store 1,mem_g24_reportrate_add
+ 	fetch 1,mem_g24_reportrate_continue
+ 	sub pdata,5,null
+ 	nbranch p_g24_check_reportrate_reset3,positive
+	branch p_g24_check_reportrate_addpacket
+	
+p_g24_check_reportrate2:
+	fetch 3,mem_24g_tsniff
+	branch p_g24_check_reportrate_auto, blank
+	arg 0xbb80,temp
+	isub temp,null
+	ncall p_g24_check_reportrate_auto, zero
+	rtn
+	
+	
+p_g24_check_reportrate:
+	fetch 3,mem_24g_tsniff
+	rtn blank
+	fetcht 1,mem_g24_reportrate_continue
+	increase 2,temp
+	imul32 temp,regext
+	fetcht 6,mem_g24_reportrate_lasttime
+	sub temp,0,null
+	rtn zero
+	copy clkn,pdata
+	call clk_diff_rt
+	fetcht 4,mem_g24_reportrate_detatime
+	iadd temp,pdata
+	isub regext,temp
+	nrtn positive
+	setarg  600000 //50ms
+	isub temp,null
+	nbranch p_g24_check_reportrate_reset,positive
+	storet 4,mem_g24_reportrate_detatime
+
+	fetch 1,mem_g24_reportrate_continue
+//	iadd temp,pdata
+	fetcht 1,mem_g24_reportrate_count
+//	jam 0,mem_g24_reportrate_count
+	isub temp,pdata
+	fetch 1,mem_g24_reportrate_continue
+	sub pdata,5,null
+ 	nbranch p_g24_check_reportrate_reset,positive
+ 	increase 1,pdata
+ 	store 1,mem_g24_reportrate_continue
+	call p_g24_check_reportrate_addpacket
+	branch p_g24_check_reportrate_count3
+
+
+p_g24_check_reportrate_continue0:
+	jam 0,mem_g24_reportrate_continue
+	branch p_g24_check_reportrate_reset
+
+p_g24_check_reportrate_deta0:
+	setarg 0
+	store 4,mem_g24_reportrate_detatime
+	rtn
+	
+	
+p_g24_check_reportrate_reset:
+//	copy clkn,pdata
+//	store 6,mem_g24_reportrate_lasttime	
+	jam 0,mem_g24_reportrate_count
+	branch p_g24_check_reportrate_deta0
+
+
+p_g24_check_reportrate_deta3:
+	setarg 0
+	store 4,mem_g24_reportrate_detatime3
+	//rtn
+p_g24_check_reportrate_add3:
+	jam 0,mem_g24_reportrate_add
+	rtn
+	
+	
+p_g24_check_reportrate_reset3:
+	copy clkn,pdata
+	store 6,mem_g24_reportrate_lasttime3	
+	jam 0,mem_g24_reportrate_count3
+	branch p_g24_check_reportrate_deta3
+	
+
+p_g24_check_reportrate_addpacket:	
+	setarg MS_REPORT_ID
+	store 1,mem_usb_mouse_data
+	fetch 7,mem_g24_tx_last
+	istore 7,contw
+	branch dongle_usb_tx_ms_data
+	
+	
+	
+endif
+
 
Index: sched/dongle.dat
===================================================================
--- /YC1308AC/branch/usb/sched/dongle.dat	(revision 1169)
+++ /YC1308AC/branch/usb/sched/dongle.dat	(working copy)
@@ -203,4 +203,5 @@
 40 00	#MaxPacketSize (LITTLE ENDIAN) 
 02		#bInterval
 
+mem_g24_reportrate_check_count:10
 
