Index: output/eeprom.dat
===================================================================
--- /YC1308AF/branch/mouse/USB_4Mode_Project/RongYuan_Project/mouse_public_3mode_usb/output/eeprom.dat	(revision 5171)
+++ /YC1308AF/branch/mouse/USB_4Mode_Project/RongYuan_Project/mouse_public_3mode_usb/output/eeprom.dat	(working copy)
@@ -6714,7 +6714,7 @@
 00
 a8
 40
-19
+20
 36
 11
 52
@@ -7662,7 +7662,7 @@
 aa
 aa
 55
-3c
+43
 a4
 ff
 20
@@ -8181,5 +8181,5 @@
 00
 00
 00
-58
-78
+4d
+0c
Index: output/flash.dat
===================================================================
--- /YC1308AF/branch/mouse/USB_4Mode_Project/RongYuan_Project/mouse_public_3mode_usb/output/flash.dat	(revision 5171)
+++ /YC1308AF/branch/mouse/USB_4Mode_Project/RongYuan_Project/mouse_public_3mode_usb/output/flash.dat	(working copy)
@@ -6714,7 +6714,7 @@
 00
 a8
 40
-19
+20
 36
 11
 52
@@ -7662,7 +7662,7 @@
 aa
 aa
 55
-3c
+43
 a4
 ff
 20
@@ -8181,5 +8181,5 @@
 00
 00
 00
-58
-78
+4d
+0c
Index: program/patch.prog
===================================================================
--- /YC1308AF/branch/mouse/USB_4Mode_Project/RongYuan_Project/mouse_public_3mode_usb/program/patch.prog	(revision 5171)
+++ /YC1308AF/branch/mouse/USB_4Mode_Project/RongYuan_Project/mouse_public_3mode_usb/program/patch.prog	(working copy)
@@ -325,42 +325,6 @@
 	branch set_rf_ldo_cfg89
 
 
-ifdef RSSI_PATCH
-p_save_rssi:
-	// bit6 is signed bit. 
-	fetch 1,modem_nb_pow 
-	isolate1 6,pdata 
-	setflag true,7,pdata 
-	store 1,mem_modem_rssi 
-	
-	fetch 1,modem_gain 
-	and pdata,0x0f,temp 
-	lshift temp,temp 
-	rshift4 pdata,pdata 
-	iadd temp,temp 
-	mul32 temp,3,rega // (abb_gain + lna_gain*2)*3 
-
-	fetch 1,mem_modem_rssi 
-	call p_byte_sign_extern 
-	sub pdata,0,pdata //-modem_nb_pow 
-	iadd rega,pdata // (abb_gain + lna_gain*2)*3 + (-modem_nb_pow) 
-	increase -9,pdata // (abb_gain + lna_gain*2)*3 + (-modem_nb_pow) - 9 
-	and pdata,0x1ff,pdata 
-	isolate1 8,pdata 
-	nbranch p_save_rssi_store,true 
-	setarg 0 
-p_save_rssi_store:
-	store 1,mem_rssi_hex
-	rtn
-p_byte_sign_extern:
-	isolate1 7,pdata
-	nrtn true
-	arg 0xff00,temp
-	ior temp,pdata
-	rtn
-
-endif
-
 	
 p_app_init:
 p_mouse_init:
@@ -369,8 +333,7 @@
 endif	
 	call enable_authrom
 ifdef USB
-	fetch 1,mem_usb_offline_gpio_retention
-	store 1,mem_usb_offline_check_gpio
+	call p_mouse_usb_offline_gpio_init
 endif
 	call p_mouse_setting_config
 	call mouse_init_sunt
@@ -465,65 +428,6 @@
 	jam 0,mem_mouse_24g_clear_sensor_data_flag
 	branch mouse_data_xy_release+4
 	
-ifdef SEARCH_DONGLE
-p_mouse_24g_search_dongle:
-	fetch MOUSE_FLAG_LEN,mem_mouse_flag
-	rtnbit0 MOUSE_ENABLE_24G_SEARCH_DONGLE
-	fetch 1,mem_mouse_long_mult_flag
-	rtn blank
-	fetch 1,mem_24g_abort_pac
-	rtn blank
-	fetch 1,mem_mouse_search_dongle_interval
-	increase 1,pdata
-	and_into 3,pdata
-	store 1,mem_mouse_search_dongle_interval
-	nrtn blank	//400ms
-	jam 0,mem_mouse_search_dongle_ch
-p_mouse_24g_search_dongle_loop:
-	fetch 1,mem_mouse_search_dongle_ch
-	increase 1,pdata
-	store 1,mem_mouse_search_dongle_ch
-	sub pdata,G24_CH_NUMBER,null
-	nbranch p_mouse_24g_search_dongle_loop_end,positive
-	call g24_reconn_data_prep
-	call p_g24_transmit_receive_ack
-	nbranch p_mouse_24g_search_dongle_loop_retry,sync
-	nbranch p_mouse_24g_search_dongle_loop_retry,user3
-	call p_mouse_24g_search_dongle_success
-p_mouse_24g_search_dongle_loop_end:
-	call g24_txbuf_clear
-	fetch 1,mem_mouse_search_dongle_count
-	increase 1,pdata
-	store 1,mem_mouse_search_dongle_count
-	beq G24_CH_POLL_COUNT,p_mouse_24g_search_dongle_check
-	rtn	
-
-p_mouse_24g_search_dongle_loop_retry:
-	call g24_ch
-	branch p_mouse_24g_search_dongle_loop
-
-p_mouse_24g_search_dongle_check:
-	jam 0,mem_mouse_search_dongle_count
-	fetch 1,mem_mouse_search_dongle_action
-	rtnbit1 G24_DISCONN_STATE
-	set1 G24_DISCONN_STATE,pdata
-	store 1,mem_mouse_search_dongle_action
-	fetch 2,mem_mouse_24g_search_dongle_time_init		
-	store 2,mem_mouse_no_data_timer
-	branch p_mouse_sensor_powerdown
-
-p_mouse_24g_search_dongle_success:
-	fetch 1,mem_24g_abort_pac
-	branch mouse_24g_search_dongle_init,blank
-	jam 0,mem_mouse_search_dongle_count
-	fetch 1,mem_mouse_search_dongle_action
-	rtnbit0 G24_DISCONN_STATE
-	set0 G24_DISCONN_STATE,pdata
-	store 1,mem_mouse_search_dongle_action
-	call mouse_no_data_timer_init
-	branch p_mouse_init_sensor_wakeup
-endif
-	
 p_mouse_24g_fast_conn_mode_check:
 	fetch 4,mem_24g_receiver_addr
 	fetcht 4,mem_24g_fast_conn_addr
@@ -2189,73 +2093,6 @@
 endif
 
 
-ifdef PW_CTRL	
-p_power_ctrl_start:
-	fetch 2,mem_ui_state_map
-	rtnbit1 UI_STATE_BLE_ADV
-	rtnbit1 UI_STATE_BT_RECONNECT
-	rtnbit1 UI_STATE_BT_DISCOVERY	
-ifdef RSSI_SORT
-	call p_rssi_sort	
-	call p_rssi_average
-else
-	fetchr rega,2,mem_rssi_signal_buf_ptr
-	call rssi_average
-endif
-	storet 1,mem_rssi_avg_received
-	branch power_ctrl_rssi_avg_compare
-
-ifdef RSSI_SORT
-p_rssi_average:
-	arg mem_mouse_rssi_signal_buf_temp+6,rega
-	arg 10,pdata
-	branch rssi_average+2
-
-p_rssi_sort:
-	call p_memcpy16
-	arg mem_mouse_rssi_signal_buf_temp,regb
-	fetch 1,mem_rssi_buff_index
-	increase 1,pdata
-	copy pdata,loopcnt
-	branch p_bubble_sort
-
-p_memcpy16:
-	arg mem_mouse_rssi_signal_buf_patch,contr
-	arg mem_mouse_rssi_signal_buf_temp,contw
-	branch memcpy16	
-
-//input:regb buff ptr,pdata buff length
-p_bubble_sort:
-	increase -1,loopcnt
-	deposit loopcnt
-	rtn blank
-p_external_loop:
-	copy loopcnt,rega
-	increase -1,rega
-	copy regb,contr
-p_internal_loop:
-	ifetch 1,contr
-	copy contr,contw
-	ifetcht 1,contr
-	isub temp,null
-	call p_sort_up
-	increase -1,contr
-	increase -1,rega
-	branch p_internal_loop,positive
-	loop p_external_loop
-	rtn
-p_sort_up:
-	call p_exchange_data,positive
-	rtn
-p_exchange_data:
-	increase -1,contw
-	istoret 1,contw
-	istore 1,contw
-	rtn
-endif
-
-endif
-
 p_mouse_motion:
 ifdef AUTO_SEND
 	branch p_mouse_motion_auto
@@ -2414,7 +2251,13 @@
 	rtn
 */
 
+//=============================USB CODE PATCH =============================//
+
 ifdef USB
+p_mouse_usb_offline_gpio_init:
+	fetch 1,mem_usb_offline_gpio_retention
+	store 1,mem_usb_offline_check_gpio
+	rtn
 
 /************************set report patch************************/
 p_usb_class_type:
@@ -2532,7 +2375,6 @@
 	store 4,mem_btclk_sensor
 	rtn
 
-
 p_select_system_clk_24M_dpll:
 	jam SYSTEM_CLK_24M,mem_system_clk
 	jam clksel_dpll_24M,core_clksel
@@ -2704,6 +2546,8 @@
 	rtn
 
 endif
+
+
 //=============================ZCODE CODE PATCH =============================//
 p_mouse_setting_config:
 	rtn wake
@@ -2771,58 +2615,178 @@
 	isub rega,null
 	rtn
 
+//==============================G24 SEARCH DONGLE===========================//
+ifdef SEARCH_DONGLE
+p_mouse_24g_search_dongle:
+	fetch MOUSE_FLAG_LEN,mem_mouse_flag
+	rtnbit0 MOUSE_ENABLE_24G_SEARCH_DONGLE
+	fetch 1,mem_mouse_long_mult_flag
+	rtn blank
+	fetch 1,mem_24g_abort_pac
+	rtn blank
+	fetch 1,mem_mouse_search_dongle_interval
+	increase 1,pdata
+	and_into 3,pdata
+	store 1,mem_mouse_search_dongle_interval
+	nrtn blank	//400ms
+	jam 0,mem_mouse_search_dongle_ch
+p_mouse_24g_search_dongle_loop:
+	fetch 1,mem_mouse_search_dongle_ch
+	increase 1,pdata
+	store 1,mem_mouse_search_dongle_ch
+	sub pdata,G24_CH_NUMBER,null
+	nbranch p_mouse_24g_search_dongle_loop_end,positive
+	call g24_reconn_data_prep
+	call p_g24_transmit_receive_ack
+	nbranch p_mouse_24g_search_dongle_loop_retry,sync
+	nbranch p_mouse_24g_search_dongle_loop_retry,user3
+	call p_mouse_24g_search_dongle_success
+p_mouse_24g_search_dongle_loop_end:
+	call g24_txbuf_clear
+	fetch 1,mem_mouse_search_dongle_count
+	increase 1,pdata
+	store 1,mem_mouse_search_dongle_count
+	beq G24_CH_POLL_COUNT,p_mouse_24g_search_dongle_check
+	rtn	
 
-//=============================ZCODE PATCH ===================================//
+p_mouse_24g_search_dongle_loop_retry:
+	call g24_ch
+	branch p_mouse_24g_search_dongle_loop
 
-ifdef AUTO_SEND
-p_mouse_motion_auto:
-	disable user
-	setarg 0
-	store 6,mem_mouse_x
-	fetch 1,0X4FF0
+p_mouse_24g_search_dongle_check:
+	jam 0,mem_mouse_search_dongle_count
+	fetch 1,mem_mouse_search_dongle_action
+	rtnbit1 G24_DISCONN_STATE
+	set1 G24_DISCONN_STATE,pdata
+	store 1,mem_mouse_search_dongle_action
+	fetch 2,mem_mouse_24g_search_dongle_time_init		
+	store 2,mem_mouse_no_data_timer
+	branch p_mouse_sensor_powerdown
+
+p_mouse_24g_search_dongle_success:
+	fetch 1,mem_24g_abort_pac
+	branch mouse_24g_search_dongle_init,blank
+	jam 0,mem_mouse_search_dongle_count
+	fetch 1,mem_mouse_search_dongle_action
+	rtnbit0 G24_DISCONN_STATE
+	set0 G24_DISCONN_STATE,pdata
+	store 1,mem_mouse_search_dongle_action
+	call mouse_no_data_timer_init
+	branch p_mouse_init_sensor_wakeup
+endif
+
+//==============================POWER CTRL===========================//
+
+ifdef PW_CTRL	
+p_power_ctrl_start:
+	fetch 2,mem_ui_state_map
+	rtnbit1 UI_STATE_BLE_ADV
+	rtnbit1 UI_STATE_BT_RECONNECT
+	rtnbit1 UI_STATE_BT_DISCOVERY	
+ifdef RSSI_SORT
+	call p_rssi_sort	
+	call p_rssi_average
+else
+	fetchr rega,2,mem_rssi_signal_buf_ptr
+	call rssi_average
+endif
+	storet 1,mem_rssi_avg_received
+	branch power_ctrl_rssi_avg_compare
+
+ifdef RSSI_SORT
+p_rssi_average:
+	arg mem_mouse_rssi_signal_buf_temp+6,rega
+	arg 10,pdata
+	branch rssi_average+2
+
+p_rssi_sort:
+	call p_memcpy16
+	arg mem_mouse_rssi_signal_buf_temp,regb
+	fetch 1,mem_rssi_buff_index
 	increase 1,pdata
-	store 1,0X4FF0
-	sub pdata,50,null
-	branch p_ms_x_right,positive
+	copy pdata,loopcnt
+	branch p_bubble_sort
 
-	sub pdata,100,null
-	branch p_ms_y_up,positive
+p_memcpy16:
+	arg mem_mouse_rssi_signal_buf_patch,contr
+	arg mem_mouse_rssi_signal_buf_temp,contw
+	branch memcpy16	
 
-	sub pdata,150,null
-	branch p_ms_x_left,positive
-	sub pdata,200,null
-	branch p_ms_y_down,positive
+//input:regb buff ptr,pdata buff length
+p_bubble_sort:
+	increase -1,loopcnt
+	deposit loopcnt
+	rtn blank
+p_external_loop:
+	copy loopcnt,rega
+	increase -1,rega
+	copy regb,contr
+p_internal_loop:
+	ifetch 1,contr
+	copy contr,contw
+	ifetcht 1,contr
+	isub temp,null
+	call p_sort_up
+	increase -1,contr
+	increase -1,rega
+	branch p_internal_loop,positive
+	loop p_external_loop
+	rtn
+p_sort_up:
+	call p_exchange_data,positive
 	rtn
+p_exchange_data:
+	increase -1,contw
+	istoret 1,contw
+	istore 1,contw
+	rtn
+endif
+endif
 
-p_ms_x_right:
-	setarg 5
-	store 2,mem_mouse_x
-p_data:
-	enable user
-	branch mouse_no_data_timer_init
 
-p_ms_y_up:
-	setarg 5
-	store 2,mem_mouse_y
-	branch p_data
+//==============================RSSI PATCH===========================//
+
+ifdef RSSI_PATCH
+p_save_rssi:
+	// bit6 is signed bit. 
+	fetch 1,modem_nb_pow 
+	isolate1 6,pdata 
+	setflag true,7,pdata 
+	store 1,mem_modem_rssi 
+	
+	fetch 1,modem_gain 
+	and pdata,0x0f,temp 
+	lshift temp,temp 
+	rshift4 pdata,pdata 
+	iadd temp,temp 
+	mul32 temp,3,rega // (abb_gain + lna_gain*2)*3 
+
+	fetch 1,mem_modem_rssi 
+	call p_byte_sign_extern 
+	sub pdata,0,pdata //-modem_nb_pow 
+	iadd rega,pdata // (abb_gain + lna_gain*2)*3 + (-modem_nb_pow) 
+	increase -9,pdata // (abb_gain + lna_gain*2)*3 + (-modem_nb_pow) - 9 
+	and pdata,0x1ff,pdata 
+	isolate1 8,pdata 
+	nbranch p_save_rssi_store,true 
+	setarg 0 
+p_save_rssi_store:
+	store 1,mem_rssi_hex
+	rtn
+p_byte_sign_extern:
+	isolate1 7,pdata
+	nrtn true
+	arg 0xff00,temp
+	ior temp,pdata
+	rtn
 
-p_ms_x_left:
-	setarg -5
-	store 2,mem_mouse_x
-	branch p_data
-p_ms_y_down:
-	fetch 1,0X4FF0
-	beq 200,p_mem_usb_data_square_cnt_set0
-	setarg -5
-	store 2,mem_mouse_y
-	branch p_data
-p_mem_usb_data_square_cnt_set0:
-	jam 0,0X4FF0
-	branch p_ms_y_down+2
 endif
 
 
+//=============================G24 DEBUG  PATCH ===================================//
+
 ifdef UART_LOG
+
 p_device_hardware_init:
 	fetch 1,core_uart_ctrl
 	set0 BIT_UART_CONTROL_ENABLE,pdata
@@ -2931,4 +2895,54 @@
 	branch uarta_send	
 endif
 
+ifdef AUTO_SEND
+p_mouse_motion_auto:
+	disable user
+	setarg 0
+	store 6,mem_mouse_x
+	fetch 1,0X4FF0
+	increase 1,pdata
+	store 1,0X4FF0
+	sub pdata,50,null
+	branch p_ms_x_right,positive
+
+	sub pdata,100,null
+	branch p_ms_y_up,positive
+
+	sub pdata,150,null
+	branch p_ms_x_left,positive
+	sub pdata,200,null
+	branch p_ms_y_down,positive
+	rtn
+
+p_ms_x_right:
+	setarg 5
+	store 2,mem_mouse_x
+p_data:
+	enable user
+	branch mouse_no_data_timer_init
+
+p_ms_y_up:
+	setarg 5
+	store 2,mem_mouse_y
+	branch p_data
+
+p_ms_x_left:
+	setarg -5
+	store 2,mem_mouse_x
+	branch p_data
+p_ms_y_down:
+	fetch 1,0X4FF0
+	beq 200,p_mem_usb_data_square_cnt_set0
+	setarg -5
+	store 2,mem_mouse_y
+	branch p_data
+p_mem_usb_data_square_cnt_set0:
+	jam 0,0X4FF0
+	branch p_ms_y_down+2
+
+endif
+
+
+
 
Index: sched/mouse.dat
===================================================================
--- /YC1308AF/branch/mouse/USB_4Mode_Project/RongYuan_Project/mouse_public_3mode_usb/sched/mouse.dat	(revision 5169)
+++ /YC1308AF/branch/mouse/USB_4Mode_Project/RongYuan_Project/mouse_public_3mode_usb/sched/mouse.dat	(working copy)
@@ -211,7 +211,7 @@
 mem_lpm_mult_init:20
 
 mem_app_connection_options:06
-mem_lap:19 36 11 52 08 53
+mem_lap:20 36 11 52 08 53
 mem_local_name_length:
 'BT3.0 Mouse
 mem_sniff_param_interval:
