Index: MOUSE-3025-1059-G172.pdf
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: MOUSE-3025-1059-G172.pdf
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: b.bat
===================================================================
--- /branch/mouse_project/YJX_Project/YJX_1059/JDT_172_BD_2.4G&BLE/b.bat	(nonexistent)
+++ /branch/mouse_project/YJX_Project/YJX_1059/JDT_172_BD_2.4G&BLE/b.bat	(working copy)
@@ -0,0 +1,6 @@
+e pu
+e 8070l20
+e 8081 8
+e fr 0 10
+e fc
+e fr 0 10
\ No newline at end of file
Index: do.bat
===================================================================
--- /branch/mouse_project/YJX_Project/YJX_1059/JDT_172_BD_2.4G&BLE/do.bat	(nonexistent)
+++ /branch/mouse_project/YJX_Project/YJX_1059/JDT_172_BD_2.4G&BLE/do.bat	(working copy)
@@ -0,0 +1,70 @@
+@set FPGA_PATH=fpgajic\fpga
+@set ROM_PATH=.
+@set MV_PATCH=mv\src\yichip
+@set YC_PATCH_FILE=yc_patch_yc1021.h
+@set enc=1
+@set enckey=0000000000000000
+@echo off
+setlocal enabledelayedexpansion
+
+copy patch\patch.prog + patch\z.prog output\bt_program23.meta
+copy rom\rom.format  + rom\label.format + patch\patch.format + rom\command.format output\bt_format.meta
+perl util/mergepatch.pl output/bt_program23.meta
+perl util/memalloc.pl output/bt_format.meta
+cd output
+osiuasm bt_program23 -O-W
+copy  ..\sched\109x.dat +  ..\sched\mouse.dat ..\output\sched.rom
+
+
+if "%1" equ "eep" (
+	goto genromrevc
+)else (
+  goto downloadram
+)
+
+
+
+:genromrevc
+@echo Start to generate FLASH code
+
+..\util\geneep -n -f -z ramcode.rom sched.rom 0 %enckey% c
+cd ..\output
+copy flash.dat ..\util\flash1.dat
+del flash.dat
+
+cd ..\util
+perl flash_dat2eeprom_dat.pl flash1.dat flash.dat
+copy flash.dat ..\output\flash.dat
+del flash1.dat
+del flash.dat
+
+cd ..\output
+echo flash.dat Generated........
+
+echo off
+
+:gen_eep_end
+cd ..
+echo **********************************
+echo FLASH Generated.
+echo The Device is %device_option%. 
+echo Use command "e fp" to download FLASH.
+echo **********************************
+goto end
+
+
+
+:downloadram
+echo on
+@echo Start to download ram code
+e ku
+e hu
+e su sched.rom
+@echo **********************************
+@echo RAM CODE has been downloaded.
+@echo The Device is %device_option%. 
+@echo **********************************
+cd ..
+
+
+:end
Index: flash_download.bat
===================================================================
--- /branch/mouse_project/YJX_Project/YJX_1059/JDT_172_BD_2.4G&BLE/flash_download.bat	(nonexistent)
+++ /branch/mouse_project/YJX_Project/YJX_1059/JDT_172_BD_2.4G&BLE/flash_download.bat	(working copy)
@@ -0,0 +1,12 @@
+call do.bat eep
+e ku
+ping -n 2 127.1 >nul
+e pu
+
+e 8081 8
+
+e fc
+e fp
+e fr 0 10
+e ku
+e au
Index: output/flash.dat
===================================================================
--- /branch/mouse_project/YJX_Project/YJX_1059/JDT_172_BD_2.4G&BLE/output/flash.dat	(nonexistent)
+++ /branch/mouse_project/YJX_Project/YJX_1059/JDT_172_BD_2.4G&BLE/output/flash.dat	(working copy)
@@ -0,0 +1,12220 @@
+00
+02
+aa
+55
+a6
+1f
+20
+20
+00
+40
+20
+40
+03
+b7
+68
+00
+c1
+de
+60
+00
+cc
+a1
+20
+40
+06
+e9
+68
+00
+c6
+85
+60
+00
+c6
+da
+20
+40
+43
+ca
+20
+40
+03
+36
+20
+40
+07
+81
+20
+40
+00
+0d
+20
+40
+00
+20
+20
+20
+03
+0c
+58
+00
+03
+80
+60
+01
+4d
+1b
+58
+00
+03
+9a
+60
+01
+41
+ef
+58
+00
+06
+2a
+60
+01
+41
+f9
+58
+00
+03
+d2
+60
+01
+41
+f1
+58
+00
+02
+73
+60
+01
+41
+ed
+58
+00
+04
+10
+60
+01
+41
+f5
+58
+00
+03
+fa
+60
+01
+41
+f3
+58
+00
+04
+49
+60
+01
+41
+eb
+58
+00
+04
+50
+60
+01
+41
+fd
+20
+60
+00
+00
+58
+00
+00
+19
+60
+01
+4d
+2d
+24
+55
+80
+28
+20
+40
+02
+da
+20
+40
+03
+05
+68
+00
+c7
+1f
+60
+00
+c7
+1e
+20
+60
+00
+00
+58
+00
+01
+77
+60
+01
+4d
+2d
+20
+60
+00
+00
+20
+00
+00
+01
+20
+00
+00
+01
+20
+00
+00
+01
+20
+00
+00
+01
+20
+00
+00
+01
+20
+00
+00
+01
+20
+00
+00
+01
+20
+00
+00
+01
+20
+00
+00
+01
+20
+00
+00
+01
+20
+00
+00
+01
+20
+00
+00
+01
+20
+00
+00
+01
+20
+00
+00
+01
+20
+00
+00
+01
+20
+00
+00
+01
+20
+00
+00
+01
+20
+00
+00
+01
+20
+00
+00
+01
+20
+00
+00
+01
+20
+00
+00
+01
+c2
+84
+00
+59
+c0
+00
+80
+6b
+c0
+01
+00
+75
+c0
+42
+87
+55
+c0
+44
+87
+26
+c0
+0d
+86
+43
+c0
+13
+06
+45
+c0
+24
+06
+61
+c0
+25
+06
+68
+c0
+28
+86
+71
+c0
+2c
+86
+5f
+c0
+53
+86
+76
+c0
+56
+86
+8c
+c0
+65
+b3
+e4
+c0
+74
+86
+9d
+c0
+50
+80
+7e
+c0
+58
+80
+83
+c0
+59
+00
+91
+c0
+62
+02
+94
+c0
+71
+85
+05
+c0
+73
+05
+2a
+c0
+75
+05
+61
+c0
+75
+85
+68
+c0
+76
+05
+7c
+20
+20
+2a
+8e
+c0
+1c
+85
+86
+c0
+21
+85
+8e
+c0
+25
+05
+94
+c0
+2b
+85
+97
+c0
+2c
+85
+99
+c0
+31
+85
+9b
+c0
+33
+05
+c5
+c0
+33
+85
+dc
+c0
+35
+06
+15
+c0
+3b
+86
+20
+c0
+02
+86
+9f
+c0
+40
+06
+a1
+c0
+41
+06
+ab
+c0
+44
+06
+ad
+c0
+46
+06
+30
+c0
+46
+86
+3c
+c0
+7d
+06
+d1
+20
+20
+2a
+8e
+d8
+a0
+09
+ae
+df
+20
+00
+0c
+20
+40
+7e
+d4
+20
+40
+03
+91
+20
+40
+74
+c1
+20
+40
+6a
+03
+20
+40
+5c
+f6
+24
+55
+ac
+65
+20
+40
+7c
+cd
+20
+20
+20
+0c
+20
+55
+b2
+e3
+20
+40
+75
+6a
+20
+55
+ab
+41
+20
+40
+76
+dc
+68
+00
+c6
+5a
+20
+3a
+20
+12
+68
+00
+c5
+b1
+20
+3a
+00
+78
+20
+20
+20
+12
+58
+00
+0a
+06
+60
+01
+c5
+10
+58
+00
+1d
+87
+60
+01
+45
+13
+20
+20
+2a
+a2
+c6
+13
+00
+00
+68
+00
+cb
+27
+24
+3a
+7f
+ef
+68
+00
+cb
+2d
+24
+3a
+7f
+ef
+68
+00
+c7
+9c
+20
+3a
+7f
+ef
+68
+00
+c7
+c4
+c0
+00
+ff
+ef
+68
+01
+42
+48
+24
+3a
+7f
+ef
+68
+00
+c8
+06
+24
+3a
+7f
+ef
+20
+20
+7f
+f1
+c6
+93
+00
+00
+68
+00
+cd
+2a
+c0
+00
+80
+a7
+20
+40
+01
+24
+24
+34
+00
+c2
+20
+40
+01
+0b
+20
+40
+01
+4f
+68
+00
+cb
+fa
+c1
+ff
+80
+00
+20
+40
+06
+fa
+20
+40
+00
+a3
+68
+00
+cb
+27
+c0
+00
+83
+83
+20
+40
+00
+ce
+24
+74
+00
+00
+20
+40
+02
+7a
+58
+00
+ec
+54
+20
+20
+2b
+93
+58
+01
+77
+00
+60
+01
+cc
+19
+70
+4b
+60
+14
+20
+60
+00
+00
+20
+40
+02
+54
+24
+74
+00
+00
+20
+40
+00
+bc
+68
+01
+4d
+2b
+1f
+e0
+fe
+01
+60
+01
+4d
+2b
+68
+09
+4d
+2d
+98
+46
+7c
+00
+20
+42
+80
+b1
+20
+20
+00
+94
+70
+4d
+2a
+00
+58
+00
+00
+00
+60
+01
+4d
+2b
+58
+00
+00
+19
+60
+01
+4d
+2d
+70
+4c
+25
+00
+68
+00
+cc
+10
+60
+00
+cc
+0f
+20
+60
+00
+00
+68
+00
+cc
+11
+20
+20
+00
+b8
+68
+00
+cc
+25
+1f
+e0
+fe
+01
+60
+00
+cc
+25
+c0
+02
+00
+ba
+c0
+02
+80
+b6
+20
+60
+00
+00
+68
+00
+cc
+16
+20
+5a
+00
+d7
+68
+00
+cb
+2d
+24
+7a
+00
+00
+68
+00
+cb
+27
+c1
+00
+80
+00
+20
+40
+00
+ce
+24
+74
+00
+00
+68
+01
+cc
+19
+20
+40
+7f
+49
+60
+0a
+41
+5b
+20
+20
+2b
+2a
+78
+34
+7c
+00
+20
+40
+2a
+fa
+68
+01
+c1
+6f
+20
+3a
+7f
+e9
+68
+00
+c0
+91
+20
+3a
+7f
+e9
+68
+00
+cd
+2a
+c0
+00
+ff
+e9
+20
+20
+02
+7d
+70
+4c
+16
+01
+70
+4d
+1f
+00
+20
+40
+00
+ea
+60
+00
+cb
+86
+58
+00
+00
+00
+60
+03
+cb
+87
+68
+02
+4c
+21
+60
+02
+4b
+8e
+70
+4b
+ea
+0c
+68
+00
+cb
+eb
+79
+20
+7e
+03
+60
+00
+cb
+eb
+20
+40
+01
+27
+20
+20
+00
+97
+68
+02
+40
+a0
+60
+02
+4c
+21
+20
+60
+00
+00
+70
+4d
+20
+01
+70
+4d
+22
+00
+68
+00
+cb
+eb
+1f
+e1
+7e
+07
+60
+00
+cb
+eb
+20
+60
+00
+00
+68
+00
+cb
+eb
+79
+20
+7e
+04
+60
+00
+cb
+eb
+60
+00
+cb
+a6
+20
+60
+00
+00
+68
+00
+cb
+eb
+c4
+02
+00
+00
+68
+00
+cb
+eb
+79
+3f
+fe
+04
+60
+00
+cb
+eb
+60
+00
+cb
+a6
+20
+40
+06
+f0
+20
+20
+01
+d2
+20
+40
+06
+f0
+70
+4d
+1d
+00
+20
+20
+00
+ea
+70
+4d
+22
+02
+70
+4d
+20
+01
+70
+4d
+1f
+00
+20
+20
+00
+ea
+68
+00
+cd
+21
+c0
+01
+80
+ff
+68
+00
+cb
+eb
+2f
+ec
+00
+04
+20
+20
+80
+e8
+68
+00
+cd
+21
+c0
+00
+80
+fe
+c0
+01
+00
+ff
+20
+60
+00
+00
+68
+00
+cb
+fa
+c1
+ff
+80
+00
+20
+40
+01
+10
+24
+56
+01
+18
+20
+60
+00
+00
+78
+56
+7c
+00
+68
+00
+cd
+20
+c1
+80
+80
+00
+68
+00
+cd
+22
+c1
+80
+00
+00
+70
+4d
+21
+01
+70
+4c
+2f
+04
+20
+20
+7f
+eb
+68
+00
+cd
+22
+20
+3a
+01
+1f
+1f
+e0
+ff
+ff
+60
+00
+cd
+22
+70
+4d
+21
+02
+70
+4c
+2f
+04
+20
+20
+01
+d2
+70
+4d
+21
+03
+68
+00
+cd
+1f
+24
+3a
+01
+47
+70
+4c
+2f
+02
+20
+20
+01
+d2
+68
+00
+cb
+fa
+c0
+ff
+81
+95
+20
+40
+01
+2a
+20
+40
+01
+c0
+70
+4b
+ef
+01
+20
+60
+00
+00
+68
+01
+4d
+1b
+20
+40
+7f
+9c
+20
+34
+01
+30
+68
+03
+cb
+87
+20
+7a
+00
+00
+20
+20
+7f
+e7
+20
+40
+03
+b1
+70
+4c
+16
+00
+1a
+20
+fe
+01
+60
+00
+cb
+ea
+20
+40
+00
+ea
+60
+00
+cb
+86
+e8
+a8
+80
+00
+ea
+40
+80
+00
+98
+41
+fe
+00
+e0
+a0
+80
+00
+1a
+40
+a4
+01
+ea
+42
+00
+00
+e0
+a2
+00
+00
+1a
+40
+a4
+04
+d8
+a0
+4b
+8c
+df
+20
+00
+02
+ea
+40
+80
+00
+e8
+a8
+80
+00
+98
+40
+fe
+00
+e0
+a0
+80
+00
+1a
+40
+a4
+01
+c2
+00
+01
+40
+20
+60
+00
+00
+68
+00
+cd
+1f
+c0
+80
+80
+ea
+68
+00
+cd
+1d
+1f
+e0
+fe
+01
+60
+00
+cd
+1d
+c0
+02
+00
+fb
+20
+40
+01
+d2
+70
+4c
+2f
+02
+70
+4b
+f3
+00
+d9
+60
+0d
+00
+34
+73
+02
+00
+20
+40
+01
+66
+24
+2c
+01
+71
+24
+37
+81
+71
+20
+40
+01
+63
+20
+40
+01
+8e
+20
+40
+06
+ec
+68
+00
+cb
+e9
+1f
+e0
+fe
+01
+60
+00
+cb
+e9
+20
+40
+00
+f3
+68
+00
+cb
+fa
+c0
+ff
+81
+97
+20
+40
+01
+02
+58
+00
+00
+00
+60
+02
+4b
+ef
+60
+00
+cd
+1e
+20
+60
+00
+00
+df
+20
+00
+04
+d8
+a0
+4b
+86
+20
+20
+7e
+c6
+78
+57
+fc
+00
+20
+40
+02
+33
+18
+00
+2a
+00
+68
+02
+4c
+12
+98
+00
+12
+00
+68
+08
+80
+17
+20
+40
+29
+1f
+20
+40
+29
+24
+20
+40
+01
+ec
+20
+57
+82
+2d
+20
+60
+00
+00
+68
+00
+cc
+16
+24
+7a
+00
+00
+68
+01
+4b
+f0
+1f
+e0
+fe
+01
+60
+01
+4b
+f0
+68
+00
+cb
+f1
+c2
+82
+2d
+d4
+68
+00
+cb
+fa
+c0
+ff
+81
+7c
+20
+40
+01
+84
+20
+20
+01
+50
+68
+00
+cb
+f0
+c1
+ff
+80
+00
+58
+00
+00
+00
+60
+01
+4b
+f0
+20
+20
+2d
+d4
+20
+40
+07
+1d
+20
+40
+06
+f0
+20
+20
+01
+d2
+68
+00
+cb
+f3
+1f
+e6
+7c
+0b
+24
+21
+01
+81
+1f
+e0
+fe
+01
+60
+00
+cb
+f3
+c0
+01
+00
+ee
+c0
+03
+00
+f5
+c0
+04
+00
+ee
+c0
+06
+00
+f5
+20
+60
+00
+00
+20
+40
+01
+a5
+68
+00
+cb
+e8
+20
+7a
+00
+00
+98
+00
+72
+00
+d8
+c0
+4b
+66
+d8
+a0
+4b
+c8
+20
+20
+7f
+01
+70
+11
+c5
+90
+20
+20
+07
+57
+20
+40
+06
+e9
+70
+11
+c5
+91
+20
+20
+07
+57
+70
+11
+c5
+70
+20
+20
+07
+57
+79
+3f
+80
+26
+20
+40
+53
+ce
+d8
+e0
+00
+03
+20
+20
+43
+d2
+60
+08
+cb
+ea
+18
+42
+72
+00
+d8
+a0
+4b
+86
+1a
+22
+0c
+00
+20
+20
+7f
+01
+68
+00
+cb
+65
+1f
+e9
+7e
+00
+60
+00
+cb
+e8
+1f
+e0
+fe
+01
+d8
+c0
+4b
+65
+98
+c0
+8c
+00
+e8
+c1
+80
+00
+60
+01
+cc
+27
+68
+00
+cb
+65
+1f
+e3
+7e
+00
+1f
+e1
+7e
+03
+60
+00
+cc
+2d
+20
+60
+00
+00
+60
+02
+4c
+12
+da
+20
+00
+00
+df
+20
+00
+04
+d8
+c0
+4c
+12
+e8
+c0
+80
+00
+9a
+20
+a2
+00
+c2
+00
+01
+b6
+1a
+22
+7e
+00
+60
+01
+4c
+9b
+68
+00
+cc
+9b
+68
+08
+cc
+9c
+98
+40
+fe
+00
+60
+00
+cc
+9d
+20
+60
+00
+00
+68
+00
+cb
+ea
+1f
+e0
+fe
+02
+60
+00
+cb
+ec
+68
+00
+cb
+eb
+60
+00
+cb
+a6
+68
+00
+cb
+ea
+1f
+e9
+fe
+00
+68
+08
+cb
+e9
+18
+41
+04
+03
+18
+43
+84
+00
+98
+41
+fe
+00
+68
+08
+cc
+26
+98
+40
+fe
+00
+e0
+a0
+80
+00
+68
+00
+cb
+ea
+98
+00
+72
+00
+d8
+c0
+4b
+86
+20
+20
+7f
+01
+68
+08
+cb
+f5
+20
+40
+01
+d6
+60
+08
+cb
+f5
+20
+60
+00
+00
+20
+40
+01
+da
+18
+40
+84
+01
+18
+41
+04
+03
+20
+60
+00
+00
+68
+00
+cc
+12
+1f
+e1
+7e
+03
+1f
+ef
+a2
+04
+58
+00
+4b
+fb
+9a
+20
+fe
+00
+98
+40
+8c
+00
+e8
+c0
+80
+00
+60
+00
+cb
+f4
+20
+60
+00
+00
+78
+44
+fc
+00
+78
+43
+fc
+00
+58
+55
+55
+55
+98
+00
+1e
+00
+68
+00
+cb
+f4
+1f
+ed
+84
+00
+79
+20
+04
+01
+18
+43
+1c
+00
+20
+60
+00
+00
+20
+40
+01
+e3
+78
+57
+fc
+00
+78
+26
+fc
+00
+78
+30
+fc
+00
+78
+50
+7c
+00
+78
+28
+7c
+00
+68
+01
+4b
+ed
+98
+00
+36
+00
+37
+c1
+84
+00
+24
+2c
+02
+2d
+78
+46
+fc
+00
+78
+25
+fc
+00
+78
+23
+fc
+00
+78
+24
+fc
+00
+20
+40
+02
+2a
+60
+00
+cc
+9e
+68
+08
+cc
+9d
+98
+46
+7c
+00
+24
+22
+82
+2d
+20
+40
+02
+2a
+60
+00
+cb
+64
+68
+00
+cb
+64
+68
+08
+cb
+eb
+a8
+40
+0e
+00
+24
+20
+82
+2d
+20
+40
+02
+2a
+e0
+a0
+80
+00
+1f
+e9
+7e
+00
+1f
+e1
+72
+1f
+20
+22
+82
+0d
+20
+40
+02
+2a
+e0
+a0
+80
+00
+c2
+00
+02
+0a
+18
+a2
+22
+00
+20
+40
+02
+2a
+60
+00
+cd
+25
+1a
+22
+0a
+00
+09
+80
+00
+18
+78
+28
+7c
+00
+db
+60
+06
+64
+1f
+ef
+7e
+00
+1f
+f1
+7e
+00
+e0
+a1
+80
+00
+78
+45
+fc
+00
+20
+23
+02
+2d
+78
+37
+fc
+00
+68
+00
+80
+17
+1f
+e0
+a2
+00
+20
+40
+29
+81
+78
+46
+fc
+00
+20
+40
+29
+18
+68
+00
+cd
+25
+1f
+e2
+22
+00
+68
+08
+cc
+a5
+58
+00
+4c
+ac
+98
+40
+8a
+00
+1a
+22
+7e
+00
+e0
+a0
+80
+00
+18
+40
+84
+01
+18
+41
+04
+07
+60
+08
+cc
+a5
+20
+60
+00
+00
+09
+80
+00
+08
+19
+89
+7e
+00
+20
+60
+00
+00
+78
+4d
+fc
+00
+78
+45
+fc
+00
+20
+20
+26
+4d
+20
+40
+29
+18
+68
+08
+cb
+f4
+20
+20
+29
+33
+20
+40
+53
+c4
+68
+02
+4c
+12
+98
+00
+12
+00
+20
+40
+01
+e3
+20
+40
+02
+30
+79
+20
+2a
+00
+78
+2e
+fc
+00
+78
+30
+7c
+00
+78
+50
+fc
+00
+19
+31
+7e
+00
+1f
+ec
+fe
+00
+1f
+f1
+fe
+00
+08
+00
+86
+28
+78
+4e
+fc
+00
+78
+2d
+fc
+00
+78
+23
+fc
+00
+78
+24
+fc
+00
+68
+00
+cc
+9d
+08
+00
+86
+08
+68
+00
+cb
+ec
+98
+00
+72
+00
+d8
+c0
+4b
+a6
+e8
+c0
+80
+00
+08
+00
+86
+08
+c2
+00
+02
+49
+78
+24
+7c
+00
+08
+00
+86
+18
+78
+44
+7c
+00
+37
+d3
+82
+00
+20
+00
+00
+64
+78
+4e
+fc
+00
+78
+4d
+fc
+00
+20
+60
+00
+00
+20
+40
+7f
+e9
+68
+0a
+4c
+0b
+1c
+42
+7e
+00
+98
+46
+7c
+00
+24
+41
+2d
+18
+1f
+e2
+24
+00
+68
+02
+4c
+0b
+68
+08
+cc
+0f
+98
+40
+84
+00
+1a
+42
+7e
+00
+98
+46
+7c
+00
+24
+61
+00
+00
+79
+3f
+fe
+1c
+60
+02
+4c
+0b
+20
+20
+7f
+e7
+d8
+40
+00
+00
+df
+20
+00
+08
+1a
+22
+0c
+00
+e8
+c0
+80
+00
+98
+40
+84
+00
+c2
+00
+02
+66
+18
+49
+7e
+00
+1f
+e2
+04
+00
+c6
+93
+00
+00
+1f
+e6
+fc
+0a
+20
+40
+7f
+86
+18
+07
+fe
+00
+1f
+f2
+7e
+00
+18
+07
+04
+00
+98
+41
+84
+00
+20
+60
+00
+00
+c6
+13
+00
+00
+20
+40
+03
+87
+20
+40
+02
+7d
+68
+00
+c0
+40
+c3
+00
+02
+7a
+68
+00
+80
+a0
+24
+7a
+00
+00
+58
+00
+00
+00
+60
+04
+00
+a1
+20
+60
+00
+00
+20
+40
+02
+91
+20
+40
+02
+7a
+20
+40
+3e
+bf
+20
+40
+03
+0e
+68
+12
+00
+70
+68
+1a
+00
+78
+98
+41
+84
+00
+18
+44
+04
+00
+60
+1a
+00
+7c
+68
+10
+80
+7d
+79
+3f
+fe
+02
+60
+10
+80
+7d
+68
+10
+80
+7e
+79
+3f
+fe
+06
+60
+10
+80
+7e
+68
+08
+c6
+ec
+20
+40
+02
+8f
+68
+08
+cb
+26
+79
+3f
+84
+07
+20
+20
+68
+06
+68
+00
+ca
+fe
+20
+7a
+00
+00
+20
+20
+05
+05
+70
+89
+5b
+86
+70
+89
+5c
+a0
+20
+40
+29
+6c
+20
+40
+34
+16
+20
+40
+74
+b9
+20
+35
+83
+36
+68
+01
+c4
+a3
+60
+01
+cd
+2f
+20
+40
+00
+01
+68
+00
+c2
+41
+c2
+81
+02
+a1
+20
+40
+05
+39
+c0
+02
+82
+d8
+20
+40
+02
+aa
+68
+00
+c7
+20
+c0
+01
+02
+af
+c0
+7f
+82
+af
+20
+40
+04
+f1
+68
+00
+c2
+10
+c0
+19
+82
+b7
+c0
+1a
+02
+ba
+20
+20
+04
+b6
+68
+00
+cc
+a1
+60
+00
+c1
+de
+20
+60
+00
+00
+68
+00
+c6
+f5
+20
+20
+43
+60
+70
+47
+20
+02
+20
+40
+04
+f1
+20
+40
+03
+6e
+20
+34
+01
+9a
+20
+40
+03
+77
+20
+34
+01
+9a
+70
+11
+c5
+60
+20
+20
+07
+57
+68
+03
+41
+d0
+20
+3a
+33
+eb
+20
+20
+42
+74
+70
+4b
+62
+01
+70
+47
+9f
+01
+68
+01
+46
+a8
+68
+08
+cd
+32
+18
+46
+7c
+ff
+24
+22
+82
+c1
+58
+00
+02
+58
+60
+01
+46
+ae
+20
+40
+34
+18
+20
+40
+02
+c9
+58
+00
+00
+04
+e0
+c0
+80
+00
+d8
+c0
+43
+90
+20
+40
+05
+78
+20
+20
+7d
+f4
+da
+20
+43
+70
+ea
+20
+80
+00
+20
+7a
+00
+00
+98
+c0
+a2
+00
+e8
+c0
+80
+00
+c1
+00
+80
+00
+20
+20
+02
+ca
+70
+4d
+32
+5a
+20
+60
+00
+00
+70
+4d
+32
+ff
+70
+42
+10
+34
+58
+0f
+0f
+0f
+60
+01
+c4
+a0
+60
+01
+c4
+a3
+20
+60
+00
+00
+70
+11
+c5
+61
+20
+20
+07
+57
+20
+40
+03
+36
+20
+40
+40
+c0
+20
+40
+40
+d9
+c0
+18
+02
+e4
+c0
+18
+82
+f6
+20
+40
+40
+d1
+20
+00
+03
+e8
+20
+20
+02
+dc
+70
+4a
+fe
+01
+20
+20
+02
+da
+20
+40
+02
+fb
+68
+00
+c6
+de
+c0
+2d
+02
+e8
+20
+20
+40
+e1
+70
+46
+e0
+07
+58
+00
+80
+06
+20
+40
+64
+13
+20
+40
+7e
+c1
+da
+60
+4d
+33
+20
+40
+02
+ef
+20
+20
+02
+ff
+ea
+61
+00
+00
+d8
+40
+ff
+ff
+98
+46
+7c
+00
+20
+62
+80
+00
+20
+40
+64
+13
+1a
+60
+a6
+02
+20
+20
+02
+ef
+20
+40
+02
+fb
+68
+00
+c6
+de
+c0
+38
+40
+e8
+70
+46
+e0
+01
+20
+60
+00
+00
+20
+40
+03
+36
+58
+00
+80
+06
+20
+40
+64
+13
+20
+00
+2e
+e0
+68
+00
+c7
+7a
+c0
+7f
+83
+02
+20
+20
+05
+05
+68
+00
+c6
+e1
+60
+00
+c7
+7a
+20
+20
+05
+05
+20
+40
+02
+da
+58
+00
+00
+06
+20
+40
+64
+14
+1f
+e1
+fe
+08
+1f
+ed
+7e
+00
+1f
+e0
+fe
+06
+20
+20
+64
+13
+70
+11
+c5
+80
+20
+20
+07
+57
+68
+08
+cb
+45
+20
+20
+68
+25
+70
+80
+86
+40
+70
+80
+87
+00
+68
+10
+80
+81
+79
+3f
+fe
+00
+79
+3f
+fe
+01
+79
+20
+7e
+03
+79
+3f
+fe
+04
+60
+10
+80
+81
+58
+00
+00
+00
+60
+02
+01
+f5
+68
+10
+80
+7f
+79
+3f
+fe
+00
+60
+10
+80
+7f
+20
+60
+00
+00
+20
+40
+03
+6c
+20
+40
+44
+23
+68
+01
+47
+78
+d8
+40
+aa
+55
+98
+46
+7c
+00
+20
+22
+83
+5c
+60
+09
+47
+78
+20
+40
+44
+1c
+68
+00
+c6
+e1
+60
+00
+c7
+7a
+20
+40
+03
+6c
+20
+40
+03
+3c
+20
+40
+03
+53
+20
+40
+03
+48
+20
+40
+03
+3f
+20
+40
+03
+10
+d8
+40
+00
+02
+da
+20
+47
+c2
+da
+40
+00
+5f
+68
+01
+c7
+00
+9a
+40
+fe
+00
+20
+40
+03
+48
+20
+40
+03
+3f
+20
+40
+03
+64
+70
+42
+12
+76
+20
+20
+3d
+36
+d8
+40
+00
+04
+da
+20
+4c
+12
+da
+40
+00
+5b
+20
+60
+00
+00
+68
+01
+c7
+00
+60
+01
+c2
+32
+20
+40
+65
+2a
+58
+01
+86
+a0
+20
+40
+2a
+8f
+20
+40
+65
+0b
+58
+00
+01
+fa
+60
+11
+00
+8c
+58
+00
+00
+05
+20
+40
+64
+f3
+c2
+80
+03
+3f
+20
+60
+00
+00
+1f
+e2
+26
+00
+1a
+22
+7e
+00
+1f
+e0
+ff
+fc
+1f
+e2
+24
+00
+ea
+42
+00
+00
+60
+02
+4b
+47
+1a
+62
+7e
+00
+20
+40
+65
+52
+68
+02
+4b
+47
+e2
+42
+00
+00
+20
+60
+00
+00
+58
+00
+47
+7f
+d8
+40
+47
+20
+98
+46
+04
+00
+68
+01
+c7
+00
+da
+20
+47
+20
+20
+60
+00
+00
+20
+40
+03
+6c
+20
+40
+03
+53
+20
+20
+65
+62
+20
+40
+03
+59
+20
+40
+05
+71
+20
+40
+05
+6a
+20
+40
+02
+ad
+20
+40
+43
+1a
+68
+02
+47
+7b
+60
+02
+4c
+12
+20
+60
+00
+00
+70
+0a
+a2
+b9
+20
+40
+03
+10
+20
+40
+69
+ac
+20
+40
+65
+0b
+da
+20
+4b
+47
+68
+08
+8a
+a2
+20
+40
+65
+56
+20
+20
+69
+ac
+70
+0a
+a2
+ab
+20
+20
+03
+65
+df
+20
+00
+02
+d8
+c0
+4c
+12
+20
+40
+7f
+e7
+58
+00
+ff
+ff
+e8
+c9
+00
+00
+98
+46
+7c
+00
+24
+42
+ff
+e9
+c2
+00
+03
+72
+20
+60
+00
+00
+df
+20
+00
+02
+d8
+c0
+4c
+12
+20
+40
+7f
+e7
+58
+00
+00
+00
+e8
+c9
+00
+00
+98
+46
+7c
+00
+24
+42
+ff
+e9
+c2
+00
+03
+72
+20
+60
+00
+00
+20
+40
+44
+01
+68
+01
+46
+9f
+20
+7a
+00
+00
+70
+4d
+2a
+01
+58
+00
+00
+00
+60
+01
+4d
+2b
+20
+60
+00
+00
+d8
+c0
+18
+00
+d8
+a0
+48
+0a
+20
+40
+03
+8f
+d8
+c0
+19
+00
+20
+40
+03
+8f
+d8
+c0
+1a
+00
+20
+40
+03
+8f
+d8
+c0
+1b
+00
+df
+20
+00
+1b
+20
+20
+7f
+01
+d8
+c0
+48
+0a
+d8
+a0
+18
+00
+20
+40
+03
+8f
+d8
+a0
+19
+00
+20
+40
+03
+8f
+d8
+a0
+1a
+00
+20
+40
+03
+8f
+d8
+a0
+1b
+00
+20
+20
+03
+8f
+20
+40
+58
+92
+24
+7a
+00
+00
+68
+00
+cd
+32
+c0
+7f
+83
+a1
+68
+00
+c6
+c5
+1f
+e1
+7e
+03
+c1
+81
+80
+00
+68
+00
+c7
+9c
+20
+5a
+03
+f7
+68
+02
+46
+d3
+c2
+82
+c1
+79
+20
+40
+3f
+97
+24
+74
+00
+00
+20
+40
+03
+ae
+20
+40
+03
+b1
+20
+40
+03
+cd
+da
+20
+46
+9a
+20
+40
+7e
+3d
+20
+54
+03
+bc
+20
+60
+00
+00
+70
+41
+72
+00
+70
+4b
+5f
+1e
+20
+60
+00
+00
+68
+00
+cb
+5e
+c1
+80
+80
+00
+58
+00
+00
+00
+60
+00
+cb
+5e
+60
+02
+46
+9b
+20
+20
+02
+fb
+70
+47
+a0
+07
+70
+47
+a1
+04
+58
+00
+47
+a0
+60
+01
+42
+18
+20
+20
+7e
+38
+68
+00
+c7
+c1
+1f
+e0
+fe
+01
+60
+00
+c7
+c1
+20
+60
+00
+00
+da
+20
+46
+9a
+20
+40
+7e
+54
+20
+34
+03
+c4
+20
+60
+00
+00
+20
+40
+56
+52
+68
+00
+c7
+c1
+1f
+e6
+7c
+01
+24
+41
+56
+50
+68
+00
+c7
+c1
+20
+7a
+00
+00
+1f
+e0
+ff
+ff
+60
+00
+c7
+c1
+20
+20
+3f
+90
+68
+01
+46
+9f
+20
+7a
+00
+00
+70
+48
+06
+01
+70
+48
+07
+0a
+20
+60
+00
+00
+20
+77
+00
+00
+68
+00
+c1
+e2
+20
+7a
+00
+00
+20
+40
+52
+71
+24
+7a
+00
+00
+68
+00
+c7
+9c
+20
+5a
+03
+f7
+68
+02
+46
+d3
+c2
+82
+bf
+8a
+c2
+84
+bf
+8a
+20
+40
+3f
+97
+24
+74
+00
+00
+20
+40
+03
+ae
+20
+40
+03
+b1
+20
+40
+03
+cd
+68
+00
+cb
+03
+c0
+00
+83
+e6
+68
+00
+cb
+0a
+20
+7a
+00
+00
+20
+20
+3f
+81
+68
+00
+c6
+9a
+60
+00
+cb
+04
+68
+00
+c6
+9b
+e0
+a0
+80
+00
+68
+00
+c6
+9d
+e0
+a0
+80
+00
+68
+01
+46
+9f
+e0
+a1
+00
+00
+da
+20
+00
+07
+20
+40
+4d
+63
+68
+01
+42
+4e
+e0
+a1
+00
+00
+58
+00
+02
+a1
+e0
+a1
+00
+00
+68
+02
+cb
+04
+e0
+a2
+80
+00
+20
+60
+00
+00
+70
+47
+9c
+01
+20
+40
+58
+14
+20
+20
+02
+e2
+20
+40
+7e
+34
+20
+20
+3e
+e0
+68
+08
+c6
+e7
+20
+40
+05
+4c
+68
+08
+c6
+e7
+20
+40
+68
+1d
+20
+20
+84
+0e
+20
+40
+05
+55
+68
+00
+c6
+b6
+c1
+00
+00
+00
+70
+46
+b6
+00
+68
+00
+c7
+7a
+1f
+e0
+fe
+01
+1f
+e1
+7e
+03
+60
+00
+c7
+7a
+1f
+e0
+fe
+02
+60
+00
+cb
+2d
+20
+40
+05
+02
+20
+40
+3d
+7e
+20
+20
+03
+28
+20
+40
+05
+55
+20
+20
+3d
+62
+1a
+62
+7e
+00
+c0
+0a
+04
+22
+c0
+0a
+84
+25
+c0
+14
+84
+28
+c0
+19
+04
+2a
+c0
+20
+04
+2c
+c0
+02
+04
+2e
+c0
+09
+84
+2e
+c0
+13
+84
+30
+c0
+0c
+b3
+df
+c0
+10
+84
+32
+c0
+00
+84
+34
+c0
+01
+04
+39
+c0
+15
+84
+3c
+c0
+1c
+84
+3e
+c0
+1d
+04
+41
+c0
+1e
+04
+44
+20
+20
+41
+7d
+20
+40
+02
+e2
+70
+11
+c5
+b0
+20
+20
+07
+57
+20
+40
+04
+4c
+70
+11
+c5
+a2
+20
+20
+07
+57
+70
+0a
+99
+12
+20
+20
+7d
+8f
+70
+11
+c5
+b3
+20
+20
+07
+57
+70
+11
+c5
+a1
+20
+20
+07
+57
+70
+11
+c5
+a3
+20
+20
+07
+57
+20
+40
+43
+8e
+20
+20
+33
+a7
+70
+11
+c5
+b1
+20
+20
+07
+57
+20
+40
+02
+e2
+20
+40
+04
+b9
+20
+40
+04
+fd
+70
+48
+09
+00
+20
+20
+42
+ca
+20
+40
+04
+4c
+70
+11
+c5
+b4
+20
+20
+07
+57
+70
+11
+c5
+b2
+20
+20
+07
+57
+20
+40
+02
+e2
+70
+11
+c5
+92
+20
+20
+07
+57
+20
+40
+04
+4c
+70
+11
+c5
+a0
+20
+20
+07
+57
+20
+40
+04
+b9
+20
+40
+02
+e2
+20
+40
+3f
+8d
+20
+40
+43
+66
+20
+20
+03
+28
+20
+40
+04
+4c
+70
+11
+c5
+a4
+20
+20
+07
+57
+68
+00
+ca
+fe
+20
+7a
+00
+00
+70
+4a
+fe
+00
+20
+20
+03
+05
+20
+40
+03
+fc
+20
+40
+04
+bc
+20
+40
+04
+8f
+20
+40
+04
+ab
+20
+40
+04
+94
+20
+40
+42
+34
+20
+40
+04
+60
+20
+40
+04
+88
+20
+40
+42
+37
+20
+40
+04
+71
+20
+40
+04
+7a
+20
+40
+04
+80
+20
+40
+04
+69
+20
+40
+42
+31
+20
+40
+04
+6c
+20
+20
+42
+3a
+68
+08
+c6
+ed
+20
+40
+68
+1d
+20
+20
+84
+66
+68
+00
+c7
+20
+c0
+80
+e5
+9a
+20
+60
+00
+00
+68
+00
+c7
+20
+c0
+81
+65
+9a
+20
+60
+00
+00
+da
+60
+48
+09
+da
+40
+63
+7a
+20
+20
+33
+6d
+da
+60
+4b
+09
+da
+40
+04
+6f
+20
+20
+33
+6d
+70
+4b
+0a
+01
+20
+60
+00
+00
+da
+60
+46
+c6
+da
+40
+3d
+60
+20
+20
+33
+6d
+da
+60
+46
+ae
+da
+40
+04
+77
+20
+20
+33
+74
+68
+00
+cb
+2f
+24
+7a
+00
+00
+20
+20
+42
+66
+da
+60
+4b
+5f
+da
+40
+04
+7d
+20
+20
+33
+6d
+68
+00
+c7
+c5
+60
+00
+c1
+72
+20
+20
+04
+8d
+68
+00
+cb
+63
+20
+7a
+00
+00
+da
+60
+4b
+61
+da
+40
+04
+85
+20
+20
+33
+6d
+68
+00
+cb
+62
+24
+7a
+00
+00
+20
+20
+5b
+f5
+da
+60
+4b
+60
+da
+40
+04
+8b
+20
+20
+33
+6d
+58
+24
+9f
+00
+60
+01
+cc
+19
+70
+4b
+5e
+01
+20
+60
+00
+00
+da
+60
+48
+07
+da
+40
+04
+92
+20
+20
+33
+6d
+70
+48
+06
+00
+20
+60
+00
+00
+68
+00
+c7
+20
+c1
+01
+00
+00
+68
+08
+c6
+ec
+20
+40
+68
+1d
+20
+20
+84
+9c
+20
+40
+43
+a9
+d8
+e0
+00
+09
+20
+20
+43
+d2
+70
+47
+9e
+28
+20
+40
+04
+9f
+20
+20
+43
+b0
+da
+60
+46
+da
+da
+40
+04
+a2
+20
+20
+33
+6d
+68
+01
+46
+82
+2f
+ef
+fe
+0b
+20
+40
+c2
+d4
+68
+01
+46
+82
+2f
+ef
+fe
+07
+20
+40
+c3
+92
+d8
+e0
+00
+09
+20
+40
+43
+ce
+20
+20
+43
+b8
+68
+00
+cb
+2f
+24
+7a
+00
+00
+68
+00
+c7
+9d
+20
+7a
+00
+00
+68
+00
+c7
+9e
+20
+3a
+04
+b4
+1f
+e0
+ff
+ff
+60
+00
+c7
+9e
+20
+60
+00
+00
+70
+47
+9d
+00
+20
+20
+34
+0a
+70
+47
+9d
+01
+70
+47
+9e
+28
+20
+60
+00
+00
+70
+47
+9d
+00
+70
+47
+9e
+00
+20
+60
+00
+00
+68
+00
+cb
+25
+20
+7a
+00
+00
+68
+00
+cb
+28
+c0
+00
+04
+c2
+c0
+00
+84
+cc
+20
+60
+00
+00
+20
+40
+04
+dc
+68
+00
+cb
+29
+1f
+e0
+fe
+01
+60
+00
+cb
+29
+68
+08
+cb
+2a
+98
+46
+7c
+00
+20
+42
+84
+ca
+20
+60
+00
+00
+70
+4b
+2f
+00
+20
+20
+04
+ea
+68
+00
+cb
+2c
+1f
+e0
+ff
+ff
+60
+00
+cb
+2c
+24
+7a
+00
+00
+68
+00
+cb
+2b
+60
+00
+cb
+2c
+68
+00
+cb
+2e
+20
+3a
+04
+d8
+68
+00
+cb
+2d
+20
+3a
+04
+e8
+1f
+e0
+ff
+ff
+60
+00
+cb
+2d
+68
+00
+cb
+27
+c0
+00
+84
+ea
+c0
+00
+04
+dc
+20
+60
+00
+00
+70
+4b
+27
+01
+68
+00
+c7
+20
+c0
+01
+04
+e3
+68
+08
+cb
+26
+20
+40
+68
+0e
+68
+08
+cb
+26
+20
+20
+68
+25
+68
+08
+cb
+26
+79
+20
+04
+07
+20
+40
+68
+0e
+68
+08
+cb
+26
+20
+20
+68
+29
+58
+00
+00
+00
+60
+01
+cb
+2c
+68
+00
+cb
+2d
+24
+3a
+04
+ee
+70
+4b
+25
+00
+70
+4b
+28
+00
+70
+4b
+29
+00
+70
+4b
+27
+00
+20
+20
+02
+8e
+70
+4b
+2f
+01
+70
+4b
+25
+01
+70
+4b
+28
+00
+70
+4b
+29
+00
+20
+60
+00
+00
+70
+4b
+2b
+03
+70
+4b
+2e
+00
+70
+4b
+2d
+01
+70
+4b
+2c
+05
+70
+4b
+25
+01
+70
+4b
+28
+01
+20
+60
+00
+00
+68
+00
+cb
+29
+24
+7a
+00
+00
+68
+00
+cb
+2f
+24
+7a
+00
+00
+20
+20
+04
+e8
+70
+4b
+2b
+03
+70
+4b
+2e
+01
+20
+20
+04
+f9
+68
+00
+c6
+e0
+c0
+01
+05
+22
+c0
+03
+05
+12
+c0
+03
+85
+1a
+68
+00
+c7
+7a
+20
+5a
+05
+18
+68
+00
+c7
+7a
+c0
+00
+85
+0f
+c0
+01
+bd
+8c
+20
+20
+3d
+88
+68
+00
+c7
+7f
+1f
+e0
+ff
+ff
+20
+20
+3d
+be
+68
+00
+c7
+7a
+20
+5a
+05
+18
+68
+00
+c7
+7a
+c0
+00
+85
+20
+c0
+01
+bd
+8c
+20
+20
+3d
+88
+70
+47
+7a
+01
+20
+60
+00
+00
+68
+00
+c7
+7a
+20
+5a
+05
+18
+68
+00
+c7
+7a
+c0
+00
+85
+20
+c0
+01
+bd
+88
+20
+20
+3d
+8a
+70
+46
+b5
+00
+20
+20
+3d
+c1
+68
+00
+c7
+7a
+20
+5a
+05
+18
+68
+00
+c7
+7a
+c0
+00
+bd
+88
+c0
+01
+85
+28
+20
+20
+3d
+8e
+58
+00
+00
+05
+20
+20
+3d
+be
+78
+54
+7c
+00
+58
+00
+00
+00
+60
+03
+46
+9b
+20
+40
+05
+5d
+20
+40
+40
+79
+20
+40
+40
+7e
+20
+40
+05
+37
+24
+34
+05
+34
+20
+40
+07
+78
+20
+20
+3f
+a0
+20
+40
+07
+81
+70
+4b
+37
+00
+20
+60
+00
+00
+20
+40
+05
+39
+20
+20
+40
+9a
+da
+20
+00
+00
+20
+40
+05
+3c
+20
+20
+40
+8e
+68
+08
+c6
+e2
+20
+40
+05
+55
+68
+08
+c6
+e2
+20
+40
+68
+1d
+79
+20
+a2
+00
+68
+08
+c6
+e3
+20
+40
+05
+55
+68
+08
+c6
+e3
+20
+40
+68
+1d
+79
+20
+a2
+01
+68
+08
+c6
+e4
+20
+40
+05
+4c
+68
+08
+c6
+e4
+20
+40
+68
+1d
+7d
+20
+a2
+02
+20
+60
+00
+00
+79
+3f
+84
+07
+d8
+a0
+80
+78
+20
+40
+68
+30
+79
+20
+04
+07
+d8
+a0
+80
+7c
+20
+40
+68
+30
+79
+3f
+84
+07
+d8
+a0
+80
+70
+20
+20
+68
+30
+79
+20
+04
+07
+d8
+a0
+80
+78
+20
+40
+68
+30
+79
+3f
+84
+07
+20
+20
+05
+50
+68
+08
+c6
+ed
+79
+3f
+84
+07
+20
+20
+05
+56
+68
+00
+c6
+e0
+20
+40
+3f
+c0
+78
+54
+7c
+00
+20
+20
+3f
+e7
+20
+40
+04
+ca
+20
+40
+04
+b9
+28
+0f
+fe
+26
+20
+40
+81
+9c
+20
+20
+42
+6d
+70
+11
+c5
+81
+20
+20
+07
+57
+70
+11
+c5
+50
+20
+20
+07
+57
+20
+40
+03
+6c
+d8
+40
+00
+02
+da
+20
+47
+c2
+da
+40
+00
+5f
+68
+01
+c7
+00
+9a
+40
+fe
+00
+20
+20
+65
+62
+20
+40
+03
+6c
+d8
+40
+00
+01
+da
+20
+4d
+32
+da
+40
+00
+64
+68
+01
+c7
+00
+9a
+40
+fe
+00
+20
+20
+65
+62
+d8
+a0
+43
+7b
+df
+20
+00
+13
+20
+40
+7f
+01
+20
+20
+57
+b8
+58
+00
+00
+00
+60
+01
+46
+ac
+20
+40
+02
+fb
+68
+00
+c0
+92
+2f
+ef
+fe
+01
+20
+40
+c2
+d4
+68
+00
+c0
+92
+2f
+ef
+fe
+00
+20
+40
+c2
+d7
+20
+20
+04
+fd
+68
+00
+c5
+0f
+1f
+e0
+fe
+01
+60
+00
+c5
+0f
+c0
+06
+53
+95
+20
+40
+55
+aa
+20
+40
+56
+1e
+20
+40
+06
+fa
+20
+20
+53
+8f
+68
+00
+80
+16
+1f
+e0
+fe
+01
+60
+00
+80
+16
+c1
+94
+00
+00
+70
+00
+16
+25
+20
+60
+00
+00
+20
+40
+29
+bb
+20
+40
+02
+20
+20
+20
+54
+a3
+70
+11
+c5
+40
+20
+20
+07
+57
+70
+11
+c5
+41
+20
+20
+07
+57
+68
+00
+84
+56
+c2
+82
+85
+af
+20
+40
+06
+ec
+68
+00
+c7
+8e
+24
+3a
+05
+a5
+68
+00
+84
+3f
+c3
+02
+05
+a9
+68
+00
+82
+da
+20
+3a
+05
+a9
+20
+20
+56
+64
+68
+00
+c7
+8e
+1f
+e0
+ff
+ff
+60
+00
+c7
+8e
+20
+20
+56
+64
+68
+00
+c4
+c4
+c0
+82
+85
+ac
+70
+47
+8e
+03
+20
+40
+58
+92
+20
+5a
+03
+c0
+20
+20
+56
+22
+20
+40
+05
+b1
+20
+20
+05
+bd
+68
+00
+c6
+c5
+1f
+e1
+7e
+03
+c1
+81
+80
+00
+68
+00
+c7
+c1
+20
+7a
+00
+00
+68
+00
+c3
+dd
+20
+7a
+00
+00
+68
+00
+c3
+dc
+79
+20
+7e
+04
+60
+00
+c3
+dc
+20
+40
+56
+50
+20
+60
+00
+00
+20
+20
+06
+f0
+68
+00
+c7
+9f
+20
+7a
+00
+00
+68
+00
+c6
+c5
+1f
+e1
+7e
+03
+c1
+01
+80
+00
+70
+46
+c6
+01
+20
+60
+00
+00
+c6
+07
+80
+00
+20
+40
+58
+90
+24
+7a
+00
+00
+68
+00
+82
+d9
+1f
+e1
+7e
+03
+60
+00
+c5
+0c
+e8
+c0
+80
+00
+1f
+e1
+7e
+1f
+60
+00
+c5
+0b
+20
+7a
+00
+00
+18
+c2
+7e
+00
+60
+01
+45
+0d
+68
+00
+c5
+0c
+c0
+01
+85
+d4
+20
+20
+56
+8d
+68
+00
+82
+db
+c0
+00
+85
+d7
+20
+20
+5c
+65
+e8
+c2
+80
+00
+60
+02
+c3
+ce
+e8
+c1
+00
+00
+60
+01
+04
+5f
+20
+20
+5c
+8a
+e8
+c1
+00
+00
+c0
+02
+05
+e0
+c0
+03
+06
+0d
+20
+20
+56
+98
+20
+40
+7e
+a5
+20
+40
+05
+be
+20
+40
+7e
+9f
+e8
+c1
+80
+00
+60
+01
+84
+77
+c0
+08
+05
+ef
+1f
+ec
+84
+00
+18
+46
+7c
+24
+20
+21
+05
+fd
+d8
+40
+47
+c6
+60
+09
+44
+bc
+20
+40
+58
+ad
+58
+00
+8e
+7a
+60
+01
+44
+bc
+20
+60
+00
+00
+20
+40
+59
+fa
+20
+40
+58
+79
+18
+c0
+8c
+07
+e8
+c0
+80
+00
+c1
+88
+80
+00
+18
+c0
+8c
+05
+e8
+c1
+00
+00
+d8
+40
+18
+12
+98
+46
+7c
+00
+24
+62
+80
+00
+18
+c0
+8d
+fc
+58
+00
+00
+2b
+e0
+c1
+00
+00
+20
+60
+00
+00
+c0
+05
+05
+ff
+20
+20
+58
+ad
+68
+09
+04
+78
+68
+00
+c4
+e9
+c2
+81
+86
+06
+68
+01
+04
+78
+c0
+09
+da
+76
+68
+09
+04
+78
+20
+20
+59
+bf
+68
+01
+44
+fa
+98
+46
+7c
+00
+24
+22
+86
+02
+20
+40
+5a
+42
+24
+34
+06
+02
+70
+04
+7a
+05
+20
+20
+5a
+77
+e8
+c0
+80
+00
+c0
+00
+86
+11
+c0
+02
+86
+13
+20
+20
+5a
+f6
+70
+4b
+62
+01
+20
+20
+5b
+09
+70
+11
+c5
+82
+20
+20
+07
+57
+68
+00
+80
+16
+c0
+93
+d6
+f2
+20
+40
+06
+1b
+d8
+e0
+00
+00
+68
+01
+44
+82
+20
+20
+7f
+08
+18
+0a
+7e
+00
+d8
+40
+01
+ff
+98
+41
+7e
+00
+1f
+e0
+fe
+fa
+20
+20
+3c
+be
+78
+55
+fc
+00
+20
+37
+06
+23
+24
+36
+d8
+06
+20
+40
+2b
+cb
+68
+01
+40
+c1
+60
+01
+04
+4d
+68
+00
+c6
+c5
+2f
+e0
+06
+03
+24
+20
+ab
+de
+20
+20
+57
+fb
+68
+00
+c7
+9f
+24
+7a
+00
+00
+68
+00
+84
+78
+1f
+e6
+7e
+1a
+24
+62
+80
+00
+20
+20
+3d
+60
+68
+10
+80
+77
+1f
+e1
+7e
+fd
+60
+10
+80
+77
+68
+18
+80
+73
+18
+41
+84
+02
+60
+18
+80
+73
+20
+40
+63
+ee
+18
+41
+04
+fd
+20
+00
+00
+0d
+20
+40
+06
+3d
+60
+18
+80
+73
+20
+60
+00
+00
+20
+40
+64
+dd
+68
+10
+80
+81
+79
+20
+7e
+00
+79
+3f
+fe
+01
+79
+3f
+fe
+03
+60
+10
+80
+81
+20
+60
+00
+00
+70
+11
+c5
+00
+20
+20
+07
+57
+20
+40
+21
+c9
+24
+74
+00
+00
+78
+54
+7c
+00
+70
+00
+11
+20
+79
+3f
+80
+0b
+79
+3f
+80
+2d
+20
+40
+2a
+4f
+20
+40
+22
+e6
+c5
+05
+86
+52
+20
+40
+24
+55
+24
+3a
+06
+4b
+c5
+16
+86
+5b
+20
+20
+21
+ec
+20
+40
+2a
+4d
+d8
+20
+00
+10
+20
+40
+22
+dc
+79
+20
+00
+2d
+79
+3f
+80
+0b
+68
+00
+80
+77
+98
+00
+08
+00
+70
+00
+11
+02
+20
+20
+06
+4b
+68
+02
+01
+65
+1f
+e0
+fe
+08
+60
+02
+01
+65
+20
+20
+21
+f8
+c5
+16
+26
+4d
+20
+20
+25
+8f
+20
+40
+33
+af
+20
+40
+26
+e9
+70
+0a
+99
+02
+20
+40
+7d
+86
+20
+40
+5c
+f7
+20
+40
+4d
+6b
+20
+20
+24
+6e
+68
+00
+80
+30
+2f
+ef
+fe
+00
+20
+40
+86
+6c
+20
+20
+24
+8a
+68
+00
+80
+47
+2f
+ef
+fe
+03
+20
+40
+86
+f0
+24
+40
+86
+ec
+20
+20
+06
+fa
+20
+40
+24
+f0
+24
+2c
+28
+f9
+20
+40
+29
+bb
+20
+40
+02
+20
+20
+20
+25
+18
+c6
+13
+00
+00
+20
+40
+2a
+fa
+68
+01
+c1
+6f
+20
+7a
+00
+00
+68
+00
+c0
+91
+20
+7a
+00
+00
+68
+00
+c6
+5a
+20
+3a
+06
+80
+68
+00
+c5
+b1
+20
+7a
+00
+00
+68
+00
+c4
+c0
+24
+7a
+00
+00
+20
+40
+2c
+3a
+24
+7a
+00
+00
+68
+00
+c0
+40
+2f
+e0
+0e
+03
+24
+20
+ab
+9d
+68
+01
+40
+42
+d8
+40
+ff
+ff
+98
+46
+7c
+00
+20
+62
+80
+00
+20
+20
+2b
+7d
+78
+55
+fc
+00
+68
+00
+80
+30
+c4
+00
+80
+00
+24
+36
+ab
+d0
+20
+40
+2b
+cb
+68
+01
+40
+c1
+60
+01
+00
+3e
+68
+00
+80
+47
+c2
+81
+ab
+de
+c5
+86
+ab
+de
+20
+40
+52
+74
+24
+3a
+2b
+de
+20
+5a
+06
+9a
+20
+20
+2b
+be
+70
+00
+8a
+01
+70
+00
+8b
+00
+20
+60
+00
+00
+70
+11
+c5
+10
+20
+20
+07
+57
+70
+11
+c5
+11
+20
+20
+07
+57
+68
+00
+85
+52
+60
+00
+84
+c9
+c0
+09
+86
+a5
+20
+20
+5d
+b4
+20
+40
+5d
+cf
+70
+4a
+ff
+01
+68
+00
+cb
+01
+20
+7a
+00
+00
+70
+4b
+01
+02
+20
+60
+00
+00
+70
+11
+c5
+20
+20
+20
+07
+57
+20
+40
+62
+bc
+24
+7a
+00
+00
+68
+00
+80
+55
+20
+7a
+00
+00
+c0
+02
+06
+cf
+c0
+08
+06
+b4
+20
+20
+63
+20
+68
+00
+c5
+5b
+c1
+00
+00
+00
+c0
+00
+86
+b8
+20
+20
+63
+5f
+20
+74
+80
+00
+68
+00
+81
+6d
+c2
+80
+06
+bc
+20
+20
+63
+99
+68
+00
+cb
+01
+c0
+00
+e3
+9d
+68
+00
+c1
+bd
+20
+3a
+63
+a9
+68
+00
+84
+d1
+c4
+01
+80
+00
+c4
+01
+00
+00
+68
+00
+cb
+00
+20
+7a
+00
+00
+70
+4b
+00
+00
+68
+02
+04
+e9
+d8
+40
+00
+14
+98
+40
+84
+00
+1c
+42
+7e
+00
+98
+46
+7c
+00
+24
+21
+06
+cd
+20
+20
+63
+49
+70
+4b
+00
+01
+20
+60
+00
+00
+70
+48
+09
+14
+20
+20
+63
+6f
+20
+40
+62
+bc
+24
+3a
+7d
+db
+68
+00
+8a
+99
+c5
+84
+fd
+d6
+c0
+0f
+86
+d9
+c0
+10
+06
+dc
+c0
+09
+06
+e6
+20
+20
+7d
+ca
+70
+01
+85
+34
+68
+03
+04
+4f
+20
+20
+06
+de
+70
+01
+85
+33
+68
+03
+00
+40
+60
+03
+01
+86
+68
+02
+46
+d3
+c4
+03
+80
+00
+d8
+e0
+00
+07
+20
+40
+43
+d2
+20
+40
+42
+e8
+20
+40
+42
+fb
+20
+20
+03
+28
+20
+40
+58
+90
+24
+7a
+00
+00
+20
+20
+5a
+bf
+70
+4d
+26
+01
+70
+4d
+23
+00
+20
+60
+00
+00
+68
+00
+cd
+23
+1f
+e0
+fe
+01
+60
+00
+cd
+23
+20
+60
+00
+00
+68
+00
+cd
+23
+1f
+e6
+7c
+02
+24
+41
+06
+f8
+68
+00
+cd
+23
+c1
+00
+00
+00
+1f
+e0
+ff
+ff
+60
+00
+cd
+23
+20
+60
+00
+00
+70
+4d
+23
+03
+20
+60
+00
+00
+68
+01
+46
+82
+c3
+85
+80
+00
+c3
+83
+80
+00
+c3
+83
+00
+00
+da
+20
+4c
+ac
+20
+40
+02
+63
+60
+08
+cd
+24
+58
+00
+00
+82
+c5
+13
+07
+04
+58
+00
+00
+80
+98
+46
+7c
+00
+24
+21
+07
+1c
+68
+00
+cd
+23
+1f
+e6
+7c
+02
+24
+21
+07
+0c
+68
+00
+cd
+23
+c0
+00
+07
+1d
+20
+60
+00
+00
+68
+00
+cd
+23
+c1
+90
+00
+00
+70
+4d
+23
+00
+68
+08
+cd
+24
+58
+00
+00
+77
+c5
+13
+07
+13
+58
+00
+00
+75
+98
+46
+7c
+00
+24
+61
+00
+00
+68
+00
+cd
+26
+c0
+00
+07
+24
+1f
+e0
+ff
+ff
+60
+00
+cd
+26
+c0
+00
+07
+24
+70
+41
+de
+00
+20
+60
+00
+00
+70
+4d
+23
+00
+68
+00
+cd
+26
+c0
+01
+07
+22
+1f
+e0
+fe
+01
+60
+00
+cd
+26
+c0
+00
+87
+1a
+70
+41
+de
+02
+20
+60
+00
+00
+70
+41
+de
+04
+20
+60
+00
+00
+60
+08
+80
+17
+18
+40
+a2
+00
+20
+40
+29
+81
+58
+00
+05
+00
+20
+40
+2a
+8f
+70
+89
+06
+01
+70
+89
+00
+3c
+70
+89
+01
+e0
+20
+00
+00
+0a
+70
+89
+02
+01
+70
+89
+02
+3d
+20
+00
+00
+0a
+70
+89
+03
+b7
+20
+00
+00
+0a
+70
+89
+02
+7d
+68
+00
+c1
+de
+c0
+01
+07
+3e
+c0
+02
+07
+43
+c0
+10
+07
+52
+20
+40
+07
+48
+70
+89
+55
+d0
+70
+89
+56
+e0
+70
+89
+58
+6c
+20
+20
+29
+4b
+20
+40
+07
+4d
+70
+89
+55
+d0
+70
+89
+56
+e0
+70
+89
+58
+3c
+20
+20
+29
+53
+20
+40
+07
+48
+70
+89
+55
+d0
+70
+89
+56
+c0
+70
+89
+58
+6c
+20
+20
+29
+5b
+70
+89
+4c
+5b
+70
+89
+4d
+96
+70
+89
+4e
+2c
+70
+89
+4f
+46
+20
+60
+00
+00
+70
+89
+4c
+fb
+70
+89
+4d
+ef
+70
+89
+4e
+ec
+70
+89
+4f
+5e
+20
+60
+00
+00
+70
+89
+56
+c2
+70
+89
+55
+d0
+20
+60
+00
+00
+18
+00
+2a
+08
+20
+20
+28
+fa
+68
+08
+91
+c5
+18
+51
+84
+00
+68
+00
+cb
+50
+98
+46
+7c
+00
+20
+22
+87
+76
+60
+08
+cb
+50
+18
+40
+84
+01
+58
+00
+01
+00
+98
+4f
+84
+00
+68
+01
+cb
+51
+98
+46
+7e
+00
+68
+09
+cb
+54
+98
+40
+fe
+00
+1f
+e0
+ff
+fb
+60
+01
+cb
+57
+20
+40
+03
+6c
+68
+01
+cb
+57
+d8
+40
+01
+00
+da
+20
+1f
+00
+20
+40
+65
+62
+68
+02
+1f
+00
+68
+0a
+4b
+5a
+98
+46
+7c
+00
+24
+22
+87
+67
+20
+40
+03
+36
+58
+00
+1f
+00
+60
+01
+41
+99
+70
+41
+9b
+40
+20
+40
+64
+ca
+58
+00
+00
+00
+60
+02
+41
+99
+68
+00
+91
+c5
+20
+20
+00
+01
+68
+02
+46
+9b
+20
+7a
+00
+00
+20
+40
+07
+d8
+58
+00
+00
+06
+20
+40
+07
+cb
+58
+00
+00
+03
+20
+40
+07
+d1
+68
+00
+cb
+0b
+c0
+00
+87
+84
+df
+20
+00
+05
+d8
+a0
+4b
+0b
+20
+20
+7e
+d4
+68
+01
+4b
+0c
+60
+01
+11
+be
+68
+01
+46
+9b
+60
+01
+11
+c0
+20
+40
+07
+97
+68
+01
+11
+be
+60
+01
+4b
+0c
+68
+01
+11
+c0
+60
+01
+46
+9b
+68
+01
+4b
+0e
+60
+01
+11
+be
+68
+01
+46
+9d
+60
+01
+11
+c0
+20
+40
+07
+9f
+68
+01
+11
+be
+60
+01
+4b
+0e
+68
+01
+11
+c0
+60
+01
+46
+9d
+20
+60
+00
+00
+68
+01
+11
+be
+68
+09
+11
+c0
+98
+40
+fe
+00
+68
+08
+cd
+67
+98
+40
+fe
+00
+1f
+e1
+04
+01
+60
+08
+cd
+67
+20
+20
+07
+a7
+68
+01
+11
+be
+68
+09
+11
+c0
+98
+40
+fe
+00
+68
+08
+cd
+68
+98
+40
+fe
+00
+1f
+e1
+04
+01
+60
+08
+cd
+68
+20
+20
+07
+a7
+60
+01
+91
+c2
+2f
+ef
+fe
+10
+20
+20
+87
+b1
+68
+00
+91
+c3
+c0
+7f
+87
+b8
+68
+00
+91
+c2
+1f
+e3
+7e
+00
+60
+01
+11
+be
+60
+01
+11
+c0
+20
+60
+00
+00
+68
+00
+91
+c3
+c0
+00
+07
+b5
+68
+01
+91
+c2
+20
+20
+07
+ad
+70
+11
+c4
+00
+68
+00
+91
+c2
+20
+20
+07
+ad
+68
+00
+91
+c2
+20
+40
+07
+c3
+60
+00
+91
+be
+60
+00
+91
+c0
+20
+3a
+07
+c1
+58
+00
+00
+ff
+60
+00
+91
+bf
+60
+00
+91
+c1
+20
+60
+00
+00
+58
+00
+00
+00
+20
+20
+07
+be
+1f
+e6
+7e
+00
+60
+00
+8a
+ae
+68
+00
+8a
+ae
+1f
+e3
+7e
+00
+60
+00
+8a
+ae
+68
+00
+8a
+ae
+1f
+e6
+7e
+00
+20
+60
+00
+00
+9a
+26
+7c
+00
+24
+21
+07
+d6
+9a
+46
+7c
+00
+24
+21
+07
+d6
+70
+4b
+0b
+00
+20
+60
+00
+00
+9a
+26
+7c
+00
+24
+61
+00
+00
+9a
+46
+7c
+00
+24
+61
+00
+00
+20
+20
+07
+cf
+70
+4b
+0b
+01
+20
+60
+00
+00
+68
+01
+46
+9b
+60
+01
+11
+c0
+20
+40
+07
+e1
+1f
+e2
+22
+00
+68
+01
+46
+9d
+60
+01
+11
+c0
+20
+40
+07
+e1
+1f
+e2
+24
+00
+20
+60
+00
+00
+68
+00
+91
+c1
+c0
+7f
+87
+e6
+68
+00
+91
+c0
+1f
+e1
+7e
+ff
+20
+60
+00
+00
+68
+01
+11
+c0
+1f
+e6
+7e
+00
+20
+20
+07
+e4
+16
+20
+aa
+55
+08
+00
+75
+41
+8f
+10
+ce
+00
+0a
+0b
+ef
+07
+aa
+55
+01
+00
+57
+41
+00
+aa
+55
+08
+00
+a1
+00
+00
+00
+00
+00
+00
+00
+00
+00
+aa
+55
+08
+00
+ad
+40
+12
+00
+00
+02
+12
+00
+00
+02
+aa
+55
+02
+00
+bb
+40
+20
+00
+aa
+55
+04
+00
+b7
+40
+20
+00
+00
+40
+aa
+55
+04
+00
+bf
+40
+80
+04
+00
+08
+aa
+55
+01
+00
+27
+4d
+00
+aa
+55
+01
+00
+de
+41
+00
+aa
+55
+0d
+00
+8f
+47
+4b
+ba
+55
+d0
+56
+e0
+57
+88
+58
+6c
+59
+10
+ff
+aa
+55
+02
+00
+c3
+40
+8f
+47
+aa
+55
+01
+00
+00
+40
+06
+aa
+55
+02
+00
+03
+40
+08
+40
+aa
+55
+03
+00
+09
+40
+05
+02
+02
+aa
+55
+02
+00
+10
+40
+20
+02
+aa
+55
+03
+00
+14
+40
+82
+20
+06
+aa
+55
+02
+00
+18
+40
+10
+08
+aa
+55
+02
+00
+1c
+40
+48
+1e
+aa
+55
+01
+00
+20
+40
+20
+aa
+55
+08
+00
+27
+40
+02
+08
+04
+80
+02
+c8
+04
+80
+aa
+55
+02
+00
+30
+40
+05
+31
+aa
+55
+01
+00
+3f
+40
+04
+aa
+55
+02
+00
+65
+4d
+01
+00
+aa
+55
+01
+00
+92
+40
+42
+aa
+55
+01
+00
+91
+40
+01
+aa
+55
+01
+00
+72
+41
+20
+aa
+55
+01
+00
+c5
+47
+20
+aa
+55
+02
+00
+d5
+46
+0a
+45
+aa
+55
+01
+00
+07
+42
+06
+aa
+55
+06
+00
+a0
+40
+22
+51
+17
+01
+20
+20
+aa
+55
+0c
+00
+15
+45
+0b
+42
+54
+33
+2e
+30
+20
+4d
+6f
+75
+73
+65
+aa
+55
+05
+00
+e3
+41
+0e
+00
+01
+00
+02
+aa
+55
+01
+00
+5a
+45
+0a
+aa
+55
+01
+00
+62
+46
+03
+aa
+55
+01
+00
+5a
+46
+01
+aa
+55
+01
+00
+8d
+45
+00
+aa
+55
+01
+00
+5a
+41
+00
+aa
+55
+03
+00
+5b
+46
+03
+00
+04
+aa
+55
+01
+00
+84
+46
+01
+aa
+55
+01
+00
+d1
+40
+01
+aa
+55
+0c
+00
+6f
+43
+1f
+02
+01
+05
+03
+03
+12
+18
+03
+19
+c2
+03
+aa
+55
+14
+00
+10
+4b
+06
+ff
+06
+00
+03
+00
+80
+0c
+09
+42
+54
+35
+2e
+32
+20
+4d
+6f
+75
+73
+65
+aa
+55
+0e
+00
+8f
+43
+1f
+0c
+09
+42
+54
+35
+2e
+32
+20
+4d
+6f
+75
+73
+65
+aa
+55
+0c
+00
+af
+43
+0b
+42
+54
+35
+2e
+32
+20
+4d
+6f
+75
+73
+65
+aa
+55
+08
+00
+96
+44
+07
+00
+07
+00
+20
+00
+2c
+01
+aa
+55
+04
+00
+82
+44
+00
+00
+00
+00
+aa
+55
+01
+00
+8d
+44
+07
+aa
+55
+06
+00
+a0
+44
+8e
+b1
+3a
+0e
+8e
+ed
+aa
+55
+01
+00
+e5
+44
+50
+aa
+55
+02
+00
+6f
+44
+19
+00
+aa
+55
+02
+00
+fa
+44
+22
+00
+aa
+55
+02
+00
+87
+46
+08
+07
+aa
+55
+04
+00
+a8
+46
+50
+00
+70
+17
+aa
+55
+01
+00
+45
+4b
+0a
+aa
+55
+01
+00
+14
+42
+ff
+aa
+55
+01
+00
+86
+46
+ff
+aa
+55
+01
+00
+85
+46
+1e
+aa
+55
+01
+00
+d2
+46
+02
+aa
+55
+01
+00
+03
+47
+02
+aa
+55
+02
+00
+2d
+42
+01
+32
+aa
+55
+06
+00
+09
+47
+a4
+01
+18
+01
+40
+01
+aa
+55
+19
+00
+e0
+46
+00
+02
+06
+08
+08
+ff
+ff
+06
+1c
+1b
+ff
+ff
+1d
+14
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+50
+03
+ff
+ff
+aa
+55
+01
+00
+3a
+42
+ff
+aa
+55
+01
+00
+dc
+46
+ff
+aa
+55
+01
+00
+a5
+46
+07
+aa
+55
+01
+00
+6c
+0c
+ff
+aa
+55
+04
+00
+7f
+47
+01
+02
+03
+04
+aa
+55
+02
+00
+1b
+42
+13
+47
+aa
+55
+01
+00
+1a
+42
+01
+aa
+55
+40
+00
+c6
+47
+25
+00
+02
+03
+28
+01
+12
+26
+00
+02
+4d
+2a
+07
+00
+00
+00
+00
+00
+00
+00
+27
+00
+02
+02
+29
+02
+00
+00
+28
+00
+02
+08
+29
+02
+11
+01
+29
+00
+02
+03
+28
+01
+0e
+2a
+00
+02
+4d
+2a
+07
+00
+00
+00
+00
+00
+00
+00
+2b
+00
+02
+08
+29
+02
+11
+02
+aa
+55
+08
+00
+3d
+4b
+07
+02
+35
+12
+22
+aa
+01
+00
+aa
+55
+01
+00
+30
+4c
+01
+aa
+55
+01
+00
+eb
+4b
+01
+aa
+55
+01
+00
+2f
+4c
+04
+aa
+55
+01
+00
+26
+4c
+00
+aa
+55
+02
+00
+ed
+4b
+c0
+12
+aa
+55
+03
+00
+0f
+4c
+19
+19
+1c
+aa
+55
+10
+00
+fb
+4b
+00
+13
+2c
+42
+06
+15
+36
+48
+0f
+1a
+3a
+4c
+11
+23
+31
+4d
+aa
+55
+01
+00
+fa
+4b
+ff
+aa
+55
+04
+00
+f6
+4b
+20
+15
+10
+05
+aa
+55
+0a
+00
+9e
+11
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+aa
+55
+03
+00
+19
+4c
+00
+48
+60
+aa
+55
+08
+00
+20
+47
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+aa
+55
+1a
+00
+33
+4d
+09
+5a
+ff
+27
+ab
+40
+be
+d1
+a0
+41
+a1
+12
+a5
+84
+a7
+ff
+b5
+d0
+b6
+00
+ff
+00
+09
+00
+ff
+ff
+aa
+55
+10
+00
+55
+4d
+09
+5a
+06
+02
+09
+69
+0d
+48
+0e
+9f
+0f
+ba
+09
+00
+ff
+ff
+aa
+55
+03
+00
+00
+47
+00
+50
+00
+aa
+55
+02
+00
+03
+42
+90
+1f
+aa
+55
+01
+00
+11
+42
+80
+aa
+55
+01
+00
+1f
+47
+00
+aa
+55
+01
+00
+db
+46
+01
+aa
+55
+01
+00
+8e
+47
+03
+aa
+55
+04
+00
+4c
+4b
+ff
+ff
+ff
+ff
+aa
+55
+01
+00
+26
+4b
+05
+aa
+55
+02
+00
+2a
+4b
+14
+03
+aa
+55
+04
+00
+50
+4b
+ff
+00
+00
+00
+aa
+55
+04
+00
+5a
+4b
+20
+20
+00
+40
+aa
+55
+03
+00
+51
+4b
+bb
+2f
+00
+ff
+20
+20
+00
+40
+c0
+58
+00
+07
+c0
+58
+80
+0e
+c0
+59
+00
+14
+c0
+59
+80
+19
+c0
+5a
+00
+20
+20
+60
+00
+00
+70
+4b
+63
+01
+68
+00
+c7
+9f
+24
+3a
+00
+0b
+70
+4b
+61
+14
+20
+40
+04
+b9
+20
+40
+03
+b7
+20
+20
+41
+c3
+68
+00
+c8
+08
+c1
+01
+00
+00
+1f
+e0
+fe
+01
+60
+00
+c8
+08
+70
+41
+e3
+12
+20
+20
+34
+0e
+68
+00
+c8
+08
+c1
+81
+00
+00
+70
+48
+08
+00
+70
+41
+e3
+0e
+20
+20
+34
+0e
+68
+00
+c7
+9f
+c0
+00
+80
+1c
+20
+20
+00
+1e
+20
+40
+04
+28
+70
+46
+c6
+05
+d8
+e0
+00
+01
+20
+20
+41
+b9
+70
+4a
+ff
+00
+70
+4b
+01
+00
+70
+4b
+0a
+00
+20
+20
+41
+d9
+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
+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
+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
+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
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+20
+20
+00
+40
+c0
+50
+00
+07
+c0
+50
+80
+0d
+c0
+51
+00
+20
+c0
+51
+80
+19
+c0
+52
+00
+29
+20
+60
+00
+00
+70
+4d
+2a
+00
+20
+40
+02
+aa
+20
+40
+01
+9c
+70
+41
+bd
+00
+20
+40
+02
+7f
+20
+20
+04
+b6
+68
+01
+45
+09
+c1
+00
+00
+00
+68
+00
+84
+41
+1f
+eb
+7e
+00
+1f
+e6
+7c
+0c
+20
+61
+00
+00
+58
+00
+00
+09
+60
+01
+44
+96
+60
+01
+44
+98
+20
+40
+04
+28
+70
+47
+c4
+01
+20
+60
+00
+00
+68
+01
+46
+82
+c3
+86
+00
+00
+c3
+83
+00
+00
+c3
+85
+80
+00
+68
+02
+46
+d3
+c3
+82
+80
+00
+20
+20
+33
+a7
+70
+4b
+63
+00
+58
+00
+00
+07
+60
+01
+44
+96
+60
+01
+44
+98
+70
+47
+c4
+00
+70
+47
+9c
+00
+20
+40
+03
+b7
+20
+40
+58
+16
+20
+20
+41
+d9
+78
+34
+7c
+00
+68
+12
+01
+38
+79
+34
+7e
+1a
+60
+12
+00
+4c
+20
+40
+2c
+21
+20
+40
+74
+bd
+20
+40
+3e
+9f
+20
+40
+02
+7f
+68
+00
+c7
+20
+1f
+e6
+7c
+02
+20
+42
+85
+5a
+20
+40
+03
+64
+68
+10
+80
+81
+1f
+e1
+7e
+f7
+60
+10
+80
+81
+68
+10
+80
+7f
+79
+20
+7e
+00
+60
+10
+80
+7f
+68
+08
+c6
+ec
+20
+20
+67
+dd
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+20
+20
+00
+40
+c0
+48
+00
+05
+c0
+48
+80
+1f
+c0
+49
+00
+2f
+20
+60
+00
+00
+68
+00
+cb
+ef
+c0
+00
+ff
+e7
+68
+00
+cb
+fa
+c0
+00
+80
+0c
+c0
+01
+00
+0f
+c0
+01
+80
+12
+20
+20
+2a
+8c
+70
+4b
+fa
+11
+70
+11
+9e
+aa
+20
+20
+00
+14
+70
+4b
+fa
+12
+70
+11
+9e
+55
+20
+20
+00
+14
+70
+4b
+fa
+13
+70
+11
+9e
+22
+68
+00
+cb
+eb
+1f
+e1
+7e
+07
+60
+00
+91
+9f
+68
+02
+4c
+21
+60
+02
+11
+a0
+70
+11
+a4
+00
+da
+20
+11
+9e
+d8
+40
+00
+07
+20
+40
+01
+a0
+20
+40
+01
+27
+20
+20
+7f
+e7
+68
+00
+cb
+fa
+c1
+7f
+80
+00
+c0
+08
+80
+25
+c0
+09
+00
+27
+c0
+09
+80
+29
+20
+60
+00
+00
+70
+4b
+fa
+02
+20
+20
+01
+5f
+70
+4b
+fa
+03
+20
+20
+01
+5f
+70
+4b
+fa
+ff
+70
+0a
+99
+39
+20
+40
+7d
+86
+68
+02
+4b
+ca
+20
+40
+01
+b2
+20
+20
+01
+5f
+70
+47
+8b
+01
+d8
+e0
+00
+03
+20
+40
+43
+d2
+58
+00
+00
+00
+60
+01
+47
+07
+70
+46
+a7
+00
+20
+40
+40
+5d
+20
+40
+04
+b9
+20
+40
+02
+aa
+68
+02
+4c
+12
+60
+02
+47
+7b
+20
+40
+43
+66
+20
+20
+03
+28
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+20
+20
+00
+40
+c0
+40
+00
+08
+c0
+40
+80
+04
+20
+60
+00
+00
+20
+40
+68
+a2
+58
+00
+11
+22
+60
+01
+47
+c2
+20
+60
+00
+00
+20
+40
+00
+e5
+20
+40
+3e
+6e
+20
+40
+02
+8e
+68
+08
+cb
+45
+20
+40
+68
+0e
+20
+40
+3e
+1e
+20
+40
+00
+24
+58
+00
+00
+00
+60
+01
+41
+54
+20
+40
+68
+a2
+20
+40
+3e
+54
+20
+40
+58
+10
+20
+40
+58
+39
+20
+40
+58
+2c
+20
+40
+58
+18
+20
+40
+05
+66
+20
+40
+03
+6c
+20
+40
+03
+38
+68
+01
+c7
+00
+9a
+40
+fe
+00
+20
+40
+65
+62
+20
+40
+03
+1e
+df
+20
+00
+03
+d8
+c0
+47
+22
+20
+40
+03
+70
+24
+34
+02
+d0
+20
+40
+02
+d2
+20
+60
+00
+00
+20
+40
+74
+b9
+d8
+c0
+8c
+00
+d8
+a0
+48
+76
+df
+20
+01
+71
+20
+40
+7f
+01
+58
+0f
+02
+09
+e0
+a1
+80
+00
+58
+12
+00
+09
+e0
+a1
+80
+00
+58
+10
+02
+09
+e0
+a1
+80
+00
+58
+00
+00
+09
+e0
+a1
+80
+00
+d8
+c0
+8d
+71
+df
+20
+01
+09
+20
+40
+7f
+01
+70
+48
+8d
+00
+70
+48
+85
+6d
+58
+00
+40
+1f
+60
+01
+49
+db
+58
+00
+6d
+04
+60
+01
+4a
+44
+58
+00
+16
+b0
+60
+01
+4a
+4a
+58
+00
+48
+76
+60
+01
+45
+75
+20
+60
+00
+00
+00
+00
+00
+00
+20
+20
+00
+40
+c0
+38
+00
+03
+20
+60
+00
+00
+79
+3f
+80
+26
+20
+40
+00
+2d
+20
+40
+00
+1a
+58
+00
+00
+00
+60
+01
+4c
+17
+20
+00
+07
+d0
+68
+00
+cc
+17
+c0
+7f
+ad
+d4
+20
+40
+01
+66
+24
+2c
+00
+23
+24
+37
+80
+23
+20
+40
+01
+8e
+20
+40
+02
+aa
+68
+02
+4c
+12
+68
+0a
+4b
+f6
+98
+46
+7c
+00
+20
+22
+80
+37
+79
+20
+00
+26
+58
+00
+00
+00
+60
+01
+4c
+17
+20
+40
+2f
+20
+20
+40
+01
+63
+20
+20
+03
+83
+70
+11
+9e
+ff
+68
+00
+cb
+eb
+60
+00
+91
+9f
+68
+02
+4c
+21
+60
+02
+11
+a0
+d8
+40
+00
+06
+da
+20
+11
+9e
+20
+40
+01
+a0
+20
+20
+01
+c0
+68
+01
+4c
+17
+1f
+e0
+fe
+01
+60
+01
+4c
+17
+68
+00
+cd
+28
+1f
+e0
+fe
+01
+1f
+e1
+7e
+01
+60
+00
+cd
+28
+c0
+00
+00
+33
+c0
+00
+80
+35
+20
+60
+00
+00
+70
+41
+de
+20
+58
+00
+0f
+0f
+60
+01
+4c
+12
+e0
+a1
+00
+00
+20
+40
+01
+b3
+20
+20
+01
+d2
+20
+40
+00
+2d
+20
+20
+00
+08
+20
+40
+00
+3b
+20
+20
+00
+08
+79
+20
+00
+26
+20
+40
+00
+3b
+70
+4b
+fa
+01
+20
+60
+00
+00
+70
+41
+de
+20
+70
+4b
+e9
+00
+70
+4b
+f4
+4e
+68
+02
+4b
+f6
+20
+20
+01
+b2
+20
+20
+00
+40
+c0
+30
+00
+04
+c0
+30
+80
+26
+20
+60
+00
+00
+79
+3f
+80
+26
+20
+40
+01
+b3
+20
+40
+01
+d2
+68
+00
+cb
+fa
+c1
+ff
+80
+00
+20
+40
+00
+18
+58
+00
+00
+00
+60
+01
+4c
+17
+20
+00
+07
+d0
+68
+00
+cc
+17
+c0
+7f
+ad
+d4
+20
+40
+01
+66
+24
+2c
+00
+21
+24
+37
+80
+21
+79
+20
+00
+26
+58
+00
+00
+00
+60
+01
+4c
+17
+20
+40
+2f
+20
+20
+40
+01
+63
+20
+20
+03
+83
+70
+11
+9e
+ff
+68
+00
+cb
+eb
+60
+00
+91
+9f
+68
+02
+4c
+21
+60
+02
+11
+a0
+d8
+40
+00
+06
+da
+20
+11
+9e
+20
+40
+01
+a0
+20
+20
+01
+c0
+68
+01
+4c
+17
+1f
+e0
+fe
+01
+60
+01
+4c
+17
+20
+40
+01
+d2
+20
+20
+00
+0c
+68
+00
+c7
+20
+c1
+00
+80
+00
+68
+02
+46
+d3
+c4
+08
+80
+00
+c3
+81
+80
+00
+c6
+13
+00
+00
+d8
+e0
+00
+03
+20
+40
+43
+ce
+58
+00
+00
+00
+60
+01
+46
+ae
+60
+00
+c6
+b4
+60
+01
+4c
+17
+20
+40
+42
+ca
+20
+20
+00
+34
+79
+20
+00
+26
+20
+40
+00
+38
+70
+4b
+fa
+01
+20
+60
+00
+00
+70
+41
+de
+20
+70
+4b
+e9
+00
+70
+4b
+f4
+4e
+68
+02
+4b
+f6
+20
+20
+01
+b2
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+20
+20
+00
+40
+c0
+28
+00
+03
+20
+60
+00
+00
+70
+4b
+62
+00
+20
+40
+02
+aa
+70
+47
+9c
+00
+68
+01
+46
+82
+c2
+85
+80
+12
+68
+02
+46
+d3
+c3
+0c
+00
+12
+20
+40
+05
+6a
+68
+09
+47
+c2
+18
+40
+84
+01
+60
+09
+47
+c2
+60
+09
+44
+a1
+20
+40
+03
+2d
+18
+0a
+7e
+00
+60
+00
+c4
+a0
+68
+01
+cd
+2f
+60
+01
+c4
+a3
+20
+40
+02
+d0
+20
+40
+34
+18
+68
+01
+46
+87
+60
+01
+46
+ac
+70
+01
+6d
+06
+58
+00
+00
+00
+60
+01
+46
+b0
+60
+01
+46
+ae
+d8
+e0
+00
+07
+20
+40
+43
+ce
+20
+40
+43
+ca
+68
+00
+c0
+92
+2f
+ef
+fe
+01
+20
+40
+80
+26
+68
+00
+c0
+92
+2f
+ef
+fe
+00
+20
+40
+fd
+dd
+20
+20
+04
+f6
+70
+47
+9f
+00
+20
+40
+02
+c9
+58
+00
+00
+05
+e0
+c0
+80
+00
+d8
+c0
+4b
+10
+20
+40
+05
+78
+20
+20
+7d
+f4
+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
+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
+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
+00
+20
+20
+00
+40
+c0
+20
+00
+04
+c0
+20
+80
+16
+20
+60
+00
+00
+20
+40
+00
+0c
+20
+20
+55
+7d
+68
+00
+c7
+c5
+60
+00
+c1
+72
+70
+47
+c4
+00
+20
+60
+00
+00
+70
+47
+c4
+01
+20
+60
+00
+00
+68
+00
+c3
+d6
+1f
+e6
+7c
+0c
+24
+21
+00
+0a
+68
+00
+c3
+d8
+68
+08
+c7
+c5
+98
+46
+7c
+00
+20
+21
+00
+06
+68
+00
+c3
+d8
+60
+00
+c1
+72
+20
+20
+00
+08
+68
+00
+84
+3f
+c4
+03
+00
+00
+20
+40
+00
+1b
+24
+74
+00
+00
+20
+20
+55
+a0
+78
+34
+7c
+00
+68
+00
+84
+5a
+1f
+f1
+fe
+00
+c1
+87
+80
+00
+68
+00
+84
+60
+1f
+f1
+fe
+00
+c1
+80
+00
+00
+20
+20
+7f
+e9
+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
+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
+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
+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
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+20
+20
+00
+40
+c0
+18
+00
+03
+20
+60
+00
+00
+20
+40
+62
+bc
+24
+7a
+00
+00
+68
+00
+80
+55
+20
+7a
+00
+00
+c0
+02
+00
+25
+c0
+08
+00
+0a
+20
+20
+63
+20
+68
+00
+c5
+5b
+c1
+00
+00
+00
+c0
+00
+80
+0e
+20
+20
+63
+5f
+20
+74
+80
+00
+68
+00
+81
+6d
+c2
+80
+00
+12
+20
+20
+63
+99
+68
+00
+cb
+01
+c0
+00
+e3
+9d
+68
+00
+c1
+bd
+20
+3a
+63
+a9
+68
+00
+84
+d1
+c4
+01
+80
+00
+c4
+01
+00
+00
+68
+00
+cb
+00
+20
+7a
+00
+00
+70
+4b
+00
+00
+68
+02
+04
+e9
+d8
+40
+00
+14
+98
+40
+84
+00
+1c
+42
+7e
+00
+98
+46
+7c
+00
+24
+21
+00
+23
+20
+20
+63
+49
+70
+4b
+00
+01
+20
+60
+00
+00
+70
+48
+09
+14
+20
+20
+63
+6f
+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
+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
+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
+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
+20
+20
+00
+40
+c0
+10
+00
+03
+20
+60
+00
+00
+78
+54
+7c
+00
+20
+40
+62
+c1
+68
+00
+80
+48
+20
+7a
+00
+00
+c2
+83
+80
+0c
+c0
+01
+80
+1c
+c0
+18
+80
+18
+c0
+0b
+80
+1a
+20
+20
+60
+10
+c0
+42
+00
+0f
+c0
+41
+80
+12
+20
+20
+60
+3f
+20
+40
+00
+15
+68
+00
+80
+48
+20
+20
+60
+99
+20
+40
+00
+15
+68
+00
+80
+48
+20
+20
+61
+0d
+68
+00
+c6
+5a
+20
+3a
+61
+2b
+20
+20
+61
+24
+70
+4b
+01
+01
+20
+20
+61
+c3
+70
+4b
+09
+04
+20
+20
+61
+a4
+18
+00
+7e
+02
+20
+40
+62
+98
+68
+00
+80
+49
+e0
+a0
+80
+00
+60
+00
+ca
+fc
+20
+40
+62
+a7
+68
+00
+ca
+fc
+c0
+17
+00
+25
+20
+20
+60
+51
+68
+00
+ca
+ff
+20
+7a
+00
+00
+70
+4a
+ff
+00
+68
+00
+cb
+01
+c1
+81
+00
+00
+70
+4b
+00
+01
+1c
+42
+7e
+00
+60
+02
+04
+e9
+20
+60
+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
+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
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+20
+20
+00
+40
+c0
+08
+00
+04
+c0
+08
+80
+17
+20
+60
+00
+00
+70
+48
+08
+00
+70
+41
+e3
+0e
+20
+40
+41
+e7
+68
+01
+42
+08
+c2
+83
+c1
+f5
+c2
+80
+33
+a9
+c2
+80
+80
+0e
+c2
+81
+00
+11
+c2
+81
+80
+11
+20
+20
+42
+b0
+c2
+82
+80
+11
+c2
+81
+80
+11
+20
+20
+42
+b0
+68
+01
+46
+82
+c2
+86
+42
+b0
+20
+40
+33
+a9
+20
+40
+05
+39
+c0
+02
+84
+b6
+20
+20
+33
+a7
+68
+01
+02
+64
+1f
+e2
+0c
+00
+e8
+c0
+80
+00
+60
+00
+cb
+02
+1f
+e1
+04
+0f
+1f
+f1
+fe
+00
+c0
+03
+80
+1f
+20
+20
+4d
+39
+20
+40
+4d
+53
+70
+4b
+03
+00
+68
+00
+cb
+02
+2f
+ef
+fe
+00
+20
+60
+80
+00
+70
+4b
+03
+01
+20
+60
+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
+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
+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
+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
+00
+00
+00
+00
+00
+00
+20
+20
+00
+40
+c0
+00
+00
+03
+20
+60
+00
+00
+68
+00
+80
+0e
+1f
+e0
+fe
+01
+60
+00
+80
+0e
+20
+40
+24
+35
+79
+20
+00
+2c
+20
+40
+22
+f2
+20
+2c
+00
+0e
+79
+3f
+80
+2c
+20
+40
+24
+55
+24
+3a
+00
+07
+20
+20
+20
+fc
+79
+3f
+80
+2c
+20
+20
+21
+5f
+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
+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
+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
+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
+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
+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
+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
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+aa
+55
+00
+00
+7f
+1e
Index: output/memmap.format
===================================================================
--- /branch/mouse_project/YJX_Project/YJX_1059/JDT_172_BD_2.4G&BLE/output/memmap.format	(nonexistent)
+++ /branch/mouse_project/YJX_Project/YJX_1059/JDT_172_BD_2.4G&BLE/output/memmap.format	(working copy)
@@ -0,0 +1,1941 @@
+0x0000 mem_le_adv_transmit
+0x0001 mem_le_adv_waitcnt
+0x0002 mem_le_adv_rcv
+0x0003 mem_le_req_rcv
+0x0004 mem_le_scanrsp_rcv
+0x0005 mem_le_conn_rcv
+0x0006 mem_inquiryscan_waitcnt
+0x0007 mem_inquiryscan_rcvcnt
+0x0008 mem_pagescan_waitcnt
+0x0009 mem_pagescan_rcvcnt
+0x000a mem_pagescan_rcvfhscnt
+0x000b mem_slave_rcvcnt
+0x000c mem_page_transmit
+0x000d mem_page_rcv
+0x000e mem_page_rcv_fhs
+0x000f mem_master_rcvcnt
+0x0010 mem_fhs_wait_counter
+0x0011 mem_newconnto_counter
+0x0012 mem_inquiry_transmit
+0x0013 mem_inquiry_rcv
+0x0014 mem_fw_ver
+0x0015 mem_current_context
+0x0016 mem_le_ch_mapped
+0x0017 mem_last_freq
+0x0018 mem_rssi
+0x0019 mem_rx_type
+0x001a mem_rx_hec_err
+0x001c mem_rx_crc_err
+0x001e mem_context_ptr
+0x0020 mem_display
+0x0028 mem_bcd
+0x0030 mem_state
+0x0031 mem_mode
+0x0032 mem_tsniff
+0x0034 mem_sniff_anchor
+0x0038 mem_clk_offset
+0x003e mem_rx_window
+0x0040 mem_plap
+0x0043 mem_puap
+0x0044 mem_pnap
+0x0046 mem_conn_handle
+0x0047 mem_arq
+0x0048 mem_lmp_to_send
+0x0049 mem_lmi_opcode
+0x004a mem_lmo_reason
+0x004b mem_op
+0x004c mem_state_map
+0x004d mem_supervision_timer
+0x0051 mem_supervision_to
+0x0053 mem_name_offset
+0x0054 mem_key_size
+0x0055 mem_conn_sm
+0x0056 mem_aco
+0x0062 mem_kc
+0x0072 mem_conn_timer
+0x0073 mem_sniff_attempt
+0x0074 mem_sniff_timeout
+0x0075 mem_dsniff
+0x0077 mem_amaddr
+0x0078 mem_lmo_opcode1
+0x0079 mem_lmi_opcode1
+0x007a mem_lmo_reason1
+0x007b mem_lmo_tid1
+0x007c mem_lmo_opcode2
+0x007d mem_lmi_opcode2
+0x007e mem_lmo_reason2
+0x007f mem_lmo_tid2
+0x0080 mem_hci_version
+0x0083 mem_acl_pktlen
+0x0085 mem_sco_pktlen
+0x0086 mem_acl_pktcnt
+0x0088 mem_sco_pktcnt
+0x008a mem_current_sniff_attempt
+0x008b mem_current_sniff_timeout
+0x008c mem_sniff_timeout_temp
+0x008d mem_nfreq_index_inq
+0x008e mem_nfreq_index_page
+0x008f mem_ninqy_index
+0x0090 mem_fhs_misc
+0x0091 mem_subsniff_instant
+0x0095 mem_subsniff_rate
+0x0096 mem_subsniff_tcmax
+0x0098 mem_subsniff_tsniff
+0x0099 mem_lpm_adjust
+0x009a mem_sync_clke
+0x00a0 mem_lpm_current_mult
+0x00a1 mem_gpio_wakeup_low
+0x00a5 mem_gpio_wakeup_high
+0x00a9 mem_air_mode
+0x00aa mem_sco_asso_handle
+0x00ab mem_sco_handle
+0x00ad mem_esco_desco
+0x00ae mem_esco_type
+0x00af mem_neogotiation_state
+0x00b0 mem_saved_amaddr
+0x00b1 mem_esco_arq
+0x00b2 mem_esco_saved_arq
+0x00b3 mem_sco_obuf
+0x00d1 mem_sco_ibuf
+0x00ef mem_sco_poll
+0x00f0 mem_npage_index
+0x00f1 mem_page_mode
+0x00f2 mem_page_clk
+0x00f6 mem_tst_pktcnt_sync
+0x00f8 mem_tst_pktcnt_hec
+0x00fa mem_tst_pktcnt_crc
+0x00fc mem_tst_pktcnt_dmh
+0x00fe mem_tmp_buffer_head
+0x0101 mem_tmp_buffer
+0x0151 mem_tester_emulate
+0x0152 mem_temp_payload
+0x0152 test_mode_scenario
+0x0153 test_mode_hopping_mode
+0x0154 test_mode_tx_freq
+0x0155 test_mode_rx_freq
+0x0156 test_mode_power_mode
+0x0157 test_mode_poll_period
+0x0158 test_mode_packet_type
+0x0159 test_mode_data_length
+0x015b mem_test_mode_old_debug_config
+0x015c mem_tester_cnt
+0x015d mem_temp_am_addr
+0x015e mem_temp_arq
+0x015f mem_len
+0x0161 mem_clkn_bt
+0x0165 mem_clke_bt
+0x0169 mem_dpll_clkn
+0x016d mem_connection_options
+0x016e mem_nameres_cnt
+0x016f mem_txptr
+0x0171 mem_slot_offset
+0x0173 extm_fhs_misc
+0x0174 extm_newconn_am_addr
+0x0175 extm_class
+0x0178 extm_lap
+0x017b extm_uap
+0x017c extm_nap
+0x017f mem_debug_config
+0x0180 mem_lch_code
+0x0181 mem_fhs_am_addr
+0x0182 mem_dpll_error
+0x0184 mem_select_list_item
+0x0185 mem_temp_reconn_record
+0x0185 mem_record_bt_mode
+0x0186 mem_temp_lap
+0x018c mem_list_item_ptr
+0x018e mem_eir
+0x01f2 mem_ucode_status
+0x01f3 mem_otp_ucode_flag
+0x01f5 mem_spid_tbuf/* spid buf: 03 addr[23:16] addr[15:8] addr[7:0] */
+0x01f6 mem_iicd_tbuf/* iicd buf: iic_adr addr[15:8] addr[7:0] iic_adr */
+0x01f6 mem_addr_hi
+0x01f7 mem_addr_mi
+0x01f8 mem_addr_lo
+0x01f9 mem_iicd_addr
+0x01fa mem_spid_rbuf
+0x01fe mem_ucode_buf
+0x0200 mem_ucode_len
+0x0202 mem_sched_addr
+0x0204 mem_ucode_ptr
+0x0206 mem_ucode_keybuf
+0x0216 mem_check_plap_temp
+0x0228 mem_reconnect_flag
+0x0229 mem_switch_fail_master_count
+0x022a mem_app_evt_timer_count
+0x022b mem_init_cnt
+0x022d mem_h5rx_ackcnt
+0x022e mem_check_err_acl_cont
+0x022f mem_rp_packets
+0x0230 mem_packet_type
+0x0232 mem_hci_sniff_conn_handle
+0x0234 mem_hci_sniff_max_interval
+0x0236 mem_hci_sniff_min_interval
+0x0238 mem_hci_sniff_attempt
+0x023a mem_hci_sniff_timeout
+0x023c mem_voice_setting
+0x023e mem_retransmission_effort
+0x023f mem_sco_ptype
+0x0241 mem_extm_uap_restore
+0x0244 mem_h5rx_rptr
+0x0246 mem_h5rx_ack
+0x0247 mem_h5tx_ack
+0x0248 mem_h5tx_rptr
+0x024a mem_h5tx_wptr
+0x024c mem_h5tx_free
+0x024e mem_h5rx_tmp
+0x024f mem_h5tx_seq
+0x0250 mem_hci_acl_queue_wptr
+0x0252 mem_hci_acl_queue_rptr
+0x0254 mem_hci_acl_queue_end
+0x0256 mem_hci_acl_queue_wcnt
+0x0257 mem_hci_acl_cnt
+0x0258 mem_hci_acl_tx_trigger_wptr//tx via uart
+0x025a mem_hci_curr_len
+0x025b mem_hci_curr_target
+0x025d mem_l2cap_mem_start
+0x025d mem_l2cap_rxbuff1_len
+0x025f mem_l2cap_rxbuff2_len
+0x0261 mem_l2cap_rxbuff_new
+0x0263 mem_l2cap_rxbuff_inuse
+0x0264 mem_l2cap_payload_ptr
+0x0266 mem_l2cap_rx_pkt_length
+0x0268 mem_l2cap_rx_cid
+0x026a mem_l2cap_rx_done
+0x026b mem_l2cap_signal_tx_buff_ptr
+0x026d mem_l2cap_signal_tx_payload_ptr
+0x026f mem_l2cap_signal_tx_length
+0x0271 mem_sdp_tx_buff_ptr
+0x0273 mem_sdp_tx_payload_ptr
+0x0275 mem_sdp_tx_pkt_length
+0x0277 mem_rfcomm_tx_buff_ptr
+0x0279 mem_rfcomm_tx_payload_ptr
+0x027b mem_rfcomm_tx_pkt_length
+0x027d memL2CAP_T1
+0x027f mem_CONTROL_tasks
+0x0280 mem_send_config_req
+0x0281 mem_config_identifier
+0x0282 mem_config_req_dest_CID
+0x0284 mem_rfcomm_malloc_fail_flag
+0x0285 mem_message_to_uppersm
+0x0286 mem_upper_sm_remote_page
+0x0287 mem_upper_sm_reconn
+0x0288 mem_upper_sm_ss
+0x0289 mem_tx_malloc_log
+0x02c9 mem_l2cap_mem_end
+0x02c9 mem_scid
+0x02cb mem_cmd_length
+0x02cd mem_tt2
+0x02cf mem_tt3
+0x02d1 mem_id
+0x02d3 mem_psm
+0x02d5 mem_l2cap_sdpres_delay_time
+0x02d9 mem_le_rxbuf
+0x0311 mem_le_l2capbuf
+0x0417 mem_le_mic
+0x041b mem_le_peer_mic
+0x041f mem_le_peer_ltk
+0x042f mem_le_mrand
+0x043f mem_le_state
+0x0440 mem_le_mode
+0x0441 mem_le_tsniff
+0x0443 mem_le_anchor
+0x0447 mem_le_clk_offset
+0x044d mem_le_receive_window
+0x044f mem_le_plap
+0x0455 mem_le_conn_handle
+0x0456 mem_le_arq
+0x0457 mem_le_ch
+0x0458 mem_le_hop
+0x0459 mem_le_event_count
+0x045b mem_le_supervision_timer
+0x045f mem_le_instant
+0x0461 mem_le_channels
+0x0462 mem_le_op
+0x0463 mem_le_access
+0x0467 mem_le_crcinit
+0x046a mem_le_window_size
+0x046b mem_le_slave_latency
+0x046d mem_le_superto
+0x046f mem_le_channel_map
+0x0474 mem_le_no_using
+0x0476 mem_le_peer_sca
+0x0477 mem_le_att_opcode
+0x0478 mem_le_att_handle
+0x047a mem_le_err_code
+0x047b mem_le_ll_pairing_fail_reason
+0x047c mem_le_sk
+0x048c mem_le_testtype
+0x048d mem_le_test_sync
+0x048f mem_le_test_pcnt
+0x0491 mem_le_rxon_ts
+0x0497 mem_le_rx_ll_opcode
+0x0498 mem_le_notify_attr_start
+0x049a mem_le_notify_len
+0x049b mem_cmd_le_create_conn
+0x049c mem_le_cur_attlist_start_ptr
+0x049e mem_le_cur_handle_start
+0x04a0 mem_le_cur_handle_end
+0x04a2 mem_le_cur_uuid_length
+0x04a3 mem_le_cur_uuid
+0x04b3 mem_le_curr_att_len
+0x04b4 mem_le_search_res
+0x04b5 mem_le_continue_type
+0x04b6 mem_lmo_header_length
+0x04b7 mem_lmo_header_opcode
+0x04b8 mem_lmo_payload
+0x04c9 mem_lmi_accepted_opcode
+0x04ca mem_disconn_reason_send
+0x04cb mem_tx_fixed_freq
+0x04cc mem_rx_fixed_freq
+0x04cd mem_ext_features_page
+0x04ce mem_lmpext_ssp_enable
+0x04d0 mem_remote_sppcap
+0x04d1 mem_lmp_conn_state
+0x04d2 mem_soft_timer
+0x04d4 mem_pincode_state
+0x04d5 mem_sres_tid
+0x04d6 mem_accptsco_tid
+0x04d7 mem_auth_enable
+0x04d8 mem_wait_encryption
+0x04d9 mem_sniff_payload
+0x04e9 mem_aurand_send_delay_time
+0x04ed memRemoteRPNBitRate
+0x04ee memRemotePRNDataBits
+0x04ef memRemotePRNStopBit
+0x04f0 memRemotePRNParity
+0x04f1 memRemotePRNFlowControl
+0x04f2 memRemotePRNXon
+0x04f3 memRemotePRNXoff
+0x04f4 mem_mod2div_temp
+0x04f7 mem_contw_temp
+0x04f9 mem_attrib_list
+0x04fb mem_current_adss
+0x04fc mem_current_channel
+0x04fd mem_current_frame_type
+0x04fe mem_current_fcs
+0x04ff mem_current_length
+0x0501 mem_rfcomm_uih_payload_ptr
+0x0503 mem_uih_cmd_type
+0x0504 mem_uih_length
+0x0506 mem_param_payload_ptr
+0x0508 mem_ms_param
+0x0509 mem_pn_credit_flow_type_info
+0x050a mem_pn_priority
+0x050b mem_pn_acknowledg_timer
+0x050c mem_pn_max_retrans
+0x050d mem_rfcomm_send_adss
+0x050e mem_rfcomm_send_frame_type
+0x050f mem_rfcomm_send_fcs
+0x0510 mem_rfcomm_send_offset
+0x0511 mem_sdp_mem_start
+0x0511 mem_sdp_uuid_search_ptr
+0x0519 mem_sdp_continue_byte
+0x051b mem_sdp_pduid
+0x051c mem_sdp_transactionid
+0x051e mem_sdp_transactionid_local
+0x0520 mem_sdp_attribute_maxbyte
+0x0522 mem_sdp_record_maxcnt
+0x0524 mem_sdp_record_handle
+0x0528 mem_sdp_LACAP_found
+0x0529 mem_sdp_RFCOMM_found
+0x052a mem_sdp_handle_list
+0x052a mem_sdp_attrib_list
+0x054a mem_sdp_error_code
+0x054c mem_sdp_all_length
+0x054e mem_handle_humber
+0x054f mem_search_uuid
+0x0551 mem_sdp_mem_end
+0x0551 mem_rxbuf
+0x0562 mem_random_number
+0x0572 mem_round_key
+0x0582 mem_kinit
+0x0592 mem_input_store
+0x05a2 mem_x
+0x05b2 mem_y
+0x05c1 mem_y15
+0x05c2 mem_key_store
+0x05d3 mem_key_store_end
+0x05d4 memp_ar_key
+0x05d6 memp_ar_input
+0x05d8 mem_ar_hround
+0x05e2 mem_ec_infinite
+0x05e3 mem_ec_loopc
+0x05e5 mem_aes_cmac_data_length
+0x05e6 memdat
+0x05e6 mem_ax
+0x05fe mem_ay
+0x0616 mem_az
+0x062e mem_bx
+0x0646 mem_ax_256//32 bytes
+0x0646 mem_by
+0x065e mem_bz
+0x0666 mem_ay_256// 32 bytes
+0x0676 mem_cx
+0x0686 mem_az_256// 32 bytes
+0x068e mem_cy
+0x06a5 mem_cy5
+0x06a6 mem_bx_256// 32 bytes
+0x06a6 mem_cz
+0x06be mem_k
+0x06c6 mem_by_256// 31 bytes
+0x06d6 mem_align
+0x06e6 mem_bz_256//32 bytes
+0x06e6 mem_tmp1
+0x06e6 memahbak
+0x06fe mem_tmp5
+0x0706 mem_cx_256//32 bytes
+0x0706 memahsave
+0x0716 mem_tmp2
+0x0726 mem_cy_256// 32 bytes
+0x0726 memahsave_end
+0x0726 mem_addr_padding
+0x0727 mem_addr_value/* 12 bytes     */ 
+0x072e mem_tmp3
+0x072e mem_t1
+0x0733 mem_addr_value_end
+0x0736 mem_addr_iocap_end
+0x0745 mem_cy5_256// 1 byte
+0x0746 mem_cz_256// 32 bytes
+0x0746 mem_tmp0
+0x0746 mem_t0
+0x074e mem_tmp0a
+0x075e mem_t2
+0x0766 mem_k_256//32 bytes
+0x0776 mem_t3
+0x0786 mem_tmp1_256//32 bytes
+0x078e mem_t7
+0x07a6 mem_tmp5_256
+0x07c6 mem_tmp2_256
+0x07e6 mem_tmp3_256
+0x07e6 mem_t1_256
+0x0806 mem_tmp0_256
+0x0806 mem_t0_256
+0x0826 mem_t2_256
+0x0846 mem_t3_256
+0x0866 mem_t7_256
+0x0886 mem_p
+0x089e mem_a
+0x08b6 mem_b
+0x08ce mem_gx
+0x08e6 mem_gy
+0x08fe memh0
+0x091e mem_p_256
+0x093e mem_a_256
+0x095e mem_gx_256
+0x097e mem_gy_256
+0x099e mem_le_slat
+0x09ae mem_sp_state_start
+0x09ae mem_sp_state
+0x09af mem_master_sp_state
+0x09b0 mem_sp_flag
+0x09b1 mem_master_sp_flag
+0x09b2 mem_sp_calc
+0x09b3 mem_sp_dh_ready
+0x09b4 mem_sp_localsm
+0x09b5 mem_pairing_auth
+0x09b6 mem_sp_flag_start
+0x09b6 mem_sp_local_key_send_count
+0x09b7 mem_sp_remote_key_recv_count
+0x09b8 mem_sp_remote_key_invalid
+0x09b9 mem_sp_dhkey_invalid
+0x09ba mem_gkey
+0x09be mem_le_pubkey_remote_x_256
+0x09c6 mem_sp_pubkey_remote
+0x09c6 mem_sp_pubkey_remote_x
+0x09de mem_sp_pubkey_remote_x_end
+0x09de mem_le_pubkey_remote_y_256
+0x09e6 mem_sp_pubkey_remote_y
+0x09fe mem_le_dhkey_256
+0x0a06 mem_sp_dhkey
+0x0a1e mem_sp_dhkey_end
+0x0a1e mem_sp_random_local
+0x0a2e mem_sp_random_local_end
+0x0a2e mem_sp_random_remote
+0x0a3e mem_sp_random_remote_end
+0x0a3e memresult
+0x0a3e mem_sp_calc_result
+0x0a3e memh
+0x0a42 memg
+0x0a46 memf
+0x0a4a meme
+0x0a4e mem_sp_calc_result_high
+0x0a4e memd
+0x0a52 memc
+0x0a56 memb
+0x0a5a mema
+0x0a5e mem_sp_check_result
+0x0a6e mem_sp_confirm_remote
+0x0a7e mem_sp_prarm_stack
+0x0a8e mem_UI_data_txbuff_length
+0x0a90 mem_ipc_skip_continue_proc
+0x0a91 mem_ui_timer_temp//length 4
+0x0a91 mem_ipc_rega_temp
+0x0a95 mem_hold_contr
+0x0a97 mem_hold_contw
+0x0a99 mem_fifo_temp
+0x0a9a mem_pdatatemp
+0x0aa2 mem_temp//8 bytes
+0x0aaa mem_timeup// 4 bytes
+0x0aae mem_rega//4 bytes
+0x0ab2 mem_regb//4 bytes
+0x0ab6 mem_regc//3 bytes
+0x0ab9 mem_contr//2 bytes
+0x0abb mem_contw//2 bytes
+0x0abd mem_wakup_from_power_flag
+0x0abe mem_saved_gpio_in
+0x0ac2 mem_shutter_random_mac_data_temp
+0x0ac2 mem_shutter_config_data_temp
+0x0ac2 mem_le_adv_channel_map_temp
+0x0ac2 mem_le_data_len_temp//1byte
+0x0ac2 mem_tx_fifo_map_temp
+0x0ac2 mem_rpn_dlci//1byte
+0x0ac2 mem_event_cmd_response_content//2byte
+0x0ac2 mem_le_prand//16byte
+0x0ac2 mem_AES_CMAC_k//16 bytes
+0x0ac2 mem_regext_index//1 bytes
+0x0ac2 mem_temp_block0
+0x0ac3 mem_le_data_temp//15bytes
+0x0ac3 mem_temp_block1
+0x0ad2 mem_le_aes_128//16byte
+0x0ad2 mem_regext//64 bytes
+0x0ad2 mem_AES_CMAC_k1//16 bytes
+0x0ad2 mem_temp_block2
+0x0ae2 mem_AES_CMAC_k2//16 bytes
+0x0ae2 mem_temp_block3
+0x0af2 mem_AES_CMAC_temp// 16 bytes
+0x0af2 mem_temp_block4
+0x0b02 mem_AES_CMAC_M_last// 16 bytes
+0x0b02 mem_module_uart_cmd
+0x0b03 mem_module_uart_opcode
+0x0b04 mem_module_uart_len
+0x0b05 mem_module_temp_nl_discard_packet
+0x0b06 mem_temp_block5
+0x0b12 mem_le_mackey//16 bytes
+0x0b12 mem_app_receive_temp
+0x0b12 mem_key_value_temp
+0x0b14 mem_key_value
+0x0b16 mem_key_value_temp1
+0x0b17 mem_key_value_temp2
+0x0b18 mem_key_value_temp3
+0x0b19 mem_key_value_temp4
+0x0b1a mem_key_value_temp5
+0x0b1b mem_key_value_temp6
+0x0b1c mem_temp_block6
+0x0b22 mem_usb_status
+0x0b23 mem_usb_fifo_empty
+0x0b24 mem_usb_read_len
+0x0b25 mem_usb_rxbuf
+0x0b65 mem_bufptr
+0x0b67 mem_remain
+0x0b68 mem_devicedesc
+0x0b7c mem_hidreportdesc_kb
+0x0b7e mem_hidreportdesc_m
+0x0b80 mem_confdesc
+0x0be4 mem_string0
+0x0be9 mem_string1
+0x0c07 mem_string2
+0x0c47 mem_string3
+0x0c65 mem_usb_zero_packet
+0x0c67 mem_usb_ones_packet
+0x0c69 mem_usb_two_packet
+0x0c6b mem_usb0_state
+0x0c6c mem_usb_offline_check_gpio
+0x0c6d mem_usb_tx_interval
+0x0c6e mem_usb_clear_mem_start
+0x0c6e mem_usb_setup
+0x0c6e mem_usb_setup_bmRequestType
+0x0c6f mem_usb_setup_bRequest
+0x0c70 mem_usb_setup_bValue
+0x0c71 mem_usb_setup_bValueH
+0x0c72 mem_usb_setup_wIndex
+0x0c74 mem_usb_setup_bLength
+0x0c75 mem_usb_setup_bLengthH
+0x0c76 mem_usb0_setup
+0x0cb6 mem_usb0_set_report_data
+0x0cf6 mem_usb0_get_report_data
+0x0d36 mem_usb_state
+0x0d37 mem_usb_tx_wait
+0x0d38 mem_usb_tx_enable
+0x0d39 mem_usb_remote_wakeup
+0x0d3a mem_usb_clear_remote_wakeup
+0x0d3b mem_usb_ep0_stall_status
+0x0d3c mem_usb_ep1_stall_status
+0x0d3d mem_usb_ep2_stall_status
+0x0d3e mem_usb_ep3_stall_status
+0x0d3f mem_dsc_info_data_pointer
+0x0d41 mem_dsc_info_len
+0x0d42 mem_usb0_data_ready_report
+0x0d43 mem_usb_tx_win_enable
+0x0d44 mem_usb_tx_mac_enable
+0x0d45 mem_usb_device_enumeration_endflag
+0x0d46 mem_usb_wakestate_onetime_flag
+0x0d47 mem_usb_mac_wakeup_trig
+0x0d48 mem_usb_set_high_addr_flag
+0x0d49 mem_usb_set_protocol_value
+0x0d4a mem_usb_set_protocol_status
+0x0d4b mem_usb_get_protocol_flag
+0x0d4c mem_usb_idle_flag
+0x0d4d mem_usb_idle_rate
+0x0d4e mem_usb_setup_bValue_temp
+0x0d50 mem_usb0_get_set_report
+0x0d51 mem_usb_ep1_data
+0x0d52 mem_usb_ep2_data
+0x0d53 mem_usb_clear_halt
+0x0d54 mem_usb_mouse_data
+0x0d64 mem_usb_kb_data
+0x0d74 mem_usb_kb_multikey
+0x0d84 mem_usb_kb_data_sta_data
+0x0d8c mem_usb_kb_data_last_data
+0x0d94 mem_usb_kb_multikey_sta_data
+0x0d97 mem_usb_kb_multikey_last_data
+0x0d9a mem_usb_kb_blank_data_enable
+0x0d9b mem_usb_kb_mul_blank_data_enable
+0x0d9c mem_usb_test_cnt
+0x0d9d mem_usb_clear_mem_end
+0x0d9d mem_usb_test_kb
+0x0d9e mem_rssi_noise_buffer
+0x0e9e mem_rssi_noise_dg_buffer
+0x0f9e mem_rssi_noise_ms_buffer
+0x109e mem_rssi_noise_kb_buffer
+0x119e mem_24g_common_temp
+0x11be mem_data_pre
+0x11c0 mem_data_current
+0x11c2 mem_data_sum
+0x11c5 mem_zcode_temp_param0//zcode num
+0x11c6 mem_zcode_temp_param1//patch ram func addr
+0x11c8 mem_zcode_temp_param2//patch ram func addr
+0x4000 mem_patch00
+0x4001 mem_patch01
+0x4002 mem_patch02
+0x4003 mem_patch03
+0x4004 mem_patch04
+0x4005 mem_patch05
+0x4006 mem_patch06
+0x4007 mem_patch07
+0x4008 mem_patch08
+0x4009 mem_patch09
+0x400a mem_patch0a
+0x400b mem_patch0b
+0x400c mem_patch0c
+0x400d mem_patch0d
+0x400e mem_patch0e
+0x400f mem_patch0f
+0x4010 mem_patch10
+0x4011 mem_patch11
+0x4012 mem_patch12
+0x4013 mem_patch13
+0x4014 mem_patch14
+0x4015 mem_patch15
+0x4016 mem_patch16
+0x4017 mem_patch17
+0x4018 mem_patch18
+0x4019 mem_patch19
+0x401a mem_patch1a
+0x401b mem_patch1b
+0x401c mem_patch1c
+0x401d mem_patch1d
+0x401e mem_patch1e
+0x401f mem_patch1f
+0x4020 mem_patch20
+0x4021 mem_patch21
+0x4022 mem_patch22
+0x4023 mem_patch23
+0x4024 mem_patch24
+0x4025 mem_patch25
+0x4026 mem_patch26
+0x4027 mem_patch27
+0x4028 mem_patch28
+0x4029 mem_patch29
+0x402a mem_patch2a
+0x402b mem_patch2b
+0x402c mem_patch2c
+0x402d mem_patch2d
+0x402e mem_patch2e
+0x402f mem_patch2f
+0x4030 mem_patch30
+0x4031 mem_patch31
+0x4032 mem_patch32
+0x4033 mem_patch33
+0x4034 mem_patch34
+0x4035 mem_patch35
+0x4036 mem_patch36
+0x4037 mem_patch37
+0x4038 mem_patch38
+0x4039 mem_patch39
+0x403a mem_patch3a
+0x403b mem_patch3b
+0x403c mem_patch3c
+0x403d mem_patch3d
+0x403e mem_patch3e
+0x403f mem_patch3f
+0x4040 mem_context
+0x4090 mem_current_amaddr
+0x4091 mem_lpm_mode
+0x4092 mem_device_option
+0x4093 mem_scan_mode
+0x4094 mem_last_clkn
+0x4098 mem_features
+0x40a0 mem_lap
+0x40a3 mem_uap
+0x40a4 mem_nap
+0x40a6 mem_npage
+0x40a7 mem_glap
+0x40aa mem_class
+0x40ad mem_iscan_window
+0x40af mem_iscan_interval
+0x40b1 mem_pscan_window
+0x40b3 mem_pscan_interval
+0x40b5 mem_page_interval
+0x40b7 mem_page_window
+0x40b9 mem_page_to
+0x40bb mem_inq_window
+0x40bd mem_fcomp_mul
+0x40be mem_fcomp_div
+0x40bf mem_rx_window_init
+0x40c1 mem_rx_window_sniff
+0x40c3 mem_rf_init_ptr
+0x40c5 mem_last_type
+0x40c6 mem_last_type_esco
+0x40c7 mem_last_type_saved
+0x40c8 mem_retransmission_cnt
+0x40ca mem_next_btclk
+0x40ce mem_rf_rccal
+0x40cf mem_handle_num
+0x40d0 mem_max_slot
+0x40d1 mem_eir_enable
+0x40d2 mem_afh_instant
+0x40d6 mem_afh_error_total
+0x40d8 mem_afh_cfg
+0x40d9 mem_afh_new_mod
+0x40da mem_afh_map_lo
+0x40df mem_afh_map_hi
+0x40e4 mem_afh_used
+0x40e5 mem_afh_index
+0x40e7 mem_afh_map_new
+0x40f2 mem_afh_map
+0x4142 mem_afh_timer
+0x4146 mem_afh_classify_channel_map
+0x4150 mem_chip_functions
+0x4152 mem_lpm_wake_lock
+0x4154 mem_lpm_interval
+0x4156 mem_lpm_overhead
+0x4157 mem_lpm_hibernate_switch
+0x4158 mem_esco_addr
+0x4159 mem_sniff_unint_lost
+0x415a mem_ptt
+0x415b mem_sleep_counter//should be 0x41fc in REVC
+0x415f mem_sleep_counter_all
+0x4163 mem_sleep_clkn
+0x4169 mem_sniff_rcv
+0x416c mem_sniff_lost
+0x416f mem_clks_per_lpo
+0x4172 mem_lpm_mult
+0x4173 mem_lpm_mult_timeout
+0x4174 mem_lpm_mult_cnt
+0x4175 mem_lpm_config
+0x4178 mem_lpm_xtalcnt
+0x4179 mem_lpm_buckcnt
+0x417a mem_lpm_ldocnt
+0x417b mem_lpm_isogate
+0x417c mem_lpm_isogate_final
+0x417d mem_saved_gpio// should be 0x421e in REVC
+0x418d mem_saved_gsel
+0x4190 mem_saved_mark
+0x4198 mem_saved_spidctrl
+0x4199 mem_patch_ptr
+0x419b mem_patch_len
+0x419d mem_timers
+0x41bd mem_link_key_exists
+0x41be mem_link_key
+0x41ce mem_hci_cmd
+0x41cf mem_hci_conn_handle
+0x41d0 mem_hci_plap
+0x41d3 mem_hci_puap
+0x41d4 mem_hci_pnap
+0x41d6 mem_uartd_rxitems_got_data
+0x41d7 mem_uartd_rxitems_threshold
+0x41d8 mem_uartd_rx_timeout
+0x41da mem_loadcode_times
+0x41db mem_tx_lch
+0x41dc mem_tx_len
+0x41de mem_tx_power
+0x41df mem_context_number
+0x41e0 mem_250k_freq_enable
+0x41e1 mem_rf_init_data
+0x41e2 mem_app_handshake_flag
+0x41e3 mem_sniff_param_interval
+0x41e5 mem_sniff_param_attempt
+0x41e7 mem_sniff_param_timeout
+0x41e9 mem_cb_check_wakelock
+0x41eb mem_cb_before_hibernate
+0x41ed mem_cb_before_lpm
+0x41ef mem_cb_le_process
+0x41f1 mem_cb_bt_process
+0x41f3 mem_cb_idle_process
+0x41f5 mem_cb_bb_event_process
+0x41f7 mem_cb_discovry_timeout
+0x41f9 mem_cb_att_write
+0x41fb mem_cb_ble_transmit
+0x41fd mem_cb_event_timer
+0x41ff mem_cb_bt_set_mult
+0x4201 mem_cb_spi_flash_write_complate
+0x4203 mem_eeprom_base
+0x4205 mem_unsniff2sniff_timer_count
+0x4206 mem_wake_up_delay_timer
+0x4207 mem_app_connection_options
+0x4208 mem_app_disconn_reason
+0x420a mem_app_disconn_reason_flag
+0x420c mem_lpm_delay_after_sniff
+0x4210 mem_xrecord_mode
+0x4211 mem_eeprom_block_size
+0x4212 mem_spi_init_clk
+0x4213 mem_spi_init_delay_time
+0x4214 mem_spi_ncs_gpio
+0x4215 mem_nv_data_ptr
+0x4217 mem_nv_data_number
+0x4218 mem_queue_ptr
+0x421a mem_ui_led_struct_num
+0x421b mem_ui_led_struct_ptr
+0x421d mem_0_5_adc_io_data
+0x421f mem_1v_adc_hvin_data
+0x4221 mem_2v_adc_vinlpm_data
+0x4223 mem_1v_adc_io_data
+0x4225 mem_5v_adc_hvin_data
+0x4227 mem_3v_adc_vinlpm_data
+0x4229 mem_otp_adc_flag
+0x422b mem_reference_voltage
+0x422d mem_adc_config_flag
+0x422e mem_adc_channel
+0x422f mem_adc_current_value
+0x4231 mem_adc_power_flag//bit0:low power falg ; bit1:no power flag
+0x4232 mem_spi_write_addr
+0x4235 mem_spi_write_ptr
+0x4237 mem_spi_write_len
+0x4239 mem_spi_write_flash_sm
+0x423a mem_eeprom_wp_gpio
+0x423b mem_kscan_ptr
+0x423d mem_key_num_ptr
+0x423d mem_keyscan_ptr
+0x423f mem_power_param_ptr
+0x4241 mem_power_on_flag//forbid to move this variable
+0x4241 mem_24g_head_ptr
+0x4243 mem_baud
+0x4245 mem_hci_lt_rx_state
+0x4246 mem_l2cap_xmem_start
+0x4246 mem_l2cap_tx_multi_offset//0 means single packet
+0x4248 mem_sdp_remote_cid
+0x424a mem_rfcomm_remote_cid
+0x424c mem_hid_ctrl_remote_cid
+0x424e mem_hid_int_remote_cid
+0x4250 mem_sdp_state
+0x4251 mem_rfcomm_state
+0x4252 mem_hid_control_state
+0x4253 mem_hid_interrupt_state
+0x4254 mem_spp_state
+0x4255 mem_ML2CAP_comm_id
+0x4256 mem_used_map
+0x4257 mem_tx_fifo0
+0x4257 mem_tx_fifo0_map
+0x4258 mem_tx_fifo0_ptr
+0x425a mem_tx_fifo1
+0x425a mem_tx_fifo1_map
+0x425b mem_tx_fifo1_ptr
+0x425d mem_tx_fifo2
+0x425d mem_tx_fifo2_map
+0x425e mem_tx_fifo2_ptr
+0x4260 mem_tx_fifo3
+0x4260 mem_tx_fifo3_map
+0x4261 mem_tx_fifo3_ptr
+0x4263 mem_tx_fifo_end
+0x4263 mem_l2cap_lpm_txbuf
+0x4363 mem_l2cap_flow_ctrl_flag
+0x4364 mem_l2cap_pending_item
+0x4365 mem_l2cap_xmem_end
+0x4365 mem_le_dsniff
+0x4367 mem_le_conn_interval
+0x4369 mem_le_scan_enable
+0x436a mem_le_scan_interval
+0x436c mem_le_scan_window
+0x436e mem_le_adv_enable
+0x436f mem_le_adv_data_len
+0x4370 mem_le_adv_data
+0x438f mem_le_scan_data_len
+0x4390 mem_le_scan_data
+0x43af mem_le_name_len
+0x43b0 mem_le_name
+0x43ce mem_le_new_map
+0x43d3 mem_le_new_param
+0x43d3 mem_le_new_transmitwindowsize
+0x43d4 mem_le_new_transmitwindowoffset
+0x43d6 mem_le_new_conninterval
+0x43d8 mem_le_new_connslavelatency
+0x43da mem_le_new_connsupervisiontimeout
+0x43dc mem_le_txheader
+0x43dd mem_le_txlen
+0x43de mem_le_txpayload
+0x43e0 mem_le_txcid
+0x43e2 mem_le_l2cap
+0x43e3 mem_le_l2cap_response
+0x43e4 mem_le_txbdy
+0x4403 mem_le_pcnt_tx
+0x4408 mem_le_pcnt_rx
+0x440d mem_le_last_mic
+0x4411 mem_le_ivm
+0x4415 mem_le_ivs
+0x4419 mem_le_ltk
+0x4429 mem_ltk_exists
+0x442a mem_le_rconfirm
+0x443a mem_le_srand
+0x444a mem_le_iat
+0x444b mem_le_rat
+0x444c mem_le_preq
+0x444d mem_le_preq_iocap
+0x444e mem_le_preq_oob
+0x444f mem_le_preq_auth
+0x4450 mem_le_preq_max_keysize
+0x4451 mem_le_preq_init_key_distribution
+0x4452 mem_le_preq_resp_key_distribution
+0x4453 mem_le_pres
+0x4454 mem_le_pres_iocap
+0x4455 mem_le_pres_oob
+0x4456 mem_le_pres_auth
+0x4457 mem_le_pres_max_keysize
+0x4458 mem_le_pres_init_key_distribution
+0x4459 mem_le_pres_resp_key_distribution
+0x445a mem_le_search_handle_start
+0x445c mem_le_search_handle_end
+0x445e mem_le_att_offset
+0x445e mem_le_search_att_type_length
+0x445f mem_le_search_att_type
+0x446f mem_le_notify_handle
+0x4471 mem_le_search_uuid_length
+0x4472 mem_le_search_uuid
+0x4482 mem_le_adv_param
+0x4482 mem_le_adv_interval
+0x4484 mem_le_adv_type
+0x4485 mem_le_adv_own_addr_type
+0x4486 mem_le_adv_direct_addr_type
+0x4487 mem_le_adv_direct_addr
+0x448d mem_le_adv_channel_map
+0x448e mem_le_conn_param
+0x448e mem_le_conn_peer_addr_type
+0x448f mem_le_conn_peer_addr
+0x4495 mem_le_conn_own_addr_type
+0x4496 mem_le_interval_min
+0x4498 mem_le_interval_max
+0x449a mem_le_latency
+0x449c mem_le_timeout
+0x449e mem_le_scan_params
+0x449e mem_le_scan_type
+0x449f mem_le_scan_own_addr_type
+0x44a0 mem_le_lap
+0x44a3 mem_le_uap
+0x44a4 mem_le_nap
+0x44a6 mem_le_local_mtu
+0x44a8 mem_le_remote_mtu
+0x44aa mem_le_skdm
+0x44b2 mem_le_skds
+0x44ba mem_le_init_superto
+0x44bc mem_ui_le_uuid_table
+0x44be mem_le_secure_connect_enable
+0x44bf mem_le_secure_connect_flag
+0x44c0 mem_le_sc_calc
+0x44c1 mem_le_secure_connect_state
+0x44c2 mem_le_sc_confirm_gkey_flag
+0x44c3 mem_le_sc_local_key_invalid
+0x44c4 mem_le_pairing_state
+0x44c5 mem_le_enc_state
+0x44c6 mem_le_pairing_mode
+0x44c7 mem_le_tk
+0x44cb mem_le_ediv
+0x44cd mem_le_rand
+0x44d5 mem_le_irk
+0x44e5 mem_le_transmit_window
+0x44e9 mem_le_configuration
+0x44ea mem_le_fixed_ltk
+0x44fa mem_le_pairing_handle
+0x44fc mem_le_l2cap_size
+0x44fe mem_le_packet_len_recved
+0x44ff mem_le_tx_buff_used
+0x4500 mem_le_tx_ptr0
+0x4502 mem_le_tx_ptr1
+0x4504 mem_le_tx_ptr2
+0x4506 mem_le_tx_ptr3
+0x4508 mem_le_signaling_identifier
+0x4509 mem_le_l2cap_signaling_conn_param_update_rsp_result
+0x450b mem_le_packet_size
+0x450c mem_le_packet_llid
+0x450d mem_le_payload_ptr
+0x450f mem_le_md_count
+0x4510 mem_lmp_version
+0x4513 mem_lmp_subversion
+0x4515 mem_local_name_length
+0x4516 mem_local_name
+0x4519 mem_local_name2
+0x4559 mem_local_name_end
+0x455a mem_unsniff2sniff_timer
+0x455b mem_switch_flag
+0x455c mem_classic_bt_flag
+0x455d mem_pn_dlci
+0x455e mem_pn_max_frame_size
+0x4560 memFCStemp1
+0x4561 memFCStemp2
+0x4562 memFCStemp3
+0x4563 mem_rfcomm_initiator
+0x4564 mem_remote_spp_channel
+0x4565 mem_HIUfcs_SPP
+0x4566 mem_HIUfcs_SPP_WCredits
+0x4567 mem_rfcomm_send_more_pkt
+0x4568 mem_remote_credits
+0x4569 mem_credit_given
+0x456a mem_ms_channel
+0x456b mem_credit_flag
+0x456c mem_rfcomm_max_frame_size
+0x456e mem_rfcomm_credit_init_data
+0x456f mem_cb_receive_spp_data
+0x4571 mem_nl_rx_data_src
+0x4573 mem_nl_rx_len_all
+0x4575 mem_ui_uuid_table
+0x4577 mem_all_uuid_16bits
+0x458d mem_all_uuid_128bits
+0x45af mem_sdp_l2capch_ptr
+0x45b1 mem_sp_local_key_invalid
+0x45b2 mem_le_private_key_256
+0x45d2 mem_le_pubkey_local_x_256
+0x45f2 mem_le_pubkey_local_y_256
+0x4612 mem_sp_private_key
+0x462a mem_sp_pubkey_local
+0x462a mem_sp_pubkey_local_x
+0x4642 mem_sp_pubkey_local_x_end
+0x4642 mem_sp_pubkey_local_y
+0x465a mem_ssp_enable
+0x465b mem_sp_iocap_local
+0x465e mem_sp_iocap_remote
+0x4661 mem_flag_mode_ssp_pin
+0x4662 mem_ssp_mode_flag
+0x4663 mem_authentication_passkey_times
+0x4664 mem_passkey_1bit
+0x4665 mem_flag_pairing_state
+0x4666 mem_ipc_lock_bt
+0x4667 mem_ipc_lock_c51
+0x4668 mem_ipc_fifo_bt2c51
+0x4670 mem_ipc_fifo_c512bt
+0x4678 mem_ui_button_timer
+0x4679 mem_ui_button_last_state
+0x467a mem_ui_timer_last_btclk
+0x467e mem_discovery_timeout_timer_count
+0x4680 mem_hid_handshake_timer_count
+0x4681 memui_reconnect_mode
+0x4682 mem_ui_state_map
+0x4684 mem_ui_profile_supported
+0x4685 mem_ui_button_timeout
+0x4686 mem_ui_button_gpio
+0x4687 mem_discovery_timeout
+0x4689 mem_pin_length
+0x468a mem_pin
+0x469a mem_antl_lpm_interval
+0x469c mem_antl_adv_interval
+0x469e mem_antl_slow_adv_lpm_interval
+0x46a0 mem_antl_slow_adv_adv_interval
+0x46a2 mem_antl_led_style
+0x46a2 mem_antl_led_type
+0x46a3 mem_antl_led_blink_count
+0x46a4 mem_antl_led_gpio
+0x46a5 mem_antl_led_on_time
+0x46a7 mem_antl_led_off_time
+0x46a9 mem_antl_led_cb_on
+0x46ab mem_antl_led_cb_off
+0x46ad mem_antl_buzzer_style
+0x46ad mem_antl_buzzer_type
+0x46ae mem_antl_buzzer_blink_count
+0x46af mem_antl_buzzer_gpio
+0x46b0 mem_antl_buzzer_on_time
+0x46b2 mem_antl_buzzer_off_time
+0x46b4 mem_antl_buzzer_cb_on
+0x46b6 mem_antl_buzzer_cb_off
+0x46b8 mem_antl_fast_adv_led_style
+0x46b8 mem_antl_fast_adv_led_type
+0x46b9 mem_antl_fast_adv_led_blink_count
+0x46ba mem_antl_fast_adv_led_gpio
+0x46bb mem_antl_fast_adv_led_on_time
+0x46bd mem_antl_fast_adv_led_off_time
+0x46bf mem_antl_slow_adv_led_style
+0x46bf mem_antl_slow_adv_led_type
+0x46c0 mem_antl_slow_adv_led_blink_count
+0x46c1 mem_antl_slow_adv_led_gpio
+0x46c2 mem_antl_slow_adv_led_on_time
+0x46c4 mem_antl_slow_adv_led_off_time
+0x46c6 mem_antl_power_starting_led_style
+0x46c6 mem_antl_power_starting_led_type
+0x46c7 mem_antl_power_starting_led_blink_count
+0x46c8 mem_antl_power_starting_led_gpio
+0x46c9 mem_antl_power_starting_led_on_time
+0x46cb mem_antl_power_starting_led_off_time
+0x46cd mem_antl_power_starting_buzzer_style
+0x46d4 mem_antl_power_off_led_style
+0x46d4 mem_antl_power_off_led_type
+0x46d5 mem_antl_power_off_led_link_count
+0x46d6 mem_antl_power_off_led_gpio
+0x46d7 mem_antl_power_off_led_on_time
+0x46d9 mem_antl_power_off_led_off_time
+0x46db mem_antl_power_off_buzzer_style
+0x46db mem_antl_power_off_buzzer_type
+0x46dc mem_antl_power_off_buzzer_link_count
+0x46dd mem_antl_power_off_buzzer_gpio
+0x46de mem_antl_power_off_buzzer_on_time
+0x46e0 mem_antl_power_off_buzzer_off_time
+0x46e2 mem_antl_alert_led_stlye
+0x46e9 mem_antl_alert_buzzer_stlye
+0x46e9 mem_antl_alert_buzzer_type
+0x46ea mem_antl_alert_buzzer_blink_count
+0x46eb mem_antl_alert_buzzer_gpio
+0x46ec mem_antl_alert_buzzer_on_time
+0x46ee mem_antl_alert_buzzer_off_time
+0x46f0 mem_antl_key_led_style
+0x46f0 mem_antl_key_led_type
+0x46f1 mem_antl_key_led_blink_count
+0x46f2 mem_antl_key_led_gpio
+0x46f3 mem_antl_key_led_on_time
+0x46f5 mem_antl_key_led_off_time
+0x46f7 mem_antl_key_buzzer_style
+0x46fe mem_antl_queue_width
+0x46ff mem_antl_queue_depth
+0x4700 mem_antl_queue_curr_num
+0x4701 mem_antl_queue_read_ptr
+0x4702 mem_antl_queue_write_ptr
+0x4703 mem_antl_queue_buff
+0x4753 mem_antl_key_scan_enable
+0x4754 mem_antl_led_num
+0x4755 mem_antl_led_gpio_map
+0x4759 mem_antl_power_param
+0x4759 mem_antl_power_state
+0x475a mem_antl_power_timer
+0x475b mem_antl_power_off_timeout
+0x475c mem_antl_power_starting_timeout
+0x475d mem_antl_power_off_cb
+0x475f mem_antl_power_starting_cb
+0x4761 mem_antl_power_standby_cb
+0x4763 mem_event_button_up_cb
+0x4765 mem_antl_key_num
+0x4766 mem_cb_antl_key
+0x4768 mem_antl_key_conf0
+0x476c mem_antl_key0_press
+0x477b mem_antl_key0_release
+0x478a mem_antl_conn_updata_procedure_state
+0x478b mem_client_characteristic_configuration_descriptor
+0x478d mem_adc_timer
+0x478f mem_antl_conn_update_timer
+0x4790 mem_antl_send_updata_le_param_timer
+0x4791 mem_antl_le_sleep_timer
+0x4793 mem_antl_fast_adv_timer
+0x4795 mem_antl_fast_adv_timeout
+0x4797 mem_antl_le_sleep_timeout
+0x4799 mem_double_click_timer
+0x479a mem_butten_click_cnt
+0x479b mem_antl_led_state
+0x479c mem_antl_buzzer_state
+0x479d mem_antl_key_state
+0x479e mem_antl_lost_mode
+0x479f mem_alarm_config
+0x47a0 mem_alarm_config_notfy_cnt
+0x47a1 mem_buzzer_pwm_conf
+0x47a7 mem_adc_timeout
+0x47a9 mem_voltage_remain_percent
+0x47aa mem_battery_calculate_set
+0x47aa mem_battery_full_voltage
+0x47ac mem_battery_empty_voltage
+0x47ae mem_battery_low_voltage
+0x47b0 mem_battery_current_voltage
+0x47b2 mem_rx_window_sniff_inc
+0x47b4 mem_interval_increment
+0x47b6 mem_antl_le_interval_min
+0x47b8 mem_antl_le_interval_max
+0x47ba mem_antl_le_latency
+0x47bc mem_antl_le_timeout
+0x47be mem_antl_le_unnormal_interval_min
+0x47c0 mem_antl_le_unnormal_interval_max
+0x47c2 mem_antl_le_unnormal_latency
+0x47c4 mem_antl_le_unnormal_timeout
+0x47c6 mem_AntiLost_le_att_list
+0x469a mem_car_hard_soft_switch
+0x469b mem_car_queue_each_size
+0x469c mem_car__queue_length
+0x469d mem_car_queue_curr_num
+0x469e mem_car_queue_read_ptr
+0x469f mem_car_queue_write_ptr
+0x46a0 mem_car_queue_ele
+0x4718 mem_car_pop_queue_buff
+0x472c mem_car_led_num
+0x472d mem_car_led_map
+0x4737 mem_car_style1_led_type
+0x4738 mem_car_style1_blink_count
+0x4739 mem_car_style1_struct_led_gpio
+0x473a mem_car_style1_on_time
+0x473c mem_car_style1_off_time
+0x473e mem_car_style1_cb_ledon
+0x4740 mem_car_style1_cb_ledoff
+0x4742 mem_car_style2_led_type
+0x4743 mem_car_style2_blink_count
+0x4744 mem_car_style2_struct_led_gpio
+0x4745 mem_car_style2_on_time
+0x4747 mem_car_style2_off_time
+0x4749 mem_car_style2_cb_ledon
+0x474b mem_car_style2_cb_ledoff
+0x474d mem_le_receive_data
+0x474d mem_le_receive_packet_head
+0x474f mem_le_receive_cmd
+0x4750 mem_le_receive_length
+0x4752 mem_le_receive_payload
+0x475c mem_le_receive_checksum
+0x475d mem_motor1_status
+0x475e mem_motor1_speed
+0x475f mem_motor2_status
+0x4760 mem_motor2_speed
+0x4761 mem_motor3_status
+0x4762 mem_motor3_speed
+0x4763 mem_motor1_pwm_set
+0x4763 mem_motor1_pwm_pin1_set
+0x4764 mem_motor1_pwm_pin2_set
+0x4765 mem_motor1_pwm_pin_set
+0x4766 mem_motor1_pwm_channel_set
+0x4767 mem_motor1_pwm_freq_set
+0x476a mem_motor1_pwm_dute_set
+0x476b mem_motor2_pwm_set
+0x476b mem_motor2_pwm_pin1_set
+0x476c mem_motor2_pwm_pin2_set
+0x476d mem_motor2_pwm_pin_set
+0x476e mem_motor2_pwm_channel_set
+0x476f mem_motor2_pwm_freq_set
+0x4772 mem_motor2_pwm_dute_set
+0x4773 mem_motor3_pwm_set
+0x4773 mem_motor3_pwm_pin1_set
+0x4774 mem_motor3_pwm_pin2_set
+0x4775 mem_motor3_pwm_pin_set
+0x4776 mem_motor3_pwm_channel_set
+0x4777 mem_motor3_pwm_freq_set
+0x477a mem_motor3_pwm_dute_set
+0x477b mem_motor_select_p_n
+0x477c mem_car_motor_status
+0x477d mem_car_motor_speed
+0x477e mem_motor_pwm_set
+0x477e mem_motor_pwm_pin1_set
+0x477f mem_motor_pwm_pin2_set
+0x4780 mem_motor_pwm_pin_set
+0x4781 mem_motor_pwm_channel_set
+0x4782 mem_motor_pwm_freq_set
+0x4785 mem_motor_pwm_dute_set
+0x4786 mem_ir_rx_gpio
+0x4787 mem_ir_data
+0x4789 mem_ir_rx_buf
+0x478b mem_ir_receive_clkn
+0x478f mem_ir_notify_data
+0x4792 mem_ir_notify_data_head
+0x4797 mem_ir_notify_data_payload
+0x4799 mem_ir_notify_data_check_sum
+0x479a mem_car_ir_breakdown_check_timer
+0x479b mem_car_ir_breakdown_flag
+0x479c mem_car_led_control
+0x479c mem_car_led1_status
+0x479d mem_car_led2_status
+0x479e mem_car_led3_status
+0x479f mem_car_led4_status
+0x47a0 mem_car_led5_status
+0x47a1 mem_car_led6_status
+0x47a2 mem_car_led7_status
+0x47a3 mem_car_led8_status
+0x47a4 mem_car_led_control_timer
+0x47a5 mem_car_led_blink_status
+0x47a6 mem_car_led_no
+0x47a7 mem_car_info_request
+0x47aa mem_car_info_request_head
+0x47af mem_car_info_request_payload
+0x47b7 mem_car_info_request_checksum
+0x47b8 mem_car_config_param
+0x47b8 mem_car_config_setting_flag
+0x47b9 mem_car_config_device_select
+0x47ba mem_car_config_motor_layout
+0x47bb mem_car_config_ir_enable
+0x47bc mem_car_config_ir_rx_gpio
+0x47bd mem_car_config_pairing_led_conn_status
+0x47be mem_car_config_pairing_led_gpio
+0x47bf mem_car_config_led_num
+0x47c0 mem_car_config_blood_led_gpio
+0x47c0 mem_car_config_blood_led1_gpio
+0x47c1 mem_car_config_blood_led2_gpio
+0x47c2 mem_car_config_blood_led3_gpio
+0x47c3 mem_car_config_blood_led4_gpio
+0x47c4 mem_car_config_blood_led5_gpio
+0x47c5 mem_car_config_blood_led6_gpio
+0x47c6 mem_car_config_blood_led7_gpio
+0x47c7 mem_car_config_blood_led8_gpio
+0x47c8 mem_car_config_bat_notify_enable
+0x47c9 mem_car_config_low_voltage_led_gpio
+0x47ca mem_car_config_low_voltage_percent
+0x47cb mem_car_config_soft_switch_enable
+0x47cc mem_car_config_soft_switch_gpio
+0x47cd mem_car_notify_vdd_count
+0x47ce mem_car_notify_vdd_timer
+0x47cf mem_car_notify_vdd_value_last
+0x47d0 mem_car_notify_vdd_percent
+0x47d1 mem_car_working_flag
+0x47d2 mem_low_bat_flag
+0x47d3 mem_notify_bat_packet
+0x47d6 mem_notify_bat_head
+0x47db mem_notify_bat_payload
+0x47dc mem_notify_bat_check_sum
+0x47dd mem_vdd_notify_flag
+0x47de mem_car_current_vdd_value_temp
+0x47e0 mem_car_last_vdd_value
+0x47e2 mem_vdd_calculate_set
+0x47e2 mem_vdd_full_vol
+0x47e4 mem_vdd_empty_vol
+0x47e6 mem_vdd_low_vol
+0x47e8 mem_vdd_now_vol
+0x47ea mem_car_24g_status
+0x47eb mem_car_24g_no_data_timeout_count
+0x47ed mem_car_24g_no_data_timeout_timer
+0x47ef mem_car_24g_ir_receive_attack_count
+0x47f0 mem_car_24g_go_die_flag
+0x47f1 mem_car_attack_shake_timer
+0x47f2 mem_car_attack_shake_flag
+0x47f3 mem_car_soft_power
+0x47f3 mem_car_power_state
+0x47f4 mem_car_power_timer
+0x47f5 mem_car_power_off_timeout
+0x47f6 mem_car_power_starting_timeout
+0x47f7 mem_car_power_off_cb
+0x47f9 mem_car_power_starting_cb
+0x47fb mem_car_power_standby_cb
+0x47fd mem_car_ui_button_up_cb
+0x47ff mem_car_le_att_list
+0x49f3 mem_car_moto1_blank_timer
+0x49f4 mem_car_moto2_blank_timer
+0x49f5 mem_car_moto3_blank_timer
+0x49f6 mem_car_24g_received_pac
+0x49f7 mem_24g_car_head_ptr
+0x469a mem_light_pwm0
+0x469b mem_light_pwm1
+0x469c mem_light_pwm2
+0x469d mem_light_pwm3
+0x469e mem_light_pwm4
+0x469f mem_light_pwm5
+0x46a0 mem_light_pairing_enable
+0x46a1 mem_light_pairing_timer
+0x46a3 mem_light_cnum
+0x46a4 mem_light_next_record
+0x46a5 mem_light_clist
+0x46f5 mem_light_crr_cmd_count
+0x46f6 mem_curr_packet_num
+0x469a mem_lightc_led_gpio
+0x469b mem_lightc_row
+0x46a1 mem_lightc_col
+0x46a7 mem_adv_time
+0x46a8 mem_cmd0_string
+0x46bc mem_cmd1_string
+0x46d0 mem_cmd2_string
+0x46e4 mem_cmd3_string
+0x46f8 mem_cmd4_string
+0x470c mem_cmd5_string
+0x4720 mem_cmd6_string
+0x4734 mem_cmd7_string
+0x4748 mem_cmd8_string
+0x475c mem_cmd9_string
+0x4770 mem_cmd10_string
+0x4784 mem_cmd11_string
+0x4798 mem_cmd12_string
+0x47ac mem_cmd13_string
+0x47c0 mem_cmd14_string
+0x47d4 mem_cmd15_string
+0x47e8 mem_cmd16_string
+0x47fc mem_cmd17_string
+0x4810 mem_cmd18_string
+0x4824 mem_cmd19_string
+0x4838 mem_cmd20_string
+0x469a mem_soft_version_num
+0x469c mem_module_wake_up_gpio
+0x469d mem_module_state_gpio
+0x469e mem_module_connect_state_gpio
+0x469f mem_current_packet_length
+0x46a1 mem_module_state
+0x46a2 mem_module_mcu_wake_pin
+0x46a3 mem_module_mcu_wake_delay_us
+0x46a7 mem_module_spp_lpm_mult
+0x46a8 mem_module_le_lpm_mult
+0x46a9 mem_module_bluetooth_stauts_by_command
+0x46aa mem_module_uart_rx_buffer
+0x46ac mem_module_uart_rx_buffer_end
+0x46ae mem_module_uart_tx_buffer
+0x46b0 mem_module_uart_tx_buffer_end
+0x46b2 mem_module_read_vdd_flag
+0x46b3 mem_module_read_vdd_count
+0x46b4 mem_module_vdd_quotient
+0x46b5 mem_module_vdd_remainder
+0x46b6 mem_module_le_rx_data_len
+0x46b7 mem_module_le_rx_data_address
+0x46b9 mem_module_le_rx_data_handle
+0x46bb mem_module_data_write_handle
+0x46bd mem_module_data_write_handle2
+0x46bf mem_module_flag
+0x46c0 mem_module_hci_notify_len
+0x46c1 mem_module_hci_notify_handle
+0x46c3 mem_module_hci_nofiy_addr
+0x46c5 mem_last_transmite_clock
+0x46c9 mem_module_uuid_list
+0x47f5 mem_module_uuid_list_end
+0x47f5 mem_module_le_att_list
+0x4a4d mem_module_le_att_list_end
+0x4a4d mem_module_nv_data
+0x4a4d mem_module_nv_data0
+0x4a6f mem_module_nv_data1
+0x4a91 mem_module_nv_data2
+0x4ab3 mem_module_nv_data3
+0x4ad5 mem_module_nv_data4
+0x469a mem_remote_car_hard_soft_switch
+0x469b mem_remote_car_queue_each_size
+0x469c mem_remote_car_queue_length
+0x469d mem_remote_car_queue_curr_num
+0x469e mem_remote_car_queue_read_ptr
+0x469f mem_remote_car_queue_write_ptr
+0x46a0 mem_remote_car_queue_ele
+0x46fa mem_remote_style_led_type
+0x46fb mem_remote_style_blink_count
+0x46fc mem_remote_style_struct_led_gpio
+0x46fd mem_remote_style_on_time
+0x46ff mem_remote_style_off_time
+0x4701 mem_remote_style_cb_ledon
+0x4703 mem_remote_style_cb_ledoff
+0x4705 mem_remote_car_led_num
+0x4706 mem_remote_car_led_map
+0x470e mem_remote_car_keyscan
+0x470e mem_remote_car_key_num
+0x470f mem_cb_remote_car_keyscan
+0x4711 mem_remote_car_key_conf0
+0x4711 mem_remote_car_key_conf0_pin
+0x4712 mem_remote_car_key_conf1
+0x4712 mem_remote_car_key_conf1_pin
+0x4713 mem_remote_car_key_conf2
+0x4713 mem_remote_car_key_conf2_pin
+0x4714 mem_remote_car_key_conf3
+0x4714 mem_remote_car_key_conf3_pin
+0x4715 mem_remote_car_key_conf4
+0x4715 mem_remote_car_key_conf4_pin
+0x4716 mem_remote_car_key_conf5
+0x4716 mem_remote_car_key_conf5_pin
+0x4717 mem_remote_car_key_conf6
+0x4717 mem_remote_car_key_conf6_pin
+0x4718 mem_rocker_negative_flag
+0x4719 mem_rocker_work_status
+0x471a mem_current_vdd_value_default_mid_x
+0x471c mem_current_vdd_value_default_mid_y
+0x471e mem_current_vdd_value_default_mid_temp
+0x4720 mem_current_vdd_default_range
+0x4722 mem_rocker_last_status
+0x4724 mem_rocker_status
+0x4724 mem_rocker_x_status
+0x4725 mem_rocker_y_status
+0x4726 mem_remote_car_config_param
+0x4726 mem_remote_car_config_setting_flag
+0x4727 mem_remote_car_config_key_map
+0x4728 mem_remote_car_config_layout
+0x4729 mem_remote_car_config_connect_led_gpio
+0x472a mem_remote_car_config_check_way
+0x472b mem_remote_car_config_soft_switch_enable
+0x472c mem_remote_car_config_soft_switch_gpio
+0x472d mem_remote_car_config_timeout_shutdown_enable
+0x472e mem_remote_car_24g_motor_packet
+0x472e mem_remote_car_24g_motor_packet_lenght
+0x472f mem_remote_car_24g_motor_send_packet_head
+0x4731 mem_remote_car_24g_motor_send_cmd
+0x4732 mem_remote_car_24g_motor_send_length
+0x4734 mem_remote_car_24g_motor_send_payload
+0x4734 mem_remote_car_24g_motor1_payload
+0x4736 mem_remote_car_24g_motor2_payload
+0x4738 mem_remote_car_24g_motor3_payload
+0x473a mem_remote_car_24g_motor_send_checksum
+0x473b mem_remote_car_24g_fire_packet
+0x473b mem_remote_car_24g_fire_packet_lenght
+0x473c mem_remote_car_24g_fire_send_packet_head
+0x473e mem_remote_car_24g_fire_send_cmd
+0x473f mem_remote_car_24g_fire_send_length
+0x4741 mem_remote_car_24g_fire_send_payload
+0x4743 mem_remote_car_24g_fire_send_checksum
+0x4744 mem_remote_car_24g_tx_temp
+0x4753 mem_remote_car_no_data_timeout
+0x4755 mem_remote_car_no_data_timer
+0x4757 mem_remote_car_soft_power
+0x4757 mem_remote_car_power_state
+0x4758 mem_remote_car_power_timer
+0x4759 mem_remote_car_power_off_timeout
+0x475a mem_remote_car_power_starting_timeout
+0x475b mem_remote_car_power_off_cb
+0x475d mem_remote_car_power_starting_cb
+0x475f mem_remote_car_power_standby_cb
+0x4761 mem_remote_key_status
+0x4762 mem_remote_car_24g_status
+0x4763 mem_remote_car_24g_auto_work_step
+0x4764 mem_remote_car_24g_pair_success_flag
+0x4765 mem_remote_car_24g_enter_lpm_enable
+0x4766 mem_remote_car_empty_packet
+0x4767 mem_24g_RC_head_ptr
+0x469a mem_shutter_bluetooth_type
+0x469b mem_shutter_config_enable
+0x469c mem_shutter_config_otp_base_address
+0x469e mem_shutter_config_size
+0x469f mem_shutter_config_select_gpio1
+0x46a0 mem_shutter_config_select_gpio2
+0x46a1 mem_shutter_config_select_gpio3
+0x46a2 mem_shutter_config_user_otp_address
+0x46a4 mem_shutter_config_eeprom_offset_addr
+0x46a6 mem_shutter_config_eeprom_start_flag
+0x46a8 mem_shutter_config_user_size
+0x46a9 mem_shutter_config_label
+0x46aa mem_shutter_config_otp_addr
+0x46ac mem_classic_shutter_cable_unplug_conut
+0x46ad mem_classic_shutter_hid_disconn_count
+0x46ae mem_classic_shutter_random_mac_offset_addr
+0x46b0 mem_ble_shutter_enable_notify
+0x46b1 mem_ble_shutter_reconn_dav_interval
+0x46b3 mem_ble_shutter_discovery_adv_interval
+0x46b5 mem_ble_shutter_reconn_timeout
+0x46b7 mem_ble_shutter_reconn_timer
+0x46b9 mem_ble_shutter_reconn_blink_on_time
+0x46bb mem_ble_shutter_reconn_blink_off_time
+0x46bd mem_ble_shutter_discovery_blink_on_time
+0x46bf mem_ble_shutter_discovery_blink_off_time
+0x46c1 mem_ble_shutter_interval_min
+0x46c3 mem_ble_shutter_interval_max
+0x46c5 mem_ble_shutter_latency
+0x46c7 mem_ble_shutter_timeout
+0x46c9 mem_ble_shutter_interval_min_new
+0x46cb mem_ble_shutter_interval_max_new
+0x46cd mem_ble_shutter_latency_new
+0x46cf mem_ble_shutter_timeout_new
+0x46d1 mem_classic_shutter_discovery_timeout
+0x46d3 mem_classic_shutter_connect_timeout
+0x46d5 mem_ble_shutter_discovery_timeout
+0x46d7 mem_ble_shutter_connect_timeout
+0x46d9 mem_shutter_sleep_timeout
+0x46db mem_shutter_sleep_timer
+0x46dd mem_shutter_hard_soft_switch_case
+0x46de mem_shutter_soft_switch_button_gpio
+0x46df mem_shutter_soft_switch_power_state
+0x46e0 mem_shutter_soft_switch_poweron_time
+0x46e1 mem_shutter_soft_switch_poweroff_time
+0x46e2 mem_shutter_soft_switch_poweron_callback_function
+0x46e4 mem_shutter_soft_switch_poweroff_callback_function
+0x46e6 mem_shutter_keyscan
+0x46e6 mem_shutter_key_num
+0x46e7 mem_cb_shutter_keycan
+0x46e9 mem_shutter_key_conf0
+0x46ea mem_shutter_key_conf1
+0x46eb mem_shutter_key_conf2
+0x46ec mem_shutter_key_conf3
+0x46ed mem_shutter_key_conf4
+0x46ee mem_shutter_key_conf5
+0x46ef mem_shutter_key_conf6
+0x46f0 mem_shutter_key_conf7
+0x46f1 mem_key0_press
+0x46f6 mem_key1_press
+0x46fb mem_key2_press
+0x4700 mem_key3_press
+0x4705 mem_key4_press
+0x470a mem_key5_press
+0x470f mem_key6_press
+0x4714 mem_key7_press
+0x4719 mem_key0_release
+0x471e mem_key1_release
+0x4723 mem_key2_release
+0x4728 mem_key3_release
+0x472d mem_key4_release
+0x4732 mem_key5_release
+0x4737 mem_key6_release
+0x473c mem_key7_release
+0x4741 mem_ble_data_buffer1
+0x4746 mem_ble_data_buffer2
+0x474b mem_ble_data_buffer3
+0x4750 mem_ble_data_buffer4
+0x4755 mem_ble_data_buffer5
+0x475a mem_ble_data_buffer6
+0x475f mem_ble_data_buffer7
+0x4764 mem_ble_data_buffer8
+0x4769 mem_ble_data_buffer9_58
+0x479b mem_classic_data_buffer
+0x47a0 mem_classic_data_buffer1
+0x47a5 mem_classic_data_buffer2
+0x47aa mem_classic_data_buffer3
+0x47af mem_classic_data_buffer4
+0x47b4 mem_classic_data_buffer5
+0x47b9 mem_classic_data_buffer6
+0x47be mem_classic_data_buffer7
+0x47c3 mem_classic_data_buffer8
+0x47c8 mem_classic_data_buffer9_58
+0x47fa mem_queue_each_size
+0x47fb mem_queue_length
+0x47fc mem_queue_curr_num
+0x47fd mem_queue_read_ptr
+0x47fe mem_queue_write_ptr
+0x47ff mem_queue_ele
+0x481f mem_shutter_nv_data
+0x48c9 mem_shutter_led_struct_app_led
+0x48c9 mem_shutter_led_struct_app_led_type
+0x48ca mem_shutter_led_struct_app_led_blink_count
+0x48cb mem_shutter_led_struct_app_led_gpio
+0x48cc mem_shutter_led_struct_app_led_on_time
+0x48ce mem_shutter_led_struct_app_led_off_time
+0x48d0 mem_shutter_led_struct_app_led_on_callback
+0x48d2 mem_shutter_led_struct_app_led_off_callback
+0x48d4 mem_shutter_power_off_led_style
+0x48d4 mem_shutter_power_off_led_style_type
+0x48d5 mem_shutter_power_off_led_style_blink_count
+0x48d6 mem_shutter_power_off_led_style_gpio
+0x48d7 mem_shutter_power_off_led_style_on_time
+0x48d9 mem_shutter_power_off_led_style_off_time
+0x48db mem_shutter_power_off_led_style_on_callback
+0x48dd mem_shutter_power_off_led_style_off_callback
+0x48df mem_shutter_soft_swtich_botton_down
+0x48e0 mem_shutter_soft_swtich_led_struct_temp
+0x48eb mem_shutter_power_off_timeout
+0x48ec mem_shutter_power_off_timer
+0x469a mem_mouse_key
+0x469b mem_mouse_x
+0x469d mem_mouse_y
+0x469f mem_mouse_z
+0x46a0 mem_mouse_tz
+0x46a1 mem_mouse_xy_h
+0x46a2 mem_sensor_shutter_hi
+0x46a3 mem_sensor_shutter_lo
+0x46a4 mem_sensor_smart_flag
+0x46a5 mem_sensor_squal_reg
+0x46a6 mem_sensor_iqc
+0x46a7 mem_mouse_move_flag
+0x46a8 mem_mouse_direct_timeout
+0x46aa mem_mouse_no_data_timeout
+0x46ac mem_mouse_discovery_timer
+0x46ae mem_mouse_direct_timer
+0x46b0 mem_mouse_no_data_timer
+0x46b2 mem_mouse_blank_data_timer
+0x46b4 mem_mouse_send_blank_timer
+0x46b5 mem_mouse_cpi_count
+0x46b6 mem_mouse_dpi_button_state
+0x46b7 mem_wheel_tb_old_pinlevel
+0x46b8 mem_wheel_tb_new_pinlevel
+0x46b9 mem_wheel_tog
+0x46ba mem_mouse_tz_data
+0x46bb mem_mouse_tz_data_count
+0x46bc mem_mouse_tz_data_count1
+0x46bd mem_mwheel_b_old_pinlevel
+0x46be mem_mwheel_b_new_pinlevel
+0x46bf mem_mwheel_tog
+0x46c0 mem_mouse_z_data
+0x46c1 mem_mouse_z_data_count
+0x46c2 mem_mouse_z_data_count1
+0x46c3 mem_reconn_mode
+0x46c4 mem_mouse_statue_led_timer
+0x46c5 mem_le_connect_status_flag
+0x46c6 mem_le_start_encrypt_timer
+0x46c7 mem_device_addr_temp
+0x46ce mem_adc_read_timer
+0x46cf mem_adc_low_volatage_led_timer_count
+0x46d0 mem_adc_reference_voltage
+0x46d2 mem_device_number
+0x46d3 mem_mouse_flag
+0x46d5 mem_mouse_function_enable
+0x46d7 mem_combination_select_device_timer_init
+0x46d8 mem_combination_select_device_count
+0x46d9 mem_select_device_button_statue
+0x46da mem_combination_ui_button_count
+0x46db mem_bt_discovey_button_statue
+0x46dc mem_sensor_reset_gpio
+0x46dd mem_sensor_id1
+0x46de mem_sensor_id2
+0x46df mem_mouse_dpi_led_delay_count
+0x46e0 mem_config_sensor_type
+0x46e1 mem_config_sensor_motion
+0x46e2 mem_lbutton_gpio
+0x46e3 mem_rbutton_gpio
+0x46e4 mem_mbutton_gpio
+0x46e5 mem_bk_button_gpio
+0x46e6 mem_fw_button_gpio
+0x46e7 mem_dpi_button_gpio
+0x46e8 mem_whee_a_data_gpio
+0x46e9 mem_whee_b_data_gpio
+0x46ea mem_whee_ta_data_gpio
+0x46eb mem_whee_tb_data_gpio
+0x46ec mem_config_bt_button_gpio
+0x46ed mem_config_select_device_button_gpio
+0x46ee mem_config_paraing_led_gpio
+0x46ef mem_config_low_voltage_alarm_gpio
+0x46f0 mem_config_device1_led_gpio
+0x46f1 mem_config_device2_led_gpio
+0x46f2 mem_config_device3_led_gpio
+0x46f3 mem_sensor_data_gpio
+0x46f4 mem_dpi_led_gpio
+0x46f5 mem_config_function_enable
+0x46f6 mem_config_sensor_angle
+0x46f7 mem_select_sensor_angle_gpio
+0x46f8 mem_select_adc_gpio
+0x46f9 mem_config_end
+0x46f9 mem_btclk_sensor
+0x46fd mem_wire_usb_interval
+0x46fe mem_mouse_mode_flag
+0x46ff mem_usb_addr
+0x4700 mem_flash_base
+0x4703 mem_24g_device_number
+0x4704 mem_24g_enter_lpm_timer
+0x4705 mem_mouse_1step_up_count
+0x4706 mem_mouse_2step_up_count
+0x4707 mem_24g_pairing_timer_count
+0x4709 mem_mouse_vdd_calculate_set
+0x4709 mem_mouse_vdd_full_vol
+0x470b mem_mouse_vdd_empty_vol
+0x470d mem_mouse_vdd_low_vol
+0x470f mem_mouse_vdd_now_vol
+0x4711 mem_mouse_sensor_timer_count
+0x4712 mem_sensor_led_style
+0x4713 mem_mouse_led_type
+0x4714 mem_mouse_blink_count
+0x4715 mem_mouse_struct_led_gpio
+0x4716 mem_mouse_on_time
+0x4718 mem_mouse_off_time
+0x471a mem_mouse_cb_ledon
+0x471c mem_mouse_cb_ledoff
+0x471e mem_reconn_times
+0x471f mem_reconn_times_init
+0x4720 mem_mouse_information_start
+0x4720 mem_device_flag
+0x4721 mem_device1_type
+0x4722 mem_device1_addr
+0x4728 mem_device1_link_key
+0x4738 mem_device1_locall_addr
+0x473e mem_device2_type
+0x473f mem_device2_addr
+0x4745 mem_device2_link_key
+0x4755 mem_device2_locall_addr
+0x475b mem_device3_type
+0x475c mem_device3_addr
+0x4762 mem_device3_link_key
+0x4772 mem_device3_locall_addr
+0x4778 mem_store_flag
+0x477a mem_mouse_dpi
+0x477b mem_mouse_24g_addr
+0x477f mem_mouse_information_end
+0x477f mem_mouse_dpi_seting
+0x477f mem_320x_dpi_1
+0x4780 mem_320x_dpi_2
+0x4781 mem_320x_dpi_3
+0x4782 mem_320x_dpi_4
+0x4783 mem_3212_dpi_1
+0x4784 mem_3212_dpi_2
+0x4785 mem_3212_dpi_3
+0x4786 mem_3212_dpi_4
+0x4787 mem_3610_dpi_1
+0x4788 mem_3610_dpi_2
+0x4789 mem_3610_dpi_3
+0x478a mem_3610_dpi_4
+0x478b mem_mouse_24g_enter_lpm_enable
+0x478c mem_le_rx_window_inc
+0x478e mem_empty_count
+0x478f mem_rf_init_data_new
+0x479c mem_mouse_clear_sensor_data_flag
+0x479d mem_mouse_null_enter_hibernate_flag
+0x479e mem_mouse_null_enter_hibernate_timer
+0x479f mem_mouse_le_reconnect_flag
+0x47a0 mem_mouse_data_queue
+0x47c1 mem_mouse_data_queue_num
+0x47c2 mem_random_addr_increase_count
+0x47c4 mem_mouse_le_conn_param_reject
+0x47c5 mem_lpm_mult_init
+0x47c6 mem_mouse_le_uuid_sup
+0x4806 mem_mouse_wheel_trigger
+0x4807 mem_mouse_wheel_trigger_timer
+0x4808 mem_mouse_enter_sniff_count
+0x4809 mem_mouse_send_switch_req_timer
+0x480a mem_le_tx_buffer0_omemalloc
+0x4825 mem_le_tx_buffer1_omemalloc
+0x4840 mem_le_tx_buffer2_omemalloc
+0x485b mem_le_tx_buffer3_omemalloc
+0x4876 mem_mouse_uuid_list
+0x4afc mem_lmi_opcode_temp
+0x4afd mem_mouse_adc_last_low_voltage_flag
+0x4afe mem_mouse_init_sensor_reset_flag
+0x4aff mem_bt_rcvd_switch_req_accept
+0x4b00 mem_bt_send_max_slot_req_accept_after_switch
+0x4b01 mem_bt_send_lmp_setup_complete
+0x4b02 mem_l2cap_rcv
+0x4b03 mem_mouse_bt_boot_mode
+0x4b04 mem_mouse_bt_boot_data
+0x4b09 mem_mouse_bt_send_first_package_timer
+0x4b0a mem_mouse_bt_send_first_package_flag
+0x4b0b mem_mouse_asm_flag
+0x4b0c mem_mouse_x_pre
+0x4b0e mem_mouse_y_pre
+0x4b10 mem_le_adv_swift_pair
+0x4b24 mem_24g_sw_gpio
+0x4b25 mem_mouse_multi_led_blink_enable
+0x4b26 mem_mouse_multi_led_gpio
+0x4b27 mem_mouse_multi_led_state
+0x4b28 mem_mouse_multi_led_type
+0x4b29 mem_mouse_multi_led_on_timer
+0x4b2a mem_mouse_multi_led_on_timer_init
+0x4b2b mem_mouse_multi_led_blink_timer_init
+0x4b2c mem_mouse_multi_led_blink_timer
+0x4b2d mem_mouse_multi_led_blink_count
+0x4b2e mem_mouse_multi_led_blink_count_limited
+0x4b2f mem_mouse_multi_led_on_poweron2s_flag
+0x4b30 mem_discovery_on_flag
+0x4b31 mem_bt_ui_button_timeout
+0x4b32 mem_bt_ui_button_count
+0x4b33 mem_mouse_priority_bb_event
+0x4b34 mem_mouse_le_parse_l2cap_ptr
+0x4b36 mem_low_power_no_data_off_led_time
+0x4b37 mem_low_power_check_count
+0x4b38 mem_low_power_led_blink_flag
+0x4b39 mem_mouse_3065xy_dpi_seting
+0x4b39 mem_3065xy_dpi_1
+0x4b3a mem_3065xy_dpi_2
+0x4b3b mem_3065xy_dpi_3
+0x4b3c mem_3065xy_dpi_4
+0x4b3d mem_le_att_pnp_id_len
+0x4b3e mem_le_att_pnp_id
+0x4b45 mem_flash_ncs_gpio
+0x4b46 mem_select_ui_button_count
+0x4b47 mem_write_flash_head_temp
+0x4b4b mem_mouse_poweron_led_timer
+0x4b4c mem_mouse_24g_addr_init
+0x4b50 mem_zcode_current_number
+0x4b51 mem_xip_flash_offset
+0x4b54 mem_flash_start_addr
+0x4b57 mem_flash_address
+0x4b5a mem_zcode_head
+0x4b5e mem_mouse_long_mult_flag
+0x4b5f mem_mouse_le_current_mult_timer
+0x4b60 mem_24g_long_sleep_param_update_timer
+0x4b61 mem_mouse_send_secutiry_request_timer
+0x4b62 mem_le_send_security_request_flag
+0x4b63 mem_mouse_le_bb_connected_flag
+0x4b64 mem_24g_rxbuf
+0x4b86 mem_24g_txbuf
+0x4ba6 mem_24g_txpayload
+0x4bc8 mem_24g_rxpayload
+0x4be8 mem_24g_rxdata_length
+0x4be9 mem_24g_pid
+0x4bea mem_24g_datalen
+0x4beb mem_24g_data_type
+0x4bec mem_24g_txlen
+0x4bed mem_24g_rx_window
+0x4bef mem_24g_ensure
+0x4bf0 mem_24g_txfail_cnt
+0x4bf2 mem_24g_get_ack_fail
+0x4bf3 mem_24g_retry
+0x4bf4 mem_24g_ch
+0x4bf5 mem_24g_current_ch_number
+0x4bf6 mem_24g_paring_addr
+0x4bfa mem_24g_pairing_sm
+0x4bfb mem_24g_ch_map1
+0x4bff mem_24g_ch_map2
+0x4c03 mem_24g_ch_map3
+0x4c07 mem_24g_ch_map4
+0x4c0b mem_24g_tx_btclk
+0x4c0f mem_24g_interval
+0x4c10 mem_24g_interval_min
+0x4c11 mem_24g_interval_max
+0x4c12 mem_24g_addr
+0x4c16 mem_24g_abort_pac
+0x4c17 mem_24g_check_dongle_times
+0x4c19 mem_24g_enter_hibernate
+0x4c21 mem_24g_device_addr
+0x4c25 mem_24g_pac_index
+0x4c26 mem_24g_no_ack
+0x4c27 mem_24g_sta_crc
+0x4c2a mem_24g_last_crc
+0x4c2d mem_24g_sta_pid
+0x4c2e mem_24g_last_pid
+0x4c2f mem_24g_max_retry
+0x4c30 mem_24g_mode
+0x4c31 mem_24g_rxdata_temp
+0x4c53 mem_24g_rx_addr
+0x4c57 mem_dongle_mode_init
+0x4c58 mem_dongle_work_mode
+0x4c59 mem_dongle_ms_bind_step
+0x4c5a mem_dongle_kb_bind_step
+0x4c5b mem_dongle_bind_device_status
+0x4c5c mem_24g_bind_payload
+0x4c64 mem_24g_abort_packet
+0x4c65 mem_24g_rf_laststa
+0x4c66 mem_24g_hop_btclk
+0x4c6a mem_24g_hop_interval
+0x4c6b mem_24g_mode_switch
+0x4c6c mem_24g_ackpayload_enable
+0x4c6d mem_24g_hop_packet
+0x4c6e mem_24g_pair_mode
+0x4c6f mem_24g_nodata_timer_enable
+0x4c70 mem_24g_time_slice
+0x4c71 mem_24g_kb_data_sta_data
+0x4c79 mem_24g_kb_data_last_data
+0x4c81 mem_24g_kb_multikey_sta_data
+0x4c84 mem_24g_kb_multikey_last_data
+0x4c87 mem_24g_kb_blank_data_enable
+0x4c88 mem_24g_kb_mul_blank_data_enable
+0x4c89 mem_24g_ms_blank_data_enable
+0x4c8a mem_24g_kb_addr
+0x4c8e mem_24g_ms_addr
+0x4c92 mem_24g_dg_last_ch
+0x4c93 mem_24g_dg_ch_number
+0x4c94 mem_24g_dg_config_ch_once
+0x4c95 mem_24g_kb_last_ch
+0x4c96 mem_24g_kb_ch_number
+0x4c97 mem_24g_kb_config_ch_once
+0x4c98 mem_24g_ms_last_ch
+0x4c99 mem_24g_ms_ch_number
+0x4c9a mem_24g_ms_config_ch_once
+0x4c9b mem_24g_syncword
+0x4c9d mem_24g_syncword_crc8
+0x4c9e mem_24g_get_syncword_crc8
+0x4c9f mem_24g_ota_sta_pid
+0x4ca1 mem_tx_power_temp
+0x4ca2 mem_rssi_hex
+0x4ca3 mem_rssi_noise_avg
+0x4ca4 mem_rssi_noise_index
+0x4ca5 mem_rssi_signal_index
+0x4ca6 mem_rssi_noise_dg_avg
+0x4ca7 mem_rssi_noise_kb_avg
+0x4ca8 mem_rssi_noise_ms_avg
+0x4ca9 mem_rssi_noise_dg_index
+0x4caa mem_rssi_noise_kb_index
+0x4cab mem_rssi_noise_ms_index
+0x4cac mem_rssi_signal_buf
+0x4cb4 mem_queue_ele_num
+0x4cb5 mem_queue_read
+0x4cb7 mem_queue_write
+0x4cb9 mem_queue_start
+0x4cb9 mem_data_ele0
+0x4cd9 mem_data_ele1
+0x4cf9 mem_data_ele2
+0x4d19 mem_queue_end
+0x4d19 mem_queue_temp
+0x4d1b mem_cb_24g_data
+0x4d1d mem_24g_hop_fastly_cnt
+0x4d1e mem_24g_hop_pac_retry
+0x4d1f mem_24g_rf_hop_ch
+0x4d20 mem_24g_rf_last_sta
+0x4d21 mem_24g_rf_work_stage
+0x4d22 mem_24g_sync_cnt
+0x4d23 mem_power_ctrl_pac_succ_cnt
+0x4d24 mem_rssi_avg_received
+0x4d25 mem_rssi_hex_received
+0x4d26 mem_power_ctrl_level
+0x4d27 mem_seqi
+0x4d28 mem_24g_auto_paring_switch
+0x4d29 mem_24g_paccnt
+0x4d2a mem_24g_transmit_by_interrupt
+0x4d2b mem_24g_transmit_by_interrupt_exit_count
+0x4d2d mem_24g_transmit_by_interrupt_exit_count_init
+0x4d2f mem_le_lap_high_3B
+0x4d32 mem_mouse_fast_conn_flag
+0x4d33 mem_sensor_8650_init
+0x4d4d mem_sensor_poweron_init
+0x4d55 mem_sensor_8009_init
+0x4d65 mem_firmware_version
+0x4d67 mem_mouse_data_xtemp
+0x4d68 mem_mouse_data_ytemp
Index: output/program.lis
===================================================================
--- /branch/mouse_project/YJX_Project/YJX_1059/JDT_172_BD_2.4G&BLE/output/program.lis	(nonexistent)
+++ /branch/mouse_project/YJX_Project/YJX_1059/JDT_172_BD_2.4G&BLE/output/program.lis	(working copy)
@@ -0,0 +1,3564 @@
+              include "bt_format "
+              org 0x0000
+
+p_start:
+0000 20200040 branch p_patch_array 
+
+p_zcode:
+
+p_wake_from_power:
+0001 204003b7 call p_mouse_data_init 
+0002 6800c1de fetch 1 ,mem_tx_power 
+0003 6000cca1 store 1 ,mem_tx_power_temp 
+0004 204006e9 call power_ctrl_pac_succ_cnt_init 
+0005 6800c685 fetch 1 ,mem_ui_button_timeout 
+0006 6000c6da store 1 ,mem_combination_ui_button_count 
+0007 204043ca call mouse_bt_discovery_button_down_disable 
+0008 20400336 call p_mouse_spi_init 
+0009 20400781 call p_drawing_optima_init 
+000a 2040000d call p_mouse_cb_fuction 
+000b 20400020 call p_mouse_wakeup_from_power 
+000c 2020030c branch p_mouse_setting_config 
+
+p_mouse_cb_fuction:
+000d 58000380 setarg p_mouse_g24_package_data 
+000e 60014d1b store 2 ,mem_cb_24g_data 
+000f 5800039a setarg p_mouse_le 
+0010 600141ef store 2 ,mem_cb_le_process 
+0011 5800062a setarg p_le_mouse_bb_event_connect_complete 
+0012 600141f9 store 2 ,mem_cb_att_write 
+0013 580003d2 setarg p_mouse_bt 
+0014 600141f1 store 2 ,mem_cb_bt_process 
+0015 58000273 setarg p_mouse_before_lpm 
+0016 600141ed store 2 ,mem_cb_before_lpm 
+0017 58000410 setarg p_mouse_priority_bb_event 
+0018 600141f5 store 2 ,mem_cb_bb_event_process 
+0019 580003fa setarg p_mouse_idle 
+001a 600141f3 store 2 ,mem_cb_idle_process 
+001b 58000449 setarg p_mouse_before_hibernate 
+001c 600141eb store 2 ,mem_cb_before_hibernate 
+001d 58000450 setarg p_mouse_bb_event_timer 
+001e 600141fd store 2 ,mem_cb_event_timer 
+001f 20600000 rtn 
+
+p_mouse_wakeup_from_power:
+0020 58000019 setarg 25 
+0021 60014d2d store 2 ,mem_24g_transmit_by_interrupt_exit_count_init 
+0022 24558028 ncall p_mouse_24g_transmit_by_interrupt_exit_count_max ,wake 
+0023 204002da call p_mouse_init_sunt 
+0024 20400305 call p_mouse_sensor_powerdown 
+
+p_mouse_wakeup_no_from_power:
+0025 6800c71f fetch 1 ,mem_reconn_times_init 
+0026 6000c71e store 1 ,mem_reconn_times 
+0027 20600000 rtn 
+
+p_mouse_24g_transmit_by_interrupt_exit_count_max:
+0028 58000177 setarg 375 
+0029 60014d2d store 2 ,mem_24g_transmit_by_interrupt_exit_count_init 
+002a 20600000 rtn 
+002b 20000001 nop 1 
+002c 20000001 nop 1 
+002d 20000001 nop 1 
+002e 20000001 nop 1 
+002f 20000001 nop 1 
+0030 20000001 nop 1 
+0031 20000001 nop 1 
+0032 20000001 nop 1 
+0033 20000001 nop 1 
+0034 20000001 nop 1 
+0035 20000001 nop 1 
+0036 20000001 nop 1 
+0037 20000001 nop 1 
+0038 20000001 nop 1 
+0039 20000001 nop 1 
+003a 20000001 nop 1 
+003b 20000001 nop 1 
+003c 20000001 nop 1 
+003d 20000001 nop 1 
+003e 20000001 nop 1 
+003f 20000001 nop 1 
+
+p_patch_array:
+0040 c2840059 bbit1 8 ,pf_patch_ext 
+0041 c000806b beq patch00_1 ,p_soft_reset_1 
+0042 c0010075 beq patch00_2 ,p_soft_reset_2 
+0043 c0428755 beq patch10_5 ,p_shutdown_radio 
+0044 c0448726 beq patch11_1 ,p_set_freq_tx 
+0045 c00d8643 beq patch03_3 ,p_page_wait_fhs_reply_ok 
+0046 c0130645 beq patch04_6 ,p_role_switch_master 
+0047 c0240661 beq patch09_0 ,p_quit_connection_cont 
+0048 c0250668 beq patch09_2 ,p_prepare_tx 
+0049 c0288671 beq patch0a_1 ,p_slave_conn_recv_packet 
+004a c02c865f beq patch0b_1 ,p_process_dmh 
+004b c0538676 beq patch14_7 ,p_lpm_dispatch 
+004c c056868c beq patch15_5 ,p_lpm_set_mult 
+004d c065b3e4 beq patch19_3 ,app_bt_start_reconnect + 3 
+004e c074869d beq patch1d_1 ,p_mouse_bb_disconnected 
+004f c050807e beq patch14_1 ,p_init_param 
+0050 c0588083 beq patch16_1 ,p_lpm_check_wake_lock 
+0051 c0590091 beq patch16_2 ,p_g24_dispatch 
+0052 c0620294 beq patch18_4 ,p_device_init 
+0053 c0718505 beq patch1c_3 ,p_mouse_seting_dpi 
+0054 c073052a beq patch1c_6 ,p_mouse_motion 
+0055 c0750561 beq patch1d_2 ,p_mouse_bb_event_discovery_btn 
+0056 c0758568 beq patch1d_3 ,p_mouse_start_discovery 
+0057 c076057c beq patch1d_4 ,p_mouse_stop_discovery 
+0058 20202a8e branch loop 
+
+pf_patch_ext:
+0059 c01c8586 beq patch27_1 ,p_le_slave_match 
+005a c021858e beq patch28_3 ,p_le_next_adv_channel 
+005b c0250594 beq patch29_2 ,p_le_receive_skip 
+005c c02b8597 beq patch2a_7 ,p_le_update_param 
+005d c02c8599 beq patch2b_1 ,p_le_update_channel_map 
+005e c031859b beq patch2c_3 ,p_le_prepare_tx 
+005f c03305c5 beq patch2c_6 ,p_le_parse 
+0060 c03385dc beq patch2c_7 ,p_le_parse_l2cap 
+0061 c0350615 beq patch2d_2 ,p_le_adv_not_match 
+0062 c03b8620 beq patch2e_7 ,p_le_lpm_setmult 
+0063 c002869f beq patch20_5 ,p_hid_rx_process 
+0064 c04006a1 beq patch30_0 ,p_parse_lmp_accepted 
+0065 c04106ab beq patch30_2 ,p_send_lmp 
+0066 c04406ad beq patch31_0 ,p_process_conn_sm 
+0067 c0460630 beq patch31_4 ,p_twspi_reset 
+0068 c046863c beq patch31_5 ,p_spid_init 
+0069 c07d06d1 beq patch3f_2 ,p_check_51cmd_once_continue 
+006a 20202a8e branch loop 
+
+p_soft_reset_1:
+006b d8a009ae arg mem_sp_state ,contw 
+006c df20000c arg 12 ,loopcnt 
+006d 20407ed4 call clear_mem 
+006e 20400391 call p_mouse_le_txbuff_load 
+006f 204074c1 call init_memp 
+0070 20406a03 call rfcomm_init 
+0071 20405cf6 call init_lmp 
+0072 2455ac65 ncall lpm_disable_exen_output ,wake 
+0073 20407ccd call ui_init + 1 
+0074 2020200c branch soft_reset + 11 
+
+p_soft_reset_2:
+0075 2055b2e3 call app_lpm_init ,wake 
+0076 2040756a call publickey_init 
+0077 2055ab41 call lpm_recover_clk ,wake 
+
+p_sp_cal_loop:
+0078 204076dc call sp_calc_sequence 
+0079 6800c65a fetch 1 ,mem_ssp_enable 
+007a 203a2012 branch main_loop ,blank 
+007b 6800c5b1 fetch 1 ,mem_sp_local_key_invalid 
+007c 203a0078 branch p_sp_cal_loop ,blank 
+007d 20202012 branch main_loop 
+
+p_init_param:
+007e 58000a06 setarg param_le_version 
+007f 6001c510 store 3 ,mem_lmp_version 
+0080 58001d87 setarg param_le_subversion 
+0081 60014513 store 2 ,mem_lmp_version + 3 
+0082 20202aa2 branch init_param + 12 
+
+p_lpm_check_wake_lock:
+0083 c6130000 rtnmark1 mark_24g 
+0084 6800cb27 fetch 1 ,mem_mouse_multi_led_state 
+0085 243a7fef nbranch disable_blank ,blank 
+0086 6800cb2d fetch 1 ,mem_mouse_multi_led_blink_count 
+0087 243a7fef nbranch disable_blank ,blank 
+0088 6800c79c fetch 1 ,mem_mouse_clear_sensor_data_flag 
+0089 203a7fef branch disable_blank ,blank 
+008a 6800c7c4 fetch 1 ,mem_mouse_le_conn_param_reject 
+008b c000ffef beq le_lpm_disable ,disable_blank 
+008c 68014248 fetch 2 ,mem_sdp_remote_cid 
+008d 243a7fef nbranch disable_blank ,blank 
+008e 6800c806 fetch 1 ,mem_mouse_wheel_trigger 
+008f 243a7fef nbranch disable_blank ,blank 
+0090 20207ff1 branch enable_blank 
+
+p_g24_dispatch:
+0091 c6930000 rtnmark0 mark_24g 
+0092 6800cd2a fetch 1 ,mem_24g_transmit_by_interrupt 
+0093 c00080a7 beq g24_tx_timer_int_enable ,p_g24_transmit_by_interrupt 
+
+p_g24_transmit_process:
+0094 20400124 call p_g24_txdata_prep 
+0095 243400c2 nbranch p_g24_nodata_transmit ,user 
+0096 2040010b call p_g24_rf_sta_check 
+
+p_g24_transmit_start:
+0097 2040014f call p_g24_transmit_packet 
+0098 6800cbfa fetch 1 ,mem_24g_pairing_sm 
+0099 c1ff8000 rtnne state_24g_pairing_success 
+009a 204006fa call power_ctrl_start 
+009b 204000a3 call g24_long_sleep_shorter_param_update 
+009c 6800cb27 fetch 1 ,mem_mouse_multi_led_state 
+009d c0008383 beq on ,p_g24_transmit_by_interrupt_enable 
+
+p_g24_short_sleep:
+009e 204000ce call p_g24_lpm_wait 
+009f 24740000 nrtn user 
+00a0 2040027a call p_clear_wake 
+00a1 5800ec54 setarg 60500 
+00a2 20202b93 branch lpm_dispatch_sleep 
+
+g24_long_sleep_shorter_param_update:
+00a3 58017700 setarg g24_long_sleep_step1 
+00a4 6001cc19 store 3 ,mem_24g_enter_hibernate 
+00a5 704b6014 jam 20 ,mem_24g_long_sleep_param_update_timer 
+00a6 20600000 rtn 
+
+p_g24_transmit_by_interrupt:
+00a7 20400254 call p_g24_timer_check 
+00a8 24740000 nrtn user 
+00a9 204000bc call p_g24_interval_calibrate 
+00aa 68014d2b fetch 2 ,mem_24g_transmit_by_interrupt_exit_count 
+00ab 1fe0fe01 increase 1 ,pdata 
+00ac 60014d2b store 2 ,mem_24g_transmit_by_interrupt_exit_count 
+00ad 68094d2d fetcht 2 ,mem_24g_transmit_by_interrupt_exit_count_init 
+00ae 98467c00 isub temp ,null 
+00af 204280b1 call p_g24_transmit_by_interrupt_exit ,zero 
+00b0 20200094 branch p_g24_transmit_process 
+
+p_g24_transmit_by_interrupt_exit:
+00b1 704d2a00 jam g24_tx_timer_int_disable ,mem_24g_transmit_by_interrupt 
+00b2 58000000 setarg 0 
+00b3 60014d2b store 2 ,mem_24g_transmit_by_interrupt_exit_count 
+00b4 58000019 setarg 25 
+00b5 60014d2d store 2 ,mem_24g_transmit_by_interrupt_exit_count_init 
+
+p_g24_interval_min:
+00b6 704c2500 jam 0 ,mem_24g_pac_index 
+00b7 6800cc10 fetch 1 ,mem_24g_interval_min 
+
+p_g24_current_interval_store:
+00b8 6000cc0f store 1 ,mem_24g_interval 
+00b9 20600000 rtn 
+
+p_g24_interval_max:
+00ba 6800cc11 fetch 1 ,mem_24g_interval_max 
+00bb 202000b8 branch p_g24_current_interval_store 
+
+p_g24_interval_calibrate:
+00bc 6800cc25 fetch 1 ,mem_24g_pac_index 
+00bd 1fe0fe01 increase 1 ,pdata 
+00be 6000cc25 store 1 ,mem_24g_pac_index 
+00bf c00200ba beq 4 ,p_g24_interval_max 
+00c0 c00280b6 beq 5 ,p_g24_interval_min 
+00c1 20600000 rtn 
+
+p_g24_nodata_transmit:
+00c2 6800cc16 fetch 1 ,mem_24g_abort_pac 
+00c3 205a00d7 call p_g24_send_abort_packet ,blank 
+00c4 6800cb2d fetch 1 ,mem_mouse_multi_led_blink_count 
+00c5 247a0000 nrtn blank 
+00c6 6800cb27 fetch 1 ,mem_mouse_multi_led_state 
+00c7 c1008000 rtneq on 
+
+p_g24_long_sleep:
+00c8 204000ce call p_g24_lpm_wait 
+00c9 24740000 nrtn user 
+00ca 6801cc19 fetch 3 ,mem_24g_enter_hibernate 
+00cb 20407f49 call clk2lpo 
+00cc 600a415b storet 4 ,mem_sleep_counter 
+00cd 20202b2a branch lpm_sleep 
+
+p_g24_lpm_wait:
+00ce 78347c00 enable user 
+00cf 20402afa call lpo_calibration 
+00d0 6801c16f fetch 3 ,mem_clks_per_lpo 
+00d1 203a7fe9 branch disable_user ,blank 
+00d2 6800c091 fetch 1 ,mem_lpm_mode 
+00d3 203a7fe9 branch disable_user ,blank 
+00d4 6800cd2a fetch 1 ,mem_24g_transmit_by_interrupt 
+00d5 c000ffe9 beq g24_tx_timer_int_enable ,disable_user 
+00d6 2020027d branch p_mouse_setgpio_lpm 
+
+p_g24_send_abort_packet:
+00d7 704c1601 jam 1 ,mem_24g_abort_pac 
+00d8 704d1f00 jam 0 ,mem_24g_rf_hop_ch 
+00d9 204000ea call p_g24_transmit_rf_ctrl_clear 
+00da 6000cb86 store 1 ,mem_24g_txbuf 
+00db 58000000 setarg 0 
+00dc 6003cb87 store 7 ,mem_24g_txbuf + 1 
+00dd 68024c21 fetch 4 ,mem_24g_device_addr 
+00de 60024b8e store 4 ,mem_24g_txbuf + 8 
+00df 704bea0c jam 12 ,mem_24g_datalen 
+00e0 6800cbeb fetch 1 ,mem_24g_data_type 
+00e1 79207e03 set1 bit_abort ,pdata 
+00e2 6000cbeb store 1 ,mem_24g_data_type 
+00e3 20400127 call p_g24_txdata_enable_tx 
+00e4 20200097 branch p_g24_transmit_start 
+
+p_g24_set_device_addr:
+00e5 680240a0 fetch 4 ,mem_lap 
+00e6 60024c21 store 4 ,mem_24g_device_addr 
+00e7 20600000 rtn 
+
+p_g24_transmit_rf_sta_init:
+00e8 704d2001 jam 1 ,mem_24g_rf_last_sta 
+00e9 704d2200 jam 0 ,mem_24g_sync_cnt 
+
+p_g24_transmit_rf_ctrl_clear:
+00ea 6800cbeb fetch 1 ,mem_24g_data_type 
+00eb 1fe17e07 and_into bits_data ,pdata 
+00ec 6000cbeb store 1 ,mem_24g_data_type 
+00ed 20600000 rtn 
+
+p_g24_hop_ch_enable:
+00ee 6800cbeb fetch 1 ,mem_24g_data_type 
+00ef 79207e04 set1 bit_hop ,pdata 
+00f0 6000cbeb store 1 ,mem_24g_data_type 
+00f1 6000cba6 store 1 ,mem_24g_txpayload 
+00f2 20600000 rtn 
+
+p_g24_hop_enable_packet:
+00f3 6800cbeb fetch 1 ,mem_24g_data_type 
+00f4 c4020000 rtnbit0 bit_hop 
+
+p_g24_hop_ch_disable:
+00f5 6800cbeb fetch 1 ,mem_24g_data_type 
+00f6 793ffe04 set0 bit_hop ,pdata 
+00f7 6000cbeb store 1 ,mem_24g_data_type 
+00f8 6000cba6 store 1 ,mem_24g_txpayload 
+00f9 204006f0 call power_ctrl_pac_succ_decrs 
+00fa 202001d2 branch p_g24_ch 
+
+p_g24_rf_hop_fastly_exit:
+00fb 204006f0 call power_ctrl_pac_succ_decrs 
+00fc 704d1d00 jam 0 ,mem_24g_hop_fastly_cnt 
+00fd 202000ea branch p_g24_transmit_rf_ctrl_clear 
+
+p_g24_transmit_hop_pac_succ_wo_hop:
+00fe 704d2202 jam 2 ,mem_24g_sync_cnt 
+
+p_g24_transmit_hop_pac_succ:
+00ff 704d2001 jam 1 ,mem_24g_rf_last_sta 
+0100 704d1f00 jam 0 ,mem_24g_rf_hop_ch 
+0101 202000ea branch p_g24_transmit_rf_ctrl_clear 
+
+p_g24_transmit_succ_rf_config:
+0102 6800cd21 fetch 1 ,mem_24g_rf_work_stage 
+0103 c00180ff beq 3 ,p_g24_transmit_hop_pac_succ 
+0104 6800cbeb fetch 1 ,mem_24g_data_type 
+0105 2fec0004 isolate0 bit_hop ,pdata 
+0106 202080e8 branch p_g24_transmit_rf_sta_init ,true 
+0107 6800cd21 fetch 1 ,mem_24g_rf_work_stage 
+0108 c00080fe beq 1 ,p_g24_transmit_hop_pac_succ_wo_hop 
+0109 c00100ff beq 2 ,p_g24_transmit_hop_pac_succ 
+010a 20600000 rtn 
+
+p_g24_rf_sta_check:
+010b 6800cbfa fetch 1 ,mem_24g_pairing_sm 
+010c c1ff8000 rtnne state_24g_pairing_success 
+010d 20400110 call p_g24_rf_laststa_synccnt_check 
+010e 24560118 ncall p_g24_rf_sync_cnt_check ,user2 
+010f 20600000 rtn 
+
+p_g24_rf_laststa_synccnt_check:
+0110 78567c00 disable user2 
+0111 6800cd20 fetch 1 ,mem_24g_rf_last_sta 
+0112 c1808000 rtnne 1 
+0113 6800cd22 fetch 1 ,mem_24g_sync_cnt 
+0114 c1800000 rtnne 0 
+0115 704d2101 jam 1 ,mem_24g_rf_work_stage 
+0116 704c2f04 jam 4 ,mem_24g_max_retry 
+0117 20207feb branch enable_user2 
+
+p_g24_rf_sync_cnt_check:
+0118 6800cd22 fetch 1 ,mem_24g_sync_cnt 
+0119 203a011f branch p_g24_rf_hop_attemp ,blank 
+011a 1fe0ffff increase -1 ,pdata 
+011b 6000cd22 store 1 ,mem_24g_sync_cnt 
+011c 704d2102 jam 2 ,mem_24g_rf_work_stage 
+011d 704c2f04 jam 4 ,mem_24g_max_retry 
+011e 202001d2 branch p_g24_ch 
+
+p_g24_rf_hop_attemp:
+011f 704d2103 jam 3 ,mem_24g_rf_work_stage 
+0120 6800cd1f fetch 1 ,mem_24g_rf_hop_ch 
+0121 243a0147 nbranch p_g24_rf_hop_attemp_again ,blank 
+0122 704c2f02 jam 2 ,mem_24g_max_retry 
+0123 202001d2 branch p_g24_ch 
+
+p_g24_txdata_prep:
+0124 6800cbfa fetch 1 ,mem_24g_pairing_sm 
+0125 c0ff8195 bne state_24g_pairing_success ,p_g24_pairing_sm 
+
+p_g24_txdata_prep_packeage_data:
+0126 2040012a call p_g24_package_data 
+
+p_g24_txdata_enable_tx:
+0127 204001c0 call p_g24_transmit_prep 
+0128 704bef01 jam ensure_on_24g ,mem_24g_ensure 
+0129 20600000 rtn 
+
+p_g24_package_data:
+012a 68014d1b fetch 2 ,mem_cb_24g_data 
+012b 20407f9c call callback_func 
+012c 20340130 branch p_g24_accumulate_mouse_data ,user 
+012d 6803cb87 fetch 7 ,mem_24g_txbuf + 1 
+012e 207a0000 rtn blank 
+012f 20207fe7 branch enable_user 
+
+p_g24_accumulate_mouse_data:
+0130 204003b1 call p_mouse_data_xy_release 
+0131 704c1600 jam 0 ,mem_24g_abort_pac 
+0132 1a20fe01 add rega ,1 ,pdata 
+0133 6000cbea store 1 ,mem_24g_datalen 
+0134 204000ea call p_g24_transmit_rf_ctrl_clear 
+0135 6000cb86 store 1 ,mem_24g_txbuf 
+0136 e8a88000 ifetcht 1 ,contw 
+0137 ea408000 ifetch 1 ,regb 
+0138 9841fe00 ior temp ,pdata 
+0139 e0a08000 istore 1 ,contw 
+013a 1a40a401 increase 1 ,regb 
+013b ea420000 ifetch 4 ,regb 
+013c e0a20000 istore 4 ,contw 
+013d 1a40a404 increase 4 ,regb 
+013e d8a04b8c arg mem_24g_txbuf + 6 ,contw 
+013f df200002 arg 2 ,loopcnt 
+
+p_g24_accumulation_loop:
+0140 ea408000 ifetch 1 ,regb 
+0141 e8a88000 ifetcht 1 ,contw 
+0142 9840fe00 iadd temp ,pdata 
+0143 e0a08000 istore 1 ,contw 
+0144 1a40a401 increase 1 ,regb 
+0145 c2000140 loop p_g24_accumulation_loop 
+0146 20600000 rtn 
+
+p_g24_rf_hop_attemp_again:
+0147 6800cd1f fetch 1 ,mem_24g_rf_hop_ch 
+0148 c08080ea bne 1 ,p_g24_transmit_rf_ctrl_clear 
+
+p_g24_rf_hop_fastly:
+0149 6800cd1d fetch 1 ,mem_24g_hop_fastly_cnt 
+014a 1fe0fe01 increase 1 ,pdata 
+014b 6000cd1d store 1 ,mem_24g_hop_fastly_cnt 
+014c c00200fb beq 4 ,p_g24_rf_hop_fastly_exit 
+014d 204001d2 call p_g24_ch 
+014e 704c2f02 jam 2 ,mem_24g_max_retry 
+
+p_g24_transmit_packet:
+014f 704bf300 jam 0 ,mem_24g_retry 
+
+p_g24_transmit_loop:
+0150 d9600d00 arg param_rx_setup ,timeup 
+0151 34730200 until clkn_rt ,meet 
+0152 20400166 call p_g24_transmit_receive_ack 
+0153 242c0171 nbranch p_g24_retransmit ,sync 
+0154 24378171 nbranch p_g24_retransmit ,user3 
+0155 20400163 call p_g24_txbuf_clear 
+0156 2040018e call p_g24_ackpayload_parse 
+0157 204006ec call power_ctrl_pac_succ_incrs 
+
+p_g24_transmit_next_packet:
+0158 6800cbe9 fetch 1 ,mem_24g_pid 
+0159 1fe0fe01 increase 1 ,pdata 
+015a 6000cbe9 store 1 ,mem_24g_pid 
+015b 204000f3 call p_g24_hop_enable_packet 
+015c 6800cbfa fetch 1 ,mem_24g_pairing_sm 
+015d c0ff8197 bne state_24g_pairing_success ,p_g24_paring_mode_start 
+015e 20400102 call p_g24_transmit_succ_rf_config 
+
+p_g24_transmit_abandon:
+015f 58000000 setarg 0 
+0160 60024bef store 4 ,mem_24g_ensure 
+0161 6000cd1e store 1 ,mem_24g_hop_pac_retry 
+0162 20600000 rtn 
+
+p_g24_txbuf_clear:
+0163 df200004 arg 4 ,loopcnt 
+0164 d8a04b86 arg mem_24g_txbuf ,contw 
+0165 20207ec6 branch memset0 
+
+p_g24_transmit_receive_ack:
+0166 7857fc00 disable user3 
+0167 20400233 call p_g24_transmit 
+0168 18002a00 force 0 ,radio_ctrl 
+0169 68024c12 fetch 4 ,mem_24g_addr 
+016a 98001200 iforce access 
+016b 68088017 fetcht 1 ,mem_last_freq 
+016c 2040291f call set_freq_rx 
+016d 20402924 call rf_rx_enable 
+016e 204001ec call p_g24_receive_rxon 
+016f 2057822d call p_g24_end_of_packet ,user3 
+0170 20600000 rtn 
+
+p_g24_retransmit:
+0171 6800cc16 fetch 1 ,mem_24g_abort_pac 
+0172 247a0000 nrtn blank 
+0173 68014bf0 fetch 2 ,mem_24g_txfail_cnt 
+0174 1fe0fe01 increase 1 ,pdata 
+0175 60014bf0 store 2 ,mem_24g_txfail_cnt 
+0176 6800cbf1 fetch 1 ,mem_24g_txfail_cnt + 1 
+0177 c2822dd4 bbit1 4 ,g24_stop_24g_mode 
+0178 6800cbfa fetch 1 ,mem_24g_pairing_sm 
+0179 c0ff817c bne state_24g_pairing_success ,p_g24_tx_paring_retry 
+017a 20400184 call p_g24_tx_hop_ch_process 
+017b 20200150 branch p_g24_transmit_loop 
+
+p_g24_tx_paring_retry:
+017c 6800cbf0 fetch 1 ,mem_24g_txfail_cnt 
+017d c1ff8000 rtnne 0xff 
+
+p_g24_tx_attempt_fail:
+017e 58000000 setarg 0 
+017f 60014bf0 store 2 ,mem_24g_txfail_cnt 
+0180 20202dd4 branch g24_stop_24g_mode 
+
+p_g24_tx_fast_hop:
+0181 2040071d call power_ctrl_txpower_incrs 
+0182 204006f0 call power_ctrl_pac_succ_decrs 
+0183 202001d2 branch p_g24_ch 
+
+p_g24_tx_hop_ch_process:
+0184 6800cbf3 fetch 1 ,mem_24g_retry 
+0185 1fe67c0b sub pdata ,11 ,null 
+0186 24210181 nbranch p_g24_tx_fast_hop ,positive 
+0187 1fe0fe01 increase 1 ,pdata 
+0188 6000cbf3 store 1 ,mem_24g_retry 
+0189 c00100ee beq 2 ,p_g24_hop_ch_enable 
+018a c00300f5 beq 6 ,p_g24_hop_ch_disable 
+018b c00400ee beq 8 ,p_g24_hop_ch_enable 
+018c c00600f5 beq 12 ,p_g24_hop_ch_disable 
+018d 20600000 rtn 
+
+p_g24_ackpayload_parse:
+018e 204001a5 call p_g24_read_len_pid_crc 
+018f 6800cbe8 fetch 1 ,mem_24g_rxdata_length 
+0190 207a0000 rtn blank 
+0191 98007200 iforce loopcnt 
+0192 d8c04b66 arg mem_24g_rxbuf + 2 ,contr 
+0193 d8a04bc8 arg mem_24g_rxpayload ,contw 
+0194 20207f01 branch memcpy 
+
+p_g24_pairing_sm:
+0195 7011c590 jam zcode_90 ,mem_zcode_temp_param0 
+0196 20200757 branch p_zcode_entrance 
+
+p_g24_paring_mode_start:
+0197 204006e9 call power_ctrl_pac_succ_cnt_init 
+
+p_g24_paring_mode:
+0198 7011c591 jam zcode_91 ,mem_zcode_temp_param0 
+0199 20200757 branch p_zcode_entrance 
+
+p_g24_auto_pair_start:
+019a 7011c570 jam zcode_70 ,mem_zcode_temp_param0 
+019b 20200757 branch p_zcode_entrance 
+
+p_g24_check_51cmd_stop_24g:
+019c 793f8026 set0 mark_24g ,mark 
+019d 204053ce call le_disable 
+
+p_mouse_disable_g24_pairing_flag:
+019e d8e00003 arg mosue_24g_pairing_flag ,queue 
+019f 202043d2 branch mouse_disable_function_flag 
+
+p_g24_put_data_in_buff:
+01a0 6008cbea storet 1 ,mem_24g_datalen 
+01a1 18427200 copy temp ,loopcnt 
+01a2 d8a04b86 arg mem_24g_txbuf ,contw 
+01a3 1a220c00 copy rega ,contr 
+01a4 20207f01 branch memcpy 
+
+p_g24_read_len_pid_crc:
+01a5 6800cb65 fetch 1 ,mem_24g_rxbuf + 1 
+01a6 1fe97e00 rshift3 pdata ,pdata 
+01a7 6000cbe8 store 1 ,mem_24g_rxdata_length 
+01a8 1fe0fe01 increase 1 ,pdata 
+01a9 d8c04b65 arg mem_24g_rxbuf + 1 ,contr 
+01aa 98c08c00 iadd contr ,contr 
+01ab e8c18000 ifetch 3 ,contr 
+01ac 6001cc27 store 3 ,mem_24g_sta_crc 
+01ad 6800cb65 fetch 1 ,mem_24g_rxbuf + 1 
+01ae 1fe37e00 rshift pdata ,pdata 
+01af 1fe17e03 and pdata ,0x03 ,pdata 
+01b0 6000cc2d store 1 ,mem_24g_sta_pid 
+01b1 20600000 rtn 
+
+p_g24_update_addr_and_synccrc8:
+01b2 60024c12 store 4 ,mem_24g_addr 
+
+p_g24_syncword_crc8:
+01b3 da200000 arg 0 ,rega 
+01b4 df200004 arg 4 ,loopcnt 
+01b5 d8c04c12 arg mem_24g_addr ,contr 
+
+p_g24_syncword_crc8_loop:
+01b6 e8c08000 ifetch 1 ,contr 
+01b7 9a20a200 iadd rega ,rega 
+01b8 c20001b6 loop p_g24_syncword_crc8_loop 
+01b9 1a227e00 copy rega ,pdata 
+01ba 60014c9b store 2 ,mem_24g_syncword 
+01bb 6800cc9b fetch 1 ,mem_24g_syncword 
+01bc 6808cc9c fetcht 1 ,mem_24g_syncword + 1 
+01bd 9840fe00 iadd temp ,pdata 
+01be 6000cc9d store 1 ,mem_24g_syncword_crc8 
+01bf 20600000 rtn 
+
+p_g24_transmit_prep:
+01c0 6800cbea fetch 1 ,mem_24g_datalen 
+01c1 1fe0fe02 increase 2 ,pdata 
+01c2 6000cbec store 1 ,mem_24g_txlen 
+01c3 6800cbeb fetch 1 ,mem_24g_data_type 
+01c4 6000cba6 store 1 ,mem_24g_txpayload 
+01c5 6800cbea fetch 1 ,mem_24g_datalen 
+01c6 1fe9fe00 lshift3 pdata ,pdata 
+01c7 6808cbe9 fetcht 1 ,mem_24g_pid 
+01c8 18410403 and temp ,0x03 ,temp 
+01c9 18438400 lshift temp ,temp 
+01ca 9841fe00 ior temp ,pdata 
+01cb 6808cc26 fetcht 1 ,mem_24g_no_ack 
+01cc 9840fe00 iadd temp ,pdata 
+01cd e0a08000 istore 1 ,contw 
+01ce 6800cbea fetch 1 ,mem_24g_datalen 
+01cf 98007200 iforce loopcnt 
+01d0 d8c04b86 arg mem_24g_txbuf ,contr 
+01d1 20207f01 branch memcpy 
+
+p_g24_ch:
+01d2 6808cbf5 fetcht 1 ,mem_24g_current_ch_number 
+01d3 204001d6 call p_g24_ch_map_size 
+01d4 6008cbf5 storet 1 ,mem_24g_current_ch_number 
+01d5 20600000 rtn 
+
+p_g24_ch_map_size:
+01d6 204001da call p_g24_ch_calc 
+01d7 18408401 increase 1 ,temp 
+01d8 18410403 and_into 3 ,temp 
+01d9 20600000 rtn 
+
+p_g24_ch_calc:
+01da 6800cc12 fetch 1 ,mem_24g_addr 
+01db 1fe17e03 and_into 0x03 ,pdata 
+01dc 1fefa204 mul32 pdata ,4 ,rega 
+01dd 58004bfb setarg mem_24g_ch_map1 
+01de 9a20fe00 iadd rega ,pdata 
+01df 98408c00 iadd temp ,contr 
+01e0 e8c08000 ifetch 1 ,contr 
+01e1 6000cbf4 store 1 ,mem_24g_ch 
+01e2 20600000 rtn 
+
+p_g24_prep:
+01e3 7844fc00 disable enable_crc 
+01e4 7843fc00 disable enable_white 
+01e5 58555555 setarg 0x555555 
+01e6 98001e00 iforce crc24_init 
+01e7 6800cbf4 fetch 1 ,mem_24g_ch 
+01e8 1fed8400 reverse pdata ,temp 
+01e9 79200401 set1 1 ,temp 
+01ea 18431c00 rshift temp ,white_init 
+01eb 20600000 rtn 
+
+p_g24_receive_rxon:
+01ec 204001e3 call p_g24_prep 
+01ed 7857fc00 disable user3 
+01ee 7826fc00 enable decode_fec0 
+01ef 7830fc00 enable is_rx 
+01f0 78507c00 disable is_tx 
+01f1 78287c00 enable swfine 
+01f2 68014bed fetch 2 ,mem_24g_rx_window 
+01f3 98003600 iforce stop_watch 
+01f4 37c18400 correlate null ,timeout 
+01f5 242c022d nbranch p_g24_sync_timeout ,sync 
+01f6 7846fc00 disable decode_fec0 
+01f7 7825fc00 enable decode_fec1 
+01f8 7823fc00 enable enable_white 
+01f9 7824fc00 enable enable_crc 
+01fa 2040022a call p_g24_receive_byte 
+01fb 6000cc9e store 1 ,mem_24g_get_syncword_crc8 
+01fc 6808cc9d fetcht 1 ,mem_24g_syncword_crc8 
+01fd 98467c00 isub temp ,null 
+01fe 2422822d nbranch p_g24_end_of_packet ,zero 
+01ff 2040022a call p_g24_receive_byte 
+0200 6000cb64 store 1 ,mem_24g_rxbuf 
+0201 6800cb64 fetch 1 ,mem_24g_rxbuf 
+0202 6808cbeb fetcht 1 ,mem_24g_data_type 
+0203 a8400e00 icompare bits_data ,temp 
+0204 2420822d nbranch p_g24_end_of_packet ,true 
+
+p_g24_receive_skip:
+0205 2040022a call p_g24_receive_byte 
+0206 e0a08000 istore 1 ,contw 
+0207 1fe97e00 rshift3 pdata ,pdata 
+0208 1fe1721f and pdata ,0x1f ,loopcnt 
+0209 2022820d branch p_g24rx_nopayload ,zero 
+
+p_g24rx_loop:
+020a 2040022a call p_g24_receive_byte 
+020b e0a08000 istore 1 ,contw 
+020c c200020a loop p_g24rx_loop 
+
+p_g24rx_nopayload:
+020d 18a22200 copy contw ,rega 
+020e 2040022a call p_g24_receive_byte 
+020f 6000cd25 store 1 ,mem_rssi_hex_received 
+0210 1a220a00 copy rega ,contw 
+0211 09800018 parse demod ,bucket ,24 
+0212 78287c00 enable swfine 
+0213 db600664 arg param_sifs ,stop_watch 
+0214 1fef7e00 rshift32 pdata ,pdata 
+0215 1ff17e00 rshift16 pdata ,pdata 
+0216 e0a18000 istore 3 ,contw 
+0217 7845fc00 disable decode_fec1 
+0218 2023022d branch p_g24_end_of_packet ,crc_failed 
+0219 7837fc00 enable user3 
+021a 68008017 fetch 1 ,mem_last_freq 
+021b 1fe0a200 add pdata ,0 ,rega 
+021c 20402981 call rf_write_freq 
+021d 7846fc00 disable decode_fec0 
+021e 20402918 call set_sync_on 
+021f 6800cd25 fetch 1 ,mem_rssi_hex_received 
+
+p_rssi_signal:
+0220 1fe22200 copy pdata ,rega 
+0221 6808cca5 fetcht 1 ,mem_rssi_signal_index 
+0222 58004cac setarg mem_rssi_signal_buf 
+0223 98408a00 iadd temp ,contw 
+0224 1a227e00 copy rega ,pdata 
+0225 e0a08000 istore 1 ,contw 
+0226 18408401 increase 1 ,temp 
+0227 18410407 and_into rssi_buf_len_signal ,temp 
+0228 6008cca5 storet 1 ,mem_rssi_signal_index 
+0229 20600000 rtn 
+
+p_g24_receive_byte:
+022a 09800008 parse demod ,bucket ,8 
+022b 19897e00 rshift3 pwindow ,pdata 
+022c 20600000 rtn 
+
+p_g24_sync_timeout:
+
+p_g24_end_of_packet:
+022d 784dfc00 disable encode_fec1 
+022e 7845fc00 disable decode_fec1 
+022f 2020264d branch end_of_packet 
+
+p_g24_set_freq_tx:
+0230 20402918 call set_sync_on 
+0231 6808cbf4 fetcht 1 ,mem_24g_ch 
+0232 20202933 branch set_freq_tx 
+
+p_g24_transmit:
+0233 204053c4 call le_enable 
+0234 68024c12 fetch 4 ,mem_24g_addr 
+0235 98001200 iforce access 
+0236 204001e3 call p_g24_prep 
+0237 20400230 call p_g24_set_freq_tx 
+0238 79202a00 set1 txgfsk ,radio_ctrl 
+0239 782efc00 enable encode_fec0 
+023a 78307c00 enable is_tx 
+023b 7850fc00 disable is_rx 
+023c 19317e00 rshift16 access ,pdata 
+023d 1fecfe00 rshift8 pdata ,pdata 
+023e 1ff1fe00 rshift4 pdata ,pdata 
+023f 08008628 inject mod ,40 
+0240 784efc00 disable encode_fec0 
+0241 782dfc00 enable encode_fec1 
+0242 7823fc00 enable enable_white 
+0243 7824fc00 enable enable_crc 
+0244 6800cc9d fetch 1 ,mem_24g_syncword_crc8 
+0245 08008608 inject mod ,8 
+0246 6800cbec fetch 1 ,mem_24g_txlen 
+0247 98007200 iforce loopcnt 
+0248 d8c04ba6 arg mem_24g_txpayload ,contr 
+
+p_g24tr_loop:
+0249 e8c08000 ifetch 1 ,contr 
+024a 08008608 inject mod ,8 
+024b c2000249 loop p_g24tr_loop 
+024c 78247c00 enable enable_parity 
+024d 08008618 inject mod ,24 
+024e 78447c00 disable enable_parity 
+024f 37d38200 until null ,tx_clear 
+0250 20000064 nop 100 
+0251 784efc00 disable encode_fec0 
+0252 784dfc00 disable encode_fec1 
+0253 20600000 rtn 
+
+p_g24_timer_check:
+0254 20407fe9 call disable_user 
+0255 680a4c0b fetcht 4 ,mem_24g_tx_btclk 
+0256 1c427e00 copy clkn_bt ,pdata 
+0257 98467c00 isub temp ,null 
+0258 24412d18 ncall g24_timer_timeout ,positive 
+0259 1fe22400 copy pdata ,regb 
+025a 68024c0b fetch 4 ,mem_24g_tx_btclk 
+025b 6808cc0f fetcht 1 ,mem_24g_interval 
+025c 98408400 iadd temp ,temp 
+025d 1a427e00 copy regb ,pdata 
+025e 98467c00 isub temp ,null 
+025f 24610000 nrtn positive 
+0260 793ffe1c set0 28 ,pdata 
+0261 60024c0b store 4 ,mem_24g_tx_btclk 
+0262 20207fe7 branch enable_user 
+
+p_rssi_average:
+0263 d8400000 arg 0 ,temp 
+0264 df200008 arg rssi_buf_len_signal + 1 ,loopcnt 
+0265 1a220c00 copy rega ,contr 
+
+p_rssi_average_loop:
+0266 e8c08000 ifetch 1 ,contr 
+0267 98408400 iadd temp ,temp 
+0268 c2000266 loop p_rssi_average_loop 
+0269 18497e00 rshift3 temp ,pdata 
+026a 1fe20400 copy pdata ,temp 
+026b c6930000 rtnmark0 mark_24g 
+026c 1fe6fc0a div pdata ,10 
+026d 20407f86 call wait_div_end 
+026e 1807fe00 quotient pdata 
+026f 1ff27e00 lshift4 pdata ,pdata 
+0270 18070400 remainder temp 
+0271 98418400 ior temp ,temp 
+0272 20600000 rtn 
+
+p_mouse_before_lpm:
+0273 c6130000 rtnmark1 mark_24g 
+0274 20400387 call p_mouse_le_txbuff_save 
+0275 2040027d call p_mouse_setgpio_lpm 
+0276 6800c040 fetch 1 ,mem_context 
+0277 c300027a bbit0 state_inconn ,p_clear_wake 
+0278 680080a0 fetch 1 ,mem_lpm_current_mult 
+0279 247a0000 nrtn blank 
+
+p_clear_wake:
+027a 58000000 setarg 0 
+027b 600400a1 store 8 ,mem_gpio_wakeup_low 
+027c 20600000 rtn 
+
+p_mouse_setgpio_lpm:
+027d 20400291 call p_mouse_set_sdio_high 
+027e 2040027a call p_clear_wake 
+
+p_mouse_setgpio_hibernate:
+027f 20403ebf call mouse_lpm_before_common 
+0280 2040030e call p_flash_ncs_disable 
+0281 68120070 hfetch 4 ,core_gpio_oe0 
+0282 681a0078 hfetcht 4 ,core_gpio_pu0 
+0283 98418400 ior temp ,temp 
+0284 18440400 invert temp ,temp 
+0285 601a007c hstoret 4 ,core_gpio_pd0 
+0286 6810807d hfetch 1 ,core_gpio_pd1 
+0287 793ffe02 set0 2 ,pdata 
+0288 6010807d hstore 1 ,core_gpio_pd1 
+0289 6810807e hfetch 1 ,core_gpio_pd2 
+028a 793ffe06 set0 6 ,pdata 
+028b 6010807e hstore 1 ,core_gpio_pd2 
+028c 6808c6ec fetcht 1 ,mem_config_bt_button_gpio 
+028d 2040028f call p_mouse_gpio_set_float_comm 
+
+p_mouse_multi_led_gpio_set_float:
+028e 6808cb26 fetcht 1 ,mem_mouse_multi_led_gpio 
+
+p_mouse_gpio_set_float_comm:
+028f 793f8407 set0 gpio_active_bit ,temp 
+0290 20206806 branch gpio_set_high_impedance 
+
+p_mouse_set_sdio_high:
+0291 6800cafe fetch 1 ,mem_mouse_init_sensor_reset_flag 
+0292 207a0000 rtn blank 
+0293 20200505 branch p_mouse_seting_sensor_type 
+
+p_device_init:
+0294 70895b86 jam 0x86 ,0x895b 
+0295 70895ca0 jam 0xa0 ,0x895c 
+0296 2040296c call initialize_radio 
+0297 20403416 call app_lpm_mult_enable 
+0298 204074b9 call enable_authrom 
+0299 20358336 branch p_mouse_spi_init ,wake 
+
+p_device_wake_from_power:
+029a 6801c4a3 fetch 3 ,mem_le_lap + 3 
+029b 6001cd2f store 3 ,mem_le_lap_high_3b 
+029c 20400001 call p_wake_from_power 
+029d 6800c241 fetch 1 ,mem_power_on_flag 
+029e c28102a1 bbit1 2 ,p_mouse_skip_24g_pair 
+029f 20400539 call p_mouse_check_key_gpio 
+02a0 c00282d8 beq mouse_lm_button ,p_mouse_24g_pairing_button 
+
+p_mouse_skip_24g_pair:
+
+p_mouse_check_reconn_target:
+02a1 204002aa call p_mouse_tx_power_init 
+02a2 6800c720 fetch 1 ,mem_device_flag 
+02a3 c00102af beq mode_24g_device ,p_mouse_connect_24g_mode 
+02a4 c07f82af beq mode_default_device ,p_mouse_connect_24g_mode 
+02a5 204004f1 call p_mouse_mode_bt_device1_multi_led_on 
+02a6 6800c210 fetch 1 ,mem_xrecord_mode 
+02a7 c01982b7 beq rec_3_mode ,p_mouse3_0_check_reconn_target 
+02a8 c01a02ba beq rec_4_mode ,p_mouse4_0_check_reconn_target 
+02a9 202004b6 branch p_mouse_null_enter_hibernate_enable 
+
+p_mouse_tx_power_init:
+02aa 6800cca1 fetch 1 ,mem_tx_power_temp 
+02ab 6000c1de store 1 ,mem_tx_power 
+02ac 20600000 rtn 
+
+p_mouse_check_select_device_by_switch:
+02ad 6800c6f5 fetch 1 ,mem_config_function_enable 
+02ae 20204360 branch mouse_cheak_select_device_by_switch + 1 
+
+p_mouse_connect_24g_mode:
+02af 70472002 jam mode_24g_device ,mem_device_flag 
+02b0 204004f1 call p_mouse_mode_24g_device_multi_led_on 
+
+p_mouse_start_24g_mode:
+02b1 2040036e call p_g24_factory_check 
+02b2 2034019a branch p_g24_auto_pair_start ,user 
+02b3 20400377 call p_g24_empty_check 
+02b4 2034019a branch p_g24_auto_pair_start ,user 
+
+p_g24_start_24g_mode:
+02b5 7011c560 jam zcode_60 ,mem_zcode_temp_param0 
+02b6 20200757 branch p_zcode_entrance 
+
+p_mouse3_0_check_reconn_target:
+02b7 680341d0 fetch 6 ,mem_hci_plap 
+02b8 203a33eb branch app_bt_start_discovery_short ,blank 
+02b9 20204274 branch mouse3_0_check_reconn_target + 3 
+
+p_mouse4_0_check_reconn_target:
+02ba 704b6201 jam 1 ,mem_le_send_security_request_flag 
+02bb 70479f01 jam 1 ,mem_mouse_le_reconnect_flag 
+02bc 680146a8 fetch 2 ,mem_mouse_direct_timeout 
+02bd 6808cd32 fetcht 1 ,mem_mouse_fast_conn_flag 
+02be 18467cff sub temp ,0xff ,null 
+02bf 242282c1 nbranch p_mouse4_0_check_reconn_target_next ,zero 
+02c0 58000258 setarg 0x0258 
+
+p_mouse4_0_check_reconn_target_next:
+02c1 600146ae store 2 ,mem_mouse_direct_timer 
+02c2 20403418 call app_lpm_mult_disable 
+02c3 204002c9 call p_le_check_adv_flag 
+02c4 58000004 setarg adv_flag_bredr_not_supported 
+02c5 e0c08000 istore 1 ,contr 
+02c6 d8c04390 arg mem_le_scan_data ,contr 
+02c7 20400578 call p_le_adv_data_update 
+02c8 20207df4 branch check_51cmd_adv 
+
+p_le_check_adv_flag:
+02c9 da204370 arg mem_le_adv_data ,rega 
+
+p_le_check_adv_flag_loop:
+02ca ea208000 ifetch 1 ,rega 
+02cb 207a0000 rtn blank 
+02cc 98c0a200 iadd contr ,rega 
+02cd e8c08000 ifetch 1 ,contr 
+02ce c1008000 rtneq 0x01 
+02cf 202002ca branch p_le_check_adv_flag_loop 
+
+p_mouse_le_fast_conn_disable:
+02d0 704d325a jam 0x5a ,mem_mouse_fast_conn_flag 
+02d1 20600000 rtn 
+
+p_mouse_fast_conn_init:
+02d2 704d32ff jam 0xff ,mem_mouse_fast_conn_flag 
+02d3 70421034 jam 0x34 ,mem_xrecord_mode 
+02d4 580f0f0f setarg 0x0f0f0f 
+02d5 6001c4a0 store 3 ,mem_le_lap 
+02d6 6001c4a3 store 3 ,mem_le_lap + 3 
+02d7 20600000 rtn 
+
+p_mouse_24g_pairing_button:
+02d8 7011c561 jam zcode_61 ,mem_zcode_temp_param0 
+02d9 20200757 branch p_zcode_entrance 
+
+p_mouse_init_sunt:
+02da 20400336 call p_mouse_spi_init 
+02db 204040c0 call mouse_spi_sdio_gpio_pollup 
+
+p_mouse_init_sensor:
+02dc 204040d9 call mouse_read_sensor_id 
+02dd c01802e4 beq p32xx_id1 ,p_mouse_init_p32xx_id2_judge 
+02de c01882f6 beq p3065_id1 ,p_mouse_p3065_init_param 
+02df 204040d1 call mouse_twspi_reset 
+02e0 200003e8 nop 1000 
+02e1 202002dc branch p_mouse_init_sensor 
+
+p_mouse_init_sensor_reset:
+02e2 704afe01 jam 1 ,mem_mouse_init_sensor_reset_flag 
+02e3 202002da branch p_mouse_init_sunt 
+
+p_mouse_init_p32xx_id2_judge:
+02e4 204002fb call p_mouse_sensor_poweron 
+02e5 6800c6de fetch 1 ,mem_sensor_id2 
+02e6 c02d02e8 beq ma8650_id2 ,p_mouse_ma8650_init_param 
+02e7 202040e1 branch mouse_init_p32xx_id2_judge + 1 
+
+p_mouse_ma8650_init_param:
+02e8 7046e007 jam ma8650 ,mem_config_sensor_type 
+02e9 58008006 setarg 0x8006 
+02ea 20406413 call twspi_write 
+02eb 20407ec1 call delay_10ms 
+02ec da604d33 arg mem_sensor_8650_init ,regc 
+02ed 204002ef call p_sensor_wr_seq 
+02ee 202002ff branch p_mouse_dpi_config 
+
+p_sensor_wr_seq:
+02ef ea610000 ifetch 2 ,regc 
+02f0 d840ffff arg 0xffff ,temp 
+02f1 98467c00 isub temp ,null 
+02f2 20628000 rtn zero 
+02f3 20406413 call twspi_write 
+02f4 1a60a602 increase 2 ,regc 
+02f5 202002ef branch p_sensor_wr_seq 
+
+p_mouse_p3065_init_param:
+02f6 204002fb call p_mouse_sensor_poweron 
+02f7 6800c6de fetch 1 ,mem_sensor_id2 
+02f8 c03840e8 beq p3065_xy_id2 ,mouse_p3065xy_init_param 
+02f9 7046e001 jam p3065 ,mem_config_sensor_type 
+02fa 20600000 rtn 
+
+p_mouse_sensor_poweron:
+02fb 20400336 call p_mouse_spi_init 
+02fc 58008006 setarg 0x8006 
+02fd 20406413 call twspi_write 
+02fe 20002ee0 nop 12000 
+
+p_mouse_dpi_config:
+02ff 6800c77a fetch 1 ,mem_mouse_dpi 
+0300 c07f8302 beq 0xff ,p_mouse_dpi_config_default 
+0301 20200505 branch p_mouse_seting_dpi 
+
+p_mouse_dpi_config_default:
+0302 6800c6e1 fetch 1 ,mem_config_sensor_motion 
+0303 6000c77a store 1 ,mem_mouse_dpi 
+0304 20200505 branch p_mouse_seting_dpi 
+
+p_mouse_sensor_powerdown:
+0305 204002da call p_mouse_init_sunt 
+0306 58000006 setarg 0x06 
+0307 20406414 call twspi_read 
+0308 1fe1fe08 or pdata ,0x08 ,pdata 
+0309 1fed7e00 lshift8 pdata ,pdata 
+030a 1fe0fe06 add pdata ,0x06 ,pdata 
+030b 20206413 branch twspi_write 
+
+p_mouse_setting_config:
+030c 7011c580 jam zcode_80 ,mem_zcode_temp_param0 
+030d 20200757 branch p_zcode_entrance 
+
+p_flash_ncs_disable:
+030e 6808cb45 fetcht 1 ,mem_flash_ncs_gpio 
+030f 20206825 branch gpio_out_inactive 
+
+p_spid_init_flash:
+0310 70808640 jam 0x40 ,core_spid_ctrl 
+0311 70808700 jam 0x0 ,core_spid_delay 
+0312 68108081 hfetch 1 ,core_gpio_sel1 
+0313 793ffe00 set0 0 ,pdata 
+0314 793ffe01 set0 1 ,pdata 
+0315 79207e03 set1 3 ,pdata 
+0316 793ffe04 set0 4 ,pdata 
+0317 60108081 hstore 1 ,core_gpio_sel1 
+0318 58000000 setarg 0 
+0319 600201f5 store 4 ,mem_spid_tbuf 
+031a 6810807f hfetch 1 ,core_gpio_pd3 
+031b 793ffe00 set0 0 ,pdata 
+031c 6010807f hstore 1 ,core_gpio_pd3 
+031d 20600000 rtn 
+
+p_mouse_load_flash_info_check:
+031e 2040036c call p_flash_release_deep_power_down 
+031f 20404423 call mouse_load_flash_flag 
+0320 68014778 fetch 2 ,mem_store_flag 
+0321 d840aa55 arg eeprom_init_flag ,temp 
+0322 98467c00 isub temp ,null 
+0323 2022835c branch p_mouse_load_flash_device_info ,zero 
+0324 60094778 storet 2 ,mem_store_flag 
+0325 2040441c call mouse_ble_init_address 
+0326 6800c6e1 fetch 1 ,mem_config_sensor_motion 
+0327 6000c77a store 1 ,mem_mouse_dpi 
+
+p_mouse_store_flash_device_info:
+0328 2040036c call p_flash_release_deep_power_down 
+0329 2040033c call p_flash_erase_sector 
+032a 20400353 call p_mouse_information_flash_parameters 
+032b 20400348 call p_spid_write_flash 
+032c 2040033f call p_wait_flash_done 
+
+p_mouse_store_random_addr_increase_count:
+032d 20400310 call p_spid_init_flash 
+032e d8400002 arg 2 ,temp 
+032f da2047c2 arg mem_random_addr_increase_count ,rega 
+0330 da40005f arg mouse_random_addr_count_eeprom_offset ,regb 
+0331 6801c700 fetch 3 ,mem_flash_base 
+0332 9a40fe00 iadd regb ,pdata 
+0333 20400348 call p_spid_write_flash 
+0334 2040033f call p_wait_flash_done 
+0335 20400364 call p_flash_deep_power_down 
+
+p_mouse_spi_init:
+0336 70421276 jam 0x76 ,mem_spi_init_clk 
+0337 20203d36 branch mouse_spi_init 
+
+p_mouse_set_24g_addr_flash:
+0338 d8400004 arg 4 ,temp 
+0339 da204c12 arg mem_24g_addr ,rega 
+033a da40005b arg mouse_g24_addr_eeprom_offect ,regb 
+033b 20600000 rtn 
+
+p_flash_erase_sector:
+033c 6801c700 fetch 3 ,mem_flash_base 
+033d 6001c232 store 3 ,mem_spi_write_addr 
+033e 2040652a call flash_erase_sector + 2 
+
+p_wait_flash_done:
+033f 580186a0 setarg 100000 
+0340 20402a8f call sleep 
+0341 2040650b call spid_unlock_flash 
+0342 580001fa setarg mem_spid_rbuf 
+0343 6011008c hstore 2 ,core_spid_rxaddr 
+0344 58000005 setarg flash_read_satus 
+0345 204064f3 call spid_read_reg 
+0346 c280033f bbit1 flash_status_wip ,p_wait_flash_done 
+0347 20600000 rtn 
+
+p_spid_write_flash:
+0348 1fe22600 copy pdata ,regc 
+0349 1a227e00 copy rega ,pdata 
+034a 1fe0fffc increase -4 ,pdata 
+034b 1fe22400 copy pdata ,regb 
+034c ea420000 ifetch 4 ,regb 
+034d 60024b47 store 4 ,mem_write_flash_head_temp 
+034e 1a627e00 copy regc ,pdata 
+034f 20406552 call spid_write_flash 
+0350 68024b47 fetch 4 ,mem_write_flash_head_temp 
+0351 e2420000 istore 4 ,regb 
+0352 20600000 rtn 
+
+p_mouse_information_flash_parameters:
+0353 5800477f setarg mem_mouse_information_end 
+0354 d8404720 arg mem_mouse_information_start ,temp 
+0355 98460400 isub temp ,temp 
+0356 6801c700 fetch 3 ,mem_flash_base 
+0357 da204720 arg mem_mouse_information_start ,rega 
+0358 20600000 rtn 
+
+p_mouse_read_flash:
+0359 2040036c call p_flash_release_deep_power_down 
+035a 20400353 call p_mouse_information_flash_parameters 
+035b 20206562 branch spid_read_flash 
+
+p_mouse_load_flash_device_info:
+035c 20400359 call p_mouse_read_flash 
+035d 20400571 call p_mouse_load_fast_conn_flag 
+035e 2040056a call p_mouse_load_random_addr_increase_count 
+035f 204002ad call p_mouse_check_select_device_by_switch 
+0360 2040431a call mouse_select_reconn_device 
+0361 6802477b fetch 4 ,mem_mouse_24g_addr 
+0362 60024c12 store 4 ,mem_24g_addr 
+0363 20600000 rtn 
+
+p_flash_deep_power_down:
+0364 700aa2b9 jam flash_command_deep_power_down ,mem_temp 
+
+p_spid_write_flash_cmd:
+0365 20400310 call p_spid_init_flash 
+0366 204069ac call delay_nop100 
+0367 2040650b call spid_unlock_flash 
+0368 da204b47 arg mem_write_flash_head_temp ,rega 
+0369 68088aa2 fetcht 1 ,mem_temp 
+036a 20406556 call spid_write_flash_common 
+036b 202069ac branch delay_nop100 
+
+p_flash_release_deep_power_down:
+036c 700aa2ab jam flash_command_release_deep_power_down ,mem_temp 
+036d 20200365 branch p_spid_write_flash_cmd 
+
+p_g24_factory_check:
+036e df200002 arg 2 ,loopcnt 
+036f d8c04c12 arg mem_24g_addr ,contr 
+
+p_pdata_0xff_check:
+0370 20407fe7 call enable_user 
+0371 5800ffff setarg 0xffff 
+
+p_pdata_0xff_check_loop:
+0372 e8c90000 ifetcht 2 ,contr 
+0373 98467c00 isub temp ,null 
+0374 2442ffe9 ncall disable_user ,zero 
+0375 c2000372 loop p_pdata_0xff_check_loop 
+0376 20600000 rtn 
+
+p_g24_empty_check:
+0377 df200002 arg 2 ,loopcnt 
+0378 d8c04c12 arg mem_24g_addr ,contr 
+
+p_pdata_0x00_check:
+0379 20407fe7 call enable_user 
+037a 58000000 setarg 0x0000 
+
+p_pdata_0x00_check_loop:
+037b e8c90000 ifetcht 2 ,contr 
+037c 98467c00 isub temp ,null 
+037d 2442ffe9 ncall disable_user ,zero 
+037e c2000372 loop p_pdata_0xff_check_loop 
+037f 20600000 rtn 
+
+p_mouse_g24_package_data:
+0380 20404401 call mouse_g24_package_data 
+0381 6801469f fetch 2 ,mem_mouse_z 
+0382 207a0000 rtn blank 
+
+p_g24_transmit_by_interrupt_enable:
+0383 704d2a01 jam g24_tx_timer_int_enable ,mem_24g_transmit_by_interrupt 
+0384 58000000 setarg 0 
+0385 60014d2b store 2 ,mem_24g_transmit_by_interrupt_exit_count 
+0386 20600000 rtn 
+
+p_mouse_le_txbuff_save:
+0387 d8c01800 arg mem_le_tx_buffer0 ,contr 
+0388 d8a0480a arg mem_le_tx_buffer0_omemalloc ,contw 
+0389 2040038f call p_mouse_le_txbuff_copy 
+038a d8c01900 arg mem_le_tx_buffer1 ,contr 
+038b 2040038f call p_mouse_le_txbuff_copy 
+038c d8c01a00 arg mem_le_tx_buffer2 ,contr 
+038d 2040038f call p_mouse_le_txbuff_copy 
+038e d8c01b00 arg mem_le_tx_buffer3 ,contr 
+
+p_mouse_le_txbuff_copy:
+038f df20001b arg 27 ,loopcnt 
+0390 20207f01 branch memcpy 
+
+p_mouse_le_txbuff_load:
+0391 d8c0480a arg mem_le_tx_buffer0_omemalloc ,contr 
+0392 d8a01800 arg mem_le_tx_buffer0 ,contw 
+0393 2040038f call p_mouse_le_txbuff_copy 
+0394 d8a01900 arg mem_le_tx_buffer1 ,contw 
+0395 2040038f call p_mouse_le_txbuff_copy 
+0396 d8a01a00 arg mem_le_tx_buffer2 ,contw 
+0397 2040038f call p_mouse_le_txbuff_copy 
+0398 d8a01b00 arg mem_le_tx_buffer3 ,contw 
+0399 2020038f branch p_mouse_le_txbuff_copy 
+
+p_mouse_le:
+039a 20405892 call le_fifo_check_nearly_full 
+039b 247a0000 nrtn blank 
+039c 6800cd32 fetch 1 ,mem_mouse_fast_conn_flag 
+039d c07f83a1 beq 0xff ,p_mouse_le_next 
+039e 6800c6c5 fetch 1 ,mem_le_connect_status_flag 
+039f 1fe17e03 and pdata ,0x03 ,pdata 
+03a0 c1818000 rtnne 0x03 
+
+p_mouse_le_next:
+03a1 6800c79c fetch 1 ,mem_mouse_clear_sensor_data_flag 
+03a2 205a03f7 call p_mouse_clear_sensor_data ,blank 
+03a3 680246d3 fetch mouse_flag_len ,mem_mouse_flag 
+03a4 c282c179 bbit1 mouse_bt_discovery_button_down_flag ,mouse_le_send_empty_packet 
+03a5 20403f97 call mouse_motion 
+03a6 24740000 nrtn user 
+03a7 204003ae call p_mouse_le_current_mult_update 
+03a8 204003b1 call p_mouse_data_xy_release 
+03a9 204003cd call p_mouse_wheel_trigger 
+
+p_mouse_data_push:
+03aa da20469a arg mem_mouse_key ,rega 
+03ab 20407e3d call queue_push 
+03ac 205403bc call p_mouse_queue_increase ,user 
+03ad 20600000 rtn 
+
+p_mouse_le_current_mult_update:
+03ae 70417200 jam 0 ,mem_lpm_mult 
+03af 704b5f1e jam 30 ,mem_mouse_le_current_mult_timer 
+03b0 20600000 rtn 
+
+p_mouse_data_xy_release:
+03b1 6800cb5e fetch 1 ,mem_mouse_long_mult_flag 
+03b2 c1808000 rtnne 1 
+03b3 58000000 setarg 0 
+03b4 6000cb5e store 1 ,mem_mouse_long_mult_flag 
+03b5 6002469b store 4 ,mem_mouse_x 
+03b6 202002fb branch p_mouse_sensor_poweron 
+
+p_mouse_data_init:
+03b7 7047a007 jam 7 ,mem_mouse_data_queue 
+03b8 7047a104 jam 4 ,mem_mouse_data_queue + 1 
+03b9 580047a0 setarg mem_mouse_data_queue 
+03ba 60014218 store 2 ,mem_queue_ptr 
+03bb 20207e38 branch queue_init 
+
+p_mouse_queue_increase:
+03bc 6800c7c1 fetch 1 ,mem_mouse_data_queue_num 
+03bd 1fe0fe01 increase 1 ,pdata 
+03be 6000c7c1 store 1 ,mem_mouse_data_queue_num 
+03bf 20600000 rtn 
+
+p_mouse_data_pull:
+03c0 da20469a arg mem_mouse_key ,rega 
+03c1 20407e54 call queue_pop 
+03c2 203403c4 branch p_mouse_fill_data_le ,user 
+03c3 20600000 rtn 
+
+p_mouse_fill_data_le:
+03c4 20405652 call le_clear_md 
+03c5 6800c7c1 fetch 1 ,mem_mouse_data_queue_num 
+03c6 1fe67c01 sub pdata ,1 ,null 
+03c7 24415650 ncall le_set_md ,positive 
+03c8 6800c7c1 fetch 1 ,mem_mouse_data_queue_num 
+03c9 207a0000 rtn blank 
+03ca 1fe0ffff increase -1 ,pdata 
+03cb 6000c7c1 store 1 ,mem_mouse_data_queue_num 
+03cc 20203f90 branch mouse_fill_data_le 
+
+p_mouse_wheel_trigger:
+03cd 6801469f fetch 2 ,mem_mouse_z 
+03ce 207a0000 rtn blank 
+03cf 70480601 jam 1 ,mem_mouse_wheel_trigger 
+03d0 7048070a jam 10 ,mem_mouse_wheel_trigger_timer 
+03d1 20600000 rtn 
+
+p_mouse_bt:
+03d2 20770000 rtn attempt 
+03d3 6800c1e2 fetch 1 ,mem_app_handshake_flag 
+03d4 207a0000 rtn blank 
+03d5 20405271 call l2cap_malloc_is_fifo_nearly_full 
+03d6 247a0000 nrtn blank 
+03d7 6800c79c fetch 1 ,mem_mouse_clear_sensor_data_flag 
+03d8 205a03f7 call p_mouse_clear_sensor_data ,blank 
+03d9 680246d3 fetch mouse_flag_len ,mem_mouse_flag 
+03da c282bf8a bbit1 mouse_bt_discovery_button_down_flag ,mouse_send_empty_data 
+03db c284bf8a bbit1 mouse_bt_discovery_button_long_down_flag ,mouse_send_empty_data 
+03dc 20403f97 call mouse_motion 
+03dd 24740000 nrtn user 
+03de 204003ae call p_mouse_le_current_mult_update 
+03df 204003b1 call p_mouse_data_xy_release 
+03e0 204003cd call p_mouse_wheel_trigger 
+03e1 6800cb03 fetch 1 ,mem_mouse_bt_boot_mode 
+03e2 c00083e6 beq 1 ,p_mouse_send_data_boot_mode 
+03e3 6800cb0a fetch 1 ,mem_mouse_bt_send_first_package_flag 
+03e4 207a0000 rtn blank 
+03e5 20203f81 branch mouse_send_data 
+
+p_mouse_send_data_boot_mode:
+03e6 6800c69a fetch 1 ,mem_mouse_key 
+03e7 6000cb04 store 1 ,mem_mouse_bt_boot_data 
+03e8 6800c69b fetch 1 ,mem_mouse_x 
+03e9 e0a08000 istore 1 ,contw 
+03ea 6800c69d fetch 1 ,mem_mouse_y 
+03eb e0a08000 istore 1 ,contw 
+03ec 6801469f fetch 2 ,mem_mouse_z 
+03ed e0a10000 istore 2 ,contw 
+03ee da200007 arg 7 ,rega 
+03ef 20404d63 call hid_malloc_tx_buff 
+03f0 6801424e fetch 2 ,mem_hid_int_remote_cid 
+03f1 e0a10000 istore 2 ,contw 
+03f2 580002a1 setarg 0x02a1 
+03f3 e0a10000 istore 2 ,contw 
+03f4 6802cb04 fetch 5 ,mem_mouse_bt_boot_data 
+03f5 e0a28000 istore 5 ,contw 
+03f6 20600000 rtn 
+
+p_mouse_clear_sensor_data:
+03f7 70479c01 jam 1 ,mem_mouse_clear_sensor_data_flag 
+03f8 20405814 call le_set_config_more_data 
+03f9 202002e2 branch p_mouse_init_sensor_reset 
+
+p_mouse_idle:
+03fa 20407e34 call ui_check_paring_button 
+03fb 20203ee0 branch mouse_wheel_check 
+
+p_mouse_dpi_check:
+03fc 6808c6e7 fetcht 1 ,mem_dpi_button_gpio 
+03fd 2040054c call p_gpio_set_input_pd 
+03fe 6808c6e7 fetcht 1 ,mem_dpi_button_gpio 
+03ff 2040681d call gpio_get_bit 
+0400 2020840e branch p_mouse_dpi_up ,true 
+0401 20400555 call p_gpio_set_input_pu 
+
+p_mouse_dpi_down:
+0402 6800c6b6 fetch 1 ,mem_mouse_dpi_button_state 
+0403 c1000000 rtneq dpi_button_state_down 
+0404 7046b600 jam dpi_button_state_down ,mem_mouse_dpi_button_state 
+0405 6800c77a fetch 1 ,mem_mouse_dpi 
+0406 1fe0fe01 increase 1 ,pdata 
+0407 1fe17e03 and pdata ,0x03 ,pdata 
+0408 6000c77a store 1 ,mem_mouse_dpi 
+0409 1fe0fe02 increase 2 ,pdata 
+040a 6000cb2d store 1 ,mem_mouse_multi_led_blink_count 
+040b 20400502 call p_mouse_dpi_multi_led_blink 
+040c 20403d7e call mouse_seting_dpi 
+040d 20200328 branch p_mouse_store_flash_device_info 
+
+p_mouse_dpi_up:
+040e 20400555 call p_gpio_set_input_pu 
+040f 20203d62 branch mouse_dpi_up 
+
+p_mouse_priority_bb_event:
+0410 1a627e00 copy regc ,pdata 
+0411 c00a0422 beq bt_evt_le_connected ,p_mouse_le_bb_event_connected 
+0412 c00a8425 beq bt_evt_le_disconnected ,p_mouse_le_bb_disconnected 
+0413 c0148428 beq bt_evt_le_enc_info ,p_mouse_le_enc_info 
+0414 c019042a beq bt_evt_le_start_enc ,p_mouse_le_ll_start_encryt 
+0415 c020042c beq bt_evt_le_parse_conn_papa_update_rsp ,p_mouse_le_conn_param_update_rsp_recieved 
+0416 c002042e beq bt_evt_reconn_failed ,p_mouse_bb_event_reconn_failed 
+0417 c009842e beq bt_evt_reconn_page_timeout ,p_mouse_bb_event_reconn_timeout 
+0418 c0138430 beq bt_evt_virtual_cable_unplug ,p_mouse_irtual_cable_unplug 
+0419 c00cb3df beq bt_evt_switch_not_accept ,app_bt_role_switch 
+041a c0108432 beq bt_evt_sniff_not_accept ,p_mouse_sniff_not_accept 
+041b c0008434 beq bt_evt_bb_connected ,p_mouse_bb_event_connected 
+041c c0010439 beq bt_evt_bb_disconnected ,p_mouse_bb_event_disconnected 
+041d c015843c beq bt_evt_switch_success_master ,p_mouse_enter_sniff_check 
+041e c01c843e beq bt_evt_24g_pairing_complete ,p_mouse_24g_pairing_complete 
+041f c01d0441 beq bt_evt_24g_attempt_fail ,p_mouse_24g_attempt_fail 
+0420 c01e0444 beq bt_evt_24g_attempt_success ,p_mouse_24g_attempt_success 
+0421 2020417d branch mouse_priority_bb_event + 1 
+
+p_mouse_le_bb_event_connected:
+0422 204002e2 call p_mouse_init_sensor_reset 
+0423 7011c5b0 jam zcode_b0 ,mem_zcode_temp_param0 
+0424 20200757 branch p_zcode_entrance 
+
+p_mouse_le_bb_disconnected:
+0425 2040044c call p_mouse_sensor_powerdown_check 
+0426 7011c5a2 jam zcode_a2 ,mem_zcode_temp_param0 
+0427 20200757 branch p_zcode_entrance 
+
+p_mouse_le_enc_info:
+
+p_app_updata_le_param:
+0428 700a9912 jam bt_cmd_le_update_conn ,mem_fifo_temp 
+0429 20207d8f branch ui_ipc_send_cmd 
+
+p_mouse_le_ll_start_encryt:
+042a 7011c5b3 jam zcode_b3 ,mem_zcode_temp_param0 
+042b 20200757 branch p_zcode_entrance 
+
+p_mouse_le_conn_param_update_rsp_recieved:
+042c 7011c5a1 jam zcode_a1 ,mem_zcode_temp_param0 
+042d 20200757 branch p_zcode_entrance 
+
+p_mouse_bb_event_reconn_timeout:
+
+p_mouse_bb_event_reconn_failed:
+042e 7011c5a3 jam zcode_a3 ,mem_zcode_temp_param0 
+042f 20200757 branch p_zcode_entrance 
+
+p_mouse_irtual_cable_unplug:
+0430 2040438e call mouse_irtual_cable_unplug 
+0431 202033a7 branch app_bb_hibernate 
+
+p_mouse_sniff_not_accept:
+0432 7011c5b1 jam zcode_b1 ,mem_zcode_temp_param0 
+0433 20200757 branch p_zcode_entrance 
+
+p_mouse_bb_event_connected:
+0434 204002e2 call p_mouse_init_sensor_reset 
+0435 204004b9 call p_mouse_null_enter_hibernate_disable 
+0436 204004fd call p_mouse_discovey_led_blink_off 
+0437 70480900 jam 0 ,mem_mouse_send_switch_req_timer 
+0438 202042ca branch mouse_stop_discovery 
+
+p_mouse_bb_event_disconnected:
+0439 2040044c call p_mouse_sensor_powerdown_check 
+043a 7011c5b4 jam zcode_b4 ,mem_zcode_temp_param0 
+043b 20200757 branch p_zcode_entrance 
+
+p_mouse_enter_sniff_check:
+043c 7011c5b2 jam zcode_b2 ,mem_zcode_temp_param0 
+043d 20200757 branch p_zcode_entrance 
+
+p_mouse_24g_pairing_complete:
+043e 204002e2 call p_mouse_init_sensor_reset 
+043f 7011c592 jam zcode_92 ,mem_zcode_temp_param0 
+0440 20200757 branch p_zcode_entrance 
+
+p_mouse_24g_attempt_fail:
+0441 2040044c call p_mouse_sensor_powerdown_check 
+0442 7011c5a0 jam zcode_a0 ,mem_zcode_temp_param0 
+0443 20200757 branch p_zcode_entrance 
+
+p_mouse_24g_attempt_success:
+0444 204004b9 call p_mouse_null_enter_hibernate_disable 
+0445 204002e2 call p_mouse_init_sensor_reset 
+0446 20403f8d call mouse_no_data_timer_init 
+
+p_mouse_store_24g_device_2flash:
+0447 20404366 call mouse_cheak_select_24gdevice 
+0448 20200328 branch p_mouse_store_flash_device_info 
+
+p_mouse_before_hibernate:
+0449 2040044c call p_mouse_sensor_powerdown_check 
+044a 7011c5a4 jam zcode_a4 ,mem_zcode_temp_param0 
+044b 20200757 branch p_zcode_entrance 
+
+p_mouse_sensor_powerdown_check:
+044c 6800cafe fetch 1 ,mem_mouse_init_sensor_reset_flag 
+044d 207a0000 rtn blank 
+044e 704afe00 jam 0 ,mem_mouse_init_sensor_reset_flag 
+044f 20200305 branch p_mouse_sensor_powerdown 
+
+p_mouse_bb_event_timer:
+0450 204003fc call p_mouse_dpi_check 
+0451 204004bc call p_mouse_multi_led_blink_timer 
+0452 2040048f call p_mouse_wheel_trigger_timer 
+0453 204004ab call p_mouse_null_enter_hibernate_timer 
+0454 20400494 call p_mouse_bt_discovery_check 
+0455 20404234 call mouse_check_discovery_timeout_timer 
+0456 20400460 call p_mouse_check_select_device_by_switch_timer 
+0457 20400488 call p_mouse_g24_long_sleep_param_update_timer 
+0458 20404237 call mouse_check_direct_timeout_timer 
+0459 20400471 call p_mouse_le_enable_att_list_timer 
+045a 2040047a call p_mouse_le_current_mult_update_timer 
+045b 20400480 call p_le_send_smp_security_request_timer 
+045c 20400469 call p_mouse_send_switch_req_timer 
+045d 20404231 call mouse_check_hid_handshake_timer 
+045e 2040046c call p_mouse_bt_check_sniff_req_timeout_timer 
+045f 2020423a branch mouse_check_no_data_timeout_timer 
+
+p_mouse_check_select_device_by_switch_timer:
+0460 6808c6ed fetcht 1 ,mem_config_select_device_button_gpio 
+0461 2040681d call gpio_get_bit 
+0462 20208466 branch p_mouse_cheak_select_24gdevice ,true 
+
+p_mouse_select_btdevice:
+0463 6800c720 fetch 1 ,mem_device_flag 
+0464 c080e59a bne mode_bt_device1 ,soft_reset_chip 
+0465 20600000 rtn 
+
+p_mouse_cheak_select_24gdevice:
+0466 6800c720 fetch 1 ,mem_device_flag 
+0467 c081659a bne mode_24g_device ,soft_reset_chip 
+0468 20600000 rtn 
+
+p_mouse_send_switch_req_timer:
+0469 da604809 arg mem_mouse_send_switch_req_timer ,regc 
+046a da40637a arg host_create_conn_resend ,regb 
+046b 2020336d branch timer_single_step 
+
+p_mouse_bt_check_sniff_req_timeout_timer:
+046c da604b09 arg mem_mouse_bt_send_first_package_timer ,regc 
+046d da40046f arg p_mouse_bt_send_first_package ,regb 
+046e 2020336d branch timer_single_step 
+
+p_mouse_bt_send_first_package:
+046f 704b0a01 jam 1 ,mem_mouse_bt_send_first_package_flag 
+0470 20600000 rtn 
+
+p_mouse_le_enable_att_list_timer:
+0471 da6046c6 arg mem_le_start_encrypt_timer ,regc 
+0472 da403d60 arg mouse_le_write_enable ,regb 
+0473 2020336d branch timer_single_step 
+
+p_mouse_check_direct_timeout_timer:
+0474 da6046ae arg mem_mouse_direct_timer ,regc 
+0475 da400477 arg p_mouse_check_direct_timeout ,regb 
+0476 20203374 branch timer_single_step_2b 
+
+p_mouse_check_direct_timeout:
+0477 6800cb2f fetch 1 ,mem_mouse_multi_led_on_poweron2s_flag 
+0478 247a0000 nrtn blank 
+0479 20204266 branch mouse_check_direct_timeout 
+
+p_mouse_le_current_mult_update_timer:
+047a da604b5f arg mem_mouse_le_current_mult_timer ,regc 
+047b da40047d arg p_mouse_le_current_mult_reinit ,regb 
+047c 2020336d branch timer_single_step 
+
+p_mouse_le_current_mult_reinit:
+047d 6800c7c5 fetch 1 ,mem_lpm_mult_init 
+047e 6000c172 store 1 ,mem_lpm_mult 
+047f 2020048d branch p_mouse_long_mult_flag_enable 
+
+p_le_send_smp_security_request_timer:
+0480 6800cb63 fetch 1 ,mem_mouse_le_bb_connected_flag 
+0481 207a0000 rtn blank 
+0482 da604b61 arg mem_mouse_send_secutiry_request_timer ,regc 
+0483 da400485 arg p_le_pairing_sm_start_check ,regb 
+0484 2020336d branch timer_single_step 
+
+p_le_pairing_sm_start_check:
+0485 6800cb62 fetch 1 ,mem_le_send_security_request_flag 
+0486 247a0000 nrtn blank 
+0487 20205bf5 branch le_pairing_sm_start 
+
+p_mouse_g24_long_sleep_param_update_timer:
+0488 da604b60 arg mem_24g_long_sleep_param_update_timer ,regc 
+0489 da40048b arg p_mouse_g24_long_sleep_normal_param ,regb 
+048a 2020336d branch timer_single_step 
+
+p_mouse_g24_long_sleep_normal_param:
+048b 58249f00 setarg g24_long_sleep_step2 
+048c 6001cc19 store 3 ,mem_24g_enter_hibernate 
+
+p_mouse_long_mult_flag_enable:
+048d 704b5e01 jam 1 ,mem_mouse_long_mult_flag 
+048e 20600000 rtn 
+
+p_mouse_wheel_trigger_timer:
+048f da604807 arg mem_mouse_wheel_trigger_timer ,regc 
+0490 da400492 arg p_mouse_wheel_trigger_disable ,regb 
+0491 2020336d branch timer_single_step 
+
+p_mouse_wheel_trigger_disable:
+0492 70480600 jam 0 ,mem_mouse_wheel_trigger 
+0493 20600000 rtn 
+
+p_mouse_bt_discovery_check:
+0494 6800c720 fetch 1 ,mem_device_flag 
+0495 c1010000 rtneq mode_24g_device 
+
+p_mouse_bt_discovery_by_button:
+0496 6808c6ec fetcht 1 ,mem_config_bt_button_gpio 
+0497 2040681d call gpio_get_bit 
+0498 2020849c branch p_mouse_bt_discovery_commbination_key_down ,true 
+
+p_mouse_bt_discovery_commbination_key_up:
+0499 204043a9 call mouse_bt_discovery_commbination_key_up 
+049a d8e00009 arg mouse_bt_discovery_button_long_down_flag ,queue 
+049b 202043d2 branch mouse_disable_function_flag 
+
+p_mouse_bt_discovery_commbination_key_down:
+049c 70479e28 jam 40 ,mem_mouse_null_enter_hibernate_timer 
+049d 2040049f call p_mouse_bt_discovery_timer 
+049e 202043b0 branch mouse_bt_discovery_commbination_key_down + 1 
+
+p_mouse_bt_discovery_timer:
+049f da6046da arg mem_combination_ui_button_count ,regc 
+04a0 da4004a2 arg p_mouse_long_button_bt_discovery ,regb 
+04a1 2020336d branch timer_single_step 
+
+p_mouse_long_button_bt_discovery:
+04a2 68014682 fetch 2 ,mem_ui_state_map 
+04a3 2feffe0b isolate1 ui_state_ble_adv ,pdata 
+04a4 2040c2d4 call mouse_stop_le_adv ,true 
+04a5 68014682 fetch 2 ,mem_ui_state_map 
+04a6 2feffe07 isolate1 ui_state_bt_reconnect ,pdata 
+04a7 2040c392 call mouse_cancel_reconnect ,true 
+04a8 d8e00009 arg mouse_bt_discovery_button_long_down_flag ,queue 
+04a9 204043ce call mouse_enable_function_flag 
+04aa 202043b8 branch mouse_long_button_bt_discovry 
+
+p_mouse_null_enter_hibernate_timer:
+04ab 6800cb2f fetch 1 ,mem_mouse_multi_led_on_poweron2s_flag 
+04ac 247a0000 nrtn blank 
+04ad 6800c79d fetch 1 ,mem_mouse_null_enter_hibernate_flag 
+04ae 207a0000 rtn blank 
+04af 6800c79e fetch 1 ,mem_mouse_null_enter_hibernate_timer 
+04b0 203a04b4 branch p_mouse_null_enter_hibernate ,blank 
+04b1 1fe0ffff increase -1 ,pdata 
+04b2 6000c79e store 1 ,mem_mouse_null_enter_hibernate_timer 
+04b3 20600000 rtn 
+
+p_mouse_null_enter_hibernate:
+04b4 70479d00 jam 0 ,mem_mouse_null_enter_hibernate_flag 
+04b5 2020340a branch app_enter_hibernate 
+
+p_mouse_null_enter_hibernate_enable:
+04b6 70479d01 jam 1 ,mem_mouse_null_enter_hibernate_flag 
+04b7 70479e28 jam 40 ,mem_mouse_null_enter_hibernate_timer 
+04b8 20600000 rtn 
+
+p_mouse_null_enter_hibernate_disable:
+04b9 70479d00 jam 0 ,mem_mouse_null_enter_hibernate_flag 
+04ba 70479e00 jam 0 ,mem_mouse_null_enter_hibernate_timer 
+04bb 20600000 rtn 
+
+p_mouse_multi_led_blink_timer:
+04bc 6800cb25 fetch 1 ,mem_mouse_multi_led_blink_enable 
+04bd 207a0000 rtn blank 
+04be 6800cb28 fetch 1 ,mem_mouse_multi_led_type 
+04bf c00004c2 beq multi_led_on ,p_mouse_multi_led_type_on 
+04c0 c00084cc beq multi_led_blink ,p_mouse_multi_led_type_blink 
+04c1 20600000 rtn 
+
+p_mouse_multi_led_type_on:
+04c2 204004dc call p_mouse_multi_led_on 
+04c3 6800cb29 fetch 1 ,mem_mouse_multi_led_on_timer 
+04c4 1fe0fe01 increase 1 ,pdata 
+04c5 6000cb29 store 1 ,mem_mouse_multi_led_on_timer 
+04c6 6808cb2a fetcht 1 ,mem_mouse_multi_led_on_timer_init 
+04c7 98467c00 isub temp ,null 
+04c8 204284ca call p_mouse_multi_led_off_poweron2s ,zero 
+04c9 20600000 rtn 
+
+p_mouse_multi_led_off_poweron2s:
+04ca 704b2f00 jam 0 ,mem_mouse_multi_led_on_poweron2s_flag 
+04cb 202004ea branch p_mouse_multi_led_off 
+
+p_mouse_multi_led_type_blink:
+04cc 6800cb2c fetch 1 ,mem_mouse_multi_led_blink_timer 
+04cd 1fe0ffff increase -1 ,pdata 
+04ce 6000cb2c store 1 ,mem_mouse_multi_led_blink_timer 
+04cf 247a0000 nrtn blank 
+04d0 6800cb2b fetch 1 ,mem_mouse_multi_led_blink_timer_init 
+04d1 6000cb2c store 1 ,mem_mouse_multi_led_blink_timer 
+04d2 6800cb2e fetch 1 ,mem_mouse_multi_led_blink_count_limited 
+04d3 203a04d8 branch p_mouse_multi_led_blink_count_no_limited ,blank 
+04d4 6800cb2d fetch 1 ,mem_mouse_multi_led_blink_count 
+04d5 203a04e8 branch p_mouse_multi_led_blink_off ,blank 
+04d6 1fe0ffff increase -1 ,pdata 
+04d7 6000cb2d store 1 ,mem_mouse_multi_led_blink_count 
+
+p_mouse_multi_led_blink_count_no_limited:
+04d8 6800cb27 fetch 1 ,mem_mouse_multi_led_state 
+04d9 c00084ea beq on ,p_mouse_multi_led_off 
+04da c00004dc beq off ,p_mouse_multi_led_on 
+04db 20600000 rtn 
+
+p_mouse_multi_led_on:
+04dc 704b2701 jam on ,mem_mouse_multi_led_state 
+04dd 6800c720 fetch 1 ,mem_device_flag 
+04de c00104e3 beq mode_24g_device ,p_mouse_multi_down_led_on 
+
+p_mouse_multi_up_led_on:
+04df 6808cb26 fetcht 1 ,mem_mouse_multi_led_gpio 
+04e0 2040680e call gpio_config_output 
+04e1 6808cb26 fetcht 1 ,mem_mouse_multi_led_gpio 
+04e2 20206825 branch gpio_out_inactive 
+
+p_mouse_multi_down_led_on:
+04e3 6808cb26 fetcht 1 ,mem_mouse_multi_led_gpio 
+04e4 79200407 set1 7 ,temp 
+04e5 2040680e call gpio_config_output 
+04e6 6808cb26 fetcht 1 ,mem_mouse_multi_led_gpio 
+04e7 20206829 branch gpio_out_active 
+
+p_mouse_multi_led_blink_off:
+04e8 58000000 setarg 0 
+04e9 6001cb2c store 3 ,mem_mouse_multi_led_blink_timer 
+
+p_mouse_multi_led_off:
+04ea 6800cb2d fetch 1 ,mem_mouse_multi_led_blink_count 
+04eb 243a04ee nbranch p_mouse_multi_led_off_wait_blink_over ,blank 
+04ec 704b2500 jam 0 ,mem_mouse_multi_led_blink_enable 
+04ed 704b2800 jam 0 ,mem_mouse_multi_led_type 
+
+p_mouse_multi_led_off_wait_blink_over:
+04ee 704b2900 jam 0 ,mem_mouse_multi_led_on_timer 
+04ef 704b2700 jam off ,mem_mouse_multi_led_state 
+04f0 2020028e branch p_mouse_multi_led_gpio_set_float 
+
+p_mouse_mode_bt_device1_multi_led_on:
+
+p_mouse_mode_24g_device_multi_led_on:
+04f1 704b2f01 jam 1 ,mem_mouse_multi_led_on_poweron2s_flag 
+04f2 704b2501 jam on ,mem_mouse_multi_led_blink_enable 
+04f3 704b2800 jam multi_led_on ,mem_mouse_multi_led_type 
+04f4 704b2900 jam 0 ,mem_mouse_multi_led_on_timer 
+04f5 20600000 rtn 
+
+p_mouse_discovery_multi_led_blink:
+04f6 704b2b03 jam 3 ,mem_mouse_multi_led_blink_timer_init 
+04f7 704b2e00 jam 0 ,mem_mouse_multi_led_blink_count_limited 
+04f8 704b2d01 jam 1 ,mem_mouse_multi_led_blink_count 
+
+p_mouse_multi_led_blink_enable:
+04f9 704b2c05 jam 5 ,mem_mouse_multi_led_blink_timer 
+04fa 704b2501 jam on ,mem_mouse_multi_led_blink_enable 
+04fb 704b2801 jam multi_led_blink ,mem_mouse_multi_led_type 
+04fc 20600000 rtn 
+
+p_mouse_discovey_led_blink_off:
+04fd 6800cb29 fetch 1 ,mem_mouse_multi_led_on_timer 
+04fe 247a0000 nrtn blank 
+04ff 6800cb2f fetch 1 ,mem_mouse_multi_led_on_poweron2s_flag 
+0500 247a0000 nrtn blank 
+0501 202004e8 branch p_mouse_multi_led_blink_off 
+
+p_mouse_dpi_multi_led_blink:
+0502 704b2b03 jam 3 ,mem_mouse_multi_led_blink_timer_init 
+0503 704b2e01 jam 1 ,mem_mouse_multi_led_blink_count_limited 
+0504 202004f9 branch p_mouse_multi_led_blink_enable 
+
+p_mouse_seting_dpi:
+
+p_mouse_seting_sensor_type:
+0505 6800c6e0 fetch 1 ,mem_config_sensor_type 
+0506 c0010522 beq ka8 ,p_mouse_seting_ka8_dpi 
+0507 c0030512 beq p3065_xy ,p_mouse_seting_3065xy_dpi 
+0508 c003851a beq ma8650 ,p_mouse_seting_8009_dpi 
+
+p_mouse_seting_3205_dpi:
+0509 6800c77a fetch 1 ,mem_mouse_dpi 
+050a 205a0518 call p_mouse_3065xy_dpi_recount ,blank 
+050b 6800c77a fetch 1 ,mem_mouse_dpi 
+050c c000850f beq mouse_dpi_level2 ,p_mouse_3205_set_cpi1 
+050d c001bd8c beq mouse_dpi_level4 ,mouse_set_cpi3 
+050e 20203d88 branch mouse_set_cpi2 
+
+p_mouse_3205_set_cpi1:
+050f 6800c77f fetch 1 ,mem_320x_dpi_1 
+0510 1fe0ffff increase -1 ,pdata 
+0511 20203dbe branch mouse_p3205_dpi 
+
+p_mouse_seting_3065xy_dpi:
+0512 6800c77a fetch 1 ,mem_mouse_dpi 
+0513 205a0518 call p_mouse_3065xy_dpi_recount ,blank 
+0514 6800c77a fetch 1 ,mem_mouse_dpi 
+0515 c0008520 beq mouse_dpi_level2 ,p_mouse_8009_set_cpi1 
+0516 c001bd8c beq mouse_dpi_level4 ,mouse_set_cpi3 
+0517 20203d88 branch mouse_set_cpi2 
+
+p_mouse_3065xy_dpi_recount:
+0518 70477a01 jam mouse_dpi_level2 ,mem_mouse_dpi 
+0519 20600000 rtn 
+
+p_mouse_seting_8009_dpi:
+051a 6800c77a fetch 1 ,mem_mouse_dpi 
+051b 205a0518 call p_mouse_3065xy_dpi_recount ,blank 
+051c 6800c77a fetch 1 ,mem_mouse_dpi 
+051d c0008520 beq mouse_dpi_level2 ,p_mouse_8009_set_cpi1 
+051e c001bd88 beq mouse_dpi_level4 ,mouse_set_cpi2 
+051f 20203d8a branch mouse_set_cpi1 
+
+p_mouse_8009_set_cpi1:
+0520 7046b500 jam 0 ,mem_mouse_cpi_count 
+0521 20203dc1 branch mouse_p3205_dpi + 3 
+
+p_mouse_seting_ka8_dpi:
+0522 6800c77a fetch 1 ,mem_mouse_dpi 
+0523 205a0518 call p_mouse_3065xy_dpi_recount ,blank 
+0524 6800c77a fetch 1 ,mem_mouse_dpi 
+0525 c000bd88 beq mouse_dpi_level2 ,mouse_set_cpi2 
+0526 c0018528 beq mouse_dpi_level4 ,p_mouse_ka8_set_cpi3 
+0527 20203d8e branch mouse_set_cpi4 
+
+p_mouse_ka8_set_cpi3:
+0528 58000005 setarg 5 
+0529 20203dbe branch mouse_p3205_dpi 
+
+p_mouse_motion:
+052a 78547c00 disable user 
+052b 58000000 setarg 0 
+052c 6003469b store 6 ,mem_mouse_x 
+052d 2040055d call p_mouse_cheak_sensor_data 
+052e 20404079 call mouse_zwheel 
+052f 2040407e call mouse_t_zwheel 
+0530 20400537 call p_mouse_key 
+0531 24340534 nbranch p_mouse_motion_nodata ,user 
+0532 20400778 call p_drawing_optima 
+0533 20203fa0 branch mouse_motion + 9 
+
+p_mouse_motion_nodata:
+0534 20400781 call p_drawing_optima_init 
+0535 704b3700 jam 0 ,mem_low_power_check_count 
+0536 20600000 rtn 
+
+p_mouse_key:
+0537 20400539 call p_mouse_check_key_gpio 
+0538 2020409a branch mouse_key + 1 
+
+p_mouse_check_key_gpio:
+0539 da200000 arg 0 ,rega 
+053a 2040053c call p_mouse_check_lkey_gpio 
+053b 2020408e branch mouse_check_key_gpio_output 
+
+p_mouse_check_lkey_gpio:
+053c 6808c6e2 fetcht 1 ,mem_lbutton_gpio 
+053d 20400555 call p_gpio_set_input_pu 
+053e 6808c6e2 fetcht 1 ,mem_lbutton_gpio 
+053f 2040681d call gpio_get_bit 
+0540 7920a200 setflag true ,0 ,rega 
+
+p_mouse_check_rkey_gpio:
+0541 6808c6e3 fetcht 1 ,mem_rbutton_gpio 
+0542 20400555 call p_gpio_set_input_pu 
+0543 6808c6e3 fetcht 1 ,mem_rbutton_gpio 
+0544 2040681d call gpio_get_bit 
+0545 7920a201 setflag true ,1 ,rega 
+
+p_mouse_check_mkey_gpio:
+0546 6808c6e4 fetcht 1 ,mem_mbutton_gpio 
+0547 2040054c call p_gpio_set_input_pd 
+0548 6808c6e4 fetcht 1 ,mem_mbutton_gpio 
+0549 2040681d call gpio_get_bit 
+054a 7d20a202 nsetflag true ,2 ,rega 
+054b 20600000 rtn 
+
+p_gpio_set_input_pd:
+054c 793f8407 set0 gpio_active_bit ,temp 
+054d d8a08078 arg core_gpio_pu0 ,contw 
+054e 20406830 call gpio_set_bit 
+054f 79200407 set1 gpio_active_bit ,temp 
+
+p_gpio_set_input_pd4:
+0550 d8a0807c arg core_gpio_pd0 ,contw 
+0551 20406830 call gpio_set_bit 
+0552 793f8407 set0 gpio_active_bit ,temp 
+0553 d8a08070 arg core_gpio_oe0 ,contw 
+0554 20206830 branch gpio_set_bit 
+
+p_gpio_set_input_pu:
+0555 79200407 set1 gpio_active_bit ,temp 
+
+p_gpio_set_input_pu1:
+0556 d8a08078 arg core_gpio_pu0 ,contw 
+0557 20406830 call gpio_set_bit 
+0558 793f8407 set0 gpio_active_bit ,temp 
+0559 20200550 branch p_gpio_set_input_pd4 
+
+p_mouse_select_device_button_gpio_set_suspend:
+055a 6808c6ed fetcht 1 ,mem_config_select_device_button_gpio 
+
+p_mouse_set_gpio_suspend:
+055b 793f8407 set0 gpio_active_bit ,temp 
+055c 20200556 branch p_gpio_set_input_pu1 
+
+p_mouse_cheak_sensor_data:
+055d 6800c6e0 fetch 1 ,mem_config_sensor_type 
+
+p_mouse_p32xx_sensor_motion:
+055e 20403fc0 call mouse_clear_sensor_data 
+055f 78547c00 disable user 
+0560 20203fe7 branch mouse_p32xx_sensor_motion_2 
+
+p_mouse_bb_event_discovery_btn:
+0561 204004ca call p_mouse_multi_led_off_poweron2s 
+0562 204004b9 call p_mouse_null_enter_hibernate_disable 
+0563 280ffe26 isolate1 mark_24g ,mark 
+0564 2040819c call p_g24_check_51cmd_stop_24g ,true 
+0565 2020426d branch mouse_bb_event_discovery_btn + 1 
+
+p_le_addr_random_config:
+0566 7011c581 jam zcode_81 ,mem_zcode_temp_param0 
+0567 20200757 branch p_zcode_entrance 
+
+p_mouse_start_discovery:
+0568 7011c550 jam zcode_50 ,mem_zcode_temp_param0 
+0569 20200757 branch p_zcode_entrance 
+
+p_mouse_load_random_addr_increase_count:
+056a 2040036c call p_flash_release_deep_power_down 
+056b d8400002 arg 2 ,temp 
+056c da2047c2 arg mem_random_addr_increase_count ,rega 
+056d da40005f arg mouse_random_addr_count_eeprom_offset ,regb 
+056e 6801c700 fetch 3 ,mem_flash_base 
+056f 9a40fe00 iadd regb ,pdata 
+0570 20206562 branch spid_read_flash 
+
+p_mouse_load_fast_conn_flag:
+0571 2040036c call p_flash_release_deep_power_down 
+0572 d8400001 arg 1 ,temp 
+0573 da204d32 arg mem_mouse_fast_conn_flag ,rega 
+0574 da400064 arg mouse_fast_conn_flag_offset ,regb 
+0575 6801c700 fetch 3 ,mem_flash_base 
+0576 9a40fe00 iadd regb ,pdata 
+0577 20206562 branch spid_read_flash 
+
+p_le_adv_data_update:
+0578 d8a0437b arg mem_le_adv_data + 11 ,contw 
+0579 df200013 arg 19 ,loopcnt 
+057a 20407f01 call memcpy 
+057b 202057b8 branch le_modified_name_adv 
+
+p_mouse_stop_discovery:
+057c 58000000 setarg 0 
+057d 600146ac store 2 ,mem_mouse_discovery_timer 
+057e 204002fb call p_mouse_sensor_poweron 
+057f 6800c092 fetch 1 ,mem_device_option 
+0580 2feffe01 isolate1 mode_4_mouse ,pdata 
+0581 2040c2d4 call mouse_stop_le_adv ,true 
+0582 6800c092 fetch 1 ,mem_device_option 
+0583 2feffe00 isolate1 mode_3_mouse ,pdata 
+0584 2040c2d7 call mouse_stop_bt3_discovery ,true 
+0585 202004fd branch p_mouse_discovey_led_blink_off 
+
+p_le_slave_match:
+0586 6800c50f fetch 1 ,mem_le_md_count 
+0587 1fe0fe01 pincrease 1 
+0588 6000c50f store 1 ,mem_le_md_count 
+0589 c0065395 beq le_md_max_count ,le_slave_cont 
+058a 204055aa call le_acknowledge 
+058b 2040561e call le_prepare_tx 
+058c 204006fa call power_ctrl_start 
+058d 2020538f branch le_slave_match + 7 
+
+p_le_next_adv_channel:
+058e 68008016 fetch 1 ,mem_le_ch_mapped 
+058f 1fe0fe01 increase 1 ,pdata 
+0590 60008016 store 1 ,mem_le_ch_mapped 
+0591 c1940000 rtnne 40 
+0592 70001625 jam 37 ,mem_le_ch_mapped 
+0593 20600000 rtn 
+
+p_le_receive_skip:
+0594 204029bb call save_rssi 
+0595 20400220 call p_rssi_signal 
+0596 202054a3 branch le_receive_skip + 2 
+
+p_le_update_param:
+0597 7011c540 jam zcode_40 ,mem_zcode_temp_param0 
+0598 20200757 branch p_zcode_entrance 
+
+p_le_update_channel_map:
+0599 7011c541 jam zcode_41 ,mem_zcode_temp_param0 
+059a 20200757 branch p_zcode_entrance 
+
+p_le_prepare_tx:
+059b 68008456 fetch 1 ,mem_le_arq 
+059c c28285af bbit1 wak ,p_le_prepare_tx_wak 
+059d 204006ec call power_ctrl_pac_succ_incrs 
+059e 6800c78e fetch 1 ,mem_empty_count 
+059f 243a05a5 nbranch p_le_send_empyt ,blank 
+05a0 6800843f fetch 1 ,mem_le_state 
+05a1 c30205a9 bbit0 lestate_encryption ,p_le_tx_4 
+05a2 680082da fetch 1 ,mem_le_rxbuf + 1 
+05a3 203a05a9 branch p_le_tx_4 ,blank 
+05a4 20205664 branch le_send_empty 
+
+p_le_send_empyt:
+05a5 6800c78e fetch 1 ,mem_empty_count 
+05a6 1fe0ffff increase -1 ,pdata 
+05a7 6000c78e store 1 ,mem_empty_count 
+05a8 20205664 branch le_send_empty 
+
+p_le_tx_4:
+05a9 6800c4c4 fetch 1 ,mem_le_pairing_state 
+05aa c08285ac bne flag_le_pairing_after_auth ,p_in_le_tx_4 
+05ab 70478e03 jam 3 ,mem_empty_count 
+
+p_in_le_tx_4:
+05ac 20405892 call le_fifo_check_nearly_full 
+05ad 205a03c0 call p_mouse_data_pull ,blank 
+05ae 20205622 branch le_prepare_tx + 4 
+
+p_le_prepare_tx_wak:
+05af 204005b1 call p_le_check_tx_retransmit_setmd 
+05b0 202005bd branch p_le_power_ctrl_pac_succ_decrs 
+
+p_le_check_tx_retransmit_setmd:
+05b1 6800c6c5 fetch 1 ,mem_le_connect_status_flag 
+05b2 1fe17e03 and pdata ,0x03 ,pdata 
+05b3 c1818000 rtnne 0x03 
+05b4 6800c7c1 fetch 1 ,mem_mouse_data_queue_num 
+05b5 207a0000 rtn blank 
+05b6 6800c3dd fetch 1 ,mem_le_txlen 
+05b7 207a0000 rtn blank 
+05b8 6800c3dc fetch 1 ,mem_le_txheader 
+05b9 79207e04 set1 md ,pdata 
+05ba 6000c3dc store 1 ,mem_le_txheader 
+05bb 20405650 call le_set_md 
+05bc 20600000 rtn 
+
+p_le_power_ctrl_pac_succ_decrs:
+05bd 202006f0 branch power_ctrl_pac_succ_decrs 
+
+p_mouse_le_reconn_write_enable_timer_reinit:
+05be 6800c79f fetch 1 ,mem_mouse_le_reconnect_flag 
+05bf 207a0000 rtn blank 
+05c0 6800c6c5 fetch 1 ,mem_le_connect_status_flag 
+05c1 1fe17e03 and pdata ,0x03 ,pdata 
+05c2 c1018000 rtneq 0x03 
+05c3 7046c601 jam 1 ,mem_le_start_encrypt_timer 
+05c4 20600000 rtn 
+
+p_le_parse:
+05c5 c6078000 rtnmark1 mark_old_packet 
+05c6 20405890 call le_fifo_check_full 
+05c7 247a0000 nrtn blank 
+05c8 680082d9 fetch 1 ,mem_le_rxbuf 
+05c9 1fe17e03 and pdata ,0x3 ,pdata 
+05ca 6000c50c store 1 ,mem_le_packet_llid 
+05cb e8c08000 ifetch 1 ,contr 
+05cc 1fe17e1f and pdata ,0x1f ,pdata 
+05cd 6000c50b store 1 ,mem_le_packet_size 
+05ce 207a0000 rtn blank 
+05cf 18c27e00 copy contr ,pdata 
+05d0 6001450d store 2 ,mem_le_payload_ptr 
+05d1 6800c50c fetch 1 ,mem_le_packet_llid 
+05d2 c00185d4 beq llid_le_ll ,p_le_parse_ll 
+05d3 2020568d branch le_parse_l2cap 
+
+p_le_parse_ll:
+05d4 680082db fetch 1 ,mem_le_rxbuf + 2 
+05d5 c00085d7 beq ll_channel_map_req ,p_le_parse_channel_map_req 
+05d6 20205c65 branch le_parse_ll + 1 
+
+p_le_parse_channel_map_req:
+05d7 e8c28000 ifetch 5 ,contr 
+05d8 6002c3ce store 5 ,mem_le_new_map 
+05d9 e8c10000 ifetch 2 ,contr 
+05da 6001045f store 2 ,mem_le_instant 
+05db 20205c8a branch le_parse_channel_map_req + 7 
+
+p_le_parse_l2cap:
+05dc e8c10000 ifetch 2 ,contr 
+05dd c00205e0 beq le_l2cap_cid_att ,p_le_parse_att 
+05de c003060d beq le_l2cap_cid_smp ,p_le_parse_smp 
+05df 20205698 branch le_parse_l2cap + 11 
+
+p_le_parse_att:
+05e0 20407ea5 call store_contr 
+05e1 204005be call p_mouse_le_reconn_write_enable_timer_reinit 
+05e2 20407e9f call get_contr 
+05e3 e8c18000 ifetch 3 ,contr 
+05e4 60018477 store 3 ,mem_le_att_opcode 
+05e5 c00805ef beq attop_read_by_group_type_request ,p_le_parse_att_read_by_group_type_request 
+05e6 1fec8400 rshift8 pdata ,temp 
+05e7 18467c24 sub temp ,0x24 ,null 
+05e8 202105fd branch p_le_parse_att1 ,positive 
+05e9 d84047c6 arg mem_mouse_le_uuid_sup ,temp 
+05ea 600944bc storet 2 ,mem_ui_le_uuid_table 
+05eb 204058ad call le_parse_att + 2 
+05ec 58008e7a setarg 0x8e7a 
+05ed 600144bc store 2 ,mem_ui_le_uuid_table 
+05ee 20600000 rtn 
+
+p_le_parse_att_read_by_group_type_request:
+05ef 204059fa call le_parse_att_read_by_group_type_request 
+05f0 20405879 call le_fifo_get_last_tx_ptr 
+05f1 18c08c07 increase 7 ,contr 
+05f2 e8c08000 ifetch 1 ,contr 
+05f3 c1888000 rtnne attop_read_by_group_type_response 
+05f4 18c08c05 increase 5 ,contr 
+05f5 e8c10000 ifetch 2 ,contr 
+05f6 d8401812 arg uuid_service_hids ,temp 
+05f7 98467c00 isub temp ,null 
+05f8 24628000 nrtn zero 
+05f9 18c08dfc increase -4 ,contr 
+05fa 5800002b setarg 0x2b 
+05fb e0c10000 istore 2 ,contr 
+05fc 20600000 rtn 
+
+p_le_parse_att1:
+05fd c00505ff beq attop_read_request ,p_le_parse_att_read_request 
+05fe 202058ad branch le_parse_att + 2 
+
+p_le_parse_att_read_request:
+05ff 68090478 fetcht 2 ,mem_le_att_handle 
+0600 6800c4e9 fetch 1 ,mem_le_configuration 
+0601 c2818606 bbit1 bit_ble_read_auth ,p_le_send_att_read_response_check_auth 
+
+p_le_send_att_read_response:
+0602 68010478 fetch 2 ,mem_le_att_handle 
+0603 c009da76 beq 0x13 ,le_send_att_error_response_notfound 
+0604 68090478 fetcht 2 ,mem_le_att_handle 
+0605 202059bf branch le_send_att_read_response 
+
+p_le_send_att_read_response_check_auth:
+0606 680144fa fetch 2 ,mem_le_pairing_handle 
+0607 98467c00 isub temp ,null 
+0608 24228602 nbranch p_le_send_att_read_response ,zero 
+0609 20405a42 call le_check_encrypt_state 
+060a 24340602 nbranch p_le_send_att_read_response ,user 
+060b 70047a05 jam att_err_insufficient_authentication ,mem_le_err_code 
+060c 20205a77 branch le_send_att_error_response 
+
+p_le_parse_smp:
+060d e8c08000 ifetch 1 ,contr 
+060e c0008611 beq smp_pairing_request ,p_le_parse_smp_pairing_request 
+060f c0028613 beq smp_pairing_failed ,p_le_parse_smp_pairing_failed 
+0610 20205af6 branch le_parse_smp + 2 
+
+p_le_parse_smp_pairing_request:
+0611 704b6201 jam 1 ,mem_le_send_security_request_flag 
+0612 20205b09 branch le_parse_smp_pairing_request 
+
+p_le_parse_smp_pairing_failed:
+0613 7011c582 jam zcode_82 ,mem_zcode_temp_param0 
+0614 20200757 branch p_zcode_entrance 
+
+p_le_adv_not_match:
+0615 68008016 fetch 1 ,mem_le_ch_mapped 
+0616 c093d6f2 bne 39 ,le_adv_loop 
+0617 2040061b call p_le_adv_random_delay 
+0618 d8e00000 arg le_adv_interval_timer ,queue 
+0619 68014482 fetch 2 ,mem_le_adv_interval 
+061a 20207f08 branch timer_init 
+
+p_le_adv_random_delay:
+061b 180a7e00 random pdata 
+061c d84001ff arg 0x1ff ,temp 
+061d 98417e00 iand temp ,pdata 
+061e 1fe0fefa add pdata ,250 ,pdata 
+061f 20203cbe branch delay 
+
+p_le_lpm_setmult:
+0620 7855fc00 disable wake 
+0621 20370623 branch p_le_lpm_set_mult_attempt ,attempt 
+0622 2436d806 nbranch le_lpm_lost ,match 
+
+p_le_lpm_set_mult_attempt:
+0623 20402bcb call lpm_match 
+0624 680140c1 fetch 2 ,mem_rx_window_sniff 
+0625 6001044d store 2 ,mem_le_receive_window 
+0626 6800c6c5 fetch 1 ,mem_le_connect_status_flag 
+0627 2fe00603 compare 3 ,pdata ,3 
+0628 2420abde nbranch lpm_mult_short ,true 
+0629 202057fb branch le_lpm_set_mult_attempt + 3 
+
+p_le_mouse_bb_event_connect_complete:
+062a 6800c79f fetch 1 ,mem_mouse_le_reconnect_flag 
+062b 247a0000 nrtn blank 
+062c 68008478 fetch 1 ,mem_le_att_handle 
+062d 1fe67e1a sub pdata ,26 ,pdata 
+062e 24628000 nrtn zero 
+062f 20203d60 branch mouse_le_write_enable 
+
+p_twspi_reset:
+0630 68108077 hfetch 1 ,core_gpio_out3 
+0631 1fe17efd and_into 0xfd ,pdata 
+0632 60108077 hstore 1 ,core_gpio_out3 
+0633 68188073 hfetcht 1 ,core_gpio_oe3 
+0634 18418402 or_into 0x2 ,temp 
+0635 60188073 hstoret 1 ,core_gpio_oe3 
+0636 204063ee call twspi_disable 
+0637 184104fd and_into 0xfd ,temp 
+0638 2000000d nop 13 
+0639 2040063d call p_twspi_enable 
+063a 60188073 hstoret 1 ,core_gpio_oe3 
+063b 20600000 rtn 
+
+p_spid_init:
+063c 204064dd call spid_init_common 
+
+p_twspi_enable:
+063d 68108081 hfetch 1 ,core_gpio_sel1 
+063e 79207e00 set1 0 ,pdata 
+063f 793ffe01 set0 1 ,pdata 
+0640 793ffe03 set0 3 ,pdata 
+0641 60108081 hstore 1 ,core_gpio_sel1 
+0642 20600000 rtn 
+
+p_page_wait_fhs_reply_ok:
+0643 7011c500 jam zcode_00 ,mem_zcode_temp_param0 
+0644 20200757 branch p_zcode_entrance 
+
+p_role_switch_master:
+0645 204021c9 call role_switch_check 
+0646 24740000 nrtn user 
+
+p_wait_role_switch_anchor:
+0647 78547c00 disable user 
+0648 70001120 jam param_newconnto ,mem_newconnto_counter 
+0649 793f800b set0 mark_fhs_already_good ,mark 
+064a 793f802d set0 mark_role_switch_receive_fhs ,mark 
+
+p_roles_waitfhs_loop:
+064b 20402a4f call rf_setup_time_master_slot 
+064c 204022e6 call master_recv_packet 
+064d c5058652 bmark1 mark_fhs_already_good ,p_roles_replyto_fhs 
+064e 20402455 call new_conn_timeout 
+064f 243a064b nbranch p_roles_waitfhs_loop ,blank 
+0650 c516865b bmark1 mark_role_switch_receive_fhs ,p_roles_replyto_fhs1 
+0651 202021ec branch role_switch_fail_master 
+
+p_roles_replyto_fhs:
+0652 20402a4d call rf_setup_time_slave_slot 
+0653 d8200010 arg type_id ,type 
+0654 204022dc call master_send_packet 
+0655 7920002d set1 mark_role_switch_receive_fhs ,mark 
+0656 793f800b set0 mark_fhs_already_good ,mark 
+0657 68008077 fetch 1 ,mem_amaddr 
+0658 98000800 iforce am_addr 
+0659 70001102 jam 2 ,mem_newconnto_counter 
+065a 2020064b branch p_roles_waitfhs_loop 
+
+p_roles_replyto_fhs1:
+065b 68020165 fetch 4 ,mem_clke_bt 
+065c 1fe0fe08 pincrease 8 
+065d 60020165 store 4 ,mem_clke_bt 
+065e 202021f8 branch roles_replyto_fhs + 4 
+
+p_process_dmh:
+065f c516264d bmark1 mark_first_packet ,end_of_packet 
+0660 2020258f branch process_dmh + 1 
+
+p_quit_connection_cont:
+0661 204033af call app_disconn_reason_collect_bt 
+0662 204026e9 call sniff_exit 
+0663 700a9902 jam bt_evt_bb_disconnected ,mem_fifo_temp 
+0664 20407d86 call ui_ipc_send_event 
+0665 20405cf7 call init_lmp_work 
+0666 20404d6b call l2cap_init_work 
+0667 2020246e branch quit_connection_cont + 8 
+
+p_prepare_tx:
+0668 68008030 fetch 1 ,mem_state 
+0669 2feffe00 isolate1 state_inconn ,pdata 
+066a 2040866c call p_bt_power_ctrl ,true 
+066b 2020248a branch prepare_tx + 1 
+
+p_bt_power_ctrl:
+066c 68008047 fetch 1 ,mem_arq 
+066d 2feffe03 isolate1 wack ,pdata 
+066e 204086f0 call power_ctrl_pac_succ_decrs ,true 
+066f 244086ec ncall power_ctrl_pac_succ_incrs ,true 
+0670 202006fa branch power_ctrl_start 
+
+p_slave_conn_recv_packet:
+0671 204024f0 call slave_receive_master_slot 
+0672 242c28f9 nbranch shutdown_radio ,sync 
+0673 204029bb call save_rssi 
+0674 20400220 call p_rssi_signal 
+0675 20202518 branch slave_conn_recv_packet + 4 
+
+p_lpm_dispatch:
+0676 c6130000 rtnmark1 mark_24g 
+0677 20402afa call lpo_calibration 
+0678 6801c16f fetch 3 ,mem_clks_per_lpo 
+0679 207a0000 rtn blank 
+067a 6800c091 fetch 1 ,mem_lpm_mode 
+067b 207a0000 rtn blank 
+067c 6800c65a fetch 1 ,mem_ssp_enable 
+067d 203a0680 branch p_lpm_dispatch_next ,blank 
+067e 6800c5b1 fetch 1 ,mem_sp_local_key_invalid 
+067f 207a0000 rtn blank 
+
+p_lpm_dispatch_next:
+0680 6800c4c0 fetch 1 ,mem_le_sc_calc 
+0681 247a0000 nrtn blank 
+0682 20402c3a call lpm_check_wake_lock 
+0683 247a0000 nrtn blank 
+0684 6800c040 fetch 1 ,mem_context 
+0685 2fe00e03 compare 3 ,pdata ,0x7 
+0686 2420ab9d nbranch lpm_dispatch_unconn ,true 
+0687 68014042 fetch 2 ,mem_context + coffset_tsniff 
+0688 d840ffff arg 0xffff ,temp 
+0689 98467c00 isub temp ,null 
+068a 20628000 rtn zero 
+068b 20202b7d branch lpm_dispatch_next + 9 
+
+p_lpm_set_mult:
+068c 7855fc00 disable wake 
+068d 68008030 fetch 1 ,mem_state 
+068e c4008000 rtnbit0 state_insniff 
+068f 2436abd0 nbranch lpm_not_match ,match 
+0690 20402bcb call lpm_match 
+0691 680140c1 fetch 2 ,mem_rx_window_sniff 
+0692 6001003e store 2 ,mem_rx_window 
+0693 68008047 fetch 1 ,mem_arq 
+0694 c281abde bbit1 wack ,lpm_mult_short 
+0695 c586abde bmark0 mark_lpm_mult_enable ,lpm_mult_short 
+0696 20405274 call l2cap_malloc_is_fifo_empty 
+0697 243a2bde nbranch lpm_mult_short ,blank 
+0698 205a069a call p_lpm_set_attemp_timeout ,blank 
+0699 20202bbe branch lpm_set_mult + 13 
+
+p_lpm_set_attemp_timeout:
+069a 70008a01 jam 1 ,mem_current_sniff_attempt 
+069b 70008b00 jam 0 ,mem_current_sniff_timeout 
+069c 20600000 rtn 
+
+p_mouse_bb_disconnected:
+069d 7011c510 jam zcode_10 ,mem_zcode_temp_param0 
+069e 20200757 branch p_zcode_entrance 
+
+p_hid_rx_process:
+069f 7011c511 jam zcode_11 ,mem_zcode_temp_param0 
+06a0 20200757 branch p_zcode_entrance 
+
+p_parse_lmp_accepted:
+06a1 68008552 fetch 1 ,mem_rxbuf + 1 
+06a2 600084c9 store 1 ,mem_lmi_accepted_opcode 
+06a3 c00986a5 beq lmp_switch_req ,p_parse_lmp_accepted_switch 
+06a4 20205db4 branch parse_lmp_accepted + 3 
+
+p_parse_lmp_accepted_switch:
+06a5 20405dcf call parse_lmp_accepted_switch 
+06a6 704aff01 jam 1 ,mem_bt_rcvd_switch_req_accept 
+06a7 6800cb01 fetch 1 ,mem_bt_send_lmp_setup_complete 
+06a8 207a0000 rtn blank 
+06a9 704b0102 jam 2 ,mem_bt_send_lmp_setup_complete 
+06aa 20600000 rtn 
+
+p_send_lmp:
+06ab 7011c520 jam zcode_20 ,mem_zcode_temp_param0 
+06ac 20200757 branch p_zcode_entrance 
+
+p_process_conn_sm:
+06ad 204062bc call lmo_fifo_check 
+06ae 247a0000 nrtn blank 
+
+p_process_conn_sm_continue:
+06af 68008055 fetch 1 ,mem_conn_sm 
+06b0 207a0000 rtn blank 
+06b1 c00206cf beq conn_sm_send_conn_req ,p_host_create_conn_send_conn_req 
+06b2 c00806b4 beq conn_sm_wait_switch_after_host_connection ,p_host_creat_conn_wait_switch 
+06b3 20206320 branch process_conn_sm_continue + 2 
+
+p_host_creat_conn_wait_switch:
+06b4 6800c55b fetch 1 ,mem_switch_flag 
+06b5 c1000000 rtneq switch_flag_init 
+06b6 c00086b8 beq switch_flag_accept ,p_host_create_conn_switch_accept 
+06b7 2020635f branch host_creat_conn_wait_switch + 3 
+
+p_host_create_conn_switch_accept:
+06b8 20748000 rtn master 
+
+p_host_create_conn_auth_pair:
+06b9 6800816d fetch 1 ,mem_connection_options 
+06ba c28006bc bbit1 connection_auth ,p_host_create_conn_auth_pair_true 
+06bb 20206399 branch host_create_conn_auth_pair + 1 
+
+p_host_create_conn_auth_pair_true:
+06bc 6800cb01 fetch 1 ,mem_bt_send_lmp_setup_complete 
+06bd c000e39d beq 1 ,host_create_conn_auth_pair_true 
+06be 6800c1bd fetch 1 ,mem_link_key_exists 
+06bf 203a63a9 branch host_create_conn_auth_pair_nokey ,blank 
+06c0 680084d1 fetch 1 ,mem_lmp_conn_state 
+06c1 c4018000 rtnbit0 sent_setup_complete 
+06c2 c4010000 rtnbit0 received_setup_complete 
+06c3 6800cb00 fetch 1 ,mem_bt_send_max_slot_req_accept_after_switch 
+06c4 207a0000 rtn blank 
+06c5 704b0000 jam 0 ,mem_bt_send_max_slot_req_accept_after_switch 
+06c6 680204e9 fetch 4 ,mem_aurand_send_delay_time 
+06c7 d8400014 arg 20 ,temp 
+06c8 98408400 iadd temp ,temp 
+06c9 1c427e00 copy clkn_bt ,pdata 
+06ca 98467c00 isub temp ,null 
+06cb 242106cd nbranch p_bt_send_max_slot_req_accept_after_switch_wait ,positive 
+06cc 20206349 branch host_create_conn_auth 
+
+p_bt_send_max_slot_req_accept_after_switch_wait:
+06cd 704b0001 jam 1 ,mem_bt_send_max_slot_req_accept_after_switch 
+06ce 20600000 rtn 
+
+p_host_create_conn_send_conn_req:
+06cf 70480914 jam 20 ,mem_mouse_send_switch_req_timer 
+06d0 2020636f branch host_create_conn_send_conn_req 
+
+p_check_51cmd_once_continue:
+06d1 204062bc call lmo_fifo_check 
+06d2 243a7ddb nbranch check_51cmd_restore ,blank 
+06d3 68008a99 fetch 1 ,mem_fifo_temp 
+06d4 c584fdd6 bmark0 mark_context ,check_51cmd_check_idle 
+06d5 c00f86d9 beq bt_cmd_store_reconn_info_le ,p_flash_store_le_reconn_info 
+06d6 c01006dc beq bt_cmd_store_reconn_info_bt ,p_flash_store_bd_reconn_info 
+06d7 c00906e6 beq bt_cmd_le_update_conn ,p_check_51cmd_ble_update_connect_param 
+06d8 20207dca branch check_51cmd_once_continue + 2 
+
+p_flash_store_le_reconn_info:
+06d9 70018534 jam rec_4_mode ,mem_record_bt_mode 
+06da 6803044f fetch 6 ,mem_le_plap 
+06db 202006de branch p_flash_store_reconn_info 
+
+p_flash_store_bd_reconn_info:
+06dc 70018533 jam rec_3_mode ,mem_record_bt_mode 
+06dd 68030040 fetch 6 ,mem_plap 
+
+p_flash_store_reconn_info:
+06de 60030186 store 6 ,mem_temp_lap 
+
+p_mouse_store_remote_bdaddr:
+06df 680246d3 fetch mouse_flag_len ,mem_mouse_flag 
+06e0 c4038000 rtnbit0 mouse_store_eeprom_flag 
+06e1 d8e00007 arg mouse_store_eeprom_flag ,queue 
+06e2 204043d2 call mouse_disable_function_flag 
+06e3 204042e8 call mouse_check_device_addr 
+
+p_mouse_unplug_clean_bdaddr:
+06e4 204042fb call mouse_before_store_reconn_info 
+06e5 20200328 branch p_mouse_store_flash_device_info 
+
+p_check_51cmd_ble_update_connect_param:
+06e6 20405890 call le_fifo_check_full 
+06e7 247a0000 nrtn blank 
+06e8 20205abf branch le_l2cap_tx_update_req 
+
+power_ctrl_pac_succ_cnt_init:
+06e9 704d2601 jam 1 ,mem_power_ctrl_level 
+06ea 704d2300 jam 0 ,mem_power_ctrl_pac_succ_cnt 
+06eb 20600000 rtn 
+
+power_ctrl_pac_succ_incrs:
+06ec 6800cd23 fetch 1 ,mem_power_ctrl_pac_succ_cnt 
+06ed 1fe0fe01 increase 1 ,pdata 
+06ee 6000cd23 store 1 ,mem_power_ctrl_pac_succ_cnt 
+06ef 20600000 rtn 
+
+power_ctrl_pac_succ_decrs:
+06f0 6800cd23 fetch 1 ,mem_power_ctrl_pac_succ_cnt 
+06f1 1fe67c02 sub pdata ,2 ,null 
+06f2 244106f8 ncall power_ctrl_pac_succ_cnt_reinit ,positive 
+06f3 6800cd23 fetch 1 ,mem_power_ctrl_pac_succ_cnt 
+06f4 c1000000 rtneq 0 
+06f5 1fe0ffff increase -1 ,pdata 
+06f6 6000cd23 store 1 ,mem_power_ctrl_pac_succ_cnt 
+06f7 20600000 rtn 
+
+power_ctrl_pac_succ_cnt_reinit:
+06f8 704d2303 jam 3 ,mem_power_ctrl_pac_succ_cnt 
+06f9 20600000 rtn 
+
+power_ctrl_start:
+06fa 68014682 fetch 2 ,mem_ui_state_map 
+06fb c3858000 rtnbit1 ui_state_ble_adv 
+06fc c3838000 rtnbit1 ui_state_bt_reconnect 
+06fd c3830000 rtnbit1 ui_state_bt_discovery 
+06fe da204cac arg mem_rssi_signal_buf ,rega 
+06ff 20400263 call p_rssi_average 
+0700 6008cd24 storet 1 ,mem_rssi_avg_received 
+0701 58000082 setarg rssi_dis_max_24g 
+0702 c5130704 bmark1 mark_24g ,power_ctrl_start_next 
+0703 58000080 setarg rssi_dis_max_ble 
+
+power_ctrl_start_next:
+0704 98467c00 isub temp ,null 
+0705 2421071c nbranch power_ctrl_txpower_incrs_force ,positive 
+0706 6800cd23 fetch 1 ,mem_power_ctrl_pac_succ_cnt 
+0707 1fe67c02 sub pdata ,2 ,null 
+0708 2421070c nbranch power_ctrl_txpower_decrs_check ,positive 
+0709 6800cd23 fetch 1 ,mem_power_ctrl_pac_succ_cnt 
+070a c000071d beq 0 ,power_ctrl_txpower_incrs 
+070b 20600000 rtn 
+
+power_ctrl_txpower_decrs_check:
+070c 6800cd23 fetch 1 ,mem_power_ctrl_pac_succ_cnt 
+070d c1900000 rtnne 32 
+070e 704d2300 jam 0 ,mem_power_ctrl_pac_succ_cnt 
+
+power_ctrl_txpower_decrs:
+070f 6808cd24 fetcht 1 ,mem_rssi_avg_received 
+0710 58000077 setarg rssi_dis_min_24g 
+0711 c5130713 bmark1 mark_24g ,power_ctrl_txpower_decrs_next 
+0712 58000075 setarg rssi_dis_min_ble 
+
+power_ctrl_txpower_decrs_next:
+0713 98467c00 isub temp ,null 
+0714 24610000 nrtn positive 
+0715 6800cd26 fetch 1 ,mem_power_ctrl_level 
+0716 c0000724 beq 0 ,power_ctrl_decrs_level0 
+0717 1fe0ffff increase -1 ,pdata 
+0718 6000cd26 store 1 ,mem_power_ctrl_level 
+0719 c0000724 beq 0 ,power_ctrl_decrs_level0 
+
+power_ctrl_decrs_level1:
+
+power_ctrl_incrs_level1:
+071a 7041de00 jam tx_power_0db ,mem_tx_power 
+071b 20600000 rtn 
+
+power_ctrl_txpower_incrs_force:
+071c 704d2300 jam 0 ,mem_power_ctrl_pac_succ_cnt 
+
+power_ctrl_txpower_incrs:
+071d 6800cd26 fetch 1 ,mem_power_ctrl_level 
+071e c0010722 beq 2 ,power_ctrl_incrs_level2 
+071f 1fe0fe01 increase 1 ,pdata 
+0720 6000cd26 store 1 ,mem_power_ctrl_level 
+0721 c000871a beq 1 ,power_ctrl_incrs_level1 
+
+power_ctrl_incrs_level2:
+0722 7041de02 jam tx_power_5db ,mem_tx_power 
+0723 20600000 rtn 
+
+power_ctrl_decrs_level0:
+0724 7041de04 jam tx_power_f5db ,mem_tx_power 
+0725 20600000 rtn 
+
+p_set_freq_tx:
+0726 60088017 storet 1 ,mem_last_freq 
+0727 1840a200 add temp ,0 ,rega 
+0728 20402981 call rf_write_freq 
+0729 58000500 setarg param_pll_setup 
+072a 20402a8f call sleep 
+
+p_rf_tx_enable:
+072b 70890601 jam 0x1 ,rfen_adc 
+072c 7089003c jam 0x3c ,rfen_rx 
+072d 708901e0 jam 0xe0 ,rfen_tx 
+072e 2000000a nop 10 
+072f 70890201 jam 0x01 ,rfen_mdm 
+0730 7089023d jam 0x3d ,rfen_mdm 
+0731 2000000a nop 10 
+0732 708903b7 jam 0xb7 ,rfen_sn 
+0733 2000000a nop 10 
+0734 7089027d jam 0x7d ,rfen_mdm 
+0735 6800c1de fetch 1 ,mem_tx_power 
+0736 c001073e beq tx_power_5db ,p_set_tx_power_5db 
+0737 c0020743 beq tx_power_f5db ,p_set_tx_power_f5db 
+0738 c0100752 beq tx_power_pair ,p_set_tx_power_pair 
+
+p_set_tx_power_0db:
+0739 20400748 call p_rx_low_sens 
+073a 708955d0 jam 0xd0 ,0x8955 
+073b 708956e0 jam 0xe0 ,0x8956 
+073c 7089586c jam 0x6c ,0x8958 
+073d 2020294b branch set_tx_power_0db 
+
+p_set_tx_power_5db:
+073e 2040074d call p_rx_high_sens 
+073f 708955d0 jam 0xd0 ,0x8955 
+0740 708956e0 jam 0xe0 ,0x8956 
+0741 7089583c jam 0x3c ,0x8958 
+0742 20202953 branch set_tx_power_5db 
+
+p_set_tx_power_f5db:
+0743 20400748 call p_rx_low_sens 
+0744 708955d0 jam 0xd0 ,0x8955 
+0745 708956c0 jam 0xc0 ,0x8956 
+0746 7089586c jam 0x6c ,0x8958 
+0747 2020295b branch set_tx_power_f5db 
+
+p_rx_low_sens:
+0748 70894c5b jam 0x5b ,0x894c 
+0749 70894d96 jam 0x96 ,0x894d 
+074a 70894e2c jam 0x2c ,0x894e 
+074b 70894f46 jam 0x46 ,0x894f 
+074c 20600000 rtn 
+
+p_rx_high_sens:
+074d 70894cfb jam 0xfb ,0x894c 
+074e 70894def jam 0xef ,0x894d 
+074f 70894eec jam 0xec ,0x894e 
+0750 70894f5e jam 0x5e ,0x894f 
+0751 20600000 rtn 
+
+p_set_tx_power_pair:
+0752 708956c2 jam 0xc2 ,0x8956 
+0753 708955d0 jam 0xd0 ,0x8955 
+0754 20600000 rtn 
+
+p_shutdown_radio:
+0755 18002a08 force 8 ,radio_ctrl 
+0756 202028fa branch shutdown_radio + 1 
+
+p_zcode_entrance:
+0757 680891c5 fetcht 1 ,mem_zcode_temp_param0 
+0758 18518400 rshift4 temp ,temp 
+0759 6800cb50 fetch 1 ,mem_zcode_current_number 
+075a 98467c00 isub temp ,null 
+075b 20228776 branch p_zcode_run ,zero 
+075c 6008cb50 storet 1 ,mem_zcode_current_number 
+075d 18408401 increase 1 ,temp 
+075e 58000100 setarg zcode_buff_size 
+075f 984f8400 imul32 temp ,temp 
+0760 6801cb51 fetch 3 ,mem_xip_flash_offset 
+0761 98467e00 isub temp ,pdata 
+0762 6809cb54 fetcht 3 ,mem_flash_start_addr 
+0763 9840fe00 iadd temp ,pdata 
+0764 1fe0fffb increase -5 ,pdata 
+0765 6001cb57 store 3 ,mem_flash_address 
+0766 2040036c call p_flash_release_deep_power_down 
+
+p_zcode_read_loop:
+0767 6801cb57 fetch 3 ,mem_flash_address 
+0768 d8400100 arg zcode_buff_size ,temp 
+0769 da201f00 arg mem_zcode_buff ,rega 
+076a 20406562 call spid_read_flash 
+076b 68021f00 fetch 4 ,mem_zcode_buff 
+076c 680a4b5a fetcht 4 ,mem_zcode_head 
+076d 98467c00 isub temp ,null 
+076e 24228767 nbranch p_zcode_read_loop ,zero 
+076f 20400336 call p_mouse_spi_init 
+0770 58001f00 setarg mem_zcode_buff 
+0771 60014199 store 2 ,mem_patch_ptr 
+0772 70419b40 jam zcode_code_size ,mem_patch_len 
+0773 204064ca call load_ucode 
+0774 58000000 setarg 0 
+0775 60024199 store 4 ,mem_patch_ptr 
+
+p_zcode_run:
+0776 680091c5 fetch 1 ,mem_zcode_temp_param0 
+0777 20200001 branch p_zcode 
+
+p_drawing_optima:
+0778 6802469b fetch 4 ,mem_mouse_x 
+0779 207a0000 rtn blank 
+077a 204007d8 call p_data_abs_check 
+077b 58000006 setarg 0x06 
+077c 204007cb call p_data_greater_than_check 
+077d 58000003 setarg 0x03 
+077e 204007d1 call p_data_less_than_check 
+077f 6800cb0b fetch 1 ,mem_mouse_asm_flag 
+0780 c0008784 beq 1 ,p_drawing_optima_modify 
+
+p_drawing_optima_init:
+0781 df200005 arg 5 ,loopcnt 
+0782 d8a04b0b arg mem_mouse_asm_flag ,contw 
+0783 20207ed4 branch clear_mem 
+
+p_drawing_optima_modify:
+0784 68014b0c fetch 2 ,mem_mouse_x_pre 
+0785 600111be store 2 ,mem_data_pre 
+0786 6801469b fetch 2 ,mem_mouse_x 
+0787 600111c0 store 2 ,mem_data_current 
+0788 20400797 call p_drawing_optima_data_x 
+0789 680111be fetch 2 ,mem_data_pre 
+078a 60014b0c store 2 ,mem_mouse_x_pre 
+078b 680111c0 fetch 2 ,mem_data_current 
+078c 6001469b store 2 ,mem_mouse_x 
+078d 68014b0e fetch 2 ,mem_mouse_y_pre 
+078e 600111be store 2 ,mem_data_pre 
+078f 6801469d fetch 2 ,mem_mouse_y 
+0790 600111c0 store 2 ,mem_data_current 
+0791 2040079f call p_drawing_optima_data_y 
+0792 680111be fetch 2 ,mem_data_pre 
+0793 60014b0e store 2 ,mem_mouse_y_pre 
+0794 680111c0 fetch 2 ,mem_data_current 
+0795 6001469d store 2 ,mem_mouse_y 
+0796 20600000 rtn 
+
+p_drawing_optima_data_x:
+0797 680111be fetch 2 ,mem_data_pre 
+0798 680911c0 fetcht 2 ,mem_data_current 
+0799 9840fe00 iadd temp ,pdata 
+079a 6808cd67 fetcht 1 ,mem_mouse_data_xtemp 
+079b 9840fe00 iadd temp ,pdata 
+079c 1fe10401 and pdata ,0x01 ,temp 
+079d 6008cd67 storet 1 ,mem_mouse_data_xtemp 
+079e 202007a7 branch p_drawing_optima_data 
+
+p_drawing_optima_data_y:
+079f 680111be fetch 2 ,mem_data_pre 
+07a0 680911c0 fetcht 2 ,mem_data_current 
+07a1 9840fe00 iadd temp ,pdata 
+07a2 6808cd68 fetcht 1 ,mem_mouse_data_ytemp 
+07a3 9840fe00 iadd temp ,pdata 
+07a4 1fe10401 and pdata ,0x01 ,temp 
+07a5 6008cd68 storet 1 ,mem_mouse_data_ytemp 
+07a6 202007a7 branch p_drawing_optima_data 
+
+p_drawing_optima_data:
+07a7 600191c2 store 3 ,mem_data_sum 
+07a8 2feffe10 isolate1 16 ,pdata 
+07a9 202087b1 branch p_data_sum_overflow ,true 
+07aa 680091c3 fetch 1 ,mem_data_sum + 1 
+07ab c07f87b8 beq 0xff ,p_data_sum_n 
+07ac 680091c2 fetch 1 ,mem_data_sum 
+
+p_data_store_pre:
+07ad 1fe37e00 rshift pdata ,pdata 
+07ae 600111be store 2 ,mem_data_pre 
+07af 600111c0 store 2 ,mem_data_current 
+07b0 20600000 rtn 
+
+p_data_sum_overflow:
+07b1 680091c3 fetch 1 ,mem_data_sum + 1 
+07b2 c00007b5 beq 0 ,p_data_sum_overflow_p 
+07b3 680191c2 fetch 3 ,mem_data_sum 
+07b4 202007ad branch p_data_store_pre 
+
+p_data_sum_overflow_p:
+07b5 7011c400 jam 0 ,mem_data_sum + 2 
+07b6 680091c2 fetch 1 ,mem_data_sum 
+07b7 202007ad branch p_data_store_pre 
+
+p_data_sum_n:
+07b8 680091c2 fetch 1 ,mem_data_sum 
+07b9 204007c3 call p_pdata_get_half 
+07ba 600091be store 1 ,mem_data_pre 
+07bb 600091c0 store 1 ,mem_data_current 
+07bc 203a07c1 branch p_data_zero ,blank 
+07bd 580000ff setarg 0xff 
+
+p_data_set_direction:
+07be 600091bf store 1 ,mem_data_pre + 1 
+07bf 600091c1 store 1 ,mem_data_current + 1 
+07c0 20600000 rtn 
+
+p_data_zero:
+07c1 58000000 setarg 0 
+07c2 202007be branch p_data_set_direction 
+
+p_pdata_get_half:
+07c3 1fe67e00 sub pdata ,0 ,pdata 
+07c4 60008aae store 1 ,mem_rega 
+07c5 68008aae fetch 1 ,mem_rega 
+07c6 1fe37e00 rshift pdata ,pdata 
+07c7 60008aae store 1 ,mem_rega 
+07c8 68008aae fetch 1 ,mem_rega 
+07c9 1fe67e00 sub pdata ,0 ,pdata 
+07ca 20600000 rtn 
+
+p_data_greater_than_check:
+07cb 9a267c00 isub rega ,null 
+07cc 242107d6 nbranch p_enable_asm ,positive 
+07cd 9a467c00 isub regb ,null 
+07ce 242107d6 nbranch p_enable_asm ,positive 
+
+p_disable_asm:
+07cf 704b0b00 jam 0 ,mem_mouse_asm_flag 
+07d0 20600000 rtn 
+
+p_data_less_than_check:
+07d1 9a267c00 isub rega ,null 
+07d2 24610000 nrtn positive 
+07d3 9a467c00 isub regb ,null 
+07d4 24610000 nrtn positive 
+07d5 202007cf branch p_disable_asm 
+
+p_enable_asm:
+07d6 704b0b01 jam 1 ,mem_mouse_asm_flag 
+07d7 20600000 rtn 
+
+p_data_abs_check:
+07d8 6801469b fetch 2 ,mem_mouse_x 
+07d9 600111c0 store 2 ,mem_data_current 
+07da 204007e1 call p_data_abs 
+07db 1fe22200 copy pdata ,rega 
+07dc 6801469d fetch 2 ,mem_mouse_y 
+07dd 600111c0 store 2 ,mem_data_current 
+07de 204007e1 call p_data_abs 
+07df 1fe22400 copy pdata ,regb 
+07e0 20600000 rtn 
+
+p_data_abs:
+07e1 680091c1 fetch 1 ,mem_data_current + 1 
+07e2 c07f87e6 beq 0xff ,p_data_reversal 
+07e3 680091c0 fetch 1 ,mem_data_current 
+
+p_data_abs_store:
+07e4 1fe17eff and_into 0xff ,pdata 
+07e5 20600000 rtn 
+
+p_data_reversal:
+07e6 680111c0 fetch 2 ,mem_data_current 
+07e7 1fe67e00 sub pdata ,0 ,pdata 
+07e8 202007e4 branch p_data_abs_store 
+              org 0x10001
+
+z_entrance0:
+10001 c0000003 beq zcode_00 ,z_page_wait_fhs_reply_ok 
+10002 20600000 rtn 
+
+z_page_wait_fhs_reply_ok:
+10003 6800800e fetch 1 ,mem_page_rcv_fhs 
+10004 1fe0fe01 increase 1 ,pdata 
+10005 6000800e store 1 ,mem_page_rcv_fhs 
+10006 20402435 call prepare_newconn 
+
+z_master_newconn_loop:
+10007 7920002c set1 mark_first_packet ,mark 
+10008 204022f2 call master_newconn_once 
+10009 202c000e branch z_newconn_poll_responded ,sync 
+1000a 793f802c set0 mark_first_packet ,mark 
+1000b 20402455 call new_conn_timeout 
+1000c 243a0007 nbranch z_master_newconn_loop ,blank 
+1000d 202020fc branch page_restart 
+
+z_newconn_poll_responded:
+1000e 793f802c set0 mark_first_packet ,mark 
+1000f 2020215f branch newconn_poll_responded 
+              org 0x20001
+
+z_entrance1:
+20001 c0080004 beq zcode_10 ,z_mouse_bb_disconnected 
+20002 c0088017 beq zcode_11 ,z_hid_rx_process 
+20003 20600000 rtn 
+
+z_mouse_bb_disconnected:
+20004 70480800 jam 0 ,mem_mouse_enter_sniff_count 
+20005 7041e30e jam 0x0e ,mem_sniff_param_interval 
+20006 204041e7 call mouse_bb_discon_clear_stack 
+20007 68014208 fetch app_disc_rsn_size ,mem_app_disconn_reason 
+20008 c283c1f5 bbit1 app_disc_ble ,mouse4_0_event_bb_disconn 
+20009 c28033a9 bbit1 app_disc_by_button ,app_disconn_reason_clear 
+2000a c280800e bbit1 app_disc_after_pairing ,z_mouse_event_light_state_pairing 
+2000b c2810011 bbit1 app_disc_after_reconn ,z_mouse_event_light_state_hibernate 
+2000c c2818011 bbit1 app_disc_after_sniff ,z_mouse_event_light_state_hibernate 
+2000d 202042b0 branch mouse_start_discovery 
+
+z_mouse_event_light_state_pairing:
+2000e c2828011 bbit1 app_disc_after_handshake ,z_mouse_event_light_state_hibernate 
+2000f c2818011 bbit1 app_disc_after_sniff ,z_mouse_event_light_state_hibernate 
+20010 202042b0 branch mouse_start_discovery 
+
+z_mouse_event_light_state_hibernate:
+20011 68014682 fetch 2 ,mem_ui_state_map 
+20012 c28642b0 bbit1 ui_state_btn_down ,mouse_start_discovery 
+20013 204033a9 call app_disconn_reason_clear 
+20014 20400539 call p_mouse_check_key_gpio 
+20015 c00284b6 beq mouse_lm_button ,p_mouse_null_enter_hibernate_enable 
+20016 202033a7 branch app_bb_hibernate 
+
+z_hid_rx_process:
+20017 68010264 fetch 2 ,mem_l2cap_payload_ptr 
+20018 1fe20c00 copy pdata ,contr 
+20019 e8c08000 ifetch 1 ,contr 
+2001a 6000cb02 store 1 ,mem_l2cap_rcv 
+2001b 1fe1040f and pdata ,0x0f ,temp 
+2001c 1ff1fe00 rshift4 pdata ,pdata 
+2001d c003801f beq hid_type_set_protocol ,z_hid_rx_set_protocol 
+2001e 20204d39 branch hid_rx_process + 6 
+
+z_hid_rx_set_protocol:
+2001f 20404d53 call hid_rx_process_handshake 
+20020 704b0300 jam 0 ,mem_mouse_bt_boot_mode 
+20021 6800cb02 fetch 1 ,mem_l2cap_rcv 
+20022 2feffe00 isolate1 0 ,pdata 
+20023 20608000 rtn true 
+20024 704b0301 jam 1 ,mem_mouse_bt_boot_mode 
+20025 20600000 rtn 
+              org 0x30001
+
+z_entrance2:
+30001 c0100003 beq zcode_20 ,z_send_lmp 
+30002 20600000 rtn 
+
+z_send_lmp:
+30003 78547c00 disable user 
+30004 204062c1 call lmo_fifo_process 
+30005 68008048 fetch 1 ,mem_lmp_to_send 
+30006 207a0000 rtn blank 
+30007 c283800c bbit1 7 ,z_send_lmp_escape 
+30008 c001801c beq lmp_accepted ,z_send_lmp_accepted 
+30009 c0188018 beq lmp_setup_complete ,z_send_lmp_setup_complete 
+3000a c00b801a beq lmp_sniff_req ,z_send_lmp_sniff_req 
+3000b 20206010 branch send_lmp0 
+
+z_send_lmp_escape:
+3000c c042000f beq lmp_ext_features_res ,z_send_lmpext_features_res 
+3000d c0418012 beq lmp_ext_features_req ,z_send_lmpext_features_req 
+3000e 2020603f branch send_lmp_escape 
+
+z_send_lmpext_features_res:
+3000f 20400015 call z_check_ssp_enable 
+30010 68008048 fetch 1 ,mem_lmp_to_send 
+30011 20206099 branch send_lmpext_features_res 
+
+z_send_lmpext_features_req:
+30012 20400015 call z_check_ssp_enable 
+30013 68008048 fetch 1 ,mem_lmp_to_send 
+30014 2020610d branch send_lmpext_features_req 
+
+z_check_ssp_enable:
+30015 6800c65a fetch 1 ,mem_ssp_enable 
+30016 203a612b branch ssp_disable ,blank 
+30017 20206124 branch ssp_enable 
+
+z_send_lmp_setup_complete:
+30018 704b0101 jam 1 ,mem_bt_send_lmp_setup_complete 
+30019 202061c3 branch send_lmp_setup_complete 
+
+z_send_lmp_sniff_req:
+3001a 704b0904 jam 4 ,mem_mouse_bt_send_first_package_timer 
+3001b 202061a4 branch send_lmp_sniff_req 
+
+z_send_lmp_accepted:
+3001c 18007e02 force 2 ,pdata 
+3001d 20406298 call msg_send_lmp 
+3001e 68008049 fetch 1 ,mem_lmi_opcode 
+3001f e0a08000 istore 1 ,contw 
+30020 6000cafc store 1 ,mem_lmi_opcode_temp 
+30021 204062a7 call send_lmp_follow 
+30022 6800cafc fetch 1 ,mem_lmi_opcode_temp 
+30023 c0170025 beq lmp_max_slot_req ,z_send_lmp_accepted_max_slot_req 
+30024 20206051 branch send_lmp_accepted + 7 
+
+z_send_lmp_accepted_max_slot_req:
+30025 6800caff fetch 1 ,mem_bt_rcvd_switch_req_accept 
+30026 207a0000 rtn blank 
+30027 704aff00 jam 0 ,mem_bt_rcvd_switch_req_accept 
+30028 6800cb01 fetch 1 ,mem_bt_send_lmp_setup_complete 
+30029 c1810000 rtnne 2 
+3002a 704b0001 jam 1 ,mem_bt_send_max_slot_req_accept_after_switch 
+3002b 1c427e00 copy clkn_bt ,pdata 
+3002c 600204e9 store 4 ,mem_aurand_send_delay_time 
+3002d 20600000 rtn 
+              org 0x40001
+
+z_entrance3:
+40001 c0180003 beq zcode_30 ,z_process_conn_sm 
+40002 20600000 rtn 
+
+z_process_conn_sm:
+40003 204062bc call lmo_fifo_check 
+40004 247a0000 nrtn blank 
+
+z_process_conn_sm_continue:
+40005 68008055 fetch 1 ,mem_conn_sm 
+40006 207a0000 rtn blank 
+40007 c0020025 beq conn_sm_send_conn_req ,z_host_create_conn_send_conn_req 
+40008 c008000a beq conn_sm_wait_switch_after_host_connection ,z_host_creat_conn_wait_switch 
+40009 20206320 branch process_conn_sm_continue + 2 
+
+z_host_creat_conn_wait_switch:
+4000a 6800c55b fetch 1 ,mem_switch_flag 
+4000b c1000000 rtneq switch_flag_init 
+4000c c000800e beq switch_flag_accept ,z_host_create_conn_switch_accept 
+4000d 2020635f branch host_creat_conn_wait_switch + 3 
+
+z_host_create_conn_switch_accept:
+4000e 20748000 rtn master 
+
+z_host_create_conn_auth_pair:
+4000f 6800816d fetch 1 ,mem_connection_options 
+40010 c2800012 bbit1 connection_auth ,z_host_create_conn_auth_pair_true 
+40011 20206399 branch host_create_conn_auth_pair + 1 
+
+z_host_create_conn_auth_pair_true:
+40012 6800cb01 fetch 1 ,mem_bt_send_lmp_setup_complete 
+40013 c000e39d beq 1 ,host_create_conn_auth_pair_true 
+40014 6800c1bd fetch 1 ,mem_link_key_exists 
+40015 203a63a9 branch host_create_conn_auth_pair_nokey ,blank 
+40016 680084d1 fetch 1 ,mem_lmp_conn_state 
+40017 c4018000 rtnbit0 sent_setup_complete 
+40018 c4010000 rtnbit0 received_setup_complete 
+40019 6800cb00 fetch 1 ,mem_bt_send_max_slot_req_accept_after_switch 
+4001a 207a0000 rtn blank 
+4001b 704b0000 jam 0 ,mem_bt_send_max_slot_req_accept_after_switch 
+4001c 680204e9 fetch 4 ,mem_aurand_send_delay_time 
+4001d d8400014 arg 20 ,temp 
+4001e 98408400 iadd temp ,temp 
+4001f 1c427e00 copy clkn_bt ,pdata 
+40020 98467c00 isub temp ,null 
+40021 24210023 nbranch z_bt_send_max_slot_req_accept_after_switch_wait ,positive 
+40022 20206349 branch host_create_conn_auth 
+
+z_bt_send_max_slot_req_accept_after_switch_wait:
+40023 704b0001 jam 1 ,mem_bt_send_max_slot_req_accept_after_switch 
+40024 20600000 rtn 
+
+z_host_create_conn_send_conn_req:
+40025 70480914 jam 20 ,mem_mouse_send_switch_req_timer 
+40026 2020636f branch host_create_conn_send_conn_req 
+              org 0x50001
+
+z_entrance4:
+50001 c0200004 beq zcode_40 ,z_le_update_param 
+50002 c0208016 beq zcode_41 ,z_le_update_channel_map 
+50003 20600000 rtn 
+
+z_le_update_param:
+50004 2040000c call z_mouse_le_conn_param_check 
+50005 2020557d branch le_update_param + 8 
+
+z_mouse_le_lpm_mult_reinit:
+50006 6800c7c5 fetch 1 ,mem_lpm_mult_init 
+50007 6000c172 store 1 ,mem_lpm_mult 
+
+z_mouse_le_conn_param_lpm_enable:
+50008 7047c400 jam le_lpm_enable ,mem_mouse_le_conn_param_reject 
+50009 20600000 rtn 
+
+z_mouse_le_conn_param_lpm_disable:
+5000a 7047c401 jam le_lpm_disable ,mem_mouse_le_conn_param_reject 
+5000b 20600000 rtn 
+
+z_mouse_le_conn_param_check:
+5000c 6800c3d6 fetch 1 ,mem_le_new_conninterval 
+5000d 1fe67c0c sub pdata ,le_interval_15ms ,null 
+5000e 2421000a nbranch z_mouse_le_conn_param_lpm_disable ,positive 
+5000f 6800c3d8 fetch 1 ,mem_le_new_connslavelatency 
+50010 6808c7c5 fetcht 1 ,mem_lpm_mult_init 
+50011 98467c00 isub temp ,null 
+50012 20210006 branch z_mouse_le_lpm_mult_reinit ,positive 
+50013 6800c3d8 fetch 1 ,mem_le_new_connslavelatency 
+50014 6000c172 store 1 ,mem_lpm_mult 
+50015 20200008 branch z_mouse_le_conn_param_lpm_enable 
+
+z_le_update_channel_map:
+50016 6800843f fetch 1 ,mem_le_state 
+50017 c4030000 rtnbit0 lestate_update_map 
+50018 2040001b call z_le_channel_map_overflow_check 
+50019 24740000 nrtn user 
+5001a 202055a0 branch le_update_channel_map + 3 
+
+z_le_channel_map_overflow_check:
+5001b 78347c00 enable user 
+5001c 6800845a fetch 1 ,mem_le_event_count + 1 
+5001d 1ff1fe00 rshift4 pdata ,pdata 
+5001e c1878000 rtnne 0x0f 
+5001f 68008460 fetch 1 ,mem_le_instant + 1 
+50020 1ff1fe00 rshift4 pdata ,pdata 
+50021 c1800000 rtnne 0x00 
+50022 20207fe9 branch disable_user 
+              org 0x60001
+
+z_entrance5:
+60001 c0280003 beq zcode_50 ,z_mouse_start_discovery 
+60002 20600000 rtn 
+
+z_mouse_start_discovery:
+60003 704b6200 jam 0 ,mem_le_send_security_request_flag 
+60004 204002aa call p_mouse_tx_power_init 
+60005 70479c00 jam 0 ,mem_mouse_clear_sensor_data_flag 
+60006 68014682 fetch 2 ,mem_ui_state_map 
+60007 c2858012 bbit1 ui_state_ble_adv ,z_mouse_start_discovery_norandom 
+60008 680246d3 fetch mouse_flag_len ,mem_mouse_flag 
+60009 c30c0012 bbit0 mouse_enable_ble_random_addre ,z_mouse_start_discovery_norandom 
+6000a 2040056a call p_mouse_load_random_addr_increase_count 
+6000b 680947c2 fetcht 2 ,mem_random_addr_increase_count 
+6000c 18408401 increase 1 ,temp 
+6000d 600947c2 storet 2 ,mem_random_addr_increase_count 
+6000e 600944a1 storet 2 ,mem_le_lap + 1 
+6000f 2040032d call p_mouse_store_random_addr_increase_count 
+60010 180a7e00 random pdata 
+60011 6000c4a0 store 1 ,mem_le_lap 
+
+z_mouse_start_discovery_norandom:
+60012 6801cd2f fetch 3 ,mem_le_lap_high_3b 
+60013 6001c4a3 store 3 ,mem_le_lap + 3 
+60014 204002d0 call p_mouse_le_fast_conn_disable 
+60015 20403418 call app_lpm_mult_disable 
+60016 68014687 fetch 2 ,mem_discovery_timeout 
+60017 600146ac store 2 ,mem_mouse_discovery_timer 
+60018 70016d06 jam 6 ,mem_connection_options 
+60019 58000000 setarg 0 
+6001a 600146b0 store 2 ,mem_mouse_no_data_timer 
+6001b 600146ae store 2 ,mem_mouse_direct_timer 
+6001c d8e00007 arg mouse_store_eeprom_flag ,queue 
+6001d 204043ce call mouse_enable_function_flag 
+6001e 204043ca call mouse_bt_discovery_button_down_disable 
+6001f 6800c092 fetch 1 ,mem_device_option 
+60020 2feffe01 isolate1 mode_4_mouse ,pdata 
+60021 20408026 call z_check_51cmd_adv ,true 
+60022 6800c092 fetch 1 ,mem_device_option 
+60023 2feffe00 isolate1 mode_3_mouse ,pdata 
+60024 2040fddd call check_51cmd_start_discovery ,true 
+60025 202004f6 branch p_mouse_discovery_multi_led_blink 
+
+z_check_51cmd_adv:
+60026 70479f00 jam 0 ,mem_mouse_le_reconnect_flag 
+60027 204002c9 call p_le_check_adv_flag 
+60028 58000005 setarg adv_flag_bredr_not_supported | adv_flag_limited_discoverable 
+60029 e0c08000 istore 1 ,contr 
+6002a d8c04b10 arg mem_le_adv_swift_pair ,contr 
+6002b 20400578 call p_le_adv_data_update 
+6002c 20207df4 branch check_51cmd_adv 
+              org 0x70001
+
+z_entrance6:
+70001 c0300004 beq zcode_60 ,z_g24_start_24g_mode 
+70002 c0308026 beq zcode_61 ,z_mouse_24g_pairing_button 
+70003 20600000 rtn 
+
+z_g24_start_24g_mode:
+70004 793f8026 set0 mark_24g ,mark 
+70005 204001b3 call p_g24_syncword_crc8 
+70006 204001d2 call p_g24_ch 
+70007 6800cbfa fetch 1 ,mem_24g_pairing_sm 
+70008 c1ff8000 rtnne state_24g_pairing_success 
+70009 20400018 call z_g24_tx_attemp_data_prep 
+
+z_g24_tx_attemp_dongle:
+7000a 58000000 setarg 0 
+7000b 60014c17 store 2 ,mem_24g_check_dongle_times 
+
+z_g24_tx_attemp_dongle_loop:
+7000c 200007d0 nop 2000 
+7000d 6800cc17 fetch 1 ,mem_24g_check_dongle_times 
+7000e c07fadd4 beq 0xff ,g24_stop_24g_mode 
+7000f 20400166 call p_g24_transmit_receive_ack 
+70010 242c0021 nbranch z_g24_attemp_txdata_retry ,sync 
+70011 24378021 nbranch z_g24_attemp_txdata_retry ,user3 
+
+z_g24_tx_attemp_dongle_succ:
+70012 79200026 set1 mark_24g ,mark 
+70013 58000000 setarg 0 
+70014 60014c17 store 2 ,mem_24g_check_dongle_times 
+70015 20402f20 call g24_app_tx_attempt_success 
+70016 20400163 call p_g24_txbuf_clear 
+70017 20200383 branch p_g24_transmit_by_interrupt_enable 
+
+z_g24_tx_attemp_data_prep:
+70018 70119eff jam 0xff ,mem_24g_common_temp 
+70019 6800cbeb fetch 1 ,mem_24g_data_type 
+7001a 6000919f store 1 ,mem_24g_common_temp + 1 
+7001b 68024c21 fetch 4 ,mem_24g_device_addr 
+7001c 600211a0 store 4 ,mem_24g_common_temp + 2 
+7001d d8400006 arg 6 ,temp 
+7001e da20119e arg mem_24g_common_temp ,rega 
+7001f 204001a0 call p_g24_put_data_in_buff 
+70020 202001c0 branch p_g24_transmit_prep 
+
+z_g24_attemp_txdata_retry:
+70021 68014c17 fetch 2 ,mem_24g_check_dongle_times 
+70022 1fe0fe01 increase 1 ,pdata 
+70023 60014c17 store 2 ,mem_24g_check_dongle_times 
+70024 204001d2 call p_g24_ch 
+70025 2020000c branch z_g24_tx_attemp_dongle_loop 
+
+z_mouse_24g_pairing_button:
+70026 6800c720 fetch 1 ,mem_device_flag 
+70027 c1008000 rtneq mode_bt_device1 
+70028 680246d3 fetch mouse_flag_len ,mem_mouse_flag 
+70029 c4088000 rtnbit0 mouse_enable_24g 
+7002a c3818000 rtnbit1 mosue_24g_pairing_flag 
+7002b c6130000 rtnmark1 mark_24g 
+7002c d8e00003 arg mosue_24g_pairing_flag ,queue 
+7002d 204043ce call mouse_enable_function_flag 
+7002e 58000000 setarg 0 
+7002f 600146ae store 2 ,mem_mouse_direct_timer 
+70030 6000c6b4 store 1 ,mem_mouse_send_blank_timer 
+70031 60014c17 store 2 ,mem_24g_check_dongle_times 
+70032 204042ca call mouse_stop_discovery 
+70033 20200034 branch z6_g24_start_pairing_sm1 
+
+z6_g24_start_pairing_sm1:
+70034 79200026 set1 mark_24g ,mark 
+70035 20400038 call z6_g24_pair_init 
+
+z6_g24_set_pairing_sm_1:
+70036 704bfa01 jam state_24g_pairing_1 ,mem_24g_pairing_sm 
+70037 20600000 rtn 
+
+z6_g24_pair_init:
+70038 7041de20 jam tx_power_pair ,mem_tx_power 
+70039 704be900 jam 0 ,mem_24g_pid 
+7003a 704bf44e jam g24_pair_ch ,mem_24g_ch 
+7003b 68024bf6 fetch 4 ,mem_24g_paring_addr 
+7003c 202001b2 branch p_g24_update_addr_and_synccrc8 
+              org 0x80001
+
+z_entrance7:
+80001 c0380003 beq zcode_70 ,z_g24_auto_pair_start 
+80002 20600000 rtn 
+
+z_g24_auto_pair_start:
+80003 793f8026 set0 mark_24g ,mark 
+80004 2040002d call z_g24_auto_pair_all_powerful 
+80005 2040001a call z7_g24_tx_attemp_data_prep 
+
+z_g24_auto_pair_restart:
+80006 58000000 setarg 0 
+80007 60014c17 store 2 ,mem_24g_check_dongle_times 
+
+z_g24_auto_pair_start_loop:
+80008 200007d0 nop 2000 
+80009 6800cc17 fetch 1 ,mem_24g_check_dongle_times 
+8000a c07fadd4 beq 0xff ,g24_stop_24g_mode 
+8000b 20400166 call p_g24_transmit_receive_ack 
+8000c 242c0023 nbranch z_g24_auto_pair_retry ,sync 
+8000d 24378023 nbranch z_g24_auto_pair_retry ,user3 
+8000e 2040018e call p_g24_ackpayload_parse 
+8000f 204002aa call p_mouse_tx_power_init 
+80010 68024c12 fetch 4 ,mem_24g_addr 
+80011 680a4bf6 fetcht 4 ,mem_24g_paring_addr 
+80012 98467c00 isub temp ,null 
+80013 20228037 branch z_g24_start_pairing_sm1 ,zero 
+80014 79200026 set1 mark_24g ,mark 
+80015 58000000 setarg 0 
+80016 60014c17 store 2 ,mem_24g_check_dongle_times 
+80017 20402f20 call g24_app_tx_attempt_success 
+80018 20400163 call p_g24_txbuf_clear 
+80019 20200383 branch p_g24_transmit_by_interrupt_enable 
+
+z7_g24_tx_attemp_data_prep:
+8001a 70119eff jam 0xff ,mem_24g_common_temp 
+8001b 6800cbeb fetch 1 ,mem_24g_data_type 
+8001c 6000919f store 1 ,mem_24g_common_temp + 1 
+8001d 68024c21 fetch 4 ,mem_24g_device_addr 
+8001e 600211a0 store 4 ,mem_24g_common_temp + 2 
+8001f d8400006 arg 6 ,temp 
+80020 da20119e arg mem_24g_common_temp ,rega 
+80021 204001a0 call p_g24_put_data_in_buff 
+80022 202001c0 branch p_g24_transmit_prep 
+
+z_g24_auto_pair_retry:
+80023 68014c17 fetch 2 ,mem_24g_check_dongle_times 
+80024 1fe0fe01 increase 1 ,pdata 
+80025 60014c17 store 2 ,mem_24g_check_dongle_times 
+80026 6800cd28 fetch 1 ,mem_24g_auto_paring_switch 
+80027 1fe0fe01 increase 1 ,pdata 
+80028 1fe17e01 and_into 1 ,pdata 
+80029 6000cd28 store 1 ,mem_24g_auto_paring_switch 
+8002a c0000033 beq 0 ,z_g24_auto_pair_device_attemp 
+8002b c0008035 beq 1 ,z_g24_auto_pair_pair_attemp 
+8002c 20600000 rtn 
+
+z_g24_auto_pair_all_powerful:
+8002d 7041de20 jam tx_power_pair ,mem_tx_power 
+8002e 58000f0f setarg 0x0f0f 
+8002f 60014c12 store 2 ,mem_24g_addr 
+80030 e0a10000 istore 2 ,contw 
+
+z_g24_ch_syncword_crc8_init:
+80031 204001b3 call p_g24_syncword_crc8 
+80032 202001d2 branch p_g24_ch 
+
+z_g24_auto_pair_device_attemp:
+80033 2040002d call z_g24_auto_pair_all_powerful 
+80034 20200008 branch z_g24_auto_pair_start_loop 
+
+z_g24_auto_pair_pair_attemp:
+80035 2040003b call z_g24_pair_init 
+80036 20200008 branch z_g24_auto_pair_start_loop 
+
+z_g24_start_pairing_sm1:
+80037 79200026 set1 mark_24g ,mark 
+80038 2040003b call z_g24_pair_init 
+
+z_g24_set_pairing_sm_1:
+80039 704bfa01 jam state_24g_pairing_1 ,mem_24g_pairing_sm 
+8003a 20600000 rtn 
+
+z_g24_pair_init:
+8003b 7041de20 jam tx_power_pair ,mem_tx_power 
+8003c 704be900 jam 0 ,mem_24g_pid 
+8003d 704bf44e jam g24_pair_ch ,mem_24g_ch 
+8003e 68024bf6 fetch 4 ,mem_24g_paring_addr 
+8003f 202001b2 branch p_g24_update_addr_and_synccrc8 
+              org 0x90001
+
+z_entrance8:
+90001 c0400008 beq zcode_80 ,z_mouse_setting_config 
+90002 c0408004 beq zcode_81 ,z_le_addr_random_config 
+90003 20600000 rtn 
+
+z_le_addr_random_config:
+90004 204068a2 call load_adc_init 
+90005 58001122 setarg 0x1122 
+
+z_le_otp_adc_empty:
+90006 600147c2 store 2 ,mem_random_addr_increase_count 
+90007 20600000 rtn 
+
+z_mouse_setting_config:
+90008 204000e5 call p_g24_set_device_addr 
+90009 20403e6e call mouse_gpio_init 
+9000a 2040028e call p_mouse_multi_led_gpio_set_float 
+9000b 6808cb45 fetcht 1 ,mem_flash_ncs_gpio 
+9000c 2040680e call gpio_config_output 
+9000d 20403e1e call mouse_param_init 
+9000e 20400024 call z_mouse_bt_sdp_update 
+9000f 58000000 setarg 0 
+90010 60014154 store 2 ,mem_lpm_interval 
+90011 204068a2 call load_adc_init 
+90012 20403e54 call mouse_adc_init 
+90013 20405810 call le_set_config_fixed_ltk 
+90014 20405839 call le_set_justwork 
+90015 2040582c call le_set_fixed_ltk 
+90016 20405818 call le_set_config_read_authentication 
+90017 20400566 call p_le_addr_random_config 
+90018 2040036c call p_flash_release_deep_power_down 
+90019 20400338 call p_mouse_set_24g_addr_flash 
+9001a 6801c700 fetch 3 ,mem_flash_base 
+9001b 9a40fe00 iadd regb ,pdata 
+9001c 20406562 call spid_read_flash 
+9001d 2040031e call p_mouse_load_flash_info_check 
+9001e df200003 arg 3 ,loopcnt 
+9001f d8c04722 arg mem_device1_addr ,contr 
+90020 20400370 call p_pdata_0xff_check 
+90021 243402d0 nbranch p_mouse_le_fast_conn_disable ,user 
+90022 204002d2 call p_mouse_fast_conn_init 
+90023 20600000 rtn 
+
+z_mouse_bt_sdp_update:
+90024 204074b9 call enable_authrom 
+90025 d8c08c00 arg 0x8c00 ,contr 
+90026 d8a04876 arg mem_mouse_uuid_list ,contw 
+90027 df200171 arg 369 ,loopcnt 
+90028 20407f01 call memcpy 
+90029 580f0209 setarg 0x0f0209 
+9002a e0a18000 istore 3 ,contw 
+9002b 58120009 setarg 0x120009 
+9002c e0a18000 istore 3 ,contw 
+9002d 58100209 setarg 0x100209 
+9002e e0a18000 istore 3 ,contw 
+9002f 58000009 setarg 0x000009 
+90030 e0a18000 istore 3 ,contw 
+90031 d8c08d71 arg 0x8d71 ,contr 
+90032 df200109 arg 265 ,loopcnt 
+90033 20407f01 call memcpy 
+90034 70488d00 jam 0 ,mem_mouse_uuid_list + 23 
+90035 7048856d jam 0x6d ,mem_mouse_uuid_list + 15 
+90036 5800401f setarg 0x401f 
+90037 600149db store 2 ,mem_mouse_uuid_list + 357 
+90038 58006d04 setarg 0x6d04 
+90039 60014a44 store 2 ,mem_mouse_uuid_list + 462 
+9003a 580016b0 setarg 0x16b0 
+9003b 60014a4a store 2 ,mem_mouse_uuid_list + 468 
+9003c 58004876 setarg mem_mouse_uuid_list 
+9003d 60014575 store 2 ,mem_ui_uuid_table 
+9003e 20600000 rtn 
+              org 0xa0001
+
+z_entrance9:
+a0001 c0480005 beq zcode_90 ,z_g24_pairing_sm 
+a0002 c048801f beq zcode_91 ,z_g24_paring_mode 
+a0003 c049002f beq zcode_92 ,z_mouse_24g_pairing_complete 
+a0004 20600000 rtn 
+
+z_g24_pairing_sm:
+a0005 6800cbef fetch 1 ,mem_24g_ensure 
+a0006 c000ffe7 beq ensure_on_24g ,enable_user 
+a0007 6800cbfa fetch 1 ,mem_24g_pairing_sm 
+a0008 c000800c beq state_24g_pairing_1 ,z_g24_pairing_sm_1 
+a0009 c001000f beq state_24g_pairing_2 ,z_g24_pairing_sm_2 
+a000a c0018012 beq state_24g_pairing_3 ,z_g24_pairing_sm_3 
+a000b 20202a8c branch assert 
+
+z_g24_pairing_sm_1:
+a000c 704bfa11 jam state_24g_pairing_1_waiting_ack ,mem_24g_pairing_sm 
+a000d 70119eaa jam 0xaa ,mem_24g_common_temp 
+a000e 20200014 branch z_g24_pairing_sm_common 
+
+z_g24_pairing_sm_2:
+a000f 704bfa12 jam state_24g_pairing_2_waiting_ack ,mem_24g_pairing_sm 
+a0010 70119e55 jam 0x55 ,mem_24g_common_temp 
+a0011 20200014 branch z_g24_pairing_sm_common 
+
+z_g24_pairing_sm_3:
+a0012 704bfa13 jam state_24g_pairing_3_waiting_ack ,mem_24g_pairing_sm 
+a0013 70119e22 jam 0x22 ,mem_24g_common_temp 
+
+z_g24_pairing_sm_common:
+a0014 6800cbeb fetch 1 ,mem_24g_data_type 
+a0015 1fe17e07 and_into bits_data ,pdata 
+a0016 6000919f store 1 ,mem_24g_common_temp + 1 
+a0017 68024c21 fetch 4 ,mem_24g_device_addr 
+a0018 600211a0 store 4 ,mem_24g_common_temp + 2 
+
+z_g24_put_pairing_data_in_buff:
+a0019 7011a400 jam 0 ,mem_24g_common_temp + 6 
+a001a da20119e arg mem_24g_common_temp ,rega 
+a001b d8400007 arg 7 ,temp 
+a001c 204001a0 call p_g24_put_data_in_buff 
+a001d 20400127 call p_g24_txdata_enable_tx 
+a001e 20207fe7 branch enable_user 
+
+z_g24_paring_mode:
+a001f 6800cbfa fetch 1 ,mem_24g_pairing_sm 
+a0020 c17f8000 rtneq state_24g_pairing_success 
+a0021 c0088025 beq state_24g_pairing_1_waiting_ack ,z_g24_pairing_sm_1_waiting_ack 
+a0022 c0090027 beq state_24g_pairing_2_waiting_ack ,z_g24_pairing_sm_2_waiting_ack 
+a0023 c0098029 beq state_24g_pairing_3_waiting_ack ,z_g24_pairing_sm_3_waiting_ack 
+a0024 20600000 rtn 
+
+z_g24_pairing_sm_1_waiting_ack:
+a0025 704bfa02 jam state_24g_pairing_2 ,mem_24g_pairing_sm 
+a0026 2020015f branch p_g24_transmit_abandon 
+
+z_g24_pairing_sm_2_waiting_ack:
+a0027 704bfa03 jam state_24g_pairing_3 ,mem_24g_pairing_sm 
+a0028 2020015f branch p_g24_transmit_abandon 
+
+z_g24_pairing_sm_3_waiting_ack:
+a0029 704bfaff jam state_24g_pairing_success ,mem_24g_pairing_sm 
+a002a 700a9939 jam bt_evt_24g_pairing_complete ,mem_fifo_temp 
+a002b 20407d86 call ui_ipc_send_event 
+a002c 68024bca fetch 4 ,mem_24g_rxpayload + 2 
+a002d 204001b2 call p_g24_update_addr_and_synccrc8 
+a002e 2020015f branch p_g24_transmit_abandon 
+
+z_mouse_24g_pairing_complete:
+a002f 70478b01 jam 1 ,mem_mouse_24g_enter_lpm_enable 
+a0030 d8e00003 arg mosue_24g_pairing_flag ,queue 
+a0031 204043d2 call mouse_disable_function_flag 
+a0032 58000000 setarg 0 
+a0033 60014707 store 2 ,mem_24g_pairing_timer_count 
+a0034 7046a700 jam 0 ,mem_mouse_move_flag 
+a0035 2040405d call mouse_read_sensor_common 
+a0036 204004b9 call p_mouse_null_enter_hibernate_disable 
+a0037 204002aa call p_mouse_tx_power_init 
+a0038 68024c12 fetch 4 ,mem_24g_addr 
+a0039 6002477b store 4 ,mem_mouse_24g_addr 
+a003a 20404366 call mouse_cheak_select_24gdevice 
+a003b 20200328 branch p_mouse_store_flash_device_info 
+              org 0xb0001
+
+z_entrancea:
+b0001 c0500007 beq zcode_a0 ,z_mouse_24g_attempt_fail 
+b0002 c050800d beq zcode_a1 ,z_mouse_le_conn_param_update_rsp_recieved 
+b0003 c0510020 beq zcode_a2 ,z_mouse_le_bb_disconnected 
+b0004 c0518019 beq zcode_a3 ,z_mouse_bb_event_reconn_timeout 
+b0005 c0520029 beq zcode_a4 ,z_mouse_before_hibernate 
+b0006 20600000 rtn 
+
+z_mouse_24g_attempt_fail:
+b0007 704d2a00 jam g24_tx_timer_int_disable ,mem_24g_transmit_by_interrupt 
+b0008 204002aa call p_mouse_tx_power_init 
+b0009 2040019c call p_g24_check_51cmd_stop_24g 
+b000a 7041bd00 jam 0 ,mem_link_key_exists 
+b000b 2040027f call p_mouse_setgpio_hibernate 
+b000c 202004b6 branch p_mouse_null_enter_hibernate_enable 
+
+z_mouse_le_conn_param_update_rsp_recieved:
+b000d 68014509 fetch 2 ,mem_le_l2cap_signaling_conn_param_update_rsp_result 
+b000e c1000000 rtneq ble_signaling_connect_parameter_update_accepted 
+b000f 68008441 fetch 1 ,mem_le_tsniff 
+b0010 1feb7e00 rshift2 pdata ,pdata 
+b0011 1fe67c0c sub pdata ,le_interval_15ms ,null 
+b0012 20610000 rtn positive 
+b0013 58000009 setarg le_interval_11_25ms 
+b0014 60014496 store 2 ,mem_le_interval_min 
+b0015 60014498 store 2 ,mem_le_interval_min + 2 
+b0016 20400428 call p_app_updata_le_param 
+b0017 7047c401 jam le_lpm_disable ,mem_mouse_le_conn_param_reject 
+b0018 20600000 rtn 
+
+z_mouse_bb_event_reconn_timeout:
+
+z_mouse_bb_event_reconn_failed:
+b0019 68014682 fetch 2 ,mem_ui_state_map 
+b001a c3860000 rtnbit1 ui_state_btn_down 
+b001b c3830000 rtnbit1 ui_state_bt_discovery 
+b001c c3858000 rtnbit1 ui_state_ble_adv 
+b001d 680246d3 fetch mouse_flag_len ,mem_mouse_flag 
+b001e c3828000 rtnbit1 mouse_bt_discovery_button_down_flag 
+b001f 202033a7 branch app_bb_hibernate 
+
+z_mouse_le_bb_disconnected:
+b0020 704b6300 jam 0 ,mem_mouse_le_bb_connected_flag 
+b0021 58000007 setarg le_interval_8_75ms 
+b0022 60014496 store 2 ,mem_le_interval_min 
+b0023 60014498 store 2 ,mem_le_interval_min + 2 
+b0024 7047c400 jam le_lpm_enable ,mem_mouse_le_conn_param_reject 
+b0025 70479c00 jam 0 ,mem_mouse_clear_sensor_data_flag 
+b0026 204003b7 call p_mouse_data_init 
+b0027 20405816 call le_clr_config_more_data 
+b0028 202041d9 branch mouse_bb_disconnected 
+
+z_mouse_before_hibernate:
+b0029 78347c00 enable user 
+b002a 68120138 hfetch 4 ,0x8138 
+b002b 79347e1a setflag user ,26 ,pdata 
+b002c 6012004c hstore 4 ,core_lpm_reg 
+b002d 20402c21 call lpm_write_ctrl 
+b002e 204074bd call disable_authrom 
+b002f 20403e9f call mouse_before_hibernate_wheel_gpio_set 
+b0030 2040027f call p_mouse_setgpio_hibernate 
+b0031 6800c720 fetch 1 ,mem_device_flag 
+b0032 1fe67c02 sub pdata ,mode_24g_device ,null 
+b0033 2042855a call p_mouse_select_device_button_gpio_set_suspend ,zero 
+b0034 20400364 call p_flash_deep_power_down 
+b0035 68108081 hfetch 1 ,core_gpio_sel1 
+b0036 1fe17ef7 and pdata ,0xf7 ,pdata 
+b0037 60108081 hstore 1 ,core_gpio_sel1 
+b0038 6810807f hfetch 1 ,core_gpio_pd3 
+b0039 79207e00 set1 0 ,pdata 
+b003a 6010807f hstore 1 ,core_gpio_pd3 
+b003b 6808c6ec fetcht 1 ,mem_config_bt_button_gpio 
+b003c 202067dd branch gpio_set_wake_by_current_state 
+              org 0xc0001
+
+z_entranceb:
+c0001 c0580007 beq zcode_b0 ,z_mouse_le_bb_event_connected 
+c0002 c058800e beq zcode_b1 ,z_mouse_sniff_not_accept 
+c0003 c0590014 beq zcode_b2 ,z_mouse_enter_sniff_check 
+c0004 c0598019 beq zcode_b3 ,z_mouse_le_ll_start_encryt 
+c0005 c05a0020 beq zcode_b4 ,z_mouse_bb_event_disconnected 
+c0006 20600000 rtn 
+
+z_mouse_le_bb_event_connected:
+c0007 704b6301 jam 1 ,mem_mouse_le_bb_connected_flag 
+c0008 6800c79f fetch 1 ,mem_mouse_le_reconnect_flag 
+c0009 243a000b nbranch z_mouse_le_bb_event_connected_next ,blank 
+c000a 704b6114 jam 0x14 ,mem_mouse_send_secutiry_request_timer 
+
+z_mouse_le_bb_event_connected_next:
+c000b 204004b9 call p_mouse_null_enter_hibernate_disable 
+c000c 204003b7 call p_mouse_data_init 
+c000d 202041c3 branch mouse_le_bb_event_connected 
+
+z_mouse_sniff_not_accept:
+c000e 6800c808 fetch 1 ,mem_mouse_enter_sniff_count 
+c000f c1010000 rtneq 2 
+c0010 1fe0fe01 increase 1 ,pdata 
+c0011 6000c808 store 1 ,mem_mouse_enter_sniff_count 
+c0012 7041e312 jam 0x12 ,mem_sniff_param_interval 
+c0013 2020340e branch app_bt_enter_sniff 
+
+z_mouse_enter_sniff_check:
+c0014 6800c808 fetch 1 ,mem_mouse_enter_sniff_count 
+c0015 c1810000 rtnne 2 
+c0016 70480800 jam 0 ,mem_mouse_enter_sniff_count 
+c0017 7041e30e jam 0x0e ,mem_sniff_param_interval 
+c0018 2020340e branch app_bt_enter_sniff 
+
+z_mouse_le_ll_start_encryt:
+c0019 6800c79f fetch 1 ,mem_mouse_le_reconnect_flag 
+c001a c000801c beq 1 ,z_mouse_le_ll_reconn_start_encryt 
+c001b 2020001e branch z_mouse_le_ll_enable_start_enc_flag 
+
+z_mouse_le_ll_reconn_start_encryt:
+c001c 20400428 call p_app_updata_le_param 
+c001d 7046c605 jam 5 ,mem_le_start_encrypt_timer 
+
+z_mouse_le_ll_enable_start_enc_flag:
+c001e d8e00001 arg ll_start_enc_flag ,queue 
+c001f 202041b9 branch mouse_le_enable_connect_flag 
+
+z_mouse_bb_event_disconnected:
+c0020 704aff00 jam 0 ,mem_bt_rcvd_switch_req_accept 
+c0021 704b0100 jam 0 ,mem_bt_send_lmp_setup_complete 
+c0022 704b0a00 jam 0 ,mem_mouse_bt_send_first_package_flag 
+c0023 202041d9 branch mouse_bb_disconnected 
+
Index: output/romcode.rom
===================================================================
--- /branch/mouse_project/YJX_Project/YJX_1059/JDT_172_BD_2.4G&BLE/output/romcode.rom	(nonexistent)
+++ /branch/mouse_project/YJX_Project/YJX_1059/JDT_172_BD_2.4G&BLE/output/romcode.rom	(working copy)
@@ -0,0 +1,553 @@
+c0000003
+20600000
+6800800e
+1fe0fe01
+6000800e
+20402435
+7920002c
+204022f2
+202c000e
+793f802c
+20402455
+243a0007
+202020fc
+793f802c
+2020215f
+c0080004
+c0088017
+20600000
+70480800
+7041e30e
+204041e7
+68014208
+c283c1f5
+c28033a9
+c280800e
+c2810011
+c2818011
+202042b0
+c2828011
+c2818011
+202042b0
+68014682
+c28642b0
+204033a9
+20400539
+c00284b6
+202033a7
+68010264
+1fe20c00
+e8c08000
+6000cb02
+1fe1040f
+1ff1fe00
+c003801f
+20204d39
+20404d53
+704b0300
+6800cb02
+2feffe00
+20608000
+704b0301
+20600000
+c0100003
+20600000
+78547c00
+204062c1
+68008048
+207a0000
+c283800c
+c001801c
+c0188018
+c00b801a
+20206010
+c042000f
+c0418012
+2020603f
+20400015
+68008048
+20206099
+20400015
+68008048
+2020610d
+6800c65a
+203a612b
+20206124
+704b0101
+202061c3
+704b0904
+202061a4
+18007e02
+20406298
+68008049
+e0a08000
+6000cafc
+204062a7
+6800cafc
+c0170025
+20206051
+6800caff
+207a0000
+704aff00
+6800cb01
+c1810000
+704b0001
+1c427e00
+600204e9
+20600000
+c0180003
+20600000
+204062bc
+247a0000
+68008055
+207a0000
+c0020025
+c008000a
+20206320
+6800c55b
+c1000000
+c000800e
+2020635f
+20748000
+6800816d
+c2800012
+20206399
+6800cb01
+c000e39d
+6800c1bd
+203a63a9
+680084d1
+c4018000
+c4010000
+6800cb00
+207a0000
+704b0000
+680204e9
+d8400014
+98408400
+1c427e00
+98467c00
+24210023
+20206349
+704b0001
+20600000
+70480914
+2020636f
+c0200004
+c0208016
+20600000
+2040000c
+2020557d
+6800c7c5
+6000c172
+7047c400
+20600000
+7047c401
+20600000
+6800c3d6
+1fe67c0c
+2421000a
+6800c3d8
+6808c7c5
+98467c00
+20210006
+6800c3d8
+6000c172
+20200008
+6800843f
+c4030000
+2040001b
+24740000
+202055a0
+78347c00
+6800845a
+1ff1fe00
+c1878000
+68008460
+1ff1fe00
+c1800000
+20207fe9
+c0280003
+20600000
+704b6200
+204002aa
+70479c00
+68014682
+c2858012
+680246d3
+c30c0012
+2040056a
+680947c2
+18408401
+600947c2
+600944a1
+2040032d
+180a7e00
+6000c4a0
+6801cd2f
+6001c4a3
+204002d0
+20403418
+68014687
+600146ac
+70016d06
+58000000
+600146b0
+600146ae
+d8e00007
+204043ce
+204043ca
+6800c092
+2feffe01
+20408026
+6800c092
+2feffe00
+2040fddd
+202004f6
+70479f00
+204002c9
+58000005
+e0c08000
+d8c04b10
+20400578
+20207df4
+c0300004
+c0308026
+20600000
+793f8026
+204001b3
+204001d2
+6800cbfa
+c1ff8000
+20400018
+58000000
+60014c17
+200007d0
+6800cc17
+c07fadd4
+20400166
+242c0021
+24378021
+79200026
+58000000
+60014c17
+20402f20
+20400163
+20200383
+70119eff
+6800cbeb
+6000919f
+68024c21
+600211a0
+d8400006
+da20119e
+204001a0
+202001c0
+68014c17
+1fe0fe01
+60014c17
+204001d2
+2020000c
+6800c720
+c1008000
+680246d3
+c4088000
+c3818000
+c6130000
+d8e00003
+204043ce
+58000000
+600146ae
+6000c6b4
+60014c17
+204042ca
+20200034
+79200026
+20400038
+704bfa01
+20600000
+7041de20
+704be900
+704bf44e
+68024bf6
+202001b2
+c0380003
+20600000
+793f8026
+2040002d
+2040001a
+58000000
+60014c17
+200007d0
+6800cc17
+c07fadd4
+20400166
+242c0023
+24378023
+2040018e
+204002aa
+68024c12
+680a4bf6
+98467c00
+20228037
+79200026
+58000000
+60014c17
+20402f20
+20400163
+20200383
+70119eff
+6800cbeb
+6000919f
+68024c21
+600211a0
+d8400006
+da20119e
+204001a0
+202001c0
+68014c17
+1fe0fe01
+60014c17
+6800cd28
+1fe0fe01
+1fe17e01
+6000cd28
+c0000033
+c0008035
+20600000
+7041de20
+58000f0f
+60014c12
+e0a10000
+204001b3
+202001d2
+2040002d
+20200008
+2040003b
+20200008
+79200026
+2040003b
+704bfa01
+20600000
+7041de20
+704be900
+704bf44e
+68024bf6
+202001b2
+c0400008
+c0408004
+20600000
+204068a2
+58001122
+600147c2
+20600000
+204000e5
+20403e6e
+2040028e
+6808cb45
+2040680e
+20403e1e
+20400024
+58000000
+60014154
+204068a2
+20403e54
+20405810
+20405839
+2040582c
+20405818
+20400566
+2040036c
+20400338
+6801c700
+9a40fe00
+20406562
+2040031e
+df200003
+d8c04722
+20400370
+243402d0
+204002d2
+20600000
+204074b9
+d8c08c00
+d8a04876
+df200171
+20407f01
+580f0209
+e0a18000
+58120009
+e0a18000
+58100209
+e0a18000
+58000009
+e0a18000
+d8c08d71
+df200109
+20407f01
+70488d00
+7048856d
+5800401f
+600149db
+58006d04
+60014a44
+580016b0
+60014a4a
+58004876
+60014575
+20600000
+c0480005
+c048801f
+c049002f
+20600000
+6800cbef
+c000ffe7
+6800cbfa
+c000800c
+c001000f
+c0018012
+20202a8c
+704bfa11
+70119eaa
+20200014
+704bfa12
+70119e55
+20200014
+704bfa13
+70119e22
+6800cbeb
+1fe17e07
+6000919f
+68024c21
+600211a0
+7011a400
+da20119e
+d8400007
+204001a0
+20400127
+20207fe7
+6800cbfa
+c17f8000
+c0088025
+c0090027
+c0098029
+20600000
+704bfa02
+2020015f
+704bfa03
+2020015f
+704bfaff
+700a9939
+20407d86
+68024bca
+204001b2
+2020015f
+70478b01
+d8e00003
+204043d2
+58000000
+60014707
+7046a700
+2040405d
+204004b9
+204002aa
+68024c12
+6002477b
+20404366
+20200328
+c0500007
+c050800d
+c0510020
+c0518019
+c0520029
+20600000
+704d2a00
+204002aa
+2040019c
+7041bd00
+2040027f
+202004b6
+68014509
+c1000000
+68008441
+1feb7e00
+1fe67c0c
+20610000
+58000009
+60014496
+60014498
+20400428
+7047c401
+20600000
+68014682
+c3860000
+c3830000
+c3858000
+680246d3
+c3828000
+202033a7
+704b6300
+58000007
+60014496
+60014498
+7047c400
+70479c00
+204003b7
+20405816
+202041d9
+78347c00
+68120138
+79347e1a
+6012004c
+20402c21
+204074bd
+20403e9f
+2040027f
+6800c720
+1fe67c02
+2042855a
+20400364
+68108081
+1fe17ef7
+60108081
+6810807f
+79207e00
+6010807f
+6808c6ec
+202067dd
+c0580007
+c058800e
+c0590014
+c0598019
+c05a0020
+20600000
+704b6301
+6800c79f
+243a000b
+704b6114
+204004b9
+204003b7
+202041c3
+6800c808
+c1010000
+1fe0fe01
+6000c808
+7041e312
+2020340e
+6800c808
+c1810000
+70480800
+7041e30e
+2020340e
+6800c79f
+c000801c
+2020001e
+20400428
+7046c605
+d8e00001
+202041b9
+704aff00
+704b0100
+704b0a00
+202041d9
+0000209c
Index: patch/patch.format
===================================================================
--- /branch/mouse_project/YJX_Project/YJX_1059/JDT_172_BD_2.4G&BLE/patch/patch.format	(nonexistent)
+++ /branch/mouse_project/YJX_Project/YJX_1059/JDT_172_BD_2.4G&BLE/patch/patch.format	(working copy)
@@ -0,0 +1,3 @@
+
+
+
Index: patch/patch.prog
===================================================================
--- /branch/mouse_project/YJX_Project/YJX_1059/JDT_172_BD_2.4G&BLE/patch/patch.prog	(nonexistent)
+++ /branch/mouse_project/YJX_Project/YJX_1059/JDT_172_BD_2.4G&BLE/patch/patch.prog	(working copy)
@@ -0,0 +1,3612 @@
+define REVD
+define ROMCODE
+define PATCH
+INCLUDE "bt_format"
+org 0x0000		// start from patch ram address start
+define SIMPLE_PAIRING
+
+//define DONGLE
+define MOUSE
+define G24
+define BLE
+define CLASSIC_BT
+define MOUSE_SMOOTHER
+//define ADC_ENABLE
+//define P24G_LOG
+//define RF_DEBUG
+define BLE_FAST_CONN_ENABLE
+
+//define DEBUGLOG
+//define DEBUGLOG_CALLBACK
+//define DEBUGLOG_EVENT
+//define DEBUGLOG_CMD
+//define DEBUGLOG_MISC
+//define DEBUGLOG_STATUS
+//define DEBUGLOG_PARSE_LMP
+//define DEBUGLOG_SEND_LMP
+//define DEBUGLOG_CONN_SM
+//define DEBUGLOG_UPPER_SM
+
+
+p_start:
+	branch p_patch_array
+
+// zcode start
+p_zcode:
+
+//only for power on once
+p_wake_from_power:
+ifdef BLE
+	call p_mouse_data_init
+endif
+	fetch 1,mem_tx_power
+	store 1,mem_tx_power_temp
+	call power_ctrl_pac_succ_cnt_init
+	fetch 1,mem_ui_button_timeout
+	store 1,mem_combination_ui_button_count	//combination key timer init
+	call mouse_bt_discovery_button_down_disable
+	call p_mouse_spi_init
+ifdef MOUSE_SMOOTHER	
+	call p_drawing_optima_init
+endif
+	call p_mouse_cb_fuction
+	call p_mouse_wakeup_from_power
+	branch p_mouse_setting_config
+
+p_mouse_cb_fuction:
+ifdef G24
+	setarg p_mouse_g24_package_data
+	store 2,mem_cb_24g_data
+endif	
+ifdef BLE
+	setarg p_mouse_le
+	store 2,mem_cb_le_process
+	setarg p_le_mouse_bb_event_connect_complete
+	store 2,mem_cb_att_write
+endif
+ifdef CLASSIC_BT
+	setarg p_mouse_bt
+	store 2,mem_cb_bt_process
+endif	
+	setarg p_mouse_before_lpm
+	store 2,mem_cb_before_lpm
+	setarg p_mouse_priority_bb_event
+	store 2,mem_cb_bb_event_process
+	setarg p_mouse_idle
+	store 2,mem_cb_idle_process
+	setarg p_mouse_before_hibernate
+	store 2,mem_cb_before_hibernate
+	setarg p_mouse_bb_event_timer
+	store 2,mem_cb_event_timer
+	rtn	
+
+p_mouse_wakeup_from_power:
+	setarg 25
+	store 2,mem_24g_transmit_by_interrupt_exit_count_init
+	ncall p_mouse_24g_transmit_by_interrupt_exit_count_max,wake
+	call p_mouse_init_sunt
+	call p_mouse_sensor_powerdown
+p_mouse_wakeup_no_from_power:
+	fetch 1,mem_reconn_times_init
+	store 1,mem_reconn_times
+	rtn
+p_mouse_24g_transmit_by_interrupt_exit_count_max:
+	setarg 375
+	store 2,mem_24g_transmit_by_interrupt_exit_count_init
+	rtn
+
+	nop 1
+	nop 1
+	nop 1
+	nop 1
+	nop 1
+	nop 1
+	nop 1
+	nop 1
+	nop 1
+	nop 1
+	nop 1
+	nop 1
+	nop 1
+	nop 1
+	nop 1
+	nop 1
+	nop 1
+	nop 1
+	nop 1
+	nop 1
+	nop 1
+	
+
+p_patch_array:
+	bbit1 8,pf_patch_ext
+	//patch00_0 and patch11_2 are unuseful because of otp
+	beq patch00_1,p_soft_reset_1
+	beq patch00_2,p_soft_reset_2
+	beq patch10_5,p_shutdown_radio
+	beq patch11_1,p_set_freq_tx
+ifdef CLASSIC_BT
+	beq patch03_3,p_page_wait_fhs_reply_ok
+	beq patch04_6,p_role_switch_master
+	beq patch09_0,p_quit_connection_cont
+	beq patch09_2,p_prepare_tx
+	beq patch0a_1,p_slave_conn_recv_packet
+ 	beq patch0b_1,p_process_dmh
+	beq patch14_7,p_lpm_dispatch
+	beq patch15_5,p_lpm_set_mult
+	beq patch19_3,app_bt_start_reconnect+3
+	beq patch1d_1,p_mouse_bb_disconnected
+endif	
+	beq patch14_1,p_init_param
+	beq patch16_1,p_lpm_check_wake_lock
+	beq patch16_2,p_g24_dispatch
+	beq patch18_4,p_device_init
+	beq patch1c_3,p_mouse_seting_dpi
+	beq patch1c_6,p_mouse_motion
+	beq patch1d_2,p_mouse_bb_event_discovery_btn
+	beq patch1d_3,p_mouse_start_discovery
+	beq patch1d_4,p_mouse_stop_discovery
+	branch loop
+pf_patch_ext:
+ifdef BLE
+	beq patch27_1,p_le_slave_match
+	beq patch28_3,p_le_next_adv_channel
+	beq patch29_2,p_le_receive_skip
+	beq patch2a_7,p_le_update_param
+	beq patch2b_1,p_le_update_channel_map
+	beq patch2c_3,p_le_prepare_tx
+	beq patch2c_6,p_le_parse
+	beq patch2c_7,p_le_parse_l2cap
+	beq patch2d_2,p_le_adv_not_match
+	beq patch2e_7,p_le_lpm_setmult
+endif	
+ifdef CLASSIC_BT
+	beq patch20_5,p_hid_rx_process
+	beq patch30_0,p_parse_lmp_accepted
+	beq patch30_2,p_send_lmp
+	beq patch31_0,p_process_conn_sm
+endif
+	beq patch31_4,p_twspi_reset
+	beq patch31_5,p_spid_init
+	beq patch3f_2,p_check_51cmd_once_continue
+ifdef DEBUGLOG
+	beq patch2f_6,p_parse_lmp_opcode
+	beq patch37_6,p_process_upper_sm_reconn
+	beq patch3e_6,p_ui_ipc_send_event
+	beq patch3e_7,p_ui_ipc_send_cmd
+endif
+	branch loop
+	
+
+ifdef MOUSE
+p_soft_reset_1:
+	arg mem_sp_state,contw
+	arg 12,loopcnt
+	call clear_mem
+ifdef BLE
+	call p_mouse_le_txbuff_load
+endif
+	call init_memp
+	call rfcomm_init
+	call init_lmp
+	ncall lpm_disable_exen_output,wake
+	call ui_init+1
+	branch soft_reset+11
+	
+p_soft_reset_2:
+	call app_lpm_init,wake
+ifdef SIMPLE_PAIRING
+	call publickey_init
+else
+	call ssp_disable
+ifdef SECURE_CONNECTION
+	call publickey_init
+
+endif
+endif
+	call lpm_recover_clk,wake
+p_sp_cal_loop:
+	call sp_calc_sequence
+	fetch 1,mem_ssp_enable
+	branch main_loop,blank
+	fetch 1,mem_sp_local_key_invalid // simple pairing is not ready
+	branch p_sp_cal_loop,blank
+	branch main_loop
+
+p_init_param:
+	setarg param_le_version
+	store 3,mem_lmp_version
+	setarg param_le_subversion
+	store 2,mem_lmp_version+3
+	branch init_param+12
+
+p_lpm_check_wake_lock:
+	rtnmark1 mark_24g
+	fetch 1,mem_mouse_multi_led_state
+	nbranch disable_blank,blank
+	fetch 1,mem_mouse_multi_led_blink_count
+	nbranch disable_blank,blank
+	fetch 1,mem_mouse_clear_sensor_data_flag
+	branch disable_blank,blank
+	fetch 1,mem_mouse_le_conn_param_reject
+	beq LE_LPM_DISABLE,disable_blank
+ifdef CLASSIC_BT	
+	fetch 2,mem_sdp_remote_cid
+	nbranch disable_blank,blank
+endif
+	fetch 1,mem_mouse_wheel_trigger
+	nbranch disable_blank,blank
+	branch enable_blank
+
+
+ifdef G24
+p_g24_dispatch:
+	rtnmark0 mark_24g
+	fetch 1,mem_24g_transmit_by_interrupt
+	beq G24_TX_TIMER_INT_ENABLE,p_g24_transmit_by_interrupt
+p_g24_transmit_process:
+	call p_g24_txdata_prep
+	nbranch p_g24_nodata_transmit,user
+	call p_g24_rf_sta_check
+p_g24_transmit_start:
+	call p_g24_transmit_packet
+	fetch 1,mem_24g_pairing_sm
+	rtnne STATE_24G_PAIRING_SUCCESS
+	call power_ctrl_start
+	call g24_long_sleep_shorter_param_update
+	fetch 1,mem_mouse_multi_led_state
+	beq ON,p_g24_transmit_by_interrupt_enable
+p_g24_short_sleep:	
+	call p_g24_lpm_wait
+	nrtn user
+	call p_clear_wake
+	setarg 60500
+	branch lpm_dispatch_sleep
+
+g24_long_sleep_shorter_param_update:
+//	fetch 1,mem_config_function_enable
+//	rtnbit1 ENABLE_SENSOR_MOTION_PIN
+	setarg G24_LONG_SLEEP_STEP1
+	store 3,mem_24g_enter_hibernate
+	jam 20,mem_24g_long_sleep_param_update_timer
+	rtn
+	
+p_g24_transmit_by_interrupt:
+	call p_g24_timer_check
+	nrtn user
+	call p_g24_interval_calibrate
+	fetch 2,mem_24g_transmit_by_interrupt_exit_count
+	increase 1,pdata
+	store 2,mem_24g_transmit_by_interrupt_exit_count
+	fetcht 2,mem_24g_transmit_by_interrupt_exit_count_init
+	isub temp,null
+	call p_g24_transmit_by_interrupt_exit,zero
+	branch p_g24_transmit_process
+p_g24_transmit_by_interrupt_exit:
+	jam G24_TX_TIMER_INT_DISABLE,mem_24g_transmit_by_interrupt
+	setarg 0
+	store 2,mem_24g_transmit_by_interrupt_exit_count
+	setarg 25
+	store 2,mem_24g_transmit_by_interrupt_exit_count_init
+p_g24_interval_min:
+	jam 0,mem_24g_pac_index
+	fetch 1,mem_24g_interval_min
+p_g24_current_interval_store:
+	store 1,mem_24g_interval
+	rtn
+p_g24_interval_max:
+	fetch 1,mem_24g_interval_max
+	branch p_g24_current_interval_store
+p_g24_interval_calibrate:
+	fetch 1,mem_24g_pac_index
+	increase 1,pdata
+	store 1,mem_24g_pac_index
+	beq 4,p_g24_interval_max
+	beq 5,p_g24_interval_min
+	rtn
+
+p_g24_nodata_transmit:
+	fetch 1,mem_24g_abort_pac
+	call p_g24_send_abort_packet,blank
+	fetch 1,mem_mouse_multi_led_blink_count
+	nrtn blank
+	fetch 1,mem_mouse_multi_led_state
+	rtneq ON
+p_g24_long_sleep:
+	call p_g24_lpm_wait
+	nrtn user
+	fetch 3,mem_24g_enter_hibernate
+	call clk2lpo
+	storet 4,mem_sleep_counter
+  	branch lpm_sleep
+
+p_g24_lpm_wait:
+	enable user
+	call lpo_calibration
+	fetch 3,mem_clks_per_lpo
+	branch disable_user,blank
+	fetch 1,mem_lpm_mode
+	branch disable_user,blank
+	fetch 1,mem_24g_transmit_by_interrupt
+	beq G24_TX_TIMER_INT_ENABLE,disable_user
+	branch p_mouse_setgpio_lpm
+
+p_g24_send_abort_packet:
+	jam 1,mem_24g_abort_pac
+	jam 0,mem_24g_rf_hop_ch
+	call p_g24_transmit_rf_ctrl_clear
+	store 1,mem_24g_txbuf
+	setarg 0
+	store 7,mem_24g_txbuf+1
+	fetch 4,mem_24g_device_addr
+	store 4,mem_24g_txbuf+8
+	jam 12,mem_24g_datalen
+	fetch 1,mem_24g_data_type
+	set1 bit_abort,pdata
+	store 1,mem_24g_data_type
+	call p_g24_txdata_enable_tx
+	branch p_g24_transmit_start
+
+p_g24_set_device_addr:
+	fetch 4,mem_lap
+	store 4,mem_24g_device_addr
+	rtn
+
+p_g24_transmit_rf_sta_init:
+	jam 1,mem_24g_rf_last_sta
+	jam 0,mem_24g_sync_cnt
+p_g24_transmit_rf_ctrl_clear:	
+	fetch 1,mem_24g_data_type
+	and_into bits_data,pdata
+	store 1,mem_24g_data_type
+	rtn
+	
+p_g24_hop_ch_enable:
+	fetch 1,mem_24g_data_type
+	set1 bit_hop,pdata
+	store 1,mem_24g_data_type
+	//update txpayload
+	store 1,mem_24g_txpayload
+	rtn
+
+p_g24_hop_enable_packet:
+	fetch 1,mem_24g_data_type
+	rtnbit0 bit_hop
+p_g24_hop_ch_disable:
+	fetch 1,mem_24g_data_type
+	set0 bit_hop,pdata
+	store 1,mem_24g_data_type
+	store 1,mem_24g_txpayload
+	call power_ctrl_pac_succ_decrs
+	branch p_g24_ch	
+
+p_g24_rf_hop_fastly_exit:
+	call power_ctrl_pac_succ_decrs
+	jam 0,mem_24g_hop_fastly_cnt
+	branch p_g24_transmit_rf_ctrl_clear
+
+p_g24_transmit_hop_pac_succ_wo_hop:
+	jam 2,mem_24g_sync_cnt
+p_g24_transmit_hop_pac_succ:
+	jam 1,mem_24g_rf_last_sta
+	jam 0,mem_24g_rf_hop_ch
+	branch p_g24_transmit_rf_ctrl_clear
+
+p_g24_transmit_succ_rf_config:
+	fetch 1,mem_24g_rf_work_stage
+	beq 3,p_g24_transmit_hop_pac_succ
+	fetch 1,mem_24g_data_type
+	isolate0 bit_hop,pdata
+	branch p_g24_transmit_rf_sta_init,true
+	fetch 1,mem_24g_rf_work_stage
+	beq 1,p_g24_transmit_hop_pac_succ_wo_hop
+	beq 2,p_g24_transmit_hop_pac_succ
+	rtn
+
+p_g24_rf_sta_check:
+	fetch 1,mem_24g_pairing_sm
+	rtnne STATE_24G_PAIRING_SUCCESS
+	call p_g24_rf_laststa_synccnt_check
+	ncall p_g24_rf_sync_cnt_check,user2
+	rtn
+
+p_g24_rf_laststa_synccnt_check:
+	disable user2
+	fetch 1,mem_24g_rf_last_sta
+	rtnne 1
+	fetch 1,mem_24g_sync_cnt
+	rtnne 0
+	jam 1,mem_24g_rf_work_stage
+	jam 4,mem_24g_max_retry
+	branch enable_user2
+
+p_g24_rf_sync_cnt_check:
+	fetch 1,mem_24g_sync_cnt
+	branch p_g24_rf_hop_attemp,blank
+	increase -1,pdata
+	store 1,mem_24g_sync_cnt
+	jam 2,mem_24g_rf_work_stage
+	jam 4,mem_24g_max_retry
+	branch p_g24_ch
+
+p_g24_rf_hop_attemp:
+	jam 3,mem_24g_rf_work_stage
+	fetch 1,mem_24g_rf_hop_ch
+	nbranch p_g24_rf_hop_attemp_again,blank
+	jam 2,mem_24g_max_retry
+	branch p_g24_ch
+
+p_g24_txdata_prep:
+	fetch 1,mem_24g_pairing_sm
+	bne STATE_24G_PAIRING_SUCCESS,p_g24_pairing_sm	
+p_g24_txdata_prep_packeage_data:
+	call p_g24_package_data
+p_g24_txdata_enable_tx:	
+	call p_g24_transmit_prep
+	jam ENSURE_ON_24G,mem_24g_ensure
+	rtn
+
+p_g24_package_data:
+	fetch 2,mem_cb_24g_data
+	call callback_func
+	branch p_g24_accumulate_mouse_data,user
+	fetch 7,mem_24g_txbuf+1	//mouse data
+	rtn blank
+	branch enable_user	// retransmit
+p_g24_accumulate_mouse_data:
+	call p_mouse_data_xy_release
+	jam 0,mem_24g_abort_pac
+	add rega,1,pdata
+	store 1,mem_24g_datalen
+	call p_g24_transmit_rf_ctrl_clear
+	store 1,mem_24g_txbuf
+	ifetcht 1,contw
+	ifetch 1,regb
+	ior temp,pdata
+	istore 1,contw	//key
+	increase 1,regb
+	ifetch 4,regb
+	istore 4,contw	//x,y
+	increase 4,regb
+	arg mem_24g_txbuf+6,contw
+	arg 2,loopcnt
+p_g24_accumulation_loop:
+	ifetch 1,regb
+	ifetcht 1,contw	//wheel,twheel
+	iadd temp,pdata
+	istore 1,contw
+	increase 1,regb
+	loop p_g24_accumulation_loop
+	rtn
+
+p_g24_rf_hop_attemp_again:
+	fetch 1,mem_24g_rf_hop_ch
+	bne 1,p_g24_transmit_rf_ctrl_clear
+p_g24_rf_hop_fastly:
+	fetch 1,mem_24g_hop_fastly_cnt
+	increase 1,pdata
+	store 1,mem_24g_hop_fastly_cnt
+	beq 4,p_g24_rf_hop_fastly_exit
+	call p_g24_ch
+	jam 2,mem_24g_max_retry
+p_g24_transmit_packet:
+	jam 0,mem_24g_retry
+p_g24_transmit_loop:
+	arg param_rx_setup,timeup
+	until clkn_rt,meet
+	call p_g24_transmit_receive_ack
+//	fetch 1,mem_24g_no_ack	//tx noack
+//	rtneq no_ack_24g
+	nbranch p_g24_retransmit,sync
+	nbranch p_g24_retransmit,user3
+	call p_g24_txbuf_clear
+	call p_g24_ackpayload_parse
+	call power_ctrl_pac_succ_incrs
+p_g24_transmit_next_packet:
+	fetch 1,mem_24g_pid
+	increase 1,pdata
+	store 1,mem_24g_pid
+	call p_g24_hop_enable_packet
+	fetch 1,mem_24g_pairing_sm
+	bne STATE_24G_PAIRING_SUCCESS,p_g24_paring_mode_start
+	call p_g24_transmit_succ_rf_config
+p_g24_transmit_abandon:
+	setarg 0
+	store 4,mem_24g_ensure
+	store 1,mem_24g_hop_pac_retry
+	rtn
+
+p_g24_txbuf_clear:
+	arg 4,loopcnt
+	arg mem_24g_txbuf,contw
+	branch memset0
+
+p_g24_transmit_receive_ack:
+	disable user3
+	call p_g24_transmit
+	
+ifdef RF_DEBUG
+	call test_gpio_low
+endif
+
+//	fetch 1,mem_24g_no_ack
+//	beq no_ack_24g,p_g24_transmit_no_ack	//tx no ack
+	force 0,radio_ctrl
+	fetch 4,mem_24g_addr
+	iforce access
+	fetcht 1,mem_last_freq
+	call set_freq_rx
+	call rf_rx_enable
+	call p_g24_receive_rxon
+	call p_g24_end_of_packet,user3
+	rtn
+//p_g24_transmit_no_ack:
+//	call p_g24_end_of_packet
+//	branch p_g24_transmit_next_packet
+
+p_g24_retransmit:
+	fetch 1,mem_24g_abort_pac
+	nrtn blank
+	fetch 2,mem_24g_txfail_cnt
+	increase 1,pdata
+	store 2,mem_24g_txfail_cnt	
+	fetch 1,mem_24g_txfail_cnt+1
+	bbit1 4,g24_stop_24g_mode
+
+	fetch 1,mem_24g_pairing_sm
+	bne STATE_24G_PAIRING_SUCCESS,p_g24_tx_paring_retry
+
+	call p_g24_tx_hop_ch_process
+	branch p_g24_transmit_loop
+
+p_g24_tx_paring_retry:
+	fetch 1,mem_24g_txfail_cnt
+	rtnne 0xff
+p_g24_tx_attempt_fail:
+	setarg 0
+	store 2,mem_24g_txfail_cnt
+	branch g24_stop_24g_mode
+
+p_g24_tx_fast_hop:
+	call power_ctrl_txpower_incrs
+	call power_ctrl_pac_succ_decrs
+	branch p_g24_ch
+
+p_g24_tx_hop_ch_process:
+	fetch 1,mem_24g_retry
+	sub pdata,11,null
+	nbranch  p_g24_tx_fast_hop,positive		// >= 6+6 hop fast    fail packet count >= 2
+	increase 1,pdata
+	store 1,mem_24g_retry
+	beq 2,p_g24_hop_ch_enable
+	beq 6,p_g24_hop_ch_disable
+	beq 8,p_g24_hop_ch_enable
+	beq 12,p_g24_hop_ch_disable
+	rtn
+
+p_g24_ackpayload_parse:
+	call p_g24_read_len_pid_crc
+	fetch 1,mem_24g_rxdata_length	//ack payload length 
+	rtn blank
+	iforce loopcnt
+	arg mem_24g_rxbuf+2,contr
+	arg mem_24g_rxpayload,contw	//ack payload buffer 
+	branch memcpy
+
+p_g24_pairing_sm:
+	jam ZCODE_90,mem_zcode_temp_param0
+	branch p_zcode_entrance
+
+p_g24_paring_mode_start:
+	call power_ctrl_pac_succ_cnt_init
+p_g24_paring_mode:
+	jam ZCODE_91,mem_zcode_temp_param0
+	branch p_zcode_entrance
+
+p_g24_auto_pair_start:
+	jam ZCODE_70,mem_zcode_temp_param0
+	branch p_zcode_entrance
+
+p_g24_check_51cmd_stop_24g:
+	set0 mark_24g,mark
+	call le_disable
+p_mouse_disable_g24_pairing_flag:
+	arg MOSUE_24G_PAIRING_FLAG,queue
+	branch mouse_disable_function_flag
+
+p_g24_put_data_in_buff:
+	storet 1,mem_24g_datalen
+	copy temp,loopcnt
+	arg mem_24g_txbuf,contw
+	copy rega,contr
+	branch memcpy
+
+p_g24_read_len_pid_crc:
+//read control
+	fetch 1,mem_24g_rxbuf+1
+	rshift3 pdata,pdata
+	store 1,mem_24g_rxdata_length
+//get crc
+	increase 1,pdata
+	arg mem_24g_rxbuf+1,contr
+	iadd contr,contr
+	ifetch 3,contr
+	store 3,mem_24g_sta_crc
+//read pid
+	fetch 1,mem_24g_rxbuf+1
+	rshift pdata,pdata
+	and pdata,0x03,pdata
+	store 1,mem_24g_sta_pid
+	rtn
+
+p_g24_update_addr_and_synccrc8:	
+	store 4,mem_24g_addr
+//output: 1BYTE crc8
+p_g24_syncword_crc8:
+	arg 0,rega
+	arg 4,loopcnt
+	arg mem_24g_addr,contr
+p_g24_syncword_crc8_loop:
+	ifetch 1,contr
+	iadd rega,rega
+	loop p_g24_syncword_crc8_loop
+	copy rega,pdata
+	store 2,mem_24g_syncword
+	fetch 1,mem_24g_syncword
+	fetcht 1,mem_24g_syncword+1
+	iadd temp,pdata
+	store 1,mem_24g_syncword_crc8
+	rtn
+
+p_g24_transmit_prep:
+ifdef P24G_LOG
+	fetch 1,mem_24g_paccnt
+	increase 1,pdata
+	store 1,mem_24g_paccnt
+endif
+
+// total length
+	fetch 1,mem_24g_datalen
+	increase 2,pdata
+	store 1,mem_24g_txlen
+// data type
+	fetch 1,mem_24g_data_type
+	store 1,mem_24g_txpayload
+//prepare 5bit payload length, 2bit PID, 1bit NO_ACK
+	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
+	storet 1,mem_24g_current_ch_number
+	rtn
+
+p_g24_ch_map_size:
+	call p_g24_ch_calc
+	increase 1,temp
+	and_into 3,temp //map size =4
+	rtn
+	
+p_g24_ch_calc:
+	fetch 1,mem_24g_addr	
+	and_into 0x03,pdata
+	mul32 pdata,4,rega			//24addr low bit0 bit1 ,00-map1,01-map2,10-map3,11-map4
+	setarg mem_24g_ch_map1
+	iadd rega,pdata
+	iadd temp,contr
+	ifetch 1,contr
+	store 1,mem_24g_ch
+	rtn
+
+p_g24_prep:
+	disable enable_crc
+	disable enable_white
+	setarg 0x555555
+	iforce crc24_init
+	fetch 1,mem_24g_ch
+	reverse pdata,temp
+	set1 1,temp
+	rshift temp,white_init
+	rtn
+
+//p_g24_receive_packet:
+//	call le_enable
+//	fetch 4,mem_24g_addr
+//	iforce access
+//	call set_sync_on
+//	fetcht 1,mem_24g_ch
+//	call set_freq_rx
+//	setarg param_pll_setup
+//	call sleep
+//	call rf_rx_enable
+p_g24_receive_rxon:
+
+ifdef RF_DEBUG
+	call test_h_l_h
+endif
+
+	call p_g24_prep
+	disable user3
+	enable decode_fec0
+	enable is_rx
+	disable is_tx
+	enable swfine
+	fetch 2,mem_24g_rx_window
+	iforce stop_watch
+	correlate null,timeout
+	nbranch p_g24_sync_timeout,sync
+
+ifdef RF_DEBUG
+	call test_gpio_low
+	call test_gpio_high
+endif
+
+	disable decode_fec0
+	enable decode_fec1
+	enable enable_white
+	enable enable_crc
+	call p_g24_receive_byte
+	store 1,mem_24g_get_syncword_crc8
+	fetcht 1,mem_24g_syncword_crc8
+	isub temp,null
+	nbranch p_g24_end_of_packet,zero
+	call p_g24_receive_byte
+	store 1,mem_24g_rxbuf	//device id
+//	fetch 1,mem_24g_mode
+//	sub pdata,rx_24g,null
+//	branch p_g24_receive_skip,zero
+	fetch 1,mem_24g_rxbuf
+	fetcht 1,mem_24g_data_type
+	icompare bits_data,temp
+	nbranch p_g24_end_of_packet,true
+p_g24_receive_skip:
+	call p_g24_receive_byte
+	istore 1,contw
+	rshift3 pdata,pdata
+	and pdata,0x1f,loopcnt	//max payload: 32bytes
+	branch p_g24rx_nopayload,zero
+p_g24rx_loop:
+	call p_g24_receive_byte
+	istore 1,contw
+	loop p_g24rx_loop
+p_g24rx_nopayload:
+ifdef MOUSE
+	//receive rssi hex
+	copy contw,rega
+	call p_g24_receive_byte
+	store 1,mem_rssi_hex_received
+	copy rega,contw
+endif
+	parse demod,bucket,24
+	enable swfine
+	arg param_sifs,stop_watch	
+	rshift32 pdata,pdata
+	rshift16 pdata,pdata
+	istore 3,contw
+	disable decode_fec1
+ifdef DONGLE
+	call save_rssi
+endif	
+	branch p_g24_end_of_packet,crc_failed
+
+ifdef RF_DEBUG
+	call test_gpio_low
+	call test_gpio_high
+endif
+
+	enable user3
+	fetch 1,mem_last_freq
+	add pdata,0,rega
+	call rf_write_freq
+	disable decode_fec0
+	call set_sync_on
+ifdef DONGLE
+	rtn
+endif
+	fetch 1,mem_rssi_hex_received
+p_rssi_signal:
+	copy pdata,rega
+	fetcht 1,mem_rssi_signal_index
+	setarg mem_rssi_signal_buf
+	iadd temp,contw
+	copy rega,pdata
+	istore 1,contw
+	increase 1,temp
+	and_into RSSI_BUF_LEN_SIGNAL,temp
+	storet 1,mem_rssi_signal_index
+	rtn
+
+p_g24_receive_byte:
+	parse demod,bucket,8
+	rshift3 pwindow,pdata
+	rtn
+	
+p_g24_sync_timeout:
+//ifdef DONGLE
+//	call p_rssi_noise
+//endif
+//	branch p_g24_end_of_packet
+p_g24_end_of_packet:
+	disable encode_fec1
+	disable decode_fec1
+	branch end_of_packet
+//ifdef RF_DEBUG
+//	call test_gpio_low
+//endif
+//	rtn
+
+p_g24_set_freq_tx:
+	call set_sync_on
+	fetcht 1,mem_24g_ch
+	branch set_freq_tx
+
+p_g24_transmit:
+	call le_enable
+	fetch 4,mem_24g_addr
+	iforce access
+	call p_g24_prep
+	call p_g24_set_freq_tx
+	set1 TXGFSK,radio_ctrl
+	enable encode_fec0
+	enable is_tx
+	disable is_rx
+
+ifdef RF_DEBUG
+	call test_gpio_high
+endif
+	
+	rshift16 access,pdata
+	rshift8 pdata,pdata
+	rshift4 pdata,pdata
+	inject mod,40
+	disable encode_fec0
+	enable encode_fec1
+	enable enable_white
+	enable enable_crc
+	fetch 1,mem_24g_syncword_crc8
+	inject mod,8
+	fetch 1,mem_24g_txlen
+	iforce loopcnt
+	arg mem_24g_txpayload,contr
+p_g24tr_loop:
+	ifetch 1,contr
+	inject mod,8
+	loop p_g24tr_loop
+ifdef DONGLE
+	fetch 1,mem_rssi_hex
+	inject mod,8
+endif
+
+ifdef P24G_LOG	
+	fetch 1,mem_tx_power
+	inject mod,8
+	fetch 1,mem_rssi_avg_received
+	inject mod,8
+	fetch 1,mem_24g_paccnt
+	inject mod,8
+endif
+
+	enable enable_parity
+	inject mod,24	//crc
+	disable enable_parity
+	until null,tx_clear
+	nop 100
+	disable encode_fec0
+	disable encode_fec1
+	rtn
+
+p_g24_timer_check:
+	call disable_user
+	fetcht 4,mem_24g_tx_btclk
+	copy clkn_bt,pdata
+	isub temp,null
+	ncall g24_timer_timeout,positive
+	copy pdata,regb
+	fetch 4,mem_24g_tx_btclk
+	fetcht 1,mem_24g_interval
+	iadd temp,temp
+	copy regb,pdata
+	isub temp,null
+	nrtn positive
+	set0 28,pdata
+	store 4,mem_24g_tx_btclk
+	branch enable_user
+
+//p_rssi_noise:
+//	call save_rssi
+//	rtn blank
+//	fetcht 1,mem_rssi_noise_index
+//	arg mem_rssi_noise_buffer,rega
+//	call p_rssi_store
+//	storet 1,mem_rssi_noise_index
+//	rtn
+	
+//p_rssi_store:
+//	copy rega,pdata
+//	iadd temp,contw
+//	fetch 1,mem_rssi
+//	istore 1,contw
+//	increase 1,temp
+//ifdef DONGLE
+//	and_into RSSI_BUF_LEN_NOISE,temp
+//endif
+//ifdef MOUSE
+//	and_into RSSI_BUF_LEN_SIGNAL,temp
+//endif
+//	rtn
+p_rssi_average:
+	arg 0,temp
+ifdef DONGLE
+	arg RSSI_BUF_LEN_NOISE+1,loopcnt
+endif
+ifdef MOUSE
+	arg RSSI_BUF_LEN_SIGNAL+1,loopcnt
+endif
+	copy rega,contr
+ifdef DONGLE
+	branch rssi_average_loop
+endif
+p_rssi_average_loop:
+	ifetch 1,contr
+	iadd temp,temp
+	loop p_rssi_average_loop
+	rshift3 temp,pdata
+	copy pdata,temp
+	rtnmark0 mark_24g
+	//2BCD
+	div pdata,10
+	call wait_div_end
+	quotient pdata
+	lshift4 pdata,pdata
+	remainder temp
+	ior temp,temp
+	rtn
+
+endif
+
+p_mouse_before_lpm:
+	rtnmark1 mark_24g
+	call p_mouse_le_txbuff_save
+	call p_mouse_setgpio_lpm
+	fetch 1,mem_context
+	bbit0 state_inconn,p_clear_wake
+	fetch 1,mem_lpm_current_mult
+	nrtn blank
+p_clear_wake:
+	setarg 0
+	store 8,mem_gpio_wakeup_low
+	rtn
+
+p_mouse_setgpio_lpm:
+	call p_mouse_set_sdio_high
+	call p_clear_wake
+p_mouse_setgpio_hibernate:	
+	call mouse_lpm_before_common
+	call p_flash_ncs_disable
+	hfetch 4,core_gpio_oe0
+	hfetcht 4,core_gpio_pu0
+	ior temp,temp
+	invert temp,temp
+	hstoret 4,core_gpio_pd0
+	hfetch 1,core_gpio_pd1
+	set0 2,pdata
+	hstore 1,core_gpio_pd1
+	hfetch 1,core_gpio_pd2	//flash hold pin gpio22
+	set0 6,pdata
+	hstore 1,core_gpio_pd2
+	fetcht 1,mem_config_bt_button_gpio
+	call p_mouse_gpio_set_float_comm
+p_mouse_multi_led_gpio_set_float:
+	fetcht 1,mem_mouse_multi_led_gpio
+p_mouse_gpio_set_float_comm:
+	set0 gpio_active_bit,temp
+	branch gpio_set_high_impedance
+
+p_mouse_set_sdio_high:
+	fetch 1,mem_mouse_init_sensor_reset_flag
+	rtn blank
+	branch p_mouse_seting_sensor_type// make sdio high to make 100uA less	
+
+p_device_init:
+	jam 0x86,0x895b
+	jam 0xa0,0x895c
+	call initialize_radio
+ifdef DEBUGLOG
+	call debuglog_init
+ifdef DEBUGLOG_STATUS
+	setarg DEBUGLOG_DTYPE_STATUS
+	store 2,mem_debuglog_datatype
+	setarg STATUS_LPM_WAKE
+	store 2,mem_debuglog_dataval
+	call debuglog_push	
+endif
+endif
+	call app_lpm_mult_enable
+	call enable_authrom
+	branch p_mouse_spi_init,wake
+p_device_wake_from_power:
+ifdef DEBUGLOG
+ifdef DEBUGLOG_STATUS
+	setarg DEBUGLOG_DTYPE_STATUS
+	store 2,mem_debuglog_datatype
+	setarg STATUS_CODE_WAKE
+	store 2,mem_debuglog_dataval
+	call debuglog_push
+endif
+endif
+ifdef RF_DEBUG
+	call test_gpio_init
+endif
+ifdef BLE_FAST_CONN_ENABLE
+	fetch 3,mem_le_lap+3
+	store 3,mem_le_lap_high_3B
+endif
+	call p_wake_from_power
+ifdef G24
+	fetch 1,mem_power_on_flag
+	bbit1 2,p_mouse_skip_24g_pair
+	call p_mouse_check_key_gpio
+	beq MOUSE_LM_BUTTON,p_mouse_24g_pairing_button
+p_mouse_skip_24g_pair:
+endif
+p_mouse_check_reconn_target:
+	call p_mouse_tx_power_init
+	fetch 1,mem_device_flag
+	beq MODE_24G_DEVICE,p_mouse_connect_24g_mode
+	beq MODE_DEFAULT_DEVICE,p_mouse_connect_24g_mode
+	call p_mouse_mode_bt_device1_multi_led_on
+	fetch 1,mem_xrecord_mode
+ifdef CLASSIC_BT
+	beq REC_3_MODE,p_mouse3_0_check_reconn_target
+endif
+ifdef BLE
+	beq REC_4_MODE,p_mouse4_0_check_reconn_target
+endif	
+	branch p_mouse_null_enter_hibernate_enable	//enter hibernate if it is in its factory state
+
+p_mouse_tx_power_init:
+	fetch 1,mem_tx_power_temp
+	store 1,mem_tx_power
+	rtn
+
+p_mouse_check_select_device_by_switch:
+	fetch 1,mem_config_function_enable
+	branch mouse_cheak_select_device_by_switch+1
+
+p_mouse_connect_24g_mode:
+	jam MODE_24G_DEVICE,mem_device_flag
+	call p_mouse_mode_24g_device_multi_led_on
+p_mouse_start_24g_mode:
+	call p_g24_factory_check
+	branch p_g24_auto_pair_start,user
+	call p_g24_empty_check 
+	branch p_g24_auto_pair_start ,user
+p_g24_start_24g_mode:
+	jam ZCODE_60,mem_zcode_temp_param0
+	branch p_zcode_entrance
+
+ifdef CLASSIC_BT
+p_mouse3_0_check_reconn_target:
+	fetch 6,mem_hci_plap
+	branch app_bt_start_discovery_short,blank
+	branch mouse3_0_check_reconn_target+3
+endif	
+
+ifdef BLE
+p_mouse4_0_check_reconn_target:
+	jam 1,mem_le_send_security_request_flag
+	jam 1,mem_mouse_le_reconnect_flag
+	fetch 2,mem_mouse_direct_timeout
+ifdef BLE_FAST_CONN_ENABLE
+	fetcht 1,mem_mouse_fast_conn_flag
+	sub temp,0xff,null
+	nbranch p_mouse4_0_check_reconn_target_next,zero
+	setarg 0x0258								//ble fast conn time 1min
+endif
+p_mouse4_0_check_reconn_target_next:
+	store 2,mem_mouse_direct_timer
+	call app_lpm_mult_disable
+	call p_le_check_adv_flag
+	setarg ADV_FLAG_BREDR_NOT_SUPPORTED
+	istore 1,contr
+
+	arg mem_le_scan_data,contr
+	call p_le_adv_data_update
+	
+	branch check_51cmd_adv
+
+p_le_check_adv_flag:
+	arg mem_le_adv_data,rega
+p_le_check_adv_flag_loop:
+	ifetch 1,rega	//length
+	rtn blank
+	iadd contr,rega
+	ifetch 1,contr	//type
+	rtneq 0x01
+	branch p_le_check_adv_flag_loop
+
+ifdef BLE_FAST_CONN_ENABLE
+p_mouse_le_fast_conn_disable:
+	jam 0x5a,mem_mouse_fast_conn_flag
+	rtn
+	
+p_mouse_fast_conn_init:
+	jam 0xff,mem_mouse_fast_conn_flag
+	jam 0x34,mem_xrecord_mode
+	setarg 0x0f0f0f
+	store 3,mem_le_lap
+	store 3,mem_le_lap+3
+	rtn	
+endif
+	
+endif
+
+ifdef G24
+p_mouse_24g_pairing_button:
+	jam ZCODE_61,mem_zcode_temp_param0
+	branch p_zcode_entrance
+endif
+	
+p_mouse_init_sunt:
+	call p_mouse_spi_init
+	call mouse_spi_sdio_gpio_pollup
+//	fetch 1,mem_config_sensor_type
+//	beq P3610,mouse_init_3610sensor
+p_mouse_init_sensor:
+	call mouse_read_sensor_id
+	beq P32XX_ID1,p_mouse_init_p32xx_id2_judge
+	beq P3065_ID1,p_mouse_p3065_init_param
+	call mouse_twspi_reset
+	nop 1000
+	branch p_mouse_init_sensor
+
+p_mouse_init_sensor_reset:
+	jam 1,mem_mouse_init_sensor_reset_flag
+	branch p_mouse_init_sunt
+	
+p_mouse_init_p32xx_id2_judge:
+	call p_mouse_sensor_poweron
+	fetch 1,mem_sensor_id2
+	beq MA8650_ID2,p_mouse_ma8650_init_param
+//	beq P8009_ID2,p_mouse_8009_init_param
+	branch mouse_init_p32xx_id2_judge+1
+
+p_mouse_ma8650_init_param:
+	jam MA8650,mem_config_sensor_type
+	setarg 0x8006	// reset to factory settings
+	call twspi_write
+	call delay_10ms
+	arg mem_sensor_8650_init,regc
+	call p_sensor_wr_seq
+	branch p_mouse_dpi_config
+
+p_sensor_wr_seq:
+	ifetch 2,regc
+	arg 0xffff,temp
+	isub temp,null
+	rtn zero
+	call twspi_write
+	increase 2,regc
+	branch p_sensor_wr_seq	
+
+//p_mouse_8009_init_param:
+//	setarg 0x16
+//	call twspi_read
+//	sub pdata,0xbd,null 
+//	nbranch p_mouse_init_sensor,zero
+//	setarg 0x19
+//	call twspi_read
+//	sub pdata,0x55,null 
+//	nbranch p_mouse_init_sensor,zero
+//	setarg 0x1b
+//	call twspi_read
+//	sub pdata,0x1d,null 
+//	nbranch p_mouse_init_sensor,zero
+//	jam P8009,mem_config_sensor_type
+//	arg mem_sensor_8009_init,regc
+//	call p_sensor_wr_seq
+//	branch p_mouse_dpi_config	
+
+p_mouse_p3065_init_param:
+	call p_mouse_sensor_poweron
+	fetch 1,mem_sensor_id2
+	beq P3065_XY_ID2,mouse_p3065xy_init_param
+	jam P3065,mem_config_sensor_type
+	rtn
+
+p_mouse_sensor_poweron:
+	call p_mouse_spi_init
+	setarg 0x8006	// reset to factory settings
+	call twspi_write
+	nop 12000
+//	arg mem_sensor_poweron_init,regc
+//	call p_sensor_wr_seq
+p_mouse_dpi_config:
+	fetch 1,mem_mouse_dpi
+	beq 0xff,p_mouse_dpi_config_default
+	branch p_mouse_seting_dpi
+p_mouse_dpi_config_default:
+	fetch 1,mem_config_sensor_motion
+	store 1,mem_mouse_dpi
+	branch p_mouse_seting_dpi
+
+p_mouse_sensor_powerdown:
+	call p_mouse_init_sunt
+	setarg 0x06
+	call twspi_read
+	or pdata,0x08,pdata
+	lshift8 pdata,pdata
+	add pdata,0x06,pdata
+	branch twspi_write	//make sdio high
+
+p_mouse_setting_config:
+	jam ZCODE_80,mem_zcode_temp_param0
+	branch p_zcode_entrance
+
+//ncs gpio output high
+p_flash_ncs_disable:
+	fetcht 1,mem_flash_ncs_gpio
+	branch gpio_out_inactive
+
+p_spid_init_flash:
+	jam 0x40,core_spid_ctrl
+	jam 0x0,core_spid_delay
+	hfetch 1,core_gpio_sel1
+	set0 0,pdata
+	set0 1,pdata
+	set1 3,pdata
+	set0 4,pdata
+	hstore 1,core_gpio_sel1
+	setarg 0
+	store 4,mem_spid_tbuf
+	
+	hfetch 1,core_gpio_pd3	//gpio24 can not be set pulldown
+	set0 0,pdata
+	hstore 1,core_gpio_pd3
+	rtn
+
+p_mouse_load_flash_info_check:
+	call p_flash_release_deep_power_down
+	call mouse_load_flash_flag
+	fetch 2,mem_store_flag
+	arg EEPROM_INIT_FLAG,temp
+	isub temp,null
+	branch p_mouse_load_flash_device_info,zero
+	storet 2,mem_store_flag
+	call mouse_ble_init_address
+	fetch 1,mem_config_sensor_motion
+	store 1,mem_mouse_dpi
+//	fetch 4,mem_mouse_24g_addr_init
+//	store 4,mem_mouse_24g_addr
+//	store 4,mem_24g_addr
+p_mouse_store_flash_device_info:
+	call p_flash_release_deep_power_down
+	call p_flash_erase_sector
+	call p_mouse_information_flash_parameters
+	call p_spid_write_flash
+	call p_wait_flash_done
+p_mouse_store_random_addr_increase_count:
+	call p_spid_init_flash
+	arg 2,temp
+	arg mem_random_addr_increase_count,rega
+	arg MOUSE_RANDOM_ADDR_COUNT_EEPROM_OFFSET,regb
+	fetch 3,mem_flash_base
+	iadd regb,pdata
+	call p_spid_write_flash
+	call p_wait_flash_done
+	call p_flash_deep_power_down
+p_mouse_spi_init:
+	jam 0x76,mem_spi_init_clk
+	branch mouse_spi_init
+
+p_mouse_set_24g_addr_flash:
+	arg 4,temp
+	arg mem_24g_addr,rega
+	arg MOUSE_G24_ADDR_EEPROM_OFFECT,regb
+	rtn
+	
+p_flash_erase_sector:
+	fetch 3,mem_flash_base
+	store 3,mem_spi_write_addr
+	call flash_erase_sector+2
+p_wait_flash_done:
+	setarg 100000	
+	call sleep
+	call spid_unlock_flash
+	setarg mem_spid_rbuf
+	hstore 2,core_spid_rxaddr
+	setarg FLASH_READ_SATUS
+	call spid_read_reg
+	bbit1 FLASH_STATUS_WIP,p_wait_flash_done
+	rtn
+
+p_spid_write_flash:
+	copy pdata,regc
+	copy rega,pdata
+	increase -4,pdata
+	copy pdata,regb
+	ifetch 4,regb
+	store 4,mem_write_flash_head_temp
+	copy regc,pdata
+	call spid_write_flash
+	fetch 4,mem_write_flash_head_temp
+	istore 4,regb
+	rtn
+
+p_mouse_information_flash_parameters:
+	setarg mem_mouse_information_end
+	arg mem_mouse_information_start,temp
+	isub temp,temp
+	fetch 3,mem_flash_base
+	arg mem_mouse_information_start,rega
+	rtn
+
+p_mouse_read_flash:
+	call p_flash_release_deep_power_down
+	call p_mouse_information_flash_parameters
+	branch spid_read_flash
+
+p_mouse_load_flash_device_info:	
+	call p_mouse_read_flash
+	call p_mouse_load_fast_conn_flag
+	call p_mouse_load_random_addr_increase_count
+	call p_mouse_check_select_device_by_switch
+	call mouse_select_reconn_device
+	fetch 4,mem_mouse_24g_addr
+	store 4,mem_24g_addr
+	rtn
+
+p_flash_deep_power_down:
+	jam FLASH_COMMAND_DEEP_POWER_DOWN,mem_temp
+p_spid_write_flash_cmd:
+	call p_spid_init_flash
+	call delay_nop100
+	call spid_unlock_flash
+	arg mem_write_flash_head_temp,rega
+	fetcht 1,mem_temp
+	call spid_write_flash_common
+	branch delay_nop100
+	
+p_flash_release_deep_power_down:
+	jam FLASH_COMMAND_RELEASE_DEEP_POWER_DOWN,mem_temp
+	branch p_spid_write_flash_cmd
+	
+p_g24_factory_check:
+	arg 2,loopcnt
+	arg mem_24g_addr,contr
+p_pdata_0xff_check:
+	call enable_user
+	setarg 0xffff
+p_pdata_0xff_check_loop:
+	ifetcht 2,contr
+	isub temp,null
+	ncall disable_user,zero
+	loop p_pdata_0xff_check_loop
+	rtn
+
+p_g24_empty_check:
+	arg 2 ,loopcnt 
+	arg mem_24g_addr ,contr 
+
+p_pdata_0x00_check:
+	call enable_user 
+	setarg 0x0000 
+
+p_pdata_0x00_check_loop:
+	ifetcht 2 ,contr 
+	isub temp ,null 
+	ncall disable_user ,zero 
+	loop p_pdata_0xff_check_loop 
+	rtn 
+
+ifdef G24
+p_mouse_g24_package_data:
+	call mouse_g24_package_data
+	fetch 2,mem_mouse_z
+	rtn blank
+p_g24_transmit_by_interrupt_enable:
+	jam G24_TX_TIMER_INT_ENABLE,mem_24g_transmit_by_interrupt
+	setarg 0
+	store 2,mem_24g_transmit_by_interrupt_exit_count
+	rtn
+endif	
+	
+ifdef BLE
+p_mouse_le_txbuff_save:
+	arg mem_le_tx_buffer0,contr
+	arg mem_le_tx_buffer0_omemalloc,contw
+	call p_mouse_le_txbuff_copy
+	arg mem_le_tx_buffer1,contr
+	call p_mouse_le_txbuff_copy
+	arg mem_le_tx_buffer2,contr
+	call p_mouse_le_txbuff_copy
+	arg mem_le_tx_buffer3,contr
+p_mouse_le_txbuff_copy:	
+	arg 27,loopcnt
+	branch memcpy
+
+p_mouse_le_txbuff_load:
+	arg mem_le_tx_buffer0_omemalloc,contr
+	arg mem_le_tx_buffer0,contw
+	call p_mouse_le_txbuff_copy
+	arg mem_le_tx_buffer1,contw
+	call p_mouse_le_txbuff_copy
+	arg mem_le_tx_buffer2,contw
+	call p_mouse_le_txbuff_copy
+	arg mem_le_tx_buffer3,contw
+	branch p_mouse_le_txbuff_copy
+
+p_mouse_le:
+	call le_fifo_check_nearly_full
+	nrtn blank
+ifdef BLE_FAST_CONN_ENABLE
+	fetch 1,mem_mouse_fast_conn_flag
+	beq 0xff,p_mouse_le_next
+endif
+	fetch 1,mem_le_connect_status_flag
+	and pdata,0x03,pdata
+	rtnne 0x03
+p_mouse_le_next:
+	fetch 1,mem_mouse_clear_sensor_data_flag
+	call p_mouse_clear_sensor_data,blank
+	fetch MOUSE_FLAG_LEN,mem_mouse_flag
+	bbit1 MOUSE_BT_DISCOVERY_BUTTON_DOWN_FLAG,mouse_le_send_empty_packet
+	call mouse_motion
+	nrtn user
+	call p_mouse_le_current_mult_update
+	call p_mouse_data_xy_release
+	call p_mouse_wheel_trigger
+p_mouse_data_push:
+	arg mem_mouse_key,rega
+	call queue_push
+	call p_mouse_queue_increase,user
+	
+ifdef DEBUGLOG
+ifdef DEBUGLOG_MISC
+	setarg DEBUGLOG_DTYPE_MISC
+	store 2,mem_debuglog_datatype
+	setarg MISC_LOST_MOUSEDATA
+	store 2,mem_debuglog_dataval
+	nbranch debuglog_push,user
+
+	setarg MISC_PUSH_MOUSEDATA
+	store 2,mem_debuglog_dataval
+	call debuglog_push
+endif
+endif
+	rtn
+
+p_mouse_le_current_mult_update:
+//	fetch 1,mem_config_function_enable
+//	rtnbit1 ENABLE_SENSOR_MOTION_PIN
+	jam 0,mem_lpm_mult
+	jam 30,mem_mouse_le_current_mult_timer
+	rtn	
+
+p_mouse_data_xy_release:
+//	fetch 1,mem_config_function_enable
+//	rtnbit1 ENABLE_SENSOR_MOTION_PIN
+	fetch 1,mem_mouse_long_mult_flag
+	rtnne 1
+	setarg 0
+	store 1,mem_mouse_long_mult_flag
+	store 4,mem_mouse_x
+	branch p_mouse_sensor_poweron
+
+p_mouse_data_init:
+	jam 7,mem_mouse_data_queue	//data length
+	jam 4,mem_mouse_data_queue+1	//fifo depth
+	setarg mem_mouse_data_queue
+	store 2,mem_queue_ptr
+	branch queue_init
+
+p_mouse_queue_increase:
+	fetch 1,mem_mouse_data_queue_num
+	increase 1,pdata
+	store 1, mem_mouse_data_queue_num
+	rtn
+	
+p_mouse_data_pull:
+	arg mem_mouse_key,rega
+	call queue_pop
+	branch p_mouse_fill_data_le,user
+	rtn
+
+p_mouse_fill_data_le:
+ifdef DEBUGLOG
+ifdef DEBUGLOG_MISC
+	setarg DEBUGLOG_DTYPE_MISC
+	store 2,mem_debuglog_datatype
+	setarg MISC_PULL_MOUSEDATA
+	store 2,mem_debuglog_dataval
+	call debuglog_push
+
+	setarg DEBUGLOG_DTYPE_MISC
+	store 2,mem_debuglog_datatype
+	fetch 1,mem_mouse_x
+	store 1,mem_debuglog_dataval
+	fetch 1,mem_mouse_y
+	store 1,mem_debuglog_dataval+1
+	call debuglog_push	
+endif
+endif
+	call le_clear_md
+	fetch 1,mem_mouse_data_queue_num
+	sub pdata,1,null
+	ncall le_set_md,positive
+	fetch 1,mem_mouse_data_queue_num
+	rtn blank
+	increase -1,pdata
+	store 1, mem_mouse_data_queue_num
+	branch mouse_fill_data_le
+	
+endif
+
+p_mouse_wheel_trigger:
+	fetch 2,mem_mouse_z
+	rtn blank
+	jam 1,mem_mouse_wheel_trigger
+	jam 10,mem_mouse_wheel_trigger_timer
+	rtn
+
+ifdef CLASSIC_BT
+p_mouse_bt:
+	rtn attempt
+	fetch 1,mem_app_handshake_flag
+	rtn blank
+	call l2cap_malloc_is_fifo_nearly_full
+	nrtn blank
+	fetch 1,mem_mouse_clear_sensor_data_flag
+	call p_mouse_clear_sensor_data,blank
+	fetch MOUSE_FLAG_LEN,mem_mouse_flag
+	bbit1 MOUSE_BT_DISCOVERY_BUTTON_DOWN_FLAG,mouse_send_empty_data
+	bbit1 MOUSE_BT_DISCOVERY_BUTTON_LONG_DOWN_FLAG,mouse_send_empty_data
+	call mouse_motion
+	nrtn user
+	call p_mouse_le_current_mult_update
+	call p_mouse_data_xy_release
+	call p_mouse_wheel_trigger
+	fetch 1,mem_mouse_bt_boot_mode
+	beq 1,p_mouse_send_data_boot_mode	//boot
+	fetch 1,mem_mouse_bt_send_first_package_flag
+	rtn blank
+	branch mouse_send_data	//report
+
+p_mouse_send_data_boot_mode:
+	fetch 1,mem_mouse_key
+	store 1,mem_mouse_bt_boot_data
+	fetch 1,mem_mouse_x
+	istore 1,contw
+	fetch 1,mem_mouse_y
+	istore 1,contw
+	fetch 2,mem_mouse_z
+	istore 2,contw
+
+	arg 7,rega
+	call hid_malloc_tx_buff
+	fetch 2,mem_hid_int_remote_cid
+	istore 2,contw
+	setarg 0x02a1
+	istore 2,contw
+	fetch 5,mem_mouse_bt_boot_data
+	istore 5,contw
+	rtn
+
+p_mouse_clear_sensor_data:
+	jam 1,mem_mouse_clear_sensor_data_flag
+	call le_set_config_more_data
+	branch p_mouse_init_sensor_reset
+endif
+
+//p_mouse_clear_sensor_data:
+//	call le_set_config_more_data
+//	jam 1,mem_mouse_clear_sensor_data_flag
+//	branch p_mouse_sensor_poweron
+
+p_mouse_idle:
+	call ui_check_paring_button
+//	call p_mouse_dpi_check
+	branch mouse_wheel_check
+
+p_mouse_dpi_check:
+	fetcht 1,mem_dpi_button_gpio
+	call p_gpio_set_input_pd
+	fetcht 1,mem_dpi_button_gpio
+	call gpio_get_bit
+	branch p_mouse_dpi_up,true
+	call p_gpio_set_input_pu
+p_mouse_dpi_down:
+	fetch 1,mem_mouse_dpi_button_state
+	rtneq DPI_BUTTON_STATE_DOWN
+	jam DPI_BUTTON_STATE_DOWN,mem_mouse_dpi_button_state
+	fetch 1,mem_mouse_dpi
+	increase 1,pdata
+	and pdata,0x03,pdata
+	store 1,mem_mouse_dpi
+	increase 2,pdata
+	store 1,mem_mouse_multi_led_blink_count
+	call p_mouse_dpi_multi_led_blink
+	call mouse_seting_dpi
+	branch p_mouse_store_flash_device_info
+p_mouse_dpi_up:
+	call p_gpio_set_input_pu
+	branch mouse_dpi_up
+
+p_mouse_priority_bb_event:
+	copy regc,pdata
+ifdef BLE	
+	beq BT_EVT_LE_CONNECTED,p_mouse_le_bb_event_connected
+	beq BT_EVT_LE_DISCONNECTED,p_mouse_le_bb_disconnected
+	beq BT_EVT_LE_ENC_INFO,p_mouse_le_enc_info
+	beq BT_EVT_LE_START_ENC,p_mouse_le_ll_start_encryt
+	beq BT_EVT_LE_PARSE_CONN_PAPA_UPDATE_RSP,p_mouse_le_conn_param_update_rsp_recieved
+endif
+ifdef CLASSIC_BT
+	beq BT_EVT_RECONN_FAILED,p_mouse_bb_event_reconn_failed
+	beq BT_EVT_RECONN_PAGE_TIMEOUT,p_mouse_bb_event_reconn_timeout
+	beq BT_EVT_VIRTUAL_CABLE_UNPLUG,p_mouse_irtual_cable_unplug
+	beq BT_EVT_SWITCH_NOT_ACCEPT,app_bt_role_switch
+	beq BT_EVT_SNIFF_NOT_ACCEPT,p_mouse_sniff_not_accept
+	beq BT_EVT_BB_CONNECTED,p_mouse_bb_event_connected
+	beq BT_EVT_BB_DISCONNECTED,p_mouse_bb_event_disconnected
+	beq BT_EVT_SWITCH_SUCCESS_MASTER,p_mouse_enter_sniff_check
+endif
+ifdef G24
+	beq BT_EVT_24G_PAIRING_COMPLETE,p_mouse_24g_pairing_complete
+	beq BT_EVT_24G_ATTEMPT_FAIL,p_mouse_24g_attempt_fail
+	beq BT_EVT_24G_ATTEMPT_SUCCESS,p_mouse_24g_attempt_success
+endif
+	branch mouse_priority_bb_event+1
+
+ifdef BLE
+p_mouse_le_bb_event_connected:
+	call p_mouse_init_sensor_reset
+	jam ZCODE_B0,mem_zcode_temp_param0
+	branch p_zcode_entrance
+
+p_mouse_le_bb_disconnected:
+	call p_mouse_sensor_powerdown_check	//sensor power down
+	jam ZCODE_A2,mem_zcode_temp_param0
+	branch p_zcode_entrance
+
+p_mouse_le_enc_info:
+p_app_updata_le_param:
+	jam BT_CMD_LE_UPDATE_CONN,mem_fifo_temp
+	branch ui_ipc_send_cmd
+
+p_mouse_le_ll_start_encryt:
+	jam ZCODE_B3,mem_zcode_temp_param0
+	branch p_zcode_entrance
+
+p_mouse_le_conn_param_update_rsp_recieved:
+	jam ZCODE_A1,mem_zcode_temp_param0
+	branch p_zcode_entrance
+endif
+
+
+ifdef CLASSIC_BT
+p_mouse_bb_event_reconn_timeout:
+p_mouse_bb_event_reconn_failed:
+	jam ZCODE_A3,mem_zcode_temp_param0
+	branch p_zcode_entrance
+
+p_mouse_irtual_cable_unplug:
+	call mouse_irtual_cable_unplug
+	branch app_bb_hibernate
+
+p_mouse_sniff_not_accept:
+	jam ZCODE_B1,mem_zcode_temp_param0
+	branch p_zcode_entrance
+
+p_mouse_bb_event_connected:
+	call p_mouse_init_sensor_reset
+	call p_mouse_null_enter_hibernate_disable
+	call p_mouse_discovey_led_blink_off
+	jam 0,mem_mouse_send_switch_req_timer
+	branch mouse_stop_discovery
+
+p_mouse_bb_event_disconnected:
+	call p_mouse_sensor_powerdown_check	//sensor power down
+	jam ZCODE_B4,mem_zcode_temp_param0
+	branch p_zcode_entrance
+
+p_mouse_enter_sniff_check:
+	jam ZCODE_B2,mem_zcode_temp_param0
+	branch p_zcode_entrance
+endif
+
+ifdef G24
+p_mouse_24g_pairing_complete:
+	call p_mouse_init_sensor_reset
+	jam ZCODE_92,mem_zcode_temp_param0
+	branch p_zcode_entrance
+
+p_mouse_24g_attempt_fail:
+	call p_mouse_sensor_powerdown_check	//sensor power down
+	jam ZCODE_A0,mem_zcode_temp_param0
+	branch p_zcode_entrance
+
+p_mouse_24g_attempt_success:
+	call p_mouse_null_enter_hibernate_disable
+	call p_mouse_init_sensor_reset
+	call mouse_no_data_timer_init
+
+p_mouse_store_24g_device_2flash:
+	call mouse_cheak_select_24gdevice 
+	branch p_mouse_store_flash_device_info
+endif
+
+p_mouse_before_hibernate:
+	call p_mouse_sensor_powerdown_check
+	jam ZCODE_A4,mem_zcode_temp_param0
+	branch p_zcode_entrance
+
+p_mouse_sensor_powerdown_check:
+	fetch 1,mem_mouse_init_sensor_reset_flag
+	rtn blank
+	jam 0,mem_mouse_init_sensor_reset_flag
+	branch p_mouse_sensor_powerdown
+
+
+p_mouse_bb_event_timer:
+ifdef ADC_ENABLE
+	call p_mouse_adc_read
+	call p_mouse_low_voltage_led_timer
+endif
+	call p_mouse_dpi_check
+	call p_mouse_multi_led_blink_timer
+	call p_mouse_wheel_trigger_timer
+	call p_mouse_null_enter_hibernate_timer	
+	call p_mouse_bt_discovery_check
+	call mouse_check_discovery_timeout_timer
+	call p_mouse_check_select_device_by_switch_timer	
+ifdef G24
+	call p_mouse_g24_long_sleep_param_update_timer
+endif
+ifdef BLE	
+	call mouse_check_direct_timeout_timer
+	call p_mouse_le_enable_att_list_timer
+	call p_mouse_le_current_mult_update_timer
+	call p_le_send_smp_security_request_timer
+endif
+ifdef CLASSIC_BT
+	call p_mouse_send_switch_req_timer
+	call mouse_check_hid_handshake_timer
+	call p_mouse_bt_check_sniff_req_timeout_timer
+endif
+	branch mouse_check_no_data_timeout_timer
+
+
+p_mouse_check_select_device_by_switch_timer:
+//	fetch 1,mem_config_function_enable
+//	rtnbit0 ENABLE_SELECT_DEVICE_BY_SWITCH
+	fetcht 1,mem_config_select_device_button_gpio
+	call gpio_get_bit
+	branch p_mouse_cheak_select_24gdevice,true
+p_mouse_select_btdevice:
+	fetch 1,mem_device_flag
+	bne MODE_BT_DEVICE1,soft_reset_chip
+	rtn
+p_mouse_cheak_select_24gdevice:
+	fetch 1,mem_device_flag
+	bne MODE_24G_DEVICE,soft_reset_chip
+	rtn
+
+
+ifdef CLASSIC_BT
+p_mouse_send_switch_req_timer:
+	arg mem_mouse_send_switch_req_timer,regc
+	arg host_create_conn_resend,regb
+	branch timer_single_step
+
+p_mouse_bt_check_sniff_req_timeout_timer:
+	arg mem_mouse_bt_send_first_package_timer,regc
+	arg p_mouse_bt_send_first_package,regb
+	branch timer_single_step
+p_mouse_bt_send_first_package:
+	jam 1,mem_mouse_bt_send_first_package_flag
+	rtn
+endif
+
+
+ifdef BLE
+p_mouse_le_enable_att_list_timer:
+	arg mem_le_start_encrypt_timer,regc
+	arg mouse_le_write_enable,regb
+	branch timer_single_step
+
+p_mouse_check_direct_timeout_timer:
+	arg mem_mouse_direct_timer,regc
+	arg p_mouse_check_direct_timeout,regb
+	branch timer_single_step_2B
+p_mouse_check_direct_timeout:
+	fetch 1,mem_mouse_multi_led_on_poweron2s_flag
+	nrtn blank
+	branch mouse_check_direct_timeout
+
+p_mouse_le_current_mult_update_timer:
+	arg mem_mouse_le_current_mult_timer,regc
+	arg p_mouse_le_current_mult_reinit,regb
+	branch timer_single_step
+p_mouse_le_current_mult_reinit:
+	fetch 1,mem_lpm_mult_init
+	store 1,mem_lpm_mult
+	branch p_mouse_long_mult_flag_enable
+
+p_le_send_smp_security_request_timer:
+	fetch 1,mem_mouse_le_bb_connected_flag
+	rtn blank
+	arg mem_mouse_send_secutiry_request_timer,regc
+	arg p_le_pairing_sm_start_check,regb
+	branch timer_single_step
+p_le_pairing_sm_start_check:
+	fetch 1,mem_le_send_security_request_flag
+	nrtn blank
+	branch le_pairing_sm_start
+endif
+
+ifdef G24
+p_mouse_g24_long_sleep_param_update_timer:
+	arg mem_24g_long_sleep_param_update_timer,regc
+	arg p_mouse_g24_long_sleep_normal_param,regb
+	branch timer_single_step
+p_mouse_g24_long_sleep_normal_param:
+	setarg G24_LONG_SLEEP_STEP2
+	store 3,mem_24g_enter_hibernate
+p_mouse_long_mult_flag_enable:	
+	jam 1,mem_mouse_long_mult_flag
+	rtn	
+endif
+
+p_mouse_wheel_trigger_timer:
+	arg mem_mouse_wheel_trigger_timer,regc
+	arg p_mouse_wheel_trigger_disable,regb
+	branch timer_single_step
+p_mouse_wheel_trigger_disable:
+	jam 0,mem_mouse_wheel_trigger
+	rtn
+
+p_mouse_bt_discovery_check:
+	fetch 1,mem_device_flag
+	rtneq MODE_24G_DEVICE
+p_mouse_bt_discovery_by_button:
+	fetcht 1,mem_config_bt_button_gpio
+	call gpio_get_bit
+	branch p_mouse_bt_discovery_commbination_key_down,true
+p_mouse_bt_discovery_commbination_key_up:
+	call mouse_bt_discovery_commbination_key_up
+	arg MOUSE_BT_DISCOVERY_BUTTON_LONG_DOWN_FLAG,queue
+	branch mouse_disable_function_flag
+	
+p_mouse_bt_discovery_commbination_key_down:
+	jam 40,mem_mouse_null_enter_hibernate_timer
+	call p_mouse_bt_discovery_timer
+	branch mouse_bt_discovery_commbination_key_down+1
+
+p_mouse_bt_discovery_timer:
+	arg mem_combination_ui_button_count,regc
+	arg p_mouse_long_button_bt_discovery,regb
+	branch timer_single_step
+p_mouse_long_button_bt_discovery:
+	fetch 2,mem_ui_state_map
+	isolate1 UI_STATE_BLE_ADV,pdata
+	call mouse_stop_le_adv,true		//reconnect adv
+	fetch 2,mem_ui_state_map
+	isolate1 UI_STATE_BT_RECONNECT,pdata
+	call mouse_cancel_reconnect,true
+	arg MOUSE_BT_DISCOVERY_BUTTON_LONG_DOWN_FLAG,queue
+	call mouse_enable_function_flag
+	branch mouse_long_button_bt_discovry
+
+p_mouse_null_enter_hibernate_timer:
+	fetch 1,mem_mouse_multi_led_on_poweron2s_flag
+	nrtn blank
+	fetch 1,mem_mouse_null_enter_hibernate_flag
+	rtn blank
+	fetch 1,mem_mouse_null_enter_hibernate_timer
+	branch p_mouse_null_enter_hibernate,blank
+	increase -1,pdata
+	store 1,mem_mouse_null_enter_hibernate_timer
+	rtn
+p_mouse_null_enter_hibernate:
+	jam 0,mem_mouse_null_enter_hibernate_flag
+	branch app_enter_hibernate
+p_mouse_null_enter_hibernate_enable:	//ble never connected
+	jam 1,mem_mouse_null_enter_hibernate_flag
+	jam 40,mem_mouse_null_enter_hibernate_timer	//lmr 3s
+	rtn
+p_mouse_null_enter_hibernate_disable:	//ble never connected
+	jam 0,mem_mouse_null_enter_hibernate_flag
+	jam 0,mem_mouse_null_enter_hibernate_timer	//lmr 3s
+	rtn	
+//p_mouse_null_enter_hibernate_check:
+//	fetch 2,mem_ui_state_map
+//	rtnbit1 UI_STATE_BLE_CONNECTED
+//	rtnbit1 UI_STATE_BT_CONNECTED
+//	rtnmark1 mark_24g
+//	branch p_mouse_null_enter_hibernate_enable
+
+p_mouse_multi_led_blink_timer:
+	fetch 1,mem_mouse_multi_led_blink_enable
+	rtn blank
+	fetch 1,mem_mouse_multi_led_type
+	beq MULTI_LED_ON,p_mouse_multi_led_type_on
+	beq MULTI_LED_BLINK,p_mouse_multi_led_type_blink
+	rtn
+
+p_mouse_multi_led_type_on:
+	call p_mouse_multi_led_on
+	fetch 1,mem_mouse_multi_led_on_timer
+	increase 1,pdata
+	store 1,mem_mouse_multi_led_on_timer
+	fetcht 1,mem_mouse_multi_led_on_timer_init
+	isub temp,null
+	call p_mouse_multi_led_off_poweron2s,zero
+	rtn
+p_mouse_multi_led_off_poweron2s:
+	jam 0,mem_mouse_multi_led_on_poweron2s_flag
+	branch p_mouse_multi_led_off
+
+p_mouse_multi_led_type_blink:
+	fetch 1,mem_mouse_multi_led_blink_timer
+	increase -1,pdata
+	store 1,mem_mouse_multi_led_blink_timer
+	nrtn blank
+	fetch 1,mem_mouse_multi_led_blink_timer_init
+	store 1,mem_mouse_multi_led_blink_timer
+	fetch 1,mem_mouse_multi_led_blink_count_limited
+	branch p_mouse_multi_led_blink_count_no_limited,blank
+	fetch 1,mem_mouse_multi_led_blink_count
+	branch p_mouse_multi_led_blink_off,blank
+	increase -1,pdata
+	store 1,mem_mouse_multi_led_blink_count
+p_mouse_multi_led_blink_count_no_limited:
+	fetch 1,mem_mouse_multi_led_state
+	beq ON,p_mouse_multi_led_off
+	beq OFF,p_mouse_multi_led_on
+	rtn
+
+p_mouse_multi_led_on:
+	jam ON,mem_mouse_multi_led_state
+	fetch 1,mem_device_flag
+	beq MODE_24G_DEVICE,p_mouse_multi_down_led_on
+p_mouse_multi_up_led_on:
+	fetcht 1,mem_mouse_multi_led_gpio 
+	call gpio_config_output 
+	fetcht 1,mem_mouse_multi_led_gpio
+	branch gpio_out_inactive
+p_mouse_multi_down_led_on:
+	fetcht 1,mem_mouse_multi_led_gpio
+	set1 7,temp 
+	call gpio_config_output 
+	fetcht 1,mem_mouse_multi_led_gpio 
+	branch gpio_out_active
+	
+p_mouse_multi_led_blink_off:
+	setarg 0
+	store 3,mem_mouse_multi_led_blink_timer
+p_mouse_multi_led_off:
+	fetch 1,mem_mouse_multi_led_blink_count
+	nbranch p_mouse_multi_led_off_wait_blink_over,blank
+	jam 0,mem_mouse_multi_led_blink_enable
+	jam 0,mem_mouse_multi_led_type
+p_mouse_multi_led_off_wait_blink_over:
+	jam 0,mem_mouse_multi_led_on_timer
+	jam OFF,mem_mouse_multi_led_state
+	branch p_mouse_multi_led_gpio_set_float
+	
+p_mouse_mode_bt_device1_multi_led_on:
+p_mouse_mode_24g_device_multi_led_on:
+	jam 1,mem_mouse_multi_led_on_poweron2s_flag
+	jam ON,mem_mouse_multi_led_blink_enable
+	jam MULTI_LED_ON,mem_mouse_multi_led_type
+	jam 0,mem_mouse_multi_led_on_timer
+	rtn
+
+p_mouse_discovery_multi_led_blink:
+	jam 3,mem_mouse_multi_led_blink_timer_init	//300ms
+	jam 0,mem_mouse_multi_led_blink_count_limited
+	jam 1,mem_mouse_multi_led_blink_count//0 will clear mem_mouse_multi_led_blink_enable/mem_mouse_multi_led_type
+p_mouse_multi_led_blink_enable:
+	jam 5,mem_mouse_multi_led_blink_timer
+	jam ON,mem_mouse_multi_led_blink_enable
+	jam MULTI_LED_BLINK,mem_mouse_multi_led_type
+	rtn
+
+p_mouse_discovey_led_blink_off:
+	fetch 1,mem_mouse_multi_led_on_timer
+	nrtn blank
+	fetch 1,mem_mouse_multi_led_on_poweron2s_flag
+	nrtn blank
+	branch p_mouse_multi_led_blink_off
+		
+p_mouse_dpi_multi_led_blink:
+	jam 3,mem_mouse_multi_led_blink_timer_init	//300ms
+	jam 1,mem_mouse_multi_led_blink_count_limited
+	branch p_mouse_multi_led_blink_enable
+	
+
+ifdef ADC_ENABLE
+p_mouse_adc_read:
+//	fetch MOUSE_FLAG_LEN,mem_mouse_flag
+//	rtnbit0 MOUSE_ENABLE_ADC
+	fetch 2,mem_mouse_multi_led_blink_count
+	nrtn blank
+	fetch 1,mem_adc_read_timer
+	increase 1,pdata
+	store 1,mem_adc_read_timer
+	sub pdata,10,null              //1s read adc
+	rtn positive
+	
+	call adc_init_data
+	
+	jam 0,mem_adc_read_timer
+	call adc_set_mode
+	call vdd_calculate_by_mode
+	store 2,mem_mouse_vdd_now_vol
+	arg mem_mouse_vdd_calculate_set,rega
+	call p_adc_bat_percent_lowpower_out
+	fetch 1,mem_adc_power_flag
+	bbit1 1,app_enter_hibernate
+	bbit0 0,p_mouse_adc_no_low_voltage
+	jam 1,mem_mouse_adc_last_low_voltage_flag
+	branch mouse_adc_low_voltage
+
+p_mouse_adc_no_low_voltage:
+	call mouse_adc_no_low_voltage
+	fetch 1,mem_mouse_adc_last_low_voltage_flag
+	rtn blank
+	jam 0,mem_mouse_adc_last_low_voltage_flag
+p_mouse_adc_low_volatage_led_off:
+	fetch 1,mem_config_low_voltage_alarm_gpio
+	store 1,mem_mouse_struct_led_gpio
+	branch mouse_led_on
+
+//p_adc_set_mode:
+//	fetch 1,mem_adc_config_flag
+//	beq ADC_CONFIG_GPIO,p_adc_check_gpio
+//	branch adc_set_mode+1
+//p_adc_check_gpio:
+//	hfetch 1,core_gpio_pu0	//gpio5 pull up disable
+//	set0 5,pdata
+//	hstore 1,core_gpio_pu0
+//	call adc_check_gpio
+//	hfetch 1,core_gpio_pu0	//gpio5 pull up enable
+//	set1 5,pdata
+//	hstore 1,core_gpio_pu0
+//	rtn
+
+p_adc_bat_percent_lowpower_out:
+	ifetch 8,rega
+	store 8,mem_pdatatemp
+	fetcht 2,mem_pdatatemp+2	//shutdown voltage 0.9v
+	fetch 2,mem_pdatatemp+6		//now voltage
+	isub temp,null
+	nbranch adc_set_no_power_flag,positive
+	fetcht 2,mem_pdatatemp+4	//low voltage 1.0v
+	isub temp,null
+	nbranch adc_set_low_power_flag,positive
+p_adc_clear_low_power_flag:
+	fetch 1,mem_adc_power_flag
+	set0 0,pdata
+	store 1,mem_adc_power_flag
+	rtn
+
+p_mouse_low_voltage_led_timer:
+	fetch 1,mem_low_power_led_blink_flag
+	nrtn blank	//15s no action
+	fetch MOUSE_FLAG_LEN,mem_mouse_flag
+	rtnbit0 MOUSE_LOW_VOLTAGE_FLAG
+	fetch 2,mem_ui_state_map
+	rtnbit1 UI_STATE_BLE_ADV
+	rtnbit1 UI_STATE_BT_DISCOVERY
+	fetch 1,mem_config_low_voltage_alarm_gpio
+	store 1,mem_mouse_struct_led_gpio
+
+	setarg G24_LONG_SLEEP_STEP2
+	store 3,mem_24g_enter_hibernate
+	
+	fetch 1,mem_adc_low_volatage_led_timer_count
+	pincrease 1
+	store 1,mem_adc_low_volatage_led_timer_count
+	beq 5,mouse_low_voltage_led_on
+	sub pdata,10,null
+	nbranch p_mouse_adc_low_volatage_led_timer_count_clean,positive
+	rtn
+p_mouse_adc_low_volatage_led_timer_count_clean:
+	jam 1,mem_adc_low_volatage_led_timer_count
+	branch mouse_low_voltage_led_off
+
+endif
+
+p_mouse_seting_dpi:
+p_mouse_seting_sensor_type:
+	fetch 1,mem_config_sensor_type
+	//beq P8009,p_mouse_seting_8009_dpi
+	beq KA8,p_mouse_seting_ka8_dpi
+	beq P3065_XY,p_mouse_seting_3065XY_dpi
+	beq MA8650,p_mouse_seting_8009_dpi
+p_mouse_seting_3205_dpi:
+	fetch 1,mem_mouse_dpi
+	call p_mouse_3065xy_dpi_recount,blank
+	fetch 1,mem_mouse_dpi
+	beq MOUSE_DPI_LEVEL2,p_mouse_3205_set_cpi1			//800
+	beq MOUSE_DPI_LEVEL4,mouse_set_cpi3				//1600
+	branch mouse_set_cpi2								//1200
+p_mouse_3205_set_cpi1:
+	fetch 1,mem_320x_dpi_1
+	increase -1,pdata
+	branch mouse_p3205_dpi
+
+p_mouse_seting_3065XY_dpi:
+	fetch 1,mem_mouse_dpi
+	call p_mouse_3065xy_dpi_recount,blank
+	fetch 1,mem_mouse_dpi
+	beq MOUSE_DPI_LEVEL2,p_mouse_8009_set_cpi1			//800
+	beq MOUSE_DPI_LEVEL4,mouse_set_cpi3				//1600
+	branch mouse_set_cpi2								//1300
+p_mouse_3065xy_dpi_recount:
+	jam MOUSE_DPI_LEVEL2,mem_mouse_dpi
+	rtn
+
+p_mouse_seting_8009_dpi::
+	fetch 1,mem_mouse_dpi
+	call p_mouse_3065xy_dpi_recount,blank
+	fetch 1,mem_mouse_dpi
+	beq MOUSE_DPI_LEVEL2,p_mouse_8009_set_cpi1			//800
+	beq MOUSE_DPI_LEVEL4,mouse_set_cpi2				//1600
+	branch mouse_set_cpi1								//1200
+p_mouse_8009_set_cpi1:	
+	jam 0,mem_mouse_cpi_count
+	branch mouse_p3205_dpi+3
+
+p_mouse_seting_ka8_dpi:
+	fetch 1,mem_mouse_dpi
+	call p_mouse_3065xy_dpi_recount,blank
+	fetch 1,mem_mouse_dpi
+	beq MOUSE_DPI_LEVEL2,mouse_set_cpi2			//800
+	beq MOUSE_DPI_LEVEL4,p_mouse_ka8_set_cpi3		//1600
+	branch mouse_set_cpi4							//1200
+p_mouse_ka8_set_cpi3:	
+	setarg 5
+	branch mouse_p3205_dpi
+
+p_mouse_motion:
+	disable user
+	setarg 0
+	store 6,mem_mouse_x
+	call p_mouse_cheak_sensor_data
+	call mouse_zwheel
+	call mouse_t_zwheel
+	call p_mouse_key
+ifdef MOUSE_SMOOTHER
+	nbranch p_mouse_motion_nodata,user
+	call p_drawing_optima
+else
+	nbranch p_mouse_motion_nodata,user
+endif
+	branch mouse_motion+9
+
+p_mouse_motion_nodata:	
+ifdef MOUSE_SMOOTHER
+	call p_drawing_optima_init
+endif	
+	jam 0,mem_low_power_check_count
+	rtn
+
+p_mouse_key:
+	call p_mouse_check_key_gpio
+	branch mouse_key+1
+
+p_mouse_check_key_gpio:
+	arg 0,rega
+	call p_mouse_check_lkey_gpio
+//	call p_mouse_check_rkey_gpio
+//	call p_mouse_check_mkey_gpio
+//	call p_mouse_check_skey_gpio
+	branch mouse_check_key_gpio_output
+//p_mouse_check_skey_gpio:
+//	fetch 1,mem_bk_button_gpio
+//	rtneq GPIO_DISABLE
+//	call p_mouse_check_bk_key_gpio
+//	branch p_mouse_check_fw_key_gpio
+	
+p_mouse_check_lkey_gpio:
+	fetcht 1,mem_lbutton_gpio
+	call p_gpio_set_input_pu
+	fetcht 1,mem_lbutton_gpio
+	call gpio_get_bit
+	setflag true,0,rega			//true = 1,input low level
+//	rtn
+p_mouse_check_rkey_gpio:
+	fetcht 1,mem_rbutton_gpio
+	call p_gpio_set_input_pu
+	fetcht 1,mem_rbutton_gpio
+	call gpio_get_bit
+	setflag true,1,rega			//true = 1,input low level
+//	rtn
+p_mouse_check_mkey_gpio:
+	fetcht 1,mem_mbutton_gpio
+	call p_gpio_set_input_pd
+	fetcht 1,mem_mbutton_gpio
+	call gpio_get_bit
+	nsetflag true,2,rega			//true = 1,input low level
+	rtn
+//p_mouse_check_bk_key_gpio:
+//	fetcht 1,mem_bk_button_gpio
+//	call p_gpio_set_input_pd
+//	fetcht 1,mem_bk_button_gpio
+//	call gpio_get_bit
+//	nsetflag true,3,rega
+//	branch p_gpio_set_input_pu
+//p_mouse_check_fw_key_gpio:
+//	fetcht 1,mem_fw_button_gpio
+//	call p_gpio_set_input_pd
+//	fetcht 1,mem_fw_button_gpio
+//	call gpio_get_bit
+//	nsetflag true,4,rega
+//	branch p_gpio_set_input_pu
+
+p_gpio_set_input_pd:
+	set0 gpio_active_bit,temp
+	arg core_gpio_pu0,contw
+	call gpio_set_bit
+	set1 gpio_active_bit,temp
+p_gpio_set_input_pd4:	
+	arg core_gpio_pd0,contw
+	call gpio_set_bit
+	set0 gpio_active_bit,temp
+	arg core_gpio_oe0,contw
+	branch gpio_set_bit
+
+p_gpio_set_input_pu:
+	set1 gpio_active_bit,temp
+p_gpio_set_input_pu1:	
+	arg core_gpio_pu0,contw
+	call gpio_set_bit
+	set0 gpio_active_bit,temp
+	branch p_gpio_set_input_pd4
+	
+p_mouse_select_device_button_gpio_set_suspend:
+	fetcht 1,mem_config_select_device_button_gpio
+p_mouse_set_gpio_suspend:
+	set0 gpio_active_bit,temp
+	branch p_gpio_set_input_pu1
+
+p_mouse_cheak_sensor_data:
+	fetch 1,mem_config_sensor_type
+//	beq P8009,p_mouse_p8009_sensor_motion
+p_mouse_p32xx_sensor_motion:	
+	call mouse_clear_sensor_data
+	disable user
+//	fetch 1,mem_config_function_enable
+//	bbit0 ENABLE_SENSOR_MOTION_PIN,mouse_p32xx_sensor_motion_2
+//	fetcht 1,mem_sensor_data_gpio
+//	call gpio_get_bit
+//	nrtn true
+	branch mouse_p32xx_sensor_motion_2
+
+//p_mouse_p8009_sensor_motion:
+//	call mouse_clear_sensor_data
+//	disable user
+//	fetcht 1,mem_sensor_data_gpio
+//	call gpio_get_bit
+//	nrtn true 
+//p_mouse_p32xx_sensor_motion_1:
+//	setarg PAN_REG_MOTION_STAUS
+//	call twspi_read
+//	rtnbit0 7
+//	setarg PAN_REG_OPRATION_STATE
+//	call twspi_read
+//	branch mouse_p32xx_sensor_motion_1+3,blank
+//	setarg 0
+//	store 6,mem_mouse_x
+//	rtn
+	
+p_mouse_bb_event_discovery_btn:
+	call p_mouse_multi_led_off_poweron2s
+	call p_mouse_null_enter_hibernate_disable
+ifdef G24	
+	isolate1 mark_24g,mark
+	call p_g24_check_51cmd_stop_24g,true
+endif
+	branch mouse_bb_event_discovery_btn+1
+
+ifdef BLE
+p_le_addr_random_config:
+	jam ZCODE_81,mem_zcode_temp_param0
+	branch p_zcode_entrance	
+
+p_mouse_start_discovery:
+	jam ZCODE_50,mem_zcode_temp_param0
+	branch p_zcode_entrance
+
+p_mouse_load_random_addr_increase_count:
+	call p_flash_release_deep_power_down
+	arg 2,temp
+	arg mem_random_addr_increase_count,rega
+	arg MOUSE_RANDOM_ADDR_COUNT_EEPROM_OFFSET,regb
+	fetch 3,mem_flash_base
+	iadd regb,pdata
+	branch spid_read_flash
+	
+p_mouse_load_fast_conn_flag:
+	call p_flash_release_deep_power_down
+	arg 1,temp
+	arg mem_mouse_fast_conn_flag,rega
+	arg MOUSE_FAST_CONN_FLAG_OFFSET,regb
+	fetch 3,mem_flash_base
+	iadd regb,pdata
+	branch spid_read_flash
+
+p_le_adv_data_update:
+	arg mem_le_adv_data+11,contw
+	arg 19,loopcnt
+	call memcpy
+	branch le_modified_name_adv
+
+p_mouse_stop_discovery:
+	setarg 0
+	store 2,mem_mouse_discovery_timer
+	call p_mouse_sensor_poweron		//clear sensor data,confirm the motion pin high
+	fetch 1,mem_device_option
+	isolate1 MODE_4_MOUSE,pdata
+	call mouse_stop_le_adv,true
+	fetch 1,mem_device_option
+	isolate1 MODE_3_MOUSE,pdata
+	call mouse_stop_bt3_discovery,true
+//	fetch MOUSE_FLAG_LEN,mem_mouse_flag
+//	bbit1 MOUSE_ENABLE_DISCOVERY_SENSOR_LED,mouse_sensor_led_blink_stop
+	branch p_mouse_discovey_led_blink_off
+
+
+ifdef BLE
+p_le_slave_match:
+	fetch 1,mem_le_md_count
+	pincrease 1
+	store 1,mem_le_md_count
+	beq LE_MD_MAX_COUNT,le_slave_cont
+	call le_acknowledge
+	call le_prepare_tx
+	call power_ctrl_start
+	branch le_slave_match+7
+
+p_le_next_adv_channel:
+	fetch 1,mem_le_ch_mapped
+	increase 1,pdata
+	store 1,mem_le_ch_mapped
+	rtnne 40
+	jam 37,mem_le_ch_mapped
+	rtn
+
+p_le_receive_skip:
+	call save_rssi
+	call p_rssi_signal
+	branch le_receive_skip+2
+
+p_le_update_param:
+	jam ZCODE_40,mem_zcode_temp_param0
+	branch p_zcode_entrance
+
+p_le_update_channel_map:
+	jam ZCODE_41,mem_zcode_temp_param0
+	branch p_zcode_entrance
+
+p_le_prepare_tx:
+	fetch 1,mem_le_arq
+	bbit1 wak,p_le_prepare_tx_wak
+	call power_ctrl_pac_succ_incrs	
+	fetch 1,mem_empty_count
+	nbranch p_le_send_empyt,blank
+	fetch 1,mem_le_state 
+	bbit0 lestate_encryption,p_le_tx_4
+	fetch 1,mem_le_rxbuf+1  
+	branch p_le_tx_4,blank  
+	branch le_send_empty      // send empty data when got non empty packet
+p_le_send_empyt:
+	fetch 1,mem_empty_count
+	increase -1,pdata
+	store 1,mem_empty_count
+	branch le_send_empty
+p_le_tx_4:	
+	fetch 1,mem_le_pairing_state
+	bne FLAG_LE_PAIRING_AFTER_AUTH,p_in_le_tx_4
+	jam 3,mem_empty_count
+p_in_le_tx_4:
+	call le_fifo_check_nearly_full
+	call p_mouse_data_pull,blank
+	branch le_prepare_tx+4
+
+p_le_prepare_tx_wak:
+	call p_le_check_tx_retransmit_setmd
+	branch p_le_power_ctrl_pac_succ_decrs
+
+p_le_check_tx_retransmit_setmd:
+	fetch 1,mem_le_connect_status_flag
+	and pdata,0x03,pdata
+	rtnne 0x03
+	fetch 1,mem_mouse_data_queue_num
+	rtn blank
+	fetch 1,mem_le_txlen
+	rtn blank
+	fetch 1,mem_le_txheader
+	set1 md,pdata
+	store 1,mem_le_txheader
+	call le_set_md
+ifdef DEBUGLOG
+ifdef DEBUGLOG_MISC
+	setarg DEBUGLOG_DTYPE_MISC
+	store 2,mem_debuglog_datatype
+	setarg MISC_LE_RETRANSMIT_MD
+	store 2,mem_debuglog_dataval
+	call debuglog_push	
+endif
+endif
+	rtn
+
+	
+	
+p_le_power_ctrl_pac_succ_decrs:
+ifdef DEBUGLOG
+ifdef DEBUGLOG_MISC
+	setarg DEBUGLOG_DTYPE_MISC
+	store 2,mem_debuglog_datatype
+	setarg MISC_LE_RETRANSMIT
+	store 2,mem_debuglog_dataval
+	call debuglog_push	
+endif
+endif
+	branch power_ctrl_pac_succ_decrs
+
+p_mouse_le_reconn_write_enable_timer_reinit:
+	fetch 1,mem_mouse_le_reconnect_flag
+	rtn blank
+	fetch 1,mem_le_connect_status_flag
+	and pdata,0x03,pdata
+	rtneq 0x03
+	jam 1,mem_le_start_encrypt_timer
+	rtn
+
+p_le_parse:
+	rtnmark1 mark_old_packet
+	call le_fifo_check_full
+	nrtn blank
+	fetch 1,mem_le_rxbuf
+	and pdata,0x3,pdata
+	store 1,mem_le_packet_llid
+	ifetch 1,contr
+	and pdata,0x1f,pdata
+	store 1,mem_le_packet_size
+	rtn blank							//empty rtn
+	copy contr,pdata
+	store 2,mem_le_payload_ptr
+	fetch 1,mem_le_packet_llid
+	beq LLID_LE_LL,p_le_parse_ll
+	branch le_parse_l2cap
+p_le_parse_ll:
+	fetch 1,mem_le_rxbuf+2
+	beq LL_CHANNEL_MAP_REQ,p_le_parse_channel_map_req
+	branch le_parse_ll+1
+p_le_parse_channel_map_req:
+	ifetch 5,contr
+	store 5,mem_le_new_map
+	ifetch 2,contr
+	store 2,mem_le_instant
+	branch le_parse_channel_map_req+7	
+	
+p_le_parse_l2cap:
+	ifetch 2,contr
+	beq LE_L2CAP_CID_ATT,p_le_parse_att
+	beq LE_L2CAP_CID_SMP,p_le_parse_smp
+	branch le_parse_l2cap+11
+p_le_parse_att:
+	call store_contr
+	call p_mouse_le_reconn_write_enable_timer_reinit
+	call get_contr
+	ifetch 3,contr
+	store 3,mem_le_att_opcode
+	beq ATTOP_READ_BY_GROUP_TYPE_REQUEST,p_le_parse_att_read_by_group_type_request
+	rshift8 pdata,temp
+	sub temp,0x24,null
+	branch p_le_parse_att1,positive
+	arg mem_mouse_le_uuid_sup,temp
+	storet 2,mem_ui_le_uuid_table
+	call le_parse_att+2
+	setarg 0x8e7a
+	store 2,mem_ui_le_uuid_table
+	rtn
+
+p_le_parse_att_read_by_group_type_request:
+	call le_parse_att_read_by_group_type_request
+	call le_fifo_get_last_tx_ptr
+	increase 7,contr
+	ifetch 1,contr
+	rtnne ATTOP_READ_BY_GROUP_TYPE_RESPONSE
+	increase 5,contr
+	ifetch 2,contr
+	arg UUID_SERVICE_HIDS,temp
+	isub temp,null
+	nrtn zero
+	increase -4,contr
+	setarg 0x2b
+	istore 2,contr
+	rtn
+
+p_le_parse_att1:
+	beq ATTOP_READ_REQUEST,p_le_parse_att_read_request
+	branch le_parse_att+2
+p_le_parse_att_read_request:
+	fetcht 2,mem_le_att_handle
+	fetch 1,mem_le_configuration
+	bbit1 BIT_BLE_READ_AUTH,p_le_send_att_read_response_check_auth
+p_le_send_att_read_response:
+//	call le_att_get_handle_ptr
+//	branch le_send_att_error_response_notfound,blank
+//	increase -2,contr
+//	ifetch 2,contr
+//	arg UUID_CHRCTR_PNP_ID,temp
+//	isub temp,null
+//	branch p_le_send_att_pnp_id,zero
+	
+	fetch 2,mem_le_att_handle
+	beq 0x13,le_send_att_error_response_notfound
+
+	fetcht 2,mem_le_att_handle
+	branch le_send_att_read_response
+
+//p_le_send_att_pnp_id:
+//	call store_contr
+//	fetch 1,mem_le_att_pnp_id_len
+//	add pdata,1,rega
+//	call le_fifo_malloc_tx_l2cap_gatt
+//	setarg ATTOP_READ_RESPONSE
+//	istore 1,contw
+//	fetch 1,mem_le_att_pnp_id_len
+//	copy pdata,loopcnt
+//	arg mem_le_att_pnp_id,contr
+//	branch memcpy
+
+p_le_send_att_read_response_check_auth:
+	fetch 2,mem_le_pairing_handle
+	isub temp,null
+	nbranch p_le_send_att_read_response,zero
+	call le_check_encrypt_state
+	nbranch p_le_send_att_read_response,user
+	jam ATT_ERR_INSUFFICIENT_AUTHENTICATION,mem_le_err_code
+	branch le_send_att_error_response
+	
+
+p_le_parse_smp:
+	ifetch 1,contr
+	beq SMP_PAIRING_REQUEST,p_le_parse_smp_pairing_request
+	beq SMP_PAIRING_FAILED,p_le_parse_smp_pairing_failed
+	branch le_parse_smp+2
+
+p_le_parse_smp_pairing_request:
+	jam 1,mem_le_send_security_request_flag
+	branch le_parse_smp_pairing_request
+
+p_le_parse_smp_pairing_failed:
+	jam ZCODE_82,mem_zcode_temp_param0
+	branch p_zcode_entrance
+
+p_le_adv_not_match:
+	fetch 1,mem_le_ch_mapped
+	bne 39,le_adv_loop
+	call p_le_adv_random_delay
+	arg le_adv_interval_timer,queue
+	fetch 2,mem_le_adv_interval
+	branch timer_init
+p_le_adv_random_delay:
+	random pdata
+	arg 0x1ff,temp
+	iand temp,pdata
+	add pdata,250,pdata
+	branch delay
+
+p_le_lpm_setmult:
+	disable wake
+	branch p_le_lpm_set_mult_attempt,attempt
+	nbranch le_lpm_lost,match
+p_le_lpm_set_mult_attempt:
+	call lpm_match
+	fetch 2,mem_rx_window_sniff
+	store 2,mem_le_receive_window
+	fetch 1,mem_le_connect_status_flag
+	compare 3,pdata,3
+	nbranch lpm_mult_short,true
+	branch le_lpm_set_mult_attempt+3
+
+p_le_mouse_bb_event_connect_complete:
+	fetch 1,mem_mouse_le_reconnect_flag
+	nrtn blank
+	fetch 1,mem_le_att_handle
+	sub pdata,26,pdata
+	nrtn zero
+	branch mouse_le_write_enable
+endif
+
+p_twspi_reset:
+	hfetch 1,core_gpio_out3
+	and_into 0xfd,pdata
+	hstore 1,core_gpio_out3
+	hfetcht 1,core_gpio_oe3
+	or_into 0x2,temp
+	hstoret 1,core_gpio_oe3
+	call twspi_disable
+	and_into 0xfd,temp
+	nop 13
+	call p_twspi_enable
+	hstoret 1,core_gpio_oe3
+	rtn
+
+p_spid_init:
+	call spid_init_common
+p_twspi_enable:
+	hfetch 1,core_gpio_sel1
+	set1 0,pdata
+	set0 1,pdata
+	set0 3,pdata
+	hstore 1,core_gpio_sel1  //enable spi
+	rtn
+
+
+ifdef CLASSIC_BT
+p_page_wait_fhs_reply_ok:
+	jam ZCODE_00,mem_zcode_temp_param0
+	branch p_zcode_entrance
+
+p_role_switch_master:
+	call role_switch_check
+	nrtn user
+p_wait_role_switch_anchor:
+	disable user
+	jam param_newconnto,mem_newconnto_counter
+	set0 mark_fhs_already_good,mark
+	set0 mark_role_switch_receive_fhs,mark
+p_roles_waitfhs_loop:
+	call rf_setup_time_master_slot
+	call master_recv_packet
+	bmark1 mark_fhs_already_good,p_roles_replyto_fhs
+	call new_conn_timeout
+	nbranch p_roles_waitfhs_loop,blank
+	bmark1 mark_role_switch_receive_fhs,p_roles_replyto_fhs1
+	branch role_switch_fail_master
+	
+p_roles_replyto_fhs:
+	call rf_setup_time_slave_slot
+	arg type_id,type
+	call master_send_packet
+	set1 mark_role_switch_receive_fhs,mark
+	set0 mark_fhs_already_good,mark
+	fetch 1,mem_amaddr
+	iforce am_addr	//use current LT_ADDR
+	jam 2,mem_newconnto_counter
+	branch p_roles_waitfhs_loop
+
+p_roles_replyto_fhs1:
+	fetch 4,mem_clke_bt		//wait for 2 fhs,need 2.5ms
+	pincrease 8
+	store 4,mem_clke_bt
+	branch roles_replyto_fhs+4
+
+p_process_dmh:
+	bmark1 mark_first_packet,end_of_packet
+	branch process_dmh+1
+
+p_quit_connection_cont:
+	call app_disconn_reason_collect_bt
+	call sniff_exit
+	jam BT_EVT_BB_DISCONNECTED,mem_fifo_temp
+	call ui_ipc_send_event
+	call init_lmp_work
+	call l2cap_init_work
+	branch quit_connection_cont+8
+
+p_prepare_tx:
+	fetch 1,mem_state
+	isolate1 state_inconn,pdata
+	call p_bt_power_ctrl,true
+	branch prepare_tx+1
+p_bt_power_ctrl:
+	fetch 1,mem_arq
+	isolate1 wack,pdata
+	call power_ctrl_pac_succ_decrs,true
+	ncall power_ctrl_pac_succ_incrs,true
+	branch power_ctrl_start
+
+p_slave_conn_recv_packet:
+	call slave_receive_master_slot
+	nbranch shutdown_radio,sync
+	call save_rssi
+	call p_rssi_signal
+	branch slave_conn_recv_packet+4
+
+p_lpm_dispatch:
+	rtnmark1 mark_24g
+	call lpo_calibration
+	fetch 3,mem_clks_per_lpo
+	rtn blank
+	fetch 1,mem_lpm_mode
+	rtn blank
+	fetch 1,mem_ssp_enable
+	branch p_lpm_dispatch_next,blank
+	fetch 1,mem_sp_local_key_invalid	// simple pairing is not ready
+	rtn blank
+p_lpm_dispatch_next:
+	fetch 1,mem_le_sc_calc
+	nrtn blank
+	call lpm_check_wake_lock
+	nrtn blank
+	fetch 1,mem_context
+	compare 3,pdata,0x7							//sco won't sleep 
+	nbranch lpm_dispatch_unconn,true
+	fetch 2,mem_context + coffset_tsniff	//role switch 
+	arg 0xffff,temp
+	isub temp,null
+	rtn zero
+	branch lpm_dispatch_next+9
+
+p_lpm_set_mult:
+	disable wake
+	fetch 1,mem_state
+	rtnbit0 state_insniff
+	nbranch lpm_not_match,match
+	call lpm_match
+	fetch 2,mem_rx_window_sniff
+	store 2,mem_rx_window
+	fetch 1,mem_arq
+	bbit1 wack,lpm_mult_short
+	bmark0 mark_lpm_mult_enable,lpm_mult_short
+	call l2cap_malloc_is_fifo_empty
+	nbranch lpm_mult_short,blank
+	call p_lpm_set_attemp_timeout,blank	//fixed bt3.0 connected high current
+	branch lpm_set_mult+13	
+p_lpm_set_attemp_timeout:
+	jam 1,mem_current_sniff_attempt
+	jam 0,mem_current_sniff_timeout
+	rtn	
+
+p_mouse_bb_disconnected:
+	jam ZCODE_10,mem_zcode_temp_param0
+	branch p_zcode_entrance
+
+p_hid_rx_process:
+	jam ZCODE_11,mem_zcode_temp_param0
+	branch p_zcode_entrance
+
+p_parse_lmp_accepted:
+	fetch 1,mem_rxbuf+1
+	store 1,mem_lmi_accepted_opcode
+	beq LMP_SWITCH_REQ,p_parse_lmp_accepted_switch
+	branch parse_lmp_accepted+3
+p_parse_lmp_accepted_switch:
+	call parse_lmp_accepted_switch
+	jam 1,mem_bt_rcvd_switch_req_accept
+	fetch 1,mem_bt_send_lmp_setup_complete
+	rtn blank
+	jam 2,mem_bt_send_lmp_setup_complete
+	rtn
+
+p_send_lmp:
+	jam ZCODE_20,mem_zcode_temp_param0
+	branch p_zcode_entrance
+
+p_process_conn_sm:
+	call lmo_fifo_check
+	nrtn blank
+p_process_conn_sm_continue:
+	fetch 1,mem_conn_sm
+	rtn blank
+ifdef DEBUGLOG
+ifdef DEBUGLOG_CONN_SM
+	call pdata_push
+	setarg DEBUGLOG_DTYPE_CONN_SM
+	store 2,mem_debuglog_datatype
+	fetch 1,mem_conn_sm
+	store 2,mem_debuglog_dataval
+	call pdata_pull
+	call debuglog_push	
+endif
+endif
+	beq CONN_SM_SEND_CONN_REQ, p_host_create_conn_send_conn_req
+	beq CONN_SM_WAIT_SWITCH_AFTER_HOST_CONNECTION,p_host_creat_conn_wait_switch
+	branch process_conn_sm_continue+2
+
+p_host_creat_conn_wait_switch:
+	fetch 1,mem_switch_flag
+	rtneq SWITCH_FLAG_INIT
+	beq SWITCH_FLAG_ACCEPT,p_host_create_conn_switch_accept
+	branch host_creat_conn_wait_switch+3
+p_host_create_conn_switch_accept:
+	rtn master
+p_host_create_conn_auth_pair:
+	/* checking whether or not to do m/s switch */
+	fetch 1,mem_connection_options
+	bbit1 CONNECTION_AUTH,p_host_create_conn_auth_pair_true
+	branch host_create_conn_auth_pair+1
+p_host_create_conn_auth_pair_true:
+	fetch 1,mem_bt_send_lmp_setup_complete
+	beq 1,host_create_conn_auth_pair_true
+	//sumsung a5100 patch
+	fetch 1,mem_link_key_exists
+	branch host_create_conn_auth_pair_nokey,blank
+	fetch 1,mem_lmp_conn_state
+	rtnbit0 SENT_SETUP_COMPLETE
+	rtnbit0 RECEIVED_SETUP_COMPLETE
+	fetch 1,mem_bt_send_max_slot_req_accept_after_switch
+	rtn blank
+	jam 0,mem_bt_send_max_slot_req_accept_after_switch	
+	fetch 4,mem_aurand_send_delay_time
+	arg 20,temp
+	iadd temp,temp
+	copy clkn_bt,pdata
+	isub temp,null
+	nbranch p_bt_send_max_slot_req_accept_after_switch_wait,positive
+	branch host_create_conn_auth
+
+p_bt_send_max_slot_req_accept_after_switch_wait:
+	jam 1,mem_bt_send_max_slot_req_accept_after_switch
+	rtn
+
+p_host_create_conn_send_conn_req:
+	jam 20,mem_mouse_send_switch_req_timer
+	branch host_create_conn_send_conn_req
+
+	
+ifdef DEBUGLOG
+p_parse_lmp_opcode:
+ifdef DEBUGLOG
+ifdef DEBUGLOG_PARSE_LMP
+	setarg DEBUGLOG_DTYPE_PARSE_LMP
+	store 2,mem_debuglog_datatype
+	fetch 1,mem_rxbuf+1
+	store 1,mem_debuglog_dataval+1 
+	fetch 1,mem_lmi_opcode2
+	store 2,mem_debuglog_dataval
+	call debuglog_push 
+endif
+endif
+	branch parse_lmp+21
+
+p_process_upper_sm_reconn:
+	fetch 1,mem_upper_sm_reconn
+	rtn blank
+ifdef DEBUGLOG
+ifdef DEBUGLOG_UPPER_SM
+	call pdata_push
+	setarg DEBUGLOG_DTYPE_UPPER_SM
+	store 2,mem_debuglog_datatype
+	fetch 1,mem_upper_sm_reconn
+	store 2,mem_debuglog_dataval
+	call pdata_pull
+	call debuglog_push	
+endif
+endif
+	branch process_upper_sm_reconn+3
+
+endif	
+
+endif
+	
+ifdef DEBUGLOG
+p_ui_ipc_send_event:
+ifdef DEBUGLOG
+ifdef DEBUGLOG_EVENT
+	call pdata_push
+	setarg DEBUGLOG_DTYPE_EVENT
+	store 2,mem_debuglog_datatype
+	fetch 1,mem_fifo_temp
+	store 2,mem_debuglog_dataval
+	call pdata_pull
+	call debuglog_push	
+endif
+endif
+	branch ui_ipc_send_event+1
+
+p_ui_ipc_send_cmd:
+ifdef DEBUGLOG
+ifdef DEBUGLOG_CMD
+	call pdata_push
+	setarg DEBUGLOG_DTYPE_CMD
+	store 2,mem_debuglog_datatype
+	fetch 1,mem_fifo_temp
+	store 2,mem_debuglog_dataval
+	call pdata_pull
+	call debuglog_push
+endif
+endif
+	branch ui_ipc_send_cmd+1
+endif
+
+p_check_51cmd_once_continue:
+	call lmo_fifo_check
+	nbranch check_51cmd_restore,blank  //process this cmd next time while lmo fifo is full
+	fetch 1,mem_fifo_temp
+	bmark0 mark_context,check_51cmd_check_idle
+	beq BT_CMD_STORE_RECONN_INFO_LE,p_flash_store_le_reconn_info
+	beq BT_CMD_STORE_RECONN_INFO_BT,p_flash_store_bd_reconn_info
+	beq BT_CMD_LE_UPDATE_CONN,p_check_51cmd_ble_update_connect_param
+	branch check_51cmd_once_continue+2
+
+p_flash_store_le_reconn_info:
+	jam REC_4_MODE,mem_record_bt_mode
+	fetch 6,mem_le_plap
+	branch p_flash_store_reconn_info
+p_flash_store_bd_reconn_info:
+	jam REC_3_MODE,mem_record_bt_mode
+	fetch 6,mem_plap	
+p_flash_store_reconn_info:
+	store 6,mem_temp_lap
+p_mouse_store_remote_bdaddr:
+	fetch MOUSE_FLAG_LEN,mem_mouse_flag
+	rtnbit0 MOUSE_STORE_EEPROM_FLAG
+	arg MOUSE_STORE_EEPROM_FLAG,queue
+	call mouse_disable_function_flag
+	call mouse_check_device_addr
+p_mouse_unplug_clean_bdaddr:
+	call mouse_before_store_reconn_info
+	branch p_mouse_store_flash_device_info
+
+p_check_51cmd_ble_update_connect_param:
+	call le_fifo_check_full
+	nrtn blank
+	branch le_l2cap_tx_update_req
+
+power_ctrl_pac_succ_cnt_init:
+	jam 1,mem_power_ctrl_level
+	jam 0,mem_power_ctrl_pac_succ_cnt
+	rtn
+power_ctrl_pac_succ_incrs:
+	fetch 1,mem_power_ctrl_pac_succ_cnt
+	increase 1,pdata
+	store 1,mem_power_ctrl_pac_succ_cnt
+	rtn
+power_ctrl_pac_succ_decrs:
+	fetch 1,mem_power_ctrl_pac_succ_cnt
+	sub pdata,2,null
+	ncall power_ctrl_pac_succ_cnt_reinit,positive
+	fetch 1,mem_power_ctrl_pac_succ_cnt
+	rtneq 0
+	increase -1,pdata
+	store 1,mem_power_ctrl_pac_succ_cnt
+	rtn
+power_ctrl_pac_succ_cnt_reinit:
+	jam 3,mem_power_ctrl_pac_succ_cnt
+	rtn
+
+power_ctrl_start:
+	fetch 2,mem_ui_state_map
+	rtnbit1 UI_STATE_BLE_ADV
+	rtnbit1 UI_STATE_BT_RECONNECT
+	rtnbit1 UI_STATE_BT_DISCOVERY
+	
+	arg mem_rssi_signal_buf,rega
+	call p_rssi_average
+	storet 1,mem_rssi_avg_received
+
+ifdef DEBUGLOG
+ifdef DEBUGLOG_MISC
+	setarg DEBUGLOG_DTYPE_MISC
+	store 2,mem_debuglog_datatype
+	fetch 1,mem_power_ctrl_pac_succ_cnt
+	store 1,mem_debuglog_dataval
+	fetch 1,mem_rssi_avg_received
+	store 1,mem_debuglog_dataval+1
+	call debuglog_push	
+endif
+endif
+	setarg RSSI_DIS_MAX_24G
+	bmark1 mark_24g,power_ctrl_start_next
+	setarg RSSI_DIS_MAX_BLE
+power_ctrl_start_next:	
+	isub temp,null
+	nbranch power_ctrl_txpower_incrs_force,positive
+
+	fetch 1,mem_power_ctrl_pac_succ_cnt
+	sub pdata,2,null
+	nbranch power_ctrl_txpower_decrs_check,positive
+	fetch 1,mem_power_ctrl_pac_succ_cnt
+	beq 0,power_ctrl_txpower_incrs
+	rtn
+
+power_ctrl_txpower_decrs_check:
+	fetch 1,mem_power_ctrl_pac_succ_cnt
+	rtnne 32
+	jam 0,mem_power_ctrl_pac_succ_cnt
+power_ctrl_txpower_decrs:
+	fetcht 1,mem_rssi_avg_received
+	setarg RSSI_DIS_MIN_24G
+	bmark1 mark_24g,power_ctrl_txpower_decrs_next
+	setarg RSSI_DIS_MIN_BLE	
+power_ctrl_txpower_decrs_next:	
+	isub temp,null
+	nrtn positive
+	fetch 1,mem_power_ctrl_level
+	beq 0,power_ctrl_decrs_level0
+	increase -1,pdata
+	store 1,mem_power_ctrl_level
+	beq 0,power_ctrl_decrs_level0
+power_ctrl_decrs_level1:
+power_ctrl_incrs_level1:	//0dBm
+ifdef DEBUGLOG
+ifdef DEBUGLOG_MISC
+	setarg DEBUGLOG_DTYPE_MISC
+	store 2,mem_debuglog_datatype
+	setarg MISC_TXPOWER_1
+	store 2,mem_debuglog_dataval
+	call debuglog_push
+endif
+endif
+	jam TX_POWER_0DB,mem_tx_power
+	rtn
+
+power_ctrl_txpower_incrs_force:
+	jam 0,mem_power_ctrl_pac_succ_cnt
+power_ctrl_txpower_incrs:
+	fetch 1,mem_power_ctrl_level
+	beq 2,power_ctrl_incrs_level2
+	increase 1,pdata
+	store 1,mem_power_ctrl_level
+	beq 1,power_ctrl_incrs_level1
+power_ctrl_incrs_level2:	//+6dBm
+ifdef DEBUGLOG
+ifdef DEBUGLOG_MISC
+	setarg DEBUGLOG_DTYPE_MISC
+	store 2,mem_debuglog_datatype
+	setarg MISC_TXPOWER_2
+	store 2,mem_debuglog_dataval
+	call debuglog_push
+endif
+endif
+	jam TX_POWER_5DB,mem_tx_power
+	rtn
+	
+power_ctrl_decrs_level0: //-5dBm
+ifdef DEBUGLOG
+ifdef DEBUGLOG_MISC
+	setarg DEBUGLOG_DTYPE_MISC
+	store 2,mem_debuglog_datatype
+	setarg MISC_TXPOWER_0
+	store 2,mem_debuglog_dataval
+	call debuglog_push
+endif
+endif
+	jam TX_POWER_f5DB,mem_tx_power
+	rtn
+
+endif
+
+p_set_freq_tx:
+	storet 1,mem_last_freq
+	add temp,0,rega			/* index to frequency */
+	call rf_write_freq
+	setarg param_pll_setup	//128us
+	call sleep
+p_rf_tx_enable:
+	jam 0x1,rfen_adc
+	jam 0x3c,rfen_rx
+	jam 0xe0,rfen_tx
+	nop 10 /* wait LDOs to turn ON*/
+	jam 0x01, rfen_mdm
+	jam 0x3d, rfen_mdm
+	nop 10 /* wait tx blocks to turn ON*/
+	jam 0xb7,rfen_sn
+	nop 10 /* wait tx lo buffer to turn ON*/
+	jam 0x7d, rfen_mdm
+	fetch 1,mem_tx_power
+//	beq TX_POWER_0DB,p_set_tx_power_0db
+//	beq TX_POWER_3DB,p_set_tx_power_3db	
+	beq TX_POWER_5DB,p_set_tx_power_5db
+//	beq TX_POWER_f3DB,p_set_tx_power_f3db	
+	beq TX_POWER_f5DB,p_set_tx_power_f5db
+	beq TX_POWER_PAIR,p_set_tx_power_pair
+//	branch p_set_tx_power_0db
+p_set_tx_power_0db:
+	call p_rx_low_sens
+//	jam 0xba,0x894b
+	jam 0xd0,0x8955
+	jam 0xe0,0x8956
+//	jam 0x88,0x8957
+	jam 0x6c,0x8958
+//	jam 0x10,0x8959
+	branch set_tx_power_0db	
+
+//p_set_tx_power_3db:
+//	call p_rx_high_sens
+//	jam 0xba,0x894b
+//	jam 0xd0,0x8955
+//	jam 0xe0,0x8956
+//	jam 0x88,0x8957
+//	jam 0x3c,0x8958
+//	jam 0x10,0x8959
+//	branch set_tx_power_3db
+	
+p_set_tx_power_5db:
+	call p_rx_high_sens
+//	jam 0xba,0x894b
+	jam 0xd0,0x8955
+	jam 0xe0,0x8956
+//	jam 0x88,0x8957
+	jam 0x3c,0x8958
+//	jam 0x10,0x8959
+	branch set_tx_power_5db
+
+//p_set_tx_power_f3db:
+//	call p_rx_low_sens
+//	jam 0xba,0x894b
+//	jam 0xd0,0x8955
+//	jam 0xc0,0x8956
+//	jam 0x88,0x8957
+//	jam 0x6c,0x8958
+//	jam 0x10,0x8959
+//	branch set_tx_power_f3db
+	
+p_set_tx_power_f5db:
+	call p_rx_low_sens
+//	jam 0xba,0x894b
+	jam 0xd0,0x8955
+	jam 0xc0,0x8956
+//	jam 0x88,0x8957
+	jam 0x6c,0x8958
+//	jam 0x10,0x8959
+	branch set_tx_power_f5db
+
+p_rx_low_sens:
+	jam 0x5b,0x894c
+	jam 0x96,0x894d
+	jam 0x2c,0x894e 
+	jam 0x46,0x894f
+	rtn
+
+p_rx_high_sens:
+	jam 0xfb,0x894c 
+	jam 0xef,0x894d
+	jam 0xec,0x894e 
+	jam 0x5e,0x894f
+	rtn
+		
+p_set_tx_power_pair:	//50-100cm distance
+//	jam 0xba,0x894b
+ 	jam 0xc2,0x8956
+ 	jam 0xd0,0x8955
+	rtn	
+
+p_shutdown_radio:
+	force 8,radio_ctrl
+	branch shutdown_radio+1
+
+
+// input : mem_zcode_temp_param0 ---- zocde number(0~1f)
+p_zcode_entrance:
+ifdef DEBUGLOG
+ifdef DEBUGLOG_MISC
+	setarg DEBUGLOG_DTYPE_MISC
+	store 2,mem_debuglog_datatype
+	fetch 1,mem_zcode_temp_param0
+	store 1,mem_debuglog_dataval
+	fetch 1,mem_zcode_current_number
+	istore 1,contw
+	call debuglog_push	
+endif
+endif
+	fetcht 1,mem_zcode_temp_param0 // zcode number @ high 4bit
+	rshift4 temp,temp
+	fetch 1,mem_zcode_current_number
+	isub temp,null
+	branch p_zcode_run,zero // if this zcode is already loaded, do not load again
+	storet 1,mem_zcode_current_number
+	increase 1,temp
+	setarg ZCODE_BUFF_SIZE
+	imul32 temp,temp
+	fetch 3,mem_xip_flash_offset
+	isub temp,pdata
+
+	fetcht 3,mem_flash_start_addr
+	iadd temp,pdata
+	increase -5,pdata
+	store 3,mem_flash_address
+	
+	call p_flash_release_deep_power_down
+p_zcode_read_loop:
+	fetch 3,mem_flash_address
+	arg ZCODE_BUFF_SIZE,temp
+	arg mem_zcode_buff,rega
+	call spid_read_flash
+	fetch 4,mem_zcode_buff
+	fetcht 4,mem_zcode_head	//p_start
+	isub temp,null
+	nbranch p_zcode_read_loop,zero	//sometimes we will lost p_start,read flash again
+	call p_mouse_spi_init
+
+	setarg mem_zcode_buff
+	store 2,mem_patch_ptr
+	jam ZCODE_CODE_SIZE,mem_patch_len
+	call load_ucode
+	setarg 0
+	store 4,mem_patch_ptr
+p_zcode_run:
+	fetch 1,mem_zcode_temp_param0
+	branch p_zcode
+
+
+
+ifdef DEBUGLOG 
+pdata_push:
+	store 8,mem_debuglog_pdata
+	rtn
+
+pdata_pull:
+	fetch 8,mem_debuglog_pdata
+	rtn
+	
+debuglog_init:
+	call pdata_push
+	call debuglog_uart_init
+	call debuglog_mem_init
+	branch pdata_pull
+ 
+debuglog_uart_init:
+	/*step1:SET IO TX:GPIO6	RX:GPIO7*/
+	hfetch 1,core_gpio_sel1
+	set1 2,pdata
+	hstore 1,core_gpio_sel1 //Open UARTGPIO MUX
+	hfetch 4,core_gpio_pu0	 //RX pull up
+	set1 7,pdata
+	hstore 4,core_gpio_pu0
+	
+	/*step2:sel UARTclk bit0	=0:crystal	 =1:48M*/
+	hfetch 1,core_uart_clksel
+	set1 0,pdata
+	hstore 1,core_uart_clksel
+
+	/*step3:Enable uart clk
+	core_clkoff(0x8050)bit15 = 0,Enable uart clk*/
+	hfetch 2,core_clkoff
+	set0 0x0f,pdata
+	hstore 2,core_clkoff
+
+	/*step3:Set Ring Buffer*/
+	setarg mem_module_rx_buf		//RX buf Start Addr
+	hstore 2,core_uart_rsaddr
+
+	setarg mem_module_rx_buf_end	//RX buf End Addr
+	hstore 2,core_uart_readdr
+
+	setarg mem_module_tx_buf		//TX BUF Start Addr
+	hstore 2,core_uart_tsaddr
+
+	setarg 0x1eff	//TX buf End Addr
+	hstore 2,core_uart_teaddr
+	
+	setarg mem_module_rx_buf		//RX buf RPTR
+	hstore 2,core_uart_rrptr
+
+	setarg mem_module_tx_buf		//TX buf WPTR
+	hstore 2,core_uart_twptr
+
+	hstore 2,core_uart_trptrp		//TX buf RPTR
+
+	/*step4:SET baud*/
+	//hstore 2,mem_baud
+	setarg 0x34
+	hstore 2,core_uart_baud
+
+	/*step5:SET DataLen,parity bit,flow control and enable UART
+	RW	0	Enable UART
+	RW	1	1: odd parity; 0: even parity
+	RW	2	UART Data length 1: 9 bits; 0: 8 bits
+	RW	3	1: HCI uart SLIP protocol
+	RW	4	1: enable RTS/CTS flow control
+	RW	5	1: enable 7816 smart card protocol
+	RW	6	1: enable half duplex single line UART
+	RW	7	1: Use baud settings 0:auto detect baud rate*/
+	jam 0x00,core_uart_ctrl
+	jam 0x81,core_uart_ctrl
+	rtn 
+
+debuglog_mem_init:
+	jam DEBUGLOG_HEAD,mem_debuglog_temp
+	jam DEBUGLOG_TYPE,mem_debuglog_type
+	jam DEBUGLOG_LEN ,mem_debuglog_datalen
+	jam DEBUGLOG_TAIL,mem_debuglog_tail
+	rtn	
+
+debuglog_push:
+	call pdata_push
+	hfetch 1,core_uart_status
+	rtnbit1 uart_status_tx_fifo_full
+	call uartd_prepare_tx
+	fetch 8,mem_debuglog_temp
+	istore 8,contwu
+	call uartd_send
+	branch pdata_pull 
+endif
+
+ifdef RF_DEBUG
+test_gpio_init:
+	arg TEST_GPIO,temp
+	call gpio_config_output
+test_gpio_low:
+	arg TEST_GPIO,temp
+	call gpio_out_active
+	nop 10
+	rtn
+test_gpio_high:
+	arg TEST_GPIO,temp
+	call gpio_out_inactive
+	nop 10
+	rtn
+
+test_h_l:
+	call test_gpio_high
+	branch test_gpio_low
+test_h_l_h:
+	call test_gpio_high
+	call test_gpio_low	
+	branch test_gpio_high
+endif
+
+ifdef MOUSE_SMOOTHER
+//notice: need to call p_mouse_drawing_optima_init when waked from mult
+p_drawing_optima:
+	fetch 4,mem_mouse_x
+	rtn blank
+	call p_data_abs_check
+	setarg 0x06	//asm_flag enable condition
+	call p_data_greater_than_check
+	setarg 0x03	//asm_flag disable condition
+	call p_data_less_than_check
+	fetch 1,mem_mouse_asm_flag
+	beq 1,p_drawing_optima_modify
+p_drawing_optima_init:
+	arg 5,loopcnt
+	arg mem_mouse_asm_flag,contw
+	branch clear_mem
+
+p_drawing_optima_modify:
+	fetch 2,mem_mouse_x_pre
+	store 2,mem_data_pre
+	fetch 2,mem_mouse_x
+	store 2,mem_data_current
+	call p_drawing_optima_data_x
+	fetch 2,mem_data_pre
+	store 2,mem_mouse_x_pre
+	fetch 2,mem_data_current
+	store 2,mem_mouse_x
+
+	fetch 2,mem_mouse_y_pre
+	store 2,mem_data_pre
+	fetch 2,mem_mouse_y
+	store 2,mem_data_current
+	call p_drawing_optima_data_y
+	fetch 2,mem_data_pre
+	store 2,mem_mouse_y_pre
+	fetch 2,mem_data_current
+	store 2,mem_mouse_y
+	rtn
+
+p_drawing_optima_data_x:
+	fetch 2,mem_data_pre
+	fetcht 2,mem_data_current
+	iadd temp,pdata
+	fetcht 1,mem_mouse_data_xtemp
+	iadd temp,pdata
+	and pdata,0x01,temp
+	storet 1,mem_mouse_data_xtemp
+	branch p_drawing_optima_data
+
+p_drawing_optima_data_y:
+	fetch 2,mem_data_pre
+	fetcht 2,mem_data_current
+	iadd temp,pdata
+	fetcht 1,mem_mouse_data_ytemp
+	iadd temp,pdata
+	and pdata,0x01,temp
+	storet 1,mem_mouse_data_ytemp
+	branch p_drawing_optima_data
+
+/**********
+input:data_pre,data_current
+output:data_pre,data_current after optima
+***********/
+p_drawing_optima_data:
+	store 3,mem_data_sum
+	isolate1 16,pdata
+	branch p_data_sum_overflow,true
+	fetch 1,mem_data_sum+1
+	beq 0xff,p_data_sum_n
+	fetch 1,mem_data_sum
+p_data_store_pre:
+	rshift pdata,pdata
+	store 2,mem_data_pre
+	store 2,mem_data_current
+	rtn
+p_data_sum_overflow:
+	fetch 1,mem_data_sum+1	//sum positive
+	beq 0,p_data_sum_overflow_p
+	fetch 3,mem_data_sum	//鍏ㄨ礋鐩稿姞
+	branch p_data_store_pre
+p_data_sum_overflow_p:
+	jam 0,mem_data_sum+2
+	fetch 1,mem_data_sum
+	branch p_data_store_pre
+
+p_data_sum_n:
+	fetch 1,mem_data_sum	//sum negetive
+	call p_pdata_get_half
+	store 1,mem_data_pre
+	store 1,mem_data_current
+	branch p_data_zero,blank
+	setarg 0xff
+p_data_set_direction:	
+	store 1,mem_data_pre+1
+	store 1,mem_data_current+1
+	rtn
+p_data_zero:
+	setarg 0
+	branch p_data_set_direction
+
+p_pdata_get_half:
+	sub pdata,0,pdata
+	store 1,mem_rega
+	fetch 1,mem_rega
+	rshift pdata,pdata
+	store 1,mem_rega
+	fetch 1,mem_rega
+	sub pdata,0,pdata
+	rtn
+
+//rega mouse_x, regb mouse_y, pdata refer
+p_data_greater_than_check:
+	isub rega,null
+	nbranch p_enable_asm,positive
+	isub regb,null
+	nbranch p_enable_asm,positive
+p_disable_asm:
+	jam 0,mem_mouse_asm_flag
+	rtn
+p_data_less_than_check:
+	isub rega,null
+	nrtn positive
+	isub regb,null
+	nrtn positive
+	branch p_disable_asm
+p_enable_asm:
+	jam 1,mem_mouse_asm_flag
+	rtn
+
+p_data_abs_check:
+	fetch 2,mem_mouse_x
+	store 2,mem_data_current
+	call p_data_abs
+	copy pdata,rega
+	fetch 2,mem_mouse_y
+	store 2,mem_data_current
+	call p_data_abs
+	copy pdata,regb
+	rtn
+
+/***********
+input: data_current
+output:pdata,abs
+************/
+p_data_abs:
+	fetch 1,mem_data_current+1
+	beq 0xff,p_data_reversal
+	fetch 1,mem_data_current
+p_data_abs_store:
+	and_into 0xff,pdata
+	//output:pdata
+	rtn
+p_data_reversal:
+	fetch 2,mem_data_current
+	sub pdata,0,pdata
+	branch p_data_abs_store
+
+endif
+
+ifdef TESTDATA
+//1 mem_m_key
+//2 mem_m_x
+//2 mem_m_y
+//1 mem_m_z
+//1 mem_m_tz
+//1 mem_24g_test
+p_g24_test_data:
+	fetch 1,mem_24g_test
+	increase 1,pdata
+	store 1,mem_24g_test
+	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 0x05
+	store 2,mem_m_x
+	setarg 0
+	store 2,mem_m_y
+	store 1,mem_m_z
+	store 1,mem_m_key
+	store 1,mem_m_tz
+p_data:	
+	enable user
+	fetch 7,mem_m_key
+	store 7,mem_mouse_key
+	rtn
+p_ms_y_up:
+	setarg 0x05
+	store 2,mem_m_y
+	setarg 0
+	store 2,mem_m_x
+	store 1,mem_m_z
+	store 1,mem_m_key
+	store 1,mem_m_tz
+	branch p_data
+p_ms_x_left:
+	setarg 0xfffb
+	store 2,mem_m_x
+	setarg 0
+	store 2,mem_m_y
+	store 1,mem_m_z
+	store 1,mem_m_key
+	store 1,mem_m_tz
+	branch p_data
+p_ms_y_down:
+	fetch 1,mem_24g_test
+	beq 200,p_mem_usb_data_square_cnt_set0
+	setarg 0xfffb
+	store 2,mem_m_y
+	setarg 0
+	store 2,mem_m_x
+	store 1,mem_m_z
+	store 1,mem_m_key
+	store 1,mem_m_tz
+	branch p_data
+p_mem_usb_data_square_cnt_set0:
+	jam 0,mem_24g_test
+	branch p_ms_y_down+2
+endif
+
+ifdef MEMLOG
+p_hci_log:
+	fetch 1,0x4d00
+	increase 1,pdata
+	sub pdata,50,null
+	branch p_hci_log_calc_ptr,positive
+	setarg 0
+p_hci_log_calc_ptr:
+	store 1,0x4d00
+	arg 8,temp
+	imul32 temp,pdata
+	arg 0x4d08,contw
+	iadd contw,contw
+p_hci_log_write_content:
+	fetch 1,0x4d00
+	istore 1,contw//counter
+	fetch 4,mem_le_supervision_timer
+	istore 4,contw
+	fetch 2,mem_le_superto
+	istore 2,contw	
+	rtn
+endif
+
+
Index: patch/z.prog
===================================================================
--- /branch/mouse_project/YJX_Project/YJX_1059/JDT_172_BD_2.4G&BLE/patch/z.prog	(nonexistent)
+++ /branch/mouse_project/YJX_Project/YJX_1059/JDT_172_BD_2.4G&BLE/patch/z.prog	(working copy)
@@ -0,0 +1,849 @@
+
+org 0x10001
+z_entrance0:
+	beq ZCODE_00,z_page_wait_fhs_reply_ok
+	rtn
+
+z_page_wait_fhs_reply_ok:
+ 	fetch 1, mem_page_rcv_fhs
+	increase 1,pdata
+	store 1, mem_page_rcv_fhs
+	call prepare_newconn
+z_master_newconn_loop:
+ 	set1 mark_first_packet,mark
+	call master_newconn_once
+	branch z_newconn_poll_responded,sync
+	set0 mark_first_packet,mark
+	call new_conn_timeout
+	nbranch z_master_newconn_loop,blank
+	branch page_restart
+z_newconn_poll_responded:
+	set0 mark_first_packet,mark
+	branch newconn_poll_responded
+
+
+
+	
+org 0x20001
+
+z_entrance1:
+	beq ZCODE_10,z_mouse_bb_disconnected
+	beq ZCODE_11,z_hid_rx_process
+	rtn
+
+z_mouse_bb_disconnected:
+	jam 0,mem_mouse_enter_sniff_count
+	jam 0x0e,mem_sniff_param_interval	//115Hz
+	call mouse_bb_discon_clear_stack
+	fetch APP_DISC_RSN_SIZE,mem_app_disconn_reason
+	bbit1 APP_DISC_BLE,mouse4_0_event_bb_disconn
+	bbit1 APP_DISC_BY_BUTTON,app_disconn_reason_clear
+	bbit1 APP_DISC_AFTER_PAIRING,z_mouse_event_light_state_pairing
+	bbit1 APP_DISC_AFTER_RECONN,z_mouse_event_light_state_hibernate
+	bbit1 APP_DISC_AFTER_SNIFF,z_mouse_event_light_state_hibernate
+	branch mouse_start_discovery
+	
+z_mouse_event_light_state_pairing:
+	bbit1 APP_DISC_AFTER_HANDSHAKE,z_mouse_event_light_state_hibernate
+	bbit1 APP_DISC_AFTER_SNIFF,z_mouse_event_light_state_hibernate
+	branch mouse_start_discovery
+z_mouse_event_light_state_hibernate:
+	fetch 2,mem_ui_state_map
+	bbit1 UI_STATE_BTN_DOWN,mouse_start_discovery
+	call app_disconn_reason_clear
+	call p_mouse_check_key_gpio
+	beq MOUSE_LM_BUTTON,p_mouse_null_enter_hibernate_enable
+	branch app_bb_hibernate
+
+
+z_hid_rx_process:
+	fetch 2,mem_l2cap_payload_ptr
+	copy pdata,contr
+	ifetch 1,contr
+	store 1,mem_l2cap_rcv
+	and pdata,0x0f,temp
+	rshift4 pdata,pdata //hidtype
+	beq hid_type_set_protocol,z_hid_rx_set_protocol
+	branch hid_rx_process+6
+z_hid_rx_set_protocol:
+	call hid_rx_process_handshake
+	jam 0,mem_mouse_bt_boot_mode
+	fetch 1,mem_l2cap_rcv
+	isolate1 0,pdata
+	rtn true
+	jam 1,mem_mouse_bt_boot_mode	//boot mode
+	rtn
+
+org 0x30001
+
+z_entrance2:
+	beq ZCODE_20,z_send_lmp
+	rtn
+
+z_send_lmp:
+	disable user
+	call lmo_fifo_process
+
+ifdef DEBUGLOG
+ifdef DEBUGLOG_SEND_LMP
+	setarg DEBUGLOG_DTYPE_SEND_LMP
+	store 2,mem_debuglog_datatype
+	fetch 1,mem_lmi_opcode
+	store 1,mem_debuglog_dataval+1
+	fetch 1,mem_lmp_to_send
+	store 1,mem_debuglog_dataval
+	fetch 1,mem_lmp_to_send
+	store 2,mem_debuglog_dataval
+	ncall debuglog_push,blank
+endif
+endif
+	
+	fetch 1,mem_lmp_to_send
+	rtn blank
+	bbit1 7,z_send_lmp_escape
+	beq LMP_ACCEPTED,z_send_lmp_accepted
+	beq LMP_SETUP_COMPLETE,z_send_lmp_setup_complete
+	beq LMP_SNIFF_REQ, z_send_lmp_sniff_req
+	branch send_lmp0
+z_send_lmp_escape:
+	beq LMP_EXT_FEATURES_RES,z_send_lmpext_features_res
+	beq LMP_EXT_FEATURES_REQ,z_send_lmpext_features_req	
+	branch send_lmp_escape
+z_send_lmpext_features_res:
+	call z_check_ssp_enable
+	fetch 1,mem_lmp_to_send
+	branch send_lmpext_features_res
+z_send_lmpext_features_req:
+	call z_check_ssp_enable
+	fetch 1,mem_lmp_to_send
+	branch send_lmpext_features_req
+z_check_ssp_enable:
+	fetch 1,mem_ssp_enable 
+	branch ssp_disable,blank
+	branch ssp_enable
+
+z_send_lmp_setup_complete:
+	jam 1,mem_bt_send_lmp_setup_complete
+	branch send_lmp_setup_complete
+
+z_send_lmp_sniff_req:
+	jam 4,mem_mouse_bt_send_first_package_timer
+	branch send_lmp_sniff_req
+	
+
+z_send_lmp_accepted:
+	force 2,pdata
+	call msg_send_lmp
+	fetch 1,mem_lmi_opcode
+	istore 1,contw
+	store 1,mem_lmi_opcode_temp
+	call send_lmp_follow
+ifdef DEBUGLOG
+ifdef DEBUGLOG_MISC
+	setarg DEBUGLOG_DTYPE_MISC
+	store 2,mem_debuglog_datatype
+	fetch 1,mem_lmi_opcode_temp
+	store 1,mem_debuglog_dataval
+	call debuglog_push	
+endif
+endif
+	fetch 1,mem_lmi_opcode_temp
+	beq LMP_MAX_SLOT_REQ,z_send_lmp_accepted_max_slot_req	//sumsung a5100 patch
+	branch send_lmp_accepted+7
+
+z_send_lmp_accepted_max_slot_req:
+	fetch 1,mem_bt_rcvd_switch_req_accept
+	rtn blank
+	jam 0,mem_bt_rcvd_switch_req_accept
+	fetch 1,mem_bt_send_lmp_setup_complete
+	rtnne 2
+	jam 1,mem_bt_send_max_slot_req_accept_after_switch
+	copy clkn_bt,pdata
+	store 4,mem_aurand_send_delay_time
+	rtn
+
+
+org 0x40001
+
+z_entrance3:
+	beq ZCODE_30,z_process_conn_sm
+	rtn
+
+z_process_conn_sm:
+	call lmo_fifo_check
+	nrtn blank
+z_process_conn_sm_continue:
+	fetch 1,mem_conn_sm
+	rtn blank
+ifdef DEBUGLOG
+ifdef DEBUGLOG_CONN_SM
+	call pdata_push
+	setarg DEBUGLOG_DTYPE_CONN_SM
+	store 2,mem_debuglog_datatype
+	fetch 1,mem_conn_sm
+	store 2,mem_debuglog_dataval
+	call pdata_pull
+	call debuglog_push	
+endif
+endif
+	beq CONN_SM_SEND_CONN_REQ, z_host_create_conn_send_conn_req
+	beq CONN_SM_WAIT_SWITCH_AFTER_HOST_CONNECTION,z_host_creat_conn_wait_switch
+	branch process_conn_sm_continue+2
+
+
+z_host_creat_conn_wait_switch:
+	fetch 1,mem_switch_flag
+	rtneq SWITCH_FLAG_INIT
+	beq SWITCH_FLAG_ACCEPT,z_host_create_conn_switch_accept
+	branch host_creat_conn_wait_switch+3
+z_host_create_conn_switch_accept:
+	rtn master
+z_host_create_conn_auth_pair:
+	/* checking whether or not to do m/s switch */
+	fetch 1,mem_connection_options
+	bbit1 CONNECTION_AUTH,z_host_create_conn_auth_pair_true
+	branch host_create_conn_auth_pair+1
+z_host_create_conn_auth_pair_true:
+	fetch 1,mem_bt_send_lmp_setup_complete
+	beq 1,host_create_conn_auth_pair_true
+	//sumsung a5100 patch
+	fetch 1,mem_link_key_exists
+	branch host_create_conn_auth_pair_nokey,blank
+	fetch 1,mem_lmp_conn_state
+	rtnbit0 SENT_SETUP_COMPLETE
+	rtnbit0 RECEIVED_SETUP_COMPLETE
+	fetch 1,mem_bt_send_max_slot_req_accept_after_switch
+	rtn blank
+	jam 0,mem_bt_send_max_slot_req_accept_after_switch	
+	fetch 4,mem_aurand_send_delay_time
+	arg 20,temp
+	iadd temp,temp
+	copy clkn_bt,pdata
+	isub temp,null
+	nbranch z_bt_send_max_slot_req_accept_after_switch_wait,positive
+	branch host_create_conn_auth
+
+z_bt_send_max_slot_req_accept_after_switch_wait:
+	jam 1,mem_bt_send_max_slot_req_accept_after_switch
+	rtn
+
+z_host_create_conn_send_conn_req:
+	jam 20,mem_mouse_send_switch_req_timer
+	branch host_create_conn_send_conn_req
+
+
+
+
+
+org 0x50001
+
+z_entrance4:
+	beq ZCODE_40,z_le_update_param
+	beq ZCODE_41,z_le_update_channel_map
+	rtn
+
+z_le_update_param:
+	call z_mouse_le_conn_param_check
+	branch le_update_param+8
+z_mouse_le_lpm_mult_reinit:
+	fetch 1,mem_lpm_mult_init
+	store 1,mem_lpm_mult
+z_mouse_le_conn_param_lpm_enable:
+	jam LE_LPM_ENABLE,mem_mouse_le_conn_param_reject
+	rtn
+z_mouse_le_conn_param_lpm_disable:
+	jam LE_LPM_DISABLE,mem_mouse_le_conn_param_reject
+	rtn
+z_mouse_le_conn_param_check:
+	fetch 1,mem_le_new_conninterval
+	sub pdata,LE_INTERVAL_15MS,null
+	nbranch z_mouse_le_conn_param_lpm_disable,positive
+	fetch 1,mem_le_new_connslavelatency
+	fetcht 1,mem_lpm_mult_init
+	isub temp,null
+	branch z_mouse_le_lpm_mult_reinit,positive
+	fetch 1,mem_le_new_connslavelatency
+	store 1,mem_lpm_mult
+	branch z_mouse_le_conn_param_lpm_enable
+
+z_le_update_channel_map:
+	fetch 1,mem_le_state
+	rtnbit0 lestate_update_map
+	call z_le_channel_map_overflow_check
+	nrtn user
+	branch le_update_channel_map+3
+z_le_channel_map_overflow_check:
+	enable user
+	fetch 1,mem_le_event_count+1
+	rshift4 pdata,pdata
+	rtnne 0x0f
+	fetch 1,mem_le_instant+1
+	rshift4 pdata,pdata
+	rtnne 0x00
+	branch disable_user
+
+
+
+org 0x60001
+
+z_entrance5:
+	beq ZCODE_50,z_mouse_start_discovery
+	rtn
+
+
+z_mouse_start_discovery:
+	jam 0,mem_le_send_security_request_flag
+	call p_mouse_tx_power_init
+	jam 0,mem_mouse_clear_sensor_data_flag
+	fetch 2,mem_ui_state_map
+	bbit1 UI_STATE_BLE_ADV,z_mouse_start_discovery_norandom
+	fetch MOUSE_FLAG_LEN,mem_mouse_flag
+	bbit0 MOUSE_ENABLE_BLE_RANDOM_ADDRE,z_mouse_start_discovery_norandom
+ifdef BLE
+	call p_mouse_load_random_addr_increase_count
+	fetcht 2,mem_random_addr_increase_count
+	increase 1,temp
+	storet 2,mem_random_addr_increase_count
+	storet 2,mem_le_lap+1
+	call p_mouse_store_random_addr_increase_count
+	random pdata
+	store 1,mem_le_lap
+endif
+z_mouse_start_discovery_norandom:
+ifdef BLE_FAST_CONN_ENABLE
+	fetch 3,mem_le_lap_high_3B
+	store 3,mem_le_lap+3
+	call p_mouse_le_fast_conn_disable
+endif
+	call app_lpm_mult_disable
+	fetch 2,mem_discovery_timeout
+	store 2,mem_mouse_discovery_timer
+	jam 6,mem_connection_options
+	setarg 0
+	store 2,mem_mouse_no_data_timer
+	store 2,mem_mouse_direct_timer
+	arg MOUSE_STORE_EEPROM_FLAG,queue
+	call mouse_enable_function_flag
+	call mouse_bt_discovery_button_down_disable
+	fetch 1,mem_device_option
+	isolate1 MODE_4_MOUSE,pdata
+	call z_check_51cmd_adv,true
+	fetch 1,mem_device_option
+	isolate1 MODE_3_MOUSE,pdata
+	call check_51cmd_start_discovery,true
+//	fetch MOUSE_FLAG_LEN,mem_mouse_flag
+//	bbit1 MOUSE_ENABLE_DISCOVERY_SENSOR_LED,mouse_sensor_start_blink
+	branch p_mouse_discovery_multi_led_blink
+
+z_check_51cmd_adv:
+	jam 0,mem_mouse_le_reconnect_flag
+	call p_le_check_adv_flag
+	setarg ADV_FLAG_BREDR_NOT_SUPPORTED |ADV_FLAG_LIMITED_DISCOVERABLE
+	istore 1,contr
+	arg mem_le_adv_swift_pair,contr
+	call p_le_adv_data_update
+	branch check_51cmd_adv
+
+org 0x70001
+
+z_entrance6:
+	beq ZCODE_60,z_g24_start_24g_mode
+	beq ZCODE_61,z_mouse_24g_pairing_button
+	rtn
+	
+z_g24_start_24g_mode:
+	set0 mark_24g,mark
+	call p_g24_syncword_crc8
+	call p_g24_ch
+	fetch 1,mem_24g_pairing_sm
+	rtnne STATE_24G_PAIRING_SUCCESS
+	call z_g24_tx_attemp_data_prep
+z_g24_tx_attemp_dongle:
+	setarg 0
+	store 2,mem_24g_check_dongle_times
+z_g24_tx_attemp_dongle_loop:
+//	call lpo_calibration
+	nop 2000
+	fetch 1,mem_24g_check_dongle_times
+	beq 0xff,g24_stop_24g_mode
+	call p_g24_transmit_receive_ack
+	nbranch z_g24_attemp_txdata_retry,sync
+	nbranch z_g24_attemp_txdata_retry,user3
+z_g24_tx_attemp_dongle_succ:
+	set1 mark_24g,mark
+	setarg 0
+	store 2,mem_24g_check_dongle_times
+	call g24_app_tx_attempt_success
+	call p_g24_txbuf_clear
+	branch p_g24_transmit_by_interrupt_enable
+
+z_g24_tx_attemp_data_prep:
+	jam 0xff,mem_24g_common_temp
+	fetch 1,mem_24g_data_type
+	store 1,mem_24g_common_temp+1
+	fetch 4,mem_24g_device_addr
+	store 4,mem_24g_common_temp+2
+	arg 6,temp
+	arg mem_24g_common_temp,rega
+	call p_g24_put_data_in_buff
+	branch p_g24_transmit_prep
+	
+z_g24_attemp_txdata_retry:
+	fetch 2,mem_24g_check_dongle_times
+	increase 1,pdata
+	store 2,mem_24g_check_dongle_times
+	call p_g24_ch
+	branch z_g24_tx_attemp_dongle_loop
+
+
+z_mouse_24g_pairing_button:
+	fetch 1,mem_device_flag
+	rtneq MODE_BT_DEVICE1
+	fetch MOUSE_FLAG_LEN,mem_mouse_flag
+	rtnbit0 MOUSE_ENABLE_24G
+	rtnbit1 MOSUE_24G_PAIRING_FLAG
+	rtnmark1 mark_24g
+	arg MOSUE_24G_PAIRING_FLAG,queue
+	call mouse_enable_function_flag
+	setarg 0
+	store 2,mem_mouse_direct_timer
+	store 1,mem_mouse_send_blank_timer
+	store 2,mem_24g_check_dongle_times
+	call mouse_stop_discovery
+	branch z6_g24_start_pairing_sm1
+
+z6_g24_start_pairing_sm1:
+	set1 mark_24g,mark
+	call z6_g24_pair_init
+z6_g24_set_pairing_sm_1:
+	jam STATE_24G_PAIRING_1,mem_24g_pairing_sm
+	rtn
+
+z6_g24_pair_init:
+	jam TX_POWER_PAIR,mem_tx_power
+	jam 0,mem_24g_pid
+	jam G24_PAIR_CH,mem_24g_ch
+	fetch 4,mem_24g_paring_addr
+	branch p_g24_update_addr_and_synccrc8	
+
+org 0x80001
+
+z_entrance7:
+	beq ZCODE_70,z_g24_auto_pair_start
+	rtn
+
+z_g24_auto_pair_start:
+	set0 mark_24g,mark
+	call z_g24_auto_pair_all_powerful
+	call z7_g24_tx_attemp_data_prep
+z_g24_auto_pair_restart:
+	setarg 0
+	store 2,mem_24g_check_dongle_times
+z_g24_auto_pair_start_loop:
+//	call lpo_calibration
+	nop 2000
+	fetch 1,mem_24g_check_dongle_times
+	beq 0xff,g24_stop_24g_mode
+	call p_g24_transmit_receive_ack
+	nbranch z_g24_auto_pair_retry,sync
+	nbranch z_g24_auto_pair_retry,user3
+	call p_g24_ackpayload_parse
+	call p_mouse_tx_power_init
+	fetch 4,mem_24g_addr
+	fetcht 4,mem_24g_paring_addr
+	isub temp,null
+	branch z_g24_start_pairing_sm1,zero
+	set1 mark_24g,mark
+	setarg 0
+	store 2,mem_24g_check_dongle_times
+	call g24_app_tx_attempt_success
+	call p_g24_txbuf_clear
+	branch p_g24_transmit_by_interrupt_enable
+
+z7_g24_tx_attemp_data_prep:
+	jam 0xff,mem_24g_common_temp
+	fetch 1,mem_24g_data_type
+	store 1,mem_24g_common_temp+1
+	fetch 4,mem_24g_device_addr
+	store 4,mem_24g_common_temp+2
+	arg 6,temp
+	arg mem_24g_common_temp,rega
+	call p_g24_put_data_in_buff
+	branch p_g24_transmit_prep
+
+z_g24_auto_pair_retry:
+	fetch 2,mem_24g_check_dongle_times
+	increase 1,pdata
+	store 2,mem_24g_check_dongle_times
+	fetch 1,mem_24g_auto_paring_switch
+	increase 1,pdata
+	and_into 1,pdata
+	store 1,mem_24g_auto_paring_switch
+	beq 0,z_g24_auto_pair_device_attemp
+	beq 1,z_g24_auto_pair_pair_attemp
+	rtn
+	
+z_g24_auto_pair_all_powerful:
+	jam TX_POWER_PAIR,mem_tx_power
+	setarg 0x0f0f
+	store 2,mem_24g_addr
+	istore 2,contw
+z_g24_ch_syncword_crc8_init:	
+	call p_g24_syncword_crc8
+	branch p_g24_ch
+
+z_g24_auto_pair_device_attemp:
+	call z_g24_auto_pair_all_powerful
+	branch z_g24_auto_pair_start_loop
+
+z_g24_auto_pair_pair_attemp:
+	call z_g24_pair_init
+	branch z_g24_auto_pair_start_loop
+
+z_g24_start_pairing_sm1:
+	set1 mark_24g,mark
+	call z_g24_pair_init
+z_g24_set_pairing_sm_1:
+	jam STATE_24G_PAIRING_1,mem_24g_pairing_sm
+	rtn
+
+z_g24_pair_init:
+	jam TX_POWER_PAIR,mem_tx_power
+	jam 0,mem_24g_pid
+	jam G24_PAIR_CH,mem_24g_ch
+	fetch 4,mem_24g_paring_addr
+	branch p_g24_update_addr_and_synccrc8
+
+
+
+
+
+org 0x90001
+
+z_entrance8:
+	beq ZCODE_80,z_mouse_setting_config
+	beq ZCODE_81,z_le_addr_random_config
+//	beq ZCODE_82,z_le_parse_smp_pairing_failed
+	rtn
+//z_le_parse_smp_pairing_failed:
+//	call le_parse_smp_pairing_failed
+//	fetch 1,mem_le_state	//disable update conn param
+//	set0 lestate_update_param,pdata
+//	store 1,mem_le_state
+//	branch le_parse_terminate_ind
+
+
+ifdef BLE	
+z_le_addr_random_config:
+	call load_adc_init
+//	fetch 2,mem_0_5_adc_io_data	//adc data from otp
+//	nbranch z_le_otp_adc_empty,blank
+	setarg 0x1122
+z_le_otp_adc_empty:
+	store 2,mem_random_addr_increase_count
+	rtn
+endif
+
+
+z_mouse_setting_config:
+ifdef G24
+	call p_g24_set_device_addr
+endif
+//	//disable usb function
+//	hfetch 1,core_usb_config
+//	set0 4,pdata
+//	hstore 1,core_usb_config
+	call mouse_gpio_init
+	call p_mouse_multi_led_gpio_set_float
+
+	fetcht 1,mem_flash_ncs_gpio
+	call gpio_config_output
+	
+	call mouse_param_init
+ifdef CLASSIC_BT
+	call z_mouse_bt_sdp_update
+endif	
+	setarg 0
+	store 2,mem_lpm_interval
+	call load_adc_init
+	call mouse_adc_init
+ifdef BLE	
+	call le_set_config_fixed_ltk
+	call le_set_justwork
+	call le_set_fixed_ltk
+	call le_set_config_read_authentication
+	call p_le_addr_random_config
+endif
+	call p_flash_release_deep_power_down
+	call p_mouse_set_24g_addr_flash
+	fetch 3,mem_flash_base
+	iadd regb,pdata
+	call spid_read_flash
+
+	call p_mouse_load_flash_info_check
+ifdef BLE_FAST_CONN_ENABLE
+	arg 3,loopcnt
+	arg mem_device1_addr,contr
+	call p_pdata_0xff_check
+	nbranch p_mouse_le_fast_conn_disable,user
+	call p_mouse_fast_conn_init
+endif	
+	rtn	
+
+	
+ifdef CLASSIC_BT
+z_mouse_bt_sdp_update:
+	call enable_authrom
+	arg 0x8c00,contr
+	arg mem_mouse_uuid_list,contw
+	arg 369,loopcnt
+	call memcpy
+	//Attribute: HID SSR Host Max Latency
+	setarg 0x0f0209
+	istore 3,contw
+	setarg 0x120009
+	istore 3,contw
+	//Attribute: HID SSR Host Min Timeout
+	setarg 0x100209
+	istore 3,contw
+	setarg 0x000009
+	istore 3,contw
+	arg 0x8d71,contr
+	arg 265,loopcnt
+	call memcpy
+	
+	jam 0,mem_mouse_uuid_list+23	//Service Record Handle: 0x 00 01 00 00
+	jam 0x6d,mem_mouse_uuid_list+15	//total length
+	setarg 0x401f
+	store 2,mem_mouse_uuid_list+357	//timeout
+	setarg 0x6d04
+	store 2,mem_mouse_uuid_list+462	//VID
+	setarg 0x16b0
+	store 2,mem_mouse_uuid_list+468	//PID
+
+	setarg mem_mouse_uuid_list				//bt sdp start address
+	store 2,mem_ui_uuid_table
+	rtn
+endif	
+
+
+
+org 0xa0001
+
+z_entrance9:
+	beq ZCODE_90,z_g24_pairing_sm
+	beq ZCODE_91,z_g24_paring_mode
+	beq ZCODE_92,z_mouse_24g_pairing_complete
+	rtn
+
+z_g24_pairing_sm:
+	fetch 1,mem_24g_ensure
+	beq ENSURE_ON_24G,enable_user
+	fetch 1,mem_24g_pairing_sm
+	beq STATE_24G_PAIRING_1,z_g24_pairing_sm_1
+	beq STATE_24G_PAIRING_2,z_g24_pairing_sm_2
+	beq STATE_24G_PAIRING_3,z_g24_pairing_sm_3
+	branch assert
+
+z_g24_pairing_sm_1:
+	jam STATE_24G_PAIRING_1_WAITING_ACK,mem_24g_pairing_sm
+	jam 0xaa,mem_24g_common_temp
+	branch z_g24_pairing_sm_common
+z_g24_pairing_sm_2:
+	jam STATE_24G_PAIRING_2_WAITING_ACK,mem_24g_pairing_sm
+	jam 0x55,mem_24g_common_temp
+	branch z_g24_pairing_sm_common
+z_g24_pairing_sm_3:
+	jam STATE_24G_PAIRING_3_WAITING_ACK,mem_24g_pairing_sm
+	jam 0x22,mem_24g_common_temp
+z_g24_pairing_sm_common:
+	fetch 1,mem_24g_data_type
+	and_into bits_data,pdata
+	store 1,mem_24g_common_temp+1
+	fetch 4,mem_24g_device_addr
+	store 4,mem_24g_common_temp+2
+z_g24_put_pairing_data_in_buff:
+	jam 0,mem_24g_common_temp+6
+	arg mem_24g_common_temp,rega
+	arg 7,temp
+	call p_g24_put_data_in_buff
+	call p_g24_txdata_enable_tx
+	branch enable_user
+
+z_g24_paring_mode:
+	fetch 1,mem_24g_pairing_sm
+	rtneq STATE_24G_PAIRING_SUCCESS
+	beq STATE_24G_PAIRING_1_WAITING_ACK,z_g24_pairing_sm_1_waiting_ack
+	beq STATE_24G_PAIRING_2_WAITING_ACK,z_g24_pairing_sm_2_waiting_ack
+	beq STATE_24G_PAIRING_3_WAITING_ACK,z_g24_pairing_sm_3_waiting_ack
+	rtn
+
+z_g24_pairing_sm_1_waiting_ack:
+	jam STATE_24G_PAIRING_2,mem_24g_pairing_sm
+	branch p_g24_transmit_abandon
+z_g24_pairing_sm_2_waiting_ack:
+	jam STATE_24G_PAIRING_3,mem_24g_pairing_sm
+	branch p_g24_transmit_abandon
+z_g24_pairing_sm_3_waiting_ack:
+	jam STATE_24G_PAIRING_SUCCESS,mem_24g_pairing_sm
+	jam BT_EVT_24G_PAIRING_COMPLETE,mem_fifo_temp
+	call ui_ipc_send_event	
+	fetch 4,mem_24g_rxpayload+2
+	call p_g24_update_addr_and_synccrc8
+	branch p_g24_transmit_abandon
+
+
+z_mouse_24g_pairing_complete:
+	jam 1,mem_mouse_24g_enter_lpm_enable
+	arg MOSUE_24G_PAIRING_FLAG,queue
+	call mouse_disable_function_flag
+	setarg 0
+	store 2,mem_24g_pairing_timer_count
+	jam 0,mem_mouse_move_flag
+	
+	call mouse_read_sensor_common
+	call p_mouse_null_enter_hibernate_disable
+	call p_mouse_tx_power_init
+	
+	fetch 4,mem_24g_addr
+	store 4,mem_mouse_24g_addr
+	
+	call mouse_cheak_select_24gdevice
+	branch p_mouse_store_flash_device_info
+
+org 0xb0001
+
+z_entranceA:
+	beq ZCODE_A0,z_mouse_24g_attempt_fail
+	beq ZCODE_A1,z_mouse_le_conn_param_update_rsp_recieved
+	beq ZCODE_A2,z_mouse_le_bb_disconnected
+	beq ZCODE_A3,z_mouse_bb_event_reconn_timeout
+	beq ZCODE_A4,z_mouse_before_hibernate
+	rtn
+
+z_mouse_24g_attempt_fail:
+	jam G24_TX_TIMER_INT_DISABLE,mem_24g_transmit_by_interrupt
+	call p_mouse_tx_power_init
+	call p_g24_check_51cmd_stop_24g
+	jam 0,mem_link_key_exists
+	call p_mouse_setgpio_hibernate
+	branch p_mouse_null_enter_hibernate_enable
+
+z_mouse_le_conn_param_update_rsp_recieved:
+	fetch 2,mem_le_l2cap_signaling_conn_param_update_rsp_result
+	rtneq BLE_SIGNALING_CONNECT_PARAMETER_UPDATE_ACCEPTED
+	fetch 1,mem_le_tsniff
+	rshift2 pdata,pdata
+	sub pdata,LE_INTERVAL_15MS,null
+	rtn positive
+	setarg LE_INTERVAL_11_25MS
+	store 2,mem_le_interval_min
+	store 2,mem_le_interval_min+2
+	call p_app_updata_le_param
+	jam LE_LPM_DISABLE,mem_mouse_le_conn_param_reject
+	rtn
+
+
+z_mouse_bb_event_reconn_timeout:
+z_mouse_bb_event_reconn_failed:
+	fetch 2,mem_ui_state_map
+	rtnbit1 UI_STATE_BTN_DOWN
+	rtnbit1 UI_STATE_BT_DISCOVERY
+	rtnbit1 UI_STATE_BLE_ADV
+	fetch MOUSE_FLAG_LEN,mem_mouse_flag
+	rtnbit1 MOUSE_BT_DISCOVERY_BUTTON_DOWN_FLAG
+	branch app_bb_hibernate
+
+z_mouse_le_bb_disconnected:
+	jam 0,mem_mouse_le_bb_connected_flag
+	setarg LE_INTERVAL_8_75MS
+	store 2,mem_le_interval_min
+	store 2,mem_le_interval_min+2
+	jam LE_LPM_ENABLE,mem_mouse_le_conn_param_reject
+	jam 0,mem_mouse_clear_sensor_data_flag
+	call p_mouse_data_init
+	call le_clr_config_more_data
+	branch mouse_bb_disconnected
+
+
+z_mouse_before_hibernate:
+	enable user
+	hfetch 4,0x8138
+	setflag user,26,pdata
+	hstore 4,core_lpm_reg
+	call lpm_write_ctrl
+	call disable_authrom
+	call mouse_before_hibernate_wheel_gpio_set
+//	fetcht 1,mem_24g_sw_gpio
+//	call gpio_out_active
+	call p_mouse_setgpio_hibernate
+	fetch 1,mem_device_flag
+	sub pdata,MODE_24G_DEVICE,null
+	call p_mouse_select_device_button_gpio_set_suspend,zero
+
+	call p_flash_deep_power_down
+	hfetch 1,core_gpio_sel1
+	and pdata,0xf7,pdata
+	hstore 1,core_gpio_sel1  //disable flash spi
+
+	hfetch 1,core_gpio_pd3
+	set1 0,pdata
+	hstore 1,core_gpio_pd3
+
+	fetcht 1,mem_config_bt_button_gpio
+	branch gpio_set_wake_by_current_state
+
+org 0xc0001
+
+z_entranceB:
+	beq ZCODE_B0,z_mouse_le_bb_event_connected
+	beq ZCODE_B1,z_mouse_sniff_not_accept
+	beq ZCODE_B2,z_mouse_enter_sniff_check
+	beq ZCODE_B3,z_mouse_le_ll_start_encryt
+	beq ZCODE_B4,z_mouse_bb_event_disconnected
+	rtn
+
+z_mouse_le_bb_event_connected:
+	jam 1,mem_mouse_le_bb_connected_flag
+	fetch 1,mem_mouse_le_reconnect_flag
+	nbranch z_mouse_le_bb_event_connected_next,blank
+	jam 0x14,mem_mouse_send_secutiry_request_timer
+z_mouse_le_bb_event_connected_next:
+	call p_mouse_null_enter_hibernate_disable
+	call p_mouse_data_init
+	branch mouse_le_bb_event_connected
+
+z_mouse_sniff_not_accept:
+	fetch 1,mem_mouse_enter_sniff_count
+	rtneq 2
+	increase 1,pdata
+	store 1,mem_mouse_enter_sniff_count
+	jam 0x12,mem_sniff_param_interval	//89Hz
+	branch app_bt_enter_sniff
+
+z_mouse_enter_sniff_check:
+	fetch 1,mem_mouse_enter_sniff_count
+	rtnne 2
+	jam 0,mem_mouse_enter_sniff_count
+	jam 0x0e,mem_sniff_param_interval	//89Hz
+	branch app_bt_enter_sniff
+
+z_mouse_le_ll_start_encryt:
+	fetch 1,mem_mouse_le_reconnect_flag
+	beq 1,z_mouse_le_ll_reconn_start_encryt
+	branch z_mouse_le_ll_enable_start_enc_flag
+z_mouse_le_ll_reconn_start_encryt:
+	call p_app_updata_le_param
+	jam 5,mem_le_start_encrypt_timer
+z_mouse_le_ll_enable_start_enc_flag:
+	arg LL_START_ENC_FLAG,queue
+	branch mouse_le_enable_connect_flag
+
+z_mouse_bb_event_disconnected:
+	jam 0,mem_bt_rcvd_switch_req_accept
+	jam 0,mem_bt_send_lmp_setup_complete
+	jam 0,mem_mouse_bt_send_first_package_flag
+	branch mouse_bb_disconnected
+
+
+
Index: rom/app.prog
===================================================================
--- /branch/mouse_project/YJX_Project/YJX_1059/JDT_172_BD_2.4G&BLE/rom/app.prog	(nonexistent)
+++ /branch/mouse_project/YJX_Project/YJX_1059/JDT_172_BD_2.4G&BLE/rom/app.prog	(working copy)
@@ -0,0 +1,576 @@
+app_init:
+	bpatch patch18_4,mem_patch18
+	fetch 1,mem_device_option
+	branch app_init,blank				/* wait ram to be initialized */
+//	beq dvc_op_ukey,le_ukey_init
+	beq dvc_op_dongle,dongle_init
+	beq dvc_op_AntiLost,antilost_init
+	beq dvc_op_shutter,shutter_init
+	beq dvc_op_module,module_init
+	beq dvc_op_car,car_init
+	beq dvc_op_remote_car,remote_car_init
+	bbit1 dvc_op_mouse,mouse_init
+	rtn
+	
+app_lpm_init:
+	bpatch patch18_5,mem_patch18
+	jam 0,mem_tester_emulate
+	jam 0,mem_debug_config
+	jam 0, mem_lch_code
+	setarg 0
+	store 5,mem_sp_state_start
+	fetch 1,mem_device_option
+	branch app_lpm_init,blank				/* wait ram to be initialized */
+	beq dvc_op_module,module_lpm_init
+app_lpm_init0:
+	rtn
+
+	
+app_process_idle:
+	call ui_dispatch
+	call check_51cmd
+	call app_process_bb_event
+	fetch 2,mem_cb_idle_process
+	branch callback_func
+	
+app_process_bt:
+	fetch 2,mem_cb_bt_process
+	branch callback_func
+	
+app_process_ble:
+	fetch 2,mem_cb_le_process
+	branch callback_func
+
+app_process_bb_event:
+	bpatch patch18_6,mem_patch18
+	//return if c51 need to process bb event
+	arg mem_ipc_fifo_bt2c51,rega
+	call fifo_out
+	rtn blank
+	//reaching here mains c51 cannot get bb event.
+	copy pdata,regc
+	call app_event_normal_process
+	branch app_process_bb_event_priority
+	
+app_discard_event:
+	arg 0,regc
+	rtn
+
+//************************************************//
+//*APP BB EVENT NORMAL PROCESS**//
+//************************************************//
+app_event_normal_process:
+	beq BT_EVT_BB_CONNECTED,app_evt_bt_conn
+	beq BT_EVT_BUTTON_LONG_PRESSED,app_evt_button_long_pressed
+	beq BT_EVT_SETUP_COMPLETE,app_evt_setup_complete
+	beq BT_EVT_HID_HANDSHAKE,app_evt_hid_handshake
+	beq BT_EVT_HID_CONNECTED,app_bb_event_hid_connected
+	beq BT_EVT_RECONN_FAILED,app_bb_event_reconn_failed
+	beq BT_EVT_BB_DISCONNECTED,app_bb_event_bb_disconn
+	beq BT_EVT_RECONN_PAGE_TIMEOUT,app_bb_event_reconn_failed	
+	beq BT_EVT_LE_CONNECTED,app_le_event_bb_connected
+	beq BT_EVT_LE_DISCONNECTED,app_le_event_bb_disconn
+	beq BT_EVT_RECONN_STARTED,app_event_reconn_start
+	beq BT_EVT_ENTER_SNIFF,app_event_enter_sniff
+	beq BT_EVT_EXIT_SNIFF,app_event_exit_sniff
+	
+	beq BT_EVT_ML2CAP_CONN_REFUSED,app_event_ml2cap_conn_refused
+	beq BT_EVT_LINKKEY_GENERATE,app_event_linkkey_generate
+	beq BT_EVT_SWITCH_FAIL_MASTER,app_event_switch_fail_master
+	beq BT_EVT_SWITCH_SUCCESS_MASTER,app_event_switch_success
+	rtn
+
+
+app_evt_bt_conn:
+	fetch 2,mem_ui_state_map
+	set1 UI_STATE_BT_CONNECTED,pdata
+	store 2,mem_ui_state_map
+	fetch APP_DISC_RSN_SIZE,mem_app_disconn_reason_flag
+	set0 APP_DISC_BY_BUTTON ,pdata
+	store APP_DISC_RSN_SIZE,mem_app_disconn_reason_flag
+	rtn
+
+app_event_switch_success:
+	jam 0,mem_switch_fail_master_count
+	rtn	
+
+app_event_switch_fail_master:
+	fetch 1,mem_switch_fail_master_count
+	increase 1,pdata
+	store 1,mem_switch_fail_master_count
+	sub pdata,1,null
+	branch app_bt_role_switch,positive
+	jam 0,mem_switch_fail_master_count
+	fetch APP_DISC_RSN_SIZE,mem_app_disconn_reason_flag
+	set1 APP_DISC_SWITCH_FAIL,pdata
+	store APP_DISC_RSN_SIZE,mem_app_disconn_reason_flag
+	branch app_bt_disconnect
+	
+app_process_bb_event_priority:
+	fetch 2,mem_cb_bb_event_process
+	branch callback_func
+
+app_check_wake_lock:
+	fetch 2,mem_cb_check_wakelock
+	branch callback_func
+	
+app_will_enter_lpm:
+	fetch 2,mem_cb_before_lpm
+	branch callback_func
+
+app_event_linkkey_generate:
+	fetch APP_DISC_RSN_SIZE,mem_app_disconn_reason_flag
+	set1 APP_DISC_AFTER_PAIRING ,pdata
+	store APP_DISC_RSN_SIZE,mem_app_disconn_reason_flag
+	branch app_bt_store_reconn_info
+	
+app_event_reconn_start:
+	fetch 2,mem_ui_state_map
+	set1 UI_STATE_BT_RECONNECT,pdata
+	store 2,mem_ui_state_map
+	fetch APP_DISC_RSN_SIZE,mem_app_disconn_reason_flag
+	set1 APP_DISC_AFTER_RECONN,pdata
+	store APP_DISC_RSN_SIZE,mem_app_disconn_reason_flag
+	rtn
+
+app_evt_setup_complete:
+	fetch 2,mem_ui_state_map
+	set1 UI_STATE_BT_SETUP_COMPLETE,pdata
+	store 2,mem_ui_state_map
+	fetch APP_DISC_RSN_SIZE,mem_app_disconn_reason_flag
+	set1 APP_DISC_AFTER_SETUP_DONE,pdata
+	store APP_DISC_RSN_SIZE,mem_app_disconn_reason_flag
+	rtn
+
+app_evt_hid_handshake:
+	fetch 2,mem_ui_state_map
+	set1 UI_STATE_BT_HID_HANDSHAKE,pdata
+	store 2,mem_ui_state_map
+	rtn
+	
+app_event_enter_sniff:
+	fetch 2,mem_ui_state_map
+	set1 UI_STATE_BT_SNIFF,pdata
+	store 2,mem_ui_state_map
+	fetch APP_DISC_RSN_SIZE,mem_app_disconn_reason_flag
+	set1 APP_DISC_AFTER_SNIFF,pdata
+	store APP_DISC_RSN_SIZE,mem_app_disconn_reason_flag
+	rtn
+	
+app_event_exit_sniff:
+	fetch 2,mem_ui_state_map
+	set0 UI_STATE_BT_SNIFF,pdata
+	store 2,mem_ui_state_map
+	rtn
+
+app_le_event_bb_connected:
+	fetch 2,mem_ui_state_map
+	set1 UI_STATE_BLE_CONNECTED,pdata
+	store 2,mem_ui_state_map
+	rtn
+	
+app_le_event_bb_disconn:
+	fetch 2,mem_ui_state_map
+	set0 UI_STATE_BLE_CONNECTED,pdata
+	store 2,mem_ui_state_map
+	branch app_lpm_mult_disable
+	
+app_bb_event_hid_connected:
+	fetch 2,mem_ui_state_map
+	set1 UI_STATE_BT_HID_CONN,pdata
+	store 2,mem_ui_state_map
+	rtn
+
+app_evt_button_long_pressed:
+	fetch APP_DISC_RSN_SIZE,mem_app_disconn_reason_flag
+	set1 APP_DISC_BY_BUTTON,pdata
+	store APP_DISC_RSN_SIZE,mem_app_disconn_reason_flag
+	rtn
+	
+app_event_ml2cap_conn_refused:
+	fetch APP_DISC_RSN_SIZE,mem_app_disconn_reason_flag
+	set1 APP_DISC_L2CAP_REFUSED,pdata
+	store APP_DISC_RSN_SIZE,mem_app_disconn_reason_flag
+	branch  app_bt_disconnect
+
+
+app_evt_timer:
+	bpatch patch18_7,mem_patch18
+	store 1,mem_app_evt_timer_count
+app_evt_100ms_loop:
+	fetch 1,mem_app_evt_timer_count
+	rtn blank
+	increase -1,pdata
+	store 1,mem_app_evt_timer_count
+	call ui_button_polling
+	call app_lpm_wake_auto_lock_timer
+	call app_unsniff_delay_timer
+	call app_discovery_timer
+	call flash_write_spi_sm_timer
+	fetch 2,mem_cb_event_timer
+	call callback_func
+	branch app_evt_100ms_loop
+
+
+//regc:timer addr
+//regb:timer up call back fuction
+timer_single_step:
+	ifetch 1,regc
+	rtn blank
+	pincrease -1
+	istore 1,regc
+	nrtn blank
+	copy regb,pdata
+	branch callback_func
+
+//regc:timer addr
+//regb:timer up call back fuction
+timer_single_step_2B:
+	ifetch 2,regc
+	rtn blank
+	pincrease -1
+	istore 2,regc
+	nrtn blank
+	copy regb,pdata
+	branch callback_func
+	
+app_power_timer:
+	fetcht 2,mem_power_param_ptr
+	add temp,power_timer_offset,regc
+	arg app_power_timer_timeout,regb
+	branch timer_single_step
+	
+app_power_timer_timeout:
+	call app_got_power_state_common
+	beq POWER_STARTING,app_enter_power_stanby_state
+app_enter_power_off_state:
+	branch app_enter_hibernate
+app_enter_power_stanby_state:
+	setarg POWER_STANDBY
+	istore 1,regc
+	add temp,power_standby_cb_offset,regb
+app_power_cb_common:
+	ifetch 2,regb
+	branch callback_func
+
+app_unsniff_delay_timer:
+	arg mem_unsniff2sniff_timer_count,regc
+	arg app_unsniff_delay_timeout,regb
+	branch timer_single_step
+	
+app_unsniff_delay_timeout:
+	call context_check_idle
+	branch app_bt_enter_sniff,zero
+	rtn
+
+
+app_discovery_timer:
+	arg mem_discovery_timeout_timer_count,regc
+	arg app_discovery_timeout,regb
+	branch timer_single_step_2B
+	
+app_discovery_timeout:
+	call app_bt_stop_discovery
+	call app_led_off
+	fetch 2,mem_cb_discovry_timeout
+	branch callback_func
+
+	
+app_bb_event_reconn_failed:
+	call app_disconn_reason_flag_clear
+app_clear_reconnect_flag:
+	fetch 2,mem_ui_state_map
+	set0 UI_STATE_BT_RECONNECT,pdata
+	store 2,mem_ui_state_map
+	rtn
+
+app_bb_event_bb_disconn:
+	jam 0,mem_unsniff2sniff_timer_count
+	fetch 2,mem_ui_state_map
+	bbit1 UI_STATE_BT_RECONNECT,app_bb_event_bb_reconn_disconn
+	isolate0 UI_STATE_BT_SETUP_COMPLETE,pdata
+ 	call app_discard_event,true
+app_bb_event_bb_reconn_disconn:
+	bpatch patch19_0,mem_patch19
+	fetch 2,mem_ui_state_map
+	set0 UI_STATE_BT_CONNECTED,pdata
+	set0 UI_STATE_BT_SETUP_COMPLETE,pdata
+	set0 UI_STATE_BT_HID_CONN,pdata
+	set0 UI_STATE_BT_HID_HANDSHAKE,pdata
+	set0 UI_STATE_BT_RECONNECT,pdata
+	store 2,mem_ui_state_map
+	branch app_lpm_mult_disable
+	
+app_bb_hibernate:
+	call app_disconn_reason_clear
+	branch app_enter_hibernate
+
+	
+app_disconn_reason_clear:
+	setarg 0
+	store APP_DISC_RSN_SIZE,mem_app_disconn_reason
+	rtn
+app_disconn_reason_flag_clear:
+	setarg 0
+	store APP_DISC_RSN_SIZE,mem_app_disconn_reason_flag
+	rtn
+
+app_disconn_reason_collect_bt:
+	fetch APP_DISC_RSN_SIZE,mem_app_disconn_reason_flag
+	store APP_DISC_RSN_SIZE,mem_app_disconn_reason
+	setarg 0
+	store APP_DISC_RSN_SIZE,mem_app_disconn_reason_flag
+	rtn
+	
+app_disconn_reason_collect_ble:
+	fetch APP_DISC_RSN_SIZE,mem_app_disconn_reason_flag
+	set1 APP_DISC_BLE,pdata
+	store APP_DISC_RSN_SIZE,mem_app_disconn_reason
+	setarg 0
+	store APP_DISC_RSN_SIZE,mem_app_disconn_reason_flag
+	rtn
+
+	
+//************************************************//
+//********APP SHARED FUNCSIONS*******//
+//************************************************//
+
+
+app_check_sniff:
+	fetch 1,mem_ui_state_map
+	isolate1 UI_STATE_BT_SNIFF,pdata
+	rtn
+
+//*****************************************//
+//*****************API********************//
+//*****************************************//
+//app_clearflag_store:
+//	setarg 0
+//	branch app_flag_store
+app_initflag_store:
+	setarg EEPROM_INIT_FLAG
+app_flag_store:
+	store 2,mem_timeup
+	bpatch patch19_1,mem_patch19
+	arg 2,temp
+	arg mem_timeup,rega
+	arg eeprom_module_init_flag,regb
+	branch iicd_write_eep_data
+
+//initflag is in eeprom to sure is eeprom nead to init
+app_initflag_check:
+	bpatch patch19_2,mem_patch19
+	arg 2,temp
+	arg mem_pdatatemp,rega
+	arg eeprom_module_init_flag,regb
+	call iicd_read_eep_data
+	fetch 2,mem_pdatatemp
+	arg EEPROM_INIT_FLAG,temp
+	isub  temp,null
+	rtn
+
+
+app_start_auto_sniff:
+	fetch 1,mem_unsniff2sniff_timer
+	store 1,mem_unsniff2sniff_timer_count
+	rtn	
+	
+app_get_lpm_wake_lock:
+	arg wake_lock_app,queue
+	branch lpm_get_wake_lock
+
+app_put_lpm_wake_lock:
+	arg wake_lock_app,queue
+	branch lpm_put_wake_lock
+	
+app_lpm_wake_auto_lock:
+	jam  LPM_WAKE_UP_DELAY_TIMER,mem_wake_up_delay_timer
+	branch app_get_lpm_wake_lock
+	
+app_lpm_wake_auto_lock_timer:
+	arg mem_wake_up_delay_timer,regc
+	arg app_put_lpm_wake_lock,regb
+	branch timer_single_step
+
+app_l2cap_flow_control_enable:
+	jam L2CAP_FLOW_CTRL_ENABLE,mem_l2cap_flow_ctrl_flag
+	rtn
+
+app_l2cap_flow_control_disable:
+	jam L2CAP_FLOW_CTRL_DISABLE,mem_l2cap_flow_ctrl_flag
+	rtn
+	
+app_bt_set_pincode:
+	jam BT_CMD_SET_PIN_CODE,mem_fifo_temp
+	branch ui_ipc_send_cmd
+
+app_bt_role_switch:
+	jam BT_CMD_ROLE_SWITCH,mem_fifo_temp
+	branch ui_ipc_send_cmd
+	
+app_bt_start_reconnect:
+	bpatch patch19_3,mem_patch19
+	fetch 1,mem_app_connection_options
+	store 1,mem_connection_options
+	jam APP_FLAG_RECONNECT,mem_reconnect_flag
+	jam BT_CMD_RECONNECT,mem_fifo_temp
+	branch ui_ipc_send_cmd	
+	
+app_bt_reconnect_cancel:
+	jam BT_CMD_BB_RECONN_CANCEL,mem_fifo_temp
+	branch ui_ipc_send_cmd
+	
+app_bt_disconnect:
+	jam BT_CMD_DISCONNECT,mem_fifo_temp
+	branch ui_ipc_send_cmd	
+
+app_bt_start_discovery_short:
+	fetch 2,mem_discovery_timeout
+	store 2,mem_discovery_timeout_timer_count
+app_bt_start_discovery_led_blink:
+	call app_led_start_blink
+app_bt_start_discovery:
+	jam BT_CMD_START_DISCOVERY,mem_fifo_temp
+	branch ui_ipc_send_cmd
+
+app_bt_stop_discovery:
+	setarg 0
+	store 2,mem_discovery_timeout_timer_count
+	jam BT_CMD_STOP_DISCOVERY,mem_fifo_temp
+	branch ui_ipc_send_cmd
+	
+app_ble_start_direct_adv:
+	jam BT_CMD_START_DIRECT_ADV,mem_fifo_temp
+	branch ui_ipc_send_cmd
+
+app_ble_stop_direct_adv:
+	jam BT_CMD_STOP_DIRECT_ADV,mem_fifo_temp
+	branch ui_ipc_send_cmd
+	
+app_ble_stop_adv:
+	jam BT_CMD_STOP_ADV,mem_fifo_temp
+	branch ui_ipc_send_cmd
+	
+app_ble_start_adv:	
+	jam BT_CMD_START_ADV,mem_fifo_temp
+	branch ui_ipc_send_cmd
+	
+app_ble_start_scan:
+	jam BT_CMD_LE_START_SCAN,mem_fifo_temp
+	branch ui_ipc_send_cmd
+	
+app_ble_stop_scan:
+	jam BT_CMD_LE_STOP_SCAN,mem_fifo_temp
+	branch ui_ipc_send_cmd
+	
+app_ble_start_conn:
+	jam BT_CMD_LE_START_CONN,mem_fifo_temp
+	branch ui_ipc_send_cmd
+	
+app_ble_disconnect:
+	jam BT_CMD_LE_DISCONNECT,mem_fifo_temp
+	branch ui_ipc_send_cmd
+	
+app_led_start_blink:	
+	jam BT_CMD_LED_BLINK,mem_fifo_temp
+	branch ui_ipc_send_cmd
+
+app_led_on:
+	jam BT_CMD_LED_ON,mem_fifo_temp
+	branch ui_ipc_send_cmd
+	
+app_led_stop_blink:
+app_led_off:
+	jam BT_CMD_LED_OFF,mem_fifo_temp
+	branch ui_ipc_send_cmd
+	
+app_enter_hibernate:
+	jam BT_CMD_ENTER_HIBERNATE,mem_fifo_temp 
+	branch ui_ipc_send_cmd
+	
+app_bt_sniff_exit:
+	jam BT_CMD_EXIT_SNIFF,mem_fifo_temp
+	branch  ui_ipc_send_cmd
+	
+app_bt_enter_sniff:
+	jam BT_CMD_ENTER_SNIFF,mem_fifo_temp
+	branch ui_ipc_send_cmd
+
+app_ble_store_reconn_info:
+	jam BT_CMD_STORE_RECONN_INFO_LE,mem_fifo_temp
+	branch ui_ipc_send_cmd
+
+app_bt_store_reconn_info:
+	jam BT_CMD_STORE_RECONN_INFO_BT,mem_fifo_temp
+	branch ui_ipc_send_cmd
+
+app_store_reconn_info:
+	jam BT_CMD_STORE_RECONN_INFO,mem_fifo_temp
+	branch ui_ipc_send_cmd
+
+app_lpm_mult_enable:
+	set1 mark_lpm_mult_enable,mark
+	rtn
+
+app_lpm_mult_disable:
+	set0 mark_lpm_mult_enable,mark
+	rtn
+
+
+/*
+
+mem_power_param struct
+{
+	usigned char     mem_power_state
+	usigned char     mem_power_timer
+	usigned char	 mem_power_off_timeout
+	usigned char	 mem_power_starting_timeout
+	usigned long	 mem_power_off_cb
+	usigned long	 mem_power_starting_cb
+	usigned long	 mem_power_standby_cb
+	usigned long 	 mem_ui_butten_up_cb
+}
+    	functions:power state switching by mem_app_power_timer timeout or by button_long_pressed event
+    	(power off -> power starting->power standby->power off) and power timer initialization 
+ input parameters:mem_power_param_ptr should be point to the variable(mem_power_param) address where the input parameters stored in with its format
+output parameters:switched power state will be stored in variable mem_power_state*/
+app_button_long_pressed:
+	call app_got_power_state_common
+	beq POWER_STANDBY,app_power_shutting_down
+app_power_starting:
+	setarg POWER_STARTING
+	istore 1,regc
+	add temp,power_starting_timeout_offset,rega
+	add temp,power_starting_cb_offset,regb
+app_power_common:
+	ifetcht 1,rega
+	increase 1,regc
+	istoret 1,regc
+	branch app_power_cb_common
+	
+app_power_shutting_down:
+	setarg POWER_OFF
+	istore 1,regc
+	fetch 2,mem_ui_state_map
+	bbit0 UI_STATE_BLE_CONNECTED,app_power_off_end
+	call app_ble_disconnect
+app_power_off_end:
+	fetcht 2,mem_power_param_ptr
+	add temp,power_off_timeout_offset,rega
+	add temp,power_off_cb_offset,regb
+	branch app_power_common
+	
+app_got_power_state_common:
+	fetcht 2,mem_power_param_ptr
+	add temp,power_state_offset,regc
+	ifetch 1,regc
+	rtn
+
+app_event_button_up:
+	call app_got_power_state_common
+	bne POWER_OFF,app_power_release
+	branch app_enter_hibernate
+app_power_release:
+	add temp,ui_butten_up_cb_offset,regb
+	branch app_power_cb_common
+
Index: rom/app_mouse.prog
===================================================================
--- /branch/mouse_project/YJX_Project/YJX_1059/JDT_172_BD_2.4G&BLE/rom/app_mouse.prog	(nonexistent)
+++ /branch/mouse_project/YJX_Project/YJX_1059/JDT_172_BD_2.4G&BLE/rom/app_mouse.prog	(working copy)
@@ -0,0 +1,2662 @@
+
+
+//define FPGA_DEBUG
+
+
+ifdef COMPILE_MOUSE
+mouse_init:
+	call mouse_setting_config
+	call spi_ncs_enable
+	call mouse_init_sunt
+	call mouse_dpi_config
+	call spi_ncs_disable
+	rtn wake
+	call mouse_cheak_enable_usb
+	call mouse_cb_fuction
+//	fetch 1,mem_wakup_from_power_flag
+//	isolate0 gpio_latch,pdata
+	fetch MOUSE_FLAG_LEN,mem_mouse_flag
+	rtnbit1 MOUSE_ENABLE_USB
+	call mouse_wakeup_from_power//,true	// enter 
+ifdef FPGA_DEBUG
+	arg MOUSE_FPGA_DEBUG_GPIO,temp
+	call gpio_config_output
+	arg MOUSE_FPGA_RF_WORK_DEBUG_GPIO,temp
+	call gpio_config_output
+	arg MOUSE_FPGA_DEBUG_GPIO,temp
+	call gpio_out_active
+endif
+	rtnmark1 mark_24g
+	fetch 2,mem_ui_state_map
+	bbit1 UI_STATE_BTN_DOWN,mouse_start_discovery
+	branch mouse_check_reconn_target
+
+
+mouse_delay_4s:
+	fetch MOUSE_FLAG_LEN,mem_mouse_flag
+	rtnbit0 MOUSE_ENABLE_INIT_DELAY
+	arg 20,loopcnt
+mouse_delay_20ms:
+	setarg 200000
+	call sleep
+	loop delay_10ms
+	rtn
+
+	
+mouse_cheak_enable_usb:
+	fetch MOUSE_FLAG_LEN,mem_mouse_flag
+	rtnbit0 MOUSE_ENABLE_USB
+	branch usb_init
+	
+
+mouse_cb_fuction:
+	setarg mouse_le
+	store 2,mem_cb_le_process
+	setarg mouse_send_process
+	store 2,mem_cb_bt_process
+	setarg mouse_process_lpm_before
+	store 2,mem_cb_before_lpm
+	setarg mouse_priority_bb_event
+	store 2,mem_cb_bb_event_process
+	setarg mouse_idle
+	store 2,mem_cb_idle_process
+	setarg mouse_before_hibernate
+	store 2,mem_cb_before_hibernate
+	setarg le_mouse_bb_event_connect_complete
+	store 2,mem_cb_att_write
+
+	call g24_head_ptr2regc
+	setarg mouse_g24_package_data
+	add regc,offset_24g_cb_data,contw
+	istore 2,contw
+	setarg mouse_g24_enter_lpm
+	add regc,offset_24g_cb_lpm_prepare,contw
+	istore 2,contw
+	setarg mouse_lpm_before_common
+	add regc,offset_24g_cb_lpm_before,contw
+	istore 2,contw
+	
+	setarg mouse_bb_event_timer
+	store 2,mem_cb_event_timer
+	setarg mouse_spi_write_flash_cb
+	store 2,mem_cb_spi_flash_write_complate
+	rtn
+mouse_spi_write_flash_cb:
+mouse_spi_init:
+	fetch MOUSE_FLAG_LEN,mem_mouse_flag
+	bbit0 MOUSE_ENABLE_SPI2,spid_init
+	branch spid_init2
+
+mouse_setting_config:
+	rtn wake
+	call g24_set_device_addr
+	call mouse_gpio_init
+	call mouse_param_init
+	call mouse_adc_init
+	call le_set_config_fixed_ltk
+	call le_set_justwork
+	call le_set_fixed_ltk
+	call le_set_config_read_authentication
+	fetch MOUSE_FLAG_LEN,mem_mouse_flag
+	bbit1 MOUSE_ENABLE_EEPROM,mouse_init_iic
+	bbit1 MOUSE_ENABLE_FLASH,mouse_load_flash_info_cheak
+	rtn
+
+mouse_init_iic:
+	call iic_init_390k
+	fetch MOUSE_FLAG_LEN,mem_mouse_flag
+	isolate1 MOUSE_ENABLE_2K_EEPROM,pdata
+	ncall clear_eeprom_size_2k,true
+	call mouse_load_eeprom_dpi
+	call mouse_init_environment
+	call mouse_set_24g_addr_eeprom
+	branch iicd_read_eep_data
+
+mouse_wakeup_from_power:
+	fetch MOUSE_FLAG_LEN,mem_mouse_flag
+	bbit0 MOUSE_ENABLE_WAKEUP_FROM_POWER,mouse_wakeup_no_from_power
+	fetch 1,mem_wakup_from_power_flag
+	isolate0 gpio_latch,pdata
+	nrtn true
+mouse_wakeup_no_from_power:
+	fetch 1,mem_reconn_times_init
+	store 1,mem_reconn_times
+	fetch 1,mem_config_function_enable
+	rtnbit1 ENABLE_SELECT_DEVICE_BY_SWITCH
+mouse_start_24g_mode:
+	fetch MOUSE_FLAG_LEN,mem_mouse_flag
+	rtnbit0 MOUSE_ENABLE_24G
+	bbit1 MOUSE_ENABLE_AUTO_24G_PARING,g24_auto_pair_start
+	branch g24_check_51cmd_start_24g
+le_mouse_bb_event_connect_complete:
+	fetch 1,mem_le_att_handle
+	sub pdata,26,pdata
+	nrtn zero
+	jam BT_CMD_LE_UPDATE_CONN,mem_fifo_temp
+	call ui_ipc_send_cmd
+mouse_le_write_enable:	
+	arg WRITE_REQ_ENABLE_FLAG,queue
+	branch mouse_le_enable_connect_flag
+
+mouse_dpi_up:
+	fetch 1,mem_mouse_dpi_button_state
+	rtneq DPI_BUTTON_STATE_UP
+	jam DPI_BUTTON_STATE_UP,mem_mouse_dpi_button_state
+	rtn
+mouse_dpi_config:
+	fetch 1,mem_config_sensor_motion
+	and pdata,0x0f,pdata
+	store 1,mem_mouse_dpi
+	branch mouse_seting_dpi+2
+
+
+mouse_dpi_cheak:
+	fetcht 1,mem_dpi_button_gpio
+	call gpio_get_bit
+	nbranch mouse_dpi_up,true
+mouse_dpi_down:
+	fetch 1,mem_mouse_dpi_button_state
+	rtneq DPI_BUTTON_STATE_DOWN
+	jam DPI_BUTTON_STATE_DOWN,mem_mouse_dpi_button_state
+mouse_dpi_down_setting:
+	fetch 1,mem_mouse_dpi
+	increase 1,pdata
+	and pdata,0x03,pdata
+	store 1,mem_mouse_dpi
+	call mouse_seting_dpi
+	fetch MOUSE_FLAG_LEN,mem_mouse_flag
+	bbit1 MOUSE_ENABLE_EEPROM,mouse_store_eerpom_dpi
+	bbit1 MOUSE_ENABLE_FLASH,mouse_before_store_flash_cpi
+	rtn
+mouse_before_store_flash_cpi:
+	arg MOUSE_SPI2_CLK_GPIO,temp
+	call gpio_config_output				//hold high
+	arg MOUSE_SPI2_SDIO_GPIO,temp
+	call gpio_config_output 			//hold high 
+	branch mouse_store_flash_device_info
+
+mouse_seting_dpi:
+	bpatch patch1c_3,mem_patch1c
+	call mosue_dpi_led_blink_init
+	fetch 1,mem_config_sensor_type
+	beq P3610,mouse_seting_3610_dpi
+	beq P3212,mouse_seting_3212_dpi
+	fetch 1,mem_mouse_dpi
+	beq MOUSE_DPI_LEVEL1,mouse_set_cpi1
+	beq MOUSE_DPI_LEVEL2,mouse_set_cpi2
+	beq MOUSE_DPI_LEVEL3,mouse_set_cpi3
+	beq MOUSE_DPI_LEVEL4,mouse_set_cpi4
+mouse_set_cpi2:
+	fetch 1,mem_320x_dpi_2
+	branch mouse_p3205_dpi
+mouse_set_cpi1:
+	fetch 1,mem_320x_dpi_1
+	branch mouse_p3205_dpi
+mouse_set_cpi3:
+	fetch 1,mem_320x_dpi_3
+	branch mouse_p3205_dpi
+mouse_set_cpi4:
+	fetch 1,mem_320x_dpi_4
+	branch mouse_p3205_dpi
+moue_seting_cpi_count:
+	fetch 1,mem_config_sensor_type
+	rtneq P3065_XY
+	fetch 1 ,mem_mouse_cpi_count
+	increase 1,pdata
+	store 1,mem_mouse_cpi_count
+	rtn
+
+mouse_seting_3212_dpi:
+	fetch 1,mem_mouse_dpi
+	beq MOUSE_DPI_LEVEL1,mouse_set_p3212_cpi1
+	beq MOUSE_DPI_LEVEL2,mouse_set_p3212_cpi2
+	beq MOUSE_DPI_LEVEL3,mouse_set_p3212_cpi3
+	beq MOUSE_DPI_LEVEL4,mouse_set_p3212_cpi4
+mouse_set_p3212_cpi2:
+	fetch 1,mem_3212_dpi_2
+	branch mouse_p3212_dpi
+mouse_set_p3212_cpi1:
+	fetch 1,mem_3212_dpi_1
+	branch mouse_p3212_dpi
+mouse_set_p3212_cpi3:
+	fetch 1,mem_3212_dpi_3
+	branch mouse_p3212_dpi
+mouse_set_p3212_cpi4:
+	fetch 1,mem_3212_dpi_4
+mouse_p3212_dpi:
+	store 1,mem_mouse_cpi_count
+	lshift8 pdata,pdata
+	copy pdata,rega
+	add pdata,MOUSE_P3212_DPI_XADDRESS,pdata
+  	call twspi_write
+ 	copy rega,pdata
+  	add pdata,MOUSE_P3212_DPI_YADDRESS,pdata
+	branch twspi_write
+	
+mouse_seting_3610_dpi:
+	fetch 1,mem_mouse_dpi
+	beq MOUSE_DPI_LEVEL1,mouse_set_p3610_cpi1
+	beq MOUSE_DPI_LEVEL2,mouse_set_p3610_cpi2
+	beq MOUSE_DPI_LEVEL3,mouse_set_p3610_cpi3
+	beq MOUSE_DPI_LEVEL4,mouse_set_p3610_cpi4
+mouse_set_p3610_cpi2:
+	fetch 1,mem_3610_dpi_2
+	branch mouse_p3610_dpi
+mouse_set_p3610_cpi1:
+	fetch 1,mem_3610_dpi_1
+	branch mouse_p3610_dpi
+mouse_set_p3610_cpi3:
+	fetch 1,mem_3610_dpi_3
+	branch mouse_p3610_dpi
+mouse_set_p3610_cpi4:
+	fetch 1,mem_3610_dpi_4
+mouse_p3610_dpi:
+	store 1,mem_mouse_cpi_count
+	call mouse_spi_sdio_gpio_pollup
+	fetch 1,mem_mouse_cpi_count
+mouse_reset_p3610_dpi:
+	add pdata,0x80,pdata
+	lshift8 pdata,pdata
+	add pdata,MOUSE_P3610_DPI_ADDRESS,pdata
+	copy pdata,rega
+	branch mouse_set_sensor_reg
+	
+mouse_p3205_dpi:
+	store 1,mem_mouse_cpi_count
+	call moue_seting_cpi_count
+	fetch 1,mem_mouse_cpi_count
+	setarg MOUSE_DPI_ADDRESS
+	call twspi_read
+	and pdata,0xf8,temp
+	fetch 1,mem_mouse_cpi_count
+	iadd temp,pdata
+	lshift8 pdata,pdata
+	add pdata,MOUSE_DPI_ADDRESS,pdata
+	branch twspi_write
+	
+
+mouse_init_environment:
+	call app_initflag_check
+	branch mouse_eeprom_load_recon_info,zero
+	call mouse_ble_init_address
+	call mouse_store_eeprom_device_info
+	branch app_initflag_store
+
+
+mouse_24g_pairing_button:
+	fetch 2,mem_24g_pairing_timer_count
+	rtn blank
+	fetch MOUSE_FLAG_LEN,mem_mouse_flag
+	rtnbit0 MOUSE_ENABLE_24G
+	rtnbit1 MOSUE_24G_PAIRING_FLAG
+	rtnmark1 mark_24g
+	call mouse_check_key_gpio
+	rtnne MOUSE_LMR_BUTTON
+	call mouse_devce_led_off
+	arg MOSUE_24G_PAIRING_FLAG,queue
+	call mouse_enable_function_flag
+	setarg 0
+	store 2,mem_mouse_direct_timer
+	store 1,mem_mouse_send_blank_timer
+	call g24_set0_mem_check_dongle_times
+	
+	fetch 2,mem_ui_state_map
+	bbit1 UI_STATE_BT_RECONNECT,mouse_cancel_reconnect
+	bbit1 UI_STATE_BLE_CONNECTED,app_ble_disconnect
+	bbit1 UI_STATE_BT_CONNECTED,app_bt_disconnect
+	call mouse_stop_discovery
+	branch g24_start_pairing_sm1
+	
+ifdef FPGA_DEBUG
+mouse_fpga_rf_working_normal:
+	fetch 1,mem_le_req_rcv
+	and pdata,0xfe,pdata
+	call mouse_fpga_working_fail,blank
+	fetch 1,mem_le_req_rcv
+	and pdata,0xfe,pdata
+	ncall mouse_fpga_working_normal,blank
+//	fetch 1,mem_inquiryscan_rcvcnt
+//	and pdata,0xfe,pdata
+//	call mouse_fpga_working_fail,blank
+//	fetch 1,mem_inquiryscan_rcvcnt
+//	and pdata,0xfe,pdata
+//	ncall mouse_fpga_working_normal,blank
+	rtn
+
+mouse_fpga_working_fail:
+	arg MOUSE_FPGA_RF_WORK_DEBUG_GPIO,temp
+	branch gpio_out_inactive
+
+mouse_fpga_working_normal:
+	arg MOUSE_FPGA_RF_WORK_DEBUG_GPIO,temp
+	branch gpio_out_active
+
+
+
+endif
+
+mouse_idle:
+ifdef FPGA_DEBUG
+	call mouse_fpga_rf_working_normal
+endif
+	call mouse_24g_pairing_button
+	call ui_check_paring_button
+	call mouse_dpi_cheak
+	call mouse_usb_isr
+	call mouse_wheel_check
+	branch mouse_usb_mode
+mouse_usb_isr:
+	fetch MOUSE_FLAG_LEN,mem_mouse_flag
+	rtnbit0 MOUSE_ENABLE_USB
+	call usb_isr	
+	branch usb_offline_state
+
+mouse_cheak_usb:
+	hfetch 1,core_usb_addr
+	bbit0 7,mouse_usb_no_exsit
+	bbit1 7,mouse_usb_exsit
+	rtn
+mouse_usb_no_exsit:
+	fetch 1,mem_usb_addr
+	rtnbit0 7
+	branch soft_reset_chip
+mouse_usb_exsit:
+	fetch 1,mem_usb_addr
+	rtnbit1 7
+	branch mouse_stop_bluetooth_mode
+	
+mouse_usb_mode:
+	call mouse_cheak_usb
+	hfetch 1,core_usb_addr
+	store 1,mem_usb_addr
+	rtnbit0 7
+	call mouse_clkn_check 
+	fetch 4,mem_btclk_sensor
+	fetcht 1,mem_wire_usb_interval
+	iadd temp,temp
+	copy clkn_bt,pdata
+	isub temp,null
+	nrtn positive
+	store 4,mem_btclk_sensor
+	call mouse_motion
+	nrtn user
+	jam 4,mem_usb_tx_enable
+	branch mouse_wired_to_usb
+
+mouse_clkn_check:
+	fetcht 4,mem_btclk_sensor
+	copy clkn_bt,pdata
+	isub temp,null
+	ncall mouse_clkn_timeout,positive
+	rtn
+mouse_clkn_timeout:
+	setarg 0
+	store 4,mem_btclk_sensor
+	rtn
+
+
+	
+mouse_wired_to_usb:
+	fetch 1,mem_usb_tx_enable
+	rtnbit0 2
+	branch mouse_data_push
+mouse_data_push:
+	hfetch 1,core_usb_addr
+	rtnbit0 7
+	jam USB_EP2_MS,mem_usb_ep2_data
+	setarg MS_REPORT_ID
+	store 1,mem_usb_mouse_data	
+	fetch 7,mem_mouse_key
+	istore 7,contw
+	rtn
+
+
+mouse_enable_clock_qdecoder:
+	hfetch 2,core_clkoff
+	set0 CLOCK_OFF_QDECODER,pdata
+	hstore 2,core_clkoff
+	rtn
+
+mouse_param_init:
+	setarg 0x8c00				//bt sdp start address
+	store 2,mem_ui_uuid_table
+	setarg 0x8e7a				//ble attlist start address
+	store 2,mem_ui_le_uuid_table
+	setarg 0x2402
+	store 2,mem_fcomp_mul
+	setarg 0x2580
+	store 3,mem_class
+	jam 3,mem_lpm_mult_timeout
+	jam 8,mem_lpm_overhead
+	jam DPI_BUTTON_STATE_UP,mem_select_device_button_statue
+	setarg 0x0200
+	store 2,mem_lpm_interval
+	jam 0x17,mem_le_local_mtu
+	jam 0x17,mem_le_remote_mtu
+//===========init spi param==============================
+	setarg 0x0a77
+	store 2,mem_spi_init_clk
+//===========default bt reconnect address===================	
+//	jam 1,mem_device_flag
+//	setarg 0x332211
+//	store 3,mem_device1_addr
+//	store 3,mem_device2_addr
+//	store 3,mem_device3_addr
+//	setarg 0x665544
+//	store 3,mem_device1_addr+3
+//	store 3,mem_device2_addr+3
+//	store 3,mem_device3_addr+3
+//	setarg 0x34
+//	store 1,mem_device1_type
+//	store 1,mem_device2_type
+//	store 1,mem_device3_type
+//===========all 16bit uuid==================================
+	setsect 0,0x306
+	setsect 1,0x4440
+	setsect 2,0x10000
+	setsect 3,0x4408
+	store 9,mem_all_uuid_16bits
+	setsect 0,0x1224
+	setsect 1,0x4000
+	setsect 2,0x0
+	istore 5,contw
+//===========features=====================================
+	setsect 0,0x3ffff
+	setsect 1,0x2fe23
+	setsect 2,0x199d9
+	setsect 3,0x20d
+	store 8,mem_features
+//======================================================	
+	setarg 0x012c  				//24g ban pairing timer init
+	store 2,mem_24g_pairing_timer_count
+	call le_modified_name
+	fetch MOUSE_FLAG_LEN,mem_mouse_flag 
+	rtnbit0 MOUSE_ENABLE_GPIO_CONTROL_ADC_SENSOR
+	call mouse_sensor_set_angle
+	branch mouse_select_adc
+
+mouse_sensor_set_angle:
+	fetcht 1,mem_select_sensor_angle_gpio
+	call gpio_config_input
+	fetcht 1,mem_select_sensor_angle_gpio
+	call gpio_get_bit
+	jam MOUSE_3CLK_ANGLE,mem_config_sensor_angle
+	rtn true
+	jam MOUSE_12CLK_ANGLE,mem_config_sensor_angle
+	rtn
+
+mouse_select_adc:
+	fetcht 1,mem_select_adc_gpio
+	call gpio_config_input
+	fetcht 1,mem_select_adc_gpio
+	call gpio_get_bit
+	jam ADC_CONFIG_VINLPM,mem_adc_config_flag
+	rtn true
+	jam ADC_CONFIG_GPIO,mem_adc_config_flag
+	rtn
+	
+	
+mouse_adc_init:
+	fetch 1,mem_adc_config_flag
+	beq ADC_CONFIG_VINLPM,mouse_adc_init_data_vinlpm
+	beq ADC_CONFIG_HVIN,mouse_adc_init_data_hvin
+	beq ADC_CONFIG_GPIO,mouse_adc_init_data_io
+	branch mouse_adc_init_data_vinlpm
+	
+mouse_adc_init_data_vinlpm:
+	fetcht 2,mem_2v_adc_vinlpm_data
+	fetch 2,mem_3v_adc_vinlpm_data
+	isub temp,pdata
+	mul32 pdata,20,pdata 
+	div pdata,100
+	call wait_div_end
+	quotient pdata
+	store 2,mem_adc_reference_voltage //vinlpm :2v2 low alter
+	rtn
+mouse_adc_init_data_hvin:
+	fetcht 2,mem_1v_adc_hvin_data
+	fetch 2,mem_5v_adc_hvin_data
+	isub temp,pdata
+	mul32 pdata,230,pdata 
+	div pdata,400
+	call wait_div_end
+	quotient pdata
+	store 2,mem_adc_reference_voltage //hvin :3v3 low alter
+	rtn
+mouse_adc_init_data_io:
+	fetch 2,mem_1v_adc_io_data
+	store 2,mem_adc_reference_voltage  //vio :1v low alter
+	rtn
+mouse_gpio_init:
+	fetcht 1,mem_eeprom_wp_gpio
+	call gpio_config_output
+	call usb_offline_check_init
+	fetcht 1,mem_lbutton_gpio
+	call gpio_config_input
+	fetcht 1,mem_rbutton_gpio
+	call gpio_config_input
+	fetcht 1,mem_mbutton_gpio
+	call gpio_config_input
+	fetcht 1,mem_sensor_data_gpio
+	call gpio_config_input
+
+	fetcht 1,mem_sensor_reset_gpio
+	call gpio_config_output
+
+	fetcht 1,mem_whee_a_data_gpio
+	call gpio_config_input
+
+	fetcht 1,mem_whee_b_data_gpio
+	call gpio_config_input
+
+	fetcht 1,mem_whee_ta_data_gpio
+	call gpio_config_input
+	fetcht 1,mem_whee_tb_data_gpio
+	call gpio_config_input
+
+	fetcht 1,mem_bk_button_gpio
+	call gpio_config_input
+	fetcht 1,mem_fw_button_gpio
+	call gpio_config_input
+
+	fetcht 1,mem_config_low_voltage_alarm_gpio
+	call gpio_config_output
+
+	fetcht 1,mem_config_device1_led_gpio
+	call gpio_config_output
+
+	fetcht 1,mem_config_device2_led_gpio
+	call gpio_config_output
+	
+	fetcht 1,mem_config_device3_led_gpio
+	call gpio_config_output
+
+	fetcht 1,mem_dpi_led_gpio
+	call gpio_config_output
+
+	fetcht 1,mem_config_select_device_button_gpio
+	call gpio_config_input
+	
+	fetcht 1,mem_config_bt_button_gpio
+	call gpio_config_input	
+
+	fetcht 1,mem_dpi_button_gpio
+	branch gpio_config_input
+
+mouse_wheel_gpio_set_wake:
+	fetcht 1,mem_whee_a_data_gpio
+	call gpio_set_wake_by_current_state
+	fetcht 1,mem_whee_b_data_gpio
+	call gpio_set_wake_by_current_state
+	fetcht 1,mem_whee_ta_data_gpio
+	call gpio_set_wake_by_current_state
+	fetcht 1,mem_whee_tb_data_gpio
+	branch gpio_set_wake_by_current_state
+	
+mouse_before_hibernate_wheel_gpio_set:
+	fetcht 1,mem_whee_a_data_gpio
+	call mouse_gpio_set_pupd_by_input
+	fetcht 1,mem_whee_b_data_gpio
+	call mouse_gpio_set_pupd_by_input
+	fetcht 1,mem_whee_ta_data_gpio
+	call mouse_gpio_set_pupd_by_input
+	fetcht 1,mem_whee_tb_data_gpio
+	branch mouse_gpio_set_pupd_by_input
+
+mouse_gpio_set_pupd_by_input:
+	sub temp,UI_BUTTON_GPIO_DISABLE,null
+	rtn zero
+	and temp,0x7f,queue
+	hfetch 4,core_gpio_in
+	qisolate1 pdata
+	hfetch 4,core_gpio_pu0
+	qsetflag true,pdata
+	hstore 4,core_gpio_pu0
+	hfetch 4,core_gpio_pd0
+	nqsetflag true,pdata
+	hstore 4,core_gpio_pd0
+	rtn
+	
+mouse_before_hibernate:
+	enable user
+	hfetch 4,0x8138
+	setflag user,26,pdata
+	hstore 4,core_lpm_reg
+	call lpm_write_ctrl
+	call mouse_devce_led_off
+	call mouse_before_hibernate_wheel_gpio_set
+//	call gpio_set_before_lpm_common
+	branch mouse_lpm_before_common
+
+
+	
+mouse_process_lpm_before:
+	call mouse_lpm_before_common
+	fetch 1,mem_lpm_current_mult
+	nrtn blank					// 7.5ms, no gpio wakeup
+	branch gpio_clr_wake
+
+mouse_lpm_before_common:
+	call mouse_wheel_check
+	arg MOUSE_SPI1_CLK_GPIO,temp					// set sclk high
+	fetch MOUSE_FLAG_LEN,mem_mouse_flag
+	isolate1 MOUSE_ENABLE_SPI2,pdata
+	call mouse_spi_clk_gpio,true
+	call gpio_config_output
+	call twspi_disable
+
+
+
+	fetcht 1,mem_lbutton_gpio
+	call gpio_set_wake_by_current_state
+	fetcht 1,mem_rbutton_gpio
+	call gpio_set_wake_by_current_state
+	fetcht 1,mem_mbutton_gpio
+	call gpio_set_wake_by_current_state
+
+	fetcht 1,mem_bk_button_gpio
+	call gpio_set_wake_by_current_state
+	fetcht 1,mem_fw_button_gpio
+	call gpio_set_wake_by_current_state
+	fetcht 1,mem_dpi_button_gpio
+	call gpio_set_wake_by_current_state
+	fetcht 1,mem_config_select_device_button_gpio
+	call gpio_set_wake_by_current_state
+	fetcht 1,mem_whee_a_data_gpio
+	call gpio_set_wake_by_current_state
+	fetcht 1,mem_whee_b_data_gpio
+	call gpio_set_wake_by_current_state
+	fetcht 1,mem_whee_ta_data_gpio
+	call gpio_set_wake_by_current_state
+	fetcht 1,mem_whee_tb_data_gpio
+	call gpio_set_wake_by_current_state
+	fetcht 1,mem_sensor_data_gpio
+	branch gpio_set_wake
+	
+
+	
+mouse_spi_clk_gpio:
+	arg MOUSE_SPI2_CLK_GPIO,temp
+	rtn
+
+mouse_wheel_check:
+	bpatch patch1c_4,mem_patch1c
+	call mouse_t_wheel_scan
+	call mouse_wheel_scan
+	fetch 1,mem_wheel_tb_new_pinlevel
+	fetcht 1,mem_wheel_tb_old_pinlevel
+	store 1,mem_wheel_tb_old_pinlevel
+	isub temp,null
+	nbranch app_lpm_wake_auto_lock,zero
+	fetch 1,mem_mwheel_b_new_pinlevel
+	fetcht 1,mem_mwheel_b_old_pinlevel
+	store 1,mem_mwheel_b_old_pinlevel
+	isub temp,null
+	nbranch app_lpm_wake_auto_lock,zero
+	rtn
+mouse_t_wheel_scan:
+	fetch 1,mem_whee_ta_data_gpio
+	rtneq GPIO_DISABLE
+	arg 0,rega
+	fetcht 1,mem_whee_ta_data_gpio
+	call gpio_get_bit
+	setflag true,0,rega
+	fetcht 1,mem_whee_tb_data_gpio
+	call gpio_get_bit
+	setflag true,1,rega
+	copy rega,pdata
+	store 1,mem_wheel_tb_new_pinlevel
+	beq 0x01,mouse_t_wheel_scan_judge1
+	beq 0x02,mouse_t_wheel_scan_judge2
+	fetch 1,mem_wheel_tog
+	bbit1 7,mouse_t_wheel_scan_judge3
+	rtn
+
+mouse_t_wheel_scan_judge1:
+	fetch 1,mem_wheel_tb_old_pinlevel
+	beq 0,mouse_t_wheel_scan_judge11
+	beq 3,mouse_t_wheel_scan_judge12
+	rtn
+mouse_t_wheel_scan_judge2:
+	fetch 1,mem_wheel_tb_old_pinlevel
+	beq 0,mouse_t_wheel_scan_judge21
+	beq 3,mouse_t_wheel_scan_judge22
+	rtn
+mouse_t_wheel_scan_judge11:
+	jam 0x82,mem_wheel_tog
+	rtn
+mouse_t_wheel_scan_judge12:
+	jam 0x81,mem_wheel_tog
+	rtn
+mouse_t_wheel_scan_judge21:
+	jam 0x80,mem_wheel_tog
+	rtn
+mouse_t_wheel_scan_judge22:
+	jam 0x83,mem_wheel_tog
+	rtn
+mouse_t_wheel_scan_judge3:
+	fetch 1,mem_wheel_tog
+	set0 7,pdata
+	store 1,mem_wheel_tog
+	beq 0,mouse_t_wheel_scan_judge30
+	beq 1,mouse_t_wheel_scan_judge31
+	beq 2,mouse_t_wheel_scan_judge32
+	beq 3,mouse_t_wheel_scan_judge33
+	rtn
+mouse_t_wheel_scan_judge30:
+	fetch 1,mem_wheel_tb_new_pinlevel
+	beq 3,mouse_wheel_t_forward
+	rtn
+mouse_t_wheel_scan_judge31:
+	fetch 1,mem_wheel_tb_new_pinlevel
+	beq 0,mouse_wheel_t_forward
+	rtn
+mouse_t_wheel_scan_judge32:
+	fetch 1,mem_wheel_tb_new_pinlevel
+	beq 3,mouse_wheel_t_back
+	rtn
+mouse_t_wheel_scan_judge33:
+	fetch 1,mem_wheel_tb_new_pinlevel
+	beq 0,mouse_wheel_t_back
+	rtn
+mouse_wheel_t_forward:
+	fetch 1,mem_mouse_tz_data_count1
+	increase 1,pdata
+	store 1,mem_mouse_tz_data_count1
+	sub pdata,1,null
+	rtn positive
+	jam 0,mem_mouse_tz_data_count1
+	fetch 1,mem_mouse_tz_data
+	increase 1,pdata
+	store 1,mem_mouse_tz_data
+	rtn
+mouse_wheel_t_back:
+	fetch 1,mem_mouse_tz_data_count
+	increase 1,pdata
+	store 1,mem_mouse_tz_data_count
+	sub pdata,1,null
+	rtn positive
+	jam 0,mem_mouse_tz_data_count
+	fetch 1,mem_mouse_tz_data
+	increase -1,pdata
+	store 1,mem_mouse_tz_data
+	rtn
+
+
+mouse_wheel_scan:
+	fetch 1,mem_whee_a_data_gpio
+	rtneq GPIO_DISABLE
+	arg 0,rega
+	fetcht 1,mem_whee_a_data_gpio
+	call gpio_get_bit
+	setflag true,0,rega
+	fetcht 1,mem_whee_b_data_gpio
+	call gpio_get_bit
+	setflag true,1,rega
+	copy rega,pdata
+	store 1,mem_mwheel_b_new_pinlevel
+	beq 0x01,mouse_wheel_scan_judge1
+	beq 0x02,mouse_wheel_scan_judge2
+	fetch 1,mem_mwheel_tog
+	bbit1 7,mouse_wheel_scan_judge3
+	rtn
+
+mouse_wheel_scan_judge1:
+	fetch 1,mem_mwheel_b_old_pinlevel
+	beq 0,mouse_wheel_scan_judge11
+	beq 3,mouse_wheel_scan_judge12
+	rtn
+mouse_wheel_scan_judge2:
+	fetch 1,mem_mwheel_b_old_pinlevel
+	beq 0,mouse_wheel_scan_judge21
+	beq 3,mouse_wheel_scan_judge22
+	rtn
+mouse_wheel_scan_judge11:
+	jam 0x82,mem_mwheel_tog
+	rtn
+mouse_wheel_scan_judge12:
+	jam 0x81,mem_mwheel_tog
+	rtn
+mouse_wheel_scan_judge21:
+	jam 0x80,mem_mwheel_tog
+	rtn
+mouse_wheel_scan_judge22:
+	jam 0x83,mem_mwheel_tog
+	rtn
+mouse_wheel_scan_judge3:
+	fetch 1,mem_mwheel_tog
+	set0 7,pdata
+	store 1,mem_mwheel_tog
+	beq 0,mouse_wheel_scan_judge30
+	beq 1,mouse_wheel_scan_judge31
+	beq 2,mouse_wheel_scan_judge32
+	beq 3,mouse_wheel_scan_judge33
+	rtn
+mouse_wheel_scan_judge30:
+	fetch 1,mem_mwheel_b_new_pinlevel
+	beq 3,mouse_wheel_forward
+	rtn
+mouse_wheel_scan_judge31:
+	fetch 1,mem_mwheel_b_new_pinlevel
+	beq 0,mouse_wheel_forward
+	rtn
+mouse_wheel_scan_judge32:
+	fetch 1,mem_mwheel_b_new_pinlevel
+	beq 3,mouse_wheel_back
+	rtn
+mouse_wheel_scan_judge33:
+	fetch 1,mem_mwheel_b_new_pinlevel
+	beq 0,mouse_wheel_back
+	rtn
+mouse_wheel_forward:
+	jam 0,mem_mouse_z_data_count1
+	fetch 1,mem_mouse_z_data
+	increase 1,pdata
+	store 1,mem_mouse_z_data
+	rtn
+mouse_wheel_back:
+	jam 0,mem_mouse_z_data_count
+	fetch 1,mem_mouse_z_data
+	increase -1,pdata
+	store 1,mem_mouse_z_data
+	rtn
+	
+	
+mouse_hid_connected:
+	setarg HID_HANDSHAKE_TIMEOUT
+	store 1,mem_hid_handshake_timer_count
+	rtn
+	
+mouse_send_process:
+	fetch 1,mem_app_handshake_flag
+	rtn blank
+	call l2cap_malloc_is_fifo_nearly_full
+	nrtn blank
+	fetch MOUSE_FLAG_LEN,mem_mouse_flag
+	bbit1 MOSUE_24G_PAIRING_FLAG,mouse_send_empty_data
+	bbit1 MOUSE_SELECT_DEVICE_FLAG,mouse_send_empty_data
+	bbit1 MOUSE_BT_DISCOVERY_BUTTON_DOWN_FLAG,mouse_send_empty_data
+	call mouse_motion
+	nrtn user
+mouse_send_data:
+	arg 9,rega
+	call hid_malloc_tx_buff
+	fetch 2,mem_hid_int_remote_cid
+	istore 2,contw
+	setarg 0x02a1
+	istore 2,contw
+	fetch 7,mem_mouse_key
+	istore 7,contw
+	rtn
+
+	
+mouse_send_empty_data:
+	setarg 0
+	store 7,mem_mouse_key
+	branch mouse_send_data
+
+
+mouse_no_data_timer_init:
+	fetch 2,mem_mouse_no_data_timeout
+	store 2,mem_mouse_no_data_timer
+	rtn
+
+	
+mouse_fill_data_le:
+	bpatch patch1c_5,mem_patch1c
+	arg 7,rega //len
+	fetcht 2,mem_le_notify_handle
+	call le_att_malloc_tx_notify
+	fetch 7,mem_mouse_key
+	istore 7,contw
+	rtn
+
+mouse_motion:
+	bpatch patch1c_6,mem_patch1c
+	disable user
+	setarg 0
+	store 6,mem_mouse_x
+	call mouse_cheak_sensor_data
+	call mouse_zwheel
+	call mouse_t_zwheel
+	call mouse_key
+	nrtn user
+	call mouse_no_data_timer_init
+	arg MOUSE_STATUE_UP_FLAG,queue
+	branch mouse_enable_function_flag
+	
+motion_6clk_direction_dispose:
+	fetch 2,mem_mouse_x
+	sub pdata,0,pdata
+	store 2,mem_mouse_x
+	branch enable_user
+motion_12clk_direction_dispose:
+	fetch 2,mem_mouse_y
+	sub pdata,0,pdata
+	store 2,mem_mouse_y
+	branch enable_user
+motion_9clk_direction_dispose:
+	fetch 2,mem_mouse_y
+	sub pdata,0,pdata
+	store 2,mem_mouse_y
+	fetch 2,mem_mouse_x
+	sub pdata,0,pdata
+	store 2,mem_mouse_x
+	call mouse_sensor_data_swap_places
+	branch enable_user
+motion_3clk_direction_dispose:
+	call mouse_sensor_data_swap_places
+	branch enable_user
+mouse_cheak_sensor_data:
+	fetch 1,mem_spi_write_flash_sm
+	rtnne FLASH_SM_NO_BUYS
+	fetch 1,mem_config_sensor_type
+	beq P3205,mouse_p32xx_sensor_motion
+	beq P3065,mouse_p32xx_sensor_motion
+	beq KA8,mouse_p32xx_sensor_motion
+	beq P3204,mouse_p32xx_sensor_motion
+	beq P3212,mouse_p3212_sensor_motion
+	beq P3610,mouse_p3610_sensor_motion
+	beq P3065_xy,mouse_p32xx_sensor_motion
+	branch mouse_p32xx_sensor_motion
+	
+mouse_clear_sensor_data:
+	fetch 1,mem_mouse_move_flag
+	call mouse_read_sensor_common,blank
+	jam 1,mem_mouse_move_flag
+	rtn
+
+
+mouse_p3212_sensor_motion:
+	call mouse_clear_sensor_data
+	fetcht 1,mem_sensor_data_gpio
+	call gpio_get_bit
+	nrtn true
+mouse_p3212_sensor_motion_1:	
+	setarg PAN_REG_PID_L
+	call twspi_read
+	bne P32XX_ID1,mouse_twspi_reset
+	setarg PAN_REG_MOTION_STAUS
+	call twspi_read
+	rtnbit0 7
+	call mouse_read_sensor_common
+	call mouse_read_3212sensor_xy_high
+	store 1,mem_mouse_xy_h
+	rshift4 pdata,pdata
+	call extsign_bit3
+	store 1,mem_mouse_x+1
+	fetch 1,mem_mouse_xy_h
+	and pdata,0x0f,pdata
+	call extsign_bit3
+	store 1,mem_mouse_y+1
+	fetch 1,mem_config_sensor_angle
+	beq MOUSE_6CLK_ANGLE,motion_6clk_direction_dispose
+	beq MOUSE_9CLK_ANGLE,motion_9clk_direction_dispose
+	beq MOUSE_12CLK_ANGLE,motion_12clk_direction_dispose
+	beq MOUSE_3CLK_ANGLE,motion_3clk_direction_dispose
+	rtn
+
+mouse_read_3212sensor_xy_high:
+	setarg 0x12
+	branch twspi_read
+	
+mouse_p3065_judge:
+	beq P3065_ID1,mouse_p32xx_sensor_motion_1
+	branch mouse_twspi_reset
+	
+mouse_p32xx_sensor_motion:
+	call mouse_clear_sensor_data
+	disable user
+	fetcht 1,mem_sensor_data_gpio
+	call gpio_get_bit
+	nrtn true
+mouse_p32xx_sensor_motion_2:	
+	setarg PAN_REG_PID_L
+	call twspi_read
+	bne P32XX_ID1,mouse_p3065_judge   
+mouse_p32xx_sensor_motion_1:
+	setarg PAN_REG_MOTION_STAUS
+	call twspi_read
+	rtnbit0 7
+	call mouse_read_sensor_common
+	fetch 1,mem_mouse_x
+	call extsign
+	store 2,mem_mouse_x
+	fetch 1,mem_mouse_y
+	call extsign
+	store 2,mem_mouse_y
+	fetch 1,mem_config_sensor_angle
+	beq MOUSE_6CLK_ANGLE,motion32xx_6clk_direction_selection
+	beq MOUSE_9CLK_ANGLE,motion32xx_9clk_direction_selection
+	beq MOUSE_12CLK_ANGLE,motion32xx_12clk_direction_selection
+	beq MOUSE_3CLK_ANGLE,motion32xx_3clk_direction_selection
+	rtn
+	
+motion32xx_6clk_direction_selection:
+	call motion_6clk_direction_dispose
+	branch mouse_sensor_sdio_low
+motion32xx_9clk_direction_selection:
+	call motion_9clk_direction_dispose
+	branch mouse_sensor_sdio_low
+motion32xx_12clk_direction_selection:
+	call motion_12clk_direction_dispose
+	branch mouse_sensor_sdio_low
+motion32xx_3clk_direction_selection:
+	call motion_3clk_direction_dispose
+	branch mouse_sensor_sdio_low
+	
+mouse_sensor_data_swap_places:
+	fetch 2, mem_mouse_y
+	fetcht 2,mem_mouse_x
+	store 2,mem_mouse_x
+	storet 2,mem_mouse_y
+	rtn
+//input regb  output:pdata
+mouse_p3610sensor_read:
+	call spi_ncs_enable
+	nop 100
+	copy regb,pdata
+	call twspi_read
+	copy pdata,regb
+	call spi_ncs_disable
+	nop 100
+	copy regb,pdata
+	rtn	
+mouse_p3610_sensor_motion:
+	disable user
+	fetcht 1,mem_sensor_data_gpio
+	call gpio_get_bit
+	nrtn true
+	arg PAN_REG_MOTION_STAUS,regb
+	call mouse_p3610sensor_read
+	rtnbit0 7
+	arg PAN_REG_PID_L,regb
+	call mouse_p3610sensor_read
+	store 1,mem_sensor_id1
+	bne P3610_ID1,mouse_init_3610sensor_reset
+	fetch 1,mem_mouse_move_flag
+	call mouse_read_sensor3610_data,blank
+	jam 1,mem_mouse_move_flag
+	call mouse_read_sensor3610_data
+	fetch 1,mem_mouse_xy_h
+	rshift4 pdata,pdata
+	call extsign_bit3
+	store 1,mem_mouse_x+1
+	fetch 1,mem_mouse_xy_h
+	and pdata,0x0f,pdata
+	call extsign_bit3
+	store 1,mem_mouse_y+1
+	fetch 1,mem_config_sensor_angle
+	beq 0,motion3610_6clk_direction_selection
+	beq 1,motion3610_9clk_direction_selection
+	beq 2,motion3610_12clk_direction_selection
+	beq 3,motion3610_3clk_direction_selection
+	rtn
+
+mouse_3610_smart_select:
+	fetch 1,mem_sensor_smart_flag
+	beq P3610_SMART_ENABLE,mouse_3610_smart_disable
+	beq P3610_SMART_DISABLE,mouse_3610_smart_enable
+	rtn
+
+
+motion3610_6clk_direction_selection:
+	call motion_6clk_direction_dispose
+	branch mouse_3610_smart_select
+	
+motion3610_12clk_direction_selection:
+	call motion_12clk_direction_dispose
+	branch mouse_3610_smart_select
+	
+motion3610_9clk_direction_selection:
+	call motion_9clk_direction_dispose
+	branch mouse_3610_smart_select
+	
+motion3610_3clk_direction_selection:
+	call motion_3clk_direction_dispose
+	branch mouse_3610_smart_select
+	
+mouse_read_sensor3610_data:
+	call spi_ncs_enable
+	call mouse_read_sensor_common
+	arg 5,pdata
+	call twspi_read
+	store 1,mem_mouse_xy_h
+	arg 7,pdata
+	call twspi_read
+	store 1,mem_sensor_shutter_hi
+	arg 8,pdata
+	call twspi_read
+	store 1,mem_sensor_shutter_lo
+	branch spi_ncs_disable
+
+
+mouse_3610_smart_enable:
+	fetch 1,mem_sensor_shutter_hi
+	rtnne 0
+	fetch 1,mem_sensor_shutter_lo
+	sub pdata,45,null
+	rtn positive
+	jam P3610_SMART_ENABLE,mem_sensor_smart_flag
+	setarg 0xba41
+	call sensor_write
+	setarg 0x0032
+	call sensor_write
+	setarg 0xb541
+	branch sensor_write
+mouse_3610_smart_disable:
+	fetch 1,mem_sensor_shutter_hi
+	rtnne 0
+	fetch 1,mem_sensor_shutter_lo
+	sub pdata,45,null
+	nrtn positive
+	jam P3610_SMART_DISABLE,mem_sensor_smart_flag
+	setarg 0xba41
+	call sensor_write
+	setarg 0x8032
+	call sensor_write
+	setarg 0xb541
+	branch sensor_write
+
+
+
+mouse_read_sensor_common:
+	arg PAN_REG_DELTA_X,pdata
+	call twspi_read
+	store 2,mem_mouse_x
+	arg PAN_REG_DELTA_Y,pdata
+	call twspi_read
+	store 2,mem_mouse_y
+	rtn
+
+mouse_set_qdecoder_x:
+	arg MOUSE_DEFAULT_XA_GPIO,temp
+	call gpio_config_input
+	arg MOUSE_DEFAULT_XA_GPIO,temp
+	call gpio_get_bit
+	rtn true
+	hfetch 1,core_qdec_cntx
+	set1 4,pdata
+	hstore 1,core_qdec_cntx
+	rtn
+
+mouse_hardware_zwheel:
+	fetcht 1,mem_mouse_z_data
+	hfetch 1,core_qdec_cntx
+	iadd temp,pdata
+	rtn blank
+	store 1,mem_mouse_z
+	jam 0,mem_mouse_z_data
+	branch enable_user
+mouse_hardware_zwheel_beforelpm:
+	fetcht 1,mem_mouse_z_data
+	hfetch 1,core_qdec_cntx
+	iadd temp,pdata
+	store 1,mem_mouse_z_data
+	rtn
+mouse_zwheel:
+	fetch 1,mem_mouse_z_data
+	rtn blank	
+	store 1,mem_mouse_z
+	jam 0,mem_mouse_z_data
+	branch enable_user
+	
+mouse_t_zwheel:
+	fetch 1,mem_mouse_tz_data
+	rtn blank	
+	store 1,mem_mouse_tz
+	jam 0,mem_mouse_tz_data
+	branch enable_user
+	
+mouse_check_key_gpio:
+	arg 0,rega
+	fetcht 1,mem_lbutton_gpio
+	call gpio_get_bit
+	setflag true,0,rega
+	fetcht 1,mem_rbutton_gpio
+	call gpio_get_bit
+	setflag true,1,rega
+	fetcht 1,mem_mbutton_gpio
+	call gpio_get_bit
+	setflag true,2,rega
+	call mouse_check_s_key_gpio
+mouse_check_key_gpio_output:
+	copy rega,pdata
+	rtn
+mouse_check_s_key_gpio:
+	fetch 1,mem_bk_button_gpio
+	rtneq GPIO_DISABLE
+	fetcht 1,mem_bk_button_gpio
+	call gpio_get_bit
+	setflag true,3,rega
+	fetcht 1,mem_fw_button_gpio
+	call gpio_get_bit
+	setflag true,4,rega
+	rtn
+
+mouse_key:
+	call mouse_check_key_gpio
+	call mouse_set_mult
+	call mouse_24g_key
+	copy rega,pdata
+	fetcht 1,mem_mouse_key
+	store 1,mem_mouse_key	
+	ixor temp,pdata
+	sub pdata,0,null
+	rtn zero
+	branch enable_user
+
+mouse_24g_key:
+	rtnmark0 mark_24g
+	copy rega,pdata
+	rtn blank
+	store 1,mem_mouse_key
+	branch enable_user
+
+//short mult: no key 
+mouse_set_mult:
+	fetch 2,mem_ui_state_map
+	bbit1 UI_STATE_BLE_CONNECTED,mouse_set_ble_mult
+	fetch 2,mem_ui_state_map
+	bbit1 UI_STATE_BT_CONNECTED,mouse_set_bt_mult
+	rtn
+mouse_set_ble_mult:
+	copy rega,pdata
+	nbranch le_set_config_short_mult,blank
+	branch le_clr_config_short_mult
+mouse_set_bt_mult:
+	copy rega,pdata
+	nbranch classic_bt_set_mult_short_flag,blank
+	branch classic_bt_clr_mult_short_flag
+	
+	/* sdio high will cost extra 9mA */
+mouse_sensor_sdio_low:
+	bpatch patch1c_7,mem_patch1c
+	arg MOUSE_SPI1_SDIO_GPIO,temp
+	fetch MOUSE_FLAG_LEN,mem_mouse_flag
+	isolate1 MOUSE_ENABLE_SPI2,pdata
+	call mouse_sensor_sdio_low2,true
+	call gpio_get_bit
+	rtn true
+	setarg 0x0a
+	call twspi_read
+	nop 1000
+	branch mouse_sensor_sdio_low
+mouse_sensor_sdio_low2:
+	arg MOUSE_SPI2_SDIO_GPIO,temp
+	rtn
+
+mouse_spi_sdio_gpio_pollup:
+	fetch MOUSE_FLAG_LEN,mem_mouse_flag
+	bbit1 MOUSE_ENABLE_SPI2,mouse_spi2_sdio_gpio_pollup
+mouse_spi1_sdio_gpio_pollup:
+	arg MOUSE_SPI1_SDIO_GPIO,temp
+	branch gpio_config_input_without_wake
+mouse_spi2_sdio_gpio_pollup:
+	arg MOUSE_SPI2_SDIO_GPIO,temp
+	branch gpio_config_input_without_wake
+
+	
+mouse_init_sunt:
+	call mouse_spi_init
+	rtn wake
+	call mouse_spi_sdio_gpio_pollup
+	fetch 1,mem_config_sensor_type
+	beq P3610,mouse_init_3610sensor
+mouse_init_sensor:
+	call mouse_read_sensor_id
+	beq P32XX_ID1,mouse_init_p32xx_id2_judge
+	beq P3065_ID1,mouse_p3065_init_param
+	call mouse_twspi_reset
+	nop 1000
+	branch mouse_init_sensor
+mouse_twspi_reset:
+	bpatch patch1d_0,mem_patch1d
+	fetch MOUSE_FLAG_LEN,mem_mouse_flag
+	bbit1 MOUSE_ENABLE_SPI2,twspi_reset2
+	branch twspi_reset
+
+mouse_init_3610sensor:
+	call mouse_read_sensor_id
+	beq P3610_ID1,mouse_init_p3610
+	call mouse_init_3610sensor_reset
+	branch mouse_init_3610sensor
+	
+mouse_read_sensor_id:
+	setarg PAN_REG_PID_H
+	call twspi_read
+	store 1,mem_sensor_id2
+	setarg PAN_REG_PID_L
+	call twspi_read
+	store 1,mem_sensor_id1
+	rtn
+mouse_init_p32xx_id2_judge:
+	fetch 1,mem_sensor_id2
+	beq P3205_TJ3T_ID2,mouse_3205_3t_init_param
+	beq P3204_TJ3L_ID2,mouse_3204_3l_init_param
+	beq P3212_ID2,mouse_3212_init_param
+	beq PKA8_ID2,mouse_ka8_init_param
+	rtn
+mouse_ka8_init_param:
+	jam KA8,mem_config_sensor_type
+	rtn
+mouse_p3065xy_init_param:
+	jam P3065_XY,mem_config_sensor_type
+	rtn
+mouse_p3065_init_param:
+	fetch 1,mem_sensor_id2
+	beq P3065_XY_ID2,mouse_p3065xy_init_param
+	jam P3065,mem_config_sensor_type
+	rtn
+mouse_3212_init_param:
+	jam P3212,mem_config_sensor_type
+	call mouse_sensor_disable_wp
+	setarg 0x3426
+	call twspi_write
+	setarg 0x0419
+	call twspi_write
+mouse_sensor_enable_wp:
+	setarg 0x0009
+	branch twspi_write
+mouse_sensor_disable_wp:
+	setarg 0x5a09
+	branch twspi_write
+
+mouse_3204_3l_init_param:
+	jam P3204,mem_config_sensor_type
+	call mouse_sensor_disable_wp
+	setarg 0x0f0d//
+	call twspi_write
+	setarg 0xe31d//
+	call twspi_write
+	setarg 0xd27d
+	call twspi_write
+	call mouse_32xx_init_param
+	branch mouse_32xx_init_param_1
+	
+mouse_32xx_init_param:
+	setarg 0x351b
+	call twspi_write
+	setarg 0xb428
+	call twspi_write
+	setarg 0x4629
+	call twspi_write
+	setarg 0x962a
+	call twspi_write
+	setarg 0x8c2b
+	call twspi_write
+	setarg 0x6e2c
+	call twspi_write
+	setarg 0x642d
+	call twspi_write
+	setarg 0x5f38
+	call twspi_write
+	setarg 0x0f39
+	call twspi_write
+	setarg 0x323a
+	call twspi_write
+	setarg 0x473b
+	call twspi_write
+	setarg 0x1042
+	branch twspi_write
+mouse_32xx_init_param_1:	
+	setarg 0x2e54
+	call twspi_write
+	setarg 0xf255
+	call twspi_write
+	setarg 0xf461
+	call twspi_write
+	setarg 0x7063
+	call twspi_write
+	setarg 0x5275
+	call twspi_write
+	setarg 0x4176
+	call twspi_write
+	setarg 0xed77
+	call twspi_write
+	setarg 0x2378
+	call twspi_write
+	setarg 0x4679
+	call twspi_write
+	setarg 0xe57a
+	call twspi_write
+	setarg 0x487c
+	call twspi_write
+	setarg 0x777e
+	call twspi_write
+	setarg 0x017f
+	call twspi_write
+	setarg 0x000b
+	call twspi_write
+	setarg 0x007f
+	call twspi_write
+	branch mouse_sensor_enable_wp
+	
+
+mouse_3205_3t_init_param:
+	jam P3205,mem_config_sensor_type
+	call mouse_sensor_disable_wp
+	setarg 0x100d//
+	call twspi_write
+	setarg 0xed1d//
+	call twspi_write
+	setarg 0x807d
+	call twspi_write
+	call mouse_32xx_init_param
+	setarg 0x0943
+	call twspi_write
+	branch mouse_32xx_init_param_1
+	
+	
+mouse_init_3610sensor_reset:
+	fetcht 1,mem_sensor_reset_gpio
+	call gpio_out_active
+	call delay_10ms
+	fetcht 1,mem_sensor_reset_gpio
+	call gpio_out_inactive
+	branch delay_10ms
+
+mouse_init_p3610:
+	jam P3610,mem_config_sensor_type
+	setarg 0xba41
+	call sensor_write
+	setarg 0x0d11
+	call sensor_write
+	setarg 0x041b
+	call sensor_write
+	setarg 0x041c
+	call sensor_write
+	setarg 0x0f1d
+	call sensor_write
+	setarg 0x0032
+	call sensor_write
+	setarg 0xb541
+	branch sensor_write
+	
+	
+//input-rega
+mouse_set_sensor_reg:
+	setarg 0xba41
+	call sensor_write
+	nop 4000
+	setarg 0xff7f
+	call sensor_write
+	copy rega,pdata
+	call sensor_write
+	setarg 0x007f
+	call sensor_write
+	setarg 0xb541
+	branch sensor_write
+
+extsign:
+	rtnbit0 7
+	arg 0xff00,temp
+	ior temp,pdata
+	rtn
+
+extsign_bit3:
+	rtnbit0 3
+	arg 0xf0,temp
+	ior temp,pdata
+	rtn
+
+
+mouse_le:
+	call le_fifo_check_nearly_full
+	nrtn blank
+	fetch 1,mem_le_connect_status_flag
+	and pdata,0x03,pdata
+	rtnne 0x03
+	fetch MOUSE_FLAG_LEN,mem_mouse_flag
+	bbit1 MOSUE_24G_PAIRING_FLAG,mouse_le_send_empty_packet
+	bbit1 MOUSE_SELECT_DEVICE_FLAG,mouse_le_send_empty_packet
+	bbit1 MOUSE_BT_DISCOVERY_BUTTON_DOWN_FLAG,mouse_le_send_empty_packet
+	call mouse_motion
+	nrtn user
+	branch mouse_fill_data_le
+
+mouse_le_send_empty_packet:
+	setarg 0
+	store 7,mem_mouse_key
+	branch mouse_fill_data_le
+
+mouse_priority_bb_event:	
+	copy regc,pdata
+	beq BT_EVT_LE_CONNECTED,mouse_le_bb_event_connected
+	beq BT_EVT_BB_CONNECTED,mouse_stop_discovery
+	beq BT_EVT_LE_DISCONNECTED,mouse_bb_disconnected
+	beq BT_EVT_BB_DISCONNECTED,mouse_bb_disconnected
+	beq BT_EVT_SETUP_COMPLETE,mouse_bt_event_setup_complete
+	beq BT_EVT_BUTTON_LONG_PRESSED,mouse_bb_event_discovery_btn
+	beq BT_EVT_HID_HANDSHAKE,mouse_bt_hid_handshake
+	beq BT_EVT_HID_CONNECTED,mouse_bt_hid_connected
+	beq BT_EVT_RECONN_FAILED,mouse_bb_event_reconn_failed
+	beq BT_EVT_RECONN_PAGE_TIMEOUT,mouse_bb_event_reconn_timeout
+	beq BT_EVT_PINCODE_REQ,mouse_bb_event_pincode
+	beq BT_EVT_REMOTE_UNSNIFF,app_start_auto_sniff
+	beq BT_EVT_LE_PAIRING_SUCCESS,mouse_le_pairing_success
+	beq BT_EVT_LE_START_ENC,mouse_le_ll_start_encryt
+	beq BT_EVT_LE_PAIRING_COMPLETE,mouse_le_pairing_complete
+	beq BT_EVT_VIRTUAL_CABLE_UNPLUG,mouse_irtual_cable_unplug
+	beq BT_EVT_24G_PAIRING_COMPLETE,mouse_24g_pairing_complete
+	beq BT_EVT_24G_ATTEMPT_FAIL,mouse_24g_attempt_fail
+	beq BT_EVT_24G_ATTEMPT_SUCCESS,mouse_24g_attempt_success
+	rtn
+
+
+mouse_le_pairing_complete:
+	branch app_ble_store_reconn_info
+
+mouse_24g_attempt_fail:
+	jam 1,mem_mouse_24g_enter_lpm_enable
+	fetch 1,mem_reconn_times
+	nbranch mouse_polling_device,blank
+	fetch 1,mem_device_flag
+	fetcht 1,mem_24g_device_number
+	isub temp,null
+	branch app_enter_hibernate,zero
+	rtn
+mouse_24g_attempt_success:
+	jam 1,mem_mouse_24g_enter_lpm_enable
+	rtn
+mouse_24g_pairing_complete:
+	jam 1,mem_mouse_24g_enter_lpm_enable
+	arg MOSUE_24G_PAIRING_FLAG,queue
+	call mouse_disable_function_flag
+	setarg 0
+	store 2,mem_24g_pairing_timer_count
+	jam 0,mem_mouse_move_flag
+	
+	fetch 1,mem_config_sensor_type
+	sub pdata,P3610,null
+	call mouse_read_sensor3610_data,zero
+	ncall mouse_read_sensor_common,zero
+
+	fetch 1,MOUSE_FLAG_LEN,mem_mouse_flag
+	bbit1 MOUSE_ENABLE_FLASH,mouse_store_flash_24g_address
+	call mouse_set_24g_addr_eeprom	//store rx dongle addr to eeprom
+	branch iicd_write_protect_eep_data
+
+mouse_set_24g_addr_eeprom:
+	call g24_head_ptr2regc
+	add regc,offset_24g_addr,rega
+	arg MOUSE_G24_ADDR_EEPROM_OFFECT,regb
+	arg 4,temp
+	rtn
+
+mouse_store_flash_24g_address:
+	call g24_head_ptr2regc
+	add regc,offset_24g_addr,regb
+	ifetch 1,regb
+	store 1,mem_mouse_24g_addr
+	branch mouse_store_flash_device_info
+	
+
+mouse_le_pairing_success:
+	arg LL_PAIRING_SUCCESS_FLAG,queue
+	branch mouse_le_enable_connect_flag
+mouse_le_ll_start_encryt:
+	jam 2,mem_le_start_encrypt_timer
+	arg LL_START_ENC_FLAG,queue
+	branch mouse_le_enable_connect_flag
+
+	
+mouse_le_enable_connect_flag:
+	fetch 1,mem_le_connect_status_flag
+	qset1 pdata
+	store 1,mem_le_connect_status_flag
+	rtn
+
+mouse_le_disable_connect_flag:
+	fetch 1,mem_le_connect_status_flag
+	qset0 pdata
+	store 1,mem_le_connect_status_flag
+	rtn
+mouse_le_clean_connect_flag:
+	jam 0,mem_le_connect_status_flag
+	rtn
+
+mouse_le_bb_event_connected:
+	fetch APP_DISC_RSN_SIZE,mem_app_disconn_reason_flag
+	set0 APP_DISC_BY_BUTTON ,pdata
+	store APP_DISC_RSN_SIZE,mem_app_disconn_reason_flag
+	setarg 0
+	store 2,mem_mouse_direct_timer
+	call mouse_no_data_timer_init
+	branch mouse_stop_discovery
+
+mouse_bb_event_pincode:
+	call pincode_reinit
+	branch app_bt_set_pincode
+mouse_bb_event_reconn_timeout:
+ifdef FPGA_DEBUG
+	arg MOUSE_FPGA_DEBUG_GPIO,temp
+	call gpio_config_output
+	arg MOUSE_FPGA_DEBUG_GPIO,temp
+	call gpio_out_inactive
+endif
+mouse_bb_event_reconn_failed:
+	fetch 1,mem_reconn_times
+	nbranch mouse_polling_device,blank
+	fetch 2,mem_ui_state_map
+	bbit1 UI_STATE_BTN_DOWN,mouse_start_discovery
+	fetch MOUSE_FLAG_LEN,mem_mouse_flag
+	bbit1 MOUSE_SELECT_DEVICE_FLAG,mouse_soft_reset
+	bbit1 MOUSE_BT_DISCOVERY_BUTTON_DOWN_FLAG,mouse_start_discovery
+	bbit1 MOSUE_24G_PAIRING_FLAG,g24_start_pairing_sm1
+	branch app_bb_hibernate
+
+	
+mouse_bt_hid_connected:
+	branch mouse_hid_connected
+
+mouse_bt_event_setup_complete:
+	rtn
+
+mouse_soft_reset:
+	call mouse_select_device_enable
+	branch soft_reset_chip
+
+mouse_bb_disconnected:
+	bpatch patch1d_1,mem_patch1d
+	call mouse_bb_discon_clear_stack
+	fetch MOUSE_FLAG_LEN,mem_mouse_flag
+	bbit1 MOUSE_SELECT_DEVICE_FLAG,mouse_soft_reset
+	bbit1 MOSUE_24G_PAIRING_FLAG,g24_start_pairing_sm1
+	fetch 1,mem_reconn_times
+	nbranch mouse_polling_device,blank
+	fetch APP_DISC_RSN_SIZE,mem_app_disconn_reason
+	bbit1 APP_DISC_BLE,mouse4_0_event_bb_disconn
+	bbit1 APP_DISC_BY_BUTTON,app_disconn_reason_clear
+	bbit1 APP_DISC_AFTER_PAIRING,mouse_event_light_state_pairing
+	bbit1 APP_DISC_AFTER_RECONN,mouse_event_light_state_hibernate
+	bbit1 APP_DISC_AFTER_SNIFF,mouse_event_light_state_hibernate
+	branch mouse_start_discovery
+mouse_bb_discon_clear_stack:
+	setarg 0
+	store 8,mem_wheel_tb_old_pinlevel
+	istore 4,contw             //clean wheel statue
+	jam 0,mem_mouse_send_blank_timer
+	jam 0,mem_mouse_move_flag
+	jam APP_HANDSHAKE_NULL,mem_app_handshake_flag
+	jam 0,mem_ltk_exists
+	rtn
+
+mouse_event_light_state_pairing:
+	bbit1 APP_DISC_AFTER_HANDSHAKE,mouse_event_light_state_hibernate
+	bbit1 APP_DISC_AFTER_SNIFF,mouse_event_light_state_hibernate
+	branch mouse_start_discovery
+mouse_event_light_state_hibernate:
+	fetch 2,mem_ui_state_map
+	bbit1 UI_STATE_BTN_DOWN,mouse_start_discovery
+	branch app_bb_hibernate
+
+mouse4_0_event_bb_disconn:
+	call mouse_le_clean_connect_flag
+	fetch APP_DISC_RSN_SIZE,mem_app_disconn_reason
+	bbit1 APP_DISC_BY_BUTTON,app_disconn_reason_clear
+	branch app_bb_hibernate
+
+mouse_bb_event_timer:
+	call mouse_adc_read
+	call mouse_24g_delay_timer
+	call mouse_ban_24g_pairing_timer
+	call mouse_dpi_led_blink_delay_timer
+	call mouse_statue_up_timer
+	//poll
+	call mouse_statue_cheak_timer
+	call mouse_select_device
+	call mouse_bt_discovery_cheak
+	call mouse_low_voltage_led_timer
+	call mouse_sensor_led_contrl_timer
+	call mouse_check_hid_handshake_timer
+	call mouse_check_discovery_timeout_timer
+	call mouse_check_direct_timeout_timer
+	call mouse_check_no_data_timeout_timer
+	call mouse_check_mouse_state_timer
+	branch mouse_le_enable_att_list_timer
+
+
+
+mouse_sensor_led_contrl_timer:
+	fetch 1,mem_mouse_sensor_timer_count
+	rtn blank
+	increase -1,pdata
+	store 1,mem_mouse_sensor_timer_count
+	nrtn blank
+	branch mouse_sensor_led_contrl
+mouse_sensor_led_contrl:
+	fetch 1,mem_sensor_led_style
+	rtneq UI_LED_STATE_BLINK_STOP
+	beq UI_LED_STATE_BLINK_DARKING,mouse_sensor_led_blink_state_darking
+mouse_sensor_led_blink_state_lighting:
+	call mouse_sensor_led_on
+	jam UI_LED_STATE_BLINK_DARKING,mem_sensor_led_style
+	jam LED_SENSOR_BLINK_CNT,mem_mouse_sensor_timer_count
+	rtn
+mouse_sensor_led_blink_state_darking:
+	call mouse_sensor_led_off
+	jam UI_LED_STATE_BLINK_LIGHTING,mem_sensor_led_style
+	jam LED_SENSOR_BLINK_CNT,mem_mouse_sensor_timer_count
+	rtn
+	
+mouse_sensor_led_blink_stop:
+mouse_sensor_reset:
+	setarg 0x8006
+	call twspi_write
+    nop 1000
+	jam 0x00,mem_mouse_sensor_timer_count
+	jam UI_LED_STATE_BLINK_STOP,mem_sensor_led_style
+	branch mouse_init_p32xx_id2_judge
+	
+mouse_p3212sensor_led_on:
+	setarg 0xa006
+	call twspi_write
+	setarg 0xa005
+	branch twspi_write
+mouse_sensor_led_on_global:
+	jam 0,mem_mouse_sensor_timer_count
+mouse_sensor_led_on:
+	fetch 1,mem_config_sensor_type
+	beq P3212,mouse_p3212sensor_led_on
+	setarg 0x0106
+	call twspi_write
+	setarg 0xa105
+	branch twspi_write
+	
+mouse_sensor_led_off_global:
+	jam 0,mem_mouse_sensor_timer_count	
+mouse_sensor_led_off:
+	setarg 0x0906
+	branch twspi_write
+mouse_sensor_start_blink:
+	jam LED_SENSOR_BLINK_CNT,mem_mouse_sensor_timer_count
+	jam UI_LED_STATE_BLINK_START,mem_sensor_led_style
+	rtn
+	
+mouse_check_hid_handshake_timer:
+	arg mem_hid_handshake_timer_count,regc
+	arg mouse_bt_hid_handshake,regb
+	branch timer_single_step
+
+mouse_check_discovery_timeout_timer:
+	arg mem_mouse_discovery_timer,regc
+	arg mouse_check_discovery_timeout,regb
+	branch timer_single_step_2B
+
+mouse_check_direct_timeout_timer:	
+	arg mem_mouse_direct_timer,regc
+	arg mouse_check_direct_timeout,regb
+	branch timer_single_step_2B
+	
+mouse_check_no_data_timeout_timer:	
+	arg mem_mouse_no_data_timer,regc
+	arg mouse_check_no_data_timeout,regb
+	branch timer_single_step_2B
+	
+mouse_check_mouse_state_timer:
+	arg mem_mouse_statue_led_timer,regc
+	arg mouse_statue_led_off,regb
+	branch timer_single_step
+
+
+
+mouse_le_enable_att_list_timer:
+	arg mem_le_start_encrypt_timer,regc
+	arg mouse_le_enable_att_list,regb
+	branch timer_single_step
+
+mouse_24g_delay_timer:
+	arg mem_24g_enter_lpm_timer,regc
+	arg mouse_24g_delay,regb
+	branch timer_single_step
+
+mouse_ban_24g_pairing_timer:
+	arg mem_24g_pairing_timer_count,regc
+	arg mouse_ban_24g_pairing,regb
+	branch timer_single_step_2B
+mouse_ban_24g_pairing:
+mouse_24g_delay:
+	rtn
+
+
+mosue_dpi_led_blink_init:
+	fetch MOUSE_FLAG_LEN,mem_mouse_flag
+	rtnbit0 MOUSE_ENABLE_DPI_LED_BLINK
+	jam 10,mem_mouse_dpi_led_delay_count  //delay 1s led blink
+	fetch 1,mem_dpi_led_gpio
+	store 1,mem_mouse_struct_led_gpio
+	rtn
+
+
+mouse_dpi_led_blink_delay_timer:
+	arg mem_mouse_dpi_led_delay_count,regc
+	arg mouse_dpi_led_setting,regb
+	branch timer_single_step	
+mouse_dpi_led_setting:
+	fetch 1,mem_dpi_led_gpio
+	store 1,mem_mouse_struct_led_gpio
+	setarg LED_DPI_BLINK
+	store 2,mem_mouse_on_time
+	store 2,mem_mouse_off_time
+	arg 0,rega
+	fetcht 1,mem_mouse_dpi
+	increase 1,temp
+	storet 1,mem_mouse_blink_count
+	jam UI_LED_STATE_BLINK_START,mem_mouse_led_type
+	rtn
+	
+mouse_le_enable_att_list:	
+	fetch 1,mem_le_connect_status_flag
+	rtnbit1 LL_PAIRING_SUCCESS_FLAG
+	jam BT_CMD_LE_UPDATE_CONN,mem_fifo_temp
+	call ui_ipc_send_cmd
+	arg WRITE_REQ_ENABLE_FLAG,queue
+	branch mouse_le_enable_connect_flag
+
+
+mouse_check_discovery_timeout:
+	call mouse_stop_discovery
+	branch app_enter_hibernate
+
+mouse_check_direct_timeout:
+	call app_ble_stop_direct_adv
+	fetch 1,mem_reconn_times
+	nbranch mouse_polling_device,blank
+	branch app_enter_hibernate
+
+mouse_check_no_data_timeout:
+	bmark1 mark_24g,check_51cmd_hibernate
+	branch mouse_disconnect
+
+	
+
+mouse_bb_event_discovery_btn:
+	bpatch patch1d_2,mem_patch1d
+	jam 0,mem_mouse_send_blank_timer
+	call mouse_disconnect
+	call mouse_le_clean_connect_flag
+	branch mouse_start_discovery
+
+
+
+mouse3_0_check_reconn_target:
+	fetch 6,mem_hci_plap
+	branch app_bt_start_discovery_short,blank
+	call mouse_reconn_setting_led_gpio
+	jam 0x17,mem_connection_options  //ssp
+	fetch 1,mem_ssp_enable
+	nbranch app_bt_start_reconnect,blank
+	jam 0x04,mem_connection_options  //no ssp
+	branch app_bt_start_reconnect
+	
+mouse4_0_check_reconn_target:
+	fetch 2,mem_mouse_direct_timeout
+	store 2,mem_mouse_direct_timer
+	call mouse_reconn_setting_led_gpio
+	call app_lpm_mult_disable
+	branch check_51cmd_adv
+
+mouse_reconn_setting_led_gpio:
+	setarg LED_RECONNECT_BLINK
+	store 2,mem_mouse_on_time
+	store 2,mem_mouse_off_time
+	branch mouse_setting_led_gpio_comman
+	
+mouse_discover_setting_led_gpio:
+	setarg LED_DISCOVERY_BLINK
+	store 2,mem_mouse_on_time
+	store 2,mem_mouse_off_time	
+mouse_setting_led_gpio_comman:
+	fetch 1,mem_device_flag
+	beq MODE_BT_DEVICE1,mouse_device_led1
+	beq MODE_BT_DEVICE2,mouse_device_led2
+	beq MODE_BT_DEVICE3,mouse_device_led3
+	rtn
+mouse_device_led1:
+	fetch 1,mem_config_device1_led_gpio
+	branch mouse_led_blink
+mouse_device_led2:
+	fetch 1,mem_config_device2_led_gpio
+	branch mouse_led_blink
+mouse_device_led3:
+	fetch 1,mem_config_device3_led_gpio
+mouse_led_blink:
+	store 1,mem_temp
+	call mouse_devce_led_off
+	fetch 1,mem_temp
+	store 1,mem_mouse_struct_led_gpio
+	arg 0,rega
+	jam UI_LED_STATE_BLINK_START,mem_mouse_led_type
+	branch ui_led_blink_start_global
+
+mouse_led_off:
+	arg 0,rega
+	branch ui_led_off_global
+mouse_led_on:
+	arg 0,rega
+	branch ui_led_on_global
+
+mouse4_0_bb_event_discovery_btn:
+	branch mouse_le_clean_connect_flag
+	
+mouse_bt_hid_handshake:
+	jam APP_HANDSHAKE_DONE,mem_app_handshake_flag
+	call app_lpm_mult_enable
+	call app_bt_store_reconn_info
+	setarg 0
+	store 2,mem_discovery_timeout_timer_count
+	store 1,mem_hid_handshake_timer_count
+	branch app_bt_enter_sniff
+
+mouse_check_reconn_target:
+	call mouse_cheak_select_device_by_switch
+	fetch 1,mem_device_flag
+	fetcht 1,mem_24g_device_number
+	isub temp,null
+	branch mouse_connect_24g_mode,zero
+	fetch 1,mem_xrecord_mode
+	beq REC_3_MODE,mouse3_0_check_reconn_target
+	beq REC_4_MODE,mouse4_0_check_reconn_target
+	branch mouse_start_discovery
+mouse_connect_24g_mode:
+	call mouse_start_24g_mode
+	rtnmark1 mark_24g
+	fetch 1,mem_reconn_times
+	nbranch mouse_polling_device,blank
+	rtn
+	
+mouse_start_discovery:
+	bpatch patch1d_3,mem_patch1d
+	fetch 2,mem_ui_state_map
+	bbit1 UI_STATE_BLE_ADV,mouse_start_discovery_norandom
+	fetch MOUSE_FLAG_LEN,mem_mouse_flag
+	bbit0 MOUSE_ENABLE_BLE_RANDOM_ADDRE,mouse_start_discovery_norandom
+	random pdata					//random ble addr
+	store 1,mem_le_lap+1
+mouse_start_discovery_norandom:
+	call app_lpm_mult_disable
+	fetch 2,mem_discovery_timeout
+	store 2,mem_mouse_discovery_timer
+	jam 6,mem_connection_options
+	setarg 0
+	store 2,mem_mouse_no_data_timer
+	store 2,mem_mouse_direct_timer
+	arg MOUSE_STORE_EEPROM_FLAG,queue
+	call mouse_enable_function_flag
+	call mouse_bt_discovery_button_down_disable
+	fetch 1,mem_device_option
+	isolate1 MODE_4_MOUSE,pdata
+	call check_51cmd_adv,true
+	fetch 1,mem_device_option
+	isolate1 MODE_3_MOUSE,pdata
+	call check_51cmd_start_discovery,true
+	fetch MOUSE_FLAG_LEN,mem_mouse_flag
+	bbit1 MOUSE_ENABLE_DISCOVERY_SENSOR_LED,mouse_sensor_start_blink
+	branch mouse_discover_setting_led_gpio
+
+mouse_stop_discovery:
+	bpatch patch1d_4,mem_patch1d
+	fetch 1,mem_device_option
+	isolate1 MODE_4_MOUSE,pdata
+	call mouse_stop_le_adv,true
+	fetch 1,mem_device_option
+	isolate1 MODE_3_MOUSE,pdata
+	call mouse_stop_bt3_discovery,true
+	fetch MOUSE_FLAG_LEN,mem_mouse_flag
+	bbit1 MOUSE_ENABLE_DISCOVERY_SENSOR_LED,mouse_sensor_led_blink_stop
+	branch mouse_devce_led_off
+mouse_stop_le_adv:
+	setarg 0
+	store 2,mem_mouse_direct_timer
+	branch check_51cmd_stop_adv
+mouse_stop_bt3_discovery:
+	setarg 0
+	store 2,mem_mouse_discovery_timer
+	branch check_51cmd_stop_discovery
+
+	
+
+
+
+mouse_store_remote_bdaddr:
+	fetch MOUSE_FLAG_LEN,mem_mouse_flag
+	rtnbit0 MOUSE_STORE_EEPROM_FLAG
+	arg MOUSE_STORE_EEPROM_FLAG,queue
+	call mouse_disable_function_flag
+	call mouse_check_device_addr
+mouse_unplug_clean_bdaddr:
+	call mouse_before_store_reconn_info
+	fetch MOUSE_FLAG_LEN,mem_mouse_flag
+	bbit1 MOUSE_ENABLE_FLASH,mouse_store_flash_device_info
+	bbit1 MOUSE_ENABLE_EEPROM,mouse_store_eeprom_device_info	
+	rtn
+mouse_store_eeprom_device_info:
+	arg 88,temp
+	arg mem_device_flag,rega
+	arg MOUSE_INFO_EEPROM_OFFECT,regb
+	branch iicd_write_protect_eep_data
+
+mouse_check_device_addr:
+	fetch 1,mem_record_bt_mode
+	beq REC_4_MODE,mouse_check_le_device_addr
+	beq REC_3_MODE,mouse_check_bt_device_addr
+	rtn
+mouse_check_le_device_addr:
+	store 1,mem_device_addr_temp
+	fetch 6,mem_le_plap
+	branch mouse_check_bt_device_addr_common
+mouse_check_bt_device_addr:
+	store 1,mem_device_addr_temp
+	fetch 6,mem_plap
+mouse_check_bt_device_addr_common:
+	store 6,mem_device_addr_temp+1
+	fetch 7,mem_device_addr_temp
+	arg mem_device1_type,contr
+	arg 3,loopcnt
+mouse_check_device_addr_end:
+	ifetcht 7,contr
+	isub temp,null
+	branch mouse_clean_addr,zero
+	increase 22,contr
+	loop mouse_check_device_addr_end
+	rtn
+mouse_before_store_reconn_info:
+	arg mem_device1_type,rega
+	fetch 1,mem_device_flag
+	increase -1,pdata
+	mul32 pdata,29,pdata
+	iadd rega,rega
+	fetch 1,mem_record_bt_mode
+	istore 1,rega
+	beq REC_4_MODE,mouse_store_le_device
+	beq REC_3_MODE,mouse_store_bt_device
+	rtn
+	
+mouse_store_le_device:
+	fetch 6,mem_le_plap
+	istore 6,contw
+	arg mem_le_ltk,contr
+	call memcpy16
+	fetch 6,mem_le_lap
+	istore 6,contw
+	rtn
+mouse_store_bt_device:
+	fetch 6,mem_plap
+	istore 6,contw
+	arg mem_link_key,contr
+	branch memcpy16
+
+mouse_clean_addr:
+	increase -6,contr
+	copy contr,contw
+	fetcht 6,mem_device_addr_temp+1
+	increase 3,temp
+	istoret 6,contw
+	rtn
+
+
+
+mouse_eeprom_load_recon_info:
+	arg 88,temp
+	arg mem_device_flag,rega
+	arg MOUSE_INFO_EEPROM_OFFECT,regb
+	call iicd_read_eep_data
+mouse_select_reconn_device:
+	arg mem_device1_type,rega
+	fetch 1,mem_device_flag
+	fetcht 1,mem_24g_device_number
+	isub temp,null
+	rtn zero
+	increase -1,pdata
+	mul32 pdata,29,pdata
+	iadd rega,rega
+	ifetch 1,rega
+	store 1,mem_xrecord_mode
+	beq REC_3_MODE,mouse_load_bt_device
+	beq REC_4_MODE,mouse_load_le_device
+	rtn
+
+mouse_load_bt_device:
+	ifetch 6,contr
+mouse_load_bt_device_end:
+	store 6,mem_hci_plap
+	arg mem_link_key,contw
+	call memcpy16
+	branch check_link_key_load
+
+mouse_load_le_device:
+	ifetch 6,contr
+mouse_load_le_device_end:
+	store 6,mem_hci_plap
+	arg mem_le_ltk,contw
+	call memcpy16
+	ifetch 6,contr
+	store 6,mem_le_lap
+	rtn
+
+
+mouse_select_device:
+	fetch 1,mem_config_function_enable
+	bbit1 ENABLE_SELECT_DEVICE_BY_GPIO_BUTTON,mouse_select_device_by_button
+	bbit1 ENABLE_SELECT_DEVICE_BY_SWITCH,mouse_select_device_by_switch
+	branch mouse_select_device_by_combination_key
+
+mouse_select_device_by_combination_key:
+	call mouse_check_key_gpio
+	beq MOUSE_RM_BUTTON,mouse_select_device_commbination_key_down
+mouse_select_device_commbination_key_up:
+	jam 30,mem_combination_select_device_count	//combination key timer init 
+	fetch 1,mem_select_device_button_statue
+	rtneq DPI_BUTTON_STATE_UP
+	jam DPI_BUTTON_STATE_UP,mem_select_device_button_statue	
+	rtn
+	
+mouse_select_device_commbination_key_down:
+	call mouse_combination_select_device_timer
+	fetch 1,mem_select_device_button_statue
+	rtneq DPI_BUTTON_STATE_DOWN
+	jam DPI_BUTTON_STATE_DOWN,mem_select_device_button_statue
+	branch mouse_select_device_enable
+
+mouse_combination_select_device_timer:
+	fetch 1,mem_combination_select_device_count
+	rtn blank
+	pincrease -1
+	store 1,mem_combination_select_device_count
+	nrtn blank
+	branch mouse_ready_reconnection_by_button
+	
+mouse_select_device_by_button:
+	fetch 1,mem_config_select_device_button_gpio
+	rtneq GPIO_DISABLE
+	fetcht 1,mem_config_select_device_button_gpio
+	call gpio_get_bit
+	branch mouse_select_device_button_down,true
+mouse_select_device_button_up:
+	fetch 1,mem_select_device_button_statue
+	rtneq DPI_BUTTON_STATE_UP
+	jam DPI_BUTTON_STATE_UP,mem_select_device_button_statue	
+	fetch MOUSE_FLAG_LEN,mem_mouse_flag
+	rtnbit1 MOUSE_LONG_BT_BUTTON_FLAG
+	branch mouse_ready_reconnection_by_button
+
+mouse_select_device_button_down:
+	fetch 1,mem_select_device_button_statue
+	rtneq DPI_BUTTON_STATE_DOWN
+	jam DPI_BUTTON_STATE_DOWN,mem_select_device_button_statue
+	arg MOUSE_LONG_BT_BUTTON_FLAG,queue
+	branch mouse_disable_function_flag
+
+
+
+mouse_select_device_by_switch:
+	fetch 1,MOUSE_FLAG_LEN,mem_mouse_flag
+	rtnbit0 ENABLE_SELECT_DEVICE_BY_SWITCH
+	fetch 1,mem_device_flag
+	beq MODE_BT_DEVICE1,mouse_select1_device
+	beq MODE_24G_DEVICE,mouse_select2_device
+	rtn
+mouse_cheak_select_device_by_switch:
+	fetch 1,MOUSE_FLAG_LEN,mem_mouse_flag
+	rtnbit0 ENABLE_SELECT_DEVICE_BY_SWITCH
+	fetcht 1,mem_config_select_device_button_gpio
+	call gpio_get_bit
+	branch mouse_cheak_select_24gdevice,true
+mouse_select_btdevice:
+	jam MODE_BT_DEVICE1,mem_device_flag
+	rtn
+mouse_cheak_select_24gdevice:
+	fetch 1,mem_24g_device_number
+	store 1,mem_device_flag
+	rtn
+mouse_select1_device:
+	fetcht 1,mem_config_select_device_button_gpio
+	nbranch mouse_ready_reconnection_by_button,true
+	rtn
+mouse_select2_device:
+	fetcht 1,mem_config_select_device_button_gpio
+	call gpio_get_bit
+	branch mouse_select_device_button_down,true
+	rtn
+
+
+	
+
+mouse_ready_reconnection_by_button:
+	fetcht 1,mem_device_flag
+	increase 1,temp
+	fetch 1,mem_device_number
+	isub temp,null
+	ncall mouse_select_device_count_clean,positive
+	storet 1,mem_device_flag
+	jam 0,mem_link_key_exists
+	call mouse_store_device_number2eeprom
+	call mouse_select_device_enable
+//	call p_select_reconn_device
+	branch mouse_set_reconnection
+
+mouse_store_device_number2eeprom:
+	arg 1,temp
+	arg mem_device_flag,rega
+	arg 0,regb
+	branch iicd_write_eep_data
+
+mouse_set_reconnection:
+	call mouse_stop_bluetooth_mode
+	call mouse_select_device_disable
+	branch mouse_soft_reset
+mouse_stop_bluetooth_mode:
+	fetch 2,mem_ui_state_map
+	bbit1 UI_STATE_BT_RECONNECT,mouse_cancel_reconnect
+	bbit1 UI_STATE_BLE_CONNECTED,app_ble_disconnect
+	bbit1 UI_STATE_BT_CONNECTED,app_bt_disconnect
+	branch mouse_stop_discovery
+
+mouse_disconnect:
+	bpatch patch1d_5,mem_patch1d
+	setarg 0
+	store 2,mem_mouse_no_data_timer
+	fetch 2,mem_ui_state_map
+	bbit1 UI_STATE_BLE_CONNECTED,app_ble_disconnect
+	fetch 2,mem_ui_state_map
+	bbit1 UI_STATE_BT_CONNECTED,app_bt_disconnect
+	rtn
+
+mouse_irtual_cable_unplug:
+	setarg 0x01
+	store 6,mem_plap
+	jam REC_3_MODE,mem_record_bt_mode
+	branch mouse_unplug_clean_bdaddr
+
+	
+mouse_cancel_reconnect:
+	call mouse_bt_cannel_reconn_enable
+	branch check_51cmd_bb_reconn_cancel
+
+mouse_bt_discovery_by_button:
+	fetch 1,mem_config_bt_button_gpio
+	rtneq GPIO_DISABLE
+	fetcht 1,mem_config_bt_button_gpio
+	call gpio_get_bit
+	branch mouse_bt_discovery_button_down,true
+mouse_bt_discovery_button_up:
+	fetch 1,mem_ui_button_timeout
+	store 1,mem_combination_ui_button_count	//combination key timer init 	
+	fetch 1,mem_bt_discovey_button_statue
+	rtneq DPI_BUTTON_STATE_UP
+	jam DPI_BUTTON_STATE_UP,mem_bt_discovey_button_statue	
+	branch mouse_bt_discovery_button_down_disable
+mouse_bt_discovery_button_down:
+	call mouse_bt_discovry_timer
+	fetch 1,mem_bt_discovey_button_statue
+	rtneq DPI_BUTTON_STATE_DOWN
+	jam DPI_BUTTON_STATE_DOWN,mem_bt_discovey_button_statue
+	call check_51cmd_bb_reconn_cancel
+	branch mouse_bt_discovery_button_down_enable
+
+	
+mouse_bt_discovery_cheak:
+	fetch 1,mem_config_function_enable
+	bbit1 ENABLE_BT_BUTTON,mouse_bt_discovery_by_button
+mouse_bt_discovery_commbination_key:
+	call mouse_check_key_gpio
+	beq MOUSE_LMR_BUTTON,mouse_bt_discovery_commbination_key_down
+mouse_bt_discovery_commbination_key_up:
+	fetch 1,mem_ui_button_timeout
+	store 1,mem_combination_ui_button_count	//combination key timer init 
+	fetch 1,mem_bt_discovey_button_statue
+	rtneq DPI_BUTTON_STATE_UP
+	jam DPI_BUTTON_STATE_UP,mem_bt_discovey_button_statue	
+	branch mouse_bt_discovery_button_down_disable
+	
+	
+mouse_bt_discovery_commbination_key_down:
+	call mouse_bt_discovry_timer
+	fetch 1,mem_bt_discovey_button_statue
+	rtneq DPI_BUTTON_STATE_DOWN
+	jam DPI_BUTTON_STATE_DOWN,mem_bt_discovey_button_statue
+	call check_51cmd_bb_reconn_cancel
+	branch mouse_bt_discovery_button_down_enable
+
+mouse_bt_discovry_timer:
+	arg mem_combination_ui_button_count,regc
+	arg mouse_long_button_bt_discovry,regb
+	branch timer_single_step
+	
+mouse_long_button_bt_discovry:
+	arg MOUSE_LONG_BT_BUTTON_FLAG,queue
+	call mouse_enable_function_flag
+	call app_evt_button_long_pressed
+	branch mouse_bb_event_discovery_btn
+
+
+mouse_cpi_enable:
+	arg MOUSE_CPI_FLAG,queue
+	branch mouse_enable_function_flag
+mouse_cpi_disable:
+	arg MOUSE_CPI_FLAG,queue
+	branch mouse_disable_function_flag
+mouse_select_device_enable:
+	arg MOUSE_SELECT_DEVICE_FLAG,queue
+	branch mouse_enable_function_flag
+mouse_select_device_disable:
+	arg MOUSE_SELECT_DEVICE_FLAG,queue
+	branch mouse_disable_function_flag
+mouse_bt_cannel_reconn_enable:
+	arg MOUSE_BT_CANNEL_RECONN_FLAG,queue
+	branch mouse_enable_function_flag
+mouse_bt_cannel_reconn_disable:
+	arg MOUSE_BT_CANNEL_RECONN_FLAG,queue
+	branch mouse_disable_function_flag
+mouse_bt_discovery_button_down_enable:
+	arg MOUSE_BT_DISCOVERY_BUTTON_DOWN_FLAG,queue
+	branch mouse_enable_function_flag
+mouse_bt_discovery_button_down_disable:
+	arg MOUSE_BT_DISCOVERY_BUTTON_DOWN_FLAG,queue
+	branch mouse_disable_function_flag
+
+
+
+mouse_select_device_count_clean:
+	arg 1,temp
+	rtn
+
+mouse_enable_function_flag:
+	fetch MOUSE_FLAG_LEN,mem_mouse_flag
+	qset1 pdata
+	store MOUSE_FLAG_LEN,mem_mouse_flag
+	rtn
+
+mouse_disable_function_flag:
+	fetch MOUSE_FLAG_LEN,mem_mouse_flag
+	qset0 pdata
+	store MOUSE_FLAG_LEN,mem_mouse_flag
+	rtn
+	
+mouse_adc_read:
+	fetch MOUSE_FLAG_LEN,mem_mouse_flag
+	rtnbit0 MOUSE_ENABLE_ADC
+	fetch 1,mem_adc_read_timer
+	increase 1,pdata
+	store 1,mem_adc_read_timer
+	sub pdata,10,null              //1s read adc
+	rtn positive
+	jam 0,mem_adc_read_timer
+	call adc_set_mode
+	call vdd_calculate_by_mode
+	store 2,mem_mouse_vdd_now_vol
+	arg mem_mouse_vdd_calculate_set,rega
+	call adc_bat_percent_lowpower_out
+	fetch 1,mem_adc_power_flag
+	bbit1 1,mouse_power_down
+	bbit0 0,mouse_adc_no_low_voltage
+	branch mouse_adc_low_voltage
+mouse_adc_low_voltage:
+	arg MOUSE_LOW_VOLTAGE_FLAG,queue
+	branch mouse_enable_function_flag
+mouse_adc_no_low_voltage:
+	arg MOUSE_LOW_VOLTAGE_FLAG,queue
+	branch mouse_disable_function_flag
+
+mouse_low_voltage_led_timer:
+	fetch MOUSE_FLAG_LEN,mem_mouse_flag
+	rtnbit0 MOUSE_LOW_VOLTAGE_FLAG
+	fetch 1,mem_config_low_voltage_alarm_gpio
+	store 1,mem_mouse_struct_led_gpio
+	fetch 1,mem_adc_low_volatage_led_timer_count
+	pincrease 1
+	store 1,mem_adc_low_volatage_led_timer_count
+	sub pdata,20,null
+	ncall mouse_adc_low_volatage_led_timer_count_clean,positive
+	beq 2,mouse_low_voltage_led_on
+	beq 4,mouse_low_voltage_led_off
+	beq 6,mouse_low_voltage_led_on
+	beq 8,mouse_low_voltage_led_off
+	rtn
+mouse_adc_low_volatage_led_timer_count_clean:
+	jam 1,mem_adc_low_volatage_led_timer_count
+	branch mouse_low_voltage_led_off
+mouse_low_voltage_led_on:
+	arg 0,rega
+	jam UI_LED_STATE_LIGHTING,mem_mouse_led_type
+	branch ui_led_on_global
+mouse_low_voltage_led_off:
+	arg 0,rega
+	jam UI_LED_STATE_LIGHTING,mem_mouse_led_type
+	branch ui_led_off_global
+
+mouse_g24_package_data:
+	call mouse_motion
+	nrtn user
+	arg 7,rega	//length
+	arg mem_mouse_key,regb //tx buff
+	rtn
+	
+mouse_g24_enter_lpm:
+	fetch 1,mem_mouse_24g_enter_lpm_enable
+	rtn blank
+	//do not enter lpm when condition is unallowed
+	fetcht 1,mem_dpi_button_gpio
+	call gpio_get_bit
+	call mouse_24g_dpi_delay_init,true
+	fetch 1,mem_24g_enter_lpm_timer
+	nrtn blank
+	call mouse_check_key_gpio
+	nrtn blank
+	branch g24_lpm_long_sleep
+
+mouse_24g_dpi_delay_init:
+	fetch 1,mem_dpi_button_gpio
+	rtneq UI_BUTTON_GPIO_DISABLE
+	jam 10,mem_24g_enter_lpm_timer
+	rtn
+
+	
+mouse_load_flash_info_cheak:
+	call mouse_load_flash_flag
+	fetch 2,mem_store_flag
+	arg EEPROM_INIT_FLAG,temp
+	isub temp,null
+	branch mouse_load_flash_device_info,zero
+	storet 2,mem_store_flag
+	call mouse_ble_init_address
+	branch mouse_store_flash_device_info
+mouse_ble_init_address:
+	fetch 6,mem_le_lap
+	store 6,mem_device1_locall_addr
+	add pdata,0x0100,pdata
+	store 6,mem_device2_locall_addr
+	add pdata,0x0100,pdata
+	store 6,mem_device3_locall_addr
+	rtn
+	
+	
+mouse_load_flash_flag:
+	setarg mem_store_flag
+	arg mem_mouse_information_start,temp
+	isub temp,temp
+	fetch 3,mem_flash_base
+	iadd temp,pdata
+	arg 2,temp
+	arg mem_store_flag,rega
+	branch spid_read_flash
+
+	
+mouse_load_flash_device_info:
+	setarg mem_mouse_information_end
+	arg mem_mouse_information_start,temp
+	isub temp,temp
+	fetch 3,mem_flash_base
+	arg mem_mouse_information_start,rega
+	call spid_read_flash
+	call mouse_select_reconn_device
+	fetch 4,mem_mouse_24g_addr
+	call g24_head_ptr2regc
+	branch g24_store_mem_addr
+
+mouse_store_flash_device_info:	
+	setarg mem_mouse_information_end
+	arg mem_mouse_information_start,temp
+	isub temp,temp
+	arg mem_mouse_information_start,rega
+	fetch 3,mem_flash_base
+	branch flash_write
+
+mouse_store_eerpom_dpi:
+	arg 1,temp
+	arg mem_mouse_dpi,rega
+	arg MOUSE_DPI_EEPROM_OFFECT,regb
+	branch iicd_write_protect_eep_data
+
+mouse_load_eeprom_dpi:
+	arg 1,temp
+	arg mem_mouse_dpi,rega
+	arg MOUSE_DPI_EEPROM_OFFECT,regb
+	branch iicd_read_eep_data
+
+mouse_statue_cheak_timer:
+	rtnmark1 mark_24g
+	fetch MOUSE_FLAG_LEN,mem_mouse_flag
+	rtnbit0 MOUSE_ENABLE_STATUE_UP
+	fetch 1,mem_mouse_1step_up_count
+	pincrease 1
+	and pdata,0x07,pdata
+	store 1,mem_mouse_1step_up_count
+	rtnne 0x07         //800ms read sensor
+	fetch 2,mem_ui_state_map
+	bbit1 UI_STATE_BT_CONNECTED,mouse_check_statue_up
+	bbit1 UI_STATE_BLE_CONNECTED,mouse_check_statue_up
+	rtn
+
+
+
+//mosue 
+mouse_check_statue_up:
+	bpatch patch1d_6,mem_patch1d
+	fetch 1,mem_mouse_2step_up_count
+	nrtn blank
+	fetch MOUSE_FLAG_LEN,mem_mouse_flag
+	rtnbit0 MOUSE_STATUE_UP_FLAG
+	fetch 1,mem_sensor_squal_reg
+	call sensor_read
+	store 1,mem_sensor_iqc
+	sub pdata,0x10,null
+	branch mouse_statue_up_timer_init,positive
+	jam 0,mem_mouse_2step_up_count
+	rtn
+
+mouse_statue_up_timer_init:
+	jam 30,mem_mouse_2step_up_count
+	rtn
+mouse_statue_up_timer:
+	arg mem_mouse_2step_up_count,regc
+	arg mouse_statue_up,regb
+	branch timer_single_step
+
+mouse_statue_up:
+	fetch 1,mem_sensor_squal_reg
+	call twspi_read
+	sub pdata,0x10,null
+	nrtn positive
+	fetch MOUSE_FLAG_LEN,mem_mouse_flag
+	rtnbit0 MOUSE_STATUE_UP_FLAG
+	arg MOUSE_STATUE_UP_FLAG,queue
+	call mouse_disable_function_flag
+	jam 0,mem_lpm_mult
+	jam 30,mem_mouse_statue_led_timer         // led on3s
+	call mouse_devce_led_off
+	fetch MOUSE_FLAG_LEN,mem_mouse_flag
+	bbit1 MOUSE_ENABLE_STATUE_UP_THREE_LED,mouse_three_device_statue_up
+mouse_two_device_statue_up:
+	fetch 1,mem_device_flag
+	beq MODE_BT_DEVICE1,mouse_device1_led_on  		//device_1
+	beq MODE_BT_DEVICE2,mouse_device_blink_led_init		//device_2
+	rtn
+mouse_three_device_statue_up:
+	fetch 1,mem_device_flag
+	beq MODE_BT_DEVICE1,mouse_device1_led_on  		//device_1
+	beq MODE_BT_DEVICE2,mouse_device2_led_on		//device_2
+	beq MODE_BT_DEVICE3,mouse_device3_led_on		//device_3
+	rtn
+	
+mouse_device_blink_led_init:
+	fetch 1,mem_config_device1_led_gpio
+	branch mouse_led_blink
+
+
+
+mouse_statue_led_off:
+	jam 0x20,mem_lpm_mult
+	branch mouse_devce_led_off
+
+
+
+mouse_devce1_led_off:
+	fetch 1,mem_config_device1_led_gpio
+	rtneq GPIO_DISABLE
+	store 1,mem_mouse_struct_led_gpio
+	branch mouse_led_off
+
+mouse_devce2_led_off:
+	fetch 1,mem_config_device2_led_gpio
+	rtneq GPIO_DISABLE
+	store 1,mem_mouse_struct_led_gpio
+	branch mouse_led_off
+	
+mouse_devce_led_off:
+	call mouse_led_off
+	call mouse_devce1_led_off
+	call mouse_devce2_led_off
+mouse_devce3_led_off:
+	fetch 1,mem_config_device3_led_gpio
+	rtneq GPIO_DISABLE
+	store 1,mem_mouse_struct_led_gpio
+	branch mouse_led_off
+
+mouse_device1_led_on:
+	fetch 1,mem_config_device1_led_gpio
+	store 1,mem_mouse_struct_led_gpio
+	branch mouse_led_on
+mouse_device2_led_on:
+	fetch 1,mem_config_device2_led_gpio
+	store 1,mem_mouse_struct_led_gpio
+	branch mouse_led_on
+mouse_device3_led_on:
+	fetch 1,mem_config_device3_led_gpio
+	store 1,mem_mouse_struct_led_gpio
+	branch mouse_led_on
+
+
+
+mouse_polling_device:
+	bpatch patch1d_7,mem_patch1d
+	fetch 1,mem_reconn_times
+	increase -1,pdata
+	store 1,mem_reconn_times
+	fetcht 1,mem_device_flag
+	increase 1,temp
+	fetch 1,mem_device_number
+	isub temp,null
+	ncall mouse_select_device_count_clean,positive
+	storet 1,mem_device_flag
+	jam 0,mem_link_key_exists
+	call mouse_store_device_number2eeprom
+	call mouse_before_store_reconn_info
+	branch mouse_check_reconn_target
+	
+mouse_power_down:
+	call mouse_devce_led_off
+	setarg 0
+	store 8,mem_gpio_wakeup_low
+	branch lpm_hibernate
+
+
+
+
+
+
+endif
+
+
+
Index: rom/command.format
===================================================================
--- /branch/mouse_project/YJX_Project/YJX_1059/JDT_172_BD_2.4G&BLE/rom/command.format	(nonexistent)
+++ /branch/mouse_project/YJX_Project/YJX_1059/JDT_172_BD_2.4G&BLE/rom/command.format	(working copy)
@@ -0,0 +1,1384 @@
+
+/* Parse Command:
+TX: take bits from tx fifo, jam it into shift and a destination (rf,bucket)
+RX: take bits from demod,  jam it into shift and a destination (acl,sco,bucket) */
+
+/* Inject Command:
+TX: 0 into shift, send tail of shift into a destination (rf,bucket)
+RX: 0 into shift, send tail of shift into a destination (acl,sco,bucket) */
+
+format
+  ! 15 romdat
+  % d0
+  % d1
+  % d2
+  % d3
+  [8] d0
+  [8] d1
+  [8] d2
+  [8] d3
+end
+
+format
+  ! 15 enable   /* set flag to 1 */
+  % flag
+  [5] opcode
+  [6] 1
+  [6] flag
+  [6] null
+  [9] 0
+end
+ /* High 5 bytes of channel map */
+format
+  ! 15 pulse   /* set flag to 1 */
+  % flag
+  [5] opcode
+  [6] 1
+  [6] flag
+  [6] null
+  [9] 0
+end
+
+format
+  ! 15 disable   /* set flag to 0 */
+  % flag
+  [5] opcode
+  [6] 2
+  [6] flag
+  [6] null
+  [9] 0
+end
+
+format
+  ! 15 set0  /* set selected bit of reg to 0 */
+  % immediate
+  % reg
+  [5] opcode
+  [6] 9
+  [6] never
+  [6] reg
+  [9] immediate
+end
+
+format
+  ! 15 set1  /* set selected bit of reg to 1 */
+  % immediate
+  % reg
+  [5] opcode
+  [6] 9          /* alu op demux */
+  [6] always
+  [6] reg
+  [9] immediate
+end
+
+format
+  ! 15 setflag  /* set selected bit of the reg to the polarity of the flag */
+  % flag
+  % immediate
+  % reg
+  [5] opcode
+  [6] 9
+  [6] flag
+  [6] reg
+  [9] immediate
+end
+
+format
+  ! 15 nsetflag  /* set the selected bit of the reg to the opposite polarity of the flag */
+  % flag
+  % immediate
+  % reg
+  [5] opcode
+  [6] 0x29
+  [6] flag
+  [6] reg
+  [9] immediate
+end
+
+format
+  ! 15 setflip    /* invert the selected bit of the reg */
+  % immediate
+  % reg
+  [5] opcode
+  [6] 10            /* this is alu op */
+  [6] always
+  [6] reg
+  [9] immediate
+end
+
+format
+  ! 0x1f qset1      /* demux the lowest 4 bit of queue and OR it with regr into regw */
+  % reg             /* in short, set the bit in reg indexed by queue to 1 */
+  [5] opcode
+  [6] 9
+  [6] always
+  [6] reg
+  [9] 0
+end
+  
+format
+  ! 0x1f qset0      /* demux the lowest 4 bit of queue and AND it with regr into regw */
+  % reg             /* in short, set the bit in reg indexed by queue to 0 */
+  [5] opcode
+  [6] 9
+  [6] never
+  [6] reg
+  [9] 0
+end
+
+format 
+  ! 0x1f qsetflag   /* set the bit in reg index by queue to same as flag */
+  % flag
+  % reg
+  [5] opcode
+  [6] 9
+  [6] flag
+  [6] reg
+  [9] 0
+end
+
+format 
+  ! 0x1f nqsetflag   /* set the bit in the reg index by queue to opposite of flag */
+  % flag
+  % reg
+  [5] opcode
+  [6] 0x29
+  [6] flag
+  [6] reg
+  [9] 0
+end
+
+format
+  ! 0x1f qsetflip      /* flip the bit in reg index by queue */
+  % reg
+  [5] opcode
+  [6] 10
+  [6] always
+  [6] reg
+  [9] 0
+end
+
+format
+  ! 1 parse       /* take bits out of source (sco_tx,tx_buffer,rx-elas) into pdata and dest (sco_rx,rx_fifo,tx-elas) */
+  % source
+  % dest
+  % immediate
+  [5] opcode
+  [4] source      /* voice, data, demod */
+  [2] 0
+  [6] 0    
+  [2] 0           /* parse or inject */ 
+  [4] dest        /* acl, sco, mod, bucket */
+  [9] immediate   /* number of bits to parse off */
+end
+
+format
+  ! 1 inject      /* shift data from pdata into destination (tx-elas,rx_fifo,sco_rx) */
+  % destination
+  % immediate
+  [5] opcode
+  [4] 0
+  [2] 0
+  [6] 1
+  [2] 0
+  [4] destination /* acl,sco,mod,bucket */
+  [9] immediate   /* number of bits to be injected */
+end
+
+format
+  ! 1 iinject
+  % destination
+  % regr
+  [5] opcode
+  [6] regr       /* contain the number of bits to inject */
+  [6] 3
+  [2] 0
+  [4] destination /* acl,sco,mod,bucket */
+  [9] 0 
+end
+
+format
+  ! 1 stuff  /* automatic parse, stuff_counter decrement on every bit until hits zero */
+  % source
+  % destination
+  [5] opcode
+  [4] source
+  [2] 0
+  [6] 2
+  [2] 0
+  [4] destination
+  [9] 0
+end
+
+format    /* force immediate value into registers */
+  ! 3 force
+  % immediate
+  % regw
+  [5] opcode
+  [6] 0
+  [6] 0    /* alu operation force */
+  [6] regw  /* destination register */
+  [9] immediate
+end
+
+format    /* force whatever is on shift_reg to regsiters */
+  ! 0x13 iforce
+  % regw
+  [5] opcode
+  [6] 0
+  [6] 0    /* alu operation force */
+  [6] regw  /* destination register */
+  [9] 0
+end
+
+format    /* force immediate value into registers */
+  ! 3 increase
+  % immediate
+  % reg
+  [5] opcode
+  [6] reg
+  [6] 1    /* alu operation add */
+  [6] reg
+  [9] immediate
+end
+
+format
+  ! 3 pincrease
+  % immediate
+  [5] opcode
+  [6] -1  /* pdata */
+  [6] 1   /* alu add */
+  [6] -1  /* back to pdata */
+  [9] immediate
+end
+
+format    /* force immediate value into registers */
+  ! 3 and_into
+  % immediate
+  % reg
+  [5] opcode
+  [6] reg
+  [6] 2    /* alu operation and into */
+  [6] reg
+  [9] immediate
+end
+
+format
+  ! 3 and
+  % regr
+  % immediate
+  % regw
+  [5] opcode
+  [6] regr
+  [6] 2    /* alu operation and into */
+  [6] regw
+  [9] immediate
+end
+  
+format
+  ! 0x13 iand    /* pdata & regr -> regw */
+  % regr
+  % regw
+  [5] opcode
+  [6] regr
+  [6] 2    /* alu operation and into */
+  [6] regw
+  [9] 0
+end
+  
+
+format    /* and whatever is in shiftreg with reg */
+  ! 0x13 iand_into
+  % reg
+  [5] opcode
+  [6] reg
+  [6] 2    /* alu operation and into */
+  [6] reg
+  [9] 0
+end
+
+format
+  ! 3 or_into
+  % immediate
+  % reg
+  [5] opcode
+  [6] reg
+  [6] 3    /* alu operation or into */
+  [6] reg
+  [9] immediate
+end
+
+format
+  ! 3 or
+  % regr
+  % immediate
+  % regw
+  [5] opcode
+  [6] regr
+  [6] 3    /* alu operation or into */
+  [6] regw
+  [9] immediate
+end
+
+format
+  ! 0x13 ior
+  % regr
+  % regw
+  [5] opcode
+  [6] regr
+  [6] 3    /* alu operation or into */
+  [6] regw
+  [9] 0
+end
+
+format
+  ! 0x13 ior_into
+  % reg
+  [5] opcode
+  [6] reg
+  [6] 3    /* alu operation or into */
+  [6] reg
+  [9] 0
+end
+
+format
+  ! 3 skip_to   /* jump to location stored in reg */
+  % reg
+  [5] opcode
+  [6] reg
+  [6] 4   /* alu operation copy */
+  [6] rom_addr
+  [9] 0
+end
+
+format
+  ! 3 copy
+  % regr
+  % regw
+  [5] opcode
+  [6] regr
+  [6] 4   /* alu operation copy */
+  [6] regw
+  [9] 0
+end
+
+format
+  ! 3 deposit   /* copy the register content thru alu to shift register, not prealigned like preload */
+  % reg
+  [5] opcode
+  [6] reg
+  [6] 4   /* alu operation copy */
+  [6] -1  /* pdata */
+  [9] 0
+end
+
+format
+  ! 3 icopy     /* copy the shift register lsb content directly to register, not aligned */
+  % regw
+  [5] opcode
+  [6] -1  /* pdata */
+  [6]  4  /* alu copy */
+  [6] regw
+  [9] 0
+end
+
+format
+  ! 3 add
+  % regr
+  % immediate
+  % regw
+  [5] opcode
+  [6] regr
+  [6] 1
+  [6] regw
+  [9] immediate
+end
+
+format
+  ! 0x13 iadd       /* regr + pdata -> regw */
+  % regr
+  % regw
+  [5] opcode
+  [6] regr
+  [6] 1
+  [6] regw
+  [9] 0
+end
+
+format
+  ! 3 sub          /* immediate - regr -> regw */
+  % regr
+  % immediate
+  % regw
+  [5] opcode
+  [6] regr
+  [6] 12
+  [6] regw
+  [9] immediate
+end
+
+format
+  ! 0x13 isub       /* pdata - regr -> regw */
+  % regr
+  % regw
+  [5] opcode
+  [6] regr
+  [6] 12
+  [6] regw
+  [9] 0
+end
+
+
+format
+  ! 3 flip
+  % immediate
+  % reg
+  [5] opcode
+  [6] reg
+  [6] 5
+  [6] reg
+  [9] immediate
+end
+  
+format
+  ! 0x13 iflip  /* use shift register as immediate to do xor */
+  % regr
+  % regw
+  [5] opcode
+  [6] regr
+  [6] 5
+  [6] regw
+  [9] 0
+end
+  
+format
+  ! 3 xor
+  % regr
+  % immediate
+  % regw
+  [5] opcode
+  [6] regr
+  [6] 5
+  [6] regw
+  [9] immediate
+end
+
+format
+  ! 3 xor_into
+  % immediate
+  % reg
+  [5] opcode
+  [6] reg
+  [6] 5
+  [6] reg
+  [9] immediate
+end
+  
+format
+  ! 0x13 ixor  /* pdata xor regr and store result in regw */
+  % regr
+  % regw
+  [5] opcode
+  [6] regr
+  [6] 5
+  [6] regw
+  [9] 0
+end
+  
+format
+  ! 3 invert
+  % regr
+  % regw
+  [5] opcode
+  [6] regr
+  [6] 8
+  [6] regw
+  [9] 0
+end
+
+format
+  ! 3 pinvert    /* invert pdata into itself */
+  [5] opcode
+  [6] -1
+  [6] 8
+  [6] -1
+  [9] 0
+end
+
+format
+  ! 3 div                 /* regr div immediate div */
+  % reg
+  % immediate
+  [5] opcode
+  [6] reg
+  [6] 13                   /* generate diven pulse to div */
+  [6] null
+  [9] immediate
+end
+
+format
+  ! 0x13 idiv           /* pdata div regr data ready at most after 41 nops */
+  % reg
+  [5] opcode
+  [6] reg
+  [6] 13                   /* generate diven pulse to div */
+  [6] null
+  [9] 0
+end
+
+format
+  ! 3 remainder            /* harvest div remainder */
+  % regw
+  [5] opcode
+  [6] 0
+  [6] 14
+  [6] regw
+  [9] 0
+end
+
+format
+  ! 3 quotient             /* harvest div quotient */
+  % regw
+  [5] opcode
+  [6] 0
+  [6] 15
+  [6] regw
+  [9] 0
+end
+
+format
+  ! 3 rshift
+  % regr
+  % regw
+  [5] opcode
+  [6] regr
+  [6] 6
+  [6] regw
+  [9] 0
+end
+
+format
+  ! 3 rshift2
+  % regr
+  % regw
+  [5] opcode
+  [6] regr
+  [6] 22
+  [6] regw
+  [9] 0
+end
+
+format
+  ! 3 rshift3
+  % regr
+  % regw
+  [5] opcode
+  [6] regr
+  [6] 18
+  [6] regw
+  [9] 0
+end
+
+format
+  ! 3 rshift4
+  % regr
+  % regw
+  [5] opcode
+  [6] regr
+  [6] 35
+  [6] regw
+  [9] 0
+end
+
+format
+  ! 3 rshift8
+  % regr
+  % regw
+  [5] opcode
+  [6] regr
+  [6] 25
+  [6] regw
+  [9] 0
+end
+
+format
+  ! 3 rshift16
+  % regr
+  % regw
+  [5] opcode
+  [6] regr
+  [6] 34
+  [6] regw
+  [9] 0
+end
+
+format
+  ! 3 rshift32
+  % regr
+  % regw
+  [5] opcode
+  [6] regr
+  [6] 30
+  [6] regw
+  [9] 0
+end
+
+format
+  ! 3 lshift
+  % regr
+  % regw
+  [5] opcode
+  [6] regr
+  [6] 7
+  [6] regw
+  [9] 0
+end
+
+format
+  ! 3 lshift2
+  % regr
+  % regw
+  [5] opcode
+  [6] regr
+  [6] 23
+  [6] regw
+  [9] 0
+end
+
+format
+  ! 3 lshift8
+  % regr
+  % regw
+  [5] opcode
+  [6] regr
+  [6] 26
+  [6] regw
+  [9] 0
+end
+
+  
+format
+  ! 3 lshift3
+  % regr
+  % regw
+  [5] opcode
+  [6] regr
+  [6] 19
+  [6] regw
+  [9] 0
+end
+
+format
+  ! 3 lshift4
+  % regr
+  % regw
+  [5] opcode
+  [6] regr
+  [6] 36
+  [6] regw
+  [9] 0
+end
+  
+
+format
+  ! 3 lshift16
+  % regr
+  % regw
+  [5] opcode
+  [6] regr
+  [6] 32
+  [6] regw
+  [9] 0
+end
+
+format
+  ! 3 random               /* random number into regw */
+  % reg
+  [5] opcode
+  [6] 0
+  [6] 20
+  [6] reg
+  [9] 0
+end
+
+format                     /* bit reverse within a byte */
+  ! 3 reverse
+  % reg
+  % regw
+  [5] opcode
+  [6] reg
+  [6] 27
+  [6] regw
+  [9] 0
+end
+
+format
+  ! 3 priority    /* priority encode reg into regw, lsb is the top priority, ie, priority(8'b00010000) = 4 */
+  % reg
+  % regw
+  [5] opcode
+  [6] reg
+  [6] 21
+  [6] regw
+  [9] 0
+end
+
+format
+  ! 7 setsect   /* set a section of pdata */
+  % section    /* 0 sets 17:0 of pdata with set_data, 1 sets 35:18, 2 sets 53:36, 3 sets 71:54 */
+  % set_data
+  [5] opcode
+  [7] 0
+  [2] section
+  [18] set_data
+end
+
+format
+  ! 10 preload   /* load stuff into pdata according to fhs format, check us.v */
+  % reg
+  [5] opcode
+  [6] reg
+  [6] 0
+  [6] -1
+  [9] 0
+end
+
+format  /* load register with pdata content, according to fhs format, check us.v */
+  ! 10 ialigned   /* all bits are in position */
+  % regw
+  [5] opcode
+  [6] -1
+  [6] 0
+  [6] regw
+  [9] 0
+end
+
+format  /* load register to another according to fhs format */
+  ! 10 aligned
+  % regr
+  % regw
+  [5] opcode
+  [6] regr
+  [6] 0
+  [6] regw
+  [9] 0
+end
+
+format
+  ! 4 branch
+  % addr
+  % flag
+  [5] opcode
+  [6] 1
+  [6] flag
+  [15] addr
+end
+
+format
+  ! 4 call
+  % addr
+  % flag
+  [5] opcode
+  [6] 2
+  [6] flag
+  [15] addr
+end
+
+format
+  ! 4 rtn
+  % flag
+  [5] opcode
+  [6] 3
+  [6] flag
+  [15] 0
+end
+
+format
+  ! 0x0c store          /* write to memory, data from pdata, address from immediate then mem_ptr */
+  % num_bytes
+  % addr
+  [5] opcode
+  [6] 0               /* memory */
+  [1] 0
+  [1] 0
+  [4] num_bytes
+  [15] addr
+end
+
+format
+  ! 0x0c hstore          /* write to memory, data from pdata, address from immediate then mem_ptr */
+  % num_bytes
+  % addr
+  [5] opcode
+  [6] 0               /* memory */
+  [1] 1
+  [1] 0
+  [4] num_bytes
+  [15] addr
+end
+
+format
+  ! 0x1c istore        /* write to memory, data from pdata, address from regr then mem_ptr */
+  % num_bytes
+  % reg
+  [5] opcode
+  [6] reg            /* hold address */
+  [1] 0
+  [1] 0
+  [4] num_bytes
+  [15] 0
+end
+
+format
+  ! 0x0d fetch          /* read from memory, data into pdata, address from immediate then mem_ptr */
+  % num_bytes
+  % addr
+  [5] opcode
+  [6] 0               /* memory */
+  [1] 0
+  [1] 0
+  [4] num_bytes
+  [15] addr
+end
+
+format
+  ! 0x0d hfetch          /* read from memory, data into pdata, address from immediate then mem_ptr */
+  % num_bytes
+  % addr
+  [5] opcode
+  [6] 0               /* memory */
+  [1] 1
+  [1] 0
+  [4] num_bytes
+  [15] addr
+end
+
+format
+  ! 0x0d crc         /* read from memory, count from loopcnt, put crc result into pdata */
+  % addr
+  [5] opcode
+  [6] 0
+  [1] 0
+  [1] 0
+  [4] 0
+  [15] addr
+end
+
+format
+  ! 0x1d icrc         /* read from memory, address from reg, count from loopcnt, put crc result into pdata */
+  % reg
+  [5] opcode
+  [6] reg             /* hold address */
+  [1] 0
+  [1] 0
+  [4] 0
+  [15] 0
+end
+
+
+format
+  ! 0x1d ifetch         /* read from memory, data into pdata, address from regr then mem_ptr */
+  % num_bytes
+  % reg
+  [5] opcode
+  [6] reg             /* hold address */
+  [1] 0
+  [1] 0
+  [4] num_bytes
+  [15] 0
+end
+
+format
+  ! 0x0c storet          /* write to memory, data from temp, address from immediate won't increment */
+  % num_bytes
+  % addr
+  [5] opcode
+  [6] 0               /* memory */
+  [1] 0
+  [1] 1
+  [4] num_bytes
+  [15] addr
+end
+
+format
+  ! 0x0c hstoret          /* write to corereg, data from temp, address from immediate won't increment */
+  % num_bytes
+  % addr
+  [5] opcode
+  [6] 0               /* memory */
+  [1] 1
+  [1] 1
+  [4] num_bytes
+  [15] addr
+end
+
+format
+  ! 0x1c istoret        /* write to memory, data from temp, address from regr won't increment */
+  % num_bytes
+  % reg
+  [5] opcode
+  [6] reg            /* hold address */
+  [1] 0
+  [1] 1
+  [4] num_bytes
+  [15] 0
+end
+
+format
+  ! 0x0d fetcht          /* read from memory, data into temp, address from immediate won't increment */
+  % num_bytes
+  % addr
+  [5] opcode
+  [6] 0               /* memory */
+  [1] 0
+  [1] 1
+  [4] num_bytes
+  [15] addr
+end
+
+format
+  ! 0x0d hfetcht          /* read from corereg, data into temp, address from immediate won't increment */
+  % num_bytes
+  % addr
+  [5] opcode
+  [6] 0               /* memory */
+  [1] 1
+  [1] 1
+  [4] num_bytes
+  [15] addr
+end
+
+format
+  ! 0x1d ifetcht         /* read from memory, data into temp, address from regr won't increment */
+  % num_bytes
+  % reg
+  [5] opcode
+  [6] reg             /* hold address */
+  [1] 0
+  [1] 1
+  [4] num_bytes
+  [15] 0
+end
+
+format
+  ! 0x0e jam
+  % immediate
+  % addr
+  [5] opcode
+  [3] 0
+  [16] addr
+  [8] immediate
+end
+
+format			/* 0x242... */
+  ! 4 nbranch
+  % addr
+  % flag
+  [5] opcode
+  [1] 1
+  [5] 1
+  [6] flag
+  [15] addr
+end
+
+format
+  ! 4 ncall
+  % addr
+  % flag
+  [5] opcode
+  [1] 1
+  [5] 2
+  [6] flag
+  [15] addr
+end
+
+format
+  ! 4 nrtn
+  % flag
+  [5] opcode
+  [1] 1
+  [5] 3
+  [6] flag
+  [15] 0
+end
+
+format
+  ! 4 nop
+  % addr  /* no-op for addr+2 clocks */
+  [5] opcode
+  [6] 0     
+  [6] 0     /* always */ 
+  [15] addr
+end
+
+format
+  ! 4 clear_stack
+  [5] opcode
+  [6] 4
+  [6] 0    /* always */
+  [15] 0
+end
+
+format
+  ! 6 until
+  % reg
+  % flag
+  [5] opcode
+  [6] reg
+  [6] flag
+  [6] 1
+  [9] 0
+end
+  
+format
+  ! 6 correlate   /* quit if 1. flag is true 2, regr time up 3, found sync,(cond_true) */
+  % reg          /* expire counter to check against */
+  % flag
+  [5] opcode
+  [6] reg
+  [6] flag
+  [6] 2           /* correlate */
+  [9] 0           
+end
+
+format
+  ! 5 compare   /* sets cond flag,  if reg equals immediate */
+  % immediate
+  % reg
+  % mask
+  [5] opcode
+  [6] reg
+  [3] 0
+  [9] mask
+  [9] immediate
+end
+
+format
+  ! 0x15 icompare   /* sets cond flag,  if reg equals pdata */
+  % mask
+  % reg
+  [5] opcode
+  [6] reg
+  [3] 0
+  [9] mask
+  [9] 0
+end
+
+format   /* sets cond. flag, if reg equals LS half of shift reg with MS half of reg being mask */
+  ! 5 iverify
+  % reg
+  [5] opcode
+  [6] reg
+  [3] 2
+  [18] 0
+end
+
+format
+  ! 0x15 qisolate1
+  % reg
+  [5] opcode
+  [6] reg
+  [3] 3
+  [18] -1
+end
+
+format
+  ! 0x15 qisolate0
+  % reg
+  [5] opcode
+  [6] reg
+  [3] 3
+  [18] 0
+end
+
+	/* REVAB bug: cannot access bit above 35 */
+format
+  ! 5 isolate1
+  % addr
+  % reg
+  [5] opcode
+  [6] reg
+  [3] 3
+  [9] -1
+  [9] addr
+end
+
+format
+  ! 5 isolate0
+  % addr
+  % reg
+  [5] opcode
+  [6] reg
+  [3] 3
+  [9] 0
+  [9] addr
+end
+
+format
+  ! 11 setarg
+  % immediate
+  [5] opcode
+  [27] immediate
+end
+
+format
+  ! 0x1b arg
+  % immediate
+  % reg
+  [5] opcode
+  [6] reg
+  [21] immediate
+end
+
+  
+format
+  ! 0 sleep
+  [5] opcode
+  [27] 0
+end
+
+format
+  ! 0 snooze
+  [5] opcode
+  [6] -1
+  [21] 0
+end
+
+format
+  ! 0 revision
+  % rev_num
+  [5] opcode
+  [27] rev_num
+end
+
+format
+  ! 0x18 loop   /* branch when loopcnt is NOT zero, and decrease loopcnt */
+  % addr
+  [5] opcode
+  [4] 4
+  [8] 0
+  [15] addr
+end
+
+format
+  ! 0x18 beq   /* branch when pdata is equal to immediate */
+  % imme
+  % addr
+  [5] opcode
+  [4] 0
+  [8] imme
+  [15] addr
+end
+
+format
+  ! 0x18 bne   /* branch when pdata is NOT equal to immediate */
+  % imme
+  % addr
+  [5] opcode
+  [4] 1
+  [8] imme
+  [15] addr
+end
+
+format
+  ! 0x18 rtneq   /* return when pdata is equal to immediate */
+  % imme
+  [5] opcode
+  [4] 2
+  [8] imme
+  [15] 0
+end
+
+format
+  ! 0x18 rtnne   /* return when pdata is NOT equal to immediate */
+  % imme
+  [5] opcode
+  [4] 3
+  [8] imme
+  [15] 0
+end
+
+format
+  ! 0x18 bbit1   /* branch when pdata's imme bit is 1 */
+  % imme
+  % addr
+  [5] opcode
+  [4] 5
+  [8] imme
+  [15] addr
+end
+
+format
+  ! 0x18 bbit0   /* branch when pdata's imme bit is 0 */
+  % imme
+  % addr
+  [5] opcode
+  [4] 6
+  [8] imme
+  [15] addr
+end
+
+format
+  ! 0x18 rtnbit1   /* return when pdata's imme bit is 0 */
+  % imme
+  [5] opcode
+  [4] 7
+  [8] imme
+  [15] 0
+end
+
+format
+  ! 0x18 rtnbit0   /* return when pdata's imme bit is 0 */
+  % imme
+  [5] opcode
+  [4] 8
+  [8] imme
+  [15] 0
+end
+
+format
+  ! 8	bpatch
+  % imme
+  % addr
+  [5] opcode
+  [4] 9
+  [8] imme
+  [15] addr
+end
+
+format
+  ! 8	bpatchx
+  % imme
+  % addr
+  [5] opcode
+  [4] 14
+  [8] imme
+  [15] addr
+end
+
+format
+  ! 0x18 bmark1   /* branch when mark's imme bit is 1 */
+  % imme
+  % addr
+  [5] opcode
+  [4] 10
+  [8] imme
+  [15] addr
+end
+
+format
+  ! 0x18 bmark0   /* branch when mark's imme bit is 0 */
+  % imme
+  % addr
+  [5] opcode
+  [4] 11
+  [8] imme
+  [15] addr
+end
+
+format
+  ! 0x18 rtnmark1   /* return when mark's imme bit is 0 */
+  % imme
+  [5] opcode
+  [4] 12
+  [8] imme
+  [15] 0
+end
+
+format
+  ! 0x18 rtnmark0   /* return when mark's imme bit is 0 */
+  % imme
+  [5] opcode
+  [4] 13
+  [8] imme
+  [15] 0
+end
+
+
+format
+  ! 3 mult                  /* immediate mult regr */  /* the product will be ready 17 clks later */
+  % immediate                                   /* use "product" instruction to get the result */
+  % reg
+  [5] opcode
+  [6] reg
+  [6] 16                   /* generate diven pulse to div */
+  [6] null
+  [9] immediate
+end
+
+format
+  ! 0x13 imult           /* pdata mult regr */  /* the product will be ready after 15 nops */
+  % reg                                         /* use product opcode to get the result */
+  [5] opcode
+  [6] reg
+  [6] 16                   /* generate mult pulse to multiplier */
+  [6] null
+  [9] 0
+end
+
+format
+  ! 3 mul32                  /* immediate mult regr */ 
+  % regr
+  % immediate                                  
+  % regw
+  [5] opcode
+  [6] regr
+  [6] 31           
+  [6] regw
+  [9] immediate
+end
+
+format
+  ! 0x13 imul32           /* pdata mult regr 32x32=64bit */  
+  % regr
+  % regw
+  [5] opcode
+  [6] regr
+  [6] 31                   
+  [6] regw
+  [9] 0
+end
+
+format
+  ! 3 product              /* harvest mult product */
+  % regw
+  [5] opcode
+  [6] 0
+  [6] 17
+  [6] regw
+  [9] 0
+end
+
+format
+  ! 3 byteswap
+  % regr
+  % regw
+  [5] opcode
+  [6] regr
+  [6] 33
+  [6] regw
+  [9] 0
+end
+
+format
+  ! 3 shasx          /* SHA256 Sx operation, immediate is Sx */
+  % regr
+  % immediate
+  % regw
+  [5] opcode
+  [6] regr
+  [6] 28
+  [6] regw
+  [9] immediate
+end
+
+
+format
+  ! 0x13 regexrot 	/* regext[0] <- regext[7], regext[1] <- regext[0], regext[2] <- regext[1] ... */
+  [5] opcode
+  [6] 0
+  [6] 29
+  [6] null
+  [9] 0
+end
+
Index: rom/label.format
===================================================================
--- /branch/mouse_project/YJX_Project/YJX_1059/JDT_172_BD_2.4G&BLE/rom/label.format	(nonexistent)
+++ /branch/mouse_project/YJX_Project/YJX_1059/JDT_172_BD_2.4G&BLE/rom/label.format	(working copy)
@@ -0,0 +1,4043 @@
+0x2000  start
+0x2001  soft_reset
+0x2012  main_loop
+0x2021  connection_dispatch
+0x2026  connection_incontext
+0x202f  connection_nosniff
+0x2038  idle_dispatch
+0x2043  idle_exit
+0x2045  idle_le_create_conn
+0x2048  idle_inquiry
+0x204d  idle_inquiry_cancel
+0x2050  idle_remote_name_req
+0x2055  idle_create_conn
+0x2056  idle_create_conn_device
+0x205b  idle_create_conn_cont
+0x205c  idle_start_page
+0x2062  idle_page_mode_r0
+0x2083  idle_page_fail
+0x2089  idle_name_fail
+0x208f  inquiry_dispatch
+0x2095  inquiry_start
+0x209c  inquiry_restart
+0x209f  inquiry_rx_restart
+0x20a4  inquiry_transmit
+0x20b1  inquiry_check_train
+0x20be  inquiry_receive
+0x20c8  inquiry_sync
+0x20ce  inquiry_receive_rtn
+0x20cf  inquiry_receive_eir_rtn
+0x20d3  master_page
+0x20db  master_page_no_interval
+0x20e6  master_npage_timeout
+0x20e9  master_page_timeout
+0x20f0  page_start
+0x20fc  page_restart
+0x2101  page_rx_restart
+0x2114  page_exit
+0x211a  page_check_train
+0x2128  page_receive
+0x2130  page_sync
+0x2136  page_send_fhs
+0x213a  page_send_fhs_continue
+0x2146  page_wait_fhs_reply
+0x2155  page_wait_fhs_reply_ok
+0x215a  master_newconn_loop
+0x215f  newconn_poll_responded
+0x2166  master_dispatch
+0x2177  master_loop
+0x2180  master_notmatch
+0x2186  master_exit
+0x2188  master_attempt
+0x218b  check_master_disconnect
+0x218e  check_master_match
+0x219c  master_disconnect
+0x21a2  master_name_disconnect
+0x21a4  master_name_error
+0x21a7  check_disconnect_timeout
+0x21ae  conn_timer_expired
+0x21b2  linkkey_ready
+0x21bb  linkkey_set
+0x21c3  linkkey_set_continue
+0x21c4  generate_linkkey_continue
+0x21c5  clear_linkstate
+0x21c9  role_switch_check
+0x21d3  role_switch_clkn
+0x21d4  role_switch_clke
+0x21d9  role_switch_prepare
+0x21dc  role_switch_prepare0
+0x21e1  role_switch_master
+0x21e7  roles_waitfhs_loop
+0x21ec  role_switch_fail_master
+0x21f4  roles_replyto_fhs
+0x21fc  roles_newconns_loop
+0x2202  roles_newconns_responded
+0x220a  context_load
+0x221c  context_load_master
+0x2223  context_save
+0x222b  context_get_next
+0x222d  context_get_next_loop
+0x2231  context_get_next_cont
+0x2239  context_get_next_sniff
+0x223b  context_new
+0x2243  context_check_all_wack
+0x224b  context_check_esco_wack
+0x2250  context_esco_wack
+0x2252  context_check_idle
+0x2254  context_traverse_linkkey
+0x2257  context_search_conn_handle
+0x2258  context_search_conn_handle2
+0x225a  context_search_plap
+0x225c  context_search_plap2
+0x225e  context_search_insniff
+0x2260  context_search_sniff_window
+0x2261  context_search
+0x2264  context_search_loop
+0x2266  context_search_next
+0x226a  context_search_empty
+0x226e  context_search_lap
+0x2270  context_search_lap_cont
+0x2275  context_search_handle
+0x227b  context_search_sniff
+0x227c  context_search_sniff_loop
+0x2289  context_search_sniff_sc
+0x228c  context_search_meet1
+0x228d  context_search_meet
+0x2291  context_search_sniff_miss
+0x2297  sign_pdata_temp
+0x22a1  sign_pdata_temp_p0
+0x22a7  context_check_inconn
+0x22aa  context_check_a_wack
+0x22b3  context_get_anchor
+0x22bf  context_next_anchor
+0x22c6  context_search_window
+0x22cf  context_traverse_clearkey
+0x22da  master_conn_send_packet
+0x22dc  master_send_packet
+0x22e4  master_conn_recv_packet
+0x22e6  master_recv_packet
+0x22ee  master_rx_conn_finish_packet
+0x22f2  master_newconn_once
+0x22f8  inquiry_scan_dispatch
+0x2308  inquiry_scan_start
+0x2332  send_eir
+0x2354  get_all_uuid
+0x2358  lshift_loop
+0x236a  page_scan_dispatch
+0x237a  page_scan_start
+0x239b  page_scan_wait_fhs_restart
+0x23a4  page_scan_wait_fhs_again
+0x23ab  page_scan_reply_to_fhs
+0x23b8  slave_apply_clke_bt
+0x23bc  slave_apply_clke_bt_now
+0x23bf  start_slave_connection
+0x23c3  slave_newconn_loop
+0x23c8  sconn_successful
+0x23cf  slave_dispatch
+0x23d3  slave_loop
+0x23e2  slave_notmatch
+0x23eb  slave_disconnect
+0x23f3  role_switch_slave
+0x23fb  roles_sendfhs_loop
+0x240d  roles_got_fhs_reply
+0x2410  roles_newconn_loop
+0x2419  roles_newconn_responded
+0x241f  roles_newconn_nolmp
+0x242a  init_rx_packet_flags
+0x2435  prepare_newconn
+0x2440  newconn_init
+0x244f  clear_linkkey
+0x2455  new_conn_timeout
+0x2459  new_conn_handle
+0x245d  quit_connection
+0x2462  quit_connection_name
+0x2466  quit_connection_cont
+0x2476  quit_connection_not_clear_mark
+0x2478  quit_connection_not_clear_tx
+0x247c  slave_newconn_once
+0x2489  prepare_tx
+0x2495  prepare_tx_not_esco
+0x2496  prepare_tx_not_sco
+0x249b  prepare_tx_retransmit
+0x24a5  prepare_tx_nomore_retransmit
+0x24a7  prepare_tx_no_retransmit
+0x24b0  prepare_tx_pollnull
+0x24b4  prepare_tx_loopback
+0x24ba  prepare_tx_txpat
+0x24be  prepare_tx_sendlmp
+0x24c0  prepare_tx_sendl2cap
+0x24c1  set_wait_ack
+0x24ca  tx_l2cap_type
+0x24e0  tx_l2cap_type_edr
+0x24f0  slave_receive_master_slot
+0x24f5  slave_receive_notsniff
+0x24f6  slave_receive_access
+0x24f7  slave_receive_sniff
+0x2514  slave_conn_recv_packet
+0x251c  receive_packet
+0x251e  receive_packet_whitened
+0x2533  receive_packet_noedr
+0x253c  receive_packet_amchk
+0x254b  am_addr_match
+0x254c  am_addr_ok
+0x255b  arqn_bypass
+0x2568  failed_seqn
+0x2569  rx_type_dispatch
+0x2578  process_hev
+0x257e  process_hev_loop
+0x2587  process_poll
+0x2588  process_dm5
+0x2589  process_dm1
+0x258b  process_dh5
+0x258c  process_3dh1
+0x258d  process_dh1
+0x258e  process_dmh
+0x259a  process_dmh_noedr
+0x25a5  process_dmh_long
+0x25a8  process_dmh_common
+0x25ba  process_lmp
+0x25bf  process_dmh_data_l2cap_start_pkt
+0x25c9  process_dmh_data_into_buff1
+0x25ce  process_dmh_data_into_buff2
+0x25d3  process_dmh_data_l2cap_continue_pkt
+0x25dd  process_dmh_data_l2cap_continue_pkt1
+0x25e1  process_dmh_data_l2cap_continue_pkt2
+0x25e4  process_dmh_data
+0x25e8  process_dmh_data_end
+0x25f9  process_l2cap_pass_crc_buff1
+0x2603  process_l2cap_pass_crc_buff2
+0x260d  process_dmh_cont
+0x2616  process_dmh_cont_rxbuf_not_use
+0x2620  ack_payload
+0x2631  error_header
+0x2637  error_payload_crc
+0x263d  error_payload
+0x263e  discard_pkt
+0x2642  discard_pkt_lmp
+0x2646  discard_pkt_l2cap
+0x264a  redundant_payload
+0x264d  end_of_packet
+0x2659  process_fhs
+0x266e  fhs_parity_ok
+0x2687  clear_got_tx
+0x269c  clear_got_txlmp
+0x26a8  clear_lmp_escape
+0x26ab  clear_send_setup_complete
+0x26b0  sco_link_req_by_slave
+0x26b5  clean_mem_mode
+0x26b8  start_encryption
+0x26c0  stop_encryption
+0x26c6  sniff_init
+0x26cc  sniff_init_master
+0x26d6  sniff_init_nowrap
+0x26e9  sniff_exit
+0x26f3  check_attempt
+0x26fe  check_attempt_nomore
+0x2700  check_attempt_sniff
+0x2706  check_attempt_sniff_restore_sco
+0x2709  check_attempt_sco_master
+0x270f  check_attempt_not_sco
+0x2718  check_attempt_notimeout
+0x271c  sniff_check_window
+0x2725  check_esco_amaddr
+0x2728  parse_l2cap
+0x272a  parse_l2cap_cont
+0x273b  parse_l2cap_release_buff1
+0x2741  parse_l2cap_release_buff2
+0x2747  l2cap_buff1_inuse
+0x274b  l2cap_buff2_inuse
+0x274f  slave_send_access
+0x2757  slave_conn_send_packet
+0x2761  slave_conn_send_access
+0x2762  transmit_packet
+0x2766  transmit_packet_whitened
+0x278c  transmit_hev
+0x2792  transmit_ev_loop
+0x2797  transmit_fhs
+0x27b4  transmit_lmp
+0x27bc  transmit_lmp_loop
+0x27c2  transmit_lmp_finish
+0x27c5  transmit_dm1
+0x27c7  transmit_dm5
+0x27ca  transmit_3dh1
+0x27cb  transmit_dh1
+0x27cd  transmit_dh5
+0x27d0  transmit_dmh
+0x27df  transmit_edr3m
+0x27e3  transmit_edr_sync_end
+0x27e5  transmit_noedr
+0x27ef  transmit_long
+0x27f0  transmit_stuff
+0x27f4  transmit_stuff_loop
+0x27f7  transmit_end
+0x2800  transmit_loopback
+0x2802  transmit_loopback_short
+0x2808  transmit_loopback_long
+0x280d  transmit_loopback_cont
+0x280e  transmit_loopback_loop
+0x2814  transmit_loopback_end
+0x2818  apply_switch_clke
+0x281e  apply_switch_nozero
+0x2821  apply_switch_loop
+0x2825  apply_switch_bt
+0x2826  apply_switch_wait_loop
+0x282d  calc_slot_offset
+0x2837  calc_bt_portion
+0x2839  calc_slot_offset_loop
+0x283b  calc_skip_bt
+0x2841  calc_clke_offset
+0x284c  calc_clke_pos
+0x2850  calc_clke
+0x2854  calc_clke2
+0x285c  calc_clke_pos2
+0x285e  calc_clke_pos_adj
+0x2860  calc_radio_freq
+0x2869  freq_not_connection
+0x286a  do_hop_mod_now
+0x2872  odd_half
+0x2874  freq_result
+0x2877  afh_process_0
+0x2885  afh_process_con
+0x2892  afh_process_1
+0x289e  afh_process_end
+0x28a1  afh_same_channel
+0x28a4  afh_clear
+0x28a9  afh_process_freq_map
+0x28b0  process_freq_3
+0x28b5  process_freq_1
+0x28b9  process_freq_0
+0x28c2  process_freq_2
+0x28cc  rx_radio_freq
+0x28d1  rx_radio_freq_now
+0x28d2  tx_radio_freq
+0x28d7  tx_radio_freq_now
+0x28d8  fetch_giac
+0x28dc  fetch_page_bt_adr
+0x28e2  fetch_self_bt_adr
+0x28ea  fetch_extm_bt_adr
+0x28f2  fetch_diac
+0x28f5  fetch_diac_do
+0x28f9  shutdown_radio
+0x2908  shutdown_radio_0db
+0x290a  shutdown_radio0
+0x2915  shutdown_radio_3db
+0x2918  set_sync_on
+0x291f  set_freq_rx
+0x2924  rf_rx_enable
+0x292d  set_freq_tx_offset
+0x292f  set_freq_tx_0m_offset
+0x2931  set_freq_tx_2m_offset
+0x2933  set_freq_tx
+0x2939  txon
+0x2944  txon_power_select
+0x294b  set_tx_power_0db
+0x294f  set_tx_power_3db
+0x2953  set_tx_power_5db
+0x2957  set_tx_power_f3db
+0x295b  set_tx_power_f5db
+0x295f  set_tx_power_pair
+0x2965  txon_common
+0x296c  initialize_radio
+0x296d  initialize_radio_wait
+0x2971  initialize_radio_loop
+0x2977  initialize_radio_cont
+0x2981  rf_write_freq
+0x2998  do_rccal
+0x29a3  do_rccal_loop
+0x29a6  do_rccal_end
+0x29ab  set_rccal
+0x29bb  save_rssi
+0x29c0  bcd
+0x29c9  switchto_dpllclk
+0x29e7  xtal_fast_wake
+0x29e9  init_lpm_ctrl
+0x29eb  start_receiver
+0x29f1  prep_crypt
+0x29ff  wait_access_end
+0x2a07  wait_access_mhalfbnd
+0x2a08  wait_access_mhalfbnd_correlate
+0x2a0d  wait_access_clkn_rt
+0x2a14  wait_access_forever
+0x2a1c  reserve_slot
+0x2a24  ahead_window
+0x2a33  setup_clk
+0x2a36  skip_setup_clke
+0x2a38  setup_clkn
+0x2a3a  skip_setup_clkn
+0x2a3b  setup_clknbt
+0x2a3e  setup_complete
+0x2a47  setup_clk11
+0x2a4a  rf_setup_time
+0x2a4d  rf_setup_time_slave_slot
+0x2a4f  rf_setup_time_master_slot
+0x2a51  start_transmitter
+0x2a56  start_tx_native
+0x2a5b  start_rx_native
+0x2a5f  start_tx_external
+0x2a64  send_access_word
+0x2a6b  scan_mode_whiten
+0x2a6f  get_free_amaddr
+0x2a74  get_free_amaddr_cont
+0x2a77  get_clk
+0x2a7b  get_clkbt
+0x2a7f  supervision_update
+0x2a88  supervision_flush
+0x2a8c  assert
+0x2a8e  loop
+0x2a8f  sleep
+0x2a92  sleep_loop
+0x2a96  init_param
+0x2abc  lpmstate
+0x2acc  lpmwake
+0x2adf  lpm_load_context
+0x2aef  lpm_save_context
+0x2afa  lpo_calibration
+0x2b00  lpo_cal_inited
+0x2b05  lpm_adjust_clk
+0x2b15  lpm_adjust_positive
+0x2b18  lpm_clear_counter
+0x2b1b  lpm_doze
+0x2b1f  lpm_hibernate
+0x2b23  lpm_hibernate_normal
+0x2b2a  lpm_sleep
+0x2b3c  lpm_enter_sleep
+0x2b41  lpm_recover_clk
+0x2b4a  lpm_recover_xtal
+0x2b4c  lpm_recover_timeout
+0x2b6a  lpm_dispatch
+0x2b74  lpm_dispatch_next
+0x2b7f  lpm_dispatch_next2
+0x2b93  lpm_dispatch_sleep
+0x2b94  lpm_dispatch_lpo
+0x2b9d  lpm_dispatch_unconn
+0x2ba5  lpm_unconn_nossp
+0x2baa  lpm_unconn_cont
+0x2bac  lpm_sleep_btclk
+0x2bb1  lpm_set_mult
+0x2bc0  lpm_mult_wait_timeout
+0x2bc7  classic_bt_set_mult_short_flag
+0x2bc9  classic_bt_clr_mult_short_flag
+0x2bcb  lpm_match
+0x2bd0  lpm_not_match
+0x2bd6  lpm_lost
+0x2bde  lpm_mult_short
+0x2be2  lpm_mult_long
+0x2be5  lpm_cal_xtal_startup
+0x2bfd  lpm_cal_xtal_startup_by_snooze
+0x2c18  lpm_write_config
+0x2c21  lpm_write_ctrl
+0x2c23  lpm_write_ctrl2
+0x2c24  lpm_write
+0x2c29  lpm_write_gpio_wakeup
+0x2c32  lpm_get_wake_lock
+0x2c36  lpm_put_wake_lock
+0x2c3a  lpm_check_wake_lock
+0x2c5b  lpm_uart_wake_lock
+0x2c60  lpm_shut_down
+0x2c65  lpm_disable_exen_output
+0x2c69  check_bt_disabled
+0x2c6c  check_ble_disabled
+0x2c6f  check_module_disabled
+0x2c72  g24_dispatch
+0x2c7a  g24_head_ptr2regc
+0x2c7d  g24_receive_process_init
+0x2c7f  g24_receive_process
+0x2c83  g24_pair_init
+0x2c8a  g24_ch
+0x2c90  g24_ch_temp_incre_size4
+0x2c94  g24_ch_calc
+0x2c9d  g24_set_device_addr
+0x2ca9  g24_transmit_rf_sta_init
+0x2cac  g24_transmit_rf_ctrl_clear
+0x2caf  g24_hop_ch_enable
+0x2cb3  g24_transmit_hop_pac_fail
+0x2cb7  g24_transmit_hop_pac_fail_wo_hop
+0x2cb8  g24_transmit_hop_pac_fail_stage1
+0x2cbc  g24_transmit_hop_pac_fail_hop_stage2
+0x2cbe  g24_transmit_pac_fail_hop_stage3
+0x2cc8  g24_rf_hop_attemp_again
+0x2cca  g24_rf_hop_fastly
+0x2cd2  g24_rf_hop_fastly_exit
+0x2cd4  g24_set0_mem_hop_fastly_cnt
+0x2cd5  g24_store_mem_hop_fastly_cnt
+0x2cd7  g24_transmit_hop_pac_succ_wo_hop
+0x2cd8  g24_transmit_hop_pac_succ
+0x2cdb  g24_transmit_succ_rf_config
+0x2ce4  g24_rf_sta_check
+0x2ce9  g24_rf_laststa_synccnt_check
+0x2cf4  g24_rf_sync_cnt_check
+0x2cfd  g24_store_mem_rf_work_stage
+0x2cff  g24_rf_hop_attemp
+0x2d04  g24_set2_mem_max_retry
+0x2d06  g24_transmit_process
+0x2d0f  g24_transmit_without_int
+0x2d14  g24_transmit_start
+0x2d16  g24_transmit_exit
+0x2d18  g24_timer_timeout
+0x2d1b  g24_interval_calibrate
+0x2d23  g24_interval_max
+0x2d25  g24_interval_update
+0x2d27  g24_interval_min
+0x2d2c  g24_txdata_prep
+0x2d33  g24_txdata_enable_tx
+0x2d34  g24_store_mem_ensure
+0x2d36  g24_txdata_last_pac
+0x2d3a  g24_package_data
+0x2d4c  g24_put_data_in_buff
+0x2d53  g24_transmit_prep
+0x2d6b  g24_send_abort_packet
+0x2d77  g24_put_data_in_buff_pre
+0x2d7d  g24_enter_lpm
+0x2d80  g24_enter_lpm_prepare
+0x2d83  g24_lpm_long_sleep
+0x2d8f  g24_transmit_packet
+0x2d92  g24_transmit_loop
+0x2d97  g24_transmit_next_packet
+0x2d9f  g24_transmit_abandon
+0x2da4  g24_transmit_receive_ack
+0x2dac  g24_transmit_no_ack
+0x2dae  g24_retransmit
+0x2dcc  g24_tx_paring_retry
+0x2dd2  g24_tx_attempt_fail
+0x2dd4  g24_stop_24g_mode
+0x2dd6  g24_ackpayload_parse
+0x2dde  g24_read_len_pid_crc
+0x2dee  g24_prep
+0x2df3  g24_set_freq_tx
+0x2df7  g24_transmit
+0x2e06  g24tr_loop
+0x2e11  g24_receive_packet
+0x2e17  g24_receive_rxon
+0x2e33  g24_receive_skip
+0x2e39  g24rx_loop
+0x2e3d  g24rx_nopayload
+0x2e45  g24_end_of_packet
+0x2e4d  g24_sync_timeout
+0x2e4f  rssi_noise
+0x2e56  g24_contw_istoret_1byte
+0x2e58  rssi_noise_store
+0x2e5a  rssi_store
+0x2e62  rssi_average
+0x2e64  rssi_average_loop
+0x2e69  g24_power_ctrl_init
+0x2e6d  g24_power_ctrl_reinit
+0x2e71  g24_power_ctrl_pac_incrs
+0x2e73  g24_store_mem_power_ctrl_pac
+0x2e75  g24_power_ctrl_ack_incrs
+0x2e7a  g24_power_ctrl
+0x2e8d  g24_power_ctrl_incrs
+0x2e93  g24_power_ctrl_incrs_level2
+0x2e99  g24_power_ctrl_decrs
+0x2e9f  g24_power_ctrl_incrs_level1
+0x2ea4  g24_iadd_offset_mem_txpower
+0x2ea5  g24_ifetch_rega_store_mem_txpower
+0x2ea7  g24_power_ctrl_decrs_level0
+0x2ead  g24_start_pairing_sm1
+0x2eaf  g24_set_pairing_sm_1
+0x2eb1  g24_pairing_sm
+0x2eb9  g24_pairing_sm_1
+0x2ebd  g24_pairing_sm_2
+0x2ec1  g24_pairing_sm_3
+0x2ec4  g24_pairing_sm_common
+0x2ec9  g24_put_pairing_data_in_buff
+0x2ed0  g24_paring_mode
+0x2ed6  g24_pairing_sm_1_waiting_ack
+0x2ed9  g24_pairing_sm_2_waiting_ack
+0x2edc  g24_pairing_sm_3_waiting_ack
+0x2ee4  g24_auto_pair_start
+0x2ee7  g24_auto_pair_restart
+0x2ee8  g24_auto_pair_start_loop
+0x2efa  g24_auto_pair_retry
+0x2f04  g24_fetch_mem_auto_paring_switch
+0x2f06  g24_store_mem_auto_paring_switch
+0x2f08  g24_auto_pair_set_device_info
+0x2f0c  g24_auto_pair_device_attemp
+0x2f0e  g24_auto_pair_pair_attemp
+0x2f10  g24_start_24g_mode
+0x2f16  g24_tx_attemp_dongle_loop
+0x2f1c  g24_tx_attemp_dongle_succ
+0x2f20  g24_app_tx_attempt_success
+0x2f22  g24_tx_attemp_data_prep
+0x2f27  g24_attemp_txdata_retry
+0x2f2c  g24_check_51cmd_start_24g
+0x2f30  dongle_init
+0x2f3d  g24_receive_init
+0x2f41  dongle_all_powerful
+0x2f42  dongle_all_powerful_loop
+0x2f45  dongle_pc_bind
+0x2f47  dongle_pc_bind_loop
+0x2f4c  dongle_check_mode
+0x2f4f  g24_dongle_work_mode
+0x2f51  g24_dongle_work_mode_start
+0x2f55  g24_dongle_work_init
+0x2f5e  g24_rx_interrupt_clear
+0x2f61  g24_dongle_init
+0x2f65  g24_ch_process
+0x2f81  g24_ch_update
+0x2f88  g24_ch_timer_reinit
+0x2f8d  g24_noise_rssi
+0x2f94  g24_noise_rssi_average
+0x2f96  g24_blank_data_process
+0x2f99  g24_ms_blank_data
+0x2fa0  g24_ms_blank_data_2usb
+0x2fa5  g24_kb_blank_data
+0x2fac  g24_kb_blank_data_2usb
+0x2fb1  g24_kb_mul_blank_data
+0x2fb8  g24_kb_mul_blank_data_2usb
+0x2fbd  g24_dongle_bind_mode
+0x2fc1  g24_dongle_bind_init
+0x2fcb  g24_dongle_bind_data_process
+0x2fd9  g24_dongle_bind_first_step
+0x2fdd  g24_dongle_bind_first_step_mouse
+0x2fdf  g24_dongle_bind_ms_payload_cfg
+0x2fe1  g24_dongle_bind_payload_cfg
+0x2fe8  g24_dongle_bind_first_step_keyboard
+0x2fea  g24_dongle_bind_kb_payload_cfg
+0x2fed  g24_dongle_bind_second_step
+0x2ff1  g24_dongle_bind_second_step_mouse
+0x2ff6  g24_dongle_ms_bind_step_set2
+0x2ff7  g24_store_mem_ms_bind_step
+0x2ff9  g24_dongle_bind_second_step_keyboard
+0x2ffe  g24_dongle_kb_bind_step_set2
+0x2fff  g24_store_mem_kb_bind_step
+0x3001  g24_dongle_bind_third_step
+0x3005  g24_dongle_bind_third_step_mouse
+0x3009  g24_dongle_ms_bind_step_success
+0x300c  g24_dongle_bind_exit
+0x3011  g24_dongle_bind_third_step_keyboard
+0x3015  g24_dongle_kb_bind_step_success
+0x3019  dongle_usb_dispatch
+0x302a  usb0_data_ready_report_set0
+0x302c  dongle_dispose_cmd_bind
+0x3031  dongle_dispose_cmd_get_bind
+0x3034  dongle_dispose_cmd_exit_bind
+0x3039  dongle_dispose_in_bind_mode
+0x303b  dongle_dispose_cmd_mode
+0x303e  dongle_enter_bind_mode
+0x303f  usb0_data_ready_report_set1
+0x3041  dongle_dispose_cmd_current_project
+0x3043  dongle_dispose_cmd_current_mode
+0x3047  dongle_dispose_in_work_mode
+0x3049  dongle_dispose_cmd_current_fw_version
+0x304d  dongle_dispose_cmd_user_defined
+0x3055  dongle_auto_bind
+0x3057  dongle_auto_bind_loop
+0x305a  g24_dongle_work_mode_auto
+0x305e  g24_dongle_bind_mode_auto
+0x3067  g24_timer_init
+0x306a  g24_timer_check
+0x307d  g24_mode_switch_init
+0x3084  g24_mode_switch
+0x3090  g24_bind_mode_enable
+0x3093  g24_enable_nodata_timer
+0x3095  g24_enable_nodata_timer_init
+0x3098  g24_rx_nodata_process
+0x30a2  g24_dongle_search_mode_auto
+0x30bc  g24_dongle_search_addr_check
+0x30be  g24_fetch_mem_addr_isub_temp
+0x30c1  g24_dg_ch_num_reinit
+0x30c3  g24_current_ch_num_reinit
+0x30c5  g24_kb_ch_num_reinit
+0x30c8  g24_ms_ch_num_reinit
+0x30cb  g24_dongle_search_mode_init
+0x30e0  g24_rx_auto_addr_ch_search
+0x30ea  g24_rx_auto_bind_config_mouse
+0x3106  g24_store_mem_ms_last_ch
+0x3108  g24_ms_config_ch_once
+0x310e  g24_rx_auto_bind_config_kb
+0x312a  g24_store_mem_kb_last_ch
+0x312c  g24_kb_config_ch_once
+0x3132  g24_rx_auto_bind_config_dongle
+0x314a  g24_store_mem_dg_last_ch
+0x314c  g24_dg_config_ch_once
+0x314f  g24_dg_store_config_ch
+0x3152  g24_transmit_ack
+0x3159  g24tx_with_ack
+0x315c  g24tx_no_ack
+0x315d  g24_ackpayload_prep
+0x316b  g24_receive_packet_start
+0x316e  g24_receive_transmit_ack
+0x3172  g24_receive_packet_parse
+0x3188  g24_receive_packet_parse_pid_crc
+0x319e  g24_data_type1
+0x31b0  dongle_rxdata_type1
+0x31b8  g24_data_type1_usbtx_enable
+0x31b9  g24_data_type1_usbtx_enable_ep2
+0x31bd  g24_ms_enable_blank_data_forcibly
+0x31bf  g24_ms_enable_blank_data_timer
+0x31c2  g24_ms_disable_blank_data_forcibly
+0x31c3  g24_ms_disable_blank_data_timer
+0x31c6  g24_data_type2
+0x31e0  g24_data_type2_reverse_data
+0x31e4  g24_kb_enable_blank_data_forcibly
+0x31e6  g24_kb_enable_blank_data_timer
+0x31e9  g24_kb_disable_blank_data_forcibly
+0x31ea  g24_kb_disable_blank_data_timer
+0x31ed  g24_kb_data_into_ep1_fifo
+0x31f2  g24_data_type3
+0x3207  g24_kb_mul_data_into_ep2_fifo
+0x3209  g24_kb_mul_enable_blank_data_forcibly
+0x320b  g24_kb_mul_enable_blank_data_timer
+0x320e  g24_kb_mul_disable_blank_data_forcibly
+0x320f  g24_kb_mul_disable_blank_data_timer
+0x3212  g24_data_attemp
+0x3216  g24_data_attemp_mouse
+0x321b  g24_data_attemp_kbd
+0x3220  g24_store_mem_24g_mode
+0x3224  g24_fetch_mem_device_addr
+0x3227  g24_store_mem_device_addr
+0x322a  g24_fetch_mem_addr
+0x322c  g24_store_mem_addr
+0x322d  g24_contw_istore_4byte
+0x322f  g24_store_mem_ch
+0x3231  g24_set0_mem_pid
+0x3232  g24_store_mem_pid
+0x3235  g24_store_mem_txpayload
+0x3237  g24_set4_mem_max_retry
+0x3238  g24_store_mem_max_retry
+0x323a  g24_fetch_mem_data_type
+0x323c  g24_store_mem_data_type
+0x323e  g24_set2_mem_sync_cnt
+0x323f  g24_store_mem_sync_cnt
+0x3241  g24_set1_mem_rf_last_sta
+0x3242  g24_store_mem_rf_last_sta
+0x3245  g24_fetch_mem_hop_pac
+0x3248  g24_set1_mem_hop_pac
+0x3249  g24_store_mem_hop_pac
+0x324c  g24_fetch_mem_abort_pac
+0x324f  g24_set1_mem_abort_pac
+0x3250  g24_store_mem_abort_pac
+0x3253  g24_fetch_mem_pairing_sm
+0x3256  g24_store_mem_pairing_sm
+0x3258  g24_fetch_mem_rf_hop_ch
+0x325a  g24_set0_mem_rf_hop_ch
+0x325b  g24_store_mem_rf_hop_ch
+0x325d  g24_fetch_mem_rf_work_stage
+0x325f  g24_fetch_mem_rxbuf_add1
+0x3261  g24_fetch_mem_check_dongle_times
+0x3263  g24_set0_mem_check_dongle_times
+0x3264  g24_store_mem_check_dongle_times
+0x3267  g24_store_mem_tx_power
+0x326a  g24_store_mem_txpower
+0x326c  g24_store_mem_tx_power_temp
+0x3270  g24_fetch_mem_power_ctrl_pac
+0x3272  g24_store_mem_power_ctrl_level
+0x3274  g24_fetcht_mem_rxdata_temp
+0x3275  g24_set_rega_ifetcht_1byte
+0x3278  g24_fetch_mem_rf_laststa
+0x327a  g24_set0_mem_rf_laststa
+0x327b  g24_store_mem_rf_laststa
+0x327d  g24_fetch_mem_rx_addr
+0x327e  g24_set_rega_ifetch_4byte
+0x327f  g24_rega_ifetch_4byte
+0x3281  g24_fetch_mem_time_slice
+0x3283  g24_set0_mem_time_slice
+0x3284  g24_store_mem_time_slice
+0x3286  g24_set0_mem_mode_switch
+0x3287  g24_store_mem_mode_switch
+0x3289  g24_store_mem_bind_payload
+0x328b  g24_fetch_mem_bind_device_status
+0x328d  g24_store_mem_bind_device_status
+0x328f  g24_fetch_mem_dongle_work_mode
+0x3291  g24_set_work_mem_dongle_work_mode
+0x3292  g24_store_mem_dongle_work_mode
+0x3294  g24_fetch_mem_dongle_mode_init
+0x3296  g24_set0_mem_dongle_mode_init
+0x3297  g24_store_mem_dongle_mode_init
+0x3299  g24_set0_mem_ackpayload_enable
+0x329a  g24_store_mem_ackpayload_enable
+0x329c  g24_set1_mem_ackpayload_enable
+0x329e  g24_fetch_mem_rxdata_temp_add3_7byte
+0x32a2  g24_fetch_mem_nodata_timer_enable
+0x32a4  g24_set0_mem_nodata_timer_enable
+0x32a5  g24_store_mem_nodata_timer_enable
+0x32a7  g24_set0_mem_ms_blank_data_enable
+0x32a8  g24_store_mem_ms_blank_data_enable
+0x32aa  g24_set0_mem_kb_blank_data_enable
+0x32ab  g24_store_mem_kb_blank_data_enable
+0x32ad  g24_set0_mem_kb_mul_blank_data_enable
+0x32ae  g24_store_mem_kb_mul_blank_data_enable
+0x32b0  g24_store_mem_power_ctrl_threshold_up
+0x32b2  g24_store_mem_power_ctrl_threshold_down
+0x32b3  g24_set_contw_with_regb_store_1byte
+0x32b4  g24_contw_istore_1byte
+0x32b6  g24_fetch_mem_pair_mode
+0x32b8  g24_store_mem_pair_mode
+0x32ba  g24_store_mem_pair_txpower
+0x32bd  g24_fetch_mem_rxdata_temp_add3_1byte
+0x32bf  g24_set_contw_with_temp
+0x32c4  g24_set_contw_with_temp_store_3byte
+0x32c5  g24_contw_istore_3byte
+0x32c7  g24_set_contw_with_regb
+0x32c8  g24_set_contw_with_regb2
+0x32cd  g24_set_rega
+0x32d0  g24_set_rega_ifetch_1byte
+0x32d1  g24_rega_ifetch_1byte
+0x32d3  g24_set_rega_ifetcht_4byte
+0x32d6  g24_mem_set0
+0x32d8  app_init
+0x32e3  app_lpm_init
+0x32ec  app_lpm_init0
+0x32ed  app_process_idle
+0x32f2  app_process_bt
+0x32f4  app_process_ble
+0x32f6  app_process_bb_event
+0x32fd  app_discard_event
+0x32ff  app_event_normal_process
+0x3311  app_evt_bt_conn
+0x3318  app_event_switch_success
+0x331a  app_event_switch_fail_master
+0x3324  app_process_bb_event_priority
+0x3326  app_check_wake_lock
+0x3328  app_will_enter_lpm
+0x332a  app_event_linkkey_generate
+0x332e  app_event_reconn_start
+0x3335  app_evt_setup_complete
+0x333c  app_evt_hid_handshake
+0x3340  app_event_enter_sniff
+0x3347  app_event_exit_sniff
+0x334b  app_le_event_bb_connected
+0x334f  app_le_event_bb_disconn
+0x3353  app_bb_event_hid_connected
+0x3357  app_evt_button_long_pressed
+0x335b  app_event_ml2cap_conn_refused
+0x335f  app_evt_timer
+0x3361  app_evt_100ms_loop
+0x336d  timer_single_step
+0x3374  timer_single_step_2b
+0x337b  app_power_timer
+0x337f  app_power_timer_timeout
+0x3381  app_enter_power_off_state
+0x3382  app_enter_power_stanby_state
+0x3385  app_power_cb_common
+0x3387  app_unsniff_delay_timer
+0x338a  app_unsniff_delay_timeout
+0x338d  app_discovery_timer
+0x3390  app_discovery_timeout
+0x3394  app_bb_event_reconn_failed
+0x3395  app_clear_reconnect_flag
+0x3399  app_bb_event_bb_disconn
+0x339e  app_bb_event_bb_reconn_disconn
+0x33a7  app_bb_hibernate
+0x33a9  app_disconn_reason_clear
+0x33ac  app_disconn_reason_flag_clear
+0x33af  app_disconn_reason_collect_bt
+0x33b4  app_disconn_reason_collect_ble
+0x33ba  app_check_sniff
+0x33bd  app_initflag_store
+0x33be  app_flag_store
+0x33c4  app_initflag_check
+0x33cd  app_start_auto_sniff
+0x33d0  app_get_lpm_wake_lock
+0x33d2  app_put_lpm_wake_lock
+0x33d4  app_lpm_wake_auto_lock
+0x33d6  app_lpm_wake_auto_lock_timer
+0x33d9  app_l2cap_flow_control_enable
+0x33db  app_l2cap_flow_control_disable
+0x33dd  app_bt_set_pincode
+0x33df  app_bt_role_switch
+0x33e1  app_bt_start_reconnect
+0x33e7  app_bt_reconnect_cancel
+0x33e9  app_bt_disconnect
+0x33eb  app_bt_start_discovery_short
+0x33ed  app_bt_start_discovery_led_blink
+0x33ee  app_bt_start_discovery
+0x33f0  app_bt_stop_discovery
+0x33f4  app_ble_start_direct_adv
+0x33f6  app_ble_stop_direct_adv
+0x33f8  app_ble_stop_adv
+0x33fa  app_ble_start_adv
+0x33fc  app_ble_start_scan
+0x33fe  app_ble_stop_scan
+0x3400  app_ble_start_conn
+0x3402  app_ble_disconnect
+0x3404  app_led_start_blink
+0x3406  app_led_on
+0x3408  app_led_off
+0x340a  app_enter_hibernate
+0x340c  app_bt_sniff_exit
+0x340e  app_bt_enter_sniff
+0x3410  app_ble_store_reconn_info
+0x3412  app_bt_store_reconn_info
+0x3414  app_store_reconn_info
+0x3416  app_lpm_mult_enable
+0x3418  app_lpm_mult_disable
+0x341a  app_button_long_pressed
+0x341c  app_power_starting
+0x3420  app_power_common
+0x3424  app_power_shutting_down
+0x3429  app_power_off_end
+0x342d  app_got_power_state_common
+0x3431  app_event_button_up
+0x3434  app_power_release
+0x3436  antilost_init
+0x3463  antilost_le_before_hibernate
+0x3465  antilost_le_notification
+0x346c  antilost_power_standby_cb
+0x3470  antilost_lpm_lock_process
+0x3479  antilost_lpm_ctrl_for_led_buzzer
+0x347e  antilost_bb_event_process
+0x3485  antilost_le_conn_param_update_rsp_recieved
+0x3487  antilost_le_conn_param_accepted
+0x3489  antilost_le_conn_param_updata_procedure_sucsess
+0x348c  antilost_le_conn_param_rejected
+0x348e  antilost_conn_param_retransimiting
+0x34a0  antilost_conn_param_updata_procedure_faild
+0x34a2  antilost_master_nonsupport_latency
+0x34b2  antilost_le_bb_event_timer
+0x34b9  antilost_double_click_timer
+0x34bc  antilost_double_click_timeout
+0x34be  antilost_le_fast_adv_timer
+0x34c1  antilost_le_fast_adv_timeout
+0x34c4  antilost_conn_update_timer
+0x34c7  antilost_conn_update_timer_time_out
+0x34ca  antilost_app_updata_le_param_timer
+0x34cd  antilost_app_updata_le_param_timeout
+0x34d3  antilost_wait_for_updata_param_instant_expire
+0x34d5  antilost_le_sleep_timer
+0x34d8  antilost_le_sleep_timer_timeout
+0x34d9  antilost_adc_check_timer
+0x34dc  antilost_adc_check_timer_timeout
+0x34df  antilost_le_process_conn
+0x34e8  antilost_le_process_discon
+0x34f4  antilost_le_conn_process
+0x34f5  antilost_idle_process
+0x34f8  antilost_power_starting_cb
+0x34fb  antilost_power_common
+0x34fc  antilost_power_off_cb
+0x3501  antilost_le_receive_data_process
+0x3504  antilost_le_parse_att_write_request
+0x3508  antilost_key_process
+0x350b  antilost_key_up_down
+0x350d  antilost_key_is_down
+0x3510  antilost_key_is_up
+0x3513  antilost_key0_down
+0x351b  antilost_key0_up
+0x351d  antilost_double_click_timer_init
+0x3521  antilost_butten_down_after_conn
+0x3527  antilost_click_once
+0x352b  antilost_click_twice
+0x3532  antilost_butten_down_while_disconn
+0x3536  antilost_cmd_parse_for_application
+0x353c  antilost_on_of_alram
+0x3540  antilost_configuration_for_alram
+0x3544  antilost_prepare_data_and_send
+0x3551  antilost_alert_on
+0x355c  antilost_alert_off
+0x3564  antilost_set_start_alarm_after_disconn
+0x3569  antilost_set_no_alarm_after_disconn
+0x356e  antilost_on_off_alarm_after_disconn
+0x3571  antilost_notify_alarm_config_first_time
+0x3582  antilost_buzzer_configuration
+0x3584  antilost_led_configuration
+0x3585  antilost_configuration_common
+0x3586  antilost_led_buzzer_stop_blink
+0x358c  antilost_led_buzzer_style_configuration
+0x358f  antilost_fast_adv_start
+0x3591  antilost_adv_start_common
+0x3596  antilost_adv_interval_lpm_interval_set
+0x359b  antilost_buzzer_pwm_init
+0x35a2  antilost_led_on_cb
+0x35a4  antilost_led_off_cb
+0x35a6  antilost_buzzer_off
+0x35a9  antilost_buzzer_on
+0x35ad  antilost_adc_init
+0x35af  antilost_battery_process
+0x35b9  antilost_battery_calculate_end
+0x35bc  antilost_full_battery
+0x35be  antilost_low_battery
+0x35bf  car_init
+0x35e6  car_soft_switch_power_on_init
+0x35ed  car_power_off_signal
+0x35ee  car_hard_switch_power_on_signal
+0x35ef  car_soft_switch_power_on_signal
+0x35f5  car_le_modified_name_adv
+0x35f7  car_name_loop
+0x3604  car_le_modified_name_scan
+0x3609  car_hex_to_ascii
+0x360d  car_hex_num
+0x360f  car_ui_led_init
+0x3611  car_ui_led_init_1
+0x3613  car_ui_led_init_2
+0x3615  car_ui_led_init_3
+0x3619  car_in_lp1
+0x361f  car_in_lp1_end
+0x3620  car_ui_led_init_end
+0x3621  car_blood_led_gpio_set
+0x3624  car_pairing_led_gpio_set
+0x3626  car_low_voltage_led_gpio_set
+0x3628  car_init_environment
+0x362d  car_init_adc_hvin
+0x3631  car_le_before_hibernate
+0x3633  car_le_process_lpm_before
+0x3634  car_key_scan_process
+0x3635  car_scale_process_idle
+0x3639  car_g24_status_process
+0x363e  car_g24_connected_event
+0x3642  car_le_send_packet
+0x364b  car_scale_process_bb_event
+0x3651  car_scale_event_le_conn
+0x3654  car_g24_connected
+0x3656  car_scale_process_conn
+0x365c  car_scale_process_conn_next
+0x365e  car_pairing_led_conn_status_setting
+0x3660  car_scale_event_le_discon
+0x3662  car_g24_disconnect
+0x367a  car_le_bb_event_timer
+0x3683  car_ir_breakdown_timer
+0x3686  car_ir_breakdown_timeout
+0x368a  car_24g_no_data_timeout_timer
+0x368d  car_24g_no_data_timer_timeout
+0x368f  car_attack_shake_timer
+0x3692  car_attack_shake
+0x369a  car_attack_shake_front_battle_car
+0x369b  car_attack_shake_front_battle_tank
+0x369e  car_attack_shake_stop
+0x36a1  car_notify_vdd_timer
+0x36a8  car_notify_vdd
+0x36ac  car_read_hvin
+0x36b6  car_notify_vdd_next2
+0x36c1  car_enter_low_bat
+0x36c6  car_low_bat_led_off
+0x36c8  car_led_control_timer
+0x36cb  car_led_control
+0x36d0  car_led_control_set
+0x36d3  car_led_control_timer_next
+0x36d9  car_led_control_timer_next_2
+0x36de  car_led_switch
+0x36e3  car_led_control_off
+0x36e6  car_led_control_on
+0x36e9  car_led_control_blink
+0x36ec  car_led_control_blink_on
+0x36ee  car_led_control_blink_off
+0x36f0  calc_check_sum_start
+0x36f1  calc_check_sum_loop
+0x36f4  calc_check_sum_and
+0x36f6  car_le_receive_data
+0x36f9  car_le_parse_att_write_request
+0x36fc  le_app_receive_data
+0x3710  car_control_le_receive
+0x3718  car_receive_cmd_select
+0x3722  car_24g_receive_data
+0x372e  car_24g_receive_data_next
+0x3735  car_moto1_enable_blank_data_timer
+0x3737  car_moto2_enable_blank_data_timer
+0x3739  car_moto3_enable_blank_data_timer
+0x373b  car_moto1_blank_data_timer
+0x373e  car_moto2_blank_data_timer
+0x3741  car_moto3_blank_data_timer
+0x3744  car_moto1_blank_data
+0x3746  car_moto2_blank_data
+0x3748  car_moto3_blank_data
+0x374a  car_drive_old
+0x374c  car_left_right_control_old
+0x374f  car_front_back_control_old
+0x3754  car_reset_old_speed
+0x3758  car_reset_old_speed2
+0x375a  car_reset_old_speed3
+0x375c  car_speed_set_old
+0x3762  car_motor_control
+0x3770  car_motor1_control
+0x3773  car_motor2_control
+0x3776  car_motor3_control
+0x3779  car_motor_working_flag
+0x377b  car_motor_status_select
+0x3780  car_motor_positive
+0x3782  car_motor_negative
+0x3787  car_motor_stop
+0x378c  car_motor_work
+0x3790  car_motor_select_negative
+0x3793  car_motor_work_next
+0x379a  car_motor_select_positive
+0x379e  car_motor_speed_duty_setting
+0x37a1  car_motor_speed_duty_transform
+0x37aa  car_ir_init
+0x37b1  car_ir_data_rx_from_app
+0x37b9  car_ir_data_tx
+0x37c2  car_ir_send_loop
+0x37c9  car_ir_is_bit1
+0x37cc  car_ir_wait_finish
+0x37d8  car_attack_shake_back_battle_car
+0x37d9  car_attack_shake_back_battle_tank
+0x37dc  car_ir_enable
+0x37e0  car_ir_disable
+0x37e4  car_ir_rx_init
+0x37ee  car_ir_receive_process
+0x37f6  car_ir_receive_process_next
+0x37fe  car_ir_packet_head_wait_end
+0x3805  car_ir_receive_process_loop
+0x380d  car_ir_get_bit0
+0x3812  car_ir_get_bit1
+0x3816  car_ir_get_bit1_wait_low_end
+0x381b  car_ir_receive_process_end
+0x3821  car_ir_data_notify
+0x3827  car_ir_24g_receive_attack
+0x382f  car_ir_24g_receive_attack_off
+0x3838  car_ir_24g_receive_attack_blink
+0x383d  car_ir_24g_go_die
+0x383f  car_ir_clk_get
+0x3842  car_ir_clk_check
+0x3847  car_ir_gpio_get_status
+0x3849  car_led_control_receive
+0x384c  car_info_request
+0x3858  light_init
+0x3860  light_pairing_timer
+0x3867  light_init_crr_cmd_count
+0x386d  light_load_controler_list
+0x3871  light_find_controler_pairing
+0x3876  light_find_controler_pairing_loop
+0x3879  light_find_single_pairing_diff
+0x387c  light_compare_addr_record
+0x3881  light_compare_single_record
+0x388d  light_find_controler_cmd
+0x3893  light_find_controler_cmd_loop
+0x3898  light_recv_adv
+0x389c  light_anylize_command
+0x38a8  light_parse_cmd
+0x38b7  light_parse_cmd_loop
+0x38c2  light_parse_cmd_pwm0
+0x38c6  light_parse_cmd_pwm_common
+0x38cf  light_parse_cmd_pwm1
+0x38d4  light_parse_cmd_pwm2
+0x38d9  light_parse_cmd_pwm3
+0x38de  light_parse_cmd_pwm4
+0x38e3  light_parse_cmd_pwm5
+0x38e8  light_parse_auto_mode
+0x38ea  light_parse_pairing
+0x38ee  light_parse_pairing_abandon
+0x38f0  update_controler_list
+0x38fe  update_conrtoler_list_found
+0x3903  update_conrtoler_store_list
+0x3907  lightc_init
+0x390a  lightc_dispatch
+0x3918  lightc_adv
+0x391d  lightc_start_adv
+0x392a  module_init
+0x3945  module_lpm_uart_init
+0x3962  module_lpm_init
+0x3964  module_gpio_init
+0x3969  module_lpm_lock
+0x396d  module_le_conn_process
+0x396e  module_bt_conn_process
+0x3970  module_spp_enter_sniff
+0x397f  module_spp_clear_last_transmite_clock
+0x3982  module_process_idle
+0x3986  module_process_bb_event
+0x39a3  module_process_bb_event_disconned
+0x39aa  module_process_spp_connected
+0x39b1  module_spp_disconnected
+0x39b6  module_sniff_param_check
+0x39bd  module_sniff_param_check_unsniff
+0x39c2  module_process_exit_sniff
+0x39c4  module_process_setup_complete
+0x39c6  module_process_bb_even_le_disconn
+0x39c9  module_process_evt_pincode_req
+0x39ca  module_process_sniff_not_accept
+0x39cb  module_process_unsniff_accept
+0x39ce  module_process_unsniff_not_accept
+0x39cf  module_process_le_conn
+0x39d4  module_process_bb_conn
+0x39d7  module_disconn_start
+0x39d9  module_process_ble_ltk_lost
+0x39db  module_set_conn_pin_high
+0x39dd  module_conn_start
+0x39df  module_stop_adv_discovery
+0x39e6  module_set_conn_pin_low
+0x39e8  module_process_with_credit
+0x39eb  module_process
+0x3a01  module_hci_in_excp
+0x3a04  module_hci_release_except
+0x3a12  module_hci_dicard_packet
+0x3a16  module_hci_dicard_bytes
+0x3a17  module_hci_cmd_control
+0x3a3f  module_hci_cmd_set_bt_addr
+0x3a44  module_hci_cmd_set_le_addr
+0x3a49  module_hci_cmd_set_visibility
+0x3a52  module_start_adv_discovery_by_command
+0x3a58  moudle_start_adv_by_command
+0x3a5f  module_hci_cmd_set_bt_name
+0x3a6b  module_hci_cmd_set_le_name
+0x3a75  module_hci_cmd_receive_spp_data
+0x3a84  module_hci_cmd_pass_init_ng_rx_len_all
+0x3a86  module_hci_cmd_spp_exit_sniff
+0x3a88  module_hci_cmd_get_current_packet_len_and_remain_len
+0x3a8e  module_hci_cmd_get_current_patcket_len
+0x3a97  module_hci_command_tx_spp_tx_complete
+0x3a9a  module_hci_cmd_receive_le_data
+0x3ab4  module_hci_cmd_receive_le_data_finish
+0x3ab7  module_hci_cmd_transmit_le_notify
+0x3acf  module_get_le_remote_mtu
+0x3ad4  module_check_ble_encrypt_state
+0x3ad7  module_hci_cmd_inquire_status
+0x3ad8  module_hci_cmd_set_pairing_mode
+0x3adf  module_hci_pairing_pincode_mode
+0x3ae2  module_hci_pairing_just_work_mode
+0x3ae3  module_hci_sspairing_mode
+0x3ae8  module_hci_pairing_passkey
+0x3aea  module_hci_pairing_numeric_comparison
+0x3aec  module_hci_cmd_set_pincode
+0x3af4  module_hci_cmd_set_uart_control_mode
+0x3afa  module_hci_cmd_set_uart_baud
+0x3b02  module_hci_cmd_set_uart_baud_ok
+0x3b06  module_hci_cmd_version_request
+0x3b0a  module_hci_event_set_cmd_send_response
+0x3b0e  module_hci_cmd_bt_disconnect
+0x3b10  module_hci_cmd_bt_disconnect_doing
+0x3b12  module_hci_cmd_ble_disconnect
+0x3b14  module_hci_cmd_ble_disconnect_doing
+0x3b16  module_hci_cmd_set_nvram
+0x3b1d  module_hci_cmd_confirm_gkey
+0x3b28  dhkey_not_accept
+0x3b2b  module_hci_cmd_spp_number_comparison_result_is1
+0x3b2d  module_hci_cmd_set_credit_given
+0x3b36  module_hci_cmd_auto_adv
+0x3b3c  module_hci_cmd_auto_adv_loop
+0x3b46  module_hci_cmd_auto_adv_store_adv
+0x3b50  module_hci_cmd_auto_adv_store_scan
+0x3b59  module_hci_cmd_auto_adv_store_common
+0x3b64  module_hci_cmd_auto_adv_adv_analys
+0x3b69  module_hci_cmd_power_request
+0x3b6f  module_hci_cmd_power_set
+0x3b76  module_hci_cmd_passkey_entry
+0x3b7c  module_hci_cmd_set_gpio
+0x3b82  module_set_gpio_input
+0x3b88  module_set_gpio_high_impedance
+0x3b8a  module_set_gpio_output
+0x3b90  module_hci_cmd_read_gpio
+0x3b98  module_hci_cmd_le_set_pairing_mode
+0x3ba3  module_le_set_pairing_mode_secure_justwork
+0x3ba8  module_le_set_pairing_mode_secure_numeric
+0x3bae  module_le_set_pairing_mode_secure_passkey
+0x3bb3  module_le_set_no_pairing
+0x3bb4  module_le_set_noinputnooutput
+0x3bb6  module_le_set_pairing_mode_lagacy_just_work
+0x3bb8  module_le_set_pairing_mode_lagacy_passkey
+0x3bb9  module_le_set_displayonly
+0x3bbb  module_hci_cmd_le_set_adv_data
+0x3bc4  module_hci_cmd_le_set_scan_data
+0x3bcd  module_hci_cmd_le_send_conn_update_req
+0x3bd7  module_hci_cmd_set_le_adv_parameter
+0x3bda  module_hci_cmd_le_start_pairing
+0x3be2  module_hci_cmd_set_wake_gpio
+0x3bec  module_hci_cmd_set_tx_power
+0x3bf1  module_hci_cmd_le_confirm_gkey
+0x3bf8  module_hci_cmd_le_confirm_gkey_ok
+0x3bfa  module_hci_cmd_le_confirm_gkey_fail
+0x3bfc  module_hci_cmd_set_reject_justwork_flag
+0x3c02  module_hci_cmd_reset_chip
+0x3c06  module_hci_cmd_le_set_fixed_passkey
+0x3c13  module_hci_cmd_le_set_random_passkey
+0x3c15  module_hci_test_cmde_close_lpm
+0x3c17  module_hci_event_receive_invalid_cmd
+0x3c1a  module_hci_event_receive_valid_cmd
+0x3c1d  module_hci_event_spp_connect
+0x3c1f  module_hci_event_le_connect
+0x3c21  module_hci_event_spp_disconnect
+0x3c23  module_hci_event_le_disconnect
+0x3c25  module_hci_event_set_cmd
+0x3c32  module_hci_event_receive_spp_data
+0x3c3d  module_hci_event_receive_le_data
+0x3c48  module_hci_event_enter_standby_mode
+0x3c49  module_hci_event_enter_standby_mode_len0
+0x3c4c  module_hci_event_status_res
+0x3c5d  module_hci_read_bt_status
+0x3c6a  module_hci_event_store_device
+0x3c73  module_hci_event_gkey_generate
+0x3c79  module_hci_event_invalid_packet
+0x3c82  module_hci_event_passkey_entry_mode
+0x3c84  module_hci_event_le_tk
+0x3c8a  module_hci_event_le_pairing_fail
+0x3c8c  module_hci_event_le_pairing_success
+0x3c8e  module_hci_event_bt_pairing_fail
+0x3c90  module_hci_event_bt_pairing_success
+0x3c91  module_hci_event_pairing_completed
+0x3c98  module_hci_event_pause_enc
+0x3c9a  module_hci_event_start_enc
+0x3c9b  module_hci_event_enc
+0x3ca1  module_hci_event_le_gkey
+0x3ca7  module_hci_prepare_tx
+0x3cb1  module_set_mcu_wake_pin_high_delay
+0x3cb3  module_set_mcu_wake_pin_h_delay
+0x3cb8  module_set_mcu_wake_pin_high
+0x3cba  module_check_mcu_wake_pin_high
+0x3cbc  module_set_mcu_wake_pin_low
+0x3cbe  delay
+0x3cc2  module_le_receive_data
+0x3ccf  module_le_receive_data_ok
+0x3cd1  module_exit_sniff
+0x3cd5  module_set_lpm_mult_2
+0x3cd7  module_bb_event_timer
+0x3cd8  module_read_vdd_timer
+0x3ce9  module_control_air_flow
+0x3cec  module_set_sniff_task_flag
+0x3cee  module_clear_sniff_task_flag
+0x3cf0  module_set_unsniff_task_flag
+0x3cf2  module_clear_unsniff_task_flag
+0x3cf4  module_set_le_tx_data_flag
+0x3cf6  module_clear_le_tx_data_flag
+0x3cf8  module_clr_state
+0x3cfc  module_set_state
+0x3d00  mouse_init
+0x3d0f  mouse_delay_4s
+0x3d12  mouse_delay_20ms
+0x3d16  mouse_cheak_enable_usb
+0x3d19  mouse_cb_fuction
+0x3d36  mouse_spi_init
+0x3d39  mouse_setting_config
+0x3d46  mouse_init_iic
+0x3d4e  mouse_wakeup_from_power
+0x3d53  mouse_wakeup_no_from_power
+0x3d57  mouse_start_24g_mode
+0x3d5b  le_mouse_bb_event_connect_complete
+0x3d60  mouse_le_write_enable
+0x3d62  mouse_dpi_up
+0x3d66  mouse_dpi_config
+0x3d6a  mouse_dpi_cheak
+0x3d6d  mouse_dpi_down
+0x3d79  mouse_before_store_flash_cpi
+0x3d7e  mouse_seting_dpi
+0x3d88  mouse_set_cpi2
+0x3d8a  mouse_set_cpi1
+0x3d8c  mouse_set_cpi3
+0x3d8e  mouse_set_cpi4
+0x3d90  moue_seting_cpi_count
+0x3d96  mouse_seting_3212_dpi
+0x3d9b  mouse_set_p3212_cpi2
+0x3d9d  mouse_set_p3212_cpi1
+0x3d9f  mouse_set_p3212_cpi3
+0x3da1  mouse_set_p3212_cpi4
+0x3da2  mouse_p3212_dpi
+0x3daa  mouse_seting_3610_dpi
+0x3daf  mouse_set_p3610_cpi2
+0x3db1  mouse_set_p3610_cpi1
+0x3db3  mouse_set_p3610_cpi3
+0x3db5  mouse_set_p3610_cpi4
+0x3db6  mouse_p3610_dpi
+0x3db9  mouse_reset_p3610_dpi
+0x3dbe  mouse_p3205_dpi
+0x3dc9  mouse_init_environment
+0x3dce  mouse_24g_pairing_button
+0x3de3  mouse_idle
+0x3de9  mouse_usb_isr
+0x3ded  mouse_cheak_usb
+0x3df1  mouse_usb_no_exsit
+0x3df4  mouse_usb_exsit
+0x3df7  mouse_usb_mode
+0x3e07  mouse_clkn_check
+0x3e0c  mouse_clkn_timeout
+0x3e0f  mouse_wired_to_usb
+0x3e12  mouse_data_push
+0x3e1a  mouse_enable_clock_qdecoder
+0x3e1e  mouse_param_init
+0x3e44  mouse_sensor_set_angle
+0x3e4c  mouse_select_adc
+0x3e54  mouse_adc_init
+0x3e59  mouse_adc_init_data_vinlpm
+0x3e62  mouse_adc_init_data_hvin
+0x3e6b  mouse_adc_init_data_io
+0x3e6e  mouse_gpio_init
+0x3e97  mouse_wheel_gpio_set_wake
+0x3e9f  mouse_before_hibernate_wheel_gpio_set
+0x3ea7  mouse_gpio_set_pupd_by_input
+0x3eb3  mouse_before_hibernate
+0x3ebb  mouse_process_lpm_before
+0x3ebf  mouse_lpm_before_common
+0x3ede  mouse_spi_clk_gpio
+0x3ee0  mouse_wheel_check
+0x3eee  mouse_t_wheel_scan
+0x3efe  mouse_t_wheel_scan_judge1
+0x3f02  mouse_t_wheel_scan_judge2
+0x3f06  mouse_t_wheel_scan_judge11
+0x3f08  mouse_t_wheel_scan_judge12
+0x3f0a  mouse_t_wheel_scan_judge21
+0x3f0c  mouse_t_wheel_scan_judge22
+0x3f0e  mouse_t_wheel_scan_judge3
+0x3f16  mouse_t_wheel_scan_judge30
+0x3f19  mouse_t_wheel_scan_judge31
+0x3f1c  mouse_t_wheel_scan_judge32
+0x3f1f  mouse_t_wheel_scan_judge33
+0x3f22  mouse_wheel_t_forward
+0x3f2c  mouse_wheel_t_back
+0x3f36  mouse_wheel_scan
+0x3f46  mouse_wheel_scan_judge1
+0x3f4a  mouse_wheel_scan_judge2
+0x3f4e  mouse_wheel_scan_judge11
+0x3f50  mouse_wheel_scan_judge12
+0x3f52  mouse_wheel_scan_judge21
+0x3f54  mouse_wheel_scan_judge22
+0x3f56  mouse_wheel_scan_judge3
+0x3f5e  mouse_wheel_scan_judge30
+0x3f61  mouse_wheel_scan_judge31
+0x3f64  mouse_wheel_scan_judge32
+0x3f67  mouse_wheel_scan_judge33
+0x3f6a  mouse_wheel_forward
+0x3f6f  mouse_wheel_back
+0x3f74  mouse_hid_connected
+0x3f77  mouse_send_process
+0x3f81  mouse_send_data
+0x3f8a  mouse_send_empty_data
+0x3f8d  mouse_no_data_timer_init
+0x3f90  mouse_fill_data_le
+0x3f97  mouse_motion
+0x3fa3  motion_6clk_direction_dispose
+0x3fa7  motion_12clk_direction_dispose
+0x3fab  motion_9clk_direction_dispose
+0x3fb3  motion_3clk_direction_dispose
+0x3fb5  mouse_cheak_sensor_data
+0x3fc0  mouse_clear_sensor_data
+0x3fc4  mouse_p3212_sensor_motion
+0x3fde  mouse_read_3212sensor_xy_high
+0x3fe0  mouse_p3065_judge
+0x3fe2  mouse_p32xx_sensor_motion
+0x3fe7  mouse_p32xx_sensor_motion_2
+0x3fea  mouse_p32xx_sensor_motion_1
+0x3ffa  motion32xx_6clk_direction_selection
+0x3ffc  motion32xx_9clk_direction_selection
+0x3ffe  motion32xx_12clk_direction_selection
+0x4000  motion32xx_3clk_direction_selection
+0x4002  mouse_sensor_data_swap_places
+0x4007  mouse_p3610sensor_read
+0x4010  mouse_p3610_sensor_motion
+0x402d  mouse_3610_smart_select
+0x4031  motion3610_6clk_direction_selection
+0x4033  motion3610_12clk_direction_selection
+0x4035  motion3610_9clk_direction_selection
+0x4037  motion3610_3clk_direction_selection
+0x4039  mouse_read_sensor3610_data
+0x4045  mouse_3610_smart_enable
+0x4051  mouse_3610_smart_disable
+0x405d  mouse_read_sensor_common
+0x4064  mouse_set_qdecoder_x
+0x406d  mouse_hardware_zwheel
+0x4074  mouse_hardware_zwheel_beforelpm
+0x4079  mouse_zwheel
+0x407e  mouse_t_zwheel
+0x4083  mouse_check_key_gpio
+0x408e  mouse_check_key_gpio_output
+0x4090  mouse_check_s_key_gpio
+0x4099  mouse_key
+0x40a3  mouse_24g_key
+0x40a8  mouse_set_mult
+0x40ad  mouse_set_ble_mult
+0x40b0  mouse_set_bt_mult
+0x40b3  mouse_sensor_sdio_low
+0x40be  mouse_sensor_sdio_low2
+0x40c0  mouse_spi_sdio_gpio_pollup
+0x40c2  mouse_spi1_sdio_gpio_pollup
+0x40c4  mouse_spi2_sdio_gpio_pollup
+0x40c6  mouse_init_sunt
+0x40cb  mouse_init_sensor
+0x40d1  mouse_twspi_reset
+0x40d5  mouse_init_3610sensor
+0x40d9  mouse_read_sensor_id
+0x40e0  mouse_init_p32xx_id2_judge
+0x40e6  mouse_ka8_init_param
+0x40e8  mouse_p3065xy_init_param
+0x40ea  mouse_p3065_init_param
+0x40ee  mouse_3212_init_param
+0x40f4  mouse_sensor_enable_wp
+0x40f6  mouse_sensor_disable_wp
+0x40f8  mouse_3204_3l_init_param
+0x4102  mouse_32xx_init_param
+0x411a  mouse_32xx_init_param_1
+0x4139  mouse_3205_3t_init_param
+0x4145  mouse_init_3610sensor_reset
+0x414b  mouse_init_p3610
+0x415a  mouse_set_sensor_reg
+0x4165  extsign
+0x4169  extsign_bit3
+0x416d  mouse_le
+0x4179  mouse_le_send_empty_packet
+0x417c  mouse_priority_bb_event
+0x4191  mouse_le_pairing_complete
+0x4192  mouse_24g_attempt_fail
+0x419a  mouse_24g_attempt_success
+0x419c  mouse_24g_pairing_complete
+0x41aa  mouse_set_24g_addr_eeprom
+0x41af  mouse_store_flash_24g_address
+0x41b4  mouse_le_pairing_success
+0x41b6  mouse_le_ll_start_encryt
+0x41b9  mouse_le_enable_connect_flag
+0x41bd  mouse_le_disable_connect_flag
+0x41c1  mouse_le_clean_connect_flag
+0x41c3  mouse_le_bb_event_connected
+0x41ca  mouse_bb_event_pincode
+0x41cc  mouse_bb_event_reconn_failed
+0x41d5  mouse_bt_hid_connected
+0x41d6  mouse_bt_event_setup_complete
+0x41d7  mouse_soft_reset
+0x41d9  mouse_bb_disconnected
+0x41e7  mouse_bb_discon_clear_stack
+0x41ef  mouse_event_light_state_pairing
+0x41f2  mouse_event_light_state_hibernate
+0x41f5  mouse4_0_event_bb_disconn
+0x41f9  mouse_bb_event_timer
+0x4209  mouse_sensor_led_contrl_timer
+0x420f  mouse_sensor_led_contrl
+0x4212  mouse_sensor_led_blink_state_lighting
+0x4216  mouse_sensor_led_blink_state_darking
+0x421a  mouse_sensor_reset
+0x4220  mouse_p3212sensor_led_on
+0x4224  mouse_sensor_led_on_global
+0x4225  mouse_sensor_led_on
+0x422b  mouse_sensor_led_off_global
+0x422c  mouse_sensor_led_off
+0x422e  mouse_sensor_start_blink
+0x4231  mouse_check_hid_handshake_timer
+0x4234  mouse_check_discovery_timeout_timer
+0x4237  mouse_check_direct_timeout_timer
+0x423a  mouse_check_no_data_timeout_timer
+0x423d  mouse_check_mouse_state_timer
+0x4240  mouse_le_enable_att_list_timer
+0x4243  mouse_24g_delay_timer
+0x4246  mouse_ban_24g_pairing_timer
+0x4249  mouse_24g_delay
+0x424a  mosue_dpi_led_blink_init
+0x4250  mouse_dpi_led_blink_delay_timer
+0x4253  mouse_dpi_led_setting
+0x425e  mouse_le_enable_att_list
+0x4264  mouse_check_discovery_timeout
+0x4266  mouse_check_direct_timeout
+0x426a  mouse_check_no_data_timeout
+0x426c  mouse_bb_event_discovery_btn
+0x4271  mouse3_0_check_reconn_target
+0x4279  mouse4_0_check_reconn_target
+0x427e  mouse_reconn_setting_led_gpio
+0x4282  mouse_discover_setting_led_gpio
+0x4285  mouse_setting_led_gpio_comman
+0x428a  mouse_device_led1
+0x428c  mouse_device_led2
+0x428e  mouse_device_led3
+0x428f  mouse_led_blink
+0x4296  mouse_led_off
+0x4298  mouse_led_on
+0x429a  mouse4_0_bb_event_discovery_btn
+0x429b  mouse_bt_hid_handshake
+0x42a2  mouse_check_reconn_target
+0x42ab  mouse_connect_24g_mode
+0x42b0  mouse_start_discovery
+0x42b7  mouse_start_discovery_norandom
+0x42ca  mouse_stop_discovery
+0x42d4  mouse_stop_le_adv
+0x42d7  mouse_stop_bt3_discovery
+0x42da  mouse_store_remote_bdaddr
+0x42df  mouse_unplug_clean_bdaddr
+0x42e4  mouse_store_eeprom_device_info
+0x42e8  mouse_check_device_addr
+0x42ec  mouse_check_le_device_addr
+0x42ef  mouse_check_bt_device_addr
+0x42f1  mouse_check_bt_device_addr_common
+0x42f5  mouse_check_device_addr_end
+0x42fb  mouse_before_store_reconn_info
+0x4305  mouse_store_le_device
+0x430c  mouse_store_bt_device
+0x4310  mouse_clean_addr
+0x4316  mouse_eeprom_load_recon_info
+0x431a  mouse_select_reconn_device
+0x4327  mouse_load_bt_device
+0x4328  mouse_load_bt_device_end
+0x432c  mouse_load_le_device
+0x432d  mouse_load_le_device_end
+0x4333  mouse_select_device
+0x4337  mouse_select_device_by_combination_key
+0x4339  mouse_select_device_commbination_key_up
+0x433e  mouse_select_device_commbination_key_down
+0x4343  mouse_combination_select_device_timer
+0x4349  mouse_select_device_by_button
+0x434e  mouse_select_device_button_up
+0x4354  mouse_select_device_button_down
+0x4359  mouse_select_device_by_switch
+0x435f  mouse_cheak_select_device_by_switch
+0x4364  mouse_select_btdevice
+0x4366  mouse_cheak_select_24gdevice
+0x4369  mouse_select1_device
+0x436c  mouse_select2_device
+0x4370  mouse_ready_reconnection_by_button
+0x437a  mouse_store_device_number2eeprom
+0x437e  mouse_set_reconnection
+0x4381  mouse_stop_bluetooth_mode
+0x4386  mouse_disconnect
+0x438e  mouse_irtual_cable_unplug
+0x4392  mouse_cancel_reconnect
+0x4394  mouse_bt_discovery_by_button
+0x4399  mouse_bt_discovery_button_up
+0x439f  mouse_bt_discovery_button_down
+0x43a5  mouse_bt_discovery_cheak
+0x43a7  mouse_bt_discovery_commbination_key
+0x43a9  mouse_bt_discovery_commbination_key_up
+0x43af  mouse_bt_discovery_commbination_key_down
+0x43b5  mouse_bt_discovry_timer
+0x43b8  mouse_long_button_bt_discovry
+0x43bc  mouse_cpi_enable
+0x43be  mouse_cpi_disable
+0x43c0  mouse_select_device_enable
+0x43c2  mouse_select_device_disable
+0x43c4  mouse_bt_cannel_reconn_enable
+0x43c6  mouse_bt_cannel_reconn_disable
+0x43c8  mouse_bt_discovery_button_down_enable
+0x43ca  mouse_bt_discovery_button_down_disable
+0x43cc  mouse_select_device_count_clean
+0x43ce  mouse_enable_function_flag
+0x43d2  mouse_disable_function_flag
+0x43d6  mouse_adc_read
+0x43e7  mouse_adc_low_voltage
+0x43e9  mouse_adc_no_low_voltage
+0x43eb  mouse_low_voltage_led_timer
+0x43f9  mouse_adc_low_volatage_led_timer_count_clean
+0x43fb  mouse_low_voltage_led_on
+0x43fe  mouse_low_voltage_led_off
+0x4401  mouse_g24_package_data
+0x4406  mouse_g24_enter_lpm
+0x4410  mouse_24g_dpi_delay_init
+0x4414  mouse_load_flash_info_cheak
+0x441c  mouse_ble_init_address
+0x4423  mouse_load_flash_flag
+0x442b  mouse_load_flash_device_info
+0x4435  mouse_store_flash_device_info
+0x443b  mouse_store_eerpom_dpi
+0x443f  mouse_load_eeprom_dpi
+0x4443  mouse_statue_cheak_timer
+0x444f  mouse_check_statue_up
+0x445b  mouse_statue_up_timer_init
+0x445d  mouse_statue_up_timer
+0x4460  mouse_statue_up
+0x446d  mouse_two_device_statue_up
+0x4471  mouse_three_device_statue_up
+0x4476  mouse_device_blink_led_init
+0x4478  mouse_statue_led_off
+0x447a  mouse_devce1_led_off
+0x447e  mouse_devce2_led_off
+0x4482  mouse_devce_led_off
+0x4485  mouse_devce3_led_off
+0x4489  mouse_device1_led_on
+0x448c  mouse_device2_led_on
+0x448f  mouse_device3_led_on
+0x4492  mouse_polling_device
+0x44a0  mouse_power_down
+0x44a4  remote_car_init
+0x44ce  remote_car_soft_switch_power_on_init
+0x44d5  remote_car_hard_switch_power_on_signal
+0x44d6  remote_car_soft_switch_power_on_signal
+0x44d9  remote_car_connect_24g_mode
+0x44da  remote_car_power_off_signal
+0x44db  remote_car_ui_led_init
+0x44de  remote_car_ui_led_init_1
+0x44e0  remote_car_pairing_led_gpio_set
+0x44e2  remote_car_init_environment
+0x44e6  remote_car_in_enter_hibernate
+0x44e9  remote_car_process_lpm_before
+0x44ea  remote_car_g24_enter_lpm
+0x44ed  remote_car_process_auto_pair_exit
+0x44ee  remote_car_key_scan_process
+0x44ef  remote_car_scale_process_idle
+0x44f2  remote_car_scale_process_bb_event
+0x44f9  remote_car_24g_attempt_fail
+0x44fb  remote_car_24g_pairing_complete
+0x44ff  remote_car_24g_attempt_success
+0x4503  remote_car_24g_status_process
+0x4508  remote_car_scale_process_paired
+0x450a  remote_car_scale_process_shutdown
+0x450e  remote_car_event_timer
+0x4510  remote_car_no_data_timer
+0x4515  remote_car_get_adc_default_data
+0x451a  remote_car_rocker_get_x
+0x451f  remote_car_rocker_get_y
+0x4525  remote_car_rocker_get_value
+0x452e  remote_car_rocker_mid_value_adjust
+0x4534  remote_car_rocker_mid_adjust_positive
+0x4537  remote_car_rocker_translate_key
+0x453a  remote_car_rocker_positive_key
+0x453c  remote_car_rocker_negative_key
+0x453e  remote_car_rocker_middle_key
+0x4540  remote_car_get_adc_from_gpio6
+0x4542  remote_car_get_adc_from_gpio7
+0x4544  remote_car_rocker_process
+0x4546  remote_car_read_rocker_check_start
+0x4550  remote_car_rocker_x_to_key
+0x4554  remote_car_rocker_y_to_key
+0x4557  remote_car_rocker_to_key
+0x455a  rocker_to_queue_set_0
+0x455d  rocker_to_queue_set_2
+0x4560  remote_car_send_key_data
+0x4568  remote_car_key_is_press
+0x456b  remote_car_attack_key_press
+0x456f  remote_car_motor_key_press
+0x4574  remote_car_single_motor_key_is_press
+0x457a  remote_car_double_motor_key_press
+0x4580  remote_car_key_is_release
+0x4583  remote_car_attack_key_release
+0x4586  remote_car_motor_key_release
+0x458b  remote_car_device_layout_select
+0x458f  remote_car_send_motor1_key0_press
+0x4591  remote_car_send_motor1_key1_press
+0x4593  remote_car_send_motor2_key2_press
+0x4595  remote_car_send_motor2_key3_press
+0x4597  remote_car_send_double_motor_key0_press
+0x459a  remote_car_send_double_motor_key1_press
+0x459d  remote_car_send_double_motor_key2_press
+0x45a0  remote_car_send_double_motor_key3_press
+0x45a3  remote_car_send_attack_key4_press
+0x45a5  remote_car_send_attack_key5_press
+0x45a7  remote_car_send_fire_key6_press
+0x45a9  remote_car_single_motor_key_rel
+0x45af  remote_car_double_motor_key_rel
+0x45b5  remote_car_send_motor1_key1_rel
+0x45b7  remote_car_send_motor2_key3_rel
+0x45b9  remote_car_send_double_motor_key3_rel
+0x45bc  remote_car_send_attack_key5_rel
+0x45be  remote_car_send_key
+0x45c0  remote_car_send_attack
+0x45c2  remote_car_g24_package_data
+0x45c7  remote_car_g24_package_data_continue
+0x45cc  remote_car_g24_send_empty
+0x45d1  remote_car_moto_data
+0x45d5  remote_car_moto_data_next
+0x45dc  remote_car_moto_data_enable_user
+0x45de  shutter_init
+0x4609  shutter_hart_swtich_power_on
+0x460c  shutter_le_scale_lpm_lock
+0x4612  shutter_process_bb_event
+0x4626  classic_shutter_process_baseband_connect
+0x4629  classic_shutter_process_baseband_disconnect
+0x462b  classic_shutter_disconnect_clear_flag
+0x4631  classic_shutter_process_reconnect_failed
+0x4633  classic_shutter_process_setup_complete
+0x4635  classic_shutter_process_hid_connect
+0x4638  classic_shutter_process_hid_disconnect
+0x463c  classic_shutter_process_hid_handshake
+0x4644  classic_shutter_process_reconnect_page_timeout
+0x4645  classic_shutter_process_virtual_cable_unplug
+0x4648  classic_shutter_process_remote_unsniff
+0x4649  classic_shutter_process_store_reconnect_information
+0x464f  classic_shutter_load_reconn_info
+0x4658  ble_shutter_process_baseband_connect
+0x465c  ble_shutter_process_baseband_disconnect
+0x465f  ble_shutter_process_reconnect_complete
+0x4665  ble_shutter_process_parse_connect_parameter_update_response
+0x466b  shutter_process_soft_swtich_button_long_press
+0x466c  shutter_process_soft_swtich_button_down
+0x4672  shutter_store_currenct_led_state
+0x4677  shutter_process_soft_swtich_button_up
+0x467c  shutter_load_currenct_led_state
+0x4686  shutter_le_bb_event_timer
+0x468c  shutter_check_sleep_timer
+0x468f  shutter_sleep_timeout
+0x4693  shutter_check_power_off_timer
+0x4696  shutter_check_power_off_timeout
+0x469e  classic_shutter_check_unplug_timer
+0x46a1  classic_shutter_unplug_timeout
+0x46a6  classic_shutter_hid_handshake_timer
+0x46a9  classic_shutter_hid_disconn_timer
+0x46ac  ble_shutter_reconn_timer
+0x46b1  shutter_process_idle
+0x46b3  shutter_process_lpm_before
+0x46b4  shutter_le_before_hibernate
+0x46b6  shutter_stop_bluetooth_discovery
+0x46ba  ble_shutter_stop_bluetooth_discovery
+0x46be  classic_shutter_stop_bluetooth_discovery
+0x46c2  shutter_start_bluetooth_discovery
+0x46c8  classic_shutter_start_discovery
+0x46cc  ble_shutter_start_discovery
+0x46d9  shutter_start_reconnect
+0x46df  classic_shutter_start_reconnect
+0x46e4  ble_shutter_start_reconnect
+0x46f0  shutter_ble_adv_interval_set
+0x46f4  shutter_disconnect_current_connection
+0x46f8  app_check_reconn_target
+0x46fc  app_check_reconn_target_loop
+0x4701  found_reconn_device
+0x4708  shutter_check_data_enable
+0x470d  shutter_check_bt_data_enable
+0x4710  shutter_check_ble_data_enable
+0x4713  shutter_check_bluetooth_conn
+0x4718  shutter_change_bluetooth_status_bt_disconn
+0x471c  classic_shutter_change_bluetooth_status_bt_disconn
+0x471f  ble_shutter_change_bluetooth_status_bt_disconn
+0x4720  shutter_check_send_data
+0x4729  shutter_key_change
+0x472d  shutter_key_press
+0x4730  shutter_key_release
+0x4732  push_queue_press_or_release
+0x4735  push_buffer_in_queue
+0x473a  shutter_send_data_to_master
+0x473e  pop_queue_to_ble_data
+0x4746  le_send_notify_from_list
+0x474e  pop_queue_to_classic_data
+0x4758  classic_send_hid_data
+0x4762  queue_push_one_byte
+0x4765  queue_pop_one_byte
+0x476a  ble_shutter_receive_data
+0x476d  shutter_init_param
+0x477a  shutter_load_buffer_config_form_datarom
+0x4782  shutter_load_ble_gatt_form_datarom
+0x4785  shutter_load_bt_sdp_form_datarom
+0x4788  shutter_init_bluetooth_config
+0x4790  shutter_init_bluetooth_config_gpio_input
+0x4793  shutter_load_bluetooth_config
+0x4797  shutter_load_bluetooth_config_label
+0x47a9  shutter_load_bluetooth_config_read_gpio_input
+0x47ae  shutter_check_load_config_flag
+0x47b4  shutter_load_bluetooth_config_by_otp
+0x47ba  shutter_load_bluetooth_config_store_name
+0x47c7  shutter_load_bluetooth_config_by_eeprom
+0x47da  shutter_load_bluetooth_config_by_user_config
+0x47e8  shutter_store_config
+0x47e9  shutter_load_bluetooth_config_custom
+0x47f0  shutter_random_mac_addr
+0x47f9  shutter_write_random_mac_addr_to_eeprom
+0x4802  shutter_write_random_mac_addr
+0x4806  shutter_soft_swtich_power_on
+0x4807  shutter_soft_swtich_power_off
+0x480b  shutter_wait_power_off
+0x480e  ui_soft_swtich_init
+0x4816  ui_soft_swtich_init_power_on_time
+0x481b  ui_soft_switch_botton_up
+0x481f  ui_soft_switch_botton_long_press
+0x4822  ui_soft_switch_power_on
+0x482a  ui_soft_switch_power_off
+0x4830  shutter_byteswap
+0x483f  shutter_random_addr_by_otp
+0x4849  sim_iic_read_eep_data
+0x4856  sim_iic_read_eep_data_2k
+0x485a  sim_iic_read_eep_data_loop
+0x4860  sim_iic_write_eep_data
+0x486b  sim_iic_write_eep_data_loop
+0x4871  sim_iic_wait_ack
+0x4875  sim_iic_wait_ack_loop
+0x4879  sim_iic_ack_slave
+0x487f  sim_iic_read_byte
+0x4882  sim_iic_read_byte_loop
+0x488d  sim_iic_send_byte
+0x4890  sim_iic_send_byte_loop
+0x489b  sim_iic_start
+0x48a1  sim_iic_stop
+0x48a6  sim_iic_scl_output_high
+0x48a9  sim_iic_scl_output_low
+0x48ac  sim_iic_sda_output_high
+0x48af  sim_iic_sda_output_low
+0x48b2  sim_iic_config_gpio
+0x48be  sim_iic_release_sda
+0x48c7  sim_iic_read_sda_level
+0x48d2  sim_iic_delay
+0x48d3  usb_isr
+0x48ea  usb_init
+0x48fb  usb_offline_check_init
+0x48fd  usb_offline_state
+0x4903  usb_nak_state
+0x490b  usb_mem_devicedesc_init
+0x4919  usb_init_param
+0x492b  usb_tx_interval_config
+0x492e  usb_nak_state_judge
+0x4931  usb_nak_state_timer_init
+0x4936  usb0_attached_state_judge
+0x493b  usb_clear_halt_dispose
+0x4941  usb0_fifo_empty
+0x4943  usb_rx_no_data
+0x4946  usb_rx_read
+0x494a  usb_status1
+0x4955  usb_class_type
+0x495a  usb_in_device
+0x4962  usb_out_device
+0x496a  usb_in_standard_req
+0x4970  usb_in_class_req
+0x4975  usb_in_manufacturer_req
+0x4976  usb_out_standard_req
+0x497e  usb_out_class_req
+0x4983  usb_out_manufacturer_req
+0x4984  usb0_force_stall
+0x4988  usb0_reply_zerolen
+0x498a  usb0_request_get_configuration
+0x499c  usb0_request_get_cfg_dev_cfg
+0x499e  usb0_request_get_cfg_dev_addr
+0x49a0  usb0_request_get_descriptor
+0x49a9  dsc_hid_info
+0x49ae  dsc_hid_info_interface0
+0x49b2  dsc_hid_info_interface1
+0x49b6  dsc_device_info
+0x49ba  dsc_info_set_data_len
+0x49bf  dsc_info_set_initial_data_len
+0x49c0  dsc_info_set_data_size_completed
+0x49c5  dsc_info_set_current_data_len
+0x49c7  usb_set_high_addr
+0x49cb  usb0_set_addr
+0x49cf  dsc_config_info
+0x49d2  dsc_string_info
+0x49e0  dsc_hid_report_info
+0x49e5  dsc_hid_report_info0
+0x49ea  usb0_request_get_interface
+0x49fc  usb0_request_get_status
+0x4a0d  usb0_get_status_in_device
+0x4a12  usb_send_zero_packet
+0x4a14  usb_send_ones_packet
+0x4a16  usb_send_two_packet
+0x4a18  usb0_get_status_in_interface
+0x4a1c  usb0_get_status_in_endpoint
+0x4a25  usb0_get_status_in_ep_in_ep0
+0x4a26  usb0_get_status_in_ep_in_ack
+0x4a29  usb0_get_status_in_ep_in_ep1
+0x4a2b  usb0_get_status_in_ep_in_ep2
+0x4a2d  usb0_get_status_in_ep_in_ep3
+0x4a2f  usb_get_idle
+0x4a33  usb_get_report
+0x4a38  usb_get_report_dispose
+0x4a3b  usb_get_report_send_data
+0x4a3f  usb_get_report_data_release
+0x4a42  usb_get_report_data_success
+0x4a45  usb_get_protocol_req
+0x4a4d  usb_get_report_protocol
+0x4a4e  usb_get_boot_protocol
+0x4a4f  usb0_request_clear_feature
+0x4a5e  usb0_request_clear_feature_out_device
+0x4a66  usb0_request_clear_feature_out_interface
+0x4a67  usb0_request_clear_feature_out_endpoint
+0x4a70  usb0_force_stall_ep0_in_off
+0x4a72  usb0_force_stall_ep1_in_off
+0x4a73  usb0_force_stall_ep1_in_off_reply
+0x4a75  usb0_force_stall_ep2_in_off
+0x4a77  usb0_force_stall_ep3_in_off
+0x4a79  usb0_request_set_feature
+0x4a82  usb0_request_set_feature_out_device
+0x4a8b  usb_wakeup_timer_reinit
+0x4a8f  usb0_request_set_feature_out_interface
+0x4a90  usb0_request_set_feature_out_endpoint
+0x4a9b  usb0_force_stall_ep0_in_on
+0x4a9d  usb0_force_stall_ep1_in_on
+0x4a9f  usb0_force_stall_ep2_in_on
+0x4aa1  usb0_force_stall_ep3_in_on
+0x4aa3  usb0_request_set_address
+0x4ab4  usb_usb0_state_set_dev_default
+0x4ab5  usb0_request_set_wait_address
+0x4aba  usb_usb0_state_set_dev_addr
+0x4abc  usb0_request_set_configuration
+0x4ad1  usb0_request_set_cfg_cfg_state
+0x4ad5  usb0_request_set_cfg_stay_addr_state
+0x4ad7  usb0_request_set_interface
+0x4ae8  usb_set_idle
+0x4af5  usb_clear_remote_wakeup_set0
+0x4af9  usb_set_report
+0x4b03  usb_set_report_resume_judge
+0x4b11  usb_set_protocol_req
+0x4b17  usb_set_boot_protocol
+0x4b1a  usb_set_report_protocol
+0x4b1e  usb0_respond_length
+0x4b21  usb0_respond
+0x4b2c  usb0_respond0
+0x4b30  usb0_respond1
+0x4b35  usb_no_respond_data
+0x4b37  usb0_tx
+0x4b3e  usb0_tx_info
+0x4b43  usb0_tx0
+0x4b47  usb0_tx1
+0x4b52  usb_tx_ep1
+0x4b54  usb_tx_loop
+0x4b57  usb_trig
+0x4b5e  usb_tx_ep2
+0x4b61  usb_tx
+0x4b6f  usb_tx_data_ep1
+0x4b7a  usb_tx_data_ep2
+0x4b86  usb_tx_fifo_release
+0x4b89  usb_tx_ms_data
+0x4b91  usb_tx_ms_data_mac_boot_mode
+0x4b92  usb_tx_ms_data_mac_boot_regroup
+0x4ba0  usb_tx_ms_data_normal_mode
+0x4ba1  usb_tx_mac_boot_ms_regroup_r_or_lrkey
+0x4ba4  usb_tx_kb_multikey_data
+0x4ba8  usb_tx_kb_normal_data
+0x4bac  usb_inwake_state_tx_dispose
+0x4bb0  usb_clear_tx_wait
+0x4bb2  usb_mac_wakeup_trig
+0x4bb7  usb_mac_wakeup_judge
+0x4bbb  usb_mac_wakeup
+0x4bbf  usb_windows_wakeup
+0x4bc2  usb_wakeup
+0x4bc8  hci_rx_h4
+0x4bcb  hci_rx_h4_1
+0x4bce  hci_h4_parse_packet
+0x4bd8  hci_h4_parse_packet_wait_len
+0x4bdf  hci_h4_parse_packet_wait
+0x4be6  h4_rx_discard_packet
+0x4bee  h4_get_rx_payload_len
+0x4bf3  h4_get_rx_payload_len_acl
+0x4bf5  h4_get_tx_ptr
+0x4bf9  h4_send_packet_event
+0x4bfb  h4_send_packet_acl
+0x4bfc  h4_send_packet
+0x4c0b  h4_send_acl_trigger_clear
+0x4c0e  hci_init
+0x4c13  hci_lpm_init
+0x4c1a  hci_reinit
+0x4c21  hci_init_common
+0x4c28  hci_sel_init
+0x4c2e  hci_rx_packet
+0x4c37  hci_rx_packet_cont
+0x4c3a  uart_send_byte
+0x4c3f  process_hci_cmd
+0x4c44  process_hci_cmd_cont
+0x4c4d  phci_grp_vendor_specific
+0x4c5c  phci_grp_vendor_enter_lpm
+0x4c5f  hci_enter_lpm
+0x4c62  hci_exit_lpm
+0x4c66  phci_grp_vendor_chipid
+0x4c6b  phci_grp_vendor_baud
+0x4c6f  phci_grp_vendor_patch_common
+0x4c7a  phci_grp_vendor_patch
+0x4c7c  phci_grp_vendor_patch_loop
+0x4c80  phci_grp_vendor_patch_check_sum
+0x4c85  phci_grp_vendor_patch_sec
+0x4c88  phci_grp_vendor_patch_sec_loop
+0x4c9c  load_ucode_only_loop
+0x4ca0  load_uart_sum_loop
+0x4ca5  phci_grp_vendor_patch_sec_init
+0x4cb3  phci_grp_vendor_done
+0x4cb6  phci_grp_vendor_done_loop
+0x4cc4  phci_grp_vendor_patch_bad
+0x4cc6  phci_grp_vendor_bdaddr
+0x4cc9  phci_grp_vendor_mem
+0x4cd1  phci_grp_vendor_eep
+0x4cdc  hci_normal_reply
+0x4cdd  hci_command_complete
+0x4ce3  hci_send_event
+0x4ce9  hci_send_event_raw
+0x4ceb  hci_send_packet
+0x4cec  hci_send_commu_ready_event
+0x4cf2  hci_get_cmd_complete_ptr
+0x4cf4  hci_get_payload_ptr
+0x4cf6  hci_get_packet_ptr
+0x4cf7  hci_get_tx_ptr
+0x4cf8  calc_tx_crc16
+0x4cfa  crcloop
+0x4d04  cmd_exit
+0x4d06  cmd_check_plap
+0x4d0a  cmd_pair
+0x4d0f  cmd_pair_passive
+0x4d17  cmd_in_sniff
+0x4d26  cmd_exit_sniff
+0x4d28  hci_idle_dispatch
+0x4d2f  uart_wake_up
+0x4d33  hid_rx_process
+0x4d3f  hid_rx_process_hid_control
+0x4d43  hid_rx_process_virtual_cable_unplug
+0x4d4a  hid_rx_process_suspend
+0x4d4b  hid_rx_process_set_report
+0x4d53  hid_rx_process_handshake
+0x4d5f  hid_rx_process_data
+0x4d62  hid_rx_process_data_hid_kb
+0x4d63  hid_malloc_tx_buff
+0x4d6a  l2cap_init
+0x4d6b  l2cap_init_work
+0x4d6f  l2cap_init_wake
+0x4d79  process_rx_l2cap_pkt
+0x4d85  l2cap_rx_multiplexing
+0x4d8a  l2cap_rx_multiplexing0
+0x4d8f  l2cap_check_map
+0x4d9b  set_pdata_0
+0x4d9d  l2cap_call_proc_signal
+0x4d9f  l2cap_call_proc_signal0
+0x4da9  l2cap_call_proc_sigal_pending
+0x4db7  l2cap_sdp_conn_succ
+0x4dc3  l2cap_reset_sdp_map
+0x4dd3  check_l2cap_map
+0x4dd5  check_l2cap_map_loop
+0x4dda  check_l2cap_map_used
+0x4dde  check_l2cap_map_used2
+0x4de0  l2cap_call_proc_sdp
+0x4de8  ml2cap_call_proc_sdp
+0x4dec  l2cap_call_proc_sdp_common
+0x4df3  l2cap_call_proc_hid
+0x4df5  l2cap_call_proc_rfcomm
+0x4dfb  l2cap_call_proc_no_reply
+0x4dfc  l2cap_rx_reset_state
+0x4e01  l2cap_process_signal_pkt
+0x4e08  l2cap_process_signal_pkt_loop
+0x4e10  l2cap_process_one_signal
+0x4e1e  l2cap_process_one_signal_rtn
+0x4e1f  l2cap_proc_signal_info_req
+0x4e2a  l2cap_proc_signal_info_req_reply
+0x4e2d  l2cap_proc_signal_info_req_ext
+0x4e33  l2cap_proc_signal_info_req_fix
+0x4e38  l2cap_proc_signal_info_req_common
+0x4e3a  ml2cap_proc_signal_info_req
+0x4e49  l2cap_proc_signal_cmd_reject
+0x4e50  l2cap_proc_signal_cmd_reject_rtn
+0x4e51  l2cap_proc_signal_connect_req
+0x4e64  l2cap_proc_signal_connect_req_sdp
+0x4e6e  store_l2cap_req_param
+0x4e7a  restore_l2cap_req_param
+0x4e86  l2cap_proc_signal_connect_req_rfcomm
+0x4e92  l2cap_proc_signal_connect_req_hid_ctrl
+0x4e9d  l2cap_proc_signal_connect_req_hid_int
+0x4ea9  send_connection_pending
+0x4ead  send_connection_sdp_res
+0x4eb1  send_connection_res
+0x4eb3  send_connection_res0
+0x4ec4  connect_suc
+0x4ec9  connect_pending
+0x4ece  already_connected
+0x4ed0  connect_req_update_byte_counts
+0x4ed4  l2cap_proc_signal_connect_req_rtn
+0x4ed5  l2cap_proc_signal_connect_rsp
+0x4eed  l2cap_proc_signal_connect_rsp_sdp
+0x4ef3  l2cap_proc_signal_connect_rsp_rfcomm
+0x4ef9  l2cap_proc_signal_connect_rsp_hid_int
+0x4eff  l2cap_proc_signal_connect_rsp_hid_ctrl
+0x4f05  l2cap_proc_signal_config_req
+0x4f1c  l2cap_proc_signal_config_req_sdp
+0x4f26  l2cap_proc_signal_config_req_hid_ctrl
+0x4f30  l2cap_proc_signal_config_req_hid_int
+0x4f3a  l2cap_proc_signal_config_req_rfcomm
+0x4f43  l2cap_send_config_rsp
+0x4f59  l2cap_send_config_rsp_is_sdp
+0x4f5a  l2cap_check_channel_state
+0x4f64  l2cap_send_config_req_sdp
+0x4f6b  l2cap_send_config_req_rfcomm
+0x4f72  l2cap_send_config_req_hid_ctrl
+0x4f79  l2cap_send_config_req_hid_int
+0x4f7f  l2cap_generate_config_req
+0x4f97  l2cap_generate_config_req_rfcomm
+0x4f99  l2cap_generate_config_req_done
+0x4fa1  l2cap_proc_signal_config_req_rtn
+0x4fa2  l2cap_proc_signal_config_rsp
+0x4fba  l2cap_proc_signal_config_rsp_sdp
+0x4fbe  l2cap_proc_signal_config_rsp_rfcomm
+0x4fc2  l2cap_proc_signal_config_rsp_hid_ctrl
+0x4fc6  l2cap_proc_signal_config_rsp_hid_int
+0x4fcb  l2cap_proc_signal_disconnect_req
+0x4fe6  l2cap_proc_signal_disconnect_req_hid_ctrl
+0x4fec  l2cap_proc_signal_disconnect_req_hid_int
+0x4ff2  l2cap_proc_signal_disconnect_req_sdp
+0x4ff8  l2cap_disconnect_hid_control_now
+0x4ffa  l2cap_disconnect_hid_interrupt_now
+0x4ffe  l2cap_disconnect_sdp_now
+0x5002  l2cap_proc_signal_disconnect_req_rfcomm
+0x5008  l2cap_disconnect_rfcomm_now
+0x500a  l2cap_send_disconnect_rsp_pkt
+0x5017  l2cap_proc_signal_disconnect_req_err_rtn
+0x5019  l2cap_proc_signal_disconnect_req_rtn
+0x501b  l2cap_proc_signal_disconnect_rsp
+0x5035  l2cap_proc_signal_disconnect_rsp_sdp
+0x503b  l2cap_proc_signal_disconnect_rsp_rfcomm
+0x5041  l2cap_proc_signal_disconnect_rsp_hid_ctrl
+0x5047  l2cap_proc_signal_disconnect_rsp_hid_int
+0x504d  l2cap_proc_signal_disconnect_rsp_rtn
+0x504f  l2cap_proc_signal_disconnect_rsp_err_rtn
+0x5050  l2cap_proc_signal_echo_req
+0x5060  l2cap_proc_signal_echo_rsp
+0x5061  l2cap_proc_signal_info_rsp
+0x5062  l2cap_reject_command
+0x506f  l2cap_reset_rfcomm_channel_state
+0x5074  l2cap_reset_sdp_channel_state
+0x5079  l2cap_reset_hid_ctrl_state
+0x507f  l2cap_reset_hid_int_state
+0x5085  l2cap_reset_hid_disconnected
+0x5087  l2cap_disconnect_interrupt_req
+0x5091  l2cap_disconnect_control_req
+0x509a  l2cap_generate_disconnect_req
+0x50a8  ml2cap_send_signal_connect_req
+0x50b7  ml2cap_send_signal_config_req
+0x50cc  ml2cap_send_signal_disconn_req
+0x50de  ml2cap_send_signal
+0x50e7  msdp_send_req_done
+0x50ef  ml2cap_rx_multiplexing
+0x50f9  ml2cap_call_proc_signal
+0x5102  ml2cap_proc_one_comm_loop
+0x5108  ml2cap_proc_one_comm
+0x5113  ml2cap_proc_signal_connect_req
+0x5116  ml2cap_proc_signal_cmd_reject
+0x511c  mvptr
+0x5120  ml2cap_proc_signal_connect_rsp
+0x512e  ml2cap_proc_signal_connect_refused_result
+0x5130  ml2cap_proc_signal_connect_rsp_mnosucc
+0x5132  ml2cap_proc_signal_connect_rsp_sucessful
+0x5141  ml2cap_proc_signal_connect_rsp_sdp
+0x5147  ml2cap_proc_signal_connect_rsp_rfcomm
+0x514d  ml2cap_proc_signal_connect_rsp_hid_ctrl
+0x5153  ml2cap_proc_signal_connect_rsp_hid_int
+0x5158  mnosucc1
+0x5159  mnosucc
+0x515c  ml2cap_proc_signal_config_rsp
+0x5176  ml2cap_proc_signal_config_rsp_sdp
+0x517a  ml2cap_proc_signal_config_rsp_rfcomm
+0x517e  ml2cap_proc_signal_config_rsp_hid_ctrl
+0x5182  ml2cap_proc_signal_config_rsp_hid_int
+0x5187  mcfrsdone
+0x5188  mcrsdone1
+0x5189  mloop2
+0x518d  mcrsdone
+0x518e  ml2cap_proc_signal_config_req
+0x51ad  ml2cap_proc_signal_config_req_sdp
+0x51bb  ml2cap_proc_signal_config_req_sdp_nsndreq
+0x51be  ml2cap_proc_signal_config_req_rfcomm
+0x51c4  ml2cap_proc_signal_config_req_hid_ctrl
+0x51ca  ml2cap_proc_signal_config_req_hid_int
+0x51cf  mcfgrq_done
+0x51da  mloop1
+0x51e0  mcrqdone
+0x51e1  ml2cap_proc_signal_disconn_req
+0x51fa  ml2cap_proc_signal_disconn_sdp
+0x51ff  ml2cap_proc_signal_disconn_hid_ctrl
+0x5201  ml2cap_proc_signal_disconn_hid_int
+0x5203  mclsrfc
+0x5205  mclssdp
+0x5213  ml2cap_proc_signal_disconn_rsp
+0x5227  ml2cap_proc_signal_disconn_rsp_sdp
+0x522a  mdisdone
+0x522e  ml2cap_proc_send_reject
+0x523a  l2cap_get_req_id
+0x523e  l2cap_get_req_id_ok
+0x5240  l2cap_malloc
+0x5247  l2cap_malloc_loop
+0x524f  l2cap_malloc_next
+0x5255  l2cap_malloc_rtn
+0x5258  l2cap_malloc_fifo_out
+0x525d  l2cap_malloc_free
+0x5264  l2cap_malloc_discard
+0x526e  l2cap_malloc_is_fifo_full
+0x5271  l2cap_malloc_is_fifo_nearly_full
+0x5274  l2cap_malloc_is_fifo_empty
+0x5277  l2cap_malloc_fifo_get_first_ptr
+0x527a  l2cap_malloc_free_loop
+0x527e  l2cap_malloc_get_full_map
+0x5282  l2cap_malloc_get_full_map_loop
+0x5288  l2cap_malloc_into_fifo
+0x5295  l2cap_malloc_into_fifo_no_push
+0x5298  l2cap_malloc_into_fifo_loop
+0x52a0  l2cap_malloc_enough
+0x52a5  l2cap_malloc_enough_loop
+0x52b0  l2cap_malloc_enough_end
+0x52b6  l2cap_malloc_enough_rtn
+0x52b8  l2cap_malloc_signal_channel
+0x52c1  l2cap_get_signal_tx_buff
+0x52c3  l2cap_get_signal_tx_payload
+0x52c5  l2cap_malloc_sdp_channel
+0x52ce  l2cap_get_sdp_tx_buff
+0x52d0  l2cap_get_sdp_tx_payload
+0x52d2  l2cap_malloc_rfcomm_channel
+0x52e0  l2cap_get_rfcomm_tx_buff
+0x52e2  l2cap_util_pdata_to_contw
+0x52e5  l2cap_lpm_save_calc_len
+0x52e9  l2cap_lpm_save_calc_len_loop
+0x52f5  l2cap_lpm_save_calc_len_end
+0x52f7  l2cap_lpm_get_wake_lock
+0x52f9  l2cap_lpm_put_wake_lock
+0x52fb  l2cap_lpm_save_txbuf
+0x5306  l2cap_lpm_save_txbuf_loop
+0x530f  l2cap_lpm_save_txbuf_nempty
+0x5318  l2cap_lpm_load_txbuf
+0x531f  l2cap_lpm_load_txbuf_loop
+0x532e  le_init_conn
+0x5340  le_init_master
+0x534c  le_init_slave
+0x535c  le_dispatch
+0x5360  le_conn_dispatch
+0x5366  le_master_dispatch
+0x5377  le_master_disconn
+0x537a  le_slave_dispatch
+0x5388  le_slave_match
+0x5395  le_slave_cont
+0x539b  le_slave_unsync
+0x53a0  le_check_md
+0x53a4  le_slave_more_data
+0x53a9  le_disconnect
+0x53af  le_clear_connection_info
+0x53b7  le_got_first_packet
+0x53c4  le_enable
+0x53ce  le_disable
+0x53d5  le_prep
+0x53de  lerx_setfreq
+0x53e3  letx_setfreq
+0x53e4  letx_setfreq0
+0x53e6  le_setfreq
+0x53f3  le_ctf_normal
+0x53f6  le_ctf_low
+0x53f9  le_ctf_test
+0x53fc  le_sca_map
+0x540c  le_adv_access
+0x5413  le_setup
+0x541c  le_setup_master
+0x5422  le_next_adv_channel
+0x5428  le_next_adv_channel_curr_channel_37
+0x542e  le_next_adv_channel_curr_channel_38
+0x5434  le_next_adv_channel_curr_channel_39
+0x543a  set_le_next_adv_channel_37
+0x543f  set_le_next_adv_channel_38
+0x5444  set_le_next_adv_channel_39
+0x5449  le_context_nexthop
+0x5459  le_nexthop_nowrap
+0x545b  le_calc_channel_map
+0x545f  le_count_channels_loop
+0x5461  le_count_channels_notused
+0x5466  le_map_channel
+0x546c  le_map_channel_next
+0x5472  le_map_channel_cont
+0x5474  le_map_channel_loop
+0x5477  le_map_channel_skip
+0x547c  le_map_channel_end
+0x547f  le_wait_tx
+0x5482  le_wait_master
+0x5485  le_receive_adv
+0x5489  le_receive_slave
+0x548e  le_receive_packet
+0x548f  le_receive_rxon
+0x549a  le_receive_on_attempt
+0x54a1  le_receive_skip
+0x54ad  lerx_loop
+0x54b1  lerx_nopayload
+0x54bf  le_transmit_receive_sifs
+0x54c1  le_transmit_receive_sifs_notx
+0x54c7  le_transmit_norx
+0x54c9  le_transmit
+0x54cd  le_transmit0
+0x54df  letr_loop
+0x54e2  letr_nopayload
+0x54e9  le_send_adv_ind
+0x54f9  le_send_adv_direct_ind
+0x5504  le_send_adv_transmit
+0x550b  le_send_scan_request
+0x551c  le_send_scan_response
+0x552b  le_connect_request
+0x5535  le_con_req_hop_retry
+0x5572  le_init_adv
+0x5575  le_update_param
+0x559d  le_update_channel_map
+0x55aa  le_acknowledge
+0x55bc  le_ack_unenc
+0x55c0  le_check_wak
+0x55d2  le_set_enc
+0x55d6  le_clear_enc
+0x55e1  le_wait_adv
+0x55e8  le_scan
+0x5608  le_create_conn
+0x5619  le_scan_check_sender_addr_type
+0x561e  le_prepare_tx
+0x5642  le_check_tx_md
+0x5649  le_check_continue
+0x5650  le_set_md
+0x5652  le_clear_md
+0x5654  le_update_tx_type
+0x5658  le_att_check_notification_enable
+0x5664  le_send_empty
+0x5666  le_send_packet
+0x5676  le_send_no_txlen
+0x567a  get_lpm_wake_ble_rx_lock
+0x567c  put_lpm_wake_ble_rx_lock
+0x567e  le_parse
+0x568d  le_parse_l2cap
+0x569a  le_check_l2cap_complete
+0x569e  le_check_l2cap_cid_legal
+0x56a9  le_check_l2cap_llid_start
+0x56bd  le_check_l2cap_continue_legal
+0x56c1  le_check_l2cap_llid_continue
+0x56d7  le_get_search_att_type
+0x56d9  le_get_search_common
+0x56db  le_get_search_common2
+0x56df  le_get_search_att_uuid
+0x56e2  le_writeatt_cb
+0x56e4  le_supervision_update
+0x56ed  le_supervision_flush
+0x56f0  le_adv
+0x56f2  le_adv_loop
+0x56f9  le_adv_loop_tx
+0x5706  le_adv_not_match
+0x5713  le_receive_window_size
+0x5728  le_parse_connect_req
+0x5756  le_init_attlist_search
+0x575f  le_att_handle_inrange
+0x5768  le_att_handle_blank
+0x576a  le_att_get_handle_ptr
+0x576d  le_att_get_handle_ptr2
+0x5770  le_att_get_handle_loop1
+0x5779  le_att_get_handle_ptr_found
+0x577c  le_att_get_short_uuid_ptr
+0x577f  le_att_get_short_uuid_loop
+0x578a  le_att_get_handle_info_from_ptr
+0x578c  le_att_get_handle_info
+0x578e  le_att_get_handle_info_fast
+0x5790  le_att_get_handle_loop
+0x5799  le_att_unfind_handle
+0x579a  le_att_finded_handle
+0x57a3  le_modified_name
+0x57a6  le_modified_name_att_list
+0x57b5  le_name_length_longer_than_att
+0x57b8  le_modified_name_adv
+0x57c5  le_modified_name_adv_and_scan
+0x57d7  le_modified_name_adv_and_scan_store_data
+0x57dd  le_modified_name_adv_and_scan_name_overflow
+0x57df  le_modified_name_adv_loop
+0x57ea  le_modified_name_adv_loop2
+0x57ee  le_modified_name_adv_found_name
+0x57f0  memcpy_empty
+0x57f4  le_lpm_set_mult
+0x57f8  le_lpm_set_mult_attempt
+0x5806  le_lpm_lost
+0x580c  le_set_config_fixed_tk
+0x580e  le_clr_config_fixed_tk
+0x5810  le_set_config_fixed_ltk
+0x5812  le_clr_config_fixed_ltk
+0x5814  le_set_config_more_data
+0x5816  le_clr_config_more_data
+0x5818  le_set_config_read_authentication
+0x581a  le_clr_config_read_authentication
+0x581c  le_set_config_write_authentication
+0x581e  le_clr_config_write_authentication
+0x5820  le_set_config_short_mult
+0x5822  le_clr_config_short_mult
+0x5824  le_set_config
+0x5828  le_clr_config
+0x582c  le_set_fixed_ltk
+0x5839  le_set_justwork
+0x583f  le_fifo_malloc_tx_empty
+0x5842  le_fifo_malloc_tx_ll
+0x5847  le_fifo_malloc_tx_l2cap
+0x5850  le_fifo_malloc_tx
+0x5855  le_fifo_malloc_tx_loop
+0x585a  le_fifo_malloc_tx_got_empty
+0x5861  le_fifo_tx_find_empty_ptr
+0x5863  le_fifo_tx_find_empty_ptr_loop
+0x5869  le_fifo_tx_found_empty_ptr
+0x5873  le_fifo_get_first_tx_ptr
+0x5876  le_fifo_get_second_tx_ptr
+0x5879  le_fifo_get_last_tx_ptr
+0x587c  le_fifo_get_last_tx_ptr0
+0x5884  le_fifo_get_first_l2cap_ptr
+0x5887  le_fifo_get_first_att_ptr
+0x588a  le_fifo_get_last_att_ptr
+0x588d  le_fifo_get_last_l2cap_ptr
+0x5890  le_fifo_check_full
+0x5892  le_fifo_check_nearly_full
+0x5894  le_fifo_check_empty
+0x5896  le_fifo_release_first_node
+0x589f  le_fifo_release_first_node_loop
+0x58ab  le_parse_att
+0x58ba  le_send_att_exchange_mtu_requset
+0x58c1  le_parse_att_exchange_mtu_request
+0x58c2  le_send_att_exchange_mtu_response
+0x58c9  le_parse_att_exchange_mtu_response
+0x58cc  le_parse_att_find_information_request
+0x58cf  le_send_att_find_information_response
+0x58d1  le_send_att_find_information_res_loop
+0x58e1  le_send_att_find_information_res_store_info
+0x58ea  le_send_att_find_information_res_cont
+0x58ed  le_send_att_find_information_res_next
+0x58f0  le_send_att_find_information_res_end
+0x58f2  le_parse_att_find_by_type_value_request
+0x58fb  le_start_end_handle_check_1
+0x5902  le_start_end_handle_check_1_fail
+0x5905  le_send_att_find_by_type_value_response
+0x590c  le_send_att_find_by_type_value_res_primary
+0x5911  le_send_att_find_primary_search_loop
+0x5921  le_send_att_find_primary_search_loop1
+0x5925  le_send_att_error_response_notfound2
+0x5928  le_send_att_find_primary_search_end_start_handle_found
+0x5930  le_send_att_find_primary_search_end_ending_handle_found
+0x5936  le_send_att_find_primary_search_end
+0x593f  le_parse_att_read_by_type_request
+0x5942  le_send_att_read_by_type_response
+0x5951  le_send_att_read_by_type_response_loop
+0x596b  le_send_att_read_by_type_response_next_handle
+0x596d  le_send_att_read_by_type_response_end
+0x596f  le_send_att_read_by_type_res_found_next
+0x597d  le_send_att_read_by_type_write_properties
+0x5984  le_send_att_read_by_type_write_uuid
+0x5990  le_send_att_read_by_type_res_not_characteristic
+0x5992  le_send_att_read_by_type_res_not_char_loop
+0x5998  le_send_att_read_by_type_res_not_char_common
+0x59a6  le_send_att_read_by_type_res_not_char_next
+0x59a8  le_send_att_read_by_type_res_device_name
+0x59bc  le_parse_att_read_request
+0x59bf  le_send_att_read_response
+0x59ca  le_send_att_read_response_less
+0x59d3  le_send_device_name
+0x59dd  le_send_att_read_response_check_auth
+0x59e4  le_parse_att_read_blob_request
+0x59e6  le_send_att_read_blob_response
+0x59f5  le_send_att_read_blob_response_less
+0x59fa  le_parse_att_read_by_group_type_request
+0x59fd  le_send_att_read_by_group_type_response
+0x5a05  le_send_att_read_by_group_type_response_loop
+0x5a19  le_send_att_read_by_group_type_store_write_record
+0x5a1f  le_send_att_read_by_group_type_store_record
+0x5a23  le_send_att_read_by_group_type_next_handle
+0x5a25  le_send_att_read_by_group_type_end0
+0x5a28  le_send_att_read_by_group_type_end1
+0x5a2c  le_send_att_read_by_group_type_end_common
+0x5a2f  le_parse_att_write_request
+0x5a33  le_send_att_write_response_check_auth
+0x5a3d  le_send_att_write_response
+0x5a42  le_check_encrypt_state
+0x5a48  le_parse_att_prepare_write_request
+0x5a4d  le_send_att_prepare_write_response
+0x5a5b  le_send_att_execute_write_response
+0x5a60  le_parse_att_write_command
+0x5a64  le_att_malloc_tx_notify
+0x5a6d  le_att_malloc_tx_indication
+0x5a76  le_send_att_error_response_notfound
+0x5a77  le_send_att_error_response
+0x5a82  le_fifo_malloc_tx_l2cap_gatt
+0x5a84  le_att_next_handle
+0x5a88  le_att_check_handle_end
+0x5a8c  le_att_same_type
+0x5a8e  le_att_check_same_common
+0x5a94  le_att_same_uuid
+0x5a97  le_store_att_record
+0x5a9c  le_write_att_record
+0x5aa1  le_write_att_record_common
+0x5aa5  le_send_auto_len_by_mem
+0x5ab1  le_get_search_handle_start_end_common
+0x5ab6  le_parse_signaling
+0x5abb  le_l2cap_parse_conn_parameter_update_rsp
+0x5abf  le_l2cap_tx_update_req
+0x5ac7  le_fifo_malloc_tx_l2cap_signaling
+0x5acf  le_l2cap_update_signaling_identifier
+0x5ad3  le_l2cap_reset_signaling_identifier
+0x5ad5  le_pairing_mode_init
+0x5add  le_set_pairing_mode_secure_justwork
+0x5adf  le_set_pairing_mode_secure_numeric
+0x5ae2  le_set_pairing_mode_secure_passkey
+0x5ae4  le_set_no_pairing
+0x5ae5  le_set_noinputnooutput
+0x5ae7  le_set_pairing_mode_lagacy_just_work
+0x5ae9  le_set_pairing_mode_lagacy_passkey
+0x5aea  le_set_displayonly
+0x5aec  le_secure_connection_enable
+0x5af0  le_secure_connection_disable
+0x5af4  le_parse_smp
+0x5b02  le_send_smp_security_request
+0x5b09  le_parse_smp_pairing_request
+0x5b18  le_set_tk_0
+0x5b1b  le_parse_smp_pairing_req_passkey
+0x5b1d  le_genernate_tk
+0x5b24  le_parse_smp_pairing_req_fixed_passkey
+0x5b26  le_check_master_support_secure_connect
+0x5b2b  le_send_smp_pairing_response
+0x5b30  le_parse_smp_pairing_confirm
+0x5b37  le_parse_smp_pairing_confirm_secure_passkey
+0x5b3d  le_send_smp_pairing_confirm
+0x5b45  le_send_smp_pairing_confirm_sc
+0x5b4d  le_parse_smp_pairing_random
+0x5b53  le_send_pairing_confirm_value_failed
+0x5b54  le_send_pairing_failed
+0x5b5a  le_parse_smp_pairing_failed
+0x5b5f  le_smp_pairing_fail_reason_not_support_pairing
+0x5b61  le_parse_smp_pairing_random_sc
+0x5b6c  le_parse_smp_pairing_random_sc_passkey
+0x5b75  le_parse_smp_pairing_random_success
+0x5b7a  le_send_smp_pairing_random
+0x5b80  le_parse_smp_encryption_information
+0x5b82  le_send_smp_encryption_information
+0x5b8a  le_send_fixed_ltk
+0x5b8c  le_send_smp_master_identification
+0x5b98  le_send_smp_identity_information
+0x5ba0  le_send_smp_identity_address_information
+0x5ba9  le_send_pairing_fail_unspecified_reason
+0x5bab  le_check_init_key_distribution
+0x5baf  le_parse_smp_identity_information
+0x5bb9  le_check_master_addr_type
+0x5bc0  le_parse_smp_identity_address_information
+0x5bc4  le_parse_smp_security_request
+0x5bc5  le_parse_smp_public_key
+0x5bca  le_parse_smp_dhkey_check
+0x5bcf  le_send_smp_pairing_public_key
+0x5bd5  le_send_smp_pairing_dhkey_check
+0x5bdb  le_check_paring_time
+0x5be4  le_pairing_sm
+0x5bef  le_pairing_sm_send_sec_req
+0x5bf5  le_pairing_sm_start
+0x5bf7  le_pairing_sm_rcv_pairing_req
+0x5bfb  le_pairing_sm_after_auth
+0x5bfe  le_pairing_sm_after_auth_start_enc
+0x5c07  le_pairng_sm_send_enc_information
+0x5c09  le_pairng_sm_send_master_indentification
+0x5c10  le_pairng_sm_send_indentity_information
+0x5c12  le_parse_start_enc_rsp_after_auth_end
+0x5c18  le_secure_connect_sm
+0x5c26  le_sc_sm_passkey_wait_confirm
+0x5c30  le_sc_sm_wait_confirm_gkey
+0x5c35  le_sc_confirm_gkey_ok
+0x5c39  le_sc_sm_receive_dhkey
+0x5c3d  le_dhkey_ready
+0x5c41  le_dhkey_ready_common
+0x5c47  le_dhkey_check_fail
+0x5c49  le_dhkey_check_ok
+0x5c52  le_sc_sm_send_public_key
+0x5c55  le_sc_sm_ready_send_pairing_confirm
+0x5c56  le_sc_sm_send_public_key_passkey
+0x5c58  le_sc_sm_receive_public_key
+0x5c5c  le_public_key_ready
+0x5c5f  le_sc_sm_wait_send_public_key
+0x5c62  le_fifo_malloc_tx_l2cap_smp
+0x5c64  le_parse_ll
+0x5c7b  le_parse_connection_update_req
+0x5c83  le_parse_channel_map_req
+0x5c8e  le_parse_terminate_ind
+0x5c92  le_send_terminate_ind_user_terminated
+0x5c93  le_send_terminate_ind
+0x5c99  le_send_feature_rsp
+0x5c9f  le_parse_version_ind
+0x5ca0  le_send_version_ind
+0x5ca6  le_parse_ping_req
+0x5ca8  le_send_ll_one_lenth
+0x5caa  le_parse_enc_req
+0x5cbc  le_parse_enc_req_after_auth
+0x5cbf  le_parse_enc_req_fixed_ltk
+0x5cc4  le_ltk_lost
+0x5cc9  le_send_reject_ind
+0x5ccf  le_send_enc_rsp
+0x5cdd  le_send_start_enc_req
+0x5cdf  le_send_start_enc_rsp
+0x5ce1  le_parse_enc_rsp
+0x5ce6  le_parse_start_enc_req
+0x5cea  le_parse_start_enc_rsp
+0x5cef  le_parse_pause_enc_req
+0x5cf3  le_send_pause_enc_rsp
+0x5cf5  le_parse_ping_rsp
+0x5cf6  init_lmp
+0x5cf7  init_lmp_work
+0x5d04  init_lmp_reinit
+0x5d07  parse_rx_done
+0x5d08  parse_lmp
+0x5d52  reject_unknown_packet
+0x5d53  reject_lmp_packet
+0x5d55  parse_lmp_clkoffset_req
+0x5d57  parse_enc_key_size_mask_req
+0x5d59  parse_lmp_set_afh
+0x5d66  parse_lmp_escape
+0x5d77  reject_unknown_ext_packet
+0x5d7a  parse_lmpext_chn_classification_req
+0x5d7d  parse_lmpext_iocap_req
+0x5d80  parse_lmpext_iocap_res
+0x5d82  iocap_lmpext_load
+0x5d86  iocap_lmpext_common
+0x5d88  parse_lmpext_accepted
+0x5d8d  parse_lmpext_not_accepted
+0x5d92  parse_lmpext_accepted_ptt
+0x5d96  parse_lmpext_not_accepted_ptt
+0x5d9e  parse_lmpext_pause_encrypt
+0x5da1  parse_lmpext_pause_encrypt_slave
+0x5da3  parse_lmpext_resume_encrypt
+0x5da5  parse_lmpext_features_req
+0x5da7  parse_lmpext_features_res
+0x5dad  parse_lmpext_features_res_not_hci
+0x5db1  parse_lmp_accepted
+0x5dc2  parse_lmp_not_accepted
+0x5dcf  parse_lmp_accepted_switch
+0x5dd2  parse_lmp_not_accepted_switch
+0x5dd8  parse_lmp_accepted_hostconn
+0x5dde  parse_lmp_accepted_hostconn_ctn
+0x5de2  parse_lmp_not_accepted_hostconn
+0x5de7  parse_lmp_accepted_inrand
+0x5dee  parse_lmp_accepted_enc_mode
+0x5df4  parse_lmp_accepted_enc_keysize
+0x5df5  parse_lmp_accepted_start_enc
+0x5dfd  parse_lmp_accepted_stop_enc
+0x5dfe  parse_lmp_not_accepted_aurand_send_detach
+0x5e01  parse_lmp_not_accepted_inrand
+0x5e07  parse_lmp_inrand_key_missing
+0x5e0a  parse_lmp_not_accepted_name_req
+0x5e0b  parse_lmp_not_accepted_simple_pairing_number
+0x5e0e  parse_lmp_not_accepted_dhkey_check
+0x5e11  parse_lmp_not_accepted_unsniff_req
+0x5e13  parse_lmp_accepted_unsniff_req
+0x5e16  parse_lmp_accepted_sniff_req
+0x5e22  parse_lmp_not_acdcept_sniff_req
+0x5e24  parse_lmp_crypt_key
+0x5e27  parse_lmp_setup_complete
+0x5e2d  parse_lmp_max_slot
+0x5e2e  parse_lmp_max_slot_req
+0x5e36  parse_lmp_detach
+0x5e38  accept_lmp_msg
+0x5e3a  parse_lmp_incr_power
+0x5e3c  parse_lmp_decr_power
+0x5e3e  parse_lmp_version_res
+0x5e42  parse_lmp_auto_rate
+0x5e43  parse_lmp_in_rand
+0x5e4e  parse_lmp_inrand_res
+0x5e52  pop_tid_follow
+0x5e56  push_tid_follow
+0x5e5a  parse_lmp_au_rand_moudle
+0x5e5f  parse_lmp_au_rand
+0x5e6a  parse_lmp_sres
+0x5e73  authentication_ok
+0x5e77  authentication_ok_common
+0x5e81  authentication_ok_conn_sm
+0x5e86  parse_lmp_comb_key
+0x5e90  parse_lmp_name_res
+0x5ea0  parse_lmp_name_res_end
+0x5ea5  parse_lmp_name_req
+0x5ea9  parse_lmp_conn_req
+0x5eaa  parse_lmp_timing_accuracy_req
+0x5eac  parse_lmp_features_req
+0x5eae  parse_lmp_version_req
+0x5eb0  parse_lmp_supervision_timeout
+0x5eb1  parse_lmp_sniff_subrating_req
+0x5ebf  parse_lmpext_packet_type_table_req
+0x5eca  parse_lmp_min_power
+0x5ecb  parse_lmp_page_mode_req
+0x5ecc  parse_lmp_page_scan_mode_req
+0x5ecd  parse_lmp_slot_offset
+0x5ed0  parse_lmp_sniff_req_check_sniff_para
+0x5ed6  parse_lmp_sniff_req
+0x5eed  set_big_value_to_attempt
+0x5ef0  lmp_reject_sniff
+0x5ef2  parse_lmp_start_encryption_req
+0x5ef6  parse_lmp_stop_encryption_req
+0x5ef8  parse_lmp_switch_req
+0x5efd  parse_lmp_switch_req_not_accept
+0x5f01  parse_lmp_switch_req_clear_mark
+0x5f04  parse_lmp_switch_accept
+0x5f0a  parse_lmp_use_semi_permanend_key
+0x5f0b  parse_lmp_unsniff_req
+0x5f10  parse_lmp_encapsulated_header
+0x5f19  parse_lmp_encapsulated_header_master
+0x5f1c  parse_lmp_encapsulated_header_reject
+0x5f1e  parse_lmp_accepted_encapsulated_header
+0x5f20  parse_lmp_accepted_simple_pairing_number
+0x5f23  parse_lmp_accepted_simple_pairing_number_common
+0x5f27  parse_lmp_accepted_simple_pairing_number_ssp_pin
+0x5f2b  parse_lmp_accepted_simple_pairing_number_passkey
+0x5f31  authentication_passkey
+0x5f3b  authentication_passkey_end
+0x5f3d  parse_lmp_accepted_dhkey_check
+0x5f3e  pairing_success
+0x5f43  parse_lmp_accepted_dhkey_check_common
+0x5f4b  parse_simple_pairing_confirm
+0x5f51  parse_lmp_encapsulated_payload
+0x5f55  parse_encapsulated_payload_master
+0x5f62  parse_lmp_encapsulated_payload_completed
+0x5f68  parse_lmp_encapsulated_payload_reject
+0x5f6a  parse_lmp_accepted_encapsulated_payload
+0x5f6e  parse_lmp_encapsulated_payload_all_accepted
+0x5f75  parse_lmp_encapsulated_payload_all_accepted_get_passkey
+0x5f77  parse_lmp_encapsulated_payload_all_accepted_master
+0x5f78  parse_lmp_simple_pairing_number
+0x5f7c  parse_lmp_simple_pairing_number_master
+0x5f86  parse_lmp_simple_pairing_number_master0
+0x5f88  parse_lmp_simple_pairing_number_reject
+0x5f8a  parse_dhkey_check
+0x5f8e  parse_dhkey_check_master
+0x5f95  number_comparison_successed
+0x5f9a  parse_dhkey_check_master0
+0x5f9d  parse_lmp_dhkey_check_reject
+0x5f9f  number_comparison_mode
+0x5fa4  comparison_result
+0x5fa7  parse_lmp_clkoffset_res
+0x5fa8  parse_lmp_encryption_mode_req
+0x5fb3  parse_lmp_features_res
+0x5fb4  parse_lmp_features_res_not_hci
+0x5fba  parse_lmp_send_conn
+0x5fbc  parse_lmp_test_activate
+0x5fc1  parse_lmp_test_control
+0x5fc6  parse_lmp_test_xor
+0x5fda  parse_lmp_test_control_exit
+0x5fdf  parse_lmp_test_control_pattern
+0x5fe6  parse_lmp_test_control_loopback_nowhite
+0x5fe7  parse_lmp_test_control_loopback
+0x5ff3  parse_lmp_test_control_pause
+0x5ff9  lmp_copy_rand
+0x5ffc  lmp_generate_key
+0x5ffe  lmp_start_encryption
+0x6001  lmp_accept_inrand
+0x6006  lmp_disconnect
+0x600a  send_lmp
+0x6010  send_lmp0
+0x603d  send_lmp_error
+0x603f  send_lmp_escape
+0x604a  send_lmp_accepted
+0x6059  send_create_conn_start_l2cap_timer_sm
+0x605f  send_lmp_accept_sniff_req
+0x6060  send_lmp_not_accepted
+0x6068  send_not_accept_aurand
+0x606d  send_lmpext_accepted
+0x6076  send_lmpext_not_accepted
+0x6080  send_lmp_accepted_inrand
+0x6084  send_lmp_accepted_enc_mode
+0x608b  send_lmp_accepted_enc_start
+0x608d  send_lmp_accepted_enc_exit
+0x608f  send_lmp_accepted_enc_key
+0x6092  send_lmp_accepted_connection
+0x6098  send_lmp_accept_dhkey_check
+0x6099  send_lmpext_features_res
+0x60a4  send_lmpext_io_cap_res
+0x60af  responder_iocap_keyboard_only
+0x60b5  responder_iocap_display_yesno
+0x60bb  responder_iocap_no_input_no_output
+0x60c1  set_ssp_mode_justwork
+0x60c5  set_ssp_mode_numeric_comparison
+0x60c7  set_ssp_mode_passkey
+0x60c9  classic_bt_set_reject_justwork_flag
+0x60cb  classic_bt_clr_reject_justwork_flag
+0x60cd  classic_bluetooth_set_flag
+0x60d1  classic_bluetooth_clr_flag
+0x60d5  send_lmp_io_cap_req
+0x60da  send_lmpext_sniff_subrating_req
+0x60db  send_lmpext_sniff_subrating_res
+0x60e4  send_lmp_name_res
+0x60ec  send_lmp_name_res_offset_ok
+0x60f4  send_lmp_timing_accuracy_res
+0x60f9  send_lmp_clkoffset_res
+0x60ff  send_lmp_clkoffset_res_master
+0x6103  send_lmp_version_res
+0x6108  send_lmp_features_res
+0x610d  send_lmpext_features_req
+0x6118  send_lmpext_packet_type_table_req
+0x6124  ssp_enable
+0x612b  ssp_disable
+0x6132  afh_init
+0x613c  afh_open_all_channels
+0x6140  afh_reset_map
+0x6147  afh_clear_error_counter
+0x614a  afh_set_send_flag
+0x614e  send_lmpext_pause_encryption_req
+0x6152  send_lmp_detach
+0x6157  prepare_disconnect
+0x615c  send_lmp_no_payload
+0x615f  send_lmp_nopayload_reply
+0x6162  send_lmp_encryption_mode_req
+0x616a  send_lmp_superto
+0x616f  send_lmp_name_req
+0x6175  send_lmp_test_control
+0x6179  send_lmp_test_control_loop
+0x617e  send_lmp_quality_of_service_req
+0x617f  send_lmp_unit_key
+0x6180  send_lmp_slot_offset
+0x6191  send_lmp_slot_offset_reply
+0x6195  send_lmp_switch_req
+0x6199  switch_on_native
+0x619a  switch_slack
+0x61a4  send_lmp_sniff_req
+0x61aa  send_lmp_timing_accuracy_req
+0x61af  send_lmp_unsniff_req
+0x61b2  send_lmp_max_slot
+0x61b7  send_lmp_max_slot_req
+0x61bc  send_lmp_inc_power
+0x61c1  send_lmp_setup_complete_by_module
+0x61c3  send_lmp_setup_complete
+0x61d4  send_lmp_setup_complete_has_sent
+0x61d6  send_lmp_version_req
+0x61db  send_lmp_features_req
+0x61e0  sp_master_send_io_cap_get
+0x61e5  sp_master_send_io_cap_send
+0x61e9  sp_master_send_lmp_encapsulated_header
+0x61ed  sp_master_commitment_compare
+0x61f7  sp_master_commitment_compare_success
+0x61fb  sp_master_send_lmp_simple_pairing_number
+0x61fd  sp_send_lmp_encapsulated_header
+0x61ff  send_lmp_encapsulated_header
+0x620b  send_lmp_encapsulated_payload
+0x621a  sp_send_lmp_simple_pairing_comfirm
+0x621d  send_lmp_simple_pairing_comfirm
+0x6225  sp_send_lmp_simple_pairing_number
+0x6227  send_lmp_simple_pairing_number
+0x6233  master_sp_sm_end
+0x6234  sp_aurand_send
+0x6239  master_sp_send_lmp_dhkey_check
+0x623a  sp_send_lmp_dhkey_check
+0x623c  send_lmp_dhkey_check
+0x6246  send_lmp_enc_key_size_mask_res
+0x624b  send_lmp_auto_rate
+0x624c  send_lmp_clkoffset_req
+0x624d  send_lmp_quality_of_service
+0x624e  send_lmp_test_activate
+0x624f  send_lmp_comb_key
+0x6259  send_lmp_inrand
+0x625c  send_lmp_rand
+0x6264  send_lmp_aurand
+0x626a  send_lmp_aurand_notpairing
+0x626b  send_lmp_aurand_common
+0x626d  send_lmp_sres
+0x627c  send_lmp_sres_master
+0x627e  send_lmp_sres_startenc
+0x6284  send_lmp_sres_startenc_slave
+0x6288  send_lmp_start_encryption
+0x628f  send_lmp_stop_encryption_req
+0x6292  send_lmp_encryption_key_size_req
+0x6298  msg_send_lmp
+0x62a0  send_lmpext
+0x62a7  send_lmp_follow
+0x62ad  send_lmp_tid
+0x62b0  send_lmp_reply
+0x62b2  send_lmp_request
+0x62b3  send_lmp_end
+0x62b7  send_lmp_exit
+0x62bc  lmo_fifo_check
+0x62c1  lmo_fifo_process
+0x62c7  lmo_fifo_process_lmo0empty
+0x62d1  lmo_fifo_process_lmo2to1
+0x62d7  lmo_fifo_process_lmo1_empty
+0x62e2  special_tid_store
+0x62eb  tid_reply
+0x62ef  tid_initiate
+0x62f3  tid_check
+0x62f8  tid_set_reply
+0x62fc  check_localsm
+0x62ff  setlocalsm_master
+0x6303  setlocalsm_slave
+0x6307  check_localsm_master
+0x630b  generate_random_number
+0x630c  generate_random
+0x630d  generate_random_loop
+0x6311  generate_linkkey
+0x631b  process_conn_sm
+0x631e  process_conn_sm_continue
+0x633a  host_create_conn_done
+0x6340  host_conn_judge_encrypt
+0x6344  host_create_conn_done_wait
+0x6349  host_create_conn_auth
+0x634f  host_create_conn_auth_wait
+0x6350  host_create_conn_pairing
+0x6355  host_create_conn_pairing_wait
+0x6356  host_creat_conn_send_feat_ext
+0x6359  host_create_conn_send_version
+0x635c  host_creat_conn_wait_switch
+0x6364  host_create_conn_switch_accept
+0x6366  host_create_conn_send_features
+0x6369  host_create_conn_send_switch
+0x636f  host_create_conn_send_conn_req
+0x6374  host_create_conn_wait_accept
+0x637a  host_create_conn_resend
+0x637c  host_create_conn_waiting
+0x637d  host_create_conn_switch
+0x6386  host_create_conn_send_setup_complete
+0x6389  host_create_conn_wait_setup_complete
+0x638d  host_create_conn_wait_setup_complete_rtn
+0x638f  host_create_conn_master_detach
+0x6394  host_create_conn_send_detach
+0x6398  host_create_conn_auth_pair
+0x639b  host_create_conn_sm_done
+0x639d  host_create_conn_auth_pair_true
+0x63a9  host_create_conn_auth_pair_nokey
+0x63b0  host_create_conn_auth_pair_wait
+0x63b1  host_create_conn_encrypt
+0x63b5  host_create_conn_encrypt_start
+0x63ba  host_create_conn_encrypt_wait
+0x63be  host_create_conn_encrypt_wait_clear
+0x63c0  host_auth
+0x63c5  remote_auth
+0x63cb  pincode_reinit
+0x63d1  twspi_reset
+0x63e0  twspi_reset2
+0x63ee  twspi_disable
+0x63f2  twspi_enable
+0x63f6  twspi_enable2
+0x63fb  sensor_read
+0x6405  sensor_write
+0x640d  spi_ncs_gpio_init
+0x640f  spi_ncs_enable
+0x6411  spi_ncs_disable
+0x6413  twspi_write
+0x6414  twspi_read
+0x6415  read_function_aes
+0x6419  read_function
+0x641c  read_fuction_zero
+0x641e  get_block_header
+0x641f  get_block_header0
+0x6429  read_first_block
+0x6430  get_iv
+0x643c  load_storage
+0x6446  load_storage_loop
+0x644d  reload_eeprom
+0x6452  reload_eeprom_loop
+0x645b  loadcode
+0x646e  loadcode_otp
+0x646f  loadcode_otp_2
+0x647b  loadcode_iic
+0x647d  loadcode_iic_2
+0x6486  loadcode_iic_eeprom_2k
+0x648e  loadcode_spi
+0x648f  loadcode_spi_2
+0x649b  loadcode_hci
+0x649d  loadcode_hci_enc
+0x64a1  loadcode_hci_loop
+0x64a3  clear_key_buf
+0x64aa  loadcode_iic_by_eeprom
+0x64b0  loadcode_check_times
+0x64b6  loadcode_error
+0x64b9  set_ucode_status
+0x64c0  decrypt_code
+0x64c3  decrypt_code_loop
+0x64c6  decrypt_code_skip
+0x64ca  load_ucode
+0x64d2  load_ucode_loop
+0x64d7  spid_init
+0x64da  spid_init2
+0x64dd  spid_init_common
+0x64e6  spid_reset
+0x64ec  spid_write_reg
+0x64f3  spid_read_reg
+0x64f4  spid_read_regs
+0x64fc  wait_spid_done
+0x6502  spid_init_flash
+0x650b  spid_unlock_flash
+0x6514  flash_write
+0x651b  flash_write_spi_sm_timer
+0x6522  flash_write_start
+0x6528  flash_erase_sector
+0x6530  flash_wait_erase_sector
+0x6537  flash_write_data
+0x653d  flash_wait_write_data
+0x6545  flash_data_recover
+0x654a  flash_data_preserve
+0x6552  spid_write_flash
+0x6556  spid_write_flash_common
+0x6562  spid_read_flash
+0x6574  spi_read_flash_wait
+0x6578  spid_load_flash
+0x6585  spi_load_flash_wait
+0x659a  soft_reset_chip
+0x659c  iic_init_390k
+0x65a3  iicd_init_12m
+0x65a9  iicd_init_gpio
+0x65b0  wait_iicd_done
+0x65b3  iicd_read_data
+0x65bf  set_eeprom_size_2k
+0x65c2  clear_eeprom_size_2k
+0x65c5  iicd_read_eep_data_size_2k
+0x65c9  iicd_read_eep_size_2k_lcadcode
+0x65cc  iicd_read_eep_size_2k
+0x65d1  iicd_write_protect_eep_data
+0x65d6  iicd_eeprom_write_enable
+0x65db  iicd_wp_gpio_output_low
+0x65dd  iicd_eeprom_write_disable
+0x65df  iicd_read_eep_data
+0x65e5  iicd_read_eep
+0x65eb  iicd_read_eep_common
+0x6601  iicd_read_eep_load_code_size_2k
+0x6606  iicd_write_eep_data
+0x6608  iicd_write_ota_data
+0x660d  iicd_write_eep_loop
+0x661d  iicd_eep_transparency
+0x662f  iicd_eep_deal_short_packet
+0x6634  iicd_write_eep_size_2k
+0x663d  iicd_write_eep
+0x664a  iicd_write_eep_common
+0x6653  iic_check_eeprom_standby
+0x6655  iic_check_eeprom_standby_wait
+0x666a  otp_enable_chgpump
+0x666d  otp_disable_chgpump
+0x666f  otp_set_addr
+0x6673  otp_write
+0x6675  otp_program
+0x6678  otp_program_bit
+0x6697  otp_skip_0
+0x66a0  otp_ce
+0x66a6  otpd_read_init
+0x66b0  otpd_wait_end
+0x66b3  otpd_read_data
+0x66b8  otpd_read_code
+0x66c2  uartd_prepare_tx
+0x66c5  uartd_send
+0x66c8  uartd_rxdone
+0x66cb  uartd_prepare_rx
+0x66ce  uart_set_baud_by_mem
+0x66d1  uart_copy_tx_bytes_fast
+0x66d3  uart_copy_tx_bytes_fast_loop
+0x66d8  uart_copy_tx_bytes_fast_loop_four
+0x66de  uart_tx_8_bytes
+0x66e1  uart_tx_4_bytes
+0x66e4  uart_copy_tx_bytes
+0x66e6  uart_copy_tx_bytes_loop
+0x66ea  uart_copy_rx_bytes_fast
+0x66ec  uart_copy_rx_bytes_fast_loop
+0x66f1  uart_copy_rx_bytes_fast_loop_four
+0x66f7  uart_rx_8_bytes
+0x66fa  uart_rx_4_bytes
+0x66fd  uart_copy_rx_bytes
+0x66ff  uart_copy_rx_bytes_loop
+0x6703  uart_copy_rx2tx
+0x6705  uart_copy_rx2tx_loop
+0x6709  app_store_nvram_event
+0x670b  check_51cmd_update_device_record
+0x6711  write_device_record
+0x6715  write_device_loop_find
+0x6721  write_device_loop_find0
+0x6725  set_index_finded_device
+0x672b  set_index_find_device_master_addr
+0x6730  store_rec_data_common
+0x6733  set_index_finded_device_ble_mode
+0x6737  set_index_finded_device_irk
+0x6739  store_ble_rec_data_common
+0x673b  set_index_finded_device_ediv
+0x673e  nvram_find_addr_from_bd_list
+0x6743  find_addr_from_bd_list_ble_mode
+0x674d  find_addr_from_bd_list_static_addr
+0x6750  find_addr_from_bd_list_random_non_resolvable_private_address
+0x6752  find_addr_from_bd_list_random_addr
+0x6754  find_addr_from_bd_list_spp_mode
+0x6757  find_addr_from_bd_list_common
+0x675f  nvram_find_addr_from_list
+0x676f  nvram_find_addr_from_list_compare
+0x6771  find_master_addr_from_list_compare
+0x6776  find_addr_from_list_compare_ble_mode
+0x6779  find_irk_form_list_compare
+0x678b  genernate_master_macaddress
+0x6794  find_ediv_form_list_compare
+0x67a3  check_nvram
+0x67a9  init_device_list
+0x67ad  init_device_list_loop
+0x67b2  load_device_list
+0x67bc  clear_key_exists
+0x67be  load_device_list_mode_4
+0x67ca  clear_ltk_exists
+0x67cc  eeprom_store_le_reconn_info
+0x67d0  eeprom_store_bd_reconn_info
+0x67d3  eeprom_store_reconn_info
+0x67d7  check_link_key_load
+0x67dd  gpio_set_wake_by_current_state
+0x67e1  gpio_set_wake
+0x67ed  gpio_clr_wake
+0x67f9  gpio_config_input_nowake
+0x67fb  gpio_config_input
+0x67fe  gpio_config_input_without_wake
+0x6806  gpio_set_high_impedance
+0x680e  gpio_config_output
+0x6812  gpio_config_output0
+0x6815  gpio_common
+0x681b  gpio_check_active
+0x681d  gpio_get_bit
+0x681e  get_bit_common
+0x6823  gpio_get_bit_reverse
+0x6825  gpio_out_inactive
+0x6829  gpio_out_active
+0x682c  gpio_out_flag
+0x682f  gpio_out
+0x6830  gpio_set_bit
+0x6835  gpio_set_before_lpm_common
+0x6874  neglect2_from_6_pin
+0x6876  neglect4_from_9_pin
+0x6878  neglact4_from_23_pin
+0x687a  neglact2_form_25_pin
+0x687c  neglact2_form_30_pin
+0x687e  neglact2_form_2_pin
+0x6880  neglact_1_pin
+0x6882  neglact_4_pin
+0x6884  neglect_2_pin
+0x6885  neglect_pin_loop
+0x6889  gpio_cfg_uart_tx_output
+0x688c  gpio_pu_uart_tx
+0x688f  gpio_rx_config_input_with_pu
+0x6895  gpio_uart2gpio
+0x6899  gpio_check_uart_state
+0x689c  load_chip_option
+0x68a2  load_adc_init
+0x68a8  adc_init_data
+0x68af  adc_init_data_vinlpm
+0x68b8  adc_check_data_vinlpm
+0x68bc  adc_check_2v_vinlpm
+0x68c0  set_vdd_reference_voltage_1v
+0x68c3  adc_init_data_hvin
+0x68cc  adc_check_data_hvin
+0x68d0  adc_check_1v_hvin
+0x68d4  set_vdd_reference_voltage_4v
+0x68d7  adc_init_data_io
+0x68e0  adc_check_data_io
+0x68e4  adc_check_0_5v_io
+0x68e8  set_vdd_reference_voltage_0_5v
+0x68eb  adc_set_mode
+0x68f0  adc_check_vinlpm
+0x68f2  adc_check_hvin
+0x68f4  adc_check_gpio
+0x68f8  read_adc
+0x6908  vdd_calculate_by_mode
+0x690e  vdd_calculate_vinlpm
+0x6912  vdd_calculate_hvin
+0x6916  vdd_calculate_io
+0x691a  vdd_calculate
+0x6923  vdd_calculate2
+0x6927  vdd_calculate1
+0x6930  adc_bat_percent_lowpower_out
+0x6940  adc_set_low_power_flag
+0x6944  adc_set_no_power_flag
+0x6948  keyscan_key_init
+0x694a  keyscan_key_init_next
+0x694f  keyscan_key_init_lp1
+0x6953  keyscan_key_init_end
+0x6954  keyscan_scan_key
+0x6959  keyscan_scan_key_lp1
+0x6964  keyscan_scan_key_lp1_next
+0x696c  keyscan_process_lpm_before
+0x696e  keyscan_process_lpm_before_next
+0x6973  keyscan_process_lpm_before_lp1
+0x6977  keyscan_process_lpm_before_end
+0x6978  keyscan_key_process
+0x6983  keyscan_key_process_next
+0x698c  keyscan_key_lp1
+0x6998  keyscan_key_lp1_next
+0x69a1  keyscan_send_key_data
+0x69a6  pwm_init
+0x69ac  delay_nop100
+0x69ae  pwm_out_set
+0x69be  pwm_duty_cycle_set
+0x69c4  pwm_pwm0_duty_set
+0x69c6  pwm_pwm1_duty_set
+0x69c8  pwm_pwm2_duty_set
+0x69ca  pwm_pwm3_duty_set
+0x69cc  pwm_pwm4_duty_set
+0x69ce  pwm_pwm5_duty_set
+0x69d0  pwm_set_pncnt
+0x69d5  pwm_enable
+0x69d7  pwm_disable
+0x69d8  pwm_gpio_set
+0x69e3  pwm_gpio4_set
+0x69e5  pwm_gpio5_set
+0x69e7  pwm_gpio27_set
+0x69e9  pwm_gpio28_set
+0x69eb  pwm_gpio3_set
+0x69ed  pwm_gpio8_set
+0x69ef  pwm_gpio20_set
+0x69f1  pwm_gpio21_set
+0x69f3  pwm_gpio22_set
+0x69f5  pwm_gpio23_set
+0x69f7  pwm_set_select
+0x69ff  pwm_one_set_select
+0x6a01  pwm_tw0_set_select
+0x6a03  rfcomm_init
+0x6a0d  rfcomm_init_spp
+0x6a16  rfcomm_init_spp_with_credit
+0x6a18  set_cr_bit
+0x6a1a  rfcomm_calculate_fcs_sabm
+0x6a26  rfcomm_calculate_fcs_ua
+0x6a2f  rfcomm_calculate_fcs_dlci0
+0x6a33  rfcomm_calculate_fcs_dlci0_res
+0x6a35  rfcomm_save_fcs_uih
+0x6a44  caculate_uihdata_fcs
+0x6a50  caculate_fcs
+0x6a5d  mod2div
+0x6a61  mod2div_loop
+0x6a66  mod2div_not_enough_reduction
+0x6a70  mod2div_end
+0x6a72  get_rfcomm_snd_adss
+0x6a73  dlci_to_address_cmd
+0x6a79  channel_to_dlci
+0x6a7d  rfcomm_rx_process_dlci0_sabm
+0x6a86  rfcomm_rx_process_dlci0_ua
+0x6a8a  rfcomm_rx_process
+0x6a8e  rfcomm_rx_process_remote_page
+0x6a94  parse_dlci0_rp
+0x6a9b  parse_dlci0_rp_uih
+0x6aa5  parse_dlci0_rp_uih_pn_cmd
+0x6aa7  parse_dlci0_rp_uih_pn_cmd_spp
+0x6aad  parse_dlci0_rp_uih_pn_res
+0x6aaf  parse_dlci0_rp_uih_pn_res_common
+0x6ab1  get_rfcomm_param_modem_status
+0x6ab8  get_rfcomm_head_struct
+0x6abe  get_rfcomm_current_length
+0x6ac3  get_rfcomm_uih_head_struct
+0x6acb  get_param_payload_ptr
+0x6ace  get_rfcomm_length_common
+0x6ad7  get_rfcomm_prarmer_negotiation
+0x6ae6  parse_dlci0_rp_uih_ms_cmd
+0x6ae8  parse_dlci0_rp_uih_ms_cmd_spp
+0x6af2  parse_dlci0_rp_uih_ms_res
+0x6af9  parse_dlci0_rp_uih_ms_res_spp
+0x6afd  parse_dlci0_rp_uih_cmd_port
+0x6b18  parse_uih_rp
+0x6b19  parse_uih_rp_spp
+0x6b21  parse_uih_rp_spp_ua
+0x6b25  parse_uih_rp_spp_sabm
+0x6b37  parse_uih_spp_uih_credits
+0x6b3f  parse_uih_spp_uih
+0x6b40  parse_uih_spp_uih_cont
+0x6b44  parse_uih_rp_spp_disconn_send_event
+0x6b46  parse_uih_rp_spp_disconn
+0x6b4c  rfcomm_rx_process_reconn
+0x6b52  parse_dlci0_reconn
+0x6b58  parse_dlci0_reconn_uih
+0x6b61  parse_dlci0_reconn_uih_pn_cmd
+0x6b68  parse_dlci0_reconn_uih_pn_cmd_spp
+0x6b6c  parse_dlci0_reconn_uih_ms_cmd
+0x6b73  parse_dlci0_reconn_uih_ms_cmd_spp
+0x6b7c  parse_dlci0_reconn_uih_ms_res
+0x6b82  parse_dlci0_reconn_uih_ms_res_spp
+0x6b86  parse_uih_reconn
+0x6b8c  parse_uih_reconn_spp
+0x6b91  parse_uih_reconn_spp_ua
+0x6b95  parse_uih_reconn_spp_sabm
+0x6b96  parse_uih_reconn_spp_disconn
+0x6b97  rfcomm_rx_process_end
+0x6b98  rfcomm_send_more_pkt
+0x6b9c  rfcomm_send_more_pkt_msc_cmd_spp
+0x6ba1  rfcomm_send_more_pkt_msc_cmd_spp0
+0x6ba9  rfcomm_send_sabm
+0x6bb6  rfcomm_send_ua
+0x6bc4  rfcomm_send_param_neg_cmd
+0x6be0  rfcomm_send_param_neg_res
+0x6bfc  rfcomm_send_modem_status_cmd
+0x6c11  rfcomm_send_modem_status_res
+0x6c28  rfcomm_send_uih_without_payload
+0x6c42  rfcomm_increase_credit_given
+0x6c4b  spp_process_rx_data
+0x6c4d  spp_tx_rfcomm_packet
+0x6c57  ssp_tx_rfcomm_from_uart
+0x6c5f  ssp_tx_rfcomm_from_uart_without_credit
+0x6c64  ssp_tx_rfcomm_from_uart_common
+0x6c6b  ssp_tx_rfcomm_from_uart_common0
+0x6c95  ssp_tx_write_length
+0x6c9d  ssp_tx_write_long_packet
+0x6ca6  ssp_tx_write_given_credit
+0x6caa  scheduler_process
+0x6cbb  scheduler_process0
+0x6cbe  scheduler_tx_disconnect_hid
+0x6cc2  scheduler_tx_l2cap_pkt
+0x6cdd  scheduler_tx_l2cap_start_pkt
+0x6ce9  scheduler_tx_l2cap_last_pkt
+0x6ceb  scheduler_tx_l2cap_pkt_end
+0x6cef  scheduler_start_upper_sm
+0x6cf3  scheduler_start_upper_sm_hid
+0x6cf5  process_upper_sm
+0x6cf7  process_upper_sm_remote_page
+0x6cfa  process_upper_sm_rp_wait
+0x6cfb  process_upper_sm_reconn
+0x6d1a  process_upper_sm_reconn_wait
+0x6d1b  process_upper_sm_reconn_sdp_conn
+0x6d21  process_upper_sm_reconn_sdp_cfg
+0x6d2b  process_upper_sm_reconn_ss_spp
+0x6d30  process_upper_sm_reconn_sdp_disconn
+0x6d33  process_upper_sm_reconn_hid_ctrl_conn
+0x6d39  process_upper_sm_reconn_hid_ctrl_cfg
+0x6d3f  process_upper_sm_reconn_hid_int_conn
+0x6d45  process_upper_sm_reconn_hid_int_cfg
+0x6d4b  process_upper_sm_reconn_rfcomm_conn
+0x6d51  process_upper_sm_reconn_rfcomm_cfg
+0x6d57  process_upper_sm_reconn_rfcomm_sabm
+0x6d5d  process_upper_sm_reconn_spp_cmd_pn
+0x6d63  process_upper_sm_reconn_spp_sabm
+0x6d6e  process_upper_sm_reconn_spp_cmd_ms
+0x6d74  process_upper_sm_reconn_sdp_conn_wait
+0x6d78  process_upper_sm_reconn_sdp_cfg_wait
+0x6d7b  process_upper_sm_reconn_ss_spp_wait
+0x6d80  process_upper_sm_reconn_sdp_disconn_wait
+0x6d86  process_upper_sm_reconn_hid_ctrl_conn_wait
+0x6d8a  process_upper_sm_reconn_hid_ctrl_cfg_wait
+0x6d8e  process_upper_sm_reconn_hid_int_conn_wait
+0x6d92  process_upper_sm_reconn_hid_int_cfg_wait
+0x6d97  process_upper_sm_reconn_rfcomm_conn_wait
+0x6d9b  process_upper_sm_reconn_rfcomm_cfg_wait
+0x6d9f  process_upper_sm_reconn_rfcomm_sabm_wait
+0x6da4  process_upper_sm_reconn_spp_cmd_pn_wait
+0x6da8  process_upper_sm_reconn_spp_sabm_wait
+0x6dac  process_upper_sm_reconn_spp_cmd_ms_wait
+0x6daf  process_upper_sm_reconn_setup_hid
+0x6db1  process_upper_sm_reconn_setup_rfcomm
+0x6db3  process_upper_sm_reconn_setup_spp
+0x6db5  process_upper_sm_reconn_termination
+0x6db7  upper_sm_send_sdp_conn
+0x6dbe  upper_sm_send_sdp_cfg
+0x6dc3  upper_sm_send_sdp_disconn
+0x6dcd  upper_sm_send_ss_spp
+0x6dd1  upper_sm_send_rfcomm_conn
+0x6dd8  upper_sm_send_rfcomm_cfg
+0x6ddd  upper_sm_send_hid_ctrl_conn
+0x6de4  upper_sm_send_hid_ctrl_cfg
+0x6de9  upper_sm_send_hid_int_conn
+0x6df0  upper_sm_send_hid_int_cfg
+0x6df5  upper_sm_send_rfcomm_sabm
+0x6dfc  upper_sm_send_spp_cmd_pn
+0x6e02  upper_sm_send_spp_sabm
+0x6e0c  upper_sm_send_spp_cmd_ms
+0x6e11  sdp_process
+0x6e2c  sdp_process_ss_req
+0x6e4c  ss_req_loop
+0x6e4f  ss_req_blank
+0x6e54  sdp_process_sa_req
+0x6e5f  sa_isnot_wholerange
+0x6e62  sa_judge_wholerange
+0x6e6b  sa_judge_wholerange_false3
+0x6e6d  sa_judge_wholerange_false2
+0x6e6f  sa_judge_wholerange_false1
+0x6e71  sa_req_loop
+0x6e74  sa_req_range
+0x6e7a  sa_req_range_id_increase
+0x6e83  sa_req_range_id_finish
+0x6e86  sa_req_one_id
+0x6e8b  sa_req_check_next_id
+0x6e92  sa_req_handle_attributelist_next
+0x6ea2  sa_req_handle_attributelist_notfound
+0x6ea5  sa_req_handle_attributelist_end
+0x6eaa  sdp_store_continue_common
+0x6eae  sdp_store_continue_0byte
+0x6eb0  sdp_store_continue_1byte
+0x6eb3  sdp_store_continue_2byte
+0x6eb6  sdp_store_continue_end
+0x6eb8  sa_req_all
+0x6eda  sa_req_all_fisrt_fragment
+0x6ede  sa_req_all_parlength_continue_byte
+0x6ee1  sa_req_all_parlength_continue_byte_end
+0x6ee7  sa_req_all_fragment_sdp
+0x6ef5  sa_req_all_answer_attributelist_full_loop
+0x6efe  sa_req_all_last_frag_continue
+0x6f00  sa_req_all_frag_end
+0x6f02  sdp_process_ssa_req
+0x6f0c  ssa_req_loop
+0x6f1c  ssa_req_attributelist_next
+0x6f27  ssa_req_attributelist_notfound
+0x6f29  ssa_req_attributelist_end
+0x6f2e  sdp_store_maxbyte
+0x6f36  ssa_req_range
+0x6f47  ssa_req_range_find_handle
+0x6f4f  ssa_req_range_later_freg_with_continue
+0x6f57  ssa_req_range_send_not_maxbyte
+0x6f5e  ssa_req_range_maxbyte_with_continue
+0x6f61  ssa_req_range_maxbyte_with_continue_cpy
+0x6f67  ssa_req_range_next_handle
+0x6f6c  ssa_req_range_get_length
+0x6f75  ssa_req_range_first_freg
+0x6f7f  ssa_req_range_firstfreg_not_maxbyte_with_continue
+0x6f81  ssa_req_range_freg_no_continue
+0x6f83  ssa_req_range_lastfreg
+0x6f84  ssa_req_range_lastfreg_common
+0x6f8f  ssa_req_range_firstfreg_maxbyte_with_continue
+0x6f94  ssa_req_range_attrbutes_length
+0x6f9a  ssa_req_range_attrbutes_length_no_continue
+0x6fa0  ssa_req_range_freg_with_continue
+0x6fb0  ssa_req_range_common
+0x6fba  sdp_process_error_res
+0x6fbb  sdp_invalid_service_record_handle
+0x6fbe  sdp_invalid_pdu_size
+0x6fc1  sdp_insufficient_resource
+0x6fc4  sdp_invalid_request_syntax
+0x6fc6  sdp_error_response
+0x6fd0  ask_serviceclassid
+0x6fd5  classidloop
+0x6fde  skip2bytes
+0x6fe7  frstbwrong
+0x6fea  scndbwrong
+0x6ff3  cmp032
+0x6ff6  cmp016
+0x6ff8  cmpuuid
+0x6ffe  uuidsize
+0x7019  wrong12b
+0x701a  wrong12b1
+0x701e  chck12dn
+0x7020  loopornot
+0x7026  asksrv_error
+0x7028  dataelementtype6
+0x7037  dsize32
+0x7039  dsize16
+0x703c  dsize
+0x703e  dsize_error
+0x7040  ss_empty_rsp
+0x7043  sa_empty_rsp
+0x7046  ssa_empty_rsp
+0x7048  empty_response
+0x7057  fullsearch
+0x7059  outempty
+0x705b  sdp_data_len
+0x7062  sdp_get_data
+0x7066  sdp_get_data_type0
+0x7069  sdp_get_data_type_not0_sizeindex01234
+0x706c  sdp_get_data_type_not0
+0x7073  sdp_get_data_type_not0_sizeindex5
+0x7076  sdp_get_data_type_not0_sizeindex6
+0x707a  sdp_get_data_type_not0_sizeindex7
+0x7082  search_all_uuid
+0x7086  search_all_uuid_llop
+0x708d  search_uuid
+0x7090  search_uuid_next
+0x7096  search_uuid_loop
+0x709a  search_uuid_not_found
+0x70a0  search_uuid_check_same_handle
+0x70a6  search_uuid_store_handle
+0x70ad  search_uuid_nomatch
+0x70b1  search_handle
+0x70b4  search_handle_loop
+0x70c6  search_attrib
+0x70c9  search_attrib_next
+0x70cc  search_attrib_loop
+0x70d4  search_attrib_found_uuid
+0x70da  search_attrib_loop_attribs
+0x70e4  search_attrib_end
+0x70e7  search_handle_attrib
+0x70ea  search_handle_attrib_next
+0x70f4  search_handl_attrib_found_handle
+0x70f6  search_handle_attrib_loop_attribs
+0x7100  search_handle_attrib_end
+0x7102  search_rfcomm_cn
+0x710d  search_uuid_in_data
+0x7110  search_uuid_in_data_loop
+0x7120  search_uuid_in_data_found_element_index5
+0x7123  search_uuid_in_data_found_element_index6
+0x7126  search_uuid_in_data_found_element_index7
+0x7129  search_uuid_in_data_found_uuid
+0x712f  search_uuid_in_data_type_uuid_128
+0x7130  search_uuid_in_data_type_uuid_32
+0x7132  search_uuid_in_data_type_uuid_16
+0x7138  sdp_send_spp_request
+0x714f  function_g2
+0x7166  function_f6_eb
+0x7176  get_r
+0x717a  function_f6_ea
+0x718d  function_f5
+0x719f  function_f5_common
+0x71b0  store_addr_common_b
+0x71b5  store_addr_common_a
+0x71ba  function_f4_ca
+0x71c5  function_f4_cb
+0x71d0  function_aes_cmac
+0x71d4  function_ceil16
+0x71e2  function_aes_cmac_set_flag_0_balnk
+0x71e5  function_aes_cmac_set_flag_0
+0x71e6  function_aes_cmac_set_flag_0_common
+0x71f0  function_aes_cmac_aes
+0x71f3  function_aes_cmac_aes_loop
+0x71f9  function_aes_cmac_aes_loop_end
+0x7201  load_inverse_result
+0x7205  store_inverse_k
+0x7207  inverse_k
+0x720a  inverse_memdat
+0x720e  bn_lshift_0_inverse
+0x7218  function_aes_cmac_k1_inverse
+0x7219  function_aes_cmac_inverse_common
+0x721d  function_aes_cmac_k2_inverse
+0x721f  function_aes_cmac_generate_subkey
+0x7227  function_aes_cmac_k1
+0x7230  function_aes_cmac_k1_0
+0x7231  function_aes_cmac_k2
+0x723a  function_aes_cmac_xor_rb
+0x723b  function_aes_cmac_xor_rb_loop
+0x7241  function_aes_cmac_xor_loop_common
+0x7245  function_aes_cmac_padding
+0x7248  function_aes_cmac_padding_loop
+0x724d  function_aes_cmac_padding_loop2
+0x7250  function_aes_cmac_padding_beq_length
+0x7251  function_aes_cmac_padding_common
+0x7253  function_aes_cmac_padding_big_length
+0x7255  generate_kinit
+0x7259  function_e21
+0x7268  function_e22
+0x726e  function_e22_pin_init
+0x726f  function_e22_genx_pin
+0x7272  function_e22_genx_loop
+0x727c  function_e22_genx_end
+0x7288  function_e1
+0x728b  function_e3
+0x7292  function_hash
+0x72a8  function_ar
+0x72b1  function_ar_loop
+0x72b9  function_ar_original
+0x72cf  key_scheduling
+0x72d5  key_rotateloop
+0x72e0  key_select_octet_loop
+0x72e5  key_select_octet_nwrap
+0x72ef  bias_round_key_loop
+0x72f6  key_sched_zero
+0x72f8  create_byte_16_loop
+0x7300  xor_mod32
+0x7301  xor_mod32_ar2
+0x7304  xor_mod32_loop
+0x730a  xor_mod32_invert
+0x730d  xor_even
+0x7313  el_boxes
+0x7316  el_box_loop
+0x731c  e_boxes
+0x7322  pht
+0x7325  pht_loop
+0x7331  permute
+0x7340  permute_exchange
+0x7341  permute_loop
+0x7350  add16
+0x7352  xor16
+0x7353  xor_add16
+0x7354  xoradd_loop
+0x7359  xoradd_add
+0x735a  xoradd_store
+0x735f  function_expand
+0x7365  expand_12
+0x7366  expand_cont
+0x736a  key_offset
+0x7379  key_addxor
+0x737a  key_addxor_loop
+0x737e  key_add
+0x7380  key_high
+0x7381  key_xor
+0x7382  key_store
+0x7386  copy_aco
+0x738b  concatenate_temp24
+0x738c  concatenate_temp16
+0x738f  loop1
+0x7390  generate_stk
+0x7394  authenticate_rconfirm
+0x7397  authenticate_mconfirm
+0x739c  generate_confirm
+0x739f  generate_mrand
+0x73a2  generate_sk
+0x73ab  first_block_counter
+0x73ad  first_block_data
+0x73ae  first_block
+0x73c1  generate_mic
+0x73d0  generate_mic_loop
+0x73d5  generate_mic_end
+0x73d9  aes_crypt_data
+0x73e3  le_encrypt
+0x73fb  le_decrypt
+0x73ff  le_dec_cont
+0x741d  wait_aes
+0x741f  do_aes_ocb
+0x7422  do_aes_cbc
+0x7425  do_aes_ctr
+0x7428  aes_init
+0x742b  function_s1
+0x7440  function_c1
+0x7446  function_c1_master
+0x7456  function_c1_irat
+0x745b  function_c1_loop1
+0x746e  padding_data
+0x7473  padding_loop
+0x7478  aes_load_data
+0x7479  load_data_loop
+0x747d  load_data_padding
+0x7482  aes_load_xor
+0x7484  load_key
+0x7486  load_data128
+0x7487  load_regext
+0x7488  load_regext_loop
+0x748d  load_sk
+0x748f  clear_hidata
+0x7491  aes_clear_data
+0x7492  aes_clear
+0x7493  clear_loop
+0x7494  clear_data_rest
+0x7497  store_aes_result
+0x7499  send_aes_result_loop
+0x749e  store_enc_data
+0x74a4  store_enc_loop
+0x74ac  store_enc_byte
+0x74b0  compare_res
+0x74b2  compare_res_loop
+0x74b9  enable_authrom
+0x74bd  disable_authrom
+0x74c1  init_memp
+0x7518  init_memp_256
+0x756a  publickey_init
+0x756d  sp_calc_sequence_256_check
+0x757b  stop_publickey_calc_256
+0x757d  sp_initialize
+0x7583  sp_clear_flags
+0x7588  sp_generate_local_key
+0x758a  sp_master_generate_local_key
+0x758d  sp_generate_local_key0
+0x7590  sp_start_send_pubkey
+0x7595  sp_calc_check_publickey_256
+0x75b0  sp_calc_b256
+0x75c6  sp_calc_check_publickey
+0x75e1  sp_calc_b
+0x75f7  sp_calculate_commitment
+0x7602  master_sp_calculate_commitment
+0x7609  sp_calculate_commitment0
+0x760f  master_sp_calculate_commitment0
+0x7612  sp_local_random_key_generator
+0x7615  sp_calculate_commitment_wait_dhkey_calc
+0x7617  sp_confirm_check
+0x7628  sp_confirm_check_success
+0x762e  sp_confirm_check_success_master
+0x7631  sp_confirm_check_failed
+0x7637  sp_confirm_check_failed_master
+0x763a  sp_confirm_calc
+0x763e  sp_confirm_calc_ready
+0x764b  sp_confirm_calc_master
+0x764e  sp_master_key_prarm_push
+0x7658  sp_link_key_prarm_push
+0x7662  sp_link_key_calc
+0x766d  sp_pubkey_calc
+0x7684  sp_pubkey_generated
+0x768a  sp_dhkey_calc
+0x769b  sp_dhkey_generated
+0x76a2  random_generator
+0x76a7  compare4
+0x76b1  compare4_failed
+0x76b3  compare4_success
+0x76b5  simple_pairing_sequence
+0x76c6  master_simple_paring_sequence
+0x76d8  master_set_mem_master_sp_flag
+0x76da  master_clear_mem_master_sp_flag
+0x76dc  sp_calc_sequence
+0x76e7  sp_calc_sequence_done
+0x76ec  bn_testbit
+0x76f2  ec_copy
+0x76f5  bn_eq_zero
+0x76fb  bn_eq_0
+0x7704  bn_bigeq
+0x7707  bn_bigeq_0
+0x7711  bn_add
+0x7713  bn_add_0
+0x771f  bn_sub
+0x7721  bn_sub_0
+0x772d  bn_rshift6
+0x772f  bn_rshift
+0x7730  bn_rshift_0
+0x773b  bn_lshift
+0x773d  bn_lshift_0
+0x7748  bn_lshiftmod
+0x7749  bn_lshiftmod_ismod
+0x7751  bn_lshiftmod_0
+0x7755  bn_addmod
+0x7758  bn_submod
+0x775f  bn_p192mod
+0x7780  bn_load
+0x7781  bn_load_0
+0x7786  bn_mulmod
+0x7790  bn_mulmod_1
+0x7792  bn_mulmod_0
+0x77a8  bn_sqrmod
+0x77aa  bn_rshifteven
+0x77ab  bn_rshifteven_1
+0x77ba  bn_rshifteven_0
+0x77be  bn_invmod
+0x77cd  bn_invmod_2
+0x77e8  bn_invmod_1
+0x77f6  bn_invmod_0
+0x7803  ecdbl
+0x7854  ecadd
+0x78c0  eckp_0
+0x78ce  eckp_1
+0x78d3  ecunmapz
+0x78e5  sha_endian_swap2
+0x78e8  sha_endian_loop
+0x78f0  sha_getw
+0x78f4  sha_r
+0x78f6  sha_r_loop
+0x790b  sha_init
+0x790d  sha_init_0
+0x7912  sha
+0x7916  sha_0
+0x791f  sha_loop
+0x7948  sha_1
+0x794e  sha_result
+0x7950  sha_regext_save
+0x7955  pad_xor
+0x7958  pad_xor_0
+0x795f  pad_xor_1
+0x7962  g_noninit_number_confirm
+0x7965  g_noninit
+0x7967  g_noninit0
+0x7975  g_init
+0x7984  g_common
+0x798d  g_common0
+0x799e  function_f1_no_key
+0x79a0  function_f1
+0x79a2  function_f1_common
+0x79d7  function_f2
+0x7a0d  function_f3a
+0x7a0f  function_f3a_common
+0x7a1e  function_f3a_no_pin
+0x7a21  function_f3b_no_pin
+0x7a24  function_f3b
+0x7a26  function_f3b_common
+0x7a33  function_f3_common
+0x7a5d  eckp_calc_init
+0x7a5e  eckp_calc_init_1
+0x7a68  eckp_calc
+0x7a70  memcpy_dword_swap4
+0x7a71  memcpy_dword_swap
+0x7a72  memcpy_dword_swap_loop
+0x7a77  sp_initialize_256
+0x7a7d  sp_pubkey_calc_256
+0x7a93  sp_pubkey_generated_256
+0x7a99  sp_dhkey_calc_256
+0x7aa9  sp_dhkey_generated_256
+0x7aaf  sp_calc_sequence_256
+0x7ab9  sp_calc_sequence_done_256
+0x7abf  eckp_calc_256
+0x7ac7  eckp_calc_init_256
+0x7aca  eckp_calc_init_256_1
+0x7ad4  ecunmapz_256
+0x7ae6  ecdbl_256
+0x7b37  ecadd_256
+0x7ba3  bn_invmod_256
+0x7bb1  bn_invmod_256_2
+0x7bcc  bn_invmod_256_1
+0x7bda  bn_invmod_256_0
+0x7be1  bn_mulmod_256
+0x7bef  bn_mulmod_256_1
+0x7bf5  bn_mulmod_256_0
+0x7c0a  bn_p256mod
+0x7c73  bn_load_mem
+0x7c77  bn_load_256
+0x7c79  bn_sqrmod_256
+0x7c7b  bn_add_256
+0x7c7d  bn_addmod_256
+0x7c80  bn_lshiftmod_256
+0x7c81  bn_lshiftmod_ismod_256
+0x7c8a  bn_lshiftmod_p_256
+0x7c92  sub_p2_256
+0x7c96  bn_submod_256
+0x7ca0  bn_submod_256_np
+0x7ca9  bn_sub_256
+0x7cab  bn_rshift_256
+0x7cae  bn_lshift_256
+0x7cb1  bn_bigeq_256
+0x7cb5  bn_eq_zero_256
+0x7cb8  bn_rshifteven_256
+0x7cb9  bn_rshifteven_256_1
+0x7cc8  bn_rshifteven_256_0
+0x7ccc  ui_init
+0x7cd1  ui_dispatch
+0x7cd3  ui_button_init
+0x7cdd  ui_button_polling
+0x7ce3  ui_button_down
+0x7cef  ui_button_up
+0x7cf9  ui_button_check_long_press
+0x7d00  lpm_button_get_wake_lock
+0x7d02  lpm_button_clean_wake_lock
+0x7d04  calc_curr_struct_prt
+0x7d08  ui_led_init_global
+0x7d0d  ui_led_init_loop
+0x7d14  ui_led_on_global
+0x7d19  ui_led_off_global
+0x7d1e  ui_led_blink_start_global
+0x7d24  ui_led_set_style_global
+0x7d29  ui_led_dispatch
+0x7d2c  ui_led_blink_polling
+0x7d32  ui_led_off_static
+0x7d35  ui_led_on_static
+0x7d38  ui_led_change_style_by_type
+0x7d41  ui_led_blink_state_lighting
+0x7d4c  ui_led_blink_state_darking
+0x7d58  ui_led_blink_infinite
+0x7d5c  ui_led_blink_timer_start
+0x7d5e  ui_led_stop_timer
+0x7d60  ui_timer_timeout
+0x7d64  ui_timer_check
+0x7d6b  ui_timer_check_loop
+0x7d75  ui_timer_init
+0x7d78  ui_timer_check_end
+0x7d7f  ui_timer_check_send_evt
+0x7d80  ui_ipc_get_lock
+0x7d81  ui_ipc_get_lock_wait
+0x7d84  ui_ipc_put_lock
+0x7d86  ui_ipc_send_event
+0x7d8f  ui_ipc_send_cmd
+0x7d98  ui_ipc_clean_all_fifo
+0x7d9c  check_51cmd
+0x7da7  check_51cmd_once
+0x7dc8  check_51cmd_once_continue
+0x7dd6  check_51cmd_check_idle
+0x7ddb  check_51cmd_restore
+0x7ddd  check_51cmd_start_discovery
+0x7de2  check_51cmd_stop_discovery
+0x7de8  check_51cmd_reconnect
+0x7dea  check_51cmd_disconnect
+0x7ded  check_51cmd_enter_sniff_subrating
+0x7dee  check_51cmd_exit_sniff_subrating
+0x7def  check_51cmd_sniff_test
+0x7df0  check_51cmd_pincode
+0x7df2  check_51cmd_inq
+0x7df3  check_51cmd_stop_inq
+0x7df4  check_51cmd_adv
+0x7dfa  check_51cmd_stop_adv
+0x7dff  check_51cmd_direct_adv
+0x7e05  check_51cmd_stop_direct_adv
+0x7e0a  check_51cmd_le_disconnect
+0x7e0e  check_51cmd_ble_update_connect_param
+0x7e0f  check_51cmd_led_off
+0x7e11  check_51cmd_led_on
+0x7e13  check_51cmd_led_start_blink
+0x7e15  check_51cmd_le_start_con
+0x7e18  check_51cmd_start_scan
+0x7e1a  check_51cmd_stop_scan
+0x7e1d  check_51cmd_hibernate
+0x7e23  check_51cmd_hibernate_btn_disabled
+0x7e25  check_51cmd_le_smp_sec_req
+0x7e26  check_51cmd_role_switch
+0x7e2f  check_51cmd_bb_reconn_cancel
+0x7e31  check_51cmd_dhkey_not_accept
+0x7e34  ui_check_paring_button
+0x7e38  queue_init
+0x7e3d  queue_push
+0x7e4c  calc_queue_next_ptr
+0x7e54  queue_pop
+0x7e65  queue_empty
+0x7e69  queue_full
+0x7e6d  queue_get_size
+0x7e71  right_shift_n
+0x7e73  right_shift_n_loop
+0x7e76  left_shift_n
+0x7e79  left_shift_n_loop
+0x7e7c  push_stack
+0x7e85  push_stack_rega_b_c
+0x7e8c  pop_stack
+0x7e95  pop_stack_rega_b_c
+0x7e9c  get_contw
+0x7e9f  get_contr
+0x7ea2  store_contw
+0x7ea5  store_contr
+0x7ea8  save_cont_pointers
+0x7ead  load_cont_pointers
+0x7eb2  memcpy96
+0x7eb3  memcpy64
+0x7eb5  memcpy12
+0x7eb6  memcpy4
+0x7eb9  memcpy8
+0x7ebc  memcpy48
+0x7ebd  memcpy32
+0x7ebe  memcpy24
+0x7ebf  memcpy16
+0x7ec1  delay_10ms
+0x7ec2  delay_ms_wait
+0x7ec5  bn_zero
+0x7ec6  memset0
+0x7ec7  memset8
+0x7eca  memset0_8
+0x7ecd  memset0_4
+0x7ed0  clear_mem_256
+0x7ed2  clear_mem_512
+0x7ed4  clear_mem
+0x7ed7  clear_mem_loop
+0x7eda  clear_temp_block
+0x7edd  xor_loop
+0x7ee5  inverse_data
+0x7eec  inverse_loop
+0x7ef4  memcpy_fast
+0x7ef6  memcpy_fast_loop
+0x7efb  memcpy_fast_loop_four
+0x7f01  memcpy
+0x7f03  memcpy_loop
+0x7f07  timer_stop
+0x7f08  timer_init
+0x7f11  timer_check_timeout
+0x7f15  timer_reinit
+0x7f16  timer_check
+0x7f21  timer_loop
+0x7f25  timer_counting
+0x7f2c  clk_add
+0x7f37  clk_diff_rt
+0x7f39  clk_diff
+0x7f3e  clk_diff_pos
+0x7f43  clk2rt
+0x7f49  clk2lpo
+0x7f50  clk2bt
+0x7f58  string2dec_from_uart
+0x7f59  string2dec_from_uart_done
+0x7f64  uchar2dialog
+0x7f6d  uchar2dialog_number
+0x7f70  uchar2dialog_a2f
+0x7f73  pn9
+0x7f76  pn9_loop
+0x7f86  wait_div_end
+0x7f88  string_compare
+0x7f91  ceiling
+0x7f95  swap
+0x7f99  clean_mem
+0x7f9c  callback_func
+0x7f9e  wait_uarttx
+0x7fa1  ice_break
+0x7fa3  ice_setbp
+0x7fa8  ice_setbp2
+0x7fad  ice_set_write_bp
+0x7fb0  test_enable_white
+0x7fb4  check_uart_tx_buff
+0x7fb6  pdata_sub_temp
+0x7fb8  fifo_in
+0x7fbe  fifo_in_push
+0x7fc4  fifo_out
+0x7fc8  fifo_out_loop
+0x7fcd  fifo_out_end
+0x7fd0  fifo_is_empty
+0x7fd2  fifo_is_full
+0x7fd4  fifo_is_near_full
+0x7fd6  fifo_content_count
+0x7fd7  fifo_content_count_loop
+0x7fdd  not_greater_than
+0x7fe1  disable_positive
+0x7fe3  disable_zero
+0x7fe5  enable_zero
+0x7fe7  enable_user
+0x7fe9  disable_user
+0x7feb  enable_user2
+0x7fed  disable_user2
+0x7fef  disable_blank
+0x7ff1  enable_blank
+0x7ff3  reverse_byte
+0x7ff9  reverse_loop
+0x20001 z_entrance1
+0x20004 z_mouse_bb_disconnected
+0x2000e z_mouse4_0_event_bb_disconn
+0x20012 z_mouse_event_light_state_pairing
+0x20015 z_mouse_event_light_state_hibernate
+0x2001b z_hid_rx_process
+0x20023 z_hid_rx_set_protocol
+0x30001 z_entrance2
+0x30003 z_send_lmp
+0x3000c z_send_lmp_escape
+0x3000f z_send_lmpext_features_res
+0x30012 z_send_lmpext_features_req
+0x30015 z_check_ssp_enable
+0x30018 z_send_lmp_setup_complete
+0x3001a z_send_lmp_sniff_req
+0x3001c z_send_lmp_accepted
+0x30025 z_send_lmp_accepted_max_slot_req
+0x40001 z_entrance3
+0x40003 z_process_conn_sm
+0x40005 z_process_conn_sm_continue
+0x4000a z_host_creat_conn_wait_switch
+0x4000e z_host_create_conn_switch_accept
+0x4000f z_host_create_conn_auth_pair
+0x40012 z_host_create_conn_auth_pair_true
+0x40023 z_bt_send_max_slot_req_accept_after_switch_wait
+0x40025 z_host_create_conn_send_conn_req
+0x50001 z_entrance4
+0x50004 z_le_update_param
+0x50006 z_mouse_le_lpm_mult_reinit
+0x50008 z_mouse_le_conn_param_lpm_enable
+0x5000a z_mouse_le_conn_param_lpm_disable
+0x5000c z_mouse_le_conn_param_check
+0x50016 z_le_update_channel_map
+0x5001b z_le_channel_map_overflow_check
+0x60001 z_entrance5
+0x60003 z_mouse_start_discovery
+0x60014 z_mouse_start_discovery_norandom
+0x60025 z_check_51cmd_adv
+0x70001 z_entrance6
+0x70004 z_g24_start_24g_mode
+0x7000a z_g24_tx_attemp_dongle
+0x7000c z_g24_tx_attemp_dongle_loop
+0x70012 z_g24_tx_attemp_dongle_succ
+0x70018 z_g24_tx_attemp_data_prep
+0x70021 z_g24_attemp_txdata_retry
+0x70026 z_mouse_24g_pairing_button
+0x70034 z6_g24_start_pairing_sm1
+0x70036 z6_g24_set_pairing_sm_1
+0x70038 z6_g24_pair_init
+0x80001 z_entrance7
+0x80003 z_g24_auto_pair_start
+0x80006 z_g24_auto_pair_restart
+0x80007 z_g24_auto_pair_start_loop
+0x80019 z7_g24_tx_attemp_data_prep
+0x80022 z_g24_auto_pair_retry
+0x8002c z_g24_auto_pair_all_powerful
+0x80030 z_g24_ch_syncword_crc8_init
+0x80032 z_g24_auto_pair_device_attemp
+0x80034 z_g24_auto_pair_pair_attemp
+0x80036 z_g24_start_pairing_sm1
+0x80038 z_g24_set_pairing_sm_1
+0x8003a z_g24_pair_init
+0x90001 z_entrance8
+0x90004 z_le_addr_random_config
+0x90006 z_le_otp_adc_empty
+0x90008 z_mouse_setting_config
+0x9001e z_mouse_bt_sdp_update
+0xa0001 z_entrance9
+0xa0005 z_g24_pairing_sm
+0xa000c z_g24_pairing_sm_1
+0xa000f z_g24_pairing_sm_2
+0xa0012 z_g24_pairing_sm_3
+0xa0014 z_g24_pairing_sm_common
+0xa0019 z_g24_put_pairing_data_in_buff
+0xa001f z_g24_paring_mode
+0xa0025 z_g24_pairing_sm_1_waiting_ack
+0xa0027 z_g24_pairing_sm_2_waiting_ack
+0xa0029 z_g24_pairing_sm_3_waiting_ack
+0xa002f z_mouse_24g_pairing_complete
+0xb0001 z_entrancea
+0xb0007 z_mouse_24g_attempt_fail
+0xb000d z_mouse_le_conn_param_update_rsp_recieved
+0xb0019 z_mouse_bb_event_reconn_failed
+0xb0020 z_mouse_le_bb_disconnected
+0xb0029 z_mouse_before_hibernate
+0xc0001 z_entranceb
+0xc0007 z_mouse_le_bb_event_connected
+0xc000b p_mouse_le_bb_event_connected_next
+0xc000e z_mouse_sniff_not_accept
+0xc0014 z_mouse_enter_sniff_check
+0xc0019 z_mouse_le_ll_start_encryt
+0xc001c z_mouse_le_ll_reconn_start_encryt
+0xc001e z_mouse_le_ll_enable_start_enc_flag
+0xc0020 z_mouse_bb_event_disconnected
Index: rom/peripherals.prog
===================================================================
--- /branch/mouse_project/YJX_Project/YJX_1059/JDT_172_BD_2.4G&BLE/rom/peripherals.prog	(nonexistent)
+++ /branch/mouse_project/YJX_Project/YJX_1059/JDT_172_BD_2.4G&BLE/rom/peripherals.prog	(working copy)
@@ -0,0 +1,2441 @@
+
+/* ===================== two wire SPI gpio ======================= */
+
+twspi_reset:
+	bpatchx patch31_4,mem_patch31
+	hfetch 1,core_gpio_oe3
+	arg 0x06,temp
+	ior temp,pdata
+	hstore 1,core_gpio_oe3
+	hfetch 1,core_gpio_out3
+	ior temp,pdata
+	hstore 1,core_gpio_out3
+	call twspi_disable
+	hfetch 1,core_gpio_out3
+	set0 1,pdata
+	set0 2,pdata
+	hstore 1,core_gpio_out3	
+	nop 30  
+	branch twspi_enable
+
+twspi_reset2:
+	hfetch 1,core_gpio_oe3
+	arg 0xc0,temp
+	ior temp,pdata
+	hstore 1,core_gpio_oe3
+	hfetch 1,core_gpio_out3
+	ior temp,pdata
+	hstore 1,core_gpio_out3
+	call twspi_disable
+	hfetch 1,core_gpio_out3
+	set0 6,pdata
+	set0 7,pdata
+	hstore 1,core_gpio_out3	
+	nop 30  
+	branch twspi_enable2
+
+twspi_disable:
+	hfetch 1,core_gpio_sel1
+	and pdata,0xfc,pdata
+	hstore 1,core_gpio_sel1  //disable spi
+	rtn
+twspi_enable:
+	hfetch 1,core_gpio_sel1
+	or pdata,0x01,pdata
+	hstore 1,core_gpio_sel1  //enable spi
+	rtn
+twspi_enable2:
+	hfetch 1,core_gpio_sel1
+	or pdata,0x03,pdata
+	set0 4,pdata
+	hstore 1,core_gpio_sel1  //enable spi2
+	rtn
+
+// input read reg number: pdata 
+//output reg data: pdata
+sensor_read:
+	copy pdata,regb
+	call spi_ncs_enable
+	nop 100
+	copy regb,pdata
+	call twspi_read
+	copy pdata,regb
+	call spi_ncs_disable
+	nop 100
+	copy regb,pdata
+	rtn
+// input write reg number: pdata 
+sensor_write:
+	copy pdata,regb
+	call spi_ncs_enable
+	nop 100
+	copy regb,pdata
+	call twspi_write
+	call spi_ncs_disable
+	nop 100
+	rtn
+//spi gpio init .
+//0xff :disable spi ncs gpio init
+spi_ncs_gpio_init:
+	fetcht 1,mem_spi_ncs_gpio
+	branch gpio_config_output
+
+//nsc gpio ouput low
+spi_ncs_enable:
+	fetcht 1,mem_spi_ncs_gpio
+	branch gpio_out_active
+
+//ncs gpio output high
+spi_ncs_disable:
+	fetcht 1,mem_spi_ncs_gpio
+	branch gpio_out_inactive
+
+
+twspi_write:
+	branch spid_write_reg
+	
+twspi_read:
+	branch spid_read_reg
+
+
+
+/* ===================== code loading ======================= */
+
+
+read_function_aes:
+	nbranch read_function,user
+	hfetch 1,core_gpio_key2
+	or_into 0x2,pdata   	// enable aes 
+	hstore 1,core_gpio_key2
+read_function:
+	copy temp,null
+	branch read_fuction_zero,zero
+	copy regc,pc
+read_fuction_zero:
+	isolate0 0,null
+	branch set_ucode_status
+	
+/* return temp = block length */
+get_block_header:
+	force 4,temp
+get_block_header0:
+	arg mem_ucode_buf,rega
+	hfetch 1,core_gpio_key2
+	and_into 0xfd,pdata   	// disable aes for header
+	hstore 1,core_gpio_key2
+	call read_function
+	arg 0x55aa,rega
+	fetch 2,mem_ucode_buf
+	ifetcht 2,contr
+	isub rega,null
+	rtn	
+
+read_first_block:
+	arg 2,temp
+	arg mem_ucode_ptr,rega
+	call read_function
+	fetch 2,mem_ucode_ptr
+	store 2,mem_addr_mi
+	call get_iv,user
+	rtn
+	
+get_iv:
+	arg 16,temp
+	arg mem_ucode_keybuf,rega
+	hfetch 1,core_gpio_key2
+	and_into 0xfd,pdata   // disable aes for iv
+	hstore 1,core_gpio_key2
+	call read_function
+	arg mem_ucode_keybuf,contr
+	arg 16,loopcnt
+	call aes_load_data
+	call aes_init
+	call aes_clear_data
+	branch do_aes_cbc					/* generate first IV */
+
+load_storage:
+	disable match
+	call get_block_header
+	nrtn zero
+	enable match
+	jam 0x80, core_ucode_ctrl
+	jam 0,core_ucode_hi
+	jam 0,core_ucode_low
+	arg core_ucode_data,rega
+	call read_function_aes
+	jam 0x0, core_ucode_ctrl
+load_storage_loop:
+	arg 6,temp
+	call get_block_header0
+	nrtn zero
+	ifetch 2,contr
+	iforce rega
+	call read_function
+	branch load_storage_loop
+
+	
+	/* only load memory data from eeprom */
+reload_eeprom:
+	call clean_mem
+	setarg 0x1000
+	store 2,mem_addr_mi
+	arg iicd_read_eep,regc
+	arg 2,loopcnt
+reload_eeprom_loop:
+	call get_block_header
+	nrtn zero
+	fetch 2,mem_addr_mi
+	byteswap pdata,pdata
+	iadd temp,pdata
+	byteswap pdata,pdata
+	store 2,mem_addr_mi
+	loop reload_eeprom_loop
+	branch load_storage_loop
+	
+loadcode:
+	call clean_mem
+	disable user
+	call otp_enable_chgpump
+	setarg otp_ucode_flag
+	arg mem_otp_ucode_flag,rega
+	arg 2,temp
+	call otpd_read_data
+	fetch 2,mem_otp_ucode_flag
+	bbit0 otp_uflag_aes, loadcode_otp
+	jam 0x25,core_clkoff			// disable debug uart
+	setarg otp_ucode_aeskey
+	arg mem_ucode_keybuf,rega
+	arg 16,temp
+	call otpd_read_data
+	jam lock_otp,core_misc_ctrl	// disable further read/write of key
+	set1 mark_otp_encrypt,mark	
+	arg mem_ucode_keybuf,contr
+	call load_key
+	enable user					// set user for aes
+loadcode_otp:
+	jam 0,mem_loadcode_times
+loadcode_otp_2:
+	call loadcode_check_times
+	fetch 2,mem_otp_ucode_flag
+	byteswap pdata,pdata
+	arg 0x7ff,temp
+	iand temp,pdata
+	branch loadcode_iic, zero
+	call otp_set_addr
+	arg otpd_read_code,regc
+	call get_iv,user
+	call load_storage
+	fetch 1,mem_ucode_status
+	bbit0 0,loadcode_otp_2			// crc error, try again
+	
+loadcode_iic:
+	call otp_disable_chgpump
+	jam 0,mem_loadcode_times
+loadcode_iic_2:	
+	call loadcode_check_times
+	call clear_eeprom_size_2k
+	fetch 1,mem_otp_ucode_flag
+	bbit1 otp_uflag_skip_eep,loadcode_spi
+	call loadcode_iic_by_eeprom
+	nbranch loadcode_iic_eeprom_2k,match
+	fetch 1,mem_ucode_status
+	bbit0 0,loadcode_iic_2			// crc error, try again
+	branch loadcode_hci
+loadcode_iic_eeprom_2k:
+	call set_eeprom_size_2k
+	fetch 1,mem_otp_ucode_flag
+	bbit1 otp_uflag_skip_eep,loadcode_spi
+	call loadcode_iic_by_eeprom
+	nbranch loadcode_spi,match
+	fetch 1,mem_ucode_status
+	bbit0 0,loadcode_iic_2			// crc error, try again
+	branch loadcode_hci
+	
+loadcode_spi:
+	jam 0,mem_loadcode_times
+loadcode_spi_2:
+	call loadcode_check_times
+	fetch 1,mem_otp_ucode_flag
+	bbit1 otp_uflag_skip_flash, loadcode_hci
+	setarg 0x0
+	store 3,mem_addr_hi
+	call spid_init_flash
+	arg spid_load_flash,regc
+	call read_first_block
+	call load_storage
+	nbranch loadcode_hci,match
+	fetch 1,mem_ucode_status
+	bbit0 0,loadcode_spi_2			// crc error, try again
+
+loadcode_hci:
+	bmark1 mark_otp_encrypt,loadcode_hci_enc
+	call clear_key_buf
+loadcode_hci_enc:
+	fetch 1,mem_otp_ucode_flag
+	bbit0 otp_uflag_hci,clear_key_buf
+	jam 0x21,core_clkoff			// enable debug uart
+	call hci_init
+loadcode_hci_loop:
+	call hci_rx_packet
+	branch loadcode_hci_loop
+
+clear_key_buf:
+	setarg 0
+	store 8,mem_ucode_keybuf
+	store 8,mem_ucode_keybuf+8
+	force regidx_key,regext_index
+	call aes_clear
+	jam 0x21,core_clkoff		// enable debug uart
+	rtn
+	
+
+loadcode_iic_by_eeprom:
+	setarg 0x0
+	store 2,mem_addr_mi
+	arg iicd_read_eep,regc
+	call iicd_init_12m
+	call read_first_block
+	branch load_storage
+
+
+loadcode_check_times:
+	fetch 1,mem_loadcode_times
+	increase 1,pdata
+	sub pdata,3,null
+	nbranch loadcode_error,positive
+	store 1,mem_loadcode_times
+	rtn
+
+loadcode_error:
+	call clear_key_buf
+	call ice_break
+	rtn
+
+
+/* true flag is set into status */
+set_ucode_status:
+	fetch 1,mem_ucode_status
+	lshift pdata,pdata
+	setflag true,0,pdata
+	isolate0 15,rega
+	rtn true
+	store 1,mem_ucode_status
+	rtn
+
+	/* queue is bit position of hw done status */
+decrypt_code:
+	hfetch 1,core_gpio_key2
+	rtnbit0 1
+	branch decrypt_code_skip	/* skip to key generation at first for speed */
+decrypt_code_loop:
+	hfetch 1,core_dma_status
+	qisolate1 pdata
+	rtn true
+decrypt_code_skip:
+	hfetch 1,core_misc_status
+	bbit0 1,decrypt_code_loop
+	call do_aes_cbc
+	branch decrypt_code_loop
+
+
+
+load_ucode:
+	fetch 2,mem_patch_ptr
+	rtn blank
+	jam 0x80, core_ucode_ctrl
+	jam 0,core_ucode_hi
+	jam 0,core_ucode_low
+	fetcht 2,mem_patch_len
+	lshift2 temp,loopcnt
+	iforce contr
+load_ucode_loop:
+	ifetch 1,contr
+	hstore 1,core_ucode_data
+	loop load_ucode_loop
+	jam 0x0, core_ucode_ctrl
+	rtn
+
+
+/* ===================== SPI dma ======================= */
+
+spid_init:
+	bpatchx patch31_5,mem_patch31
+	call spid_init_common
+	branch twspi_enable
+
+spid_init2:
+	call spid_init_common
+	call twspi_disable
+	branch twspi_enable2
+	
+spid_init_common:
+	fetch 1,mem_spi_init_clk
+	hstore 1,core_spid_ctrl	// A7530 should at least 34, or write fail
+	fetch 1,mem_spi_init_delay_time
+	hstore 1,core_spid_delay	// 4us delay
+	setarg mem_spid_tbuf
+	hstore 2,core_spid_txaddr
+	setarg mem_spid_rbuf
+	hstore 2,core_spid_rxaddr
+	branch twspi_disable
+	
+spid_reset:
+	hfetch 1,core_spid_ctrl
+	set1 7,pdata
+	hstore 1,core_spid_ctrl
+	set0 7,pdata
+	hstore 1,core_spid_ctrl
+	rtn
+
+
+/* pdata 6:0 is reg address, 15:8 is data to write */
+spid_write_reg:
+	set1 7,pdata
+	store 2,mem_spid_tbuf
+	bpatchx patch31_6,mem_patch31
+	jam 2,core_spid_txlen
+	jam 0,core_spid_rxlen
+	jam spid_start,core_misc_ctrl
+	branch wait_spid_done
+
+/* pdata 6:0 is reg address */
+spid_read_reg:
+	force 1,temp
+/* pdata 6:0 is burst reg address, temp is bytes to read */
+spid_read_regs:
+//	nop 100
+	store 1,mem_spid_tbuf
+	bpatchx patch31_7,mem_patch31
+	jam 1,core_spid_txlen
+	hstoret 2,core_spid_rxlen
+	jam spid_start,core_misc_ctrl
+	call wait_spid_done
+	fetch 1,mem_spid_rbuf
+	rtn
+
+wait_spid_done:
+	fetch 2,mem_afh_error_total
+	increase 1,pdata
+	store 2,mem_afh_error_total
+	hfetch 1,core_dma_status
+	bbit0 spid_done,wait_spid_done
+	rtn
+
+spid_init_flash:
+	jam 0x40,core_spid_ctrl
+	jam 0x0,core_spid_delay
+	hfetch 1,core_gpio_sel1
+	set0 0,pdata
+	set1 1,pdata
+	hstore 1,core_gpio_sel1
+	setarg 0
+	store 4,mem_spid_tbuf
+	rtn
+
+
+spid_unlock_flash:
+	setarg 0
+	hstore 2,core_spid_rxlen
+	setarg 1
+	hstore 2,core_spid_txlen
+	setarg mem_spid_tbuf
+	hstore 2,core_spid_txaddr
+	jam 6,mem_spid_tbuf
+	jam spid_start,core_misc_ctrl
+	branch wait_spid_done
+
+
+/**
+ ******************************************************************************
+ ** \brief  write flash
+ **
+ ** \param [in]  rega: 2byte write ptr    
+ **			pdata:3byte flash address  
+ ** 			temp:2byte write data length
+ **
+ ** \retval user  0: flash buys 1:write flash setting complate
+ **
+ ******************************************************************************/
+
+flash_write:
+	disable user
+	copy pdata,regb
+	fetch 1,mem_spi_write_flash_sm
+	rtnne FLASH_SM_NO_BUYS
+	enable user
+	copy regb,pdata
+	branch flash_write_start
+
+
+flash_write_spi_sm_timer:
+	fetch 1,mem_spi_write_flash_sm 	
+	beq FLASH_SM_START,flash_write_start
+	beq FLASH_SM_ERASE_SECTOR,flash_erase_sector
+	beq FLASH_SM_WAIT_ERASE_SECTOR,flash_wait_erase_sector
+	beq FLASH_SM_WRITE_DATA,flash_write_data
+	beq FLASH_SM_WAIT_WRITE_DATA,flash_wait_write_data
+	rtn
+
+flash_write_start:
+	store 3,mem_spi_write_addr
+	copy rega,pdata
+	store 2,mem_spi_write_ptr
+	storet 2,mem_spi_write_len
+	jam FLASH_SM_ERASE_SECTOR,mem_spi_write_flash_sm
+	branch spid_init_flash
+flash_erase_sector:
+	call spid_init_flash
+	jam FLASH_SM_WAIT_ERASE_SECTOR,mem_spi_write_flash_sm
+	call spid_unlock_flash
+	arg mem_spid_tbuf,rega
+	fetch 3,mem_spi_write_addr
+	jam 4,core_spid_txlen
+	arg FLASH_COMMAND_SECTOR_ERASE,temp
+	branch spid_write_flash_common
+	
+flash_wait_erase_sector:
+	call spid_init_flash
+	call spid_unlock_flash
+	setarg FLASH_READ_SATUS
+	call spid_read_reg
+	rtnbit1 FLASH_STATUS_WIP
+	jam FLASH_SM_WRITE_DATA,mem_spi_write_flash_sm
+	rtn
+flash_write_data:
+	call spid_init_flash
+	jam FLASH_SM_WAIT_WRITE_DATA,mem_spi_write_flash_sm
+	call spid_unlock_flash
+	call flash_data_preserve
+	call spid_write_flash
+	branch flash_data_recover
+flash_wait_write_data:
+	call spid_init_flash
+	call spid_unlock_flash
+	setarg FLASH_READ_SATUS
+	call spid_read_reg
+	rtnbit1 FLASH_STATUS_WIP
+	jam FLASH_SM_NO_BUYS,mem_spi_write_flash_sm
+	fetch 2,mem_cb_spi_flash_write_complate
+	branch callback_func
+flash_data_recover:
+	fetch 4,mem_temp
+	fetcht 2,mem_spi_write_ptr
+	increase -4,temp
+	istore 4,temp
+	rtn
+flash_data_preserve:
+	fetcht 2,mem_spi_write_ptr
+	copy temp,rega
+	increase -4,temp
+	ifetch 4,temp
+	store 4,mem_temp
+	fetcht 2,mem_spi_write_len
+	fetch 3,mem_spi_write_addr
+	rtn
+
+
+/* pdata is flash address, rega pointers to txdata(4 ahead bytes should be left), temp is length */
+spid_write_flash:
+	increase 4,temp
+	hstoret 2,core_spid_txlen
+	arg FLASH_COMMAND_WRITE_DATA,temp
+	increase -4,rega
+spid_write_flash_common:
+
+	istoret 1,rega
+	rshift16 pdata,temp
+	istoret 1,contw
+	rshift8 pdata,temp
+	istoret 1,contw
+	istore 1,contw
+	deposit rega
+	hstore 2,core_spid_txaddr
+	setarg 0
+	hstore 2,core_spid_rxlen
+	jam spid_start,core_misc_ctrl
+	branch wait_spid_done
+
+
+/* temp is length, rega pointers to buf   */
+spid_read_flash:
+	hstoret 2,core_spid_rxlen
+	rshift16 pdata,temp
+	storet 1,mem_addr_hi
+	rshift8 pdata,temp
+	storet 1,mem_addr_mi
+	store 1,mem_addr_lo
+	setarg 4
+	hstore 2,core_spid_txlen
+	jam FLASH_COMMAND_READ_DATA,mem_spid_tbuf
+	setarg mem_spid_tbuf
+	hstore 2,core_spid_txaddr
+	deposit rega
+	hstore 2,core_spid_rxaddr
+	hfetch 1,core_spid_ctrl
+	isolate0 15,rega
+	setflag true,6,pdata
+	hstore 1,core_spid_ctrl
+	jam spid_start,core_misc_ctrl
+spi_read_flash_wait:
+	hfetch 1,core_dma_status
+	bbit1 7,spi_read_flash_wait			// waiting for spid write
+	arg spid_done,queue
+	branch wait_spid_done
+
+
+/* temp is length, rega pointers to buf  */
+spid_load_flash:
+	hstoret 2,core_spid_rxlen
+	setarg 4
+	hstore 2,core_spid_txlen
+	jam 3,mem_spid_tbuf
+	setarg mem_spid_tbuf
+	hstore 2,core_spid_txaddr
+	deposit rega
+	hstore 2,core_spid_rxaddr
+	hfetch 1,core_spid_ctrl
+	isolate0 15,rega
+	setflag true,6,pdata
+	hstore 1,core_spid_ctrl
+	jam spid_start,core_misc_ctrl
+spi_load_flash_wait:
+	hfetch 1,core_dma_status
+	bbit1 7,spi_load_flash_wait			// waiting for spid write
+	arg spid_done,queue
+	call decrypt_code
+	call wait_spid_done
+	isolate1 spid_crcok,pdata
+	call set_ucode_status
+	fetch 1,mem_addr_hi
+	lshift16 pdata,regb
+	fetch 1,mem_addr_mi
+	lshift8 pdata,pdata
+	ior regb,regb
+	fetch 1,mem_addr_lo
+	ior regb,pdata
+	iadd temp,pdata
+	store 1,mem_addr_lo
+	rshift8 pdata,pdata
+	store 1,mem_addr_mi
+	rshift8 pdata,pdata
+	store 1,mem_addr_hi
+	rtn
+
+/*****************************************************************************
+*soft reset chip
+*****************************************************************************/
+soft_reset_chip:
+	jam 1,core_reset
+	rtn
+
+
+
+/* ===================== I2C dma ======================= */
+
+iic_init_390k:	//390khz
+	jam 12,core_iicd_scl_low
+	jam 13,core_iicd_scl_high
+	jam 13,core_iicd_start_setup
+	jam 13,core_iicd_start_hold
+	jam 13,core_iicd_stop_setup
+	jam 12,core_iicd_data_setup
+  	branch iicd_init_gpio	
+
+
+iicd_init_12m:
+	jam 5,core_iicd_scl_low
+ 	jam 7,core_iicd_scl_high
+	jam 7,core_iicd_start_setup
+	jam 7,core_iicd_start_hold
+	jam 7,core_iicd_stop_setup
+	jam 5,core_iicd_data_setup
+iicd_init_gpio:	
+	hfetch 1,core_gpio_pu3
+	or_into 0xc0,pdata
+	hstore 1,core_gpio_pu3
+	hfetch 1,core_gpio_sel1
+	or_into 0x10,pdata
+	hstore 1,core_gpio_sel1
+	rtn
+
+
+
+wait_iicd_done:
+	hfetch 1,core_dma_status
+	bbit0 iicd_done,wait_iicd_done
+	rtn
+
+/*
+pdata is tx length
+rega is points to tx buffer
+regb is points to rx buffer
+temp is rx length
+*/
+iicd_read_data:
+	hstore 2,core_iicd_txlen
+	deposit rega
+	hstore 2,core_iicd_txaddr	
+	deposit regb
+	hstore 2,core_iicd_rxaddr
+	deposit temp	
+	hstore 2,core_iicd_rxlen
+	arg 1,temp
+	nsetflag blank,1,temp
+	hstore 1,core_iicd_ctrl
+	jam iicd_start,core_misc_ctrl
+	branch wait_iicd_done
+
+
+set_eeprom_size_2k:
+	set1 mark_eeprom_size,mark
+	jam 0x08,mem_eeprom_block_size
+	rtn
+
+clear_eeprom_size_2k:
+	set0 mark_eeprom_size,mark
+	jam 0x20,mem_eeprom_block_size
+	rtn
+
+
+iicd_read_eep_data_size_2k:
+ 	fetch 1,mem_eeprom_base
+	iadd regb,pdata
+	store 1,mem_addr_mi
+	branch iicd_read_eep_size_2k
+
+iicd_read_eep_size_2k_lcadcode:
+	fetch 2,mem_addr_mi
+	byteswap pdata,pdata
+	store 1,mem_addr_mi
+	
+//length:temp 
+//mem ptr:rega
+//eeprom addr:pdata
+iicd_read_eep_size_2k:
+ 	setarg 3
+	hstore 2,core_iicd_txlen
+	jam 0xa0,mem_iicd_tbuf
+	jam 0xa1,mem_iicd_tbuf+2
+	branch iicd_read_eep_common
+
+
+//length:temp 
+//mem ptr:rega
+//eeprom addr:regb
+iicd_write_protect_eep_data:
+	storet 2,mem_temp
+	call iicd_eeprom_write_enable
+	fetcht 2,mem_temp
+	call iicd_write_eep_data
+	branch iicd_eeprom_write_disable
+	
+iicd_eeprom_write_enable:
+	fetch 1,mem_eeprom_wp_gpio
+	rtneq GPIO_DISABLE
+	bbit0 6,iicd_wp_gpio_output_low
+	setarg 150000
+	call sleep
+iicd_wp_gpio_output_low:
+	fetcht 1,mem_eeprom_wp_gpio
+	branch gpio_out_active
+	
+iicd_eeprom_write_disable:
+	fetcht 1,mem_eeprom_wp_gpio
+	branch gpio_out_inactive
+	
+//length:temp 
+//mem ptr:rega
+//eeprom addr offset:regb
+iicd_read_eep_data:
+	bpatchx patch32_0,mem_patch32
+	bmark1 mark_eeprom_size,iicd_read_eep_data_size_2k
+	fetch 2,mem_eeprom_base
+	iadd regb,pdata
+	byteswap pdata,pdata
+	store 2,mem_addr_mi
+
+/* rega pointers to buf, temp is length  */
+iicd_read_eep:
+	bpatchx patch32_1,mem_patch32
+	bmark1 mark_eeprom_size,iicd_read_eep_size_2k_lcadcode
+	setarg 4
+	hstore 2,core_iicd_txlen
+	jam 0xa0,mem_iicd_tbuf
+	jam 0xa1,mem_iicd_tbuf+3
+iicd_read_eep_common:	
+	setarg mem_iicd_tbuf
+	hstore 2,core_iicd_txaddr
+	hstoret 2,core_iicd_rxlen
+	deposit rega
+	hstore 2,core_iicd_rxaddr
+	setarg 2
+	isolate0 15,rega
+	setflag true,0,pdata
+	hstore 1,core_iicd_ctrl
+	jam iicd_start,core_misc_ctrl
+	arg iicd_done,queue
+	call decrypt_code
+	call wait_iicd_done
+	isolate1 iicd_crcok,pdata
+	call set_ucode_status
+	bmark1 mark_eeprom_size,iicd_read_eep_load_code_size_2k
+	fetch 2,mem_addr_mi
+	byteswap pdata,pdata
+	iadd temp,pdata
+	byteswap pdata,pdata
+	store 2,mem_addr_mi
+	rtn
+
+iicd_read_eep_load_code_size_2k:
+	fetch 1,mem_addr_mi
+	iadd temp,pdata
+	byteswap pdata,pdata
+	store 2,mem_addr_mi
+	rtn
+	
+
+//length:temp 
+//mem ptr:rega
+//eeprom addr offset:regb
+iicd_write_eep_data:
+	fetch 2,mem_eeprom_base
+	iadd regb,pdata
+
+//cuur ptr:pdata length:temp buf:rega
+iicd_write_ota_data:
+	store 2,mem_pdatatemp //curr ptr
+	bpatchx patch32_2,mem_patch32
+	storet 2,mem_temp	//len
+	copy rega,pdata
+	store 2,mem_contr
+iicd_write_eep_loop:
+	call iicd_eep_transparency
+
+	fetcht 2,mem_regb
+	fetch 2,mem_contr
+	copy pdata,rega
+	fetch 2,mem_pdatatemp
+	
+	call iicd_write_eep
+	
+	fetch 2,mem_regb
+	fetcht 2,mem_contr
+	iadd temp,temp
+	storet 2,mem_contr
+	fetcht 2,mem_pdatatemp
+	iadd temp,temp
+	storet 2,mem_pdatatemp
+	fetch 2,mem_temp
+	nbranch iicd_write_eep_loop,blank
+	rtn
+	
+//in:
+//1.size 2.len 3.src 4.des
+//mem_regc page's area
+//mem_pdatatemp curr ptr
+//mem_temp all len      
+//mem_regb curr len
+iicd_eep_transparency:
+	bpatchx patch32_3,mem_patch32
+	fetch 1,mem_eeprom_block_size
+	increase -1,pdata
+	fetcht 2,mem_pdatatemp
+	ior temp,pdata
+	increase 1,pdata
+	store 3,mem_regc
+
+	fetch 2,mem_temp
+	iadd temp,pdata
+
+	fetcht 3,mem_regc
+	isub temp,pdata
+	nbranch iicd_eep_deal_short_packet,positive
+	store 2,mem_temp
+	fetch 3,mem_regc
+	fetcht 2,mem_pdatatemp
+	isub temp,pdata
+	store 2,mem_regb
+	rtn
+iicd_eep_deal_short_packet:
+	fetch 2,mem_temp
+	store 2,mem_regb
+	setarg 0
+	store 2,mem_temp
+	rtn
+
+iicd_write_eep_size_2k:
+	increase 2,temp
+	hstoret 2,core_iicd_txlen
+	increase -2,rega
+	ifetcht 3,rega
+	copy temp,regb
+	arg 0xa0,temp
+	istoret 1,rega
+//	byteswap pdata,pdata
+	istore 1,contw
+	branch iicd_write_eep_common
+
+	/* pdata is eeprom address, rega pointers to txdata(3 ahead bytes should be left), temp is length */
+iicd_write_eep:
+	copy pdata,regb
+	bpatchx patch32_4,mem_patch32
+	bmark1 mark_eeprom_size,iicd_write_eep_size_2k
+	copy regb,pdata
+	increase 3,temp
+	hstoret 2,core_iicd_txlen
+	increase -3,rega
+	ifetcht 3,rega
+	copy temp,regb
+	arg 0xa0,temp
+	istoret 1,rega
+	byteswap pdata,pdata
+	istore 2,contw
+iicd_write_eep_common:	
+	deposit rega
+	hstore 2,core_iicd_txaddr
+	setarg 0
+	hstore 2,core_iicd_rxlen
+	jam 1,core_iicd_ctrl
+	jam iicd_start,core_misc_ctrl
+	call wait_iicd_done
+	copy regb,pdata
+	istore 3,rega
+	
+iic_check_eeprom_standby:
+	bpatchx patch32_5,mem_patch32
+	jam 0,mem_iicd_tbuf+3
+iic_check_eeprom_standby_wait:
+	setarg 1
+	hstore 2,core_iicd_txlen
+	jam 0xa0,mem_iicd_tbuf
+	setarg mem_iicd_tbuf
+	hstore 2,core_iicd_txaddr
+	setarg 0
+	hstore 2,core_iicd_rxlen
+	hstore 2,core_iicd_rxaddr
+	setarg 3
+	hstore 1,core_iicd_ctrl
+	jam iicd_start,core_misc_ctrl
+	call wait_iicd_done
+	hfetch 1,core_dma_status
+	rtnbit0 iicd_ack
+	nop 1500
+	fetch 1,mem_iicd_tbuf+3
+	increase 1,pdata
+	store 1,mem_iicd_tbuf+3
+	sub pdata,40,null
+	nrtn positive//polling timeout 6ms
+	branch iic_check_eeprom_standby_wait
+
+/* ===================== OTP ======================= */
+
+otp_enable_chgpump:
+	jam 0x70,rfen_chgpump
+	nop param_chgpump_delay
+	rtn
+
+otp_disable_chgpump:
+	jam 0x30,rfen_chgpump
+	rtn
+	
+otp_set_addr:
+	lshift3 pdata,pdata
+	hstore 2,core_otp_addr
+	jam 0,core_otpd_ctrl
+	rtn	
+
+/* pdata = otp address, rega pointers data, loopcnt is count */
+otp_write:
+	call otp_set_addr
+	call otp_ce
+otp_program:
+	ifetcht 1,rega
+	increase 1,rega
+	force 0,queue
+otp_program_bit:
+	qisolate0 temp
+	branch otp_skip_0,true
+	hfetch 1,core_otp_din
+	set1 6,pdata				/* din */
+	set1 7,pdata				/* dle */
+	hstore 1,core_otp_din
+	jam 0x02,core_otp_ctrl	/* web */
+	jam 0x82,core_otp_ctrl
+	set0 7,pdata				/* dle */
+	hstore 1,core_otp_din
+	jam 0x8a,core_otp_ctrl	/* pgmen */
+	nop 11
+	jam 0xca,core_otp_ctrl	/* vppen */
+	nop 33
+	jam 0x4a,core_otp_ctrl	/* web 2nd */
+	nop 44
+	jam 0xca,core_otp_ctrl	/* release web */
+	nop 22
+	jam 0x8a,core_otp_ctrl	/* release vppen */
+	nop 33
+	jam 0x82,core_otp_ctrl	/* release pgmen */
+	nop 1
+	jam 0x92,core_otp_ctrl	/* pgmvfy */
+	nop 10
+	jam 0xb2,core_otp_ctrl	/* readen */
+	hfetch 1,core_otp_rdata
+	jam 0x92,core_otp_ctrl	/* release readen */
+	nop 1
+	jam 0x82,core_otp_ctrl	/* release pgmvfy */
+	qisolate0 pdata
+	branch otp_program_bit,true	/* program error */
+otp_skip_0:
+	hfetch 2,core_otp_addr
+	increase 1,pdata
+	hstore 2,core_otp_addr
+	increase 1,queue
+	compare 8,queue,0xf
+	nbranch otp_program_bit,true
+	loop otp_program
+	jam 0x83,core_otp_ctrl
+	rtn
+
+otp_ce:
+	jam 0x82,core_otp_ctrl	/* ceb */
+	nop 12
+	jam 0x80,core_otp_ctrl	/* rstn */
+	jam 0x82,core_otp_ctrl	/* release rstn */
+	nop 150					/* waiting for vdd25 stable */
+	rtn
+
+	/* rega points to data, temp is count */
+otpd_read_init:
+	call otp_ce
+	jam 0xa2,core_otp_ctrl	/* readen */
+	deposit rega
+	hstore 2,core_otpd_addr
+	set1 11,temp
+	isolate0 15,pdata
+	setflag true,15,temp
+	hstoret 2,core_otpd_len
+	jam otpd_start,core_misc_ctrl
+	rtn
+
+otpd_wait_end:
+	hfetch 1,core_dma_status
+	bbit0 otpd_done,otpd_wait_end
+	rtn
+	
+	/* pdata=otp address, rega points to data, temp is count */
+otpd_read_data:
+	call otp_set_addr
+	call otpd_read_init
+	call otpd_wait_end
+	jam 0x83,core_otp_ctrl	/* release ceb */
+	rtn
+
+
+
+/* rega pointers to buf, temp is length */
+otpd_read_code:	
+	hfetch 2,core_current_otp_addr
+	hstore 2,core_otp_addr
+	call otpd_read_init
+	arg otpd_done,queue
+	call decrypt_code
+	call otpd_wait_end
+	isolate1 otpd_crcok,pdata	
+	call set_ucode_status
+	jam 0x83,core_otp_ctrl	/* release ceb */
+	rtn
+
+/* ===================== uart dma ======================= */
+uartd_prepare_tx:
+	hfetch 2,core_uart_twptr
+	iforce contwu
+	rtn
+
+uartd_send:
+	deposit contwu
+	hstore 2,core_uart_twptr
+	rtn
+
+uartd_rxdone:
+	deposit contru
+	hstore 2,core_uart_rrptr
+	rtn
+
+uartd_prepare_rx:
+	hfetch 2,core_uart_rrptr
+	copy pdata,contru
+	rtn
+
+uart_set_baud_by_mem:
+	fetch uart_baud_len,mem_baud
+	hstore uart_baud_len,core_uart_baud
+	rtn
+
+uart_copy_tx_bytes_fast:
+	deposit loopcnt
+	rtn blank
+uart_copy_tx_bytes_fast_loop:
+	increase -8,loopcnt
+	call uart_tx_8_bytes,positive
+	rtn zero
+	branch uart_copy_tx_bytes_fast_loop,positive
+	increase 8,loopcnt
+uart_copy_tx_bytes_fast_loop_four:
+	increase -4,loopcnt
+	call uart_tx_4_bytes,positive
+	rtn zero
+	branch uart_copy_tx_bytes_fast_loop_four,positive
+	increase 4,loopcnt
+	branch uart_copy_tx_bytes
+
+uart_tx_8_bytes:
+	ifetch 8,contr
+	istore 8,contwu
+	rtn
+
+uart_tx_4_bytes:
+	ifetch 4,contr
+	istore 4,contwu
+	rtn
+
+uart_copy_tx_bytes:
+	deposit loopcnt
+	rtn blank
+uart_copy_tx_bytes_loop:
+	ifetch 1,contr
+	istore 1,contwu
+	loop uart_copy_tx_bytes_loop
+	rtn
+
+uart_copy_rx_bytes_fast:
+	deposit loopcnt
+	rtn blank
+uart_copy_rx_bytes_fast_loop:
+	increase -8,loopcnt
+	call uart_rx_8_bytes,positive
+	rtn zero
+	branch uart_copy_rx_bytes_fast_loop,positive
+	increase 8,loopcnt
+uart_copy_rx_bytes_fast_loop_four:
+	increase -4,loopcnt
+	call uart_rx_4_bytes,positive
+	rtn zero
+	branch uart_copy_rx_bytes_fast_loop_four,positive
+	increase 4,loopcnt
+	branch uart_copy_rx_bytes
+
+uart_rx_8_bytes:
+	ifetch 8,contru
+	istore 8,contw
+	rtn
+
+uart_rx_4_bytes:
+	ifetch 4,contru
+	istore 4,contw
+	rtn
+
+
+uart_copy_rx_bytes:
+	deposit loopcnt
+	rtn blank
+uart_copy_rx_bytes_loop:
+	ifetch 1,contru
+	istore 1,contw
+	loop uart_copy_rx_bytes_loop
+	rtn
+
+
+uart_copy_rx2tx:
+	deposit loopcnt
+	rtn blank
+uart_copy_rx2tx_loop:
+	ifetch 1,contru
+	istore 1,contwu
+	loop uart_copy_rx2tx_loop
+	rtn
+
+
+/* ===================== eeprom data ======================= */
+
+app_store_nvram_event:
+	jam BT_EVT_STORE_NVRAM,mem_fifo_temp
+	branch ui_ipc_send_event
+
+check_51cmd_store_reconn_info:
+check_51cmd_update_device_record:
+	bpatchx patch32_6,mem_patch32
+	fetch 1,mem_nv_data_number
+	rtn blank		// not nv data
+	call check_nvram
+	call init_device_list,zero
+	call nvram_find_addr_from_bd_list
+write_device_record:
+	fetch 1,mem_nv_data_number
+	icopy regc
+	fetcht 2,mem_nv_data_ptr
+	storet 2,mem_list_item_ptr
+write_device_loop_find:
+	copy regc,pdata
+	branch app_store_nvram_event,blank  //EEPROM
+	increase -1,regc
+	copy temp,rega
+	ifetch 1,rega
+	fetcht 1,mem_select_list_item
+	isub temp,null
+	call set_index_finded_device,zero
+	branch write_device_loop_find0,positive
+	ifetch 1,rega
+	increase 1,pdata
+	istore 1,rega
+write_device_loop_find0:
+	fetcht 2,mem_list_item_ptr
+	increase NV_DATA_LEN,temp
+	storet 2,mem_list_item_ptr
+	branch write_device_loop_find
+
+set_index_finded_device:
+	setarg 0
+	istore 1,rega
+	fetch 1,mem_temp_reconn_record
+	istore 1,contw	
+	bne REC_3_MODE,set_index_finded_device_ble_mode
+	arg mem_link_key,regb
+set_index_find_device_MASTER_ADDR:
+	ifetch 6,contr
+	istore 8,contw
+	setarg 0
+	istore 8,contw
+	copy regb,contr
+store_rec_data_common:
+	call memcpy16
+	force 1,null
+	rtn
+
+set_index_finded_device_ble_mode:
+	beq REC_4_MODE_RANDOM_RESOLVABLE_PRIVATE_ADDRESS,set_index_finded_device_IRK
+	beq REC_4_MODE_RANDOM_NON_RESOLVABLE_PRIVATE_ADDRESS,set_index_finded_device_EDIV
+	arg mem_le_ltk,regb
+	branch set_index_find_device_MASTER_ADDR
+
+set_index_finded_device_IRK:
+	arg mem_le_irk,contr
+	call memcpy16
+store_ble_rec_data_common:
+	arg mem_le_ltk,contr
+	branch store_rec_data_common
+
+set_index_finded_device_EDIV:
+	arg mem_le_rand,contr
+	call memcpy16
+	branch store_ble_rec_data_common
+
+
+nvram_find_addr_from_bd_list:
+	call disable_user
+	fetch 1,mem_nv_data_number
+	rtn blank		// not nv data
+	fetch 2,mem_ui_state_map
+	bbit1 UI_STATE_BT_CONNECTED,find_addr_from_bd_list_SPP_mode
+find_addr_from_bd_list_ble_mode:
+	bpatchx patch32_7,mem_patch32
+	fetch 1,mem_le_conn_peer_addr_type
+	beq MASTER_PUBLIC_ADDR,find_addr_from_bd_list_static_addr
+	fetch 1,mem_le_plap+5
+	compare 0xc0,pdata,0xc0
+	branch find_addr_from_bd_list_static_addr,true
+	compare 0x40,pdata,0xc0
+	branch find_addr_from_bd_list_random_addr,true
+	compare 0x00,pdata,0xc0
+	branch find_addr_from_bd_list_random_non_resolvable_private_address,true
+find_addr_from_bd_list_static_addr:
+	jam REC_4_MODE_STATIC_ADDRESS,mem_temp_reconn_record
+	fetch 6,mem_le_plap
+	branch find_addr_from_bd_list_common
+	
+find_addr_from_bd_list_random_non_resolvable_private_address:	
+	jam REC_4_MODE_RANDOM_NON_RESOLVABLE_PRIVATE_ADDRESS,mem_temp_reconn_record
+	branch find_addr_from_bd_list_common
+
+//input :pdata EDIV and rands
+find_addr_from_bd_list_random_addr:
+	jam REC_4_MODE_RANDOM_RESOLVABLE_PRIVATE_ADDRESS,mem_temp_reconn_record
+	branch find_addr_from_bd_list_common
+	
+//input :pdata EDIV and rands
+find_addr_from_bd_list_SPP_mode:
+	bpatchx patch33_0,mem_patch33
+	jam REC_3_MODE,mem_temp_reconn_record
+	fetch 6,mem_plap
+find_addr_from_bd_list_common:
+	store 6,mem_temp_reconn_record+1
+	fetch 2,mem_nv_data_ptr
+	ifetcht 1,pdata
+	pincrease 1
+	store 2,mem_list_item_ptr
+	storet 1,mem_select_list_item
+	fetch 1,mem_nv_data_number
+	icopy regc
+nvram_find_addr_from_list:
+	fetch 2,mem_list_item_ptr
+	copy pdata,rega
+	call nvram_find_addr_from_list_compare
+	rtn user
+	fetcht 2,mem_list_item_ptr
+	increase NV_DATA_LEN,temp
+	storet 2,mem_list_item_ptr
+	increase -1,temp
+	ifetch 1,temp
+	store 1,mem_select_list_item
+	increase -1,regc
+	nbranch nvram_find_addr_from_list,zero
+	fetch 1,mem_nv_data_number
+	pincrease DECREASED_ONE
+	store 1,mem_select_list_item
+	rtn
+nvram_find_addr_from_list_compare:
+	fetch 1,mem_temp_reconn_record
+	bne REC_3_MODE,find_addr_from_list_compare_ble_mode
+find_master_addr_from_list_compare:
+	arg mem_temp_reconn_record,regb
+	arg 7,loopcnt
+	call string_compare
+	branch enable_user,zero
+	rtn
+
+find_addr_from_list_compare_ble_mode:
+	beq REC_4_MODE_RANDOM_RESOLVABLE_PRIVATE_ADDRESS,find_irk_form_list_compare
+	beq REC_4_MODE_RANDOM_NON_RESOLVABLE_PRIVATE_ADDRESS,find_ediv_form_list_compare
+	branch find_master_addr_from_list_compare
+
+find_irk_form_list_compare:
+	ifetcht 1,rega
+	isub temp,null
+	nrtn zero
+	arg mem_le_prand,contw
+	arg 16,loopcnt
+	call clear_mem
+	fetch 3,mem_le_plap+3
+	store 3,mem_le_prand
+	call genernate_master_MacAddress
+	fetch 2,mem_le_aes_128+13
+	byteswap pdata,pdata
+	lshift8 pdata,temp
+	ifetch 1,contr
+	iadd temp,pdata
+	fetcht 3,mem_le_plap
+	isub temp,null
+	branch enable_user,zero
+	rtn
+
+
+genernate_master_MacAddress:
+	arg mem_le_prand ,contr
+	call load_data128
+//	arg mem_le_irk,contr
+	ifetch 1,rega
+	call load_regext
+	force 0x38,aes_ctrl
+	force 0x0,aes_ctrl
+	call wait_aes
+	arg mem_le_aes_128,contw
+	branch store_aes_result
+
+find_ediv_form_list_compare:
+	ifetcht 1,rega
+	isub temp,null
+	nrtn zero
+	copy contr,rega
+	add contr,8,regc
+	arg mem_le_rand,regb
+	arg 8,loopcnt
+	call string_compare
+	branch enable_user,zero
+	copy regc,rega
+	arg mem_le_irk,regb
+	arg 8,loopcnt
+	call string_compare
+	branch enable_user,zero
+	rtn
+
+check_nvram:
+	fetch 2,mem_nv_data_ptr
+	ifetcht 1,pdata
+	pincrease NV_DATA_LEN
+	ifetch 1,pdata
+	isub temp,null
+	rtn
+
+init_device_list:
+	fetch 1,mem_nv_data_number
+	icopy loopcnt
+	fetcht 2,mem_nv_data_ptr
+	setarg 0
+init_device_list_loop:
+	istore 1,temp
+	increase NV_DATA_LEN,temp
+	pincrease 1
+	loop init_device_list_loop
+	rtn
+
+load_device_list:
+	bpatchx patch33_1,mem_patch33
+	call nvram_find_addr_from_bd_list
+	fetch 1,mem_state
+	setflag user,state_combkey,pdata	/* we have link key */
+	store 1,mem_state
+	nbranch clear_key_exists,user
+	add rega,10,contr
+//	copy rega,contr
+	arg mem_link_key,contw
+	call  memcpy16
+	branch check_link_key_load
+clear_key_exists:
+	jam 0,mem_link_key_exists
+	rtn
+
+load_device_list_mode_4:
+	fetch 9,mem_le_ediv
+	branch clear_ltk_exists,blank
+	call nvram_find_addr_from_bd_list
+	nbranch clear_ltk_exists,user
+	fetch 2,mem_list_item_ptr
+	add pdata,1,contr
+	arg mem_le_irk,contw
+	call  memcpy16
+	arg mem_le_ltk,contw
+	call  memcpy16
+	jam 1,mem_ltk_exists
+	rtn
+
+clear_ltk_exists:
+	jam 0,mem_ltk_exists
+	rtn
+
+
+eeprom_store_le_reconn_info:
+	fetch 6,mem_le_plap
+	store 6,mem_temp_lap
+	jam REC_4_MODE,mem_record_bt_mode
+	branch eeprom_store_reconn_info
+eeprom_store_bd_reconn_info:
+	fetch 6,mem_plap
+	store 6,mem_temp_lap
+	jam REC_3_MODE,mem_record_bt_mode
+eeprom_store_reconn_info:
+	fetch 1,mem_device_option
+	beq dvc_op_module,check_51cmd_update_device_record
+	bbit1 dvc_op_mouse,mouse_store_remote_bdaddr
+	rtn
+	
+
+check_link_key_load:
+	fetch 8,mem_link_key
+	fetcht 8,mem_link_key+8
+	ior temp,pdata
+	rtn blank
+	jam 1,mem_link_key_exists
+	rtn
+	
+
+/* =============== GPIO CONTROL ================= */
+
+
+	//temp [4:0]=GPIO number, 0-31, 
+gpio_set_wake_by_current_state:
+	bpatchx patch33_2,mem_patch33
+	set1 7,temp
+	call gpio_get_bit
+	nsetflag true,7,temp
+	//branch gpio_set_wake
+	//fall through
+	
+	//temp [4:0]=GPIO number, 0-31, [7]=0, low active
+gpio_set_wake:
+	bpatchx patch33_3,mem_patch33
+	sub temp,UI_BUTTON_GPIO_DISABLE,null
+	rtn zero
+	isolate0 7,temp
+	and temp,0x1f,queue
+	fetch 4,mem_gpio_wakeup_low
+	qsetflag true,pdata
+	store 4,mem_gpio_wakeup_low
+	fetch 4,mem_gpio_wakeup_high
+	nqsetflag true,pdata
+	store 4,mem_gpio_wakeup_high
+	rtn
+	
+	//temp [4:0]=GPIO number, 0-31, [7]=0, low active
+gpio_clr_wake:
+	bpatchx patch33_4,mem_patch33
+	sub temp,UI_BUTTON_GPIO_DISABLE,null
+	rtn zero
+	isolate0 7,temp
+	and temp,0x1f,queue
+	fetch 4,mem_gpio_wakeup_low
+	qset0 pdata
+	store 4,mem_gpio_wakeup_low
+	fetch 4,mem_gpio_wakeup_high
+	qset0 pdata
+	store 4,mem_gpio_wakeup_high
+	rtn
+
+
+gpio_config_input_nowake:
+	call gpio_clr_wake
+	branch gpio_config_input_without_wake
+
+	//temp [4:0]=GPIO number, 0-31, [7]=0, low active
+gpio_config_input:
+	sub temp,UI_BUTTON_GPIO_DISABLE,null
+	rtn zero
+	ncall gpio_set_wake,wake
+
+gpio_config_input_without_wake:
+	arg core_gpio_pd0,contw
+	call gpio_set_bit
+	setflip gpio_active_bit,temp
+	arg core_gpio_pu0,contw
+	call gpio_set_bit
+	set0 gpio_active_bit,temp
+	arg core_gpio_oe0,contw
+	branch gpio_set_bit
+
+
+gpio_set_high_impedance:
+	arg core_gpio_pd0,contw
+	call gpio_set_bit
+	set0 gpio_active_bit,temp
+	arg core_gpio_pu0,contw
+	call gpio_set_bit
+	set0 gpio_active_bit,temp
+	arg core_gpio_oe0,contw
+	branch gpio_set_bit
+
+
+	//temp [4:0]=GPIO number, 0-31, [7]=0, low active. set gpio to inactive state
+gpio_config_output:	
+	sub temp,UI_BUTTON_GPIO_DISABLE,null
+	rtn zero
+	setflip gpio_active_bit,temp
+	call gpio_out
+gpio_config_output0:
+	set1 gpio_active_bit,temp
+	arg core_gpio_oe0,contw
+	branch gpio_set_bit
+	
+gpio_common:
+	and temp,0x07,queue
+	rshift3 temp,pdata
+	and_into 3,pdata
+	iadd contw,contw
+	ifetch 1,contw
+	rtn
+
+gpio_check_active:
+	arg core_gpio_out0,contw
+	branch get_bit_common
+
+	
+	/* temp is gpio number, return true if gpio active */
+gpio_get_bit:
+	arg core_gpio_in,contw
+get_bit_common:
+	call gpio_common
+	isolate1 gpio_active_bit,temp
+	branch gpio_get_bit_reverse,true
+	qisolate0 pdata
+	rtn
+gpio_get_bit_reverse:
+	qisolate1 pdata
+	rtn
+
+gpio_out_inactive:
+	sub temp,UI_BUTTON_GPIO_DISABLE,null
+	rtn zero
+	isolate1 7,null
+	branch gpio_out_flag
+
+gpio_out_active:
+	sub temp,UI_BUTTON_GPIO_DISABLE,null
+	rtn zero
+	isolate0 7,null
+
+	/* temp is gpio number,  [7]=1,set out equa true flag if gpio active */
+gpio_out_flag:
+	setarg 0
+	nsetflag true,gpio_active_bit,pdata
+	ixor temp,temp
+	
+	/* temp is gpio number,0-31, [7]=out bit value */
+gpio_out:
+	arg core_gpio_out0,contw
+
+	//temp [4:0]=GPIO number, 0-31, [7]=bit value; contw is gpio reg base
+gpio_set_bit:
+	call gpio_common
+	isolate1 gpio_active_bit,temp
+	qsetflag true,pdata
+	istore 1,contw
+	rtn
+
+gpio_set_before_lpm_common:
+	arg -1,rega
+	hfetch 1,core_gpio_sel1
+	compare 0x02,pdata,0x03
+	call neglact4_from_23_pin,true	//spi
+
+	compare 0x01,pdata,0x03
+	call neglact2_form_25_pin,true	//two spi gpio25 26
+
+	compare 0x03,pdata,0x03
+	call neglact2_form_25_pin,true	//two spi gpio30 31
+	 	 
+	isolate1 2,pdata
+	call neglect2_from_6_pin,true	//uart
+	 
+	isolate1 3,pdata
+	call neglect4_from_9_pin,true	//spi
+
+	isolate1 4,pdata
+	call neglact2_form_30_pin,true	//IIC GPIO30 31
+
+	isolate1 6,pdata
+	nsetflag true,04,rega			//pwm0 gpio4
+
+	isolate1 7,pdata
+	nsetflag true,05,rega			//pwm1 gpio5
+
+	hfetch 1,core_gpio_sel2
+	isolate1 0,pdata
+	nsetflag true,27,rega			//pwm2 gpio27
+	isolate1 1,pdata
+	nsetflag true,28,rega			//pwm3 gpio28
+	isolate1 2,pdata
+	nsetflag true,03,rega			//pwm4 gpio03
+	isolate1 3,pdata
+	nsetflag true,08,rega			//pwm5 gpio08
+	isolate1 4,pdata
+	nsetflag true,20,rega			//pwm0 gpio20
+	isolate1 5,pdata
+	nsetflag true,21,rega			//pwm1 gpio21
+	isolate1 6,pdata
+	nsetflag true,22,rega			//pwm2 gpio22
+	isolate1 7,pdata
+	nsetflag true,23,rega			//pwm3 gpio23
+		
+	hfetch 1,core_gpio_sel
+	isolate1 0,pdata
+	nsetflag true,05,rega			//ADC GPIO05
+	isolate1 1,pdata
+	nsetflag true,06,rega			//ADC GPIO06
+	isolate1 2,pdata
+	nsetflag true,07,rega			//ADC GPIO07
+	isolate1 3,pdata
+	nsetflag true,18,rega			//ADC GPIO18
+	isolate1 4,pdata
+	nsetflag true,19,rega			//ADC GPIO19
+	isolate1 5,pdata
+	nsetflag true,20,rega			//ADC GPIO20
+	isolate1 6,pdata
+	nsetflag true,21,rega			//ADC GPIO21
+	isolate1 7,pdata
+	nsetflag true,22,rega			//ADC GPIO22
+	
+	hfetch 1,core_uart_ctrl
+	isolate1 4,pdata
+	call neglact2_form_2_pin,true
+	bpatchx patch33_5,mem_patch33
+
+	hfetch 4,core_gpio_pu0
+	hfetcht 4,core_gpio_pd0
+	ior temp,pdata
+	invert pdata,pdata
+	iand rega,pdata
+	//set0 4,pdata //revc
+	hstore 4,core_gpio_oe0
+	rtn
+	
+	
+neglect2_from_6_pin: //uart
+	 arg 6,queue
+	 branch neglect_2_pin
+neglect4_from_9_pin:
+	 arg 9,queue
+	 branch neglact_4_pin
+neglact4_from_23_pin:
+	 arg 23,queue
+	 branch neglact_4_pin
+neglact2_form_25_pin:
+	 arg 25,queue
+	 branch neglect_2_pin
+neglact2_form_30_pin:
+	 arg 30,queue
+	 branch neglect_2_pin
+neglact2_form_2_pin:
+	 arg 2,queue
+	 branch neglect_2_pin
+neglact_1_pin:
+	arg 1,loopcnt
+	branch neglect_pin_loop
+neglact_4_pin:
+	 arg 4,loopcnt
+	 branch neglect_pin_loop
+neglect_2_pin:
+	 arg 2,loopcnt
+neglect_pin_loop:
+	 qset0 rega
+	 increase 1,queue
+	 loop neglect_pin_loop
+	 rtn
+
+
+
+
+
+
+/* ===================== sniff GPIO CONTROL ======================= */
+gpio_cfg_uart_tx_output:
+	call gpio_uart2gpio
+	arg UART_WAKEUP_TX,temp
+	branch gpio_config_output
+
+gpio_pu_uart_tx:
+	call gpio_cfg_uart_tx_output
+	arg UART_WAKEUP_TX,temp
+	branch gpio_out_inactive
+
+
+
+gpio_rx_config_input_with_pu:
+	call gpio_uart2gpio
+	hfetch 1, core_gpio_pu0
+	set1 UART_WAKEUP_RX,pdata
+	hstore 1,core_gpio_pu0
+	arg UART_WAKEUP_RX,temp
+	branch gpio_config_input
+	
+gpio_uart2gpio:
+	hfetch 1,core_gpio_sel1
+	and_into 0xfb,pdata
+	hstore 1,core_gpio_sel1
+	rtn
+
+gpio_check_uart_state:
+	hfetch 1,core_gpio_sel1
+	isolate1 2,pdata
+	rtn
+
+load_chip_option:
+	call otp_enable_chgpump
+	setarg OTP_CHIP_FUNCTIONS
+	arg mem_chip_functions,rega
+	arg 0x02,temp
+	call otpd_read_data
+	branch otp_disable_chgpump
+
+
+load_adc_init:
+	call otp_enable_chgpump
+	setarg otp_adc_io_0_5V_addr
+	arg mem_0_5_adc_io_data,rega
+	arg 14,temp
+	call otpd_read_data
+	branch otp_disable_chgpump
+
+
+//mem_adc_config_flag 0:vinlpm 1:Hvin 2: GPIO
+adc_init_data:
+	bpatchx patch33_6,mem_patch33
+
+	call load_adc_init
+	
+	fetch 1,mem_adc_config_flag
+	beq ADC_CONFIG_VINLPM,adc_init_data_vinlpm
+	beq ADC_CONFIG_HVIN,adc_init_data_hvin
+	beq ADC_CONFIG_GPIO,adc_init_data_io
+	rtn	
+
+adc_init_data_vinlpm:
+	fetcht 2,mem_otp_adc_flag
+	setarg OTP_ADC_FLAG
+	isub temp,null
+	branch adc_check_data_vinlpm,zero
+	setarg 0x4dfa
+	store 2,mem_3v_adc_vinlpm_data	
+	setarg 0x4894
+	store 2,mem_2v_adc_vinlpm_data
+	branch set_vdd_reference_voltage_1v
+
+adc_check_data_vinlpm:
+	fetch 2,mem_3v_adc_vinlpm_data
+	nbranch adc_check_2v_vinlpm,blank
+	setarg 0x4dfa
+	store 2,mem_3v_adc_vinlpm_data
+adc_check_2v_vinlpm:	
+	fetch 2,mem_2v_adc_vinlpm_data
+	nbranch set_vdd_reference_voltage_1v,blank
+	setarg 0x4894
+	store 2,mem_2v_adc_vinlpm_data
+set_vdd_reference_voltage_1v:
+	setarg 100
+	store 2,mem_reference_voltage //set reference voltage = 1V
+	rtn		
+
+adc_init_data_hvin:
+	fetcht 2,mem_otp_adc_flag
+	setarg OTP_ADC_FLAG
+	isub temp,null
+	branch adc_check_data_hvin,zero
+	setarg 0x5932
+	store 2,mem_5v_adc_hvin_data	
+	setarg 0x4323
+	store 2,mem_1v_adc_hvin_data
+	branch set_vdd_reference_voltage_4v
+
+adc_check_data_hvin:
+	fetch 2,mem_5v_adc_hvin_data
+	nbranch adc_check_1v_hvin,blank
+	setarg 0x5932
+	store 2,mem_5v_adc_hvin_data
+adc_check_1v_hvin:	
+	fetch 2,mem_1v_adc_hvin_data
+	nbranch set_vdd_reference_voltage_4v,blank
+	setarg 0x4323
+	store 2,mem_1v_adc_hvin_data
+set_vdd_reference_voltage_4v:
+	setarg 400
+	store 2,mem_reference_voltage //set reference voltage = 4V
+	rtn 	
+
+adc_init_data_io:
+	fetcht 2,mem_otp_adc_flag
+	setarg OTP_ADC_FLAG
+	isub temp,null
+	branch adc_check_data_io,zero
+	setarg 0x6946
+	store 2,mem_1v_adc_io_data	
+	setarg 0x5377
+	store 2,mem_0_5_adc_io_data
+	branch set_vdd_reference_voltage_0_5v
+
+adc_check_data_io:
+	fetch 2,mem_1v_adc_io_data
+	nbranch adc_check_0_5v_io,blank
+	setarg 0x6946
+	store 2,mem_1v_adc_io_data
+adc_check_0_5v_io:
+	fetch 2,mem_0_5_adc_io_data
+	nbranch set_vdd_reference_voltage_0_5v,blank
+	setarg 0x5377
+	store 2,mem_0_5_adc_io_data
+set_vdd_reference_voltage_0_5v:
+	setarg 50
+	store 2,mem_reference_voltage //set reference voltage = 0.5V
+	rtn	
+
+
+adc_set_mode:
+	fetch 1,mem_adc_config_flag
+	beq ADC_CONFIG_VINLPM,adc_check_vinlpm
+	beq ADC_CONFIG_HVIN,adc_check_hvin
+	beq ADC_CONFIG_GPIO,adc_check_gpio
+	rtn
+adc_check_vinlpm:
+	jam 0xbf,rf_adc_mode	//read VINLPM voltage directly	
+	branch read_adc
+adc_check_hvin:
+	jam 0xaf,rf_adc_mode	//read HVIN voltage directly
+	branch read_adc
+adc_check_gpio:
+	jam 0x8f,rf_adc_mode
+	fetch 1,mem_adc_channel
+	hstore 1,rf_adc_ch
+	branch read_adc
+read_adc:
+	bpatchx patch33_7,mem_patch33
+	hfetch 1,core_uart_baud + 1
+	set1 7,pdata
+	hstore 1,core_uart_baud + 1 
+	hfetch 1,rf_adc_ch
+	or_into 0x30,pdata
+	hstore 1,rf_adc_ch
+	jam 0x7c,rfen_adc
+	jam 0xaa,rf_adc_gc
+	nop 5000
+	hfetcht 2,core_adc_sum
+	hfetch 1,core_uart_baud + 1
+	set0 7,pdata
+	hstore 1,core_uart_baud + 1
+	storet 2,mem_adc_current_value
+	rtn
+
+vdd_calculate_by_mode:
+	bpatchx patch34_0,mem_patch34
+	fetch 1,mem_adc_config_flag
+	beq ADC_CONFIG_VINLPM,vdd_calculate_vinlpm
+	beq ADC_CONFIG_HVIN,vdd_calculate_hvin
+	beq ADC_CONFIG_GPIO,vdd_calculate_io
+	rtn
+
+vdd_calculate_vinlpm:
+	fetch 2,mem_3v_adc_vinlpm_data
+	fetcht 2,mem_2v_adc_vinlpm_data
+	arg 200,regc
+	branch vdd_calculate
+
+vdd_calculate_hvin:
+	fetch 2,mem_5v_adc_hvin_data
+	fetcht 2,mem_1v_adc_hvin_data
+	arg 100,regc
+	branch vdd_calculate
+
+vdd_calculate_io:
+	fetch 2,mem_1v_adc_io_data
+	fetcht 2,mem_0_5_adc_io_data
+	arg 50,regc
+	branch vdd_calculate
+	
+vdd_calculate:
+	isub temp,rega
+	fetch 2,mem_adc_current_value
+	isub temp,pdata
+	nbranch vdd_calculate1,positive
+	fetcht 2,mem_reference_voltage
+	imul32 temp,regb
+	copy regc,pdata
+	imul32 rega,pdata
+	iadd regb,pdata
+vdd_calculate2:
+	idiv rega
+	call wait_div_end
+	quotient pdata	
+	rtn
+
+vdd_calculate1:
+	copy temp,pdata
+	fetcht 2,mem_adc_current_value
+	isub temp,pdata
+	fetcht 2,mem_reference_voltage
+	imul32 temp,regb
+	copy regc,pdata
+	imul32 rega,pdata
+	isub regb,pdata
+	branch vdd_calculate2
+
+/*	typedef struct
+*	{
+*		uint16 full_vol
+*		uint16 empty_vol
+*		uint16 low_vol
+*		uint16 now_vol
+*	}bat_calculate;
+*/
+//out:	pdata->bat percent
+adc_bat_percent_lowpower_out:
+	ifetch 8,rega
+	store 8,mem_pdatatemp
+	fetch 2,mem_pdatatemp
+	fetcht 2,mem_pdatatemp+2
+	isub temp,rega
+	fetch 2,mem_pdatatemp+6
+	isub temp,regb
+	fetcht 2,mem_pdatatemp+4
+	isub temp,null
+	ncall adc_set_low_power_flag,positive
+	mul32 regb,100,pdata
+	idiv rega
+	call wait_div_end
+	quotient pdata
+	call adc_set_no_power_flag,blank
+	rtn
+adc_set_low_power_flag:
+	fetch 1,mem_adc_power_flag
+	set1 0,pdata
+	store 1,mem_adc_power_flag
+	rtn
+adc_set_no_power_flag:
+	fetcht 1,mem_adc_power_flag
+	set1 1,temp
+	storet 1,mem_adc_power_flag
+	rtn
+
+ifdef SPI_SIMULATE
+/******************************simulate spi slave start**********************************/
+
+/*
+// Define SPI struct, gpio config
+mem_spi_simulate_struct:
+02	#cs
+03	#sclk
+04	#mosi
+05	#miso
+08	#motion
+*/
+
+/*
+Brief: spi_simulate_init_slave
+Input: None
+Output: None
+Return: None
+Brief: cs_gpio,sclk_gpio,mosi_gpio : input
+	miso_gpio : output
+*/
+spi_simulate_init_slave:
+	call spi_simulate_variable_release_slave
+	branch spi_simulate_gpio_config_slave
+
+spi_simulate_variable_release_slave:
+	arg mem_spi_simulate_read_byte_slave,contw
+	arg 53,loopcnt
+	call buffer_release
+	arg mem_spi_simulate_write_byte_slave,contw
+	arg 54,loopcnt
+	branch buffer_release
+
+buffer_release:
+	setarg 0
+buffer_release_loop:
+	istore 1,contw
+	loop buffer_release_loop
+	rtn
+	
+spi_simulate_gpio_config_slave:
+	fetcht 1,mem_spi_simulate_cs_gpio
+	call gpio_config_input
+	fetcht 1,mem_spi_simulate_sclk_gpio
+	call gpio_config_input
+	fetcht 1,mem_spi_simulate_mosi_gpio
+	call gpio_config_input
+	fetcht 1,mem_spi_simulate_miso_gpio
+	call gpio_config_output
+	fetcht 1,mem_spi_simulate_motion_gpio
+	call gpio_config_output
+	branch spi_simulate_motion_disable
+
+spi_simulate_motion_enable:
+	fetcht 1,mem_spi_simulate_motion_gpio
+	branch gpio_out_inactive
+spi_simulate_motion_disable:
+	fetcht 1,mem_spi_simulate_motion_gpio
+	branch gpio_out_active
+	
+/*
+Brief: spi_simulate_read_byte_slave
+Input: rega: read length
+Output: mem_spi_simulate_read_byte_slave: read buffer
+Return: None
+Brief: when the cs_gpio is low level,slave reads data from master at the rising edge of the sclk gpio
+*/
+spi_simulate_read_byte_slave:
+	copy rega,pdata
+	store 1,mem_spi_simulate_read_length_slave
+	fetcht 1,mem_spi_simulate_cs_gpio
+	call gpio_get_bit
+	nrtn true
+spi_simulate_read_byte_slave1:	
+	jam 0,mem_spi_simulate_read_byte_slave_temp
+	arg 8,loopcnt
+spi_simulate_read_byte_slave_loop:
+	fetcht 1,mem_spi_simulate_cs_gpio
+	call gpio_get_bit
+	nbranch spi_simulate_read_byte_slave_end,true
+	
+	fetcht 1, mem_spi_simulate_sclk_gpio
+	call gpio_get_bit
+	branch spi_simulate_read_byte_slave_loop,true	
+	fetch 1,mem_spi_simulate_read_byte_slave_temp
+	lshift pdata,pdata
+	store 1,mem_spi_simulate_read_byte_slave_temp
+	fetcht 1, mem_spi_simulate_mosi_gpio
+	call gpio_get_bit
+	ncall spi_simulate_read_byte_or_one,true
+spi_simulate_read_byte_slave_loop1:	
+	fetcht 1,mem_spi_simulate_cs_gpio
+	call gpio_get_bit
+	nbranch spi_simulate_read_byte_slave_end,true
+
+	fetcht 1, mem_spi_simulate_sclk_gpio
+	call gpio_get_bit
+	nbranch spi_simulate_read_byte_slave_loop1,true
+	loop spi_simulate_read_byte_slave_loop
+	
+	fetcht 1,mem_spi_simulate_read_length_slave_temp
+	setarg mem_spi_simulate_read_byte_slave
+	iadd temp,contw
+	copy contw,regb
+	increase 1,temp
+	storet 1,mem_spi_simulate_read_length_slave_temp
+	fetch 1,mem_spi_simulate_read_byte_slave_temp
+	copy regb,contw
+	istore 1,contw
+
+	fetch 1,mem_spi_simulate_read_length_slave
+	increase -1,pdata
+	store 1,mem_spi_simulate_read_length_slave
+	nbranch spi_simulate_read_byte_slave1,blank
+	
+spi_simulate_read_byte_slave_loop2:	
+	fetcht 1, mem_spi_simulate_cs_gpio
+	call gpio_get_bit
+	nbranch spi_simulate_read_byte_slave_loop2,true
+spi_simulate_read_byte_slave_end:	
+	jam 0,mem_spi_simulate_read_length_slave
+	jam 0,mem_spi_simulate_read_length_slave_temp
+	jam 0,mem_spi_simulate_read_byte_slave_temp
+	rtn
+
+spi_simulate_read_byte_or_one:
+	fetch 1,mem_spi_simulate_read_byte_slave_temp
+	or_into 1,pdata
+	store 1,mem_spi_simulate_read_byte_slave_temp
+	rtn
+
+
+/*
+Brief: spi_simulate_write_byte_slave
+Input: rega: write length;  write buffer:mem_spi_simulate_write_byte_slave;
+Output: None
+Return: None
+Brief: when the cs_gpio is low level,slave writes data to master at the falling edge of the sclk gpio
+*/
+spi_simulate_write_byte_slave:
+	copy rega,pdata
+	store 1,mem_spi_simulate_write_length_slave
+	jam 0,mem_spi_simulate_write_length_slave_temp
+	jam 0,mem_spi_simulate_write_byte_slave_temp
+	fetcht 1,mem_spi_simulate_cs_gpio
+	call gpio_get_bit
+	nrtn true
+spi_simulate_write_byte_slave1:
+	fetcht 1,mem_spi_simulate_write_length_slave_temp
+	setarg mem_spi_simulate_write_byte_slave
+	iadd temp,contr
+	copy contr,regb
+	increase 1,temp
+	storet 1,mem_spi_simulate_write_length_slave_temp
+	copy regb,contr
+	ifetch 1,contr
+	store 1,mem_spi_simulate_write_byte_slave_temp
+	
+	arg 8,loopcnt
+spi_simulate_write_byte_slave_loop:
+	fetcht 1,mem_spi_simulate_cs_gpio
+	call gpio_get_bit
+	nbranch spi_simulate_write_byte_slave_end,true
+	fetcht 1, mem_spi_simulate_sclk_gpio
+	call gpio_get_bit
+	branch spi_simulate_write_byte_slave_loop,true
+spi_simulate_write_byte_slave_loop1:
+	fetch 1,mem_spi_simulate_write_byte_slave_temp
+	store 1,mem_spi_simulate_write_byte_slave_temp_temp
+	and_into 0x80,pdata
+	beq 0x80,spi_simulate_set_miso_gpio_high
+	call spi_simulate_set_miso_gpio_low
+spi_simulate_write_byte_slave_loop2:
+	fetcht 1,mem_spi_simulate_cs_gpio
+	call gpio_get_bit
+	nbranch spi_simulate_write_byte_slave_end,true
+	fetcht 1, mem_spi_simulate_sclk_gpio
+	call gpio_get_bit
+	nbranch spi_simulate_write_byte_slave_loop2,true	
+	fetch 1,mem_spi_simulate_write_byte_slave_temp_temp
+	lshift pdata,pdata
+	store 1,mem_spi_simulate_write_byte_slave_temp
+	loop spi_simulate_write_byte_slave_loop
+
+	fetch 1,mem_spi_simulate_write_length_slave
+	increase -1,pdata
+	store 1,mem_spi_simulate_write_length_slave
+	nbranch spi_simulate_write_byte_slave1,blank
+	
+spi_simulate_write_byte_slave_loop3:
+	fetcht 1,mem_spi_simulate_cs_gpio
+	call gpio_get_bit
+	branch spi_simulate_write_byte_slave_loop3,true
+spi_simulate_write_byte_slave_end:	
+	jam 0,mem_spi_simulate_write_length_slave_temp
+	jam 0,mem_spi_simulate_write_byte_slave_temp
+	jam 0,mem_spi_simulate_write_byte_slave_temp_temp
+	rtn
+	
+spi_simulate_set_miso_gpio_high:
+	fetcht 1,mem_spi_simulate_miso_gpio
+	call gpio_out_inactive
+	branch spi_simulate_write_byte_slave_loop2
+spi_simulate_set_miso_gpio_low:
+	fetcht 1,mem_spi_simulate_miso_gpio
+	branch gpio_out_active	
+
+/******************************simulate spi slave end**********************************/
+
+endif  //SPI_SIMULATE
+
+
+/****************************************key scan***************************************/
+keyscan_key_init:
+	fetch 2,mem_key_num_ptr
+	ifetch 1,pdata
+keyscan_key_init_next:
+	rtn blank
+	copy pdata,loopcnt
+//	copy contr,rega
+	fetch 2,mem_keyscan_ptr
+	increase 3,pdata	//mem_key_conf0_pin
+	copy pdata,rega
+keyscan_key_init_lp1:
+	ifetcht 1, rega
+	call gpio_config_input
+	increase KEY_CONF_STRUCT_LEN,rega
+	loop keyscan_key_init_lp1
+keyscan_key_init_end:
+	rtn
+	
+keyscan_scan_key:
+	fetch 2,mem_keyscan_ptr
+	increase 3,pdata	//mem_key_conf0_pin
+	copy pdata,rega
+//	arg mem_key_conf0_pin,rega
+	force 0,regb
+	jam 0,mem_key_value_temp
+keyscan_scan_key_lp1:
+	ifetcht 1, rega
+	call gpio_get_bit
+	bpatchx patch34_1,mem_patch34
+	fetch 2, mem_key_value_temp
+	copy regb,queue
+	qsetflag true,pdata
+	store 2, mem_key_value_temp
+	increase KEY_CONF_STRUCT_LEN,rega
+	increase 1,regb
+	fetch 2,mem_key_num_ptr
+	ifetch 1,pdata
+keyscan_scan_key_lp1_next:
+	ixor regb,null
+	nbranch keyscan_scan_key_lp1,zero
+	fetch 2,mem_key_value_temp
+	fetcht 2,mem_key_value
+	ixor temp,null
+	rtn zero
+	enable user
+	rtn
+
+keyscan_process_lpm_before:
+	fetch 2,mem_key_num_ptr
+	ifetch 1,pdata
+keyscan_process_lpm_before_next:
+	rtn blank
+	copy pdata,loopcnt
+	fetch 2,mem_keyscan_ptr 
+	increase 3,pdata	//mem_key_conf0_pin
+	copy pdata,rega
+keyscan_process_lpm_before_lp1:
+	ifetcht 1, rega
+	call gpio_set_wake_by_current_state
+	increase KEY_CONF_STRUCT_LEN,rega
+	loop keyscan_process_lpm_before_lp1
+keyscan_process_lpm_before_end:
+	rtn
+
+keyscan_key_process:
+	arg key_scan_timer,queue
+	call timer_check
+	nrtn blank
+	setarg 0x20
+	arg key_scan_timer,queue
+	call timer_init
+	disable user
+	call keyscan_process_lpm_before
+	bpatchx patch34_2,mem_patch34
+	fetch 2,mem_key_num_ptr
+	ifetch 1,pdata
+keyscan_key_process_next:
+	rtn blank
+	call keyscan_scan_key
+	nbranch lpm_button_clean_wake_lock,user
+	call lpm_button_get_wake_lock
+	disable user
+	fetch 2, mem_key_value_temp
+	store 2,mem_key_value_temp4
+	jam 0,mem_key_value_temp6
+	force 0,queue
+keyscan_key_lp1:
+	fetch 2, mem_key_value
+	rshift pdata,temp
+	storet 2,mem_key_value
+	and pdata,0x01,pdata
+	fetcht 2, mem_key_value_temp4
+	and temp,0x01,rega
+	rshift temp,temp
+	storet 2,mem_key_value_temp4
+	ixor rega,null
+	ncall keyscan_send_key_data,zero
+	fetch 2,mem_key_num_ptr
+	ifetch 1,pdata
+keyscan_key_lp1_next:
+	fetcht 1, mem_key_value_temp6
+	increase 1,temp
+	storet 1, mem_key_value_temp6
+	copy temp,queue
+	ixor queue,null
+	nbranch keyscan_key_lp1,zero
+	fetch 2,mem_key_value_temp
+	store 2, mem_key_value
+	rtn
+keyscan_send_key_data:
+	bpatchx patch34_3,mem_patch34
+	fetch 2,mem_keyscan_ptr
+	increase 1,pdata
+	ifetch 2,pdata
+	branch callback_func
+
+
+/*************************************pwm*************************************/
+
+//rega:clk select(0:system clk; 1:system clk undivied; 2:lpo)
+/*rega:clk select
+			0x00:select system clock 12M;
+			0x40:select undivied system clock 24M/48M;
+			0x80:select lpo clock:33K
+*/
+pwm_init:
+	hfetch 1,core_clksel
+	ior rega,pdata
+	hstore 1,core_clksel
+	hfetch 2,core_clkoff
+	set0 CLOCK_OFF_PWM,pdata
+	hstore 2,core_clkoff
+delay_nop100:
+	nop 100
+	rtn
+
+/*	typedef struct
+*	{
+*		uint8 gpio_num
+*		uint8 pwm_channel
+*		uint24 frequency
+*		uint8 duty_cycle   //0-100
+*	}PWM_Style;
+	addr: mem_pdatatemp
+*/
+pwm_out_set:
+	fetcht 3,mem_pdatatemp+2
+	setarg PWM_12MHZ
+	idiv temp
+	call wait_div_end
+	quotient temp
+	fetch 1,mem_pdatatemp+5
+	imul32 temp,pdata
+	div pdata,100
+	call wait_div_end
+	quotient rega
+	copy temp,pdata
+	isub rega,regb	
+	fetch 1,mem_pdatatemp+1
+	call pwm_duty_cycle_set
+	fetch 1,mem_pdatatemp
+	branch pwm_enable
+
+//rega:pcnt ;regb:ncnt ;pdata:pwm channel select
+pwm_duty_cycle_set:
+	beq 0,pwm_pwm0_duty_set
+	beq 1,pwm_pwm1_duty_set
+	beq 2,pwm_pwm2_duty_set
+	beq 3,pwm_pwm3_duty_set
+	beq 4,pwm_pwm4_duty_set
+	beq 5,pwm_pwm5_duty_set
+pwm_pwm0_duty_set:
+	arg core_pwm_pcnt0,contw
+	branch pwm_set_pncnt
+pwm_pwm1_duty_set:
+	arg core_pwm_pcnt1,contw
+	branch pwm_set_pncnt
+pwm_pwm2_duty_set:
+	arg core_pwm_pcnt2,contw
+	branch pwm_set_pncnt
+pwm_pwm3_duty_set:
+	arg core_pwm_pcnt3,contw
+	branch pwm_set_pncnt
+pwm_pwm4_duty_set:
+	arg core_pwm_pcnt4,contw
+	branch pwm_set_pncnt
+pwm_pwm5_duty_set:
+	arg core_pwm_pcnt5,contw
+	branch pwm_set_pncnt
+pwm_set_pncnt:
+	copy rega,pdata
+	istore 2,contw
+	copy regb,pdata
+	istore 2,contw
+	rtn
+
+
+//pdata:gpio select
+pwm_enable:
+	enable user
+	branch pwm_gpio_set
+pwm_disable:
+	disable user
+pwm_gpio_set:
+	beq 4,pwm_gpio4_set
+	beq 5,pwm_gpio5_set
+	beq 27,pwm_gpio27_set
+	beq 28,pwm_gpio28_set
+	beq 3,pwm_gpio3_set
+	beq 8,pwm_gpio8_set
+	beq 20,pwm_gpio20_set
+	beq 21,pwm_gpio21_set
+	beq 22,pwm_gpio22_set
+	beq 23,pwm_gpio23_set
+	rtn
+
+
+pwm_gpio4_set:	//pwm 0
+	arg 6,queue
+	branch pwm_one_set_select
+pwm_gpio5_set:	//pwm 1
+  	arg 7,queue
+	branch pwm_one_set_select
+pwm_gpio27_set:	//pwm 2
+  	arg 8,queue
+	branch pwm_one_set_select
+pwm_gpio28_set:	//pwm 3
+	arg 9,queue
+	branch pwm_one_set_select
+pwm_gpio3_set:	//pwm 4
+ 	arg 10,queue
+	branch pwm_one_set_select
+pwm_gpio8_set:	//pwm 5
+  	arg 11,queue
+	branch pwm_one_set_select
+pwm_gpio20_set:	//pwm 0
+  	arg 12,queue
+	branch pwm_tw0_set_select
+pwm_gpio21_set:	//pwm 1
+  	arg 13,queue
+	branch pwm_tw0_set_select
+pwm_gpio22_set:	//pwm 2
+   	arg 14,queue
+	branch pwm_tw0_set_select
+pwm_gpio23_set:	//pwm 3
+    	arg 15,queue
+	branch pwm_tw0_set_select
+
+pwm_set_select:
+	hfetch 2,core_gpio_sel1
+	qsetflag user,pdata
+	hstore 2,core_gpio_sel1
+	copy rega,queue
+	hfetch 1,core_gpio_key2
+   	qsetflag user,pdata
+   	hstore 1,core_gpio_key2
+	rtn
+
+pwm_one_set_select:
+	add queue,-4,rega
+	branch pwm_set_select
+
+pwm_tw0_set_select:
+	add queue,-10,rega
+	branch pwm_set_select
+
+
+	
Index: rom/rom.format
===================================================================
--- /branch/mouse_project/YJX_Project/YJX_1059/JDT_172_BD_2.4G&BLE/rom/rom.format	(nonexistent)
+++ /branch/mouse_project/YJX_Project/YJX_1059/JDT_172_BD_2.4G&BLE/rom/rom.format	(working copy)
@@ -0,0 +1,8369 @@
+
+	width = 32
+	const length = 12000
+
+	/* ========= memory ============== */
+memalloc(
+/* 00-0f most frequently used area  */
+1 mem_le_adv_transmit
+1 mem_le_adv_waitcnt
+1 mem_le_adv_rcv
+1 mem_le_req_rcv
+1 mem_le_scanrsp_rcv
+1 mem_le_conn_rcv
+
+1 mem_inquiryscan_waitcnt
+1 mem_inquiryscan_rcvcnt
+1 mem_pagescan_waitcnt
+1 mem_pagescan_rcvcnt
+1 mem_pagescan_rcvfhscnt
+1 mem_slave_rcvcnt
+1 mem_page_transmit
+1 mem_page_rcv
+1 mem_page_rcv_fhs
+1 mem_master_rcvcnt
+
+/* 10-1f debug area */
+1 mem_fhs_wait_counter
+1 mem_newconnto_counter
+1 mem_inquiry_transmit
+1 mem_inquiry_rcv
+1 mem_fw_ver
+1 mem_current_context
+1 mem_le_ch_mapped
+1 mem_last_freq
+1 mem_rssi
+1 mem_rx_type
+2 mem_rx_hec_err
+2 mem_rx_crc_err
+2 mem_context_ptr
+8 mem_display
+8 mem_bcd
+
+		/* context swappable area */
+1 mem_state
+1 mem_mode
+2 mem_tsniff
+4 mem_sniff_anchor
+6 mem_clk_offset
+2 mem_rx_window
+3 mem_plap
+1 mem_puap
+2 mem_pnap
+1 mem_conn_handle
+1 mem_arq
+1 mem_lmp_to_send
+1 mem_lmi_opcode
+1 mem_lmo_reason
+1 mem_op
+1 mem_state_map
+4 mem_supervision_timer
+2 mem_supervision_to
+1 mem_name_offset
+1 mem_key_size
+1 mem_conn_sm
+12 mem_aco
+16 mem_kc
+1 mem_conn_timer
+1 mem_sniff_attempt
+1 mem_sniff_timeout
+2 mem_dsniff
+1 mem_amaddr
+1 mem_lmo_opcode1
+1 mem_lmi_opcode1
+1 mem_lmo_reason1
+1 mem_lmo_tid1
+1 mem_lmo_opcode2
+1 mem_lmi_opcode2
+1 mem_lmo_reason2
+1 mem_lmo_tid2
+
+3 mem_hci_version
+2 mem_acl_pktlen
+1 mem_sco_pktlen
+2 mem_acl_pktcnt
+2 mem_sco_pktcnt
+
+1 mem_current_sniff_attempt
+1 mem_current_sniff_timeout
+1 mem_sniff_timeout_temp
+1 mem_nfreq_index_inq
+1 mem_nfreq_index_page
+1 mem_ninqy_index
+1 mem_fhs_misc
+
+
+
+/* lpo related */
+4 mem_subsniff_instant
+1 mem_subsniff_rate
+2 mem_subsniff_tcmax
+1 mem_subsniff_tsniff
+1 mem_lpm_adjust
+6 mem_sync_clke
+1 mem_lpm_current_mult
+4 mem_gpio_wakeup_low
+4 mem_gpio_wakeup_high
+	
+
+/* sco & esco */
+1 mem_air_mode
+1 mem_sco_asso_handle
+2 mem_sco_handle
+1 mem_esco_desco
+1 mem_esco_type
+1 mem_neogotiation_state
+1 mem_saved_amaddr
+1 mem_esco_arq
+1 mem_esco_saved_arq
+30 mem_sco_obuf
+30 mem_sco_ibuf
+1 mem_sco_poll
+
+
+
+//page
+1 mem_npage_index
+1 mem_page_mode
+4 mem_page_clk
+
+
+/* test related */
+2 mem_tst_pktcnt_sync
+2 mem_tst_pktcnt_hec
+2 mem_tst_pktcnt_crc
+2 mem_tst_pktcnt_dmh
+3 mem_tmp_buffer_head
+80 mem_tmp_buffer
+
+
+1 mem_tester_emulate
+0 mem_temp_payload
+1 test_mode_scenario
+1 test_mode_hopping_mode
+1 test_mode_tx_freq
+1 test_mode_rx_freq
+1 test_mode_power_mode
+1 test_mode_poll_period
+1 test_mode_packet_type
+2 test_mode_data_length
+1 mem_test_mode_old_debug_config
+1 mem_tester_cnt
+
+
+/*temp mem*/
+1 mem_temp_am_addr
+1 mem_temp_arq
+
+//
+2 mem_len
+4 mem_clkn_bt
+4 mem_clke_bt
+4 mem_dpll_clkn
+1 mem_connection_options
+
+1 mem_nameres_cnt
+2 mem_txptr
+2 mem_slot_offset
+
+//extm
+1 extm_fhs_misc
+1 extm_newconn_am_addr
+3 extm_class
+3 extm_lap
+1 extm_uap
+3 extm_nap
+
+
+//debug
+1 mem_debug_config
+1 mem_lch_code
+1 mem_fhs_am_addr
+2 mem_dpll_error
+1 mem_select_list_item
+0 mem_temp_reconn_record
+1 mem_record_bt_mode
+6 mem_temp_lap
+2 mem_list_item_ptr
+
+100 mem_eir
+)
+
+memalloc(
+
+/* load code */
+1 mem_ucode_status
+2 mem_otp_ucode_flag
+1 mem_spid_tbuf				/* spid buf: 03 addr[23:16] addr[15:8] addr[7:0] */
+0 mem_iicd_tbuf				/* iicd buf: iic_adr addr[15:8] addr[7:0] iic_adr */
+1 mem_addr_hi
+1 mem_addr_mi
+1 mem_addr_lo
+1 mem_iicd_addr
+4 mem_spid_rbuf
+2 mem_ucode_buf
+2 mem_ucode_len
+2 mem_sched_addr
+2 mem_ucode_ptr
+16 mem_ucode_keybuf
+18 mem_check_plap_temp
+
+1 mem_reconnect_flag
+1 mem_switch_fail_master_count
+1 mem_app_evt_timer_count
+
+)
+
+memalloc(
+2 mem_init_cnt
+)
+
+xmemalloc(
+/* patch enable 0x4000-0x403f  */
+
+1 mem_patch00
+1 mem_patch01
+1 mem_patch02
+1 mem_patch03
+1 mem_patch04
+1 mem_patch05
+1 mem_patch06
+1 mem_patch07
+1 mem_patch08
+1 mem_patch09
+1 mem_patch0a
+1 mem_patch0b
+1 mem_patch0c
+1 mem_patch0d
+1 mem_patch0e
+1 mem_patch0f
+1 mem_patch10
+1 mem_patch11
+1 mem_patch12
+1 mem_patch13
+1 mem_patch14
+1 mem_patch15
+1 mem_patch16
+1 mem_patch17
+1 mem_patch18
+1 mem_patch19
+1 mem_patch1a
+1 mem_patch1b
+1 mem_patch1c
+1 mem_patch1d
+1 mem_patch1e
+1 mem_patch1f
+1 mem_patch20
+1 mem_patch21
+1 mem_patch22
+1 mem_patch23
+1 mem_patch24
+1 mem_patch25
+1 mem_patch26
+1 mem_patch27
+1 mem_patch28
+1 mem_patch29
+1 mem_patch2a
+1 mem_patch2b
+1 mem_patch2c
+1 mem_patch2d
+1 mem_patch2e
+1 mem_patch2f
+1 mem_patch30
+1 mem_patch31
+1 mem_patch32
+1 mem_patch33
+1 mem_patch34
+1 mem_patch35
+1 mem_patch36
+1 mem_patch37
+1 mem_patch38
+1 mem_patch39
+1 mem_patch3a
+1 mem_patch3b
+1 mem_patch3c
+1 mem_patch3d
+1 mem_patch3e
+1 mem_patch3f
+
+	/* 3 device contexts  */
+80 mem_context
+1 mem_current_amaddr
+1 mem_lpm_mode
+1 mem_device_option
+1 mem_scan_mode
+4 mem_last_clkn
+
+	/* parameters */
+8 mem_features
+3 mem_lap
+1 mem_uap
+2 mem_nap
+1 mem_npage
+3 mem_glap
+3 mem_class
+2 mem_iscan_window
+2 mem_iscan_interval
+2 mem_pscan_window
+2 mem_pscan_interval
+2 mem_page_interval
+2 mem_page_window
+2 mem_page_to
+2 mem_inq_window
+1 mem_fcomp_mul
+1 mem_fcomp_div
+2 mem_rx_window_init
+2 mem_rx_window_sniff
+2 mem_rf_init_ptr
+
+	/* connection related */
+1 mem_last_type
+1 mem_last_type_esco
+1 mem_last_type_saved
+2 mem_retransmission_cnt
+4 mem_next_btclk
+
+1 mem_rf_rccal
+1 mem_handle_num
+1 mem_max_slot
+1 mem_eir_enable
+
+/* AFH related */
+4 mem_afh_instant
+2 mem_afh_error_total
+1 mem_afh_cfg
+1 mem_afh_new_mod
+5 mem_afh_map_lo
+5 mem_afh_map_hi
+1 mem_afh_used
+2 mem_afh_index
+11 mem_afh_map_new
+80 mem_afh_map
+4 mem_afh_timer
+10 mem_afh_classify_channel_map
+
+
+	/* lpm related */
+2 mem_chip_functions
+2 mem_lpm_wake_lock
+2 mem_lpm_interval
+1 mem_lpm_overhead
+1 mem_lpm_hibernate_switch
+1 mem_esco_addr
+1 mem_sniff_unint_lost
+1 mem_ptt
+4 mem_sleep_counter   //should be 0x41fc in REVC
+4 mem_sleep_counter_all
+6 mem_sleep_clkn
+3 mem_sniff_rcv
+3 mem_sniff_lost
+3 mem_clks_per_lpo
+
+1 mem_lpm_mult
+1 mem_lpm_mult_timeout
+1 mem_lpm_mult_cnt
+
+/* 8139-813b lpm_ctrl[31:12] */
+3 mem_lpm_config				
+
+1 mem_lpm_xtalcnt
+1 mem_lpm_buckcnt
+1 mem_lpm_ldocnt
+1 mem_lpm_isogate
+1 mem_lpm_isogate_final
+16 mem_saved_gpio	// should be 0x421e in REVC
+3 mem_saved_gsel
+8 mem_saved_mark
+1 mem_saved_spidctrl
+2 mem_patch_ptr
+2 mem_patch_len
+
+32 mem_timers
+
+/*LINK KEY*/
+1 mem_link_key_exists
+16 mem_link_key
+
+
+/* HCI */
+1 mem_hci_cmd
+1 mem_hci_conn_handle
+3 mem_hci_plap
+1 mem_hci_puap
+2 mem_hci_pnap
+
+/*Peripherals*/
+1 mem_uartd_rxitems_got_data
+1 mem_uartd_rxitems_threshold
+2 mem_uartd_rx_timeout
+1 mem_loadcode_times
+
+1 mem_tx_lch
+2 mem_tx_len
+
+1 mem_tx_power
+
+1 mem_context_number
+1 mem_250k_freq_enable
+1 mem_rf_init_data
+)
+
+(//bluetooth tx power
+0 TX_POWER_0DB
+1 TX_POWER_3DB
+2 TX_POWER_5DB
+3 TX_POWER_f3DB
+4 TX_POWER_f5DB
+
+0x20 TX_POWER_PAIR
+)
+
+
+0x3b17 rom_lpm_sleep
+0x59e0 rom_save_ucode
+
+0x4219 rom_mem_lpm_xtalcnt
+0x423b rom_mem_patch_ptr
+0x423d rom_mem_patch_len
+
+0x5b1a rom_otpd_read_data
+0x5ada rom_otp_write
+	/* context */
+(
+0x01 coffset_mode
+0x02 coffset_tsniff
+0x04 coffset_sniff_anchor
+0x08 coffset_clk_offset
+0x0e coffset_rx_window
+0x10 coffset_plap
+0x16 coffset_conn_handle
+0x17 coffset_arq
+	/* 3.0 only */
+0x18 coffset_lmp_to_send
+0x1b coffset_op
+0x1c coffset_state_map
+	/* le only */
+0x18 coffset_le_ch
+0x19 coffset_le_hop
+0x1a coffset_le_event_cnt
+
+80 context_size
+3 context_num
+)
+
+(
+0 lpm_flag_wake
+1 lpm_flag_loadcode
+)
+
+/* ========= parameters ============== */
+(
+0x0050 param_newconn_arq
+0x0007 param_esco_addr
+0x0010 param_conn_handle
+0x01f0 param_conn_handle_comp
+0x0020 param_newconnto
+0x0008 param_pagerespto
+0x0a00 param_snooze_setup_orig
+0x5353 param_snooze_ahead_orig
+0x00ff param_ninquiry
+0x2000 param_page_to
+0x0005 param_max_slot
+0x0010 param_sco_poll
+
+/* 6Mhz clock setting */
+/* 12Mhz clock setting */
+0x0e43 param_tx_setup
+0x09d0 param_rx_setup_earlier
+0x0600 param_rf_setup
+0x03bb param_clke_cal
+0x0600 param_conn_access 
+0x0800 param_conn_access_wider
+0x0500 param_pll_setup		// 120 is minimum
+0x0d00 param_rx_setup	// 114us before sync
+2000 param_dpll_start_delay
+
+110 param_lpm_fix
+10 param_lpo_extra
+200 param_lpm_adjmax
+
+-1 param_hibernate_clks
+3000 param_chgpump_delay
+
+3 param_featrue_ssp
+0x0101 param_lmpext_ssp_enable
+339 param_acl_pktlen
+30   param_sco_pktlen
+1     param_acl_pktcnt		/*buffer acl pkt cnt*/
+7     param_sco_pktcnt
+
+
+0x8fffff param_features0
+0x9d83fe param_features1  // not support afh
+0x8359     param_features2
+0x000033 param_unap
+0x001177 param_lap
+0x9e8b33 param_glap
+0x002540 param_class//0x180208 //0x002580//402500//240404
+0x12e904 param_hci_version
+0x000a04 param_lmp_version//0x0a04
+0x000a06 param_lmp_version0
+0x12e9 param_lmp_subversion
+0x0012 param_tisw
+0x0012 param_tpsw
+0x1000 param_tisi
+0x0800 param_tpsi
+0x0020 param_page_window
+0x0020 param_inq_window
+0x1c80 param_supervision_to
+39 param_fcomp_div
+2 param_fcomp_mul
+6     param_name_len
+0x535442 param_name
+0x344950 param_name1
+
+
+)
+
+/* ======= packet types  ========= */
+(
+0x0      type_null    
+0x1      type_poll   
+0x2      type_fhs    
+0x3      type_dm1    
+0x4      type_dh1    
+0x5      type_hv1    
+0x6      type_hv2    
+0x7      type_hv3    
+0x8      type_3dh1     
+0x9      type_aux1   
+0xa      type_dm3    
+0xb      type_dh3    
+0xe      type_dm5    
+0xf      type_dh5    
+0x10     type_id
+0x11     type_shutdown
+0x13     type_lmp
+)
+
+/* ========== flag[6] =============== */
+(
+0        always        /* always 1 */
+1        true          /* set/rstn by verify,compare,icompare (true) */
+2        positive      /* set/rstn by all alu operations (opcode = 0x03,0x13,0x0f,0x1f), if alu output >= 0 */
+3        timeout       /* read only, the timeout from timers */
+5        zero          /* set/rstn by all alu operations (opcode = 0x03,0x13,0x0f,0x1f), if alu output == 0 */
+6        crc_failed    /* level, cleared by hop_start */
+7        enable_white  /* outside mux decide whether to load bt_clk or response_X */
+8        enable_parity /* level */
+9        enable_crc    /* level */
+10       enable_hec    /* level */
+11       decode_fec1   /* level */
+12       decode_fec2   /* level */
+13       decode_fec0   /* level */
+14       encrypt       /* level */
+15       crc16       /* for caculate ccitt crc16 */
+16       swfine	/* =0 stop_watch count based on oneslot =1 on 1 clock */
+20       rqst_freq    /* pulse, to start calculating frequency */
+21       recalc        /* pulse, to recalculate the fhs_parity */
+22       init_encrypt  /* pulse, issued to initialize encrption */
+23       mhalfbnd    /* half slot boundary of clke_rt, or when clke_bt[0] toggles */
+24       sync          /* sync found as a result of correlation,set/rstn by correlate opcode */
+25       user10    /* user10 */
+26       kc_p_activate  /* pulse to recalc the kc_p */
+27       encode_fec1   /* level */
+28       encode_fec2   /* level */
+29       encode_fec0   /* level */
+30       packet_end    /* pulse */
+32       is_tx         /* level */
+33       is_rx         /* level */
+34       halfslot     /* pulse, read only, when clkn_bt[0] toggles */
+35       oneslot      /* pulse, read only, when clkn_bt[1] toggles */
+36       mslotbnd     /* pulse, read only, when clke_bt[1] toggles */
+37       expire       /* level, read only, when selected clock source exceed timeup value */
+38       meet         /* level, read only, when selected clock source meet timeup value */
+39       tx_clear     /* level, read only, indicate tx pipe is cleared */
+40       user         /* user0 */
+41       master        /* user1 */
+42       slave2         /* user2 */
+43       wake           /* user3 */
+44       user2        /* user4 */
+45       match         /* user5 */
+46       attempt        /* user6 */
+47       user3          /* user7 */
+48       clknt         /* user8 */
+49	   user7 	/* user9 */
+50       synchronize   /* synchronize lpo and regular version of the clock */
+51       lpo_edge  /* read only, 3 clocks after risling edge of lpo clock */
+52       blank         /* C0 only, means pdata == 0 */
+53       modone          /* set divide operation is done */
+54       le		/* bluetooth 4.0 LE enable */
+55       aes_ready	/* set when aes is ok */
+63       never         /* read only, always 0 */
+)
+
+default flag = always
+
+/* ========== reg[6] =============== */
+(
+0        mark   /* for keeping strobes, more permanent */
+1        type   /* save and verify during rx */     /* rw */
+2        temp   /* general purpose register, 64 bits */
+3        contru  /* contr uart */
+4        am_addr      /* verify during rx, read and send during tx */ /* ro */
+5        contw        /* last mem_addr during write */
+6        contr        /* last mem_addr during read */
+7        queue    /* the index of qset*,qisolate* commands, ie, if queue = 3, qset/qisolate operate on bit3 */
+8        debug    /* can be wired out for observation */
+9        access   /* the 72 bit access word */
+10       contwu   /* contw uart */
+11       timeup        /* when does certain counter expire */
+12       pwindow       /* bit 71-61 of pdata; because on rx, bits shifts in from 71 down */
+13       fhs_parity    /* re-gernated based on bt_adr( {nap,uap,lap} ) when recalc flag is pulsed */
+14       white_init    /* init value of the whitening */
+15       crc24_init        /* init crc24 lfsr, 24 bits */
+16       interrupts    /* set interrupts, 40 bits */
+17       rega          /* general purpose register, 32 bits */
+18       regb          /* general purpose register, 32 bits */
+19       regc          /* general purpose register, 17 bits */
+20       regab         /* concat of {rega,regb}, thus 64 bits */
+21       radio_ctrl   /* radio i/f direct i/o ctrl, check following "radio_ctrl" section */
+21       ctrl_reg     /* 2023 and after */
+22       jtag_addr    /* load jtag address field, lsb */
+23       freq_index   /* 7 bit read only */
+24       jtag_data    /* wdata to and rdata from jtag */
+25       clkn              /* {clkn_bt, clkn_rt} */
+26       clke              /* {clke_bt, clke_rt} */
+27       stop_watch
+28       fhs_misc   /* SR, SP, pscan mode */
+29       fhs_class  /* class field in fhs */
+30       fhs0   /* read only, bit 0-71 of fhs word */
+31       fhs1   /* read only, bit 72-142 of fhs word */
+32       bt_adr /* r/w, the bt_addr to access gen and freq hopping, contain only lap and uap */
+33       bt_clk /* r/w, the bt_clk for freq hopping */
+34       clkn_bt  /* read only, native bluetooth clock, free running 3.2KHz  or controlled by RTHALFSLOT register */
+35       clkn_rt  /* read only, native realtime clock, free running 12MHz, count from 0-3749, or controlled by RTHALFSLOT register */
+36       freq_mode
+/* wire even_train    = freq_mode[4];    // odd even train                            */
+/* wire conn_mode     = 3;    // connection                                           */
+/* wire iqpgscan_mode = 2;    // slave in inquiry and page (not response)             */
+/* wire iqpgresp_mode = 1;    // slave in inquriy and page (response only)            */
+/* wire inqypage_mode = 0;    // master in inquiry and page(response or not response) */
+37       xin   /* x parameter, read only */
+38       N_tx_slot /* the N factor in equations for Xi,Xp,Xprm,Xprs */
+39 	   auxcnt
+40       clke_bt  /* r/w,  external bluetooth clock , free running 3.2KHz or controlled by RTHALFSLOT register */
+41       clke_rt  /* r/w,  external realtime clock, , free running 12MHz, count from 0-3749, or controlled by RTHALFSLOT register */
+43       host_mode         /* generic stuff for kick starts */
+44       lap
+45       uap
+46       nap         
+47       regext		/* r/w extended 12x32bit registers,  indexed by regext_index */
+48       alarm             /* r/w, lpo wake up time, this is also how lpo and current clock keep sync */
+49       lpo_time          /* read only, this is the value to be copied back to clkn/clke after wakeup */
+50       kc_ls             /* secret key,                71: 0 */
+51       kc_ms             /* secret key,               127:72 */
+52       g1l               /* encryption length                */
+53		mask3ff		/* for mask 0x3ff operation */
+54       aes_ctrl		
+56       regext_index   /* index of regext */
+57	     loopcnt
+58      stack			/* current return address */
+59       stack_ptr		/* stack depth */
+61         pc /* direct goto */
+62       null              /* to nowhere */
+63       pdata /* the shift register */
+)
+default reg = pdata
+
+/* regext_index */
+(
+0 regidx_data
+4 regidx_key
+8 regidx_xor
+12 regidx_result
+)
+/* ========== radio_ctrl========= */
+(
+0 TXGFSK
+1 PSK
+2 PSK3M
+3 RESET
+)
+/* assign BPWR = radio_ctrl[0]; */
+/* assign PARAMP = radio_ctrl[1]; */
+/* assign XTALPU = radio_ctrl[2]; */
+/* assign SYNTHPU = radio_ctrl[3]; */
+/* assign TXPU = radio_ctrl[4]; */
+/* assign RXPU = radio_ctrl[5]; */
+/* assign SLCTRL = radio_ctrl[6]; */
+/* assign XTALSEL_MUX_SEL = radio_ctrl[7] */
+
+
+/* =========== destination[4] ============== */
+(
+0 bucket
+1 rxf
+2 back
+3 mod
+)
+default dest = bucket
+
+/* =========== source[4] ============= */
+(
+1 txf
+3 demod
+)
+default source = 0
+
+
+/* ============== mark ============= *//*0 - 47 */
+(
+
+0  mark_fhs_eir  
+1  mark_rxbuf_inuse
+2  mark_tx_l2cap
+3  mark_switch_initiated
+4  mark_accept_switch
+5  mark_loopback
+7  mark_esco
+8  mark_esco_rxok
+9  mark_context
+10 mark_am_addr_broadcast
+11 mark_fhs_already_good
+12 mark_page_trainb
+13 mark_lpm_mult_enable
+14 mark_usb_flag
+15 mark_old_packet
+16 mark_longpacket
+17 mark_testmode
+18 mark_ar2
+19 mark_h5tx_rp
+20 mark_h5tx_crc	
+21 mark_h5tx_retransmit
+22 mark_h5rx_pstart
+23 mark_h5_sync
+24 mark_h5_reinit
+28 mark_inquiry_on
+29 mark_inquiry_state
+30 mark_inquiry_trainb
+31 mark_periodical_diac
+32 mark_all_diac
+33 mark_slave_in_rand_accepted
+34 mark_reconn_recieve_switch
+35 mark_isstr
+36 mark_loadcode
+37 mark_ext_patch
+38 mark_24g
+39 mark_24g_conext
+40 mark_eeprom_size
+// REVAB:max 35, REVC:max 63
+41 mark_ble_tx_md
+42 mark_ble_rx_md
+43 mark_otp_encrypt
+44 mark_first_packet
+45 mark_role_switch_receive_fhs
+
+)
+
+(
+1 reload_type_otp
+2 reload_type_spi
+3 reload_type_iic
+)
+
+
+/* ============== soft timers ============== */
+(
+0 le_adv_interval_timer
+1 inquiry_length_timer
+2 le_scan_interval_timer
+3 page_length_timer
+4 iscan_interval_timer
+5 pscan_interval_timer
+6 switch_wait_timer
+7 enpt_delay_timer
+8 page_interval_timer
+9 key_scan_timer
+10 smp_pairing_timer
+11  ui_led_blink   //led timer 可扩展
+12  ui_led_blink1
+13 ui_led_blink2
+
+)
+
+(
+1 hci_cmd_inquiry
+2 hci_cmd_inquiry_cancel
+3 hci_cmd_remote_name_req
+4 hci_cmd_remote_feature_req
+5 hci_cmd_create_conn
+6 hci_cmd_disconn
+7 hci_cmd_accept_conn
+8 hci_cmd_reject_conn
+9 hci_cmd_pair
+10 hci_cmd_nopair
+11 hci_cmd_linkkey
+12 hci_cmd_nokey
+13 hci_cmd_auth
+14 hci_cmd_stopencrypt
+15 hci_cmd_startencrypt
+16 hci_cmd_setup_sco
+17 hci_cmd_disconn_sco
+18 hci_cmd_in_sniff
+19 hci_cmd_exit_sniff
+20 hci_cmd_remote_version_req
+21 hci_cmd_remote_ext_features_req
+22 hci_cmd_io_cap
+23 hci_cmd_role_discovery
+24 hci_cmd_role_switch
+25 hci_cmd_accept_with_switch
+26 hci_cmd_detach
+27 hci_cmd_le_create_conn
+28 hci_cmd_accept_sco_conn
+80 hci_cmd_wait_remote_feature
+81 hci_cmd_wait_remote_ext_feature
+82 hci_cmd_wait_remote_name
+)
+
+
+
+/* ============== debug ============= */
+(
+0 debug_neg_skew
+1 debug_bitbucket
+2 debug_dont_clear_got_tx
+3 debug_scatter_enabled
+4 debug_tx_fixed_freq
+5 debug_rx_fixed_freq
+6 debug_tx_pattern
+)
+
+/* ============== tester_emulator ============= */
+(
+0 tester_fixed_flow
+1 tester_fixed_flow_polarity
+2 tester_change
+3 tester_exit
+4 tester_pattern_test
+5 tester_whitening_change
+6 tester_fixed_freq
+7 tester_no_whitening
+)
+
+/* ============== mode ==========*/
+(
+0 mode_le
+1 mode_master
+2 afh_enable
+3 afh_change
+4 send_sco_when_slave
+5 first_seqnx
+)
+
+/* ============== state_map ==========*/
+(
+0 smap_lmptidinit
+1 smap_lmptid
+2 smap_encryption
+3 smap_name_res
+4 smap_name_req
+5 smap_edr
+6 smap_rxlmp
+7 smap_rxl2cap
+)
+(
+0 state_inconn
+1 state_insniff
+2 state_insco 
+3 state_inpage
+4 state_conn_comp
+5 state_init_seq
+6 state_combkey
+7 state_linkkey
+)
+(
+0 op_send_sres
+1 op_auth_req
+2 op_inrand_req
+3 op_disconn
+4 op_stop_enc
+5 op_start_enc
+6 op_txl2cap
+7 op_pkt_comp
+)
+
+
+/* ============== arq [3] ================ */
+(
+0 flow
+1 arqn
+2 seqn
+3 wack
+4 flowx              /* out */  /* not really in memory */
+5 arqnx              /* out */
+6 seqnx              /* out */
+7 bcast1             /* first broadcast received */
+)
+
+/* arq          {flow,arqn,seqn}, read/write */
+/* [0] flow r/w  acl full status of the other, store during rx, checked during tx */
+/* [1] arqn r/w  ack of the other during rx (ack tx fifo),                        */
+/* [2] seqn r/w  seqn of the other, check during rx                               */ 
+/* arqx         {flowx,arqnx,seqnx} */
+/* [0] flowx r/o flow back to the other, 1 alow send, 0 not to send, read only tx */
+/* [1] arqnx r/w ack to the other, set by rx, send back on tx                     */
+/* [2] seqnx r/w toggled by arqn, to be send during tx                            */ 
+
+(
+0 llid0
+1 llid1
+2 nesn
+3 sn
+4 md
+5 wak
+)
+
+/* AFH flags */
+(
+0 AFH_CFG_ON
+1 AFH_CFG_TIMER
+2 send_lmp_set_afh
+3 AFH_CFG_REPORT_MODE
+4 AFH_CFG_MASTER_SENT_REQ
+)
+
+/* LLID CODE */
+(	
+1 LLID_L2CAP_CONT
+2 LLID_L2CAP_START
+3 LLID_LMP
+)
+
+/* ============== master_state ==========*/
+(
+0  master_in_idle
+1  master_in_inquiry
+2  master_in_page
+10 master_in_becoming_slave
+15 master_in_conn
+)
+(
+0 newrev_feature_bettx
+1 newrev_feature_betplltx
+2 newrev_feature_skip_retransmit
+3 newrev_feature_init_radio_after_sleep
+4 newrev_feature_no_lpolog
+)
+/*************mem_pincode_state****************/
+(
+0 pincode_state_ilde
+1 pincode_state_wait_pincode
+2 pincode_state_pincode_ready
+)
+
+
+// lpm_write
+(
+1 lpmreg_sel_ctrl
+2 lpmreg_sel_ctrl2
+4 lpmreg_sel_gpiolow
+8 lpmreg_sel_gpiohigh
+16 lpmreg_sel_counter
+)
+
+//scan_mode
+(
+0 inq_scan_mode
+1 page_scan_mode
+2 page_inq_enable
+)
+//mem_neogotiation_state
+(
+ 0 default_neogotiation_state
+ 1 prarm_neogotiation
+)
+
+//mem_lpm_wake_lock
+(
+0 wake_lock_ble_rx
+1 wake_lock_ble_tx
+
+3 wake_lock_key_press
+4 wake_lock_ble_tx_patch
+5 wake_lock_uart_tx
+6 wake_lock_uart_rx
+7 wake_lock_button
+8 wake_lock_cmd
+9 wake_lock_app
+10 wake_lock_lmp_tx
+11 wake_lock_lmp_rx
+12 wake_lock_l2cap_tx
+13 wake_lock_l2cap_rx
+14 wake_lock_ipc_c512bt
+15 wake_lock_ipc_bt2c51
+
+)
+
+(
+0 bt_disabled
+1 ble_disabled
+2 module_disable
+
+)
+
+(
+0x33  REC_3_MODE
+0x34  REC_4_MODE
+0x35  REC_4_MODE_STATIC_ADDRESS
+0x36  REC_4_MODE_RANDOM_RESOLVABLE_PRIVATE_ADDRESS
+0x37  REC_4_MODE_RANDOM_NON_RESOLVABLE_PRIVATE_ADDRESS
+)
+
+
+//sniff UART_TX UART_RX
+(
+6 UART_WAKEUP_TX
+7 UART_WAKEUP_RX
+)
+
+
+(
+0 P24G_SM_PAIRING_SUCC
+1 P24G_SM_PAIRING_REQUEST
+2 P24G_SM_PAIRING_WAIT_ADDR
+3 P24G_SM_PAIRING_COMPLETE
+4 P24G_SM_PAIRING_WAIT_SUCC
+)
+
+(
+0 P24G_PAIRING_REQ_HEAD
+1 P24G_PAIRING_COMPLETE_HEAD
+)
+
+/* 24g */
+(
+6 dlen_24g
+14 plen_24g
+90 blen_tx_24g
+106 blen_rx_24g
+42 blen_txack_24g
+58 blen_rxack_24g
+
+0xaaf08e acc_24g
+0x15c4 crc_data_3byte
+0xbb81 crc_data_6byte
+0x4160 crc_ack
+41390 crc_ack_4byte
+)
+
+
+
+
+
+xmemalloc(
+1 mem_app_handshake_flag
+2 mem_sniff_param_interval
+2 mem_sniff_param_attempt
+2 mem_sniff_param_timeout
+
+/*App Callback Functons*/
+2 mem_cb_check_wakelock
+2 mem_cb_before_hibernate
+2 mem_cb_before_lpm
+2 mem_cb_le_process
+2 mem_cb_bt_process
+2 mem_cb_idle_process
+2 mem_cb_bb_event_process
+2 mem_cb_discovry_timeout
+2 mem_cb_att_write
+2 mem_cb_ble_transmit
+2 mem_cb_event_timer
+2 mem_cb_bt_set_mult
+2 mem_cb_spi_flash_write_complate
+
+
+
+
+2 mem_eeprom_base
+
+1 mem_unsniff2sniff_timer_count
+//lpm mode
+1 mem_wake_up_delay_timer
+
+1 mem_app_connection_options
+
+//
+2 mem_app_disconn_reason
+2 mem_app_disconn_reason_flag
+4 mem_lpm_delay_after_sniff
+1 mem_xrecord_mode
+
+1 mem_eeprom_block_size
+1 mem_spi_init_clk
+1 mem_spi_init_delay_time
+1 mem_spi_ncs_gpio
+
+2 mem_nv_data_ptr
+1 mem_nv_data_number
+
+2 mem_queue_ptr
+
+1 mem_ui_led_struct_num
+2 mem_ui_led_struct_ptr
+
+//adc
+2 mem_0_5_adc_io_data
+2 mem_1v_adc_hvin_data
+2 mem_2v_adc_vinlpm_data
+2 mem_1v_adc_io_data
+2 mem_5v_adc_hvin_data
+2 mem_3v_adc_vinlpm_data
+2 mem_otp_adc_flag
+2 mem_reference_voltage
+1 mem_adc_config_flag
+1 mem_adc_channel
+2 mem_adc_current_value
+1 mem_adc_power_flag	//bit0:low power falg ; bit1:no power flag
+
+3 mem_spi_write_addr
+2 mem_spi_write_ptr
+2 mem_spi_write_len
+1 mem_spi_write_flash_sm
+1 mem_eeprom_wp_gpio
+2 mem_kscan_ptr
+ifdef SPI_SIMULATE
+//spi gpio config
+0 mem_spi_simulate_struct
+1 mem_spi_simulate_cs_gpio
+1 mem_spi_simulate_sclk_gpio
+1 mem_spi_simulate_mosi_gpio
+1 mem_spi_simulate_miso_gpio
+1 mem_spi_simulate_motion_gpio
+//spi slave read byte
+50 mem_spi_simulate_read_byte_slave
+1 mem_spi_simulate_read_byte_slave_temp
+1 mem_spi_simulate_read_length_slave
+1 mem_spi_simulate_read_length_slave_temp
+//spi slave write byte
+50 mem_spi_simulate_write_byte_slave
+1 mem_spi_simulate_write_byte_slave_temp
+1 mem_spi_simulate_write_byte_slave_temp_temp
+1 mem_spi_simulate_write_length_slave
+1 mem_spi_simulate_write_length_slave_temp
+endif
+
+0 mem_key_num_ptr
+2 mem_keyscan_ptr
+
+2 mem_power_param_ptr
+
+0 mem_power_on_flag	//forbid to move this variable
+2 mem_24g_head_ptr
+)
+//adc read
+(
+0 ADC_CONFIG_VINLPM
+1 ADC_CONFIG_HVIN
+2 ADC_CONFIG_GPIO
+)
+
+(
+0 QUEUE_OFFSET_EACH_SIZE
+1 QUEUE_OFFSET_LENGTH
+2 QUEUE_OFFSET_CURR_NUM
+3 QUEUE_OFFSET_READ_PTR
+4 QUEUE_OFFSET_WRITE_PTR
+5 QUEUE_OFFSET_ELE_INIT_ADDR
+)
+
+(
+//Flash Register
+0x05 FLASH_READ_SATUS
+
+// Flash Status Register
+0x00 FLASH_STATUS_WIP
+0X01 FLASH_STATUS_WEL
+0X02 FLASH_STATUS_BP0
+0X03 FLASH_STATUS_BP1
+
+//Flash Write Sm
+0X00 FLASH_SM_NO_BUYS
+0X01 FLASH_SM_START
+0X02 FLASH_SM_ERASE_SECTOR
+0X03 FLASH_SM_WAIT_ERASE_SECTOR
+0X04 FLASH_SM_WRITE_DATA
+0X05 FLASH_SM_WAIT_WRITE_DATA
+
+
+//Flash Command
+0x02 FLASH_COMMAND_WRITE_DATA
+0x03 FLASH_COMMAND_READ_DATA
+0x20 FLASH_COMMAND_SECTOR_ERASE
+)
+
+0x0000 otp_ucode_flag
+0x07f0 otp_ucode_aeskey
+
+/* adc data addr and flag */
+(
+0x07e0 OTP_CHIP_FUNCTIONS
+0x07e2 otp_adc_io_0_5V_addr
+0x07e4 otp_adc_hvin_1V_addr
+0x07e6 otp_adc_vinlpm_2V_addr
+0x07e8 otp_adc_io_1V_addr
+0x07ea otp_adc_hvin_5V_addr
+0x07ec otp_adc_vinlpm_3V_addr
+0x07ee otp_adc_flag_addr
+0xaa55 OTP_ADC_FLAG
+)
+
+/* data stored in eeprom */
+(
+0	eeprom_bdaddr_list
+0	eeprom_nv_ram
+28	eeprom_last_record
+29	eeprom_le_reconn_local_addr
+35	eeprom_linkkey_list//64
+
+99	eeprom_module_bt_adss//6
+105	eeprom_module_le_adss//6
+111	eeprom_module_pincode_length//1
+112	eeprom_module_pincode//15
+127	eeprom_module_bt_name_length//1
+128	eeprom_module_bt_name//32
+160	eeprom_module_ble_name_length//1
+161	eeprom_module_ble_name//31
+192	eeprom_module_trans_baud//3
+195	eeprom_module_init_flag//2
+197	eeprom_module_uuid//6
+203 eeprom_module_ssp_enable//1
+204 eeprom_module_end//2
+
+//dpi eeprom addr
+198 eeprom_mouse_dpi
+)
+
+/*mem_app_handshake_flag*/
+(
+0 APP_HANDSHAKE_NULL
+1 APP_HANDSHAKE_DONE
+
+)
+/*mem_device_option*/
+(
+1 dvc_op_hci
+3 dvc_op_kb
+4 dvc_op_dongle
+5 dvc_op_spp
+6 dvc_op_ukey
+7 dvc_op_ir
+
+9 dvc_op_shutter
+10 dvc_op_module
+11 dvc_op_ble_mouse
+12 dvc_op_ble_kb
+13 dvc_op_ble_prcp
+255 dvc_op_test
+//device option hight 4
+6 dvc_op_mouse
+7 dvc_op_keyboard
+//device option low 2
+(
+0 MODE_3_MOUSE
+1 MODE_4_MOUSE
+)
+)
+
+(
+3 twspi_sclk
+4 twspi_sdio
+)
+
+(
+4 pan_clk_bit
+5 pan_dat_bit
+6 pan_mov_bit
+)
+
+(
+7 otp_uflag_aes
+6 otp_uflag_skip_eep
+5 otp_uflag_skip_flash
+4 otp_uflag_hci
+)
+
+/* ir command */
+(
+1 ircmd_record
+2 ircmd_play
+3 ircmd_write_pulse
+4 ircmd_write_seq
+5 ircmd_write_next
+
+8 ircmd_test_play
+9 ircmd_test_rec
+
+10 ircmd_report_pulse
+11 ircmd_report_seq
+12 ircmd_report_raw
+
+20 ircmd_screen_on
+21 ircmd_screen_off
+)
+
+(
+7 gpio_active_bit
+)
+(
+2 HID_HANDSHAKE_TIMEOUT
+
+)
+
+(
+1 APP_FLAG_RECONNECT
+)
+(
+5 LPM_WAKE_UP_DELAY_TIMER
+)
+
+
+//mem_app_disconn_reason
+//mem_app_disconn_reason_flag
+//bit map
+(
+2 APP_DISC_RSN_SIZE
+)
+(
+0 APP_DISC_BY_BUTTON
+1 APP_DISC_AFTER_PAIRING
+2 APP_DISC_AFTER_RECONN
+3 APP_DISC_AFTER_SNIFF
+4 APP_DISC_AFTER_SETUP_DONE
+5 APP_DISC_AFTER_HANDSHAKE
+6 APP_DISC_BT
+7 APP_DISC_BLE
+8 APP_DISC_L2CAP_REFUSED
+9 APP_DISC_SWITCH_FAIL
+10 APP_DISC_PB_BUTTON
+)
+//eeprom init flag
+(
+	0xaa55 EEPROM_INIT_FLAG
+)
+
+
+
+memalloc(
+1 mem_h5rx_ackcnt
+1 mem_check_err_acl_cont
+
+1 mem_rp_packets
+2 mem_packet_type
+
+2 mem_hci_sniff_conn_handle
+2 mem_hci_sniff_max_interval
+2 mem_hci_sniff_min_interval
+2 mem_hci_sniff_attempt
+2 mem_hci_sniff_timeout
+2 mem_voice_setting
+1 mem_retransmission_effort
+2 mem_sco_ptype
+3 mem_extm_uap_restore
+
+2 mem_h5rx_rptr
+1 mem_h5rx_ack
+1 mem_h5tx_ack
+2 mem_h5tx_rptr
+2 mem_h5tx_wptr
+2 mem_h5tx_free
+1 mem_h5rx_tmp
+1 mem_h5tx_seq
+
+2 mem_hci_acl_queue_wptr
+2 mem_hci_acl_queue_rptr
+2 mem_hci_acl_queue_end
+1 mem_hci_acl_queue_wcnt
+1 mem_hci_acl_cnt
+
+2 mem_hci_acl_tx_trigger_wptr //tx via uart
+
+1 mem_hci_curr_len
+2 mem_hci_curr_target 
+) 
+
+xmemalloc(
+
+2 mem_baud
+1 mem_hci_lt_rx_state
+)
+
+15 hci_flag_rp
+//mem_hci_options bit map
+(
+1 hci_option_h4
+2 hci_option_protocol2
+3 hci_option_protocol3
+4 hci_option_uart
+5 hci_option_usb
+6 hci_option_phy2
+7 hci_option_phy3
+)
+// UART baud rate @6MHz
+(
+0 uart_ctrl_bit_enable
+3 uart_ctrl_bit_slip_protocol
+
+)
+
+//bit map of core_uart_ctrl
+(
+
+)
+//bit map of core_uart_status
+(
+0 uart_status_tx_fifo_full
+1 uart_status_tx_fifo_empty
+2 uart_status_tx_busy
+3 uart_status_rx_fifo_empty
+
+)
+//HCI H4 LOG related
+(
+0x4850 mem_hci_log
+8 hci_log_size
+100 hci_log_cnt
+
+)
+//HCI H4 Packet TYPE
+(
+0x01 HCI_H4_TYPE_CMD
+0x02 HCI_H4_TYPE_ACL
+0x04 HCI_H4_TYPE_EVENT
+
+)
+// HCI command opcode group field values
+(
+0x01 HCI_OGF_LINK_CONTROL
+0x02 HCI_OGF_LINK_POLICY
+0x03 HCI_OGF_BASEBAND
+0x04 HCI_OGF_INFO
+0x05 HCI_OGF_STATUS
+0x06 HCI_OGF_TEST
+0x08 HCI_OGF_LOW_ENERGY
+0x3e HCI_OGF_LOGO_TESTING
+0x3f HCI_OGF_VENDOR_SPECIFIC
+)
+
+// HCI link control opcode command field values, OGF=1
+(
+0x01 HCI_INQUIRY 
+0x02 HCI_INQUIRY_CANCEL 
+0x03 HCI_PERIODIC_INQUIRY_MODE 
+0x04 HCI_EXIT_PERIODIC_INQUIRY_MODE 
+0x05 HCI_CREATE_CONNECTION 
+0x06 HCI_DISCONNECT 
+0x07 HCI_ADD_SCO_CONNECTION 
+0x08 HCI_CREATE_CONNECTION_CANCEL
+0x09 HCI_ACCEPT_CONNECTION 
+0x0A HCI_REJECT_CONNECTION 
+0x0B HCI_LINK_KEY_REQUEST_REPLY 
+0x0C HCI_LINK_KEY_REQUEST_NEGATIVE_REPLY 
+0x0D HCI_PIN_CODE_REQUEST_REPLY 
+0x0E HCI_PIN_CODE_REQUEST_NEGATIVE_REPLY 
+0x0F HCI_CHANGE_CONNECTION_PACKET_TYPE 
+0x11 HCI_AUTHENTICATION_REQUESTED 
+0x13 HCI_SET_CONNECTION_ENCRYPTION 
+0x15 HCI_CHANGE_CONNECTION_LINK_KEY 
+0x17 HCI_MASTER_LINK_KEY 
+0x19 HCI_REMOTE_NAME_REQUEST 
+0x1A HCI_REMOTE_NAME_REQUEST_CANCEL
+0x1B HCI_READ_REMOTE_SUPPORTED_FEATURES 
+0x1C HCI_READ_REMOTE_EXT_FEATURES 
+0x1D HCI_READ_REMOTE_VERSION_INFORMATION 
+0x1F HCI_READ_CLOCK_OFFSET 
+0x20 HCI_READ_LMP_HANDLE
+0x28 HCI_SETUP_SCO_CONNECTION
+0x29 HCI_ACCEPT_SCO_CONNECTION
+0x2A HCI_REJECT_SCO_CONNECTION
+0x2B HCI_IO_CAP_REQUEST_REPLY
+0x2C HCI_USER_CONFIRMATION_REQUEST_REPLY
+0x2D HCI_USER_CONFIRMATION_REQUEST_NEGATIVE_REPLY
+0x2E HCI_USER_PASSKEY_REQUEST_REPLY
+0x2F HCI_USER_PASSKEY_REQUEST_NEGATIVE_REPLY
+0x30 HCI_REMOTE_OOB_DATA_REQUEST_REPLY
+0x33 HCI_REMOTE_OOB_DATA_REQUEST_NEGATIVE_REPLY
+0x34 HCI_IO_CAPABILITY_REQUEST_NEGATIVE_REPLY
+0x35 HCI_CREATE_PHYSICAL_LINK
+0x36 HCI_ACCEPT_PHYSICAL_LINK
+0x37 HCI_DISCONNECT_PHYSICAL_LINK
+0x38 HCI_CREATE_LOGICAL_LINK
+0x39 HCI_ACCEPT_LOGICAL_LINK
+0x3A HCI_DISCONNECT_LOGICAL_LINK
+0x3B HCI_LOGICAL_LINK_CANCEL
+0x3C HCI_FLOW_SPEC_MODIFY
+0x3D HCI_ENHANCED_SETUP_SYNCHRONOUS_CONNECTION
+0x3E HCI_ENHANCED_ACCEPT_SYNCHRONOUS_CONNECTION_REQUEST
+0x3F HCI_TRUNCATED_PAGE
+0x40 HCI_TRUNCATED_PAGE_CANCEL
+0x41 HCI_SET_CONNECTIONLESS_SLAVE_BROADCAST
+0x42 HCI_SET_CONNECTIONLESS_SLAVE_BROADCAST_RECEIVE
+0x43 HCI_START_SYNCHRONIZATION_TRAIN
+0x44 HCI_RECEIVE_SYNCHRONIZATION_TRAIN
+0x45 HCI_REMOTE_OOB_EXTENDED_DATA_REQUEST_REPLY
+)
+
+
+// HCI link policy commands OCF value, OGF=2
+(
+0x01 HCI_HOLD_MODE 
+0x03 HCI_SNIFF_MODE 
+0x04 HCI_EXIT_SNIFF_MODE 
+0x05 HCI_PARK_MODE 
+0x06 HCI_EXIT_PARK_MODE 
+0x07 HCI_QOS_SETUP 
+0x09 HCI_ROLE_DISCOVERY 
+0x0B HCI_SWITCH_ROLE 
+0x0C HCI_READ_LINK_POLICY_SETTINGS 
+0x0D HCI_WRITE_LINK_POLICY_SETTINGS 
+0x0e HCI_READ_DEFAULT_LINK_POLICY_SETTINGS
+0x0f HCI_WRITE_DEFAULT_LINK_POLICY_SETTINGS
+0x10 HCI_FLOW_SPECIFICATION
+0x11 HCI_SNIFF_SUBRATING
+)
+
+// HCI host controller and baseband commands OCF values, OGF=3
+(
+0x01 HCI_SET_EVENT_MASK 
+0x03 HCI_RESET 
+0x05 HCI_SET_EVENT_FILTER 
+0x08 HCI_FLUSH 
+0x09 HCI_READ_PIN_TYPE 
+0x0A HCI_WRITE_PIN_TYPE 
+0x0B HCI_CREATE_NEW_UNIT_KEY 
+0x0D HCI_READ_STORED_LINK_KEY 
+0x11 HCI_WRITE_STORED_LINK_KEY 
+0x12 HCI_DELETE_STORED_LINK_KEY 
+0x13 HCI_WRITE_LOCAL_NAME 
+0x14 HCI_READ_LOCAL_NAME 
+0x15 HCI_READ_CONN_ACCEPT_TIMEOUT 
+0x16 HCI_WRITE_CONN_ACCEPT_TIMEOUT 
+0x17 HCI_READ_PAGE_TIMEOUT 
+0x18 HCI_WRITE_PAGE_TIMEOUT 
+0x19 HCI_READ_SCAN_ENABLE 
+0x1A HCI_WRITE_SCAN_ENABLE 
+0x1B HCI_READ_PAGE_SCAN_ACTIVITY 
+0x1C HCI_WRITE_PAGE_SCAN_ACTIVITY 
+0x1D HCI_READ_INQUIRY_SCAN_ACTIVITY 
+0x1E HCI_WRITE_INQUIRY_SCAN_ACTIVITY 
+0x1F HCI_READ_AUTHENTICATION_ENABLE 
+0x20 HCI_WRITE_AUTHENTICATION_ENABLE 
+0x21 HCI_READ_ENCRYPTION_MODE 
+0x22 HCI_WRITE_ENCRYPTION_MODE 
+0x23 HCI_READ_CLASS_OF_DEVICE 
+0x24 HCI_WRITE_CLASS_OF_DEVICE 
+0x25 HCI_READ_VOICE_SETTING 
+0x26 HCI_WRITE_VOICE_SETTING 
+0x27 HCI_READ_AUTOMATIC_FLUSH_TIMEOUT 
+0x28 HCI_WRITE_AUTOMATIC_FLUSH_TIMEOUT 
+0x29 HCI_READ_NUM_BROADCAST_RETRANSMISSIONS 
+0x2A HCI_WRITE_NUM_BROADCAST_RETRANSMISSIONS 
+0x2B HCI_READ_HOLD_MODE_ACTIVITY 
+0x2C HCI_WRITE_HOLD_MODE_ACTIVITY 
+0x2D HCI_READ_TRANSMIT_POWER_LEVEL 
+0x2E HCI_READ_SCO_FLOW_CONTROL_ENABLE 
+0x2F HCI_WRITE_SCO_FLOW_CONTROL_ENABLE 
+0x31 HCI_SET_CONTROLLER_TO_HOST_FLOW_CONTROL 
+0x33 HCI_HOST_BUFFER_SIZE 
+0x35 HCI_HOST_NUM_COMPLETED_PACKETS 
+0x36 HCI_READ_LINK_SUPERVISION_TIMEOUT 
+0x37 HCI_WRITE_LINK_SUPERVISION_TIMEOUT 
+0x38 HCI_READ_NUMBER_OF_SUPPORTED_IAC 
+0x39 HCI_READ_CURRENT_IAC_LAP 
+0x3A HCI_WRITE_CURRENT_IAC_LAP 
+0x3B HCI_READ_PAGE_SCAN_PERIOD_MODE 
+0x3C HCI_WRITE_PAGE_SCAN_PERIOD_MODE 
+0x3D HCI_READ_PAGE_SCAN_MODE 
+0x3E HCI_WRITE_PAGE_SCAN_MODE 
+0x3F HCI_SET_AFH_CHANNEL_CLASSIFICATION 
+
+
+0x42 HCI_READ_INQUIRY_SCAN_TYPE 
+0x43 HCI_WRITE_INQUIRY_SCAN_TYPE 
+0x44 HCI_READ_INQUIRY_MODE 
+0x45 HCI_WRITE_INQUIRY_MODE 
+0x46 HCI_READ_PAGE_SCAN_TYPE 
+0x47 HCI_WRITE_PAGE_SCAN_TYPE 
+
+0x48 HCI_READ_AFH_CHANNEL_ACCESSMENT_MODE 
+0x49 HCI_WRITE_AFH_CHANNEL_ACCESSMENT_MODE 
+0x51 HCI_READ_EXTENDED_INQUIRY_RESPONSE
+0x52 HCI_WRITE_EXTENDED_INQUIRY_RESPONSE
+0x53 HCI_REFRESH_ENCRYPTION_KEY
+0x55 HCI_READ_SIMPLE_PAIRING_MODE
+0x56 HCI_WRITE_SIMPLE_PAIRING_MODE
+0x57 HCI_READ_LOCAL_OOB_DATA
+0x58 HCI_READ_INQUIRY_RESPONSE_TRANSMIT_POWER_LEVEL
+0x59 HCI_WRITE_INQUIRY_TRANSMIT_POWER_LEVEL
+0x60 HCI_SEND_KEYPRESS_NOTIFICATION
+0x5A HCI_READ_DEFAULT_ERRONEOUS_DATA_REPORTING
+0x5B HCI_WRITE_DEFAULT_ERRONEOUS_DATA_REPORTING
+0x5F HCI_ENHANCED_FLUSH
+0x61 HCI_READ_LOGICAL_LINK_ACCEPT_TIMEOUT
+0x62 HCI_WRITE_LOGICAL_LINK_ACCEPT_TIMEOUT
+0x63 HCI_SET_EVENT_MASK_PAGE_2
+0x64 HCI_READ_LOCATION_DATA
+0x65 HCI_WRITE_LOCATION_DATA
+0x66 HCI_READ_FLOW_CONTROL_MODE
+0x67 HCI_WRITE_FLOW_CONTROL_MODE
+0x68 HCI_READ_ENHANCE_TRANSMIT_POWER_LEVEL
+0x69 HCI_READ_BEST_EFFORT_FLUSH_TIMEOUT
+0x6A HCI_WRITE_BEST_EFFORT_FLUSH_TIMEOUT
+0x6B HCI_SHORT_RANGE_MODE
+0x6C HCI_READ_LE_HOST_SUPPORT
+0x6D HCI_WRITE_LE_HOST_SUPPORT
+0x6E HCI_SET_MWS_CHANNEL_PARAMETERS
+0x6F HCI_SET_EXTERNAL_FRAME_CONFIGURATION
+0x70 HCI_SET_MWS_SIGNALING
+0x71 HCI_SET_MWS_TRANSPORT_LAYER
+0x72 HCI_SET_MWS_SCAN_FREQUENCY_TABLE
+0x73 HCI_SET_MWS_PATTERN_CONFIGURATION
+0x74 HCI_SET_RESERVED_LT_ADDR
+0x75 HCI_DELETE_RESERVED_LT_ADDR
+0x76 HCI_SET_CONNECTIONLESS_SLAVE_BROADCAST_DATA
+0x77 HCI_READ_SYNCHRONIZATION_TRAIN_PARAMETERS
+0x78 HCI_WRITE_SYNCHRONIZATION_TRAIN_PARAMETERS
+0x79 HCI_READ_SECURE_CONNECTIONS_HOST_SUPPORT
+0x7A HCI_WRITE_SECURE_CONNECTIONS_HOST_SUPPORT
+0x7B HCI_READ_AUTHENTICATED_PAYLOAD_TIMEOUT
+0x7C HCI_WRITE_AUTHENTICATED_PAYLOAD_TIMEOUT
+0x7D HCI_READ_LOCAL_OOB_EXTENDED_DATA
+0x7E HCI_READ_EXTENDED_PAGE_TIMEOUT
+0x7F HCI_WRITE_EXTENDED_PAGE_TIMEOUT
+0x80 HCI_READ_EXTENDED_INQUIRY_LENGTH
+0x81 HCI_WRITE_EXTENDED_INQUIRY_LENGTH
+)
+
+
+// HCI informational parameters OCF values, OGF=4
+(
+0x01 HCI_READ_LOCAL_VERSION_INFORMATION 
+0x02 HCI_READ_LOCAL_SUPPORTED_COMMANDS
+0x03 HCI_READ_LOCAL_SUPPORTED_FEATURES 
+0x04 HCI_READ_LOCAL_EXT_FEATURES 
+0x05 HCI_READ_BUFFER_SIZE 
+0x07 HCI_READ_COUNTRY_CODE 
+0x09 HCI_READ_BD_ADDR 
+0x0A HCI_REJECT_CONNECTION_REQUEST
+0x0B HCI_READ_LOCAL_SUPPORTED_CODECS
+)
+
+// HCI status parameters OCF values, OGF=5
+(
+0x01 HCI_READ_FAILED_CONTACT_COUNTER 
+0x02 HCI_RESET_FAILED_CONTACT_COUNTER 
+0x03 HCI_GET_LINK_QUALITY 
+0x05 HCI_READ_RSSI 
+0x06 HCI_READ_AFH_CHANNEL_MAP
+0x07 HCI_READ_BD_CLOCK
+0x08 HCI_READ_ENCRYPTION_KEY_SIZE
+0x09 HCI_READ_LOCAL_AMP_INFO
+0x0A HCI_READ_LOCAL_AMP_ASSOC
+0x0B HCI_WRITE_REMOTE_AMP_ASSOC
+0x0C HCI_GET_MWS_TRANSPORT_LAYER_CONFIGURATION
+0x0D HCI_SET_TRIGGERED_CLOCK_CAPTURE
+)
+
+// HCI testing command OCF values, OGF=6
+(
+0x01 HCI_READ_LOOPBACK_MODE 
+0x02 HCI_WRITE_LOOPBACK_MODE 
+0x03 HCI_ENABLE_DEVICE_UNDER_TEST_MODE 
+0x04 HCI_WRITE_SIMPLE_PAIRING_DEBUG_MODE
+0x07 HCI_ENABLE_AMP_RECEIVER_REPORTS
+0x08 HCI_AMP_TEST_END
+0x09 HCI_AMP_TEST
+0x0A HCI_WRITE_SECURE_CONNECTIONS_TEST_MODE
+)
+
+// HCI vendor specific command OCF values -OGF=3F
+(
+0x01 HCI_WRITE_BD_ADDR 
+0x02 HCI_READ_INQUIRY_RESPONSE_TIMEOUT 
+0x03 HCI_WRITE_INQUIRY_RESPONSE_TIMEOUT 
+0x04 HCI_READ_PAGE_SCAN_REPETITION_MODE 
+0x05 HCI_WRITE_PAGE_SCAN_REPETITION_MODE 
+0x06 HCI_READ_PAGE_RESPONSE_TIMEOUT 
+0x07 HCI_WRITE_PAGE_RESPONSE_TIMEOUT 
+0x08 HCI_READ_NEW_CONNECTION_TIMEOUT 
+0x09 HCI_WRITE_NEW_CONNECTION_TIMEOUT 
+0x0a HCI_INITIALIZE_BASEBAND 
+0x0b HCI_WRITE_LOCAL_SUPPORTED_FEATURES 
+0x0c HCI_WRITE_PARK_PARAMETERS 
+0x0d HCI_READ_PARK_PARAMETERS 
+0x0e HCI_WRITE_QUALITY_OF_SERVICE 
+0x0f HCI_NOT_USED 
+0x10 HCI_MODIFY_BEACON_PARAMETERS 
+0x11 HCI_UNPARK_USING_PM_ADDR 
+0x12 HCI_WRITE_HOPPING_CHANNELS 
+0x13 HCI_SLEEP_FOREVER_MODE 
+0x14 HCI_WRITE_AUTO_PAGE_SCAN_ENABLE 
+0x15 HCI_READ_AUTO_PAGE_SCAN_ENABLE 
+0x16 HCI_SET_ENCRYPTION_KEY_SIZE 
+0x17 HCI_INVALIDATE_FLASH_AND_REBOOT 
+0x18 HCI_UPDATE_UART_BAUD_RATE 
+0x19 HCI_WRITE_GPIO_1_4_AS_OUTPUT 
+0x1A HCI_WRITE_GPIO_2_LED 
+0x1B HCI_SET_TESTMODE_TYPE 
+0x1C HCI_WRITE_SCO_PCM_INT_PARAM 
+0x1D HCI_READ_SCO_PCM_INT_PARAM 
+0x1E HCI_WRITE_PCM_DATA_FORMAT_PARAM 
+0x1F HCI_READ_PCM_DATA_FORMAT_PARAM 
+0x20 HCI_WRITE_COMFORT_NOISE_PARAM 
+0x21 HCI_READ_COMFORT_NOISE_PARAM 
+0x22 HCI_WRITE_SCO_TS 
+0x23 HCI_READ_SCO_TS 
+0x24 HCI_WRITE_PCM_LOOPBACK_MODE 
+0x25 HCI_READ_PCM_LOOPBACK_MODE 
+0x26 HCI_SET_TRANSMIT_POWER 
+0x27 HCI_SET_SLEEPMODE_PARAM 
+0x28 HCI_READ_SLEEPMODE_PARAM 
+0x29 HCI_SLEEPMODE_CMD 
+0x2A HCI_DELAY_PERIPHERAL_SCO_STARTUP 
+0x2B HCI_WRITE_RECEIVE_ONLY 
+0x2C HCI_WRITE_RATE_CONTROL 
+0x2D HCI_TX_UNMOD_CARRIER 
+0x2E HCI_DOWNLOAD_MINIDRIVER 
+0x2F HCI_CRYSTAL_PPM 
+0x30 HCI_SET_POWER_AMP_BIAS 
+0x31 HCI_SET_HAM_BEHAVIOR 
+0x32 HCI_SET_AFH_BEHAVIOR 
+0x33 HCI_READ_USER_DEFINED_NVRAM 
+0x34 HCI_ENABLE_RADIO 
+0x35 HCI_READ_DIAGNOSTIC_INFO 
+0x36 HCI_GET_HID_DEVICE_LIST 
+0x37 HCI_ADD_HID_DEVICE 
+0x38 HCI_READ_APP_FW_CONFIG_VERSION 
+0x39 HCI_DELETE_HID_DEVICE 
+0x3B HCI_ENABLE_USB_HID_EMULATION 
+// 0x3A available
+// 0x3B available
+0x3C HCI_SEND_LMPDU 
+0x3D HCI_AUTO_PAIR_REQ 
+0x3E HCI_READ_VS_EXTENSION 
+0x3F HCI_WRITE_VS_EXTENSION 
+
+0x77 HCI_OPCODE_FC77
+0x79 HCI_OPCODE_FC79
+0xC4 HCI_DOWNLOAD_PATCH
+0xCC HCI_OPCODE_FCCC
+
+0x00 HCI_VENDOR_CMD_RESET
+0x01 HCI_VENDOR_CMD_CHIPID
+0x02 HCI_VENDOR_CMD_BAUD
+0x03 HCI_VENDOR_CMD_PATCH
+0x04 HCI_VENDOR_CMD_PATCH_DONE
+0x05 HCI_VENDOR_CMD_ECHO
+0x06 HCI_VENDOR_CMD_BDADDR
+
+0x07 HCI_VENDOR_CMD_ENTER_LPM
+0x08 HCI_VENDOR_CMD_COMMU_READY
+
+0x10 HCI_VENDOR_CMD_MEM
+0x11 HCI_VENDOR_CMD_EEP
+)
+
+//HCI LE controller command OCF values, OGF=8
+(
+0x01 HCI_LE_SET_EVENT_MASK
+0x02 HCI_LE_READ_BUFFER_SIZE
+0x03 HCI_LE_READ_LOCAL_SUPPORTED_FEATURES
+0x05 HCI_LE_SET_RANDOM_ADDRESS
+0x06 HCI_LE_SET_ADVERTISING_PARAMETERS
+0x07 HCI_LE_READ_ADVERTISING_CHANNEL_TX_POWER
+0x08 HCI_LE_SET_ADVERTISING_DATA
+0x09 HCI_LE_SET_SCAN_RESPONSE_DATA
+0x0A HCI_LE_SET_ADVERTISE_ENABLE
+0x0B HCI_LE_SET_SCAN_PARAMETERS
+0x0C HCI_LE_SET_SCAN_ENABLE
+0x0D HCI_LE_CREATE_CONNECTION
+0x0E HCI_LE_CREATE_CONNECTION_CANCEL
+0x0F HCI_LE_READ_WHITE_LIST_SIZE
+0x10 HCI_LE_CLEAR_WHITE_LIST
+0x11 HCI_LE_ADD_DEVICE_TO_WHITE_LIST
+0x12 HCI_LE_REMOVE_DEVICE_FROM_WHITE_LIST
+0x13 HCI_LE_CONNECTION_UPDATE
+0x14 HCI_LE_SET_HOST_CHANNEL_CLASSIFICATION
+0x15 HCI_LE_READ_CHANNEL_MAP
+0x16 HCI_LE_READ_REMOTE_USED_FEATURES
+0x17 HCI_LE_ENCRYPT
+0x18 HCI_LE_RAND
+0x19 HCI_LE_START_ENCRYPTION
+0x1A HCI_LE_LONG_TERM_KEY_REQUEST_REPLY
+0x1B HCI_LE_LONG_TERM_KEY_REQUEST_NEGATIVE_REPLY
+0x1C HCI_LE_READ_SUPPORTED_STATES
+0x1D HCI_LE_RECEIVER_TEST
+0x1E HCI_LE_TRANSMITTER_TEST
+0x1F HCI_LE_TEST_END
+0x20 HCI_LE_REMOTE_CONNECTION_PARAMETER_REQUEST_REPLY
+0x21 HCI_LE_REMOTE_CONNECTION_PARAMETER_REQUEST_NEGATIVE_REPLY
+)
+// HCI event code
+(
+0x01 HCI_EVENT_INQUIRY_COMPLETE
+0x02 HCI_EVENT_INQUIRY_RESULT
+0x03 HCI_EVENT_CONNECTION_COMPLETE
+0x04 HCI_EVENT_CONNECTION_REQUEST
+0x05 HCI_EVENT_DISCONNECTION_COMPLETE
+0x06 HCI_EVENT_AUTHENTICATION_COMPLETE
+0x07 HCI_EVENT_REMOTE_NAME_REQUEST_COMPLETE
+0x08 HCI_EVENT_ENCRYPTION_CHANGE_COMPLETE
+0x09 HCI_EVENT_CHANGE_CONNECTION_LINK_KEY_COMPLETE
+0x0A HCI_EVENT_MASTER_LINK_KEY_COMPLETE
+0x0B HCI_EVENT_READ_REMOTE_FEATURES_COMPLETE
+0x0C HCI_EVENT_READ_REMOTE_VERSION_INFORMATION_COMPLETE
+0x0D HCI_EVENT_QOS_SETUP_COMPLETE
+0x0E HCI_EVENT_COMMAND_COMPLETE
+0x0F HCI_EVENT_COMMAND_STATUS
+0x10 HCI_EVENT_HARDWARE_ERROR
+0x11 HCI_EVENT_FLUSH_OCCURRED
+0x12 HCI_EVENT_ROLE_CHANGE
+0x13 HCI_EVENT_NUM_COMPLETED_PACKETS
+0x14 HCI_EVENT_MODE_CHANGE
+0x15 HCI_EVENT_RETURN_LINK_KEYS
+0x16 HCI_EVENT_PIN_CODE_REQUEST
+0x17 HCI_EVENT_LINK_KEY_REQUEST
+0x18 HCI_EVENT_LINK_KEY_NOTIFICATION
+0x19 HCI_EVENT_LOOPBACK_COMMAND
+0x1A HCI_EVENT_DATA_BUFFER_OVERFLOW
+0x1B HCI_EVENT_MAX_SLOTS_CHANGE
+0x1C HCI_EVENT_READ_CLOCK_OFFSET_COMPLETE
+0x1D HCI_EVENT_CONNECTION_PACKET_TYPE_CHANGED
+0x1E HCI_EVENT_QOS_VIOLATION
+0x1F HCI_EVENT_PAGE_SCAN_MODE_CHANGE
+0x20 HCI_EVENT_PAGE_SCAN_REPETITION_MODE_CHANGE
+0x21 HCI_EVENT_FLOW_SPECIFICATION_COMPLETE
+0x22 HCI_EVENT_INQUIRY_RESULT_WITHRSSI
+0x23 HCI_EVENT_READ_REMOTE_EXT_FEATURES_COMPLETE
+0x2C HCI_EVENT_SCO_CONNECTION_COMPLETE
+0x2D HCI_EVENT_SCO_CONNECTION_CHANGED
+0x2E HCI_EVENT_SNIFF_SUBRATING
+0x2F HCI_EVENT_EXT_INQUIRY_RESULT
+0x30 HCI_EVENT_ENCRYPT_KEY_REFRESH_COMPLETE
+0x31 HCI_EVENT_IO_CAP_REQ
+0x32 HCI_EVENT_IO_CAP_RESPONSE
+0x33 HCI_EVENT_USER_CONFIRMATION_REQUEST
+0x34 HCI_EVENT_UESR_PASSKEY_REQUEST
+0x35 HCI_EVENT_REMOTE_OOB_DATA_REQUEST
+0x36 HCI_EVENT_SIMPLE_PAIRING_COMPLETE
+0x38 HCI_EVENT_LINK_SUPERVISION_TIMEOUT_CHANGED
+0x39 HCI_EVENT_ENHANCED_FLUSH_COMPLETE
+0x3B HCI_EVENT_USER_PASSKEY_NOTIFICATION
+0x3C HCI_EVENT_KEYPRESS_NOTIFICATION
+0x3D HCI_EVENT_REMOTE_HOST_SUPPORTED_FEATURES_NOTIFICATION 
+0x3E HCI_EVENT_LE_META_EVENT
+0x40 HCI_EVENT_PHYSICAL_LINK_COMPLETE
+0x41 HCI_EVENT_CHANNEL_SELECTED
+0x42 HCI_EVENT_DISCONNECTION_PHYSICAL_LINK_COMPLETE
+0x43 HCI_EVENT_PHYSICAL_LINK_LOSS_EARLY_WARNING
+0x44 HCI_EVENT_PHYSICAL_LINK_RECOVERY
+0x45 HCI_EVENT_LOGICAL_LINK_COMPLETE
+0x46 HCI_EVENT_DISCONNECTION_LOGICAL_LINK_COMPLETE
+0x47 HCI_EVENT_FLOW_SPEC_MODIFY_COMPLETE
+0x48 HCI_EVENT_NUMBER_OF_COMPLETED_DATA_BLOCKS
+0x49 HCI_EVENT_AMP_START_TEST
+0x4A HCI_EVENT_AMP_TEST_END
+0x4B HCI_EVENT_AMP_RECEIVER_REPORT
+0x4C HCI_EVENT_SHORT_RANGE_MODE_CHANGE_COMPLETE
+0x4D HCI_EVENT_AMP_STATUS_CHANGE
+0x4E HCI_EVENT_TRIGGERED_CLOCK_CAPTURE
+0x4F HCI_EVENT_SYNCHRONIZATION_TRAIN_COMPLETE
+0x50 HCI_EVENT_SYNCHRONIZATION_TRAIN_RECEIVED
+0x51 HCI_EVENT_CONNECTIONLESS_SLAVE_BROADCAST_RECEIVE
+0x52 HCI_EVENT_CONNECTIONLESS_SLAVE_BROADCAST_TIMEOUT
+0x53 HCI_EVENT_TRUNCATED_PAGE_COMPLETE
+0x54 HCI_EVENT_SLAVE_PAGE_RESPONSE_TIMEOUT
+0x55 HCI_EVENT_CONNECTIONLESS_SLAVE_BROADCAST_CHANNEL_MAP_CHANGE
+0x56 HCI_EVENT_INQUIRY_RESPONSE_NOTIFICATION
+0x57 HCI_EVENT_AUTHENTICATED_PAYLOAD_TIMEOUT_EXPIRED
+
+0xFE HCI_EVENT_LOGO_TESTING
+0xFF HCI_EVENT_VENDOR_SPECIFIC
+)
+(
+0x01 HCI_VENDOR_EVENT_COMMU_READY
+)
+//HCI LE SUBEVENT CODE
+(
+0x01 HCI_LE_SUBEVENT_CONN_COMPLETE
+0x02 HCI_LE_SUBEVENT_ADV_REPORT
+0x03 HCI_LE_SUBEVENT_CONN_UPDATE_COMPLETE
+0x04 HCI_LE_SUBEVENT_REMOTE_FEATURE_COMPLETE
+0x05 HCI_LE_SUBEVENT_LTK_REQUEST
+0x06 HCI_LE_SUBEVENT_REMOTE_CONN_PARAM_REQ
+)
+//HCI ErrorCodes
+(    
+0x00 HCI_SUCCESS
+0x01 HCI_ERROR_UNKNOWN_HCI_COMMAND
+0x02 HCI_ERROR_NO_CONNECTION
+0x03 HCI_ERROR_HARDWARE_FAILURE
+0x04 HCI_ERROR_PAGE_TIMEOUT
+0x05 HCI_ERROR_AUTHENTICATION_FAILURE
+0x06 HCI_ERROR_KEY_MISSING
+0x07 HCI_ERROR_MEMORY_FULL
+0x08 HCI_ERROR_CONNECTION_TIMEOUT
+0x09 HCI_ERROR_MAX_CONNECTIONS
+0x0A HCI_ERROR_MAX_SCO_CONNECTIONS
+0x0B HCI_ERROR_MAX_ACL_CONNECTIONS
+0x0C HCI_ERROR_COMMAND_DISALLOWED
+0x0D HCI_ERROR_HOST_REJECT_LIMITED_RESOURCES
+0x0E HCI_ERROR_HOST_REJECT_SECURITY_REASONS
+0x0F HCI_ERROR_HOST_REJECT_REMOTE_IS_ONLY_PERSONAL
+0x10 HCI_ERROR_HOST_TIMEOUT
+0x11 HCI_ERROR_UNSUPPORTED_FEATURE_OR_PARAMETER_VALUE
+0x12 HCI_ERROR_INVALID_HCI_COMMAND_PARAMETERS
+0x13 HCI_ERROR_REMOTE_USER_ENDED_CONNECTION
+0x14 HCI_ERROR_REMOTE_LOW_RESOURCES
+0x15 HCI_ERROR_REMOTE_POWERING_OFF
+0x16 HCI_ERROR_CONNECTION_TERMINATED_BY_LOCAL_HOST
+0x17 HCI_ERROR_REPEATED_ATTEMPTS
+0x18 HCI_ERROR_PAIRING_NOT_ALLOWED
+0x19 HCI_ERROR_UNKNOWN_LMP_PDU
+0x1A HCI_ERROR_UNSUPPORTED_REMOTE_FEATURE
+0x1B HCI_ERROR_SCO_OFFSET_REJECTED
+0x1C HCI_ERROR_SCO_INTERVAL_REJECTED
+0x1D HCI_ERROR_SCO_AIR_MODE_REJECTED
+0x1E HCI_ERROR_INVALID_LMP_PARAMETER
+0x1F HCI_ERROR_UNSPECIFIED_ERROR
+0x20 HCI_ERROR_UNSUPPORTED_LMP_PARAMETER_VALUE
+0x21 HCI_ERROR_ROLE_CHANGE_NOT_ALLOWD
+0x22 HCI_ERROR_LMP_RESPONSE_TIMEOUT
+0x23 HCI_ERROR_ERROR_TRANSACTION_COLLISION
+0x24 HCI_ERROR_LMP_PDU_NOT_ALLOWED
+0x25 HCI_ERROR_ENCRYPTION_MODE_NOT_ACCEPTABLE
+0x26 HCI_ERROR_UNIT_KEY_USED
+0x27 HCI_ERROR_QOS_NOT_SUPPORTED
+0x28 HCI_ERROR_INSTANT_PASSED
+0x29 HCI_ERROR_PAIRING_W_UNIT_KEY_NOT_SUPPORTED
+0x2a HCI_ERROR_DIFFERENT_TRANSACTION_COLLISION
+0x2c HCI_ERROR_QOS_UNACCEPTABLE_PARAMETER
+0x2d HIC_ERROR_QOS_REJECTED
+0x2e HIC_ERROR_CHANNEL_CLASSIFICATION_NOT_SUPPORTED
+0x2f HIC_ERROR_INSUFFICIENT_SECURITY
+0x30 HIC_ERROR_PARAMETER_OUT_OF_MANDATORY_PANGE
+0x32 HIC_ERROR_ROLE_SWITCH_PENDING
+0x34 HIC_ERROR_RESERVED_SLOT_VIOLATION
+0x35 HIC_ERROR_ROLE_SWITCH_FAILED
+0x36 HIC_ERROR_EXTENDED_INQUIRY_RESPONSE_TOO_LARGE
+0x37 HIC_ERROR_SIMPLE_PAIRING_NOT_SUPPORTED_BY_HOST
+0x38 HIC_ERROR_HOST_BUSY_PAIRING
+)
+
+(
+0x00 HCI_LPM_OFF
+0x01 HCI_LPM_ON
+)
+
+
+(
+33 HOST_WAKE_TIME
+)
+
+(
+1 HCI_RX_WAKE
+0 HCI_RX_READY
+)
+
+
+(
+/*HID TYPE*/
+0x01 HID_TYPE_CONTROL
+0x04 HID_TYPE_GET_REPORT
+0x05 HID_TYPE_SET_REPORT
+0x07 HID_TYPE_SET_PROTOCOL
+0x09 HID_TYPE_SET_IDLE
+0x0a HID_TYPE_DATA
+/*HID REPORT ID*/
+0x01 HID_REPORT_ID_KB
+
+0x00 HID_CONTROL_P_NOOPERATION
+0x01 HID_CONTROL_P_HARDRESET
+0x02 HID_CONTROL_P_SOFTRESET
+0x03 HID_CONTROL_P_SUSPEND
+0x04 HID_CONTROL_P_EXITSUSPEND
+0x05 HID_CONTROL_P_VIRTUALCABLEUNPLUG
+)
+
+
+8 KB_KSCAN_ROW 
+7 KB_KSCAN_ROW_1
+20 KB_KSCAN_COL
+19 KB_KSCAN_COL_1
+
+/* ks_ctrl */
+(
+0x01 KB_KSCAN_CTRL_ENABLE					
+0x02 KB_KSCAN_CTRL_FREEZE					
+0x04 KB_KSCAN_CTRL_GHOST					
+0x08 KB_KSCAN_CTRL_INT						
+0x10 KB_KSCAN_CTRL_CLKON					
+0x20 KB_KSCAN_CTRL_FIFO_CLR				
+                  
+0 KB_KSCAN_STAT_EMPTY
+1 KB_KSCAN_STAT_FULL 					
+2 KB_KSCAN_STAT_OVERFLOW				
+6 KB_KSCAN_STAT_GHOST 
+
+0 KB_KSCAN_KEY_EVENT_STAT
+0 KB_KSCAN_KEY_PRESS	
+1 KB_KSCAN_KEY_RELEASE
+
+)
+(
+0 CACEL_RECONN_FLAG
+1 KEY_EVENT_FLAG
+2 KEY_SEARCH_M_KEY_FLAG
+3 CHECK_VDD_LOW_FLAG
+)
+
+// MACRO for map2
+
+// MACRO for map2
+
+//map2 Functions definition
+ 0x00 KB_MAP2_FUNC_REPORT0
+ 0x01 KB_MAP2_FUNC_REPORT1
+ 0x02 KB_MAP2_FUNC_REPORT2
+ 0x80 KB_MAP2_FUNC_IGNORE
+ 0x81 KB_MAP2_FUNC_DISCOV
+ 0x82 KB_MAP2_FUNC_WIN
+ 0x83 KB_MAP2_FUNC_ANDROID
+ 0x84 KB_MAP2_FUNC_IOS
+ 0x85 KB_MAP2_FUNC_DEV1
+ 0x86 KB_MAP2_FUNC_DEV2
+ 0x87 KB_MAP2_FUNC_DEV3
+ 
+//map2 Status definition (bit map)
+ 0x01 KB_MAP2_STATUS_WIN
+ 0x02 KB_MAP2_STATUS_ANDROID
+ 0x04 KB_MAP2_STATUS_IOS
+ 0x10 KB_MAP2_STATUS_CONN
+ 0x20 KB_MAP2_STATUS_UNCONN
+ 
+ 0x00 KB_MAP2_STATUS_BIT_WIN
+ 0x01 KB_MAP2_STATUS_BIT_ANDROID
+ 0x02 KB_MAP2_STATUS_BIT_IOS
+ 0x04 KB_MAP2_STATUS_BIT_CONN
+ 0x05 KB_MAP2_STATUS_BIT_UNCONN
+
+// map2 report length
+8 KB_MAP2_REPORT_LENGTH
+0x08 KB_VK_MAX_LEN
+
+//map2 device button state
+0 KB_DEVICE_BUTTON_UP
+1 KB_DEVICE_BUTTON_DEVICE1
+2 KB_DEVICE_BUTTON_DEVICE2
+3 KB_DEVICE_BUTTON_DEVICE3
+0xff KB_DEVICE_BUTTON_ALREADY_LONG
+)
+
+//
+(
+0x01 REPORT_ID_1
+0x02 REPORT_ID_2
+0x03 REPORT_ID_3
+)
+
+(
+1 FLAG_VDD_LOW
+0 FLAG_VDD_NOT_LOW
+
+0x1fe9 EEPROM_ADDR_VDD_FLAG
+0x1fea EEPROM_ADDR_VDD_LOW_FLAG
+0x1fec EEPROM_SYSTEM_FALG
+
+)
+
+//Specil Function Key
+(
+0XFF SFK_ANDROID_MAP
+0XFE SFK_IOS_SCREENSHOT
+
+)
+0x39 CAPS_LOCK_DATA
+)
+
+(
+2 KB_TEST_MODE
+)
+/* special key codes */
+(
+0x1d KB_KCODE_1_M1
+0x27 KB_KCODE_0
+0x28 KB_KCODE_ENTER
+0x2a KB_KCODE_BKSP
+)
+
+/*DATA OUTPUT report id = 1*/
+0 KB_NUM_LOCK_SELECTED
+1 KB_CAPS_LOCK_SELECTED
+2 KB_SCROLL_LOCK_SELECTED
+
+
+0x1f  KB_UI_BUTTON_GPIO
+
+
+
+
+memalloc(
+0 mem_l2cap_mem_start
+// L2CAP RX 
+2 mem_l2cap_rxbuff1_len
+2 mem_l2cap_rxbuff2_len
+2 mem_l2cap_rxbuff_new
+1 mem_l2cap_rxbuff_inuse
+2 mem_l2cap_payload_ptr
+2 mem_l2cap_rx_pkt_length
+2 mem_l2cap_rx_cid
+1 mem_l2cap_rx_done
+
+
+
+// L2CAP TX Signal channel
+2 mem_l2cap_signal_tx_buff_ptr
+2 mem_l2cap_signal_tx_payload_ptr
+2 mem_l2cap_signal_tx_length
+// L2CAP TX SDP channel
+2 mem_sdp_tx_buff_ptr
+2 mem_sdp_tx_payload_ptr
+2 mem_sdp_tx_pkt_length
+// L2CAP TX RFCOMM channel
+2 mem_rfcomm_tx_buff_ptr
+2 mem_rfcomm_tx_payload_ptr
+2 mem_rfcomm_tx_pkt_length
+
+
+
+//L2CAP Util
+
+2 memL2CAP_T1
+
+1 mem_CONTROL_tasks
+1 mem_send_config_req
+
+
+1 mem_config_identifier
+2 mem_config_req_dest_CID
+1 mem_rfcomm_malloc_fail_flag
+
+//L2CAP STATE MACHINE
+1 mem_message_to_uppersm
+1 mem_upper_sm_remote_page
+1 mem_upper_sm_reconn
+1 mem_upper_sm_ss
+
+
+64 mem_tx_malloc_log
+0 mem_l2cap_mem_end
+
+
+2 mem_scid
+2 mem_cmd_length
+2 mem_tt2
+2 mem_tt3
+2 mem_id
+2 mem_psm
+
+
+4 mem_l2cap_sdpres_delay_time
+)
+
+xmemalloc(
+0 mem_l2cap_xmem_start
+//*******************L2CAP TX MULTI-PACKET*********************//
+2 mem_l2cap_tx_multi_offset //0 means single packet
+
+//*******************CHANNEL ID*********************//
+2 mem_sdp_remote_cid
+2 mem_rfcomm_remote_cid
+2 mem_hid_ctrl_remote_cid
+2 mem_hid_int_remote_cid
+//*******************CHANNEL STATE*********************//
+1 mem_sdp_state
+1 mem_rfcomm_state
+1 mem_hid_control_state
+1 mem_hid_interrupt_state
+1 mem_spp_state
+1 mem_ML2CAP_comm_id
+
+//*******************L2CAP malloc********************//
+1 mem_used_map
+0 mem_tx_fifo0
+1 mem_tx_fifo0_map
+2 mem_tx_fifo0_ptr
+0 mem_tx_fifo1
+1 mem_tx_fifo1_map
+2 mem_tx_fifo1_ptr
+0 mem_tx_fifo2
+1 mem_tx_fifo2_map
+2 mem_tx_fifo2_ptr
+0 mem_tx_fifo3
+1 mem_tx_fifo3_map
+2 mem_tx_fifo3_ptr
+0 mem_tx_fifo_end
+256 mem_l2cap_lpm_txbuf
+//*******************MISC*********************//
+1 mem_l2cap_flow_ctrl_flag
+1 mem_l2cap_pending_item
+0 mem_l2cap_xmem_end
+
+)
+
+
+//mem_l2cap_lpm_txbuf
+(
+256 l2cap_lpm_txbuf_len
+)
+
+(
+4 L2CAP_TX_FIFO_SIZE
+8 L2CAP_TX_BUFF_CNT
+
+)
+(
+0x0002 L2CAP_SIG_EXT_FEATRUE
+0x0003 L2CAP_SIG_FIX_FEATRUE
+)
+
+
+(
+0 HS_IDLE
+1 AG_INIT_CALL
+2 HS_INIT_CALL
+)
+(
+0 M_ACL_LINK_ABSENT
+1 M_ACL_LINK_EXIST
+)
+
+(
+0 L2CAP_INUSE_BUFF1
+1 L2CAP_INUSE_BUFF2
+)
+/* upper layer interface w/ lower layer */
+(
+1 MAX_NUM_LINKS_ALLOWED
+1 MAX_NUM_SCO_ALLOWED
+1 ACL_LINK_PRESENT
+0 ACL_LINK_ABSENT
+)
+(
+1 L2CAP_RX_DONE 
+0 L2CAP_RX_CLEAR
+)
+/* Scheduler */
+(
+0 L2CAP_DISCONNECT_INTERRUPT
+1 RFCOMM_wants_service
+2 L2CAP_sig_Tx_buff_full
+3 RFCOMM_Tx_buff_full
+4 SDP_Tx_buff_full
+5 got_complete_L2CAP_pkt	
+6 L2CAP_init_Config_Req
+7 L2CAP_DISCONNECT_CONTROL
+)
+
+/* mem_CONTROL_tasks2 */
+(
+0 UI_NEED_SERVICE
+)
+/* L2CAP logic channel identifiers (2 bytes) p.261 */
+(
+0x0001 L2CAP_signal_channel
+0x0050 L2CAP_SDP_channel
+0x0051 L2CAP_RFCOMM_channel
+0x0052 L2CAP_HID_Control_channel   
+0x0053 L2CAP_HID_Interrupt_channel
+0x0077 L2CAP_AVDTP_signal_channel		//------avdtp
+0x0078 L2CAP_AVDTP_media_channel
+0x0079 L2CAP_AVDTP_report_channel
+0x0080 L2CAP_AVDTP_recovery_channel
+0x00dd L2CAP_AVCTP_Control_channel
+)
+/* L2CAP signalling command codes (1 byte) p.284 */
+(
+0x00 reserved
+0x01 signal_cmd_reject
+0x02 signal_connect_req
+0x03 signal_connect_rsp
+0x04 signal_config_req
+0x05 signal_config_rsp
+0x06 signal_disconnect_req
+0x07 signal_disconnect_rsp
+0x08 signal_echo_req
+0x09 signal_echo_rsp
+0x0a signal_info_req
+0x0b signal_info_rsp
+)
+/* L2CAP signal_command_reject reason code (2 bytes), p.285 */
+(
+0x0000 cmd_not_understood
+0x0001 signalling_MTU_exceeded
+0x0002 invalid_CID_in_req
+)
+/* L2CAP PSM values used in signal_connect_req (2 bytes), p.286 */
+(
+0x0001 PSM_SDP
+0x0003 PSM_RFCOMM
+0x0005 PSM_TCS
+0x0011 PSM_HID_control
+0x0013 PSM_HID_interrupt
+0x0017 PSM_AVCTP
+0x0019 PSM_AVDTP
+)
+/* L2CAP connection response result code (2 bytes), p.288 */
+(
+0x0000 L2CAP_connect_successful
+0x0001 L2CAP_connect_pending
+0x0002 L2CAP_connect_refused_PSM_unsupported
+0x0003 L2CAP_connect_refused_security_block
+0x0004 L2CAP_connect_refused_no_resources
+)
+/* L2CAP connection status values (2 bytes), p.288 */
+(
+0x0000 L2CAP_no_info_available
+0x0001 L2CAP_authentication_pending
+0x0002 L2CAP_authorization_pending
+)
+/* L2CAP configuration response result code (2 bytes), p.292 */
+(
+0x0000 L2CAP_config_success
+0x0001 L2CAP_config_failure_bad_parameters
+0x0002 L2CAP_config_failure_no_reason
+0x0003 L2CAP_config_failure_unknown_options
+)
+/* L2CAP constant definitions */
+(
+128 L2CAP_Rx_buff_size
+48  L2CAP_signal_Tx_buff_size
+128 SDP_Tx_buff_size
+128 RFCOMM_Tx_buff_size
+1 AM_ADDRESS
+3 DM1TYPE
+4 DH1TYPE
+11 DH3TYPE
+8 DVTYPE
+0 channel_state_closed
+1 channel_state_config
+2 channel_state_open
+0x0030 L2CAP_config_MTU_SDP
+0xffff L2CAP_config_ftimeout_SDP
+0x03e3 L2CAP_config_MTU_RFCOMM
+0xffff L2CAP_config_ftimeout_RFCOMM
+260 l2cap_max_pkt_len
+)
+
+(
+0 FAILURE
+1 SUCCESS
+2 IN_PROGRESS
+)
+(
+0x00	IDLE
+0x01	WAIT_4_BB_PAGE
+0x02	WAIT_4_LMP_CONN
+0x03	WAIT_4_SCO_CONN
+0x04	WAIT_4_SCO_KILLED
+)
+
+/*mem_master_mss*/
+(
+0 STOP_ENC
+1 SEND_SWITCH_REQ
+)
+(
+0 HF_HS_READY
+1 HF_AG_READY
+)
+/* mem_hf_state */
+(
+0 HF_STATE_WAITING_RFCOMM_CONN
+1 HF_STATE_HF_SEND_FEATURE
+2 HF_STATE_WAITING_AG_FEATURE_OK
+3 HF_STATE_HF_SEND_INDICATORS
+4 HF_STATE_WAITING_AG_INDICATORS_OK
+5 HF_STATE_HF_SEND_CURR_STATUS
+6 HF_STATE_WAITING_AG_STATUS_OK
+7 HF_STATE_HF_SEND_UPDATE_STATUS
+8 HF_STATE_WAITING_AG_UPDATE_STATUS_OK
+9 HF_STATE_CONNECTED
+0x0a HF_STATE_HF_SEND_RECEIVE_INFO
+0x0b HF_STATE_WAITING_AG_INFO
+0x0c HF_STATE_HF_SEND_AT_CLIP
+0x0d HF_STATE_WAITING_AT_CLIP
+0x0e HF_STATE_HF_SEND_AT_CCWA
+0x0f HF_STATE_WAITING_AT_CCWA
+)
+/*mem_hf_call_state*/
+(
+0 HF_CALL_STATE_INACTIVE
+1 HF_CALL_STATE_SETUP
+2 HF_CALL_STATE_ACTIVE 
+)
+/* mem_pairing_state bit definition */
+(
+0 PAIR_INQUIRY_START
+1 PAIR_INQUIRY_TIME_OUT
+2 PAIR_INQUIRY_FAILED
+3 PAIR_INQUIRY_SUCCESS
+4 PAIR_READY_CONN
+5 PAIR_WAIT_CANCEL_RESPONSE
+6 PAIR_CONN_SUCCESS
+7 PAIR_WAIT_DETACH
+)  
+
+/* mem_pairing_mode bit definition */
+(
+0 FORCE_AUTHENTICATION
+)
+/* mem_hid_protecol_type */
+(
+0 PROTECOL_BOOT /*default*/
+1 PROTECOL_REPORT
+)
+
+/* mem_upper_sm_reconn */
+(
+1 UPPERSM_SEND_SDP_CONN_REQ
+2 UPPERSM_SEND_SDP_CFG_REQ
+3 UPPERSM_SEND_SDP_HF_SS
+4 UPPERSM_SEND_SDP_DISC_REQ
+5 UPPERSM_SEND_RFCOMM_CONN_REQ
+6 UPPERSM_SEND_RFCOMM_CFG_REQ
+7 UPPERSM_SEND_SABM_CMD
+8 UPPERSM_SEND_DISC
+9 UPPERSM_SEND_WAIT
+10 UPPERSM_SEND_HID_CONTROL_CONN_REQ
+11 UPPERSM_SEND_HID_CONTROL_CFG_REQ
+12 UPPERSM_SEND_HID_INTERRUPT_CONN_REQ
+13 UPPERSM_SEND_HID_INTERRUPT_CFG_REQ
+14 UPPERSM_SEND_SDP_HS_SS
+15 UPPERSM_SEND_SDP_PBAP_SS
+16 UPPERSM_SEND_SDP_AVTARG_SS
+)
+/* mem_upper_sm_remote_page */
+(
+1 UPPERSM_RP_SEND_SDP_CONN_REQ
+2 UPPERSM_RP_SEND_SDP_CFG_REQ
+3 UPPERSM_RP_SEND_SDP_HF_SS
+4 UPPERSM_RP_SEND_SDP_HS_SS
+5 UPPERSM_RP_SEND_SDP_PBAP_SS
+6 UPPERSM_RP_SEND_SDP_AVTARG_SS
+7 UPPERSM_RP_SEND_SDP_DISC_REQ
+8 UPPERSM_RP_SEND_AVCTP_CONN_REQ
+9 UPPERSM_RP_SEND_AVCTP_CFG_REQ
+)
+
+/* mem_ML2CAP_flag */
+(
+0 MSCHEDULER_HID_CONTROL_CONN_DONE
+1 MSCHEDULER_HID_INTERRUPT_CONN_DONE
+2 MSCHEDULER_HID_CONTROL_CFG_REQ_DONE
+3 MSCHEDULER_HID_CONTROL_CFG_RSP_DONE
+4 MSCHEDULER_HID_INTERRUPT_CFG_REQ_DONE
+5 MSCHEDULER_HID_INTERRUPT_CFG_RSP_DONE
+6 MSCHEDULER_HID_CONTROL_DISC_DONE
+7 MSCHEDULER_HID_INTERRUPT_DISC_DONE
+)
+/*    ui event    --add by lj*/
+(
+0x00 UI_DATA_EVNET_NONE
+0x01 UI_DATA_EVNET_HID
+0x02 UI_DATA_EVNET_AVDTP_S
+0x03 UI_DATA_EVNET_AVDTP_M
+0x04 UI_DATA_EVNET_AVCTP
+0x05 UI_DATA_EVNET_HS
+0x06 UI_DATA_EVNET_HF
+0x07 UI_DATA_EVNET_SPP
+0x08 UI_DATA_EVNET_OBEX
+)
+/*    ui ack --add by lj*/
+(
+0x00 UI_DATA_TX_NONE
+0x01 UI_DATA_TX_HID
+0x02 UI_DATA_TX_AVDTP_S
+0x03 UI_DATA_TX_AVDTP_M
+0x04 UI_DATA_TX_AVCTP
+0x05 UI_DATA_TX_HS
+0x06 UI_DATA_TX_HF
+0x07 UI_DATA_TX_SPP
+0x08 UI_DATA_TX_OBEX
+0x10 ACL_TX_L2CAP_SIGNAL
+0x11 ACL_TX_SDP
+0x12 ACL_TX_RFCOMM
+
+)
+
+(
+0 L2CAP_SDP_interface_conn
+1 L2CAP_SDP_interface_cfg
+)
+
+(                                   
+0 L2CAP_CHANNEL_STATE_CONN_REQ      
+1 L2CAP_CHANNEL_STATE_CONN_RES      
+2 L2CAP_CHANNEL_STATE_SND_CFG_REQ   
+3 L2CAP_CHANNEL_STATE_SND_CFG_RES   
+4 L2CAP_CHANNEL_STATE_RCV_CFG_REQ   
+5 L2CAP_CHANNEL_STATE_RCV_CFG_RES
+6 L2CAP_CHANNEL_RFCOMM_ONLY_SABM
+7 L2CAP_CHANNEL_RFCOMM_ONLY_UA
+6 L2CAP_CHANNEL_AVDTP_SIGNAL_INIT //set avdtp init complete
+6 L2CAP_CHANNEL_HID_HANDSHAKE_DONE
+0x3f L2CAP_CHANNEL_SETUP_COMPLETE
+0x7f L2CAP_CHANNEL_AVDTP_SIGNAL_COMPLETE
+0xff L2CAP_CHANNEL_RFCOMM_DLCI0_OPENED
+)                                     
+
+/*  AVDTP---lj*/
+(
+0 L2CAP_AVDTP_SIGNAL_CONNECT
+1 L2CAP_AVDTP_SIGNAL_CONFIG
+2 L2CAP_AVDTP_MEDIA_CONNECT
+3 L2CAP_AVDTP_MEDIA_CONFIG
+4 L2CAP_AVDTP_REPORT_CONNECT
+5 L2CAP_AVDTP_REPORT_CONFIG
+6 L2CAP_AVDTP_RECOVERY_CONNECT
+7 L2CAP_AVDTP_RECOVERY_CONFIG
+)
+/*  AVCTP---lj*/
+(
+0 L2CAP_AVCTP_SIGNAL_CONNECT
+1 L2CAP_AVCTP_SIGNAL_CONFIG
+)
+
+127 L2CAP_SIGNAL_MALLOC_SIZE
+
+//1 mem_rfcomm_malloc_fail_flag
+(
+0 RFCOMM_MALLOC_SUCCEED
+1 RFCOMM_MALLOC_FAIL
+)
+
+//mem_l2cap_flow_ctrl_flag
+(
+0 L2CAP_FLOW_CTRL_DISABLE
+1 L2CAP_FLOW_CTRL_ENABLE
+)
+
+
+memalloc(
+56 mem_le_rxbuf
+262 mem_le_l2capbuf
+
+/* security temp */
+4 mem_le_mic
+4 mem_le_peer_mic
+//8 mem_le_skdm
+//8 mem_le_skds
+16 mem_le_peer_ltk
+16 mem_le_mrand
+
+
+/* ========= le context =========== */
+1 mem_le_state
+1 mem_le_mode
+2 mem_le_tsniff
+4 mem_le_anchor
+6 mem_le_clk_offset
+2 mem_le_receive_window
+6 mem_le_plap
+1 mem_le_conn_handle
+1 mem_le_arq
+1 mem_le_ch
+1 mem_le_hop
+2 mem_le_event_count
+4 mem_le_supervision_timer
+2 mem_le_instant
+1 mem_le_channels
+1 mem_le_op
+
+	/* these 3 should NOT be seperated */
+4 mem_le_access
+3 mem_le_crcinit
+1 mem_le_window_size
+
+	/* these 3 should NOT be seperated */
+2 mem_le_slave_latency
+2 mem_le_superto
+5 mem_le_channel_map
+
+2 mem_le_no_using
+1 mem_le_peer_sca
+
+/* should be together */
+1 mem_le_att_opcode
+2 mem_le_att_handle
+
+1 mem_le_err_code
+1 mem_le_ll_pairing_fail_reason
+
+16 mem_le_sk
+
+/* test */
+1 mem_le_testtype
+2 mem_le_test_sync
+2 mem_le_test_pcnt
+
+6 mem_le_rxon_ts
+
+1 mem_le_rx_ll_opcode
+
+2 mem_le_notify_attr_start
+1 mem_le_notify_len
+
+1 mem_cmd_le_create_conn
+
+2 mem_le_cur_attlist_start_ptr
+2 mem_le_cur_handle_start
+2 mem_le_cur_handle_end
+1 mem_le_cur_uuid_length
+16 mem_le_cur_uuid
+
+1 mem_le_curr_att_len
+1 mem_le_search_res
+
+1 mem_le_continue_type
+)
+
+
+xmemalloc(
+2 mem_le_dsniff
+
+// parameters
+2 mem_le_conn_interval
+1 mem_le_scan_enable
+2 mem_le_scan_interval
+2 mem_le_scan_window
+
+1 mem_le_adv_enable
+1 mem_le_adv_data_len
+31 mem_le_adv_data
+1 mem_le_scan_data_len
+31 mem_le_scan_data
+
+//modified name
+1 mem_le_name_len
+30 mem_le_name
+
+//37 mem_le_chmap
+
+
+5 mem_le_new_map
+0 mem_le_new_param
+1 mem_le_new_transmitwindowsize
+2 mem_le_new_transmitwindowoffset
+2 mem_le_new_conninterval
+2 mem_le_new_connslavelatency
+2 mem_le_new_connsupervisiontimeout
+
+1 mem_le_txheader
+1 mem_le_txlen
+2 mem_le_txpayload
+2 mem_le_txcid
+1 mem_le_l2cap
+1 mem_le_l2cap_response
+31 mem_le_txbdy
+
+/* smp related */
+5 mem_le_pcnt_tx
+5 mem_le_pcnt_rx
+4 mem_le_last_mic
+4 mem_le_ivm
+4 mem_le_ivs
+16 mem_le_ltk
+1 mem_ltk_exists
+16 mem_le_rconfirm
+16 mem_le_srand
+1 mem_le_iat
+1 mem_le_rat
+1 mem_le_preq
+1 mem_le_preq_iocap
+1 mem_le_preq_oob
+1 mem_le_preq_auth
+1 mem_le_preq_max_keysize
+1 mem_le_preq_init_key_distribution
+1 mem_le_preq_resp_key_distribution
+1 mem_le_pres
+1 mem_le_pres_iocap
+1 mem_le_pres_oob
+1 mem_le_pres_auth
+1 mem_le_pres_max_keysize
+1 mem_le_pres_init_key_distribution
+1 mem_le_pres_resp_key_distribution
+
+/* att related */
+2 mem_le_search_handle_start
+2 mem_le_search_handle_end
+0 mem_le_att_offset
+1 mem_le_search_att_type_length
+16 mem_le_search_att_type
+2 mem_le_notify_handle
+1 mem_le_search_uuid_length
+16 mem_le_search_uuid
+
+
+//START of LE adv parameter structure
+0 mem_le_adv_param
+2 mem_le_adv_interval
+1 mem_le_adv_type
+1 mem_le_adv_own_addr_type
+1 mem_le_adv_direct_addr_type
+6 mem_le_adv_direct_addr
+1 mem_le_adv_channel_map
+//END of LE adv parameter structure
+
+//START of LE conn parameter structure
+0 mem_le_conn_param
+1 mem_le_conn_peer_addr_type
+6 mem_le_conn_peer_addr
+1 mem_le_conn_own_addr_type
+2 mem_le_interval_min
+2 mem_le_interval_max
+2 mem_le_latency
+2 mem_le_timeout
+//START of LE conn parameter structure
+
+//START of LE scan parameter structure
+0 mem_le_scan_params
+1 mem_le_scan_type
+1 mem_le_scan_own_addr_type
+//END of LE scan parameter structure
+
+3 mem_le_lap
+1 mem_le_uap
+2 mem_le_nap
+
+2 mem_le_local_mtu
+2 mem_le_remote_mtu
+
+8 mem_le_skdm
+8 mem_le_skds
+
+2 mem_le_init_superto
+2 mem_ui_le_uuid_table 
+
+1 mem_le_secure_connect_enable
+1 mem_le_secure_connect_flag
+1 mem_le_sc_calc
+1 mem_le_secure_connect_state
+1 mem_le_sc_confirm_gkey_flag
+1 mem_le_sc_local_key_invalid
+
+
+1 mem_le_pairing_state
+1 mem_le_enc_state
+1 mem_le_pairing_mode
+4 mem_le_tk
+2 mem_le_ediv
+8 mem_le_rand
+16 mem_le_irk
+
+//LE attribute list
+4 mem_le_transmit_window
+
+//ble General configuration 
+1 mem_le_configuration
+16 mem_le_fixed_ltk
+2 mem_le_pairing_handle
+
+//for continue
+2 mem_le_l2cap_size
+1 mem_le_packet_len_recved
+
+//for fifo
+1 mem_le_tx_buff_used
+2 mem_le_tx_ptr0
+2 mem_le_tx_ptr1
+2 mem_le_tx_ptr2
+2 mem_le_tx_ptr3
+
+//ble gatt signaling
+1 mem_le_signaling_identifier
+2 mem_le_l2cap_signaling_conn_param_update_rsp_result
+
+1 mem_le_packet_size
+1 mem_le_packet_llid
+2 mem_le_payload_ptr
+
+1 mem_le_md_count
+)
+
+(
+20 notify_handle
+2 param_max_slaves
+1636 param_sifs
+0x000a06 param_le_version
+0x1d87 param_le_subversion
+0x000001 param_le_features
+23 param_le_mtu
+16 param_le_scan_interval
+16 param_le_scan_window
+0x1e0 param_clke_cal_le
+0x1000302 param_smp_paring_response		/* for mouse, noinputnooutput */
+0x010410 param_smp_key_dist	
+0xa0 param_le_sca
+)
+
+(
+0 DEFAULT_STATES
+1 IPHONE_LOST_LTK
+2 MODULE_LOST_LTK
+3 LTK_NOT_LOST
+)
+
+(
+0 FLAG_BLE_INSUFFICIENT_AUTHENTICATION
+1 FLAG_BLE_COPY_MASTER_DATA_TO_ATT_LIST
+)
+
+/*LE MOUSE-KB*/
+(
+1 LE_CONTEXT_STATE_KB
+2 LE_CONTEXT_STATE_MOUSE
+
+3 USB_MOUSE_DATA_CMD
+
+1 SEND_MOUSE_DATA_CMD
+2 SEND_KB_DATA_CMD
+)
+
+
+  (
+  	0 LE_M_STATE_SLAVE1_STANDBY
+  	1 LE_M_STATE_SLAVE1_ADVERTISING
+  	2 LE_M_STATE_SLAVE1_SCANNING
+  	3 LE_M_STATE_SLAVE1_INITIATING
+  	4 LE_M_STATE_SLAVE1_CONNECTED
+  	5 LE_M_STATE_SLAVE1_RFU_1
+  	6 LE_M_STATE_SLAVE1_RFU_2
+  	7 LE_M_STATE_SLAVE1_RFU_3
+  )
+
+  (
+  	0 LE_M_STATE_SLAVE2_STANDBY
+  	1 LE_M_STATE_SLAVE2_ADVERTISING
+  	2 LE_M_STATE_SLAVE2_SCANNING
+  	3 LE_M_STATE_SLAVE2_INITIATING
+  	4 LE_M_STATE_SLAVE2_CONNECTED
+  	5 LE_M_STATE_SLAVE2_CONNECT_INIT
+  	6 LE_M_STATE_SLAVE2_RFU_2
+  	7 LE_M_STATE_SLAVE2_RFU_3
+  )
+
+  	(
+	0 LE_SM_IDLE
+	1 LE_SM_FBTV_1800
+	2 LE_SM_FBTV_1800_WAIT
+	3 LE_SM_RBT_DEVICE_NAME
+	4 LE_SM_RBT_DEVICE_NAME_WAIT
+	5 LE_SM_FBTV_1801
+	6 LE_SM_FBTV_1801_WAIT
+	7 LE_SM_RBT_DEVICE_CHARACTER
+	8 LE_SM_RBT_DEVICE_CHARACTER_WAIT
+	
+  	)
+
+/* advertising channel PDU type */
+(
+0 ADV_IND
+1 ADV_DIRECT_IND
+2 ADV_NONCONN_IND
+3 SCAN_REQ
+4 SCAN_RSP
+5 CONNECT_REQ
+6 ADV_SCAN_IND
+)
+
+	/* tx packet type */
+	(
+	0x20 XT_LL_CONNECTION_UPDATE_REQ
+	0x21 XT_LL_CHANNEL_MAP_REQ
+	0x22 XT_LL_TERMINATE_IND
+	0x23 XT_LL_ENC_REQ
+	0x24 XT_LL_ENC_RSP
+	0x25 XT_LL_START_ENC_REQ
+	0x26 XT_LL_START_ENC_RSP
+	0x27 XT_LL_UNKNOWN_RSP
+	0x28 XT_LL_FEATURE_REQ
+	0x29 XT_LL_FEATURE_RSP
+	0x2A XT_LL_PAUSE_ENC_REQ
+	0x2B XT_LL_PAUSE_ENC_RSP
+	0x2C XT_LL_VERSION_IND
+	0x2D XT_LL_REJECT_IND
+	0x2E XT_LL_SLAVE_FEATURE_REQ
+	0x2F XT_LL_CONNECTION_PARAM_REQ
+	0x30 XT_LL_CONNECTION_PARAM_RSP
+	0x31 XT_LL_REJECT_IND_EXT
+	0x32 XT_LL_PING_REQ
+	0x33 XT_LL_PING_RSP
+	0x41 XT_SMP_PAIRING_REQUEST
+	0x42 XT_SMP_PAIRING_RESPONSE
+	0x43 XT_SMP_PAIRING_CONFIRM
+	0x44 XT_SMP_PAIRING_RANDOM
+	0x45 XT_SMP_PAIRING_FAILED
+	0x46 XT_SMP_ENCRYPTION_INFORMATION
+	0x47 XT_SMP_MASTER_IDENTIFICATION
+	0x48 XT_SMP_IDENTITY_INFORMATION
+	0x49 XT_SMP_IDENTITY_ADDRESS_INFORMATION
+	0x4A XT_SMP_SIGNING_INFORMATION
+	0x4B XT_SMP_SECURITY_REQUEST
+	0x4c XT_SMP_PAIRING_PUBLIC_KEY
+	0x4d XT_SMP_PAIRING_DHKEY_CHECK
+	)
+
+
+	/* LE control packet type */
+	(
+	0x00 LL_CONNECTION_UPDATE_REQ
+	0x01 LL_CHANNEL_MAP_REQ
+	0x02 LL_TERMINATE_IND
+	0x03 LL_ENC_REQ
+	0x04 LL_ENC_RSP
+	0x05 LL_START_ENC_REQ
+	0x06 LL_START_ENC_RSP
+	0x07 LL_UNKNOWN_RSP
+	0x08 LL_FEATURE_REQ
+	0x09 LL_FEATURE_RSP
+	0x0A LL_PAUSE_ENC_REQ
+	0x0B LL_PAUSE_ENC_RSP
+	0x0C LL_VERSION_IND
+	0x0D LL_REJECT_IND
+	0x0E LL_SLAVE_FEATURE_REQ
+	0x0F LL_CONNECTION_PARAM_REQ
+	0x10 LL_CONNECTION_PARAM_RSP
+	0x11 LL_REJECT_IND_EXT
+	0x12 LL_PING_REQ
+	0x13 LL_PING_RSP
+	)
+
+	/* Security Manager Protocol Code */
+	(
+	0x01 SMP_PAIRING_REQUEST
+	0x02 SMP_PAIRING_RESPONSE
+	0x03 SMP_PAIRING_CONFIRM
+	0x04 SMP_PAIRING_RANDOM
+	0x05 SMP_PAIRING_FAILED
+	0x06 SMP_ENCRYPTION_INFORMATION
+	0x07 SMP_MASTER_IDENTIFICATION
+	0x08 SMP_IDENTITY_INFORMATION
+	0x09 SMP_IDENTITY_ADDRESS_INFORMATION
+	0x0A SMP_SIGNING_INFORMATION
+	0x0B SMP_SECURITY_REQUEST
+	0x0c SMP_PAIRING_PUBLIC_KEY
+	0x0d SMP_PAIRING_DHKEY_CHECK
+	)
+
+	/* ATT OPCODE */
+	(
+	0x01 ATTOP_ERROR_RESPONSE
+	0x02 ATTOP_EXCHANGE_MTU_REQUEST
+	0x03 ATTOP_EXCHANGE_MTU_RESPONSE
+	0x04 ATTOP_FIND_INFORMATION_REQUEST
+	0x05 ATTOP_FIND_INFORMATION_RESPONSE
+	0x06 ATTOP_FIND_BY_TYPE_VALUE_REQUEST
+	0x07 ATTOP_FIND_BY_TYPE_VALUE_RESPONSE
+	0x08 ATTOP_READ_BY_TYPE_REQUEST
+	0x09 ATTOP_READ_BY_TYPE_RESPONSE
+	0x0A ATTOP_READ_REQUEST
+	0x0B ATTOP_READ_RESPONSE
+	0x0C ATTOP_READ_BLOB_REQUEST
+	0x0D ATTOP_READ_BLOB_RESPONSE
+	0x0E ATTOP_READ_MULTIPLE_REQUEST
+	0x0F ATTOP_READ_MULTIPLE_RESPONSE
+	0x10 ATTOP_READ_BY_GROUP_TYPE_REQUEST
+	0x11 ATTOP_READ_BY_GROUP_TYPE_RESPONSE
+	0x12 ATTOP_WRITE_REQUEST
+	0x13 ATTOP_WRITE_RESPONSE
+	0x16 ATTOP_PREPARE_WRITE_REQUEST
+	0x17 ATTOP_PREPARE_WRITE_RESPONSE
+	0x18 ATTOP_EXECUTE_WRITE_REQUEST
+	0x19 ATTOP_EXECUTE_WRITE_RESPONSE
+	0x1B ATTOP_HANDLE_VALUE_NOTIFICATION
+	0x1D ATTOP_HANDLE_VALUE_INDICATION
+	0x1E ATTOP_HANDLE_VALUE_CONFIRMATION
+	0x52 ATTOP_WRITE_COMMAND
+	0xD2 ATTOP_SIGNED_WRITE_COMMAND
+	0x1f ATTOP_CONTINUE
+	0x9e EMPTY_LE_DATA_PRE
+	0x9f EMPTY_LE_DATA
+	)
+
+	/* ATT error code */
+	(
+	0x01 ATT_ERR_INVALID_HANDLE
+	0x02 ATT_ERR_READ_NOT_PERMITTED
+	0x03 ATT_ERR_WRITE_NOT_PERMITTED
+	0x04 ATT_ERR_INVALID_PDU
+	0x05 ATT_ERR_INSUFFICIENT_AUTHENTICATION
+	0x06 ATT_ERR_REQUEST_NOT_SUPPORTED
+	0x07 ATT_ERR_INVALID_OFFSET
+	0x08 ATT_ERR_INSUFFICIENT_AUTHORIZATION
+	0x09 ATT_ERR_PREPARE_QUEUE_FULL
+	0x0A ATT_ERR_ATTRIBUTE_NOT_FOUND
+	0x0B ATT_ERR_ATTRIBUTE_NOT_LONG
+	0x0C ATT_ERR_INSUFFICIENT_ENCRYPTION_KEY_SIZE
+	0x0D ATT_ERR_INVALID_ATTRIBUTE_VALUE_LENGTH
+	0x0E ATT_ERR_UNLIKELY_ERROR
+	0x0F ATT_ERR_INSUFFICIENT_ENCRYPTION
+	0x10 ATT_ERR_UNSUPPORTED_GROUP_TYPE
+	0x11 ATT_ERR_INSUFFICIENT_RESOURCES
+	)
+	/*	SERVICE UUID	*/
+	(
+	0x1800 UUID_SERVICE_GENERIC_ACC
+	0x1801 UUID_SERVICE_GENERIC_ATT
+	0x180a UUID_SERVICE_DEVICE_INFO
+	0x180f UUID_SERVICE_BATTERY
+	0x1812 UUID_SERVICE_HIDS
+	0x2800 UUID_GATT_PRIMARY_SERVICE
+	0x2801 UUID_GATT_SECONDARY_SERVICE
+	0X2802 UUID_GATT_INCLUDE
+	0X2803 UUID_GATT_CHARACTERISTIC
+	0X2A00 UUID_CHRCTR_DEVICE_NAME
+	0X2A19 UUID_CHRCTR_BATTERY_LEVEL
+	0X2A22 UUID_CHRCTR_KEYBOARD_INPUT
+	0X2A23 UUID_CHRCTR_SYSTEM_ID 
+	0X2A25 UUID_CHRCTR_SERIAL_NUMBER
+	0X2A26 UUID_CHRCTR_FIRMWARE
+	0X2A32 UUID_CHRCTR_KEYBOARD_OUTPUT
+	0X2A33 UUID_CHRCTR_MOUSE_INPUT
+	0X2A4A UUID_CHRCTR_HID_INFO
+	0X2A4B UUID_CHRCTR_REPORT_MAP
+	0X2A4C UUID_CHRCTR_HID_CTRL_POINT
+	0X2A4D UUID_CHRCTR_REPORT
+	0X2A4E UUID_CHRCTR_PROTOCOL_MODE
+	)
+
+	(// pairing failed reason
+	0x00 PAIRING_FAILED_RESERVED
+	0X01 PAIRING_FAILED_PASSKEY_ENTRY_FAILED
+	0X02 PAIRING_FAILED_OOB_NOT_AVAILABLE
+	0X03 PAIRING_FAILED_AUTHENTICATION_REQUIRE
+	0X04 PAIRING_FAILED_CONFIRM_VALUE_FAILED
+	0X05 PAIRING_FAILED_PAIRING_NOT_SUPPORTED
+	0X06 PAIRING_FAILED_ENCRYPTION_KEY_SIZE
+	0X07 PAIRING_FAILED_COMMAND_NOT_SUPPORTED
+	0X08 PAIRING_FAILED_UNSPECIFIED_REASON
+	0X09 PAIRING_FAILED_REPEATED_ATTEMPTS
+	0X0A PAIRING_FAILED_INVALID_PARAMETERS
+	0X0B PAIRING_FAILED_DHKEY_CHECK_FAILED
+	0X0C PAIRING_FAILED_NUMERIC_COMPARISON_FAILED
+	0X0D PAIRING_FAILED_BR_EDR_PAIRING_IN_PROGRESS
+	0X0E PAIRING_FAILED_KEY_DERIVATION_GENERATION_NOT_ALLOWED
+	)
+
+	//modified_name
+	(
+	0x14 MAX_NAME_LEN
+	0x16 ADV_DATA_NAME_LEN
+	0X20 SPACE
+	
+	)
+	/* GATT Specifications*/
+	(
+	0X2900 CHARACTERTIC_EXTENDED_PROPERTIES
+	0X2901 CHARACTERTIC_USER_DESCRIPTION
+	0X2902 CLIENT_CHARACTERTIC_CONFIGURATION
+	0X2903 SERVER_CHARACTERTIC_CONFIGURATION
+	0X2904 CHARACTERTIC_PRESENTATION_FORMAT
+	0X2905 CHARACTERTIC_AGGREGATE
+	0X2906 VALID_RANGE
+	0X2907 EXTERNAL_REPORT_REFERENCE
+	0X2908 REPORT_REFERENCE
+	0X290B ENVIR_SENSING_CONFIGURATION
+	0X290C ENVIR_SENSING_MEASUREMENT
+	0X290D ENVIR_SENSING_TRIGGER_SETTING
+	)
+	/* LE L2CAP CID */
+	(
+	0x04 LE_L2CAP_CID_ATT
+	0x05 LE_L2CAP_CID_SIGNAL
+	0x06 LE_L2CAP_CID_SMP
+	)
+
+	//LE address type
+	(
+	0 LE_ADDR_TYPE_PUBLIC
+	1 LE_ADDR_TYPE_RANDOM
+	)
+	//LE address type bitmap
+	(
+	7 LE_RECEIVER_ADDR_BIT
+	6 LE_SENDER_ADDR_BIT
+	)
+	//LE SCAN TYPE
+	(
+	0x00 LE_SCAN_TYPE_PASSIVE //no SCAN_REQ shall be sent
+	0x01 LE_SCAN_TYPE_ACTIVE
+	)
+
+	//LE SCAN ENABLE
+	(
+	0x00 LE_SCAN_DISABLE
+	0x01 LE_SCAN_ENABLE
+	0x0101 LE_ACTIVE_SCAN_ENABLE
+	)
+
+	//LE FIND INFORMATION RESPONSE
+	//THE FORMAT OF THE INFORMATION DATA
+	(
+	0x01 UUID_SIZE_16BIT
+	0x02 UUID_SIZE_128BIT
+	)
+
+	(
+	0x0000 BLE_SIGNALING_CONNECT_PARAMETER_UPDATE_ACCEPTED
+	0x0001 BLE_SIGNALING_CONNECT_PARAMETER_UPDATE_REJECTED
+	)
+
+
+//	le_state_map 0-2 is reserved for state_inconn,state_insniff and state_sco
+(
+3 lestate_got_first_packet
+4 lestate_encryption
+5 lestate_update_param
+6 lestate_update_map
+)
+
+// 	le mode
+(
+0 lemode_idle
+1 lemode_slave
+3 lemode_master
+)
+
+(
+0x01 LLID_CONTINUE
+0x02 LLID_START
+0x03 LLID_LE_LL
+0x01 LLID_EMPTY
+)
+
+(
+4 LE_TX_BUFF_COUNT
+3 LE_TX_BUFF_UPDATE_LOOPCNT //LE_TX_BUFF_COUNT-1
+
+12 LE_MD_MAX_COUNT
+)
+
+(
+0 LE_CONTINUE_TYPE_NULL
+1 LE_CONTINUE_TYPE_NOTIFICATION
+2 LE_CONTINUE_TYPE_PREPARE_WRITE_RESPONSE 
+)
+
+(
+0X00	LE_PAIRING_MODE_NONE
+0X01	LE_PAIRING_MODE_LAGACY_JUSTWORK
+0X02	LE_PAIRING_MODE_LAGACY_PASSKEY
+0x81	LE_PAIRING_MODE_SECURE_CONNECT_JUSTWORK
+0x82	LE_PAIRING_MODE_SECURE_CONNECT_NUMERIC
+0X83	LE_PAIRING_MODE_SECURE_CONNECT_PASSKEY
+
+7 LE_PAIRING_MODE_SECURE_CONNECT_BIT
+)
+
+
+(
+0 FLAG_IOCAP_DISPLAYONLY
+1 FLAG_IOCAP_DISPLAYYESNO
+2 FLAG_IOCAP_KEYBOARDONLY
+3 FLAG_IOCAP_NOINPUTNOOUTPUT
+4 FLAG_IOCAP_KEYBOARDDISPLAY
+
+0x00 FLAG_OOB_DATA_FLAG_NO
+)
+
+(
+0X00 FLAG_LE_NO_BONDING_NO_MITM
+0X01 FLAG_LE_BONDING_NO_MITM
+0X04 FLAG_LE_NO_BONDING_MITM
+0X05 FLAG_LE_BONDING_MITM
+0X09 FLAG_LE_BONDING_NO_MITM_SECURE
+0X0D FLAG_LE_BONDING_MITM_SECURE
+
+2 LE_AUTH_MITM_BIT
+3 LE_AUTH_SECURE_CONNECTION_PAIRING_BIT
+)
+
+(
+0  LE_FIND_BY_TYPE_VAL_RES_NOT_FOUND
+1  LE_FIND_BY_TYPE_VAL_RES_FOUND_STARTING_HANDLE
+2  LE_FIND_BY_TYPE_VAL_RES_FOUND_ENDING_HANDLE
+
+)
+
+(
+0 MASTER_PUBLIC_ADDR
+1 MASTER_RANDOM_ADDR
+)
+
+(
+0x06 LE_ERR_PIN_OR_KEY_MISSING
+)
+
+(
+96000 TIMER_SMP_PAIRING_TIMEOUT //30S
+)
+
+//mem_le_pairing_state
+(
+0 FLAG_LE_PAIRING_NULL
+1 FLAG_LE_PAIRING_START
+2 FLAG_LE_PAIRING_SEND_RECURITY_REQ
+3 FLAG_LE_PAIRING_RCV_PAIRING_REQ
+4 FLAG_LE_PAIRING_AUTH
+5 FLAG_LE_PAIRING_AFTER_AUTH
+6 FLAG_LE_PAIRING_SEND_START_ENC_RSP
+7 FLAG_LE_PARING_SEND_ENC_INFORMATION
+8 FLAG_LE_PARING_SEND_MASTER_IDENTIFICATION 
+9 FLAG_LE_PARING_SEND_INDENTITY_INFORMATION
+0xff FLAG_LE_PAIRING_END
+)
+
+/*LE secure connect state */
+(
+0x00 LE_SC_STAT_NULL
+0x01 LE_SC_STAT_RECEIVE_PUBLIC_KEY
+0x02 LE_SC_STAT_WAIT_SEND_PUBLIC_KEY
+0x03 LE_SC_STAT_SEND_PUBLIC_KEY
+0x04 LE_SC_STAT_RECEIVE_RANDOM
+0x05 LE_SC_STAT_SEND_RANDOM
+0x06 LE_SC_STAT_RECEIVE_DHKEY
+0x07 LE_SC_STAT_WAIT_CONFIRM_GKEY
+0x08 LE_SC_STAT_PASSKEY_WAIT_CONFIRM
+)
+
+(
+0 FLAG_LE_SC_CONFRIM_NULL
+1 FLAG_LE_SC_CONFRIM_GKEY_OK
+)
+
+//mem_le_enc_state
+(
+0 FLAG_LE_ENC_NULL
+1 FLAG_LE_RCV_ENC_START
+2 FLAG_LE_ENC_PAUSE
+3 FLAG_LE_RCV_START_ENC_RSP
+4 FLAG_LE_SEND_START_ENC_RSP
+0xff FLAG_LE_ENC_END
+)
+
+(//mem_le_configuration
+//bit0:use fixed key , ble passkey pairing
+0 BIT_BLE_PASSKEY_FIXED_KEY
+//bit1:ble pairing use fixed long term key
+1 BIT_BLE_PAIRING_FIXED_LTK
+//bit2:ble transmit packet will set more data flag
+2 BIT_BLE_TRANSMIT_PACKET_BY_MD
+//bit3:master read handle, with requires an authenticated link
+3 BIT_BLE_READ_AUTH
+//bit4:master write handle, with requires an authenticated link
+4 BIT_BLE_WRITE_AUTH
+//bit5:cannot enter long sleep
+5 BIT_BLE_SHORT_MULT
+
+)
+
+(
+0 BIT_ADV_CHANNEL_MAP_37
+1 BIT_ADV_CHANNEL_MAP_38
+2 BIT_ADV_CHANNEL_MAP_39
+)
+
+memalloc(
+
+1 mem_lmo_header_length
+1 mem_lmo_header_opcode
+17 mem_lmo_payload
+1 mem_lmi_accepted_opcode
+1 mem_disconn_reason_send
+1 mem_tx_fixed_freq
+1 mem_rx_fixed_freq
+1 mem_ext_features_page
+2 mem_lmpext_ssp_enable
+1 mem_remote_sppcap
+
+1 mem_lmp_conn_state
+2 mem_soft_timer
+1 mem_pincode_state
+
+1 mem_sres_tid
+1 mem_accptsco_tid
+
+1 mem_auth_enable
+1 mem_wait_encryption
+
+16 mem_sniff_payload
+4 mem_aurand_send_delay_time
+)
+
+xmemalloc(
+3 mem_lmp_version
+2 mem_lmp_subversion
+1 mem_local_name_length
+3 mem_local_name
+64 mem_local_name2
+1 mem_local_name_end
+1 mem_unsniff2sniff_timer
+1 mem_switch_flag
+1 mem_classic_bt_flag
+)
+	(
+	//bit map
+	0 pair_state_inrand
+	1 pair_state_inrand_acpt
+	2 pair_state_send_comb
+	3 pair_state_recv_comb
+	4 pair_state_send_aurand
+	5 pair_state_recv_sres
+	6 pair_state_recv_aurand
+	7 pair_state_send_sres	
+	)
+	/* LMP opcodes */
+	(
+	1 LMP_NAME_REQ 
+	2 LMP_NAME_RES 
+	3 LMP_ACCEPTED 
+	4 LMP_NOT_ACCEPTED 
+	5 LMP_CLKOFFSET_REQ 
+	6 LMP_CLKOFFSET_RES 
+	7 LMP_DETACH 
+	8 LMP_IN_RAND 
+	9 LMP_COMB_KEY 
+	10 LMP_UNIT_KEY 
+	11 LMP_AU_RAND 
+	12 LMP_SRES 
+	13 LMP_TEMP_RAND 
+	14 LMP_TEMP_KEY 
+	15 LMP_ENCRYPTION_MODE_REQ 
+	16 LMP_ENCRYPTION_KEY_SIZE_REQ 
+	17 LMP_START_ENCRYPTION_REQ 
+	18 LMP_STOP_ENCRYPTION_REQ 
+	19 LMP_SWITCH_REQ 
+	20 LMP_HOLD
+	21 LMP_HOLD_REQ
+	23 LMP_SNIFF_REQ 
+	24 LMP_UNSNIFF_REQ 
+	26 LMP_PARK_REQ 
+	27 LMP_SET_BROADCAST_SCAN_WINDOW 
+	28 LMP_MODIFY_BEACON 
+	29 LMP_UNPARK_BD_ADDR_REQ 
+	30 LMP_UNPARK_PM_ADDR_REQ 
+	31 LMP_INCR_POWER_REQ 
+	32 LMP_DECR_POWER_REQ 
+	33 LMP_MAX_POWER 
+	34 LMP_MIN_POWER 
+	35 LMP_AUTO_RATE 
+	36 LMP_PREFERRED_RATE 
+	37 LMP_VERSION_REQ 
+	38 LMP_VERSION_RES 
+	39 LMP_FEATURES_REQ 
+	40 LMP_FEATURES_RES 
+	41 LMP_QUALITY_OF_SERVICE 
+	42 LMP_QUALITY_OF_SERVICE_REQ 
+	43 LMP_SCO_LINK_REQ 
+	44 LMP_REMOVE_SCO_LINK_REQ 
+	45 LMP_MAX_SLOT 
+	46 LMP_MAX_SLOT_REQ 
+	47 LMP_TIMING_ACCURACY_REQ 
+	48 LMP_TIMING_ACCURACY_RES 
+	49 LMP_SETUP_COMPLETE 
+	50 LMP_USE_SEMI_PERMANENT_KEY 
+	51 LMP_HOST_CONNECTION_REQ 
+	52 LMP_SLOT_OFFSET 
+	53 LMP_PAGE_MODE_REQ 
+	54 LMP_PAGE_SCAN_MODE_REQ 
+	55 LMP_SUPERVISION_TIMEOUT 
+	56 LMP_TEST_ACTIVATE
+	57 LMP_TEST_CONTROL
+	58 LMP_ENC_KEY_SIZE_MASK_REQ
+	59 LMP_ENC_KEY_SIZE_MASK_RES
+	60 LMP_SET_AFH
+
+	/* simple pairing support */
+	61 LMP_ENCAPSULATED_HEADER
+	62 LMP_ENCAPSULATED_PAYLOAD
+	63 LMP_SIMPLE_PAIRING_CONFIRM
+	64 LMP_SIMPLE_PAIRING_NUMBER
+	65 LMP_DHKEY_CHECK
+	127 LMP_ESCAPE
+	127 LMP_ESCAPE_4   /* add 2bytes LMP header support  */   
+	)
+	/* LMP EXT opcodes, ORed with bit 7 to make difference to nonEXT */
+	(
+	129 LMP_EXT_ACCEPTED
+	130 LMP_NOT_ACCEPTED_EXT
+	131 LMP_EXT_FEATURES_REQ
+	132 LMP_EXT_FEATURES_RES
+	139 LMP_PACKET_TYPE_TABLE_REQ
+	140 LMP_EXT_ESCO_LINK_REQ
+	141 LMP_EXT_REMOVE_ESCO_REQ
+	144 LMP_EXT_CHN_CLASSIFICATION_REQ
+	145 LMP_EXT_CHN_CLASSIFICATION
+	149 LMP_SNIFF_SUBRATING_REQ
+	150 LMP_SNIFF_SUBRATING_RES
+	151 LMP_PAUSE_ENCRYPTION_REQ
+	152 LMP_RESUME_ENCRYPTION_REQ
+	153 LMP_IO_CAP_REQ
+	154 LMP_IO_CAP_RES
+	)
+	/* LMP reason codes */
+	(
+	0x05 AUTHENTICATION_FAILURE_ERROR
+	0x06 KEY_MISSING
+	0x0b ACL_CONNECTION_ALREADY_EXISTS
+	0x13 OTHER_END_TERMINATED
+	0x15 ABOUT_TO_POEWR_OFF
+	0x16 LOCAL_HOST
+	0x18 PAIRING_NOT_ALLOWED
+	0x19 UNKNOWN_LMP_PDU
+	0x1A UNSUPPORTED_LMP_FEATURE 
+	0x1F UNSPECIFIED_ERROR
+	0x20 UNSUPPORTED_PARAMETERS
+	0x21 SWITCH_NOT_ALLOWED
+	0x23 TRANSACTION_COLLISION
+	0x24 PDU_NOT_ALLOWED
+	0x25 ENCRYPTION_MODE_NOT_ACCEPTABLE
+	0x2e NOT_SUPPORT_CHN_CLASSIFICATION
+	0x37 NOT_SUPPORT_SSP
+	)
+
+	/* test mode scenarios */
+	(
+	0 PAUSE_TEST_MODE
+	1 ZERO_PATTERN
+	2 ONE_PATTERN
+	3 ALT_PATTERN
+	4 PSEUDORANDOM
+	5 CLOSED_LOOP_BACK_ACL
+	6 CLOSED_LOOP_BACK_SCO
+	7 ACL_WITHOUT_WHITENING
+	8 SCO_WITHOUT_WHITENING
+	9 ALT2_PATTERN
+	255 EXIT_TEST_MODE
+	)
+	/* test mode hoppig modes */
+	(
+	0 FIXED_FREQ
+	1 NORMAL_HOP
+	)
+
+	/* mem_lmp_tid indicates which type of LMP will be sent */
+	(
+	0 TID_NORM_REPLY
+	1 TID_NORM_SEND
+	2 TID_ONE
+	3 TID_ZERO
+	4 TID_PAIRING
+	5 TID_ENCRYPTION
+	6 TID_VARIABLE
+	7 TID_RX
+	)
+
+	/* ============== lmp status ==========*/
+	(
+	0 lmp_incoming
+	1 lmp_outgoing
+	2 lmp_reject_msg
+	3 lmp_clear_msg
+	4 upper_reject_msg
+	5 upper_clear_msg
+	)
+
+(
+0x2ee00 TIMER_ONE_MINUTE //96000*2
+80 TIMER_SWITCH_WAITE
+12 TIMER_ENPT_WAITE
+)
+
+(
+0 SWITCH_FLAG_INIT
+1 SWITCH_FLAG_ACCEPT
+2 SWITCH_FLAG_NOT_ACCEPT
+)
+(
+0 NULL_ENCRYP
+1 DONE_ENCRYP
+)
+
+//
+//
+//Large memory blocks defined in this file.
+//Blocks Shall be defined with absolute address.
+//Blocks' length Shall be specified in comment following Blocks' names.
+//Different blocks MAY be overlap.
+//Blocks defined in this file Shall NOT be overlap with variable in memmap.format.
+
+// USB C51 exchange area
+(
+0xff0 mem_mcmd
+0xff1 mem_mouse_data
+)
+
+//l2cap RX buffers
+(
+0x1000 mem_l2cap_rxbuff1		//0x400
+0x1400 mem_l2cap_rxbuff2		//0x400
+//end address:0x17ff
+)
+//l2cap TX buffers
+(
+0x1800 mem_tx_buff0		//128
+0x1880 mem_tx_buff1		//128
+0x1900 mem_tx_buff2		//128
+0x1980 mem_tx_buff3		//128
+0x1a00 mem_tx_buff4		//128
+0x1a80 mem_tx_buff5		//128
+0x1b00 mem_tx_buff6		//128
+0x1b80 mem_tx_buff7		//128
+//end address: 0x1bff
+)
+
+(
+0x1800 mem_le_tx_buffer0
+0x1900 mem_le_tx_buffer1
+0x1a00 mem_le_tx_buffer2
+0x1b00 mem_le_tx_buffer3
+//end addr:0x1dff
+)
+
+//uart buffer
+(
+0x1800 mem_h5rx_buf//0x400
+0x1bff mem_h5rx_buf_end
+0x1c00 mem_h5tx_buf
+0x1fff mem_h5tx_buf_end
+)
+
+(
+0x4c00 mem_module_rx_buf//0x400
+0x4c00 mem_module_rx_buf_little
+0x4fff mem_module_rx_buf_end
+0x1c00 mem_module_tx_buf
+0x1fff mem_module_tx_buf_end
+)
+
+(
+0x1800 mem_ir_record
+0x1c      mem_ir_record_max
+)
+
+
+(
+0 MODULE_FLAG_UART_FLOW_CONTROL
+1 MODULE_FLAG_BLE_RECEIVED_DATA
+2 MODULE_FLAG_BLE_SEND_MTU23
+3 MODULE_FLAG_BLE_SEND_DATA
+)
+
+
+
+
+(
+34 NV_DATA_LEN
+-1 DECREASED_ONE
+)
+
+
+
+(
+	10 FLAG_MODULE_READ_VDD_COUNT
+)
+
+	(
+		110  DM_REFCOM_BUFF_LEN
+		230  NL_RFCOMM_BUFF_LEN
+		220  NL_RFCOMM_BUFF_LEN_220
+		20 DM_LE_BUFF_LEN
+	)
+	(
+		0x200 UART_AIR_CONTROL_THRESHOLD
+		0x150 UART_RX_CONTROL_THRESHOLD
+	)
+	(
+		0 MODULE_LED_DISABLE
+		1 MODULE_LED_BLINK
+	)
+
+
+
+
+(
+0x01 HCI_DISCARD_PACKET
+0x00 HCI_NOT_DISCARD_PACKET
+
+
+)
+
+
+
+(//Command
+0x00 HCI_CMD_SET_BT_ADDR_REQ
+0x01 HCI_CMD_SET_LE_ADDR_REQ
+0x02 HCI_CMD_SET_VISIBILITY_REQ
+0x03 HCI_CMD_SET_BT_NAME_REQ
+0x04 HCI_CMD_SET_LE_NAME_REQ
+0x05 HCI_CMD_SPP_DATA_REQ
+0x09 HCI_CMD_LE_DATA_REQ
+0x0b HCI_CMD_STATUS_IRQ
+0x0c HCI_CMD_SET_PAIRING_REQ
+0x0d HCI_CMD_SET_PINCODE_REQ
+0x0e HCI_CMD_SET_UARTCONTROL_REQ
+0x0f HCI_CMD_SET_UART_BAUD_REQ
+0x10 HCI_CMD_VERSION_REQ
+0x11 HCI_CMD_BT_DISCONNECT
+0x12 HCI_CMD_BLE_DISCONNECT
+0x13 HCI_CMD_DELETE_DEVICE
+0x14 HCI_CMD_CREATE_CONNECT
+0x26 HCI_CMD_SET_NVRAM_REQ
+0x27 HCI_CMD_SLEEP
+0x28 HCI_CMD_CONFIRM_GKEY
+0x29 HCI_CMD_SET_CREDIT_GIVEN
+0x2a HCI_CMD_AUTO_ADV_SCAN
+0x2b HCI_CMD_POWER_REQ
+0x2c HCI_CMD_POWER_SET
+0x30 HCI_CMD_PASSKEY_ENTRY
+0x31 HCI_CMD_SET_GPIO
+0x32 HCI_CMD_READ_GPIO
+0x33 HCI_CMD_LE_SET_PAIRING
+0x34 HCI_CMD_LE_SET_ADV_DATA
+0x35 HCI_CMD_LE_SET_SCAN_DATA
+0x36 HCI_CMD_LE_SEND_CONN_UPDATE_REQ
+0x38 HCI_CMD_LE_START_PAIRING
+0x48 HCI_CMD_LE_CONFIRM_GKEY
+
+)
+
+(//event
+0x00 HCI_EVENT_SPP_CONN_REP
+0x01 HCI_EVENT_HID_CONN_REP
+0x02 HCI_EVENT_LE_CONN_REP
+0x03 HCI_EVENT_SPP_DIS_REP
+0x04 HCI_EVENT_HID_DIS_REP
+0x05 HCI_EVENT_LE_DIS_REP
+0x06 HCI_EVENT_CMD_RES
+0x07 HCI_EVENT_SPP_DATA_REP
+0x08 HCI_EVENT_LE_DATA_REP
+0x09 HCI_EVENT_STANDBY_REP
+0x0a HCI_EVENT_STATUS_RES
+0x0b HCI_EVENT_FINISH_PACK_NUM
+0X0C HCI_EVENT_SNIFF_MD_CHANGE
+0x0D HCI_EVENT_NVRAM_REP
+0x0e HCI_EVENT_GKEY
+0x0F HCI_EVENT_INVALID_PACKET
+0x10 HCI_EVENT_GET_PASSKEY
+0x11 HCI_EVENT_LE_TK
+0x12 HCI_EVENT_REMOTE_MTU
+0x14 HCI_EVENT_LE_PAIRING_STATE
+0X15 HCI_EVENT_LE_ENCRYPTION_STATE
+0x17 HCI_EVENT_LE_CONNECTION_UPDATE
+0x1d HCI_EVENT_LE_GKEY
+
+)
+
+
+
+
+(
+0x7e0 OTP_ADDR_RF_PARAM_FIX
+//struct of RF_PARAM_FIX
+// uint8       //length = param_pair_count * 2 
+// uint16     //param-pair-1
+// uint16     //param-pair-2
+// uint16     //param-pair-3
+// uint16     //param-pair-4
+// uint16     //param-pair-5
+// uint16     //param-pair-6
+// uint16     //param-pair-7
+)
+(
+0x0270 FW_VERSION_NUMBER
+)
+
+(
+0	PAIRING_PINCODE
+1	PAIRING_JUSTWORK
+2	PAIRING_PASSKEY
+3	PAIRING_CONFIRM
+)
+
+
+(
+0x0001	FLAG_BT_PAIRING_SUCCESS
+0x0101	FLAG_BT_PAIRING_FAIL
+0x0080	FLAG_BLE_PAIRING_SUCCESS
+0x0180	FLAG_BLE_PAIRING_FAIL
+)
+
+
+(
+1	FLAG_EVENT_START_ENC
+0	FLAG_EVENT_PAUSE_ENC
+)
+
+(
+	0 MOUDLE_STATE_BT_BIT
+	1 MOUDLE_STATE_BLE_BIT
+)
+
+(
+	0 MOUDLE_TASK_UNSINFF
+)
+
+
+//dpi eeprom addr
+198 mouse_dpi_eeprom_addr
+
+(
+1 ONE_TRADITION_MOUSE
+2 ONE_BLE_MOUSE
+)
+
+
+(
+1 SENSOR_TYPE_A7530
+2 SENSOR_TYPE_P3204
+)
+0x30 P3204_ID
+0x31 P3065_ID
+0x3e P3610_ID
+
+7 pan_bit_motion
+
+(
+1000      MOUSE_LPM_CLR_LOCK_TIME
+       2       MOUSE_DPI_MAX_DECR
+)
+(
+80 MOUSE_SEND_BLANK_TIMER
+)
+
+
+//mem_mouse_mode_state
+(
+0x00 MOUSE_MODE_STATE_IDLE
+0x01 MOUSE_MODE_STATE_BT
+0x02 MOUSE_MODE_STATE_BLE
+)
+
+
+(
+	  0 patch00_0
+	  1 patch00_1
+	  2 patch00_2
+	  3 patch00_3
+	  4 patch00_4
+	  5 patch00_5
+	  6 patch00_6
+	  7 patch00_7
+	  8 patch01_0
+	  9 patch01_1
+	 10 patch01_2
+	 11 patch01_3
+	 12 patch01_4
+	 13 patch01_5
+	 14 patch01_6
+	 15 patch01_7
+	 16 patch02_0
+	 17 patch02_1
+	 18 patch02_2
+	 19 patch02_3
+	 20 patch02_4
+	 21 patch02_5
+	 22 patch02_6
+	 23 patch02_7
+	 24 patch03_0
+	 25 patch03_1
+	 26 patch03_2
+	 27 patch03_3
+	 28 patch03_4
+	 29 patch03_5
+	 30 patch03_6
+	 31 patch03_7
+	 32 patch04_0
+	 33 patch04_1
+	 34 patch04_2
+	 35 patch04_3
+	 36 patch04_4
+	 37 patch04_5
+	 38 patch04_6
+	 39 patch04_7
+	 40 patch05_0
+	 41 patch05_1
+	 42 patch05_2
+	 43 patch05_3
+	 44 patch05_4
+	 45 patch05_5
+	 46 patch05_6
+	 47 patch05_7
+	 48 patch06_0
+	 49 patch06_1
+	 50 patch06_2
+	 51 patch06_3
+	 52 patch06_4
+	 53 patch06_5
+	 54 patch06_6
+	 55 patch06_7
+	 56 patch07_0
+	 57 patch07_1
+	 58 patch07_2
+	 59 patch07_3
+	 60 patch07_4
+	 61 patch07_5
+	 62 patch07_6
+	 63 patch07_7
+	 64 patch08_0
+	 65 patch08_1
+	 66 patch08_2
+	 67 patch08_3
+	 68 patch08_4
+	 69 patch08_5
+	 70 patch08_6
+	 71 patch08_7
+	 72 patch09_0
+	 73 patch09_1
+	 74 patch09_2
+	 75 patch09_3
+	 76 patch09_4
+	 77 patch09_5
+	 78 patch09_6
+	 79 patch09_7
+	 80 patch0a_0
+	 81 patch0a_1
+	 82 patch0a_2
+	 83 patch0a_3
+	 84 patch0a_4
+	 85 patch0a_5
+	 86 patch0a_6
+	 87 patch0a_7
+	 88 patch0b_0
+	 89 patch0b_1
+	 90 patch0b_2
+	 91 patch0b_3
+	 92 patch0b_4
+	 93 patch0b_5
+	 94 patch0b_6
+	 95 patch0b_7
+	 96 patch0c_0
+	 97 patch0c_1
+	 98 patch0c_2
+	 99 patch0c_3
+	100 patch0c_4
+	101 patch0c_5
+	102 patch0c_6
+	103 patch0c_7
+	104 patch0d_0
+	105 patch0d_1
+	106 patch0d_2
+	107 patch0d_3
+	108 patch0d_4
+	109 patch0d_5
+	110 patch0d_6
+	111 patch0d_7
+	112 patch0e_0
+	113 patch0e_1
+	114 patch0e_2
+	115 patch0e_3
+	116 patch0e_4
+	117 patch0e_5
+	118 patch0e_6
+	119 patch0e_7
+	120 patch0f_0
+	121 patch0f_1
+	122 patch0f_2
+	123 patch0f_3
+	124 patch0f_4
+	125 patch0f_5
+	126 patch0f_6
+	127 patch0f_7
+	128 patch10_0
+	129 patch10_1
+	130 patch10_2
+	131 patch10_3
+	132 patch10_4
+	133 patch10_5
+	134 patch10_6
+	135 patch10_7
+	136 patch11_0
+	137 patch11_1
+	138 patch11_2
+	139 patch11_3
+	140 patch11_4
+	141 patch11_5
+	142 patch11_6
+	143 patch11_7
+	144 patch12_0
+	145 patch12_1
+	146 patch12_2
+	147 patch12_3
+	148 patch12_4
+	149 patch12_5
+	150 patch12_6
+	151 patch12_7
+	152 patch13_0
+	153 patch13_1
+	154 patch13_2
+	155 patch13_3
+	156 patch13_4
+	157 patch13_5
+	158 patch13_6
+	159 patch13_7
+	160 patch14_0
+	161 patch14_1
+	162 patch14_2
+	163 patch14_3
+	164 patch14_4
+	165 patch14_5
+	166 patch14_6
+	167 patch14_7
+	168 patch15_0
+	169 patch15_1
+	170 patch15_2
+	171 patch15_3
+	172 patch15_4
+	173 patch15_5
+	174 patch15_6
+	175 patch15_7
+	176 patch16_0
+	177 patch16_1
+	178 patch16_2
+	179 patch16_3
+	180 patch16_4
+	181 patch16_5
+	182 patch16_6
+	183 patch16_7
+	184 patch17_0
+	185 patch17_1
+	186 patch17_2
+	187 patch17_3
+	188 patch17_4
+	189 patch17_5
+	190 patch17_6
+	191 patch17_7
+	192 patch18_0
+	193 patch18_1
+	194 patch18_2
+	195 patch18_3
+	196 patch18_4
+	197 patch18_5
+	198 patch18_6
+	199 patch18_7
+	200 patch19_0
+	201 patch19_1
+	202 patch19_2
+	203 patch19_3
+	204 patch19_4
+	205 patch19_5
+	206 patch19_6
+	207 patch19_7
+	208 patch1a_0
+	209 patch1a_1
+	210 patch1a_2
+	211 patch1a_3
+	212 patch1a_4
+	213 patch1a_5
+	214 patch1a_6
+	215 patch1a_7
+	216 patch1b_0
+	217 patch1b_1
+	218 patch1b_2
+	219 patch1b_3
+	220 patch1b_4
+	221 patch1b_5
+	222 patch1b_6
+	223 patch1b_7
+	224 patch1c_0
+	225 patch1c_1
+	226 patch1c_2
+	227 patch1c_3
+	228 patch1c_4
+	229 patch1c_5
+	230 patch1c_6
+	231 patch1c_7
+	232 patch1d_0
+	233 patch1d_1
+	234 patch1d_2
+	235 patch1d_3
+	236 patch1d_4
+	237 patch1d_5
+	238 patch1d_6
+	239 patch1d_7
+	240 patch1e_0
+	241 patch1e_1
+	242 patch1e_2
+	243 patch1e_3
+	244 patch1e_4
+	245 patch1e_5
+	246 patch1e_6
+	247 patch1e_7
+	248 patch1f_0
+	249 patch1f_1
+	250 patch1f_2
+	251 patch1f_3
+	252 patch1f_4
+	253 patch1f_5
+	254 patch1f_6
+	255 patch1f_7
+	  0 patch20_0
+	  1 patch20_1
+	  2 patch20_2
+	  3 patch20_3
+	  4 patch20_4
+	  5 patch20_5
+	  6 patch20_6
+	  7 patch20_7
+	  8 patch21_0
+	  9 patch21_1
+	 10 patch21_2
+	 11 patch21_3
+	 12 patch21_4
+	 13 patch21_5
+	 14 patch21_6
+	 15 patch21_7
+	 16 patch22_0
+	 17 patch22_1
+	 18 patch22_2
+	 19 patch22_3
+	 20 patch22_4
+	 21 patch22_5
+	 22 patch22_6
+	 23 patch22_7
+	 24 patch23_0
+	 25 patch23_1
+	 26 patch23_2
+	 27 patch23_3
+	 28 patch23_4
+	 29 patch23_5
+	 30 patch23_6
+	 31 patch23_7
+	 32 patch24_0
+	 33 patch24_1
+	 34 patch24_2
+	 35 patch24_3
+	 36 patch24_4
+	 37 patch24_5
+	 38 patch24_6
+	 39 patch24_7
+	 40 patch25_0
+	 41 patch25_1
+	 42 patch25_2
+	 43 patch25_3
+	 44 patch25_4
+	 45 patch25_5
+	 46 patch25_6
+	 47 patch25_7
+	 48 patch26_0
+	 49 patch26_1
+	 50 patch26_2
+	 51 patch26_3
+	 52 patch26_4
+	 53 patch26_5
+	 54 patch26_6
+	 55 patch26_7
+	 56 patch27_0
+	 57 patch27_1
+	 58 patch27_2
+	 59 patch27_3
+	 60 patch27_4
+	 61 patch27_5
+	 62 patch27_6
+	 63 patch27_7
+	 64 patch28_0
+	 65 patch28_1
+	 66 patch28_2
+	 67 patch28_3
+	 68 patch28_4
+	 69 patch28_5
+	 70 patch28_6
+	 71 patch28_7
+	 72 patch29_0
+	 73 patch29_1
+	 74 patch29_2
+	 75 patch29_3
+	 76 patch29_4
+	 77 patch29_5
+	 78 patch29_6
+	 79 patch29_7
+	 80 patch2a_0
+	 81 patch2a_1
+	 82 patch2a_2
+	 83 patch2a_3
+	 84 patch2a_4
+	 85 patch2a_5
+	 86 patch2a_6
+	 87 patch2a_7
+	 88 patch2b_0
+	 89 patch2b_1
+	 90 patch2b_2
+	 91 patch2b_3
+	 92 patch2b_4
+	 93 patch2b_5
+	 94 patch2b_6
+	 95 patch2b_7
+	 96 patch2c_0
+	 97 patch2c_1
+	 98 patch2c_2
+	 99 patch2c_3
+	100 patch2c_4
+	101 patch2c_5
+	102 patch2c_6
+	103 patch2c_7
+	104 patch2d_0
+	105 patch2d_1
+	106 patch2d_2
+	107 patch2d_3
+	108 patch2d_4
+	109 patch2d_5
+	110 patch2d_6
+	111 patch2d_7
+	112 patch2e_0
+	113 patch2e_1
+	114 patch2e_2
+	115 patch2e_3
+	116 patch2e_4
+	117 patch2e_5
+	118 patch2e_6
+	119 patch2e_7
+	120 patch2f_0
+	121 patch2f_1
+	122 patch2f_2
+	123 patch2f_3
+	124 patch2f_4
+	125 patch2f_5
+	126 patch2f_6
+	127 patch2f_7
+	128 patch30_0
+	129 patch30_1
+	130 patch30_2
+	131 patch30_3
+	132 patch30_4
+	133 patch30_5
+	134 patch30_6
+	135 patch30_7
+	136 patch31_0
+	137 patch31_1
+	138 patch31_2
+	139 patch31_3
+	140 patch31_4
+	141 patch31_5
+	142 patch31_6
+	143 patch31_7
+	144 patch32_0
+	145 patch32_1
+	146 patch32_2
+	147 patch32_3
+	148 patch32_4
+	149 patch32_5
+	150 patch32_6
+	151 patch32_7
+	152 patch33_0
+	153 patch33_1
+	154 patch33_2
+	155 patch33_3
+	156 patch33_4
+	157 patch33_5
+	158 patch33_6
+	159 patch33_7
+	160 patch34_0
+	161 patch34_1
+	162 patch34_2
+	163 patch34_3
+	164 patch34_4
+	165 patch34_5
+	166 patch34_6
+	167 patch34_7
+	168 patch35_0
+	169 patch35_1
+	170 patch35_2
+	171 patch35_3
+	172 patch35_4
+	173 patch35_5
+	174 patch35_6
+	175 patch35_7
+	176 patch36_0
+	177 patch36_1
+	178 patch36_2
+	179 patch36_3
+	180 patch36_4
+	181 patch36_5
+	182 patch36_6
+	183 patch36_7
+	184 patch37_0
+	185 patch37_1
+	186 patch37_2
+	187 patch37_3
+	188 patch37_4
+	189 patch37_5
+	190 patch37_6
+	191 patch37_7
+	192 patch38_0
+	193 patch38_1
+	194 patch38_2
+	195 patch38_3
+	196 patch38_4
+	197 patch38_5
+	198 patch38_6
+	199 patch38_7
+	200 patch39_0
+	201 patch39_1
+	202 patch39_2
+	203 patch39_3
+	204 patch39_4
+	205 patch39_5
+	206 patch39_6
+	207 patch39_7
+	208 patch3a_0
+	209 patch3a_1
+	210 patch3a_2
+	211 patch3a_3
+	212 patch3a_4
+	213 patch3a_5
+	214 patch3a_6
+	215 patch3a_7
+	216 patch3b_0
+	217 patch3b_1
+	218 patch3b_2
+	219 patch3b_3
+	220 patch3b_4
+	221 patch3b_5
+	222 patch3b_6
+	223 patch3b_7
+	224 patch3c_0
+	225 patch3c_1
+	226 patch3c_2
+	227 patch3c_3
+	228 patch3c_4
+	229 patch3c_5
+	230 patch3c_6
+	231 patch3c_7
+	232 patch3d_0
+	233 patch3d_1
+	234 patch3d_2
+	235 patch3d_3
+	236 patch3d_4
+	237 patch3d_5
+	238 patch3d_6
+	239 patch3d_7
+	240 patch3e_0
+	241 patch3e_1
+	242 patch3e_2
+	243 patch3e_3
+	244 patch3e_4
+	245 patch3e_5
+	246 patch3e_6
+	247 patch3e_7
+	248 patch3f_0
+	249 patch3f_1
+	250 patch3f_2
+	251 patch3f_3
+	252 patch3f_4
+	253 patch3f_5
+	254 patch3f_6
+	255 patch3f_7
+
+)
+(
+  0x8000 core_chipid
+  0x8003 core_kick
+  0x8005 core_lpm_wr
+  0x8006 core_misc_ctrl
+  0x8007 core_otp_rdata
+  0x8009 core_pcmoutfifo
+  0x8010 core_reset
+  0x8011 core_encrypt
+  0x8015 core_uart_txd
+  0x8022 core_ucode_hi
+  0x8023 core_ucode_ctrl
+  0x8024 core_ucode_low
+  0x8025 core_ucode_data
+  0x8040 core_halfslot
+  0x8042 core_clksel
+  0x8043 core_uart_clksel
+  0x8043 core_config 
+  0x8044 core_xtal_stable_time
+  0x8045 core_otp_addr
+  0x8046 core_otp_din
+  0x8047 core_otp_ctrl
+  0x8048 core_otpd_addr
+  0x804a core_otpd_len
+  0x804b core_otpd_ctrl
+  0x804c core_lpm_reg
+  0x804f core_lpm_isogate
+  0x8050 core_clkoff
+  0x8052 core_uart_baud
+  0x8054 core_uart_rsaddr
+  0x8056 core_uart_readdr
+  0x8058 core_uart_rrptr
+  0x805a core_uart_tsaddr
+  0x805c core_uart_teaddr
+  0x805e core_uart_twptr
+  0x8060 core_uart_trptrp
+  0x8062 core_uart_ctrl
+  0x8063 core_kscn_ksctrl
+  0x8064 core_kscn_rctc
+  0x8065 core_kscn_scancycle_timer_l
+  0x8066 core_kscn_scancycle_timer_h
+  0x8067 core_kscn_m_debounce          
+  0x8068 core_kscn_modkey
+  0x806f core_kscn_rowmask
+  0x8070 core_gpio_oe0
+  0x8071 core_gpio_oe1
+  0x8072 core_gpio_oe2
+  0x8073 core_gpio_oe3
+  0x8074 core_gpio_out0
+  0x8075 core_gpio_out1
+  0x8076 core_gpio_out2
+  0x8077 core_gpio_out3
+  0x8078 core_gpio_pu0
+  0x8079 core_gpio_pu1
+  0x807a core_gpio_pu2
+  0x807b core_gpio_pu3
+  0x807c core_gpio_pd0
+  0x807d core_gpio_pd1
+  0x807e core_gpio_pd2
+  0x807f core_gpio_pd3
+  0x8080 core_gpio_sel
+  0x8081 core_gpio_sel1
+  0x8082 core_gpio_sel2
+  0x8083 core_gpio_key0
+  0x8084 core_gpio_key1
+  0x8085 core_gpio_key2
+  0x8086 core_spid_ctrl
+  0x8087 core_spid_delay
+  0x8088 core_spid_txlen
+  0x808a core_spid_txaddr
+  0x808c core_spid_rxaddr
+  0x808e core_spid_rxlen
+  0x8090 core_iicd_ctrl
+  0x8091 core_iicd_scl_low
+  0x8092 core_iicd_scl_high
+  0x8093 core_iicd_start_setup
+  0x8094 core_iicd_start_hold
+  0x8095 core_iicd_stop_setup
+  0x8096 core_iicd_data_setup
+  0x8097 core_iicd_data_hold
+  0x8098 core_iicd_txlen
+  0x809a core_iicd_txaddr
+  0x809c core_iicd_rxaddr
+  0x809e core_iicd_rxlen
+  0x80a0 core_pwm_pcnt0
+  0x80a2 core_pwm_ncnt0
+  0x80a4 core_pwm_pcnt1
+  0x80a6 core_pwm_ncnt1
+  0x80b0 core_enc_ctrl
+  0x80b1 core_cvsd_ctrl
+  0x80b2 core_codec_ctrl
+  0x80b3 core_dec_ctrl
+  0x80b4 core_bist_ctrl
+
+
+
+  
+  0x8108 core_misc_status
+  0x8109 core_qdec_cntx
+  0x810a core_qdec_cnty
+  0x810b core_qdec_cntz
+  0x810c core_uart_status
+  0x810d core_uart_rbaud
+  0x810e core_uart_txitems
+  0x8110 core_uart_trptr
+  0x8112 core_uart_rxitems
+  0x8114 core_uart_rdptr
+  0x8116 core_uart_rwptr
+  0x8119 core_kscn_kstat
+  0x811a core_kscn_event
+  0x811b core_kscn_event_num
+  0x811c core_gpio_in
+  0x811d core_gpio_in1
+  0x8124 core_current_otp_addr
+  0x8126 core_otpd_remain
+  0x8128 core_spid_remain
+  0x812a core_iicd_remain
+  0x812c core_dma_status
+  0x812d core_perf_status
+  0x812e core_adc_in
+  0x8134 core_pcminfifo
+  0x8135 core_pcminfifo_remain
+  0x8136 core_pcmoutfifo_remain
+  0x8138 core_lpm_ctrl
+  0x813c core_lpm_xtalcnt
+  0x813d core_lpm_buckcnt
+  0x813e core_lpm_ldocnt
+  0x813f core_lpm_latch
+  0x8140 core_gpio_wakeup_low
+  0x8144 core_gpio_wakeup_high
+  0x8149 core_clk_counter
+  0x8150 core_adc_sum
+// dummy regs  
+
+  0x8203 core_ice_ctrl
+  0x8204 core_ice_status
+  0x8205 core_ice_break0
+  0x8207 core_ice_break1
+  
+  0x8280 core_docd_ctrl
+  0x8288 core_docd_paddr
+  0x828a core_docd_pdata
+
+  0x8300 iic_prer_low		
+  0x8301 iic_slave_addr	
+  0x8302 iic_ctr					
+  0x8303 iic_cr					
+  0x8304 iic_rxr					
+  0x8305 iic_txr					
+  0x8306 iic_sr					
+  0x8307 iic_fifo				
+
+  0x8400   mem_b_box          /* entire bank */
+  0x8500   mem_e_box          /* entire bank */
+  0x8600   mem_l_box          /* entire bank */
+
+  0x8700 memk
+
+  0x8900 rfen_rx
+  0x8901 rfen_tx
+  0x8902 rfen_mdm
+  0x8903 rfen_sn
+  0x8904 rfen_msc
+  0x8905 rfen_ck
+  0x8906 rfen_adc
+  0x8912 rf_agc_ctrl
+  0x8914 rfen_ulp
+  0x8973 rfen_chgpump
+  0x894b rf_rx_vctrl_reg1
+  0x894c rf_rx_vctrl_reg2
+  0x894d rf_rx_ib_lna
+  0x894e rf_rx_lna_ctrim
+
+  0x8950 rf_bpf_ctrim
+  0x8951 rf_bpf_ib
+  0x8952 rf_adc_rccal
+  0x8952 rf_rccal_ctrl
+  0x8953 rf_rccal_sel
+  0x8955 rf_tx_pa
+  0x895f rf_pll_rstn
+  0x8964 rf_sdm_en
+  0x8960 rf_pll_intg
+  0x8961 rf_pll_frac
+  0x8963 rf_pll_frachi
+  0x896c rf_afc_cap
+  0x8967 rf_clkpll_bias
+  0x896f rf_clkpll_en
+  0x8968 rf_clkpll_int
+  0x8969 rf_clkpll_frac
+  0x896d rf_balun_ctrim
+  0x8971 rf_adc_mode
+  0x8972 rf_adc_gc
+  0x8973 rf_adc_ch
+  0x8980 rf_rccal_result
+  0x8981 rf_afc_d2a
+  0x8982 rf_rssi
+
+
+0x8c00 core_usb_config		
+0x8c01 core_usb_int_mask	
+0x8c10 core_usb_trig	
+0x8c11 core_usb_stall		
+0x8c12 core_usb_clear		
+0x8c18 core_usb_ep
+0x8c18 core_usb_dfifo0 
+0x8c19 core_usb_dfifo1  
+0x8c1a core_usb_dfifo2 
+0x8c20 core_usb_ep_len
+0x8c26 core_usb_status		
+0x8c27 core_usb_fifo_empty
+0x8c28 core_usb_fifo_full
+
+
+4 rx_freq_offset
+2 tx_freq_offset
+
+/* bit difinitions */
+  4 whiteoff_bit
+  6 clksel_rc
+  5 clksel_dpll
+  4 clksel_xtal
+  5 adc_rccal
+  0 bpf_rccal
+  1 demod_clkoff
+
+(
+  7 cold_wake
+  3 gpio_latch
+  4 enable_retmem
+  0xef isogate_mask
+  0xe0 cs_mask
+)
+
+// misc ctrl
+(
+  0x01 otpd_start
+  0x02 spid_start
+  0x04 iicd_start
+  0x08 lock_otp
+  0x10 x_sethi
+  0x20 y_sethi
+  0x40 z_sethi
+  0x80 ccnt_start
+)
+// dma status bit
+(
+  0 otpd_crcok
+  1 otpd_done
+  2 spid_crcok
+  3 spid_done
+  4 iicd_crcok
+  5 iicd_done
+)
+
+0x8b uart_ctrl_default //BCSP
+0x81 uart_ctrl_h4 //H4
+0x81 uart_ctrl_normal
+0x91 uart_ctrl_5line
+0x81 uart_ctrl_57600
+2 uart_baud_len
+0x00 uartclk_crystal
+0x01 uartclk_dpll
+0x1a0 uart_baud_115200
+0xbb uart_baud_256000
+0x340 uart_baud_57600
+0x34 uart_baud_921600
+0x9c4 uart_baud_9600
+0x2dc6c00 uart_clk
+0x16E3600 uart_clk_24
+
+//core_clkoff
+(
+	0 CLOCK_OFF_AUTH_ROM
+	1 CLOCK_OFF_UC_ROM
+	2 CLOCK_OFF_DEBUG_UART
+	3 CLOCK_OFF_SCHED_RAM
+	4 CLOCK_OFF_TRANCE_FIFO
+	5 CLOCK_OFF_CORDIC
+	6 CLOCK_OFF_OTPD
+	7 CLOCK_OFF_I2C
+	8 CLICK_OFF_8051
+	9 CLOCK_OFF_KEYSCAN
+	0x0a CLOCK_OFF_USB
+	0x0b CLOCK_OFF_QDECODER
+	0x0c CLOCK_OFF_SPI
+	0x0d CLOCK_OFF_PWM
+	0x0e CLOCK_OFF_CODEC
+	0x0f CLOCK_OFF_UART
+)
+
+
+/*****************************************************************************/
+/* RCS HEADER -- DO NOT ERASE                                                */
+/* $Author: Administrator $                                                           */
+/* $Id: bt_rfcomm_format.upper,v 1.1 2009-09-28 04:06:17 Administrator Exp $ */
+/* Orisil Technology                                                      */
+/*****************************************************************************/
+
+/**********/
+/* memory */
+/**********/
+
+memalloc(
+1 memRemoteRPNBitRate
+1 memRemotePRNDataBits
+1 memRemotePRNStopBit
+1 memRemotePRNParity
+1 memRemotePRNFlowControl
+1 memRemotePRNXon
+1 memRemotePRNXoff
+
+
+3 mem_mod2div_temp
+2 mem_contw_temp
+2 mem_attrib_list
+
+//rfcomm head
+1 mem_current_adss
+1 mem_current_channel
+1 mem_current_frame_type
+1 mem_current_fcs
+2 mem_current_length
+2 mem_rfcomm_uih_payload_ptr
+
+//rfcomm uih
+1 mem_uih_cmd_type
+2 mem_uih_length
+2 mem_param_payload_ptr
+
+
+//rfcomm modem status
+1 mem_ms_param
+
+//rfcomm pn
+1 mem_pn_credit_flow_type_info
+1 mem_pn_priority
+1 mem_pn_acknowledg_timer
+1 mem_pn_max_retrans
+
+1 mem_rfcomm_send_adss
+1 mem_rfcomm_send_frame_type
+1 mem_rfcomm_send_fcs
+1 mem_rfcomm_send_offset
+
+)
+
+xmemalloc(
+1 mem_pn_dlci
+2 mem_pn_max_frame_size
+
+1 memFCStemp1
+1 memFCStemp2
+1 memFCStemp3
+
+1 mem_rfcomm_initiator
+
+1 mem_remote_spp_channel
+
+1 mem_HIUfcs_SPP
+1 mem_HIUfcs_SPP_WCredits
+
+1 mem_rfcomm_send_more_pkt
+
+1 mem_remote_credits
+1 mem_credit_given
+
+//rfcomm modem status
+1 mem_ms_channel
+
+1 mem_credit_flag
+
+2 mem_rfcomm_max_frame_size
+1 mem_rfcomm_credit_init_data
+
+2 mem_cb_receive_spp_data
+
+2 mem_nl_rx_data_src
+2 mem_nl_rx_len_all
+)
+
+
+(
+0 CREDIT_DISABLE
+1 CREDIT_ENABLE
+)
+
+
+/************************************************************************/
+  
+
+ 
+/************/
+/* constant */
+/************/
+
+/* RFCOMM state for Headset (memRFCOMM_State) */ 
+  (
+    0 RFCOMM_IDLE           /* before the responsor HS receive SABM            */
+    1 RFCOMM_W4_DLCI0_OPEN
+    2 RFCOMM_W4_DLCI0_CLOSE
+    3 RFCOMM_START_DLCI0    /* After respond SABM frame (DLCI=0)               */
+    4 RFCOMM_W4_DLCI_OPEN
+    5 RFCOMM_W4_DLCI_CLOSE
+    6 RFCOMM_DLCI_OPENED    
+   
+  )
+  
+/* RFCOMM timer constants   */
+  (
+    1000  RFCOMM_T1         /* Used by SABM and DISC frames,100*20ms = 20s     */     
+    1000  RFCOMM_T2         /* Used by commands send in UIH on DLCI0,          */
+    300   RFCOMM_T3_RINGON  /* 6s for ring fade time                           */
+  
+  )
+
+/* Command Type */
+  (
+    0x3F RSP_RX_SABM        /*responsor expect SABM from initiator             */
+    0x3F INI_TX_SABM
+	
+    0x73 RSP_TX_UA          /*responsor send out UA command                    */
+    0x73 UA_WFBIT_SET	    /* UA control field with F bit set                 */
+	
+    0xEF RSP_RX_UIH         /*responsor expect UIH from initiator              */
+
+    0xEF RSP_TX_UIH         /*responsor send UIH to initiator                  */
+     
+    0x1F RSP_TX_DM          /*responsor send DM to initiator                   */
+    0x1F DM_WFBIT_SET       /* DM control field with F bit set                 */
+    0x0F DM_WFBIT_CLEAR     /* DM control field with F bit clear               */
+
+    0x53 RSP_RX_DISC        /*responsor expect DISC from initiator             */
+    0x53 INI_TX_DISC	    /*initiator send DISC control type command         */
+     
+    0xFF RSP_RX_UIH_WDATA   /*UIH data with credit flow control info           */
+    
+    
+  )
+
+/* Multiplexor commands and responses frames */
+  (
+    0x83 PN_COMMAND           /* Bit 0 EA C/R Type = 000001         */
+    0x81 PN_RESPONSOR         /* Bit 0 EA C/R Type = 000001         */
+    
+    0xE3 MSC_COMMAND          /* Bit 0 EA C/R Type = 000111         */
+    0xE1 MSC_RESPONSOR
+ 
+    0x13 NSC_COMMAND          /* Bit 0 EA C/R Type = 001000         */
+    0x11 NSC_RESPONSOR        /* Bit 0 EA C/R Type = 001000         */
+
+    0x23 TEST_COMMAND         /* Bit 0 EA C/R Type = 000111         */
+    0x21 TEST_RESPONSOR 
+    
+    0x93 RPN_COMMAND          /* Bit 0 EA C/R Type = 001001         */
+    0x91 RPN_RESPONSOR 
+    
+    0x53 RLS_COMMAND          /* Bit 0 EA C/R Type = 001010         */
+    0x51 RLS_RESPONSOR 
+
+    0xA3 FCON_COMMAND         /* Bit 0 EA C/R Type = 000101         */
+    0xA1 FCON_RESPONSOR 
+    
+    0x63 FCOFF_COMMAND        /* Bit 0 EA C/R Type = 000110         */
+    0x61 FCOFF_RESPONSOR 
+    	
+    0x03 RLS_OVERRUN
+    0x05 RLS_PARITY_ERROR
+    0x09 RLS_FRAMING_ERROR
+  )
+
+/* memLocalCredit */
+  (
+    0x01 RFCOMM_CREDIT
+  )
+
+  (
+  	0x007f RFCOMM_MAX_FRAME_SIZE
+  )
+
+/* UIH received Data length */
+  (
+    0  LENGTH_ZERO
+    
+    6  LENGTH_OK
+    7  LENGTH_HOT
+    8  LENGTH_RING
+    9  LENGTH_ERROR
+    9  LENGTH_AGVOL_ONEBYTE
+    10 LENGTH_AGVOL_TWOBYTE
+    10 LENGTH_VOL_ONEBYTE
+    11 LENGTH_VOL_TWOBYTE
+    12 LENGTH_BRSF
+    13 LENGTH_PLUS_CIEV
+    15 LENGTH_INBANDRING
+    14 LENGTH_CIEV_CALL
+    17 LENGTH_CRING
+    20 LENGTH_BRSF_OK
+    24 LENGTH_CIND0
+    28 LENGTH_CIEV_TWO
+    32 LENGTH_CIND_OK
+    59 LENGTH_CIND_OK2
+    100 LENGTH_DISCARD
+  )
+  
+/************/
+/* flags    */
+/************/
+  
+/* memRFCOMM_L2CAP_Interface */
+  (
+    0 RFCOMM_TX_W4BUF_FLAG    /* Wait for Tx buffer empty flag */
+    1 RFCOMM_CLOSE_LINK_FLAG
+  )
+  
+
+    
+/* memRemoteMSC		*/
+  (
+    0 MSC_EA_BIT
+    1 MSC_FC_BIT
+    2 MSC_RTC_BIT
+    3 MSC_RTR_BIT
+    6 MSC_IC_BIT
+    7 MSC_DV_BIT
+  )
+
+/* memRemoteRLS         */
+  (
+    0x0C OVERRUN_ERROR
+    0x0A PARITY_ERROR
+    0x09 FRAMING_RERROR
+  )
+  
+/* memRemoteRPNBitRate  */
+  (
+    0x00 BITS2400
+    0x01 BITS4800
+    0x02 BITS7200
+    0x03 BITS9600
+    0x04 BITS19200
+    0x05 BITS38400
+    0x06 BITS57600
+    0x07 BITS115200
+    0x08 BITS230400
+  )
+  
+/* memRemotePRNDataBits	*/
+  (
+    0x00 DATABITS5
+    0x01 DATABITS6
+    0x02 DATABITS7
+    0x03 DATABITS8
+  )
+  
+/* memRemotePRNStopBit	*/
+  (
+    0    ONESTOP
+    1    ONEHALFSTOP
+  )
+  
+/* memRemotePRNParity   */
+  (
+    0    ODDPARITY
+    1    EVENPARITY
+    2    MARKPARITY
+    3    SPACEPARITY
+    
+    7    PARITY_ENABLE_BIT
+  )
+
+/* RPN bit mask(in)     */
+  (
+     0   BIT_RATE_MASK_BIT
+     1   DATA_BITS_MASK_BIT
+     2   STOP_BITS_MASK_BIT
+     3   PARITY_MASK_BIT
+     4   PARITY_TYPE_MASK_BIT
+     5   XON_CHAR_MASK_BIT
+     6   XOFF_CHAR_MASK_BIT
+  )
+  
+/* RPN bit mask(in) 2    */
+  (
+     0   XON_XOFF_INPUT_MASK_BIT
+     1   XON_XOFF_OUTPUT_MASK_BIT
+     2	 RTR_INPUT_MASK_BIT
+     3   RTR_OUTPUT_MASK_BIT
+     4   RTC_INPUT_MASK_BIT
+     5   RTC_OUTPUT_MASK_BIT
+
+  )
+
+/* memRFCOMM_Request	*/
+  (
+    0 SEND_MSC_CMD_REQ_FLAG
+    1 SEND_AT_CKPD_REQ_FLAG
+    2 SEND_RING_REQ_FLAG
+    3 SEND_SABM_CMD
+  )
+  
+/* memRFCOMM_Misc_Flag  */
+  (
+    0 MSC_CDM_ALREADY_SEND_FLAG
+    1 CREDIT_FLOW_USED_FLAG
+    2 DONT_EMBEDDED_CREDIT_FLAG 
+    3 MSC_EXCHANGE_DONE_FLAG
+    4 FLOW_CONTROL_FCOFF_BIT            /* set when receive FCoff, clear when FCon   */
+  )
+  
+/* memRemoteMSC		*/
+  (
+    1 FLOW_CONTROL_FC_BIT		/* received MSC FC bits                      */
+  
+  )
+/* Address filed        */
+  (
+    0 ADDR_EA_BIT
+    1 ADDR_CR_BIT
+    2 ADDR_D_BIT
+  )
+//should be same as descripted in SDP
+(
+    1 SPP_SLAVE_CHANNEL
+    7 OBEX_SERVER_CHANNEL
+    8 HF_SERVER_CHANNEL 
+    9 HS_SERVER_CHANNEL
+)
+/* memRFCOMM_Flag */
+(
+	0 USING_HF_PROFILE
+	1 USING_HS_PROFILE
+	2 USING_SPP_PROFILE
+)
+/*RFCOMM Frame Type*/
+(
+	0x3f RFCOMM_FRAME_TYPE_SABM
+	0x73 RFCOMM_FRAME_TYPE_UA
+	0xEF RFCOMM_FRAME_TYPE_UIH
+	0xFF RFCOMM_FRAME_TYPE_UIH_CREDITS
+	0x53 RFCOMM_FRAME_TYPE_DISCONN
+)
+/*RFCOMM UIH CMD TYPE*/
+(
+	0x41 UIH_PARAM_NEG_CMD
+	0x40 UIH_PARAM_NEG_RES
+	0x49 UIH_PARAM_CMD_REMOVE_PORT
+	0x71 UIH_MODEM_STATUS_CMD
+	0x70 UIH_MODEM_STATUS_RES
+)
+
+/*bits in rfcomm address*/
+(
+	0 RFCOMM_ADDRESS_EXT_LEN
+	1 RFCOMM_ADDRESS_CR
+	2 RFCOMM_ADDRESS_DERECTION
+
+
+)
+
+	(                                   
+	0 RFCOMM_CHANNEL_STATE_PN_CMD
+	1 RFCOMM_CHANNEL_STATE_PN_RES
+	2 RFCOMM_CHANNEL_STATE_SABM
+	3 RFCOMM_CHANNEL_STATE_UA
+	4 RFCOMM_CHANNEL_STATE_SND_MS_CMD
+	5 RFCOMM_CHANNEL_STATE_RCV_MS_CMD
+	6 RFCOMM_CHANNEL_STATE_SND_MS_RES
+	7 RFCOMM_CHANNEL_STATE_RCV_MS_RES
+	0xff RFCOMM_CHANNEL_SETUP_COMPLETE
+	) 
+
+	/*mem_rfcomm_send_more_pkt*/
+	(
+	1 MORE_PKT_MSC_CMD_HF
+	2 MORE_PKT_MSC_CMD_HS
+	3 MORE_PKT_MSC_CMD_SPP
+	4 MORE_PKT_MSC_CMD_OBEX
+	)
+
+	(
+	127 RFCOMM_MALLOC_SIZE
+	)
+memalloc(
+0 mem_sdp_mem_start
+8 mem_sdp_uuid_search_ptr
+2 mem_sdp_continue_byte
+1 mem_sdp_pduid
+2 mem_sdp_transactionid
+2 mem_sdp_transactionid_local
+2 mem_sdp_attribute_maxbyte
+2 mem_sdp_record_maxcnt
+4 mem_sdp_record_handle
+1 mem_sdp_LACAP_found
+1 mem_sdp_RFCOMM_found
+0 mem_sdp_handle_list
+32 mem_sdp_attrib_list
+2 mem_sdp_error_code
+2 mem_sdp_all_length
+1 mem_handle_humber
+2 mem_search_uuid
+0 mem_sdp_mem_end
+)
+xmemalloc(
+2 mem_ui_uuid_table
+22 mem_all_uuid_16bits
+34 mem_all_uuid_128bits
+2 mem_sdp_l2capch_ptr
+)
+(
+0 AGORHS_SERVICE
+1 GENAUDIO_SERVICE
+2 HANDSFREE_SERVICE
+)
+(
+0 ATTRIBUTEID_0000
+1 ATTRIBUTEID_0001
+2 ATTRIBUTEID_0004
+3 ATTRIBUTEID_0009
+4 ATTRIBUTEID_0100
+5 ATTRIBUTEID_0302
+6 ATTRIBUTEID_0006
+7 ATTRIBUTEID_0311
+)
+/* mem_sdp_search_profile */
+(
+1	SDP_SS_HEADSET
+2  	SDP_SS_HANDSFREE
+)
+(
+0x06 sdp_pduid_serviceSearchAttrib
+)
+0x2600 sdp_max_amount
+767 SDP_MALLOC_SIZE
+0x6e sdp_tid_spp //any number
+
+ 
+
+memalloc(
+/* moved from bt.format for 3dh5 1021bytes packet buffer */
+17 mem_rxbuf
+
+16 mem_random_number
+16 mem_round_key
+16 mem_kinit
+
+16 mem_input_store
+16 mem_x
+15 mem_y
+1 mem_y15
+17 mem_key_store
+1 mem_key_store_end
+2 memp_ar_key
+2 memp_ar_input
+10 mem_ar_hround
+
+
+1 mem_ec_infinite
+2 mem_ec_loopc
+1 mem_aes_cmac_data_length
+
+0 memdat
+/* ecc calculation */
+
+24 mem_ax
+24  mem_ay
+24  mem_az
+24 mem_bx
+0 mem_ax_256 //32 bytes
+24 mem_by
+8 mem_bz
+16 mem_ay_256 // 32 bytes
+16 mem_cx
+8 mem_az_256 // 32 bytes
+23 mem_cy
+1 mem_cy5
+0 mem_bx_256 // 32 bytes
+24 mem_cz
+8  mem_k
+16 mem_by_256 // 31 bytes
+16 mem_align
+
+0 mem_bz_256  //32 bytes
+0 mem_tmp1
+24 memahbak
+8 mem_tmp5
+0 mem_cx_256  //32 bytes
+16 memahsave
+16  mem_tmp2
+0 mem_cy_256  // 32 bytes
+0  memahsave_end 
+1  mem_addr_padding 
+7   mem_addr_value         /* 12 bytes     */ 
+0 mem_tmp3
+5 mem_t1
+3  mem_addr_value_end   
+15 mem_addr_iocap_end
+1 mem_cy5_256 // 1 byte
+0 mem_cz_256 // 32 bytes
+0 mem_tmp0
+8 mem_t0
+16 mem_tmp0a
+8  mem_t2
+16 mem_k_256 //32 bytes
+16 mem_t3
+8  mem_tmp1_256 //32 bytes
+24 mem_t7
+
+
+32 mem_tmp5_256
+32  mem_tmp2_256
+0 mem_tmp3_256
+32 mem_t1_256
+0 mem_tmp0_256
+32 mem_t0_256
+32 mem_t2_256
+32 mem_t3_256
+32 mem_t7_256
+
+24 mem_p		
+24 mem_a
+24 mem_b
+24 mem_gx
+24 mem_gy
+32 memh0
+
+//p256
+//2 mem_ec_loopc_256
+//32 mem_ax_256
+//32 mem_ay_256
+//32 mem_az_256
+//32 mem_bx_256
+//32 mem_by_256
+//32 mem_bz_256
+//32 mem_cx_256
+//31 mem_cy_256
+//1 mem_cy5_256
+//32 mem_cz_256
+//32 mem_k_256
+
+
+//32 mem_tmp1_256
+//32 mem_tmp5_256
+//32  mem_tmp2_256
+
+//0 mem_tmp3_256
+//32 mem_t1_256
+//0 mem_tmp0_256
+//32 mem_t0_256
+//32 mem_t2_256
+//32 mem_t3_256
+//32 mem_t7_256
+
+32 mem_p_256		
+32 mem_a_256
+32 mem_gx_256
+32 mem_gy_256
+//4 mem_le_keyid
+16 mem_le_slat
+
+
+//64 mem_regext
+//1 mem_regext_index
+
+//16 mem_le_mackey
+
+
+//1 mem_AES_CMAC_flag
+//16 mem_AES_CMAC_temp
+//16 mem_AES_CMAC_M_last
+
+//4 mem_le_gkey
+
+//16 mem_le_r
+
+)
+
+(
+0 PAIR_UNKNOWN
+1 PAIR_ING
+2 PAIR_DONE
+)
+
+(
+0x18 ATT_WRITE_REQUEST_HANDLE
+)
+
+(
+0x13	HANDLE_VOLUM_UP_KEY	
+0x17	HANDLE_ENTER_KEY
+)
+	
+(
+0x010210 param_smp_key_dist1
+0x010010 param_smp_key_dist2
+)
+
+(
+0 INITATOR_LTK
+1 INITATOR_IRK
+2 INITATOR_CSRK
+)
+
+(
+//100ms
+0x00a0	FAST_ADV_INTERVAL_VALUE
+//200ms
+0x0140	SLOW_ADV_INTERVAL_VALUE
+)
+
+(
+0x01	GAP_ADTYPE_FLAGS
+0x02	GAP_ADTYPE_16BIT_MORE
+0x03	GAP_ADTYPE_16BIT_COMPLETE
+0x04	GAP_ADTYPE_32BIT_MORE
+0x05	GAP_ADTYPE_32BIT_COMPLETE
+0x06	GAP_ADTYPE_128BIT_MORE
+0x07	GAP_ADTYPE_128BIT_COMPLETE
+0x08	GAP_ADTYPE_LOCAL_NAME_SHORT
+0x09	GAP_ADTYPE_LOCAL_NAME_COMPLETE
+0x0a	GAP_ADTYPE_POWER_LEVEL
+0xff	GAP_ADTYPE_MANUFACTURER_SPECIFIC
+)
+
+(
+0 ATT_BIT_NOTIFICATION
+1 ATT_BIT_INDICATION
+)
+///////////////////////////////////////////////////////////////////////////////////////
+(
+13 MAX_SHUTER_KEY_NUM
+4  MAX_SHUTTER_LED_NUM
+0xFF INVALID_PIN_NUM
+)
+(
+0 KEY_DEFAULT
+1 kEY_1
+2 kEY_2
+3 KEY_3
+4 KEY_4
+)
+(
+0 HARD_SWITCH
+1 SOFT_SWITCH
+)
+(
+0 LED_OFF
+1 LED_ON
+2 LED_BLINK
+0xFF LED_INVALID
+)
+
+/*struct led_style*/
+(
+7 LED_STYLE_STRUCT_LEN
+0 LED_TYPE_OFFSET
+1 LED_PIN_OFFSET
+2 LED_ON_TIME_OFFSET
+4 LED_OFF_TIME_OFFSET
+6 LED_BLINK_COUNT_OFFSET
+)
+
+/*struct key_conf*/
+(
+2 KEY_CONF_STRUCT_LEN
+0 KEY_PIN_OFFSET
+1 KEY_STYLE_IND_OFFSET
+)
+
+(
+0 SHUTTER_POWER_UP
+1 SHUTTER_POWER_ON
+2 SHUTTER_POWER_OFF
+)
+
+(
+0x5907 le_parse_att0
+0x5666 le_prepare_att0
+0x7c67 check_51cmd_once0
+)
+
+
+(
+0xf00 EEP_LAP_ADDR
+)
+
+(
+0x33 PAIRED_DEVICE_TYPE_BT
+0x44 PAIRED_DEVICE_TYPE_BLE
+5 PAIRED_DEVICE_DEFAULT_LEN
+0x5a5a PAIRED_DEVICE_MAGIC
+)
+
+(
+0 FLAG_SHUTTER_DEFAULT
+1 FLAG_SHUTTER_IPHONEKEY_SEND
+2 FLAG_SHUTTER_ANDROIDKEY_SEND
+)
+
+(
+0 FLAG_SHUTTER_IPHONEKEY_PRESS
+1 FLAG_SHUTTER_ANDROIDKEY_PRESS
+)
+
+(
+1  FLAG_SHUTTER_HID_DISCONN_TIMEOUT
+5 FLAG_SHUTTER_CABLE_UNPLUG_TIMEOUT
+)
+
+(
+1 FLAG_SHUTTER_1KEY
+2 FLAG_SHUTTER_2KEY
+)
+
+(
+0 FLAG_SHUTTER_1KEY_SEND_NULL
+1 FLAG_SHUTTER_1KEY_SEND_STEP1
+2 FLAG_SHUTTER_1KEY_SEND_STEP2
+3 FLAG_SHUTTER_1KEY_SEND_STEP3
+4 FLAG_SHUTTER_1KEY_SEND_STEP4
+)
+
+
+//mem_shutter_find_type_value_flag
+(
+0X00 LE_FIND_TYPE_VALUE_HID_BIT
+0X01 LE_FIND_TYPE_VALUE_BATTERY_BIT
+0X02 LE_FIND_TYPE_VALUE_DEVICE_INFO_BIT
+0x03 LE_FIND_TYPE_VALUE_GATT_BIT
+)
+
+(
+//20ms
+0x0020	FAST_ADV_INTERVAL_VALUE_PATCH
+)
+
+(
+50 TIMEOUT_DISCONNECT_TIMER
+)
+
+/* simple pairing page */
+
+memalloc(
+
+//4 mem_hci_ssp_mode
+0 mem_sp_state_start
+1 mem_sp_state
+1 mem_master_sp_state
+1 mem_sp_flag
+1 mem_master_sp_flag
+1 mem_sp_calc
+1 mem_sp_dh_ready
+1 mem_sp_localsm
+1 mem_pairing_auth
+
+0 mem_sp_flag_start
+1 mem_sp_local_key_send_count
+1 mem_sp_remote_key_recv_count
+1 mem_sp_remote_key_invalid
+1 mem_sp_dhkey_invalid
+
+
+4 mem_gkey
+
+
+8 mem_le_pubkey_remote_x_256
+0 mem_sp_pubkey_remote
+24 mem_sp_pubkey_remote_x
+0 mem_sp_pubkey_remote_x_end
+8 mem_le_pubkey_remote_y_256
+24 mem_sp_pubkey_remote_y
+
+8 mem_le_dhkey_256
+24 mem_sp_dhkey
+0 mem_sp_dhkey_end
+
+16 mem_sp_random_local
+0 mem_sp_random_local_end
+16 mem_sp_random_remote
+0 mem_sp_random_remote_end
+0 memresult
+0 mem_sp_calc_result
+4 memh
+4 memg
+4 memf
+4 meme
+0 mem_sp_calc_result_high
+4 memd
+4 memc
+4 memb
+4 mema
+16 mem_sp_check_result
+16 mem_sp_confirm_remote
+16 mem_sp_prarm_stack
+)
+
+xmemalloc(
+1 mem_sp_local_key_invalid
+
+
+32 mem_le_private_key_256
+32 mem_le_pubkey_local_x_256
+32 mem_le_pubkey_local_y_256
+
+24 mem_sp_private_key
+0 mem_sp_pubkey_local
+24 mem_sp_pubkey_local_x
+0 mem_sp_pubkey_local_x_end
+24 mem_sp_pubkey_local_y
+
+1 mem_ssp_enable
+3 mem_sp_iocap_local
+3 mem_sp_iocap_remote
+
+1 mem_flag_mode_ssp_pin
+1 mem_ssp_mode_flag
+1 mem_authentication_passkey_times
+1 mem_passkey_1bit
+1 mem_flag_pairing_state
+
+)
+/* simple pairing status flag */
+(
+  0x00   SP_FLAG_STANDBY
+  0x01   SP_FLAG_COMMIT
+  0x02   LE_SP_FLAG_COMMIT_256
+
+)
+
+/* simple pairing calc flag */
+(
+  0x00   SP_CALC_STANDBY
+  0x01   SP_CALC_PUBKEY
+  0x02   SP_CALC_DHKEY
+  0x03   SP_CALC_PUBKEY_256
+  0x04   SP_CALC_DHKEY_256
+)
+
+/* simple pairing state */
+(
+  0x00   SP_STAT_NULL
+  0x01   SP_STAT_KEY_RECV
+  0x02   SP_STAT_KEY_GENERATE
+  0x03   SP_STAT_KEY_SEND
+  0x04   SP_STAT_COMMIT_CALC
+  0x05   SP_STAT_COMMIT_SEND
+  0x06   SP_STAT_RANDOM_RECV
+  0x07   SP_STAT_RANDOM_SEND
+  0x08   SP_STAT_CONFIRM_RECV
+  0x09   SP_STAT_CONFIRM_CHECK
+  0x0A   SP_STAT_CONFIRM_CALC
+  0x0B   SP_STAT_CONFIRM_SEND
+  0x0C   SP_STAT_LINK_KEY_CALC
+  0x0F   SP_STAT_DONE
+  0x10   SP_STAT_FEATURE_EXT_SEND
+  0x11   SP_STAT_GKEY_CALC
+  /*simple pairing master only*/
+  0x12   SP_MASTER_STAT_START_SKIP
+  0x13   SP_MASTER_STAT_START_DONE
+  0x14   SP_STAT_COMMITMENT_COMPARE
+  0x15   SP_STATE_END
+)
+
+
+/* simple paring invalid flag */
+(
+  0x00   SP_KEY_INVALID
+  0x01   SP_KEY_VALID
+  0x03   SP_KEY_VALID_256
+
+)
+
+/* encapsulated defination for P-192 key */
+(
+  0x01  ENCAPSULATED_MAJOR_TYPE_P192
+  0x01  ENCAPSULATED_MINOR_TYPE_P192
+  0x30  ENCAPSULATED_LEN_P192
+)
+
+/* bluetooth 2.1 support flag */
+(
+  0x00  SIMPLE_PAIRING_ENABLE
+  0x01  ENCRYPTION_PAUSE_ENABLE
+  0x02  EXTENDED_INQUIRY_RESPOSE_ENABLE
+  0x03  SNIFF_SUBRATING_ENABLE
+)
+
+/*mem_sp_localsm*/
+(
+  0x00 DEFAULT_STATEMACHINE
+  0x01 LOCAL_STATEMACHINE
+)
+
+(
+ 0x00 DEFALT_PAIRING_AUTH
+ 0x01 PAIRING_AUTH
+)
+
+(
+1 SSP_MODE_SSP_PIN_FLAG
+2 SSP_MODE_PASSKEY_ENTRY_FLAG
+3 SSP_MODE_JUST_WORK_FLAG
+)
+
+(//ssp mode
+0x040003 SSP_MODE_JUST_WORK_IO_CAP_DATA
+0X040001 SSP_MODE_SSP_PIN_IO_CAP_DATA
+0X040002 SSP_MODE_PASSKEY_IO_CAP_DATA
+)
+
+(
+0x00 DISPLAY_ONLY
+0x01 DISPLAY_YESNO
+0x02 KEYBOARD_ONLY
+0x03 NO_INPUT_NO_OUTPUT
+)
+
+(
+7 FLAG_MODE_SSP_PIN_REVICEVE_COMPARISON_BIT
+6 FLAG_MODE_SSP_PIN_RECIEVE_DHKEY_BIT
+0 FLAG_MODE_SSP_PIN_COMPARISON_RESULT_BIT
+)
+(
+1 FLAG_PAIRING_STATE_PAIRING
+0 FLAG_PAIRING_STATE_NOT_PAIRING
+)
+
+  
+/*****************************************************************************/
+/* RCS HEADER -- DO NOT ERASE                                                */
+/* $Author: Administrator $                                                           */
+/* $Id: bt_ui_format.upper,v 1.1 2009-09-28 04:06:17 Administrator Exp $     */
+/************************************************************************/
+
+
+	/* ========= memory ============== */
+memalloc(
+2 mem_UI_data_txbuff_length
+
+1 mem_ipc_skip_continue_proc
+0 mem_ui_timer_temp  //length 4
+4 mem_ipc_rega_temp
+) 
+
+xmemalloc(
+//UI Work area
+1 mem_ipc_lock_bt
+1 mem_ipc_lock_c51
+8 mem_ipc_fifo_bt2c51
+8 mem_ipc_fifo_c512bt
+1 mem_ui_button_timer
+1 mem_ui_button_last_state
+4 mem_ui_timer_last_btclk
+2 mem_discovery_timeout_timer_count
+1 mem_hid_handshake_timer_count
+1 memui_reconnect_mode
+2 mem_ui_state_map
+
+//UI Config area
+1 mem_ui_profile_supported
+1 mem_ui_button_timeout
+1 mem_ui_button_gpio
+2 mem_discovery_timeout
+1 mem_pin_length
+16 mem_pin
+
+)
+/************/
+/* constant */
+/************/
+
+//mem_ui_state_map
+(
+0 UI_STATE_BT_CONNECTED
+1 UI_STATE_BT_SETUP_COMPLETE
+2 UI_STATE_BT_HID_CONN
+3 UI_STATE_BT_HID_HANDSHAKE
+4 UI_STATE_BT_SPP_CONN
+5 UI_STATE_BT_SNIFF
+6 UI_STATE_BT_DISCOVERY
+7 UI_STATE_BT_RECONNECT
+8 UI_STATE_BT_SLAVE_ROLE
+9 UI_STATE_BLE_CONNECTED
+10 UI_STATE_BLE_WRITE_RCV
+11 UI_STATE_BLE_ADV
+12 UI_STATE_BTN_DOWN
+13 UI_STATE_LED_BLINK
+14 UI_STATE_LED_ON
+)
+(
+0xFF LED_FLASH_INFINITE
+)
+
+(
+1 UI_STATE_SPP_NL_AUTO_DISCOVER
+
+)
+
+/* UI state for Headset (memui_HS_State) */ 
+   (
+    0 UI_HEADSET_DISCONNECT
+    1 UI_HEADSET_IDLE                   /* before the responsor HS receive SABM      */
+    2 UI_HEADSET_W4CONNECT
+    3 UI_HEADSET_RINGING
+    4 UI_HEADSET_CONNECTED
+    5 UI_HEADSET_PARING
+  )
+/* memui_BB_State */
+(
+  0 UI_BB_OFF
+  1 UI_BB_IDLE
+  2 UI_BB_DISCOVERY
+  3 UI_BB_CONNECTED_ACTIVE_NO_SCO
+  4 UI_BB_CONNECTED_ACTIVE_WITH_SCO
+  5 UI_BB_CONNECTED_ACTIVE_WAIT_SNIFF
+  6 UI_BB_CONNECTED_SNIFF
+  7 UI_BB_RECONNECT
+  8 UI_BB_CONNECTED_SNIFF_WITH_SCO
+)
+
+/************/
+/* flags    */
+/************/
+  
+/* memui_Misc_Flags */
+  (
+    5 NO_IDLE_TURN_OFF
+    7 ANSWER_RING_FLAG               /* 1 Answer,0 no*/
+  )
+
+/* mem_UI_SCH_Interface */
+  (
+    0  UI_HS_PAIRING 
+    2  UI_REQ_CLOSE_RFCOMM
+    3  UI_LINK_LOST
+    4  UI_REQ_OPEN_SCO
+    6  UI_REQ_CLOSE_SCO
+  )
+  
+/* memui_PassOverKey */
+  (
+    0  ANSWER_RING_BIT
+    0  AG_SEND_RING_BIT
+    1  VOL_UP_BIT
+    2  VOL_DOWN_BIT
+    3  INI_CALL_BIT
+    4  DAIL_LAST_CALL
+    5  END_CALL_BIT
+    6  NOKIA_VOICE_ACTIVE 
+    7  REJECT_CALL_BIT
+  )
+  
+/* memui_reconnect_mode */
+(
+  0 NO_RECONNECTION
+  1 RECONNECT_HID
+  2 RECONNECT_HF
+  3 RECONNECT_HS
+  4 RECONNECT_HID_HF
+  5 RECONNECT_HID_HS
+)
+/* memui_Commands */
+(
+0 BT_CMD_STANDBY
+1 BT_CMD_START_DISCOVERY
+2 BT_CMD_STOP_DISCOVERY
+3 BT_CMD_RECONNECT
+4 BT_CMD_DISCONNECT
+5 BT_CMD_ENTER_SNIFF
+6 BT_CMD_EXIT_SNIFF
+7 BT_CMD_ENTER_SNIFF_SUBRATING
+8 BT_CMD_EXIT_SNIFF_SUBRATING
+9 BT_CMD_SNIFF_TEST
+10 BT_CMD_SET_PIN_CODE
+11 BT_CMD_START_INQUIRY
+12 BT_CMD_STOP_INQUIRY
+13 BT_CMD_START_ADV
+14 BT_CMD_STOP_ADV
+15 BT_CMD_START_DIRECT_ADV
+16 BT_CMD_STOP_DIRECT_ADV
+17 BT_CMD_LE_DISCONNECT
+18 BT_CMD_LE_UPDATE_CONN
+19 BT_CMD_LED_OFF
+20 BT_CMD_LED_ON
+21 BT_CMD_LED_BLINK
+22 BT_CMD_LE_START_CONN
+23 BT_CMD_LE_START_SCAN
+24 BT_CMD_LE_STOP_SCAN
+25 BT_CMD_ENTER_HIBERNATE
+27 BT_CMD_LE_SMP_SECURITY_REQUEST
+28 BT_CMD_LE_START_WRITE
+29 BT_CMD_ROLE_SWITCH
+30 BT_CMD_BB_RECONN_CANCEL
+31 BT_CMD_STORE_RECONN_INFO_LE
+32 BT_CMD_STORE_RECONN_INFO_BT
+33 BT_CMD_DHKEY_NOT_ACCEPT
+34 BT_CMD_START_24G
+35 BT_CMD_STOP_24G
+36 BT_CMD_PAIR_24G
+)
+
+(
+0x00 BT_EVT_NULL
+0x01 BT_EVT_BB_CONNECTED
+0x02 BT_EVT_BB_DISCONNECTED
+0x03 BT_EVT_RECONN_STARTED
+0x04 BT_EVT_RECONN_FAILED
+0x05 BT_EVT_SETUP_COMPLETE
+0x06 BT_EVT_HID_CONNECTED
+0x07 BT_EVT_HID_DISCONNECTED
+0x08 BT_EVT_SPP_CONNECTED
+0x09 BT_EVT_SPP_DISCONNECTED
+0x0A BT_EVT_PINCODE_REQ
+0x0B BT_EVT_ENTER_SNIFF
+0x0C BT_EVT_EXIT_SNIFF
+0x0D BT_EVT_ENTER_SNIFF_SUB
+0x0E BT_EVT_EXIT_SNIFF_SUB
+0x0F BT_EVT_DISCOVERY_STOPED
+0x10 BT_EVT_BUTTON_LONG_PRESSED
+0x12 BT_EVT_HID_HANDSHAKE
+0X13 BT_EVT_RECONN_PAGE_TIMEOUT
+0x14 BT_EVT_LE_CONNECTED
+0X15 BT_EVT_LE_DISCONNECTED
+0x16 BT_EVT_ML2CAP_CONN_REFUSED
+0x17 BT_EVT_BUTTON_ENTER_HIBERNATE
+0x18 BT_EVT_LINKKEY_GENERATE
+0x19 BT_EVT_SWITCH_NOT_ACCEPT
+0x20 BT_EVT_SWITCH_ACCEPT
+0x21 BT_EVT_SNIFF_NOT_ACCEPT
+0x22 BT_EVT_SNIFF_ACCEPT
+0x23 BT_EVT_UNSNIFF_ACCEPT
+0x24 BT_EVT_UNSNIFF_NOT_ACCEPT
+0x25 BT_EVT_BUTTON_ADJUST_DPI
+0x26 BT_EVT_SEND_UNSNIFF_ACCEPT
+0x27 BT_EVT_VIRTUAL_CABLE_UNPLUG
+0x28 BT_EVT_LE_WRITE_REQUEST
+0x29 BT_EVT_LE_ENC_INFO
+0x2a BT_EVT_SWITCH_FAIL_MASTER
+0x2b BT_EVT_SWITCH_SUCCESS_MASTER
+0x2c BT_EVT_BUTTON_DOWN
+0x2d BT_EVT_BUTTON_UP
+0x2e BT_EVT_REMOTE_UNSNIFF
+0x30 BT_EVT_LE_PAIRING_FAIL
+0x31 BT_EVT_LE_PAIRING_SUCCESS
+0x32 BT_EVT_LE_START_ENC
+0X33 BT_EVT_LE_PAUSE_ENC
+0X34 BT_EVT_LE_TK_GENERATE
+0x35 BT_EVT_BT_GKEY_GENERATE
+0x36 BT_EVT_BT_GET_PASSKEY
+0x37 BT_EVT_BT_PAIRING_FAIL
+0x38 BT_EVT_BT_PAIRING_SUCCESS
+0x39 BT_EVT_24G_PAIRING_COMPLETE
+0x3a BT_EVT_24G_ATTEMPT_FAIL
+0x3b BT_EVT_LE_GKEY_GENERATE
+0x3c BT_EVT_24G_ATTEMPT_SUCCESS
+0x3d BT_EVT_STORE_NVRAM
+0x3e BT_EVT_LE_PAIRING_COMPLETE
+0x3F BT_EVT_LE_RECONNECT_COMPLETE
+0x40 BT_EVT_LE_PARSE_CONN_PAPA_UPDATE_RSP
+0x41 BT_EVT_LE_LTK_LOST
+
+0x50 BT_EVT_TIMER_INIT
+0xF0 BT_EVT_TIMER_MASK
+0x51 BT_EVT_TIMER_100MS
+0x52 BT_EVT_TIMER_200MS
+0x53 BT_EVT_TIMER_300MS
+0x54 BT_EVT_TIMER_400MS
+0x55 BT_EVT_TIMER_500MS
+0x56 BT_EVT_TIMER_600MS
+0x57 BT_EVT_TIMER_700MS
+0x58 BT_EVT_TIMER_800MS
+0x59 BT_EVT_TIMER_900MS
+0x5A BT_EVT_TIMER_1KMS
+0x5B BT_EVT_TIMER_1K1MS
+0x5C BT_EVT_TIMER_1K2MS
+0x5D BT_EVT_TIMER_1K3MS
+0x5E BT_EVT_TIMER_1K4MS
+0x5F BT_EVT_TIMER_1K5MS
+)
+//switch
+(
+0 OFF
+1 ON
+)
+/* memui_mem_lock */
+(
+    0 MEM_UNLOCK
+    1 MEM_LOCK
+)
+/* memui_flag0 */
+(
+    0 UI_USER_DATA_FLAG
+    1 UI_WII_WAITING_SLEEP
+    2 UI_KEYBOARD_SNIFF_SKIP
+)
+/* mem_master_type */
+(
+    0 MTYPE_HID_DEFAULT
+    1 MTYPE_HID_SSP
+    2 MTYPE_SPP
+)
+
+	(	
+	0x01 RECIEVE_SDP_CONN_RES
+	0x02 RECIEVE_SDP_CFG_REQ
+	0x03 RECIEVE_SDP_CFG_RES
+	0x04 RECIEVE_RFCOMM_CONN_RES
+	0x05 RECIEVE_RFCOMM_CFG_REQ
+	0x06 RECIEVE_RFCOMM_CFG_RES
+	0x07 RECIEVE_HID_CTRL_CONN_RES
+	0x08 RECIEVE_HID_CTRL_CFG_REQ
+	0x09 RECIEVE_HID_CTRL_CFG_RES
+	0x0A RECIEVE_HID_INT_CONN_RES
+	0x0B RECIEVE_HID_INT_CFG_REQ
+	0x0C RECIEVE_HID_INT_CFG_RES
+	0x0D RECIEVE_AVCTP_CONN_RES
+	0x0E RECIEVE_AVCTP_CFG_REQ
+	0x0F RECIEVE_AVCTP_CFG_RES
+	0x10 RECIEVE_AVDTP_SIGNAL_CONN_RES
+	0x11 RECIEVE_AVDTP_SIGNAL_CFG_REQ
+	0x12 RECIEVE_AVDTP_SIGNAL_CFG_RES
+	0x13 RECIEVE_AVDTP_MEDIA_CONN_RES
+	0x14 RECIEVE_AVDTP_MEDIA_CFG_REQ
+	0x15 RECIEVE_AVDTP_MEDIA_CFG_RES
+	0x16 RECIEVE_SS_REASULT_HS                  
+	0x17 RECIEVE_SS_REASULT_HF                  
+	0x18 RECIEVE_SS_REASULT_AVTARG		          
+	0x19 RECIEVE_SS_REASULT_OBEX		            
+	0x1A RECIEVE_DLCI0_UA
+	0x1B RECIEVE_HS_PARAM_NEG_RES
+	0x1C RECIEVE_HS_UA
+	0x1D RECIEVE_HS_MODEM_STATUS_RES
+	0x1E RECIEVE_HS_MODEm_STATUS_CMD
+	0x1F RECIEVE_HF_PARAM_NEG_RES   
+	0x20 RECIEVE_HF_UA              
+	0x21 RECIEVE_HF_MODEM_STATUS_RES
+	0x22 RECIEVE_HF_MODEm_STATUS_CMD 
+	0x23 RECIEVE_OBEX_PARAM_NEG_RES     
+	0x24 RECIEVE_OBEX_UA              
+	0x25 RECIEVE_OBEX_MODEM_STATUS_RES
+	0x26 RECIEVE_OBEX_MODEm_STATUS_CMD    
+	0x27 RECIEVE_SPP_PARAM_NEG_RES   
+	0x28 RECIEVE_SPP_UA              
+	0x29 RECIEVE_SPP_MODEM_STATUS_RES
+	0x2A RECIEVE_SPP_MODEm_STATUS_CMD
+	0x2b RECIEVE_SDP_DISCONN_RES
+	)
+
+
+
+	(
+	0 UPPERSM_RP_IDLE
+	1 UPPERSM_RP_SDP_CONN
+	2 UPPERSM_RP_SDP_CONN_WAIT
+	3 UPPERSM_RP_SDP_CFG
+	4 UPPERSM_RP_SDP_CFG_WAIT
+	5 UPPERSM_RP_SS_AVTARG
+	6 UPPERSM_RP_SS_AVTARG_WAIT
+	7 UPPERSM_RP_SS_OBEX
+	8 UPPERSM_RP_SS_OBEX_WAIT
+	9 UPPERSM_RP_SDP_DISCONN
+	10 UPPERSM_RP_SDP_DISCONN_WAIT
+	11 UPPERSM_RP_AVDTP_CONN_WAIT
+	12 UPPERSM_RP_AVCTP_CONN
+	13 UPPERSM_RP_AVCTP_CONN_WAIT
+	14 UPPERSM_RP_AVCTP_CFG
+	15 UPPERSM_RP_AVCTP_CFG_WAIT
+	16 UPPERSM_RP_OBEX_CMD_PN
+	17 UPPERSM_RP_OBEX_CMD_PN_WAIT
+	18 UPPERSM_RP_OBEX_SABM
+	19 UPPERSM_RP_OBEX_SABM_WAIT
+	20 UPPERSM_RP_OBEX_CMD_MS
+	21 UPPERSM_RP_OBEX_CMD_MS_WAIT
+	)
+	(		/*mem_upper_sm_reconn*/
+	0 UPPERSM_RECONN_IDLE		
+	1 UPPERSM_RECONN_SDP_CONN		
+	2 UPPERSM_RECONN_SDP_CONN_WAIT		
+	3 UPPERSM_RECONN_SDP_CFG		
+	4 UPPERSM_RECONN_SDP_CFG_WAIT		
+	5 UPPERSM_RECONN_SS_HS
+	6 UPPERSM_RECONN_SS_HS_WAIT
+	7 UPPERSM_RECONN_SS_HF
+	8 UPPERSM_RECONN_SS_HF_WAIT
+	9 UPPERSM_RECONN_SS_AVTARG		
+	10 UPPERSM_RECONN_SS_AVTARG_WAIT		    
+	11 UPPERSM_RECONN_SS_OBEX		            
+	12 UPPERSM_RECONN_SS_OBEX_WAIT		      
+	13 UPPERSM_RECONN_SDP_DISCONN		        
+	14 UPPERSM_RECONN_SDP_DISCONN_WAIT      
+	15 UPPERSM_RECONN_HID_CTRL_CONN		      
+	16 UPPERSM_RECONN_HID_CTRL_CONN_WAIT		
+	17 UPPERSM_RECONN_HID_CTRL_CFG		      
+	18 UPPERSM_RECONN_HID_CTRL_CFG_WAIT     
+	19 UPPERSM_RECONN_HID_INT_CONN		      
+	20 UPPERSM_RECONN_HID_INT_CONN_WAIT		  
+	21 UPPERSM_RECONN_HID_INT_CFG		        
+	22 UPPERSM_RECONN_HID_INT_CFG_WAIT      
+	23 UPPERSM_RECONN_RFCOMM_CONN		        
+	24 UPPERSM_RECONN_RFCOMM_CONN_WAIT		  
+	25 UPPERSM_RECONN_RFCOMM_CFG		        
+	26 UPPERSM_RECONN_RFCOMM_CFG_WAIT       
+	27 UPPERSM_RECONN_RFCOMM_SABM		        
+	28 UPPERSM_RECONN_RFCOMM_SABM_WAIT		  
+	29 UPPERSM_RECONN_SPP_CMD_PN		        
+	30 UPPERSM_RECONN_SPP_CMD_PN_WAIT		    
+	31 UPPERSM_RECONN_SPP_SABM		          
+	32 UPPERSM_RECONN_SPP_SABM_WAIT		      
+	33 UPPERSM_RECONN_SPP_CMD_MS		        
+	34 UPPERSM_RECONN_SPP_CMD_MS_WAIT       
+	35 UPPERSM_RECONN_HF_CMD_PN		          
+	36 UPPERSM_RECONN_HF_CMD_PN_WAIT		    
+	37 UPPERSM_RECONN_HF_SABM		            
+	38 UPPERSM_RECONN_HF_SABM_WAIT		      
+	39 UPPERSM_RECONN_HF_CMD_MS		          
+	40 UPPERSM_RECONN_HF_CMD_MS_WAIT        
+	41 UPPERSM_RECONN_AVDTPs_CONN		        
+	42 UPPERSM_RECONN_AVDTPs_CONN_WAIT		  
+	43 UPPERSM_RECONN_AVDTPs_CFG		        
+	44 UPPERSM_RECONN_AVDTPs_CFG_WAIT       
+	45 UPPERSM_RECONN_AVDTPm_CONN		        
+	46 UPPERSM_RECONN_AVDTPm_CONN_WAIT		  
+	47 UPPERSM_RECONN_AVDTPm_CFG		        
+	48 UPPERSM_RECONN_AVDTPm_CFG_WAIT       
+	49 UPPERSM_RECONN_AVCTP_CONN		        
+	50 UPPERSM_RECONN_AVCTP_CONN_WAIT		    
+	51 UPPERSM_RECONN_AVCTP_CFG		          
+	52 UPPERSM_RECONN_AVCTP_CFG_WAIT		    
+	53 UPPERSM_RECONN_OBEX_CMD_PN		        
+	54 UPPERSM_RECONN_OBEX_CMD_PN_WAIT		  
+	55 UPPERSM_RECONN_OBEX_SABM		          
+	56 UPPERSM_RECONN_OBEX_SABM_WAIT		    
+	57 UPPERSM_RECONN_OBEX_CMD_MS		        
+	58 UPPERSM_RECONN_OBEX_CMD_MS_WAIT     
+	59 UPPERSM_RECONN_SS_SPP
+	60 UPPERSM_RECONN_SS_SPP_WAIT
+	)
+	(/*mem_UI_profile_supported*/
+	0 support_HID
+	1 support_A2DP
+	2 support_AVRCP
+	3 support_HF
+	4 support_HS
+	5 support_PBAP
+	6 support_SPP
+	)
+	/*mem_upper_sm_ss*/
+	(
+	0 UPPERSM_SS_HS
+	1 UPPERSM_SS_HF
+	2 UPPERSM_SS_AVTARG
+	3 UPPERSM_SS_OBEX
+	)
+
+	(
+	160 UI_HUNDRED_MILLISECOND_TIME
+	0XFF UI_BUTTON_GPIO_DISABLE
+	)
+	(
+	0x01 UI_BB_INCONNECT
+	0x10 UI_BB_DISCONNECT
+	)
+(
+0x00 UI_BUTTON_STATE_DOWN
+0x01 UI_BUTTON_STATE_UP
+)
+
+//mem_ipc_skip_continue_proc
+(
+	0 IPC_CONTINUE_PROCESS
+	1 IPC_SKIP_CONTINUE_PROCESS
+)
+
+omemalloc(
+// memblock for cover the variables portion at shutter.format
+2 mem_antl_lpm_interval
+2 mem_antl_adv_interval
+2 mem_antl_slow_adv_lpm_interval
+2 mem_antl_slow_adv_adv_interval
+0 mem_antl_led_style
+1 mem_antl_led_type
+1 mem_antl_led_blink_count
+1 mem_antl_led_gpio
+2 mem_antl_led_on_time
+2 mem_antl_led_off_time
+2 mem_antl_led_cb_on
+2 mem_antl_led_cb_off
+
+0 mem_antl_buzzer_style
+1 mem_antl_buzzer_type
+1 mem_antl_buzzer_blink_count
+1 mem_antl_buzzer_gpio
+2 mem_antl_buzzer_on_time
+2 mem_antl_buzzer_off_time
+2 mem_antl_buzzer_cb_on
+2 mem_antl_buzzer_cb_off
+
+0 mem_antl_fast_adv_led_style
+1 mem_antl_fast_adv_led_type
+1 mem_antl_fast_adv_led_blink_count
+1 mem_antl_fast_adv_led_gpio
+2 mem_antl_fast_adv_led_on_time
+2 mem_antl_fast_adv_led_off_time
+
+0 mem_antl_slow_adv_led_style
+1 mem_antl_slow_adv_led_type
+1 mem_antl_slow_adv_led_blink_count
+1 mem_antl_slow_adv_led_gpio
+2 mem_antl_slow_adv_led_on_time
+2 mem_antl_slow_adv_led_off_time
+
+0 mem_antl_power_starting_led_style
+1 mem_antl_power_starting_led_type
+1 mem_antl_power_starting_led_blink_count
+1 mem_antl_power_starting_led_gpio
+2 mem_antl_power_starting_led_on_time
+2 mem_antl_power_starting_led_off_time
+
+7 mem_antl_power_starting_buzzer_style
+
+0 mem_antl_power_off_led_style
+1 mem_antl_power_off_led_type
+1 mem_antl_power_off_led_link_count
+1 mem_antl_power_off_led_gpio
+2 mem_antl_power_off_led_on_time
+2 mem_antl_power_off_led_off_time
+
+0 mem_antl_power_off_buzzer_style
+1 mem_antl_power_off_buzzer_type
+1 mem_antl_power_off_buzzer_link_count
+1 mem_antl_power_off_buzzer_gpio
+2 mem_antl_power_off_buzzer_on_time
+2 mem_antl_power_off_buzzer_off_time
+
+7 mem_antl_alert_led_stlye
+
+0 mem_antl_alert_buzzer_stlye
+1 mem_antl_alert_buzzer_type
+1 mem_antl_alert_buzzer_blink_count
+1 mem_antl_alert_buzzer_gpio
+2 mem_antl_alert_buzzer_on_time
+2 mem_antl_alert_buzzer_off_time
+
+0 mem_antl_key_led_style
+1 mem_antl_key_led_type
+1 mem_antl_key_led_blink_count
+1 mem_antl_key_led_gpio
+2 mem_antl_key_led_on_time
+2 mem_antl_key_led_off_time
+
+7 mem_antl_key_buzzer_style
+
+1 mem_antl_queue_width
+1 mem_antl_queue_depth
+1 mem_antl_queue_curr_num
+1 mem_antl_queue_read_ptr
+1 mem_antl_queue_write_ptr
+80 mem_antl_queue_buff
+
+1 mem_antl_key_scan_enable
+1 mem_antl_led_num
+4 mem_antl_led_gpio_map
+
+0 mem_antl_power_param
+1 mem_antl_power_state
+1 mem_antl_power_timer
+1 mem_antl_power_off_timeout
+1 mem_antl_power_starting_timeout
+2 mem_antl_power_off_cb
+2 mem_antl_power_starting_cb
+2 mem_antl_power_standby_cb
+2 mem_event_button_up_cb
+
+1 mem_antl_key_num
+2 mem_cb_antl_key
+4 mem_antl_key_conf0
+
+15 mem_antl_key0_press
+15 mem_antl_key0_release
+
+///////
+1 mem_antl_conn_updata_procedure_state
+2 mem_client_characteristic_configuration_descriptor
+///////
+
+
+//100ms timer
+2 mem_adc_timer
+1 mem_antl_conn_update_timer
+1 mem_antl_send_updata_le_param_timer
+////
+
+2 mem_antl_le_sleep_timer
+2 mem_antl_fast_adv_timer
+2 mem_antl_fast_adv_timeout
+2 mem_antl_le_sleep_timeout
+1 mem_double_click_timer
+1 mem_butten_click_cnt
+
+//1 mem_dvc_seq
+/////////anti lost alarm state/////
+1 mem_antl_led_state
+1 mem_antl_buzzer_state
+1 mem_antl_key_state
+1 mem_antl_lost_mode
+1 mem_alarm_config
+1 mem_alarm_config_notfy_cnt
+
+6 mem_buzzer_pwm_conf
+
+/////////anti lost battery adc read////////
+2 mem_adc_timeout
+1 mem_voltage_remain_percent
+
+0 mem_battery_calculate_set
+2 mem_battery_full_voltage
+2 mem_battery_empty_voltage
+2 mem_battery_low_voltage
+2 mem_battery_current_voltage
+
+
+2 mem_rx_window_sniff_inc
+2 mem_interval_increment
+
+2 mem_antl_le_interval_min
+2 mem_antl_le_interval_max
+2 mem_antl_le_latency
+2 mem_antl_le_timeout
+2 mem_antl_le_unnormal_interval_min
+2 mem_antl_le_unnormal_interval_max
+2 mem_antl_le_unnormal_latency
+2 mem_antl_le_unnormal_timeout
+
+400 mem_AntiLost_le_att_list
+)
+
+omemalloc(
+1 mem_car_hard_soft_switch
+1 mem_car_queue_each_size
+1 mem_car__queue_length
+
+1 mem_car_queue_curr_num
+1 mem_car_queue_read_ptr
+1 mem_car_queue_write_ptr
+120 mem_car_queue_ele
+
+20 mem_car_pop_queue_buff
+
+1 mem_car_led_num
+10 mem_car_led_map
+
+1 mem_car_style1_led_type
+1 mem_car_style1_blink_count
+1 mem_car_style1_struct_led_gpio
+2 mem_car_style1_on_time
+2 mem_car_style1_off_time
+2 mem_car_style1_cb_ledon
+2 mem_car_style1_cb_ledoff
+
+1 mem_car_style2_led_type
+1 mem_car_style2_blink_count
+1 mem_car_style2_struct_led_gpio
+2 mem_car_style2_on_time
+2 mem_car_style2_off_time
+2 mem_car_style2_cb_ledon
+2 mem_car_style2_cb_ledoff
+
+//////motor
+0 mem_le_receive_data
+2 mem_le_receive_packet_head
+1 mem_le_receive_cmd
+2 mem_le_receive_length
+10 mem_le_receive_payload
+1 mem_le_receive_checksum
+1 mem_motor1_status
+1 mem_motor1_speed
+1 mem_motor2_status
+1 mem_motor2_speed
+1 mem_motor3_status
+1 mem_motor3_speed
+
+0 mem_motor1_pwm_set
+1 mem_motor1_pwm_pin1_set
+1 mem_motor1_pwm_pin2_set
+1 mem_motor1_pwm_pin_set
+1 mem_motor1_pwm_channel_set
+3 mem_motor1_pwm_freq_set
+1 mem_motor1_pwm_dute_set
+0 mem_motor2_pwm_set
+1 mem_motor2_pwm_pin1_set
+1 mem_motor2_pwm_pin2_set
+1 mem_motor2_pwm_pin_set
+1 mem_motor2_pwm_channel_set
+3 mem_motor2_pwm_freq_set
+1 mem_motor2_pwm_dute_set
+0 mem_motor3_pwm_set
+1 mem_motor3_pwm_pin1_set
+1 mem_motor3_pwm_pin2_set
+1 mem_motor3_pwm_pin_set
+1 mem_motor3_pwm_channel_set
+3 mem_motor3_pwm_freq_set
+1 mem_motor3_pwm_dute_set
+
+1 mem_motor_select_p_n
+1 mem_car_motor_status
+1 mem_car_motor_speed
+0 mem_motor_pwm_set
+1 mem_motor_pwm_pin1_set
+1 mem_motor_pwm_pin2_set
+1 mem_motor_pwm_pin_set
+1 mem_motor_pwm_channel_set
+3 mem_motor_pwm_freq_set
+1 mem_motor_pwm_dute_set
+
+1 mem_ir_rx_gpio
+2 mem_ir_data
+2 mem_ir_rx_buf
+4 mem_ir_receive_clkn
+
+3 mem_ir_notify_data
+5 mem_ir_notify_data_head
+2 mem_ir_notify_data_payload
+1 mem_ir_notify_data_check_sum
+1 mem_car_ir_breakdown_check_timer
+1 mem_car_ir_breakdown_flag
+
+0 mem_car_led_control
+1 mem_car_led1_status
+1 mem_car_led2_status
+1 mem_car_led3_status
+1 mem_car_led4_status
+1 mem_car_led5_status
+1 mem_car_led6_status
+1 mem_car_led7_status
+1 mem_car_led8_status
+1 mem_car_led_control_timer
+1 mem_car_led_blink_status
+1 mem_car_led_no
+
+3 mem_car_info_request
+5 mem_car_info_request_head
+8 mem_car_info_request_payload
+1 mem_car_info_request_checksum
+
+0 mem_car_config_param
+1 mem_car_config_setting_flag
+1 mem_car_config_device_select
+1 mem_car_config_motor_layout
+1 mem_car_config_ir_enable
+1 mem_car_config_ir_rx_gpio
+1 mem_car_config_pairing_led_conn_status
+1 mem_car_config_pairing_led_gpio
+1 mem_car_config_led_num
+0 mem_car_config_blood_led_gpio
+1 mem_car_config_blood_led1_gpio
+1 mem_car_config_blood_led2_gpio
+1 mem_car_config_blood_led3_gpio
+1 mem_car_config_blood_led4_gpio
+1 mem_car_config_blood_led5_gpio
+1 mem_car_config_blood_led6_gpio
+1 mem_car_config_blood_led7_gpio
+1 mem_car_config_blood_led8_gpio
+1 mem_car_config_bat_notify_enable
+1 mem_car_config_low_voltage_led_gpio
+1 mem_car_config_low_voltage_percent
+1 mem_car_config_soft_switch_enable
+1 mem_car_config_soft_switch_gpio
+
+1 mem_car_notify_vdd_count
+1 mem_car_notify_vdd_timer
+1 mem_car_notify_vdd_value_last
+1 mem_car_notify_vdd_percent
+1 mem_car_working_flag
+1 mem_low_bat_flag
+
+3 mem_notify_bat_packet
+5 mem_notify_bat_head
+1 mem_notify_bat_payload
+1 mem_notify_bat_check_sum
+
+1 mem_vdd_notify_flag
+2 mem_car_current_vdd_value_temp
+2 mem_car_last_vdd_value
+
+0 mem_vdd_calculate_set
+2 mem_vdd_full_vol
+2 mem_vdd_empty_vol
+2 mem_vdd_low_vol
+2 mem_vdd_now_vol
+
+
+1 mem_car_24g_status
+2 mem_car_24g_no_data_timeout_count
+2 mem_car_24g_no_data_timeout_timer
+
+1 mem_car_24g_ir_receive_attack_count
+1 mem_car_24g_go_die_flag
+1 mem_car_attack_shake_timer
+1 mem_car_attack_shake_flag
+
+0 mem_car_soft_power
+1 mem_car_power_state
+1 mem_car_power_timer
+1 mem_car_power_off_timeout
+1 mem_car_power_starting_timeout
+2 mem_car_power_off_cb
+2 mem_car_power_starting_cb
+2 mem_car_power_standby_cb
+2 mem_car_ui_button_up_cb
+
+
+500 mem_car_le_att_list
+
+1 mem_car_moto1_blank_timer
+1 mem_car_moto2_blank_timer
+1 mem_car_moto3_blank_timer
+1 mem_car_24g_received_pac
+400 mem_24g_car_head_ptr
+)
+
+omemalloc(
+1 mem_light_pwm0
+1 mem_light_pwm1
+1 mem_light_pwm2
+1 mem_light_pwm3
+1 mem_light_pwm4
+1 mem_light_pwm5
+
+1 mem_light_pairing_enable
+2 mem_light_pairing_timer
+1 mem_light_cnum
+1 mem_light_next_record
+80 mem_light_clist
+
+
+1 mem_light_crr_cmd_count
+1 mem_curr_packet_num
+)
+
+omemalloc(
+1 mem_lightc_led_gpio
+6 mem_lightc_row
+6 mem_lightc_col
+
+1 mem_adv_time
+
+20 mem_cmd0_string
+20 mem_cmd1_string
+20 mem_cmd2_string
+20 mem_cmd3_string
+20 mem_cmd4_string
+20 mem_cmd5_string
+20 mem_cmd6_string
+20 mem_cmd7_string
+20 mem_cmd8_string
+20 mem_cmd9_string
+20 mem_cmd10_string
+20 mem_cmd11_string
+20 mem_cmd12_string
+20 mem_cmd13_string
+20 mem_cmd14_string
+20 mem_cmd15_string
+20 mem_cmd16_string
+20 mem_cmd17_string
+20 mem_cmd18_string
+20 mem_cmd19_string
+20 mem_cmd20_string
+)
+
+(
+0 LIGHT_GROUP0
+)
+
+(
+0 LIGHT_CMD_PWM0
+1 LIGHT_CMD_PWM1
+2 LIGHT_CMD_PWM2
+3 LIGHT_CMD_PWM3
+4 LIGHT_CMD_PWM4
+5 LIGHT_CMD_PWM5
+6 LIGHT_CMD_AUTO_MODE
+0xff LIGHT_CMD_PAIRING
+
+)
+
+omemalloc(	
+	2 mem_soft_version_num
+	1 mem_module_wake_up_gpio
+	1 mem_module_state_gpio
+	1 mem_module_connect_state_gpio
+
+	2 mem_current_packet_length
+	1 mem_module_state
+	
+	1 mem_module_mcu_wake_pin
+	4 mem_module_mcu_wake_delay_us
+
+	1 mem_module_spp_lpm_mult
+	1 mem_module_le_lpm_mult	
+	1 mem_module_bluetooth_stauts_by_command
+
+	//uart
+	2 mem_module_uart_rx_buffer
+	2 mem_module_uart_rx_buffer_end
+	2 mem_module_uart_tx_buffer
+	2 mem_module_uart_tx_buffer_end
+
+	//ADC
+	1 mem_module_read_vdd_flag
+	1 mem_module_read_vdd_count
+	1 mem_module_vdd_quotient
+	1 mem_module_vdd_remainder
+
+	//ble
+	1 mem_module_le_rx_data_len
+	2 mem_module_le_rx_data_address
+	2 mem_module_le_rx_data_handle
+	//ble write handle
+	2 mem_module_data_write_handle
+	2 mem_module_data_write_handle2
+	//flag
+	1 mem_module_flag
+
+	1 mem_module_hci_notify_len
+	2 mem_module_hci_notify_handle
+	2 mem_module_hci_nofiy_addr
+
+	4 mem_last_transmite_clock
+	
+	300 mem_module_uuid_list
+	0 mem_module_uuid_list_end
+	600 mem_module_le_att_list
+	0 mem_module_le_att_list_end
+	0 mem_module_nv_data
+	34 mem_module_nv_data0
+	34 mem_module_nv_data1
+	34 mem_module_nv_data2
+	34 mem_module_nv_data3
+	34 mem_module_nv_data4
+)
+
+omemalloc(
+1 mem_remote_car_hard_soft_switch
+
+1 mem_remote_car_queue_each_size
+1 mem_remote_car_queue_length
+
+1 mem_remote_car_queue_curr_num
+1 mem_remote_car_queue_read_ptr
+1 mem_remote_car_queue_write_ptr
+90 mem_remote_car_queue_ele
+
+1 mem_remote_style_led_type
+1 mem_remote_style_blink_count
+1 mem_remote_style_struct_led_gpio
+2 mem_remote_style_on_time
+2 mem_remote_style_off_time
+2 mem_remote_style_cb_ledon
+2 mem_remote_style_cb_ledoff
+
+
+1 mem_remote_car_led_num
+8 mem_remote_car_led_map
+
+0 mem_remote_car_keyscan
+1 mem_remote_car_key_num
+2 mem_cb_remote_car_keyscan
+
+0 mem_remote_car_key_conf0
+1 mem_remote_car_key_conf0_pin
+0 mem_remote_car_key_conf1
+1 mem_remote_car_key_conf1_pin
+0 mem_remote_car_key_conf2
+1 mem_remote_car_key_conf2_pin
+0 mem_remote_car_key_conf3
+1 mem_remote_car_key_conf3_pin
+0 mem_remote_car_key_conf4
+1 mem_remote_car_key_conf4_pin
+0 mem_remote_car_key_conf5
+1 mem_remote_car_key_conf5_pin
+0 mem_remote_car_key_conf6
+1 mem_remote_car_key_conf6_pin
+
+
+//rocker
+1 mem_rocker_negative_flag
+1 mem_rocker_work_status
+2 mem_current_vdd_value_default_mid_x
+2 mem_current_vdd_value_default_mid_y
+2 mem_current_vdd_value_default_mid_temp
+2 mem_current_vdd_default_range
+2 mem_rocker_last_status
+0 mem_rocker_status
+1 mem_rocker_x_status
+1 mem_rocker_y_status
+
+0 mem_remote_car_config_param
+1 mem_remote_car_config_setting_flag
+1 mem_remote_car_config_key_map
+1 mem_remote_car_config_layout
+1 mem_remote_car_config_connect_led_gpio
+1 mem_remote_car_config_check_way
+1 mem_remote_car_config_soft_switch_enable
+1 mem_remote_car_config_soft_switch_gpio
+1 mem_remote_car_config_timeout_shutdown_enable
+
+0 mem_remote_car_24g_motor_packet
+1 mem_remote_car_24g_motor_packet_lenght
+2 mem_remote_car_24g_motor_send_packet_head
+1 mem_remote_car_24g_motor_send_cmd
+2 mem_remote_car_24g_motor_send_length
+0 mem_remote_car_24g_motor_send_payload
+2 mem_remote_car_24g_motor1_payload
+2 mem_remote_car_24g_motor2_payload
+2 mem_remote_car_24g_motor3_payload
+1 mem_remote_car_24g_motor_send_checksum
+
+0 mem_remote_car_24g_fire_packet
+1 mem_remote_car_24g_fire_packet_lenght
+2 mem_remote_car_24g_fire_send_packet_head
+1 mem_remote_car_24g_fire_send_cmd
+2 mem_remote_car_24g_fire_send_length
+2 mem_remote_car_24g_fire_send_payload
+1 mem_remote_car_24g_fire_send_checksum
+
+15 mem_remote_car_24g_tx_temp
+
+2 mem_remote_car_no_data_timeout
+2 mem_remote_car_no_data_timer
+
+0 mem_remote_car_soft_power
+1 mem_remote_car_power_state
+1 mem_remote_car_power_timer
+1 mem_remote_car_power_off_timeout
+1 mem_remote_car_power_starting_timeout
+2 mem_remote_car_power_off_cb
+2 mem_remote_car_power_starting_cb
+2 mem_remote_car_power_standby_cb
+
+1 mem_remote_key_status
+1 mem_remote_car_24g_status
+
+1 mem_remote_car_24g_auto_work_step
+1 mem_remote_car_24g_pair_success_flag
+1 mem_remote_car_24g_enter_lpm_enable
+1 mem_remote_car_empty_packet
+400 mem_24g_RC_head_ptr
+)
+
+omemalloc(
+
+////////////////////////////////////
+//shutter common config
+1 mem_shutter_bluetooth_type
+////////////////////////////////////
+
+//shutter config name by GPIO
+1 mem_shutter_config_enable
+2 mem_shutter_config_otp_base_address
+1 mem_shutter_config_size
+1 mem_shutter_config_select_gpio1
+1 mem_shutter_config_select_gpio2
+1 mem_shutter_config_select_gpio3
+
+2 mem_shutter_config_user_otp_address
+2 mem_shutter_config_eeprom_offset_addr
+
+////////
+2 mem_shutter_config_eeprom_start_flag
+1 mem_shutter_config_user_size
+///////
+1 mem_shutter_config_label
+2 mem_shutter_config_otp_addr
+///////////////////////////////////
+
+////////////////////////////////////
+//classic shutter config
+1 mem_classic_shutter_cable_unplug_conut
+1 mem_classic_shutter_hid_disconn_count
+2 mem_classic_shutter_random_mac_offset_addr
+////////////////////////////////////
+
+////////////////////////////////////
+//ble shutter config
+1 mem_ble_shutter_enable_notify
+2 mem_ble_shutter_reconn_dav_interval
+2 mem_ble_shutter_discovery_adv_interval
+2 mem_ble_shutter_reconn_timeout
+2 mem_ble_shutter_reconn_timer
+2 mem_ble_shutter_reconn_blink_on_time
+2 mem_ble_shutter_reconn_blink_off_time
+2 mem_ble_shutter_discovery_blink_on_time
+2 mem_ble_shutter_discovery_blink_off_time
+
+2 mem_ble_shutter_interval_min
+2 mem_ble_shutter_interval_max
+2 mem_ble_shutter_latency
+2 mem_ble_shutter_timeout
+
+2 mem_ble_shutter_interval_min_new
+2 mem_ble_shutter_interval_max_new
+2 mem_ble_shutter_latency_new
+2 mem_ble_shutter_timeout_new
+
+//////////////////shutter sleep timeout//////////////////
+2 mem_classic_shutter_discovery_timeout
+2 mem_classic_shutter_connect_timeout
+2 mem_ble_shutter_discovery_timeout
+2 mem_ble_shutter_connect_timeout
+2 mem_shutter_sleep_timeout
+2 mem_shutter_sleep_timer
+
+/////////////////////////////////////////////////////////////////
+1 mem_shutter_hard_soft_switch_case
+1 mem_shutter_soft_switch_button_gpio
+1 mem_shutter_soft_switch_power_state
+1 mem_shutter_soft_switch_poweron_time
+1 mem_shutter_soft_switch_poweroff_time
+2 mem_shutter_soft_switch_poweron_callback_function
+2 mem_shutter_soft_switch_poweroff_callback_function
+
+
+0 mem_shutter_keyscan
+1 mem_shutter_key_num
+2 mem_cb_shutter_keycan
+1 mem_shutter_key_conf0
+1 mem_shutter_key_conf1
+1 mem_shutter_key_conf2
+1 mem_shutter_key_conf3
+1 mem_shutter_key_conf4
+1 mem_shutter_key_conf5
+1 mem_shutter_key_conf6
+1 mem_shutter_key_conf7
+
+
+5 mem_key0_press
+5 mem_key1_press
+5 mem_key2_press
+5 mem_key3_press
+5 mem_key4_press
+5 mem_key5_press
+5 mem_key6_press
+5 mem_key7_press
+
+5 mem_key0_release	
+5 mem_key1_release
+5 mem_key2_release
+5 mem_key3_release
+5 mem_key4_release
+5 mem_key5_release
+5 mem_key6_release
+5 mem_key7_release
+
+5 mem_ble_data_buffer1
+5 mem_ble_data_buffer2
+5 mem_ble_data_buffer3
+5 mem_ble_data_buffer4
+5 mem_ble_data_buffer5
+5 mem_ble_data_buffer6
+5 mem_ble_data_buffer7
+5 mem_ble_data_buffer8
+50 mem_ble_data_buffer9_58
+
+5 mem_classic_data_buffer
+
+5 mem_classic_data_buffer1
+5 mem_classic_data_buffer2
+5 mem_classic_data_buffer3
+5 mem_classic_data_buffer4
+5 mem_classic_data_buffer5
+5 mem_classic_data_buffer6
+5 mem_classic_data_buffer7
+5 mem_classic_data_buffer8
+50 mem_classic_data_buffer9_58
+
+1 mem_queue_each_size
+1 mem_queue_length
+1 mem_queue_curr_num
+1 mem_queue_read_ptr
+1 mem_queue_write_ptr
+32 mem_queue_ele
+
+
+170 mem_shutter_nv_data
+
+0 mem_shutter_led_struct_app_led
+1 mem_shutter_led_struct_app_led_type
+1 mem_shutter_led_struct_app_led_blink_count
+1 mem_shutter_led_struct_app_led_gpio
+2 mem_shutter_led_struct_app_led_on_time
+2 mem_shutter_led_struct_app_led_off_time
+2 mem_shutter_led_struct_app_led_on_callback
+2 mem_shutter_led_struct_app_led_off_callback
+
+0 mem_shutter_power_off_led_style
+1 mem_shutter_power_off_led_style_type
+1 mem_shutter_power_off_led_style_blink_count
+1 mem_shutter_power_off_led_style_gpio
+2 mem_shutter_power_off_led_style_on_time
+2 mem_shutter_power_off_led_style_off_time
+2 mem_shutter_power_off_led_style_on_callback
+2 mem_shutter_power_off_led_style_off_callback
+
+1 mem_shutter_soft_swtich_botton_down
+11 mem_shutter_soft_swtich_led_struct_temp
+1 mem_shutter_power_off_timeout
+1 mem_shutter_power_off_timer
+)
+
+omemalloc(
+// Mouse Work Area
+1 mem_mouse_key
+2 mem_mouse_x
+2 mem_mouse_y
+1 mem_mouse_z
+1 mem_mouse_tz
+1 mem_mouse_xy_h
+1 mem_sensor_shutter_hi
+1 mem_sensor_shutter_lo
+1 mem_sensor_smart_flag
+1 mem_sensor_squal_reg
+1 mem_sensor_iqc
+1 mem_mouse_move_flag
+2 mem_mouse_direct_timeout
+2 mem_mouse_no_data_timeout
+2 mem_mouse_discovery_timer
+2 mem_mouse_direct_timer
+2 mem_mouse_no_data_timer
+2 mem_mouse_blank_data_timer
+1 mem_mouse_send_blank_timer
+
+1 mem_mouse_cpi_count
+1 mem_mouse_dpi_button_state
+
+
+//mouse T wheel
+1 mem_wheel_tb_old_pinlevel
+1 mem_wheel_tb_new_pinlevel
+1 mem_wheel_tog 
+1 mem_mouse_tz_data
+1 mem_mouse_tz_data_count
+1 mem_mouse_tz_data_count1
+
+
+1 mem_mwheel_b_old_pinlevel
+1 mem_mwheel_b_new_pinlevel
+1 mem_mwheel_tog 
+1 mem_mouse_z_data
+1 mem_mouse_z_data_count
+1 mem_mouse_z_data_count1
+
+1 mem_reconn_mode
+1 mem_mouse_statue_led_timer  
+1 mem_le_connect_status_flag
+1 mem_le_start_encrypt_timer
+
+7 mem_device_addr_temp
+
+1 mem_adc_read_timer
+1 mem_adc_low_volatage_led_timer_count
+2 mem_adc_reference_voltage
+1 mem_device_number
+2 mem_mouse_flag
+2 mem_mouse_function_enable
+1 mem_combination_select_device_timer_init
+1 mem_combination_select_device_count
+1 mem_select_device_button_statue
+
+1 mem_combination_ui_button_count
+1 mem_bt_discovey_button_statue
+1 mem_sensor_reset_gpio	
+
+1 mem_sensor_id1
+1 mem_sensor_id2
+//eeprom config param
+1 mem_mouse_dpi_led_delay_count
+1 mem_config_sensor_type
+1 mem_config_sensor_motion
+1 mem_lbutton_gpio
+1 mem_rbutton_gpio
+1 mem_mbutton_gpio
+1 mem_bk_button_gpio
+1 mem_fw_button_gpio
+1 mem_dpi_button_gpio
+1 mem_whee_a_data_gpio
+1 mem_whee_b_data_gpio
+1 mem_whee_ta_data_gpio
+1 mem_whee_tb_data_gpio
+1 mem_config_bt_button_gpio
+1 mem_config_select_device_button_gpio
+1 mem_config_paraing_led_gpio
+1 mem_config_low_voltage_alarm_gpio
+1 mem_config_device1_led_gpio
+1 mem_config_device2_led_gpio
+1 mem_config_device3_led_gpio	
+1 mem_sensor_data_gpio
+1 mem_dpi_led_gpio
+1 mem_config_function_enable
+1 mem_config_sensor_angle
+1 mem_select_sensor_angle_gpio
+1 mem_select_adc_gpio
+0 mem_config_end
+//max length 1f								
+4 mem_btclk_sensor
+1 mem_wire_usb_interval
+1 mem_mouse_mode_flag
+1 mem_usb_addr
+3 mem_flash_base
+1 mem_24g_device_number
+1 mem_24g_enter_lpm_timer
+1 mem_mouse_1step_up_count
+1 mem_mouse_2step_up_count
+2 mem_24g_pairing_timer_count
+
+//adc struct
+0 mem_mouse_vdd_calculate_set
+2 mem_mouse_vdd_full_vol
+2 mem_mouse_vdd_empty_vol
+2 mem_mouse_vdd_low_vol
+2 mem_mouse_vdd_now_vol
+// sensor led 
+1 mem_mouse_sensor_timer_count
+1 mem_sensor_led_style
+
+//led struct
+1 mem_mouse_led_type
+1 mem_mouse_blink_count
+1 mem_mouse_struct_led_gpio
+2 mem_mouse_on_time
+2 mem_mouse_off_time
+2 mem_mouse_cb_ledon
+2 mem_mouse_cb_ledoff
+
+//three devices param
+1 mem_reconn_times
+1 mem_reconn_times_init
+0 mem_mouse_information_start
+1 mem_device_flag
+1 mem_device1_type
+6 mem_device1_addr
+16 mem_device1_link_key
+6 mem_device1_locall_addr
+
+1 mem_device2_type
+6 mem_device2_addr
+16 mem_device2_link_key
+6 mem_device2_locall_addr
+
+1 mem_device3_type
+6 mem_device3_addr
+16 mem_device3_link_key
+6 mem_device3_locall_addr
+2 mem_store_flag
+1 mem_mouse_dpi
+4 mem_mouse_24g_addr
+0 mem_mouse_information_end
+
+0 mem_mouse_dpi_seting
+1 mem_320x_dpi_1
+1 mem_320x_dpi_2
+1 mem_320x_dpi_3
+1 mem_320x_dpi_4
+
+1 mem_3212_dpi_1
+1 mem_3212_dpi_2
+1 mem_3212_dpi_3
+1 mem_3212_dpi_4
+
+1 mem_3610_dpi_1
+1 mem_3610_dpi_2
+1 mem_3610_dpi_3
+1 mem_3610_dpi_4
+
+1 mem_mouse_24g_enter_lpm_enable
+
+//-------------- patch variable ------------------
+2 mem_le_rx_window_inc
+1 mem_empty_count
+13 mem_rf_init_data_new
+
+1 mem_mouse_clear_sensor_data_flag
+1 mem_mouse_null_enter_hibernate_flag
+1 mem_mouse_null_enter_hibernate_timer
+1 mem_mouse_le_reconnect_flag
+
+33 mem_mouse_data_queue
+1 mem_mouse_data_queue_num
+
+2 mem_random_addr_increase_count
+1 mem_mouse_le_conn_param_reject
+1 mem_lpm_mult_init
+64 mem_mouse_le_uuid_sup
+
+1 mem_mouse_wheel_trigger
+1 mem_mouse_wheel_trigger_timer
+
+1 mem_mouse_enter_sniff_count
+1 mem_mouse_send_switch_req_timer
+
+27 mem_le_tx_buffer0_omemalloc
+27 mem_le_tx_buffer1_omemalloc
+27 mem_le_tx_buffer2_omemalloc
+27 mem_le_tx_buffer3_omemalloc
+
+
+646 mem_mouse_uuid_list
+1 mem_lmi_opcode_temp
+
+1 mem_mouse_adc_last_low_voltage_flag
+1 mem_mouse_init_sensor_reset_flag
+
+1 mem_bt_rcvd_switch_req_accept
+1 mem_bt_send_max_slot_req_accept_after_switch
+1 mem_bt_send_lmp_setup_complete
+
+1 mem_l2cap_rcv
+1 mem_mouse_bt_boot_mode
+5 mem_mouse_bt_boot_data
+
+1 mem_mouse_bt_send_first_package_timer
+1 mem_mouse_bt_send_first_package_flag
+
+1 mem_mouse_asm_flag
+2 mem_mouse_x_pre
+2 mem_mouse_y_pre
+
+20 mem_le_adv_swift_pair
+
+1 mem_24g_sw_gpio
+
+1 mem_mouse_multi_led_blink_enable
+1 mem_mouse_multi_led_gpio
+1 mem_mouse_multi_led_state
+1 mem_mouse_multi_led_type
+1 mem_mouse_multi_led_on_timer
+1 mem_mouse_multi_led_on_timer_init
+1 mem_mouse_multi_led_blink_timer_init
+1 mem_mouse_multi_led_blink_timer
+1 mem_mouse_multi_led_blink_count
+1 mem_mouse_multi_led_blink_count_limited
+1 mem_mouse_multi_led_on_poweron2s_flag
+
+1 mem_discovery_on_flag
+1 mem_bt_ui_button_timeout
+1 mem_bt_ui_button_count
+1 mem_mouse_priority_bb_event
+2 mem_mouse_le_parse_l2cap_ptr
+1 mem_low_power_no_data_off_led_time
+1 mem_low_power_check_count
+1 mem_low_power_led_blink_flag
+
+0 mem_mouse_3065xy_dpi_seting
+1 mem_3065xy_dpi_1
+1 mem_3065xy_dpi_2
+1 mem_3065xy_dpi_3
+1 mem_3065xy_dpi_4
+
+//modified pnp id
+1 mem_le_att_pnp_id_len
+7 mem_le_att_pnp_id
+
+//flash
+1 mem_flash_ncs_gpio
+1 mem_select_ui_button_count
+4 mem_write_flash_head_temp
+1 mem_mouse_poweron_led_timer
+4 mem_mouse_24g_addr_init
+
+//zcode
+1 mem_zcode_current_number
+3 mem_xip_flash_offset
+3 mem_flash_start_addr
+3 mem_flash_address
+4 mem_zcode_head
+
+//no motion pin
+1 mem_mouse_long_mult_flag
+1 mem_mouse_le_current_mult_timer
+1 mem_24g_long_sleep_param_update_timer
+
+//le security reuqest
+1 mem_mouse_send_secutiry_request_timer
+1 mem_le_send_security_request_flag
+1 mem_mouse_le_bb_connected_flag
+
+//g24
+34 mem_24g_rxbuf
+32 mem_24g_txbuf
+34 mem_24g_txpayload
+32 mem_24g_rxpayload
+1 mem_24g_rxdata_length
+1 mem_24g_pid
+1 mem_24g_datalen
+1 mem_24g_data_type
+1 mem_24g_txlen
+2 mem_24g_rx_window
+1 mem_24g_ensure
+2 mem_24g_txfail_cnt
+1 mem_24g_get_ack_fail
+1 mem_24g_retry
+1 mem_24g_ch
+1 mem_24g_current_ch_number
+4 mem_24g_paring_addr
+1 mem_24g_pairing_sm
+4 mem_24g_ch_map1
+4 mem_24g_ch_map2
+4 mem_24g_ch_map3
+4 mem_24g_ch_map4
+4 mem_24g_tx_btclk
+1 mem_24g_interval
+1 mem_24g_interval_min
+1 mem_24g_interval_max
+4 mem_24g_addr
+1 mem_24g_abort_pac
+2 mem_24g_check_dongle_times
+
+8 mem_24g_enter_hibernate
+4 mem_24g_device_addr
+1 mem_24g_pac_index
+1 mem_24g_no_ack
+3 mem_24g_sta_crc
+3 mem_24g_last_crc
+1 mem_24g_sta_pid
+1 mem_24g_last_pid
+1 mem_24g_max_retry
+1 mem_24g_mode
+
+34 mem_24g_rxdata_temp
+4 mem_24g_rx_addr
+1 mem_dongle_mode_init
+1 mem_dongle_work_mode
+1 mem_dongle_ms_bind_step
+1 mem_dongle_kb_bind_step
+1 mem_dongle_bind_device_status
+8 mem_24g_bind_payload
+1 mem_24g_abort_packet
+1 mem_24g_rf_laststa
+4 mem_24g_hop_btclk
+1 mem_24g_hop_interval
+1 mem_24g_mode_switch
+1 mem_24g_ackpayload_enable
+1 mem_24g_hop_packet
+1 mem_24g_pair_mode
+1 mem_24g_nodata_timer_enable
+1 mem_24g_time_slice
+8 mem_24g_kb_data_sta_data
+8 mem_24g_kb_data_last_data
+3 mem_24g_kb_multikey_sta_data
+3 mem_24g_kb_multikey_last_data
+1 mem_24g_kb_blank_data_enable
+1 mem_24g_kb_mul_blank_data_enable
+1 mem_24g_ms_blank_data_enable
+4 mem_24g_kb_addr
+4 mem_24g_ms_addr
+
+1 mem_24g_dg_last_ch
+1 mem_24g_dg_ch_number
+1 mem_24g_dg_config_ch_once
+1 mem_24g_kb_last_ch
+1 mem_24g_kb_ch_number
+1 mem_24g_kb_config_ch_once
+1 mem_24g_ms_last_ch
+1 mem_24g_ms_ch_number
+1 mem_24g_ms_config_ch_once
+
+2 mem_24g_syncword
+1 mem_24g_syncword_crc8
+1 mem_24g_get_syncword_crc8
+2 mem_24g_ota_sta_pid
+
+1 mem_tx_power_temp
+
+1 mem_rssi_hex
+1 mem_rssi_noise_avg
+1 mem_rssi_noise_index
+1 mem_rssi_signal_index
+1 mem_rssi_noise_dg_avg
+1 mem_rssi_noise_kb_avg
+1 mem_rssi_noise_ms_avg
+1 mem_rssi_noise_dg_index
+1 mem_rssi_noise_kb_index
+1 mem_rssi_noise_ms_index
+8 mem_rssi_signal_buf
+
+1 mem_queue_ele_num
+2 mem_queue_read
+2 mem_queue_write
+0 mem_queue_start
+32 mem_data_ele0
+32 mem_data_ele1
+32 mem_data_ele2
+0 mem_queue_end
+2 mem_queue_temp
+
+2 mem_cb_24g_data
+1 mem_24g_hop_fastly_cnt
+1 mem_24g_hop_pac_retry
+1 mem_24g_rf_hop_ch
+1 mem_24g_rf_last_sta
+1 mem_24g_rf_work_stage
+1 mem_24g_sync_cnt
+1 mem_power_ctrl_pac_succ_cnt
+1 mem_rssi_avg_received
+1 mem_rssi_hex_received
+1 mem_power_ctrl_level
+
+1 mem_seqi
+1 mem_24g_auto_paring_switch
+1 mem_24g_paccnt
+1 mem_24g_transmit_by_interrupt
+2 mem_24g_transmit_by_interrupt_exit_count
+2 mem_24g_transmit_by_interrupt_exit_count_init
+
+3 mem_le_lap_high_3B
+1 mem_mouse_fast_conn_flag
+
+26 mem_sensor_8650_init
+8 mem_sensor_poweron_init
+16 mem_sensor_8009_init
+
+2 mem_firmware_version
+
+1 mem_mouse_data_xtemp
+1 mem_mouse_data_ytemp
+)
+
+//******mouse.format******//
+(
+//SPI GPIO 
+0x19 MOUSE_SPI1_CLK_GPIO
+0x1A MOUSE_SPI1_SDIO_GPIO
+0X1E MOUSE_SPI2_CLK_GPIO
+0X1F MOUSE_SPI2_SDIO_GPIO
+//combination
+0x01 MOUSE_L_BUTTON
+0X02 MOUSE_R_BUTTON
+0X03 MOUSE_LR_BUTTON
+0X04 MOUSE_M_BUTTON
+0X05 MOUSE_LM_BUTTON
+0X06 MOUSE_RM_BUTTON
+0X07 MOUSE_LMR_BUTTON
+//mouse default gpio
+0x1B MOUSE_DEFAULT_XA_GPIO
+0x1C MOUSE_DEFAULT_XB_GPIO
+
+//ui led blink
+0X00C8  LED_RECONNECT_BLINK //200
+0X0190  LED_DPI_BLINK //400
+0X03E8  LED_DPI_BLINK_FIXED    //1000
+0X03E8  LED_DISCOVERY_BLINK    //1000
+0XFF    LED_LONG_BLINK
+0x05	LED_SENSOR_BLINK_CNT
+//bt mode device number
+0x01 MODE_BT_DEVICE1
+0x02 MODE_BT_DEVICE2
+0x03 MODE_BT_DEVICE3
+0x02 MODE_24G_DEVICE
+0xff MODE_DEFAULT_DEVICE
+
+//mouse  flag
+0X00 WRITE_REQ_ENABLE_FLAG
+0X01 LL_START_ENC_FLAG
+0X02 LL_PAIRING_SUCCESS_FLAG
+
+
+//mouse_function_flag
+0X04 MOUSE_FLAG_LEN
+//1byte
+0X00 MOUSE_SELECT_DEVICE_FLAG
+0X01 MOUSE_CPI_FLAG
+0X02 MOUSE_BT_CANNEL_RECONN_FLAG
+0X03 MOSUE_24G_PAIRING_FLAG
+0X04 MOUSE_LOW_VOLTAGE_FLAG
+0X05 MOUSE_BT_DISCOVERY_BUTTON_DOWN_FLAG
+0X06 MOUSE_LONG_BT_BUTTON_FLAG
+0X07 MOUSE_STORE_EEPROM_FLAG
+0x08 MOUSE_STATUE_UP_FLAG
+0X09 MOUSE_BT_DISCOVERY_BUTTON_LONG_DOWN_FLAG
+
+
+//3byte
+0X10 MOUSE_ENABLE_USB
+0X11 MOUSE_ENABLE_24G
+0X12 MOUSE_ENABLE_SPI2
+0X13 MOUSE_ENABLE_FLASH
+0X14 MOUSE_ENABLE_EEPROM
+0X15 MOUSE_ENABLE_STATUE_UP_THREE_LED
+0X16 MOUSE_ENABLE_STATUE_UP
+0X17 MOUSE_ENABLE_DPI_LED_BLINK
+//4byte
+0X18 MOUSE_ENABLE_BLE_RANDOM_ADDRE
+0X19 MOUSE_ENABLE_2K_EEPROM
+0X1A MOUSE_ENABLE_ADC
+0X1B MOUSE_ENABLE_INIT_DELAY
+0X1C MOUSE_ENABLE_DISCOVERY_SENSOR_LED
+0X1D MOUSE_ENABLE_AUTO_24G_PARING
+0X1E MOUSE_ENABLE_WAKEUP_FROM_POWER
+0X1F MOUSE_ENABLE_GPIO_CONTROL_ADC_SENSOR
+
+
+//mouse dpi level
+0x00 MOUSE_DPI_LEVEL1
+0x01 MOUSE_DPI_LEVEL2
+0x02 MOUSE_DPI_LEVEL3
+0x03 MOUSE_DPI_LEVEL4
+
+
+//mouse sensor angle
+0x00 MOUSE_6CLK_ANGLE
+0X01 MOUSE_9CLK_ANGLE
+0X02 MOUSE_12CLK_ANGLE
+0X03 MOUSE_3CLK_ANGLE
+
+//mem_config_function_enable
+0 ENABLE_BT_DISCOVERY_BY_GPIO_LED
+1 ENABLE_MODE_LED
+2 ENABLE_LOW_VOLTAGE_LED
+3 ENABLE_DEVICE_LED
+4 ENABLE_BT_BUTTON
+5 ENABLE_SELECT_DEVICE_BY_GPIO_BUTTON
+6 ENABLE_SELECT_DEVICE_BY_SWITCH
+7 ENABLE_SENSOR_MOTION_PIN
+
+0xFF GPIO_DISABLE
+
+
+//DPI button state 
+0x00 DPI_BUTTON_STATE_DOWN
+0x01 DPI_BUTTON_STATE_UP
+
+//eeprom address offect
+0X00 MOUSE_INFO_EEPROM_OFFECT
+0X5A MOUSE_DPI_EEPROM_OFFECT	//1byte
+0X5B MOUSE_G24_ADDR_EEPROM_OFFECT	//4bytes
+0x5F MOUSE_USER_DATA_OFFECT
+0X5F MOUSE_RANDOM_ADDR_COUNT_EEPROM_OFFSET	//2bytes
+0X61 MOUSE_DEVICE_MODE_EEPROM_OFFSET	//1byte	
+0X62 MOUSE_EEPROM_MODULE_INIT_FLAG		//eeprom_module_init_flag 2bytes
+0X64 MOUSE_FAST_CONN_FLAG_OFFSET	//1byte
+0X65 MOUSE_LATEST_MODE_OFFSET	//1byte
+
+// Sensor id number
+0x30 P32XX_ID1
+0x31 P3065_ID1
+0x3E P3610_ID1
+0x02 P3212_ID2
+0xD1 P3205_TJ3T_ID2
+0XD2 P3204_TJ3L_ID2
+0x54 PKA8_ID2
+0x70 P3065_XY_ID2
+0xD8 P8009_ID2
+0x5a MA8650_ID2
+
+
+//Sensor type
+0X00 P3205
+0X01 P3065
+0X02 KA8
+0X03 P3204
+0X04 P3212
+0X05 P3610
+0X06 P3065_XY
+0X07 MA8650
+0x07 MX8650
+0x08 P8009
+
+//p3610 smart enable flag
+0X00 P3610_SMART_ENABLE
+0X01 P3610_SMART_DISABLE
+
+//SENSOR REG
+0x00 PAN_REG_PID_L
+0x01 PAN_REG_PID_H
+0x02 PAN_REG_MOTION_STAUS
+0x03 PAN_REG_DELTA_X
+0x04 PAN_REG_DELTA_Y
+0x05 PAN_REG_OPRATION_MODE
+0x06 PAN_REG_CONFIG
+0x07 PAN_REG_IMAGE_QUALITY
+0x08 PAN_REG_OPRATION_STATE
+0x09 PAN_REG_WRITE_PROTECT
+0x0A PAN_REG_SLEEP_1
+0x0B PAN_REG_ENTER_TIME
+0x0C PAN_REG_SLEEP_2
+0x0D PAN_REG_IMAGE_THRESHOLD
+0x0E PAN_REG_IMAGE_RECGNITION
+
+
+0x06 MOUSE_DPI_ADDRESS
+0x05 MOUSE_P3610_DPI_ADDRESS
+0x0D MOUSE_P3212_DPI_XADDRESS
+0x0E MOUSE_P3212_DPI_YADDRESS
+
+
+0x06 MOUSE_FPGA_RF_WORK_DEBUG_GPIO
+0x02 MOUSE_FPGA_DEBUG_GPIO
+
+)
+
+(
+0x01 ADV_FLAG_LIMITED_DISCOVERABLE
+0x04 ADV_FLAG_BREDR_NOT_SUPPORTED
+)
+
+(
+4 TEST_GPIO
+)
+
+(
+1 LE_LPM_DISABLE
+0 LE_LPM_ENABLE
+
+12 LE_INTERVAL_15MS
+9 LE_INTERVAL_11_25MS//11.25ms
+7 LE_INTERVAL_8_75MS//8.75ms
+)
+
+(
+0xb9 FLASH_COMMAND_DEEP_POWER_DOWN
+0xab FLASH_COMMAND_RELEASE_DEEP_POWER_DOWN
+)
+
+(
+0 MULTI_LED_ON
+1 MULTI_LED_BLINK
+)
+
+(
+0 DIS_BUTTON_UP
+1 DIS_BT_BUTTON
+2 DIS_COMM_BUTTON
+)
+
+(
+0x017700 G24_LONG_SLEEP_STEP1	//8ms
+0x249f00 G24_LONG_SLEEP_STEP2	//200ms
+0x604800 G24_LONG_SLEEP_STEP3	//500ms
+)
+
+(
+8 LOW_VOLTAGE_LED_COUNT
+)
+
+(
+0x0708 BLE_DIRECT_ADV_TIMEOUT
+0x0a BLE_POWERON_RECONN_TIMER
+)
+
+//******g24.format******//
+(
+3 QUEUE_ELE_COUNT
+32 QUEUE_ELE_LENGTH
+)
+
+(
+3 retry_24g
+1 NO_ACK_24G
+0 WITH_ACK_24G
+
+0 ENSURE_OFF_24G
+1 ENSURE_ON_24G
+
+0x10 ABORT_DATA
+0x40 RSSI_SENSITIVITY
+
+0x4e G24_PAIR_CH
+)
+
+(
+0 disable_24g
+1 tx_24g
+2 rx_24g
+
+0 bit_ack_24g
+)
+
+//mem_24g_interrupt
+(
+0 rx_dr
+1 rx_sync
+4 tx_ds
+5 tx_fail
+)
+
+//mem_24g_data_type
+(
+0x07 bits_data
+//0-2 data type
+3 bit_abort
+4 bit_hop
+5 bit_sync
+//6-7 channel offset
+)
+
+(
+0 STATE_24G_STOP
+0 STATE_24G_START
+1 STATE_24G_PAIR
+2 STATE_24G_RECONN
+)
+
+//mem_24g_pairing_sm
+(
+0 STATE_24G_PAIRING_NULL
+1 STATE_24G_PAIRING_1
+2 STATE_24G_PAIRING_2
+3 STATE_24G_PAIRING_3
+0X11 STATE_24G_PAIRING_1_WAITING_ACK
+0X12 STATE_24G_PAIRING_2_WAITING_ACK
+0X13 STATE_24G_PAIRING_3_WAITING_ACK
+0XFF STATE_24G_PAIRING_SUCCESS
+)
+
+(
+0 DONGLE_WORK	   		//connect mode normal
+1 DONGLE_BIND			//code pair mode
+2 DONGLE_TEST			//test mode
+3 DONGLE_CODE			//PC_application
+4 DONGLE_PCBA			//PCBA_TEST
+5 DONGLE_DEBUG
+6 DONGLE_MODE_MAX
+7 DONGLE_SEARCH
+0 CLEAR_INIT
+)
+
+(
+0x01 DATATYPE_MOUSE	//mouse
+0x02 DATATYPE_KEYBOARD	//keyboard
+0xAA DATATYPE_BIND		//bind step 1
+0x55 DATATYPE_CONFIG	//bind step 2
+0x22 DATATYPE_OK	//bind step 3
+
+0x01 BIND_MOUSE
+0x02 BIND_KEYBOARD
+)
+
+(
+112 G24_DONGLE_ADDR
+)
+
+(
+0xa0 COMMAND_MODE     //BYTE 0
+0X81 COM_MODE_BIND	//BYTE 1
+0X82 COM_MODE_TEST	//BYTE 1
+)
+(
+0xa1 COMMAND_BIND		//BYTE 0
+0X01 COM_BIND_GET		//1
+0X84 COM_BIND_EXIT		//1
+0XA7 COM_READ_MODE	//1
+)
+(
+0xa2 COMMAND_TEST	//BYTE 0
+0X81 COM_TEST_SC		//	进入单载波
+0x82 COM_TEST_CD		// fcc测试
+0x83 COM_TEST_DAT		// 数据测试
+0X84 COM_TEST_LOW_CH  //低频点
+0X85 COM_TEST_MID_CH	//中频点
+0X86 COM_TEST_HIG_CH	//高频点
+0X87 COM_TEST_SW_HIG	//自动切换频点为高 1mhz
+0X88 COIM_TEST_SW_LOW	//自动切换频点为低 1mhz
+0X89 COM_TEST_SW_STOP	//停止自动切换频点
+0X8A COM_TEST_POW_5		//设置输出功率5dbm
+0X8B COM_TEST_POW_0		//0dbm
+0X8C COM_TEST_POW_N5		//-5dbm
+0X8D COM_TEST_POW_N10		//-10dbm
+0X8E COM_TEST_EXIT			//退出测试模式
+)
+(
+0xa6 COMMAND_CURRENT_PROJECT
+0xa7 COMMAND_CURRENT_MODE
+0xa9 COMMAND_CURRENT_FW_VERSION
+)
+
+//user defined cmd
+(
+0xb0 COMMAND_USER_DEFINED
+)
+
+(
+0x15 PRODUCT_ID
+0 FW_VERSION0
+0 FW_VERSION1
+1 FW_VERSION2
+7 FW_VERSION3
+)
+
+(
+8 TIMER_NODATA
+640 TIMER_NODATA_DELAY	//200ms
+
+11 TIMER_MS_BLANK
+320 TIMER_MS_BLANK_DELAY
+
+12 TIMER_KB_MUL_BLANK
+320 TIMER_KB_MUL_BLANK_DELAY
+
+14 TIMER_KB_BLANK
+320 TIMER_KB_BLANK_DELAY
+)
+
+(
+0 KB_NORMAL_REPORT_ID
+1 MS_REPORT_ID
+3 KB_MULTIKEY_REPORT_ID
+)
+
+(
+7 RSSI_BUF_LEN_SIGNAL
+255 RSSI_BUF_LEN_NOISE
+0x50 RSSI_THRESH_NOISE
+
+0x77 RSSI_DIS_MIN_24G
+0x82 RSSI_DIS_MAX_24G
+
+0x75 RSSI_DIS_MIN_BLE
+0x80 RSSI_DIS_MAX_BLE
+)
+
+(
+//power control
+0x01 TXPWR_0DB
+0x02 TXPWR_3DB
+0x04 TXPWR_5DB
+0x10 TXPWR_f5DB
+
+124 POWER_CTRL_MAX_PACKET_CNT
+
+2 POWER_CTRL_LOSSPAC_THRESH_UP0
+0 POWER_CTRL_LOSSPAC_THRESH_DOWN0
+0x20 POWER_CTRL_RSSI_THRESH_DOWN0
+
+5 POWER_CTRL_LOSSPAC_THRESH_UP1
+0 POWER_CTRL_LOSSPAC_THRESH_DOWN1
+0x60 POWER_CTRL_RSSI_THRESH_DOWN1
+
+10 POWER_CTRL_LOSSPAC_THRESH_UP2
+0 POWER_CTRL_LOSSPAC_THRESH_DOWN2
+0x80 POWER_CTRL_RSSI_THRESH_DOWN2
+)
+
+//mem_send_data_24g_short_lpm
+(
+0 SHORT_LPM_STATE_POLLING 	
+1 SHORT_LPM_STATE_DATA
+2 SHORT_LPM_STATE_NODATA
+3 SHORT_LPM_STATE_BUTTON_WHEEL
+)
+
+(
+81000 G24_8125_INTERVAL_PARAM
+78000 G24_78125_INTERVAL_PARAM
+)
+
+(
+1 G24_TX_TIMER_INT_ENABLE
+0 G24_TX_TIMER_INT_DISABLE
+)
+
+(
+0 G24_DISCONN_STATE
+1 G24_CONN_STATE
+
+
+4 G24_CH_NUMBER
+8 G24_CH_POLL_COUNT
+0x0708 G24_DISCONN_NODATA_TIMER
+)
+
+
+/**
+*  @file:bt_utility_format.upper
+*  @author: lei.zhu
+*  utility header file. inlcude timer
+*  Copyright:  (C)Hanlynn Technology    
+*/
+
+memalloc(
+
+/*
+    temp parameter
+*/
+2 mem_hold_contr
+2 mem_hold_contw
+1 mem_fifo_temp
+
+8 mem_pdatatemp
+8 mem_temp //8 bytes
+4 mem_timeup // 4 bytes
+4 mem_rega //4 bytes
+4 mem_regb //4 bytes
+3 mem_regc //3 bytes
+2 mem_contr //2 bytes
+2 mem_contw //2 bytes
+
+1 mem_wakup_from_power_flag
+4 mem_saved_gpio_in
+
+0 mem_shutter_random_mac_data_temp
+0 mem_shutter_config_data_temp
+0 mem_le_adv_channel_map_temp
+
+0 mem_le_data_len_temp	//1byte
+0 mem_tx_fifo_map_temp
+0 mem_rpn_dlci		//1byte
+0 mem_event_cmd_response_content	//2byte
+0 mem_le_prand		//16byte
+0 mem_AES_CMAC_k	 //16 bytes
+0 mem_regext_index 	//1 bytes
+1 mem_temp_block0
+0 mem_le_data_temp	//15bytes
+15 mem_temp_block1
+0 mem_le_aes_128	//16byte
+0 mem_regext   //64 bytes
+0 mem_AES_CMAC_k1  //16 bytes
+16 mem_temp_block2
+0 mem_AES_CMAC_k2  //16 bytes
+16 mem_temp_block3
+0 mem_AES_CMAC_temp  // 16 bytes
+16 mem_temp_block4
+0 mem_AES_CMAC_M_last // 16 bytes
+1 mem_module_uart_cmd
+1 mem_module_uart_opcode
+1 mem_module_uart_len
+1 mem_module_temp_nl_discard_packet
+12 mem_temp_block5
+0 mem_le_mackey //16 bytes
+0 mem_app_receive_temp
+2 mem_key_value_temp
+2 mem_key_value
+1 mem_key_value_temp1
+1 mem_key_value_temp2
+1 mem_key_value_temp3
+1 mem_key_value_temp4
+1 mem_key_value_temp5
+1 mem_key_value_temp6
+6 mem_temp_block6
+
+1 mem_usb_status
+1 mem_usb_fifo_empty
+1 mem_usb_read_len
+64 mem_usb_rxbuf
+2 mem_bufptr
+1 mem_remain
+20 mem_devicedesc
+2 mem_hidreportdesc_kb
+2 mem_hidreportdesc_m
+100 mem_confdesc
+5 mem_string0
+30 mem_string1
+64 mem_string2
+30 mem_string3
+2 mem_usb_zero_packet
+2 mem_usb_ones_packet
+2 mem_usb_two_packet
+1 mem_usb0_state
+
+1 mem_usb_offline_check_gpio
+1 mem_usb_tx_interval
+
+0 mem_usb_clear_mem_start
+0 mem_usb_setup
+1 mem_usb_setup_bmRequestType
+1 mem_usb_setup_bRequest
+1 mem_usb_setup_bValue
+1 mem_usb_setup_bValueH
+2 mem_usb_setup_wIndex
+1 mem_usb_setup_bLength
+1 mem_usb_setup_bLengthH
+64 mem_usb0_setup
+64 mem_usb0_set_report_data
+64 mem_usb0_get_report_data
+1 mem_usb_state
+1 mem_usb_tx_wait
+1 mem_usb_tx_enable
+1 mem_usb_remote_wakeup
+1 mem_usb_clear_remote_wakeup
+1 mem_usb_ep0_stall_status
+1 mem_usb_ep1_stall_status
+1 mem_usb_ep2_stall_status
+1 mem_usb_ep3_stall_status
+2 mem_dsc_info_data_pointer
+1 mem_dsc_info_len
+1 mem_usb0_data_ready_report
+1 mem_usb_tx_win_enable
+1 mem_usb_tx_mac_enable
+1 mem_usb_device_enumeration_endflag
+1 mem_usb_wakestate_onetime_flag
+1 mem_usb_mac_wakeup_trig
+1 mem_usb_set_high_addr_flag
+1 mem_usb_set_protocol_value
+1 mem_usb_set_protocol_status
+1 mem_usb_get_protocol_flag
+1 mem_usb_idle_flag
+1 mem_usb_idle_rate
+2 mem_usb_setup_bValue_temp
+1 mem_usb0_get_set_report
+1 mem_usb_ep1_data
+1 mem_usb_ep2_data
+1 mem_usb_clear_halt
+16 mem_usb_mouse_data
+16 mem_usb_kb_data
+16 mem_usb_kb_multikey
+8 mem_usb_kb_data_sta_data
+8 mem_usb_kb_data_last_data
+3 mem_usb_kb_multikey_sta_data
+3 mem_usb_kb_multikey_last_data
+1 mem_usb_kb_blank_data_enable
+1 mem_usb_kb_mul_blank_data_enable
+1 mem_usb_test_cnt
+0 mem_usb_clear_mem_end
+1 mem_usb_test_kb
+
+256 mem_rssi_noise_buffer
+256 mem_rssi_noise_dg_buffer
+256 mem_rssi_noise_ms_buffer
+256 mem_rssi_noise_kb_buffer
+32 mem_24g_common_temp
+
+2 mem_data_pre
+2 mem_data_current
+3 mem_data_sum
+
+//zcode
+1 mem_zcode_temp_param0	//zcode num
+2 mem_zcode_temp_param1	//patch ram func addr
+2 mem_zcode_temp_param2	//patch ram func addr
+
+
+ifdef DEBUGLOG
+1   mem_debuglog_temp
+1   mem_debuglog_type
+1	mem_debuglog_datalen
+2	mem_debuglog_dataval
+2	mem_debuglog_datatype
+1	mem_debuglog_tail
+8	mem_debuglog_pdata
+endif
+
+)
+
+
+(
+/*mem_util_timer_flag0_7*/
+    0   UTIL_TIMER_0_USED
+    1   UTIL_TIMER_1_USED
+    2   UTIL_TIMER_2_USED
+    3   UTIL_TIMER_3_USED
+    4   UTIL_TIMER_4_USED
+    5   UTIL_TIMER_5_USED
+    6   UTIL_TIMER_6_USED
+    7   UTIL_TIMER_7_USED
+/*mem_util_timer_flag8_15*/
+    0   UTIL_TIMER_8_USED
+    1   UTIL_TIMER_9_USED
+    2   UTIL_TIMER_10_USED
+    3   UTIL_TIMER_11_USED
+    4   UTIL_TIMER_12_USED
+    5   UTIL_TIMER_13_USED
+    6   UTIL_TIMER_14_USED
+    7   UTIL_TIMER_15_USED
+)
+
+//util fifo param
+(
+
+8 UTIL_FIFO_LEN
+-1 UTIL_FIFO_OFFSET
+)
+
+(
+	0xAA DEBUGLOG_HEAD
+	0x00 DEBUGLOG_TYPE
+	0x04 DEBUGLOG_LEN
+	0xBB DEBUGLOG_TAIL
+)
+
+(
+	0x1000 DEBUGLOG_DTYPE_CALLBACK
+	0x1001 DEBUGLOG_DTYPE_EVENT
+	0x1002 DEBUGLOG_DTYPE_CMD
+	0x1003 DEBUGLOG_DTYPE_STATUS
+	0x1004 DEBUGLOG_DTYPE_MISC
+	0x1005 DEBUGLOG_DTYPE_CONN_SM
+	0x1006 DEBUGLOG_DTYPE_UPPER_SM
+	0x1007 DEBUGLOG_DTYPE_PARSE_LMP
+	0x1008 DEBUGLOG_DTYPE_SEND_LMP
+)
+
+//DEBUGLOG_DTYPE_CALLBACK
+(
+	0x0000 CALLBACK_24G_DATA
+	0x0001 CALLBACK_LE_PROCESS
+	0x0002 CALLBACK_BT_PROCESS
+	0x0003 CALLBACK_BEFORE_LPM
+	0x0004 CALLBACK_BB_EVENT_PROCESS
+	0x0005 CALLBACK_IDLE_PROCESS
+	0x0006 CALLBACK_BEFORE_HIBERNATE
+	0x0007 CALLBACK_ATT_WRITE
+	0x0008 CALLBACK_EVENT_TIMER
+)
+
+//DEBUGLOG_DTYPE_EVENT
+//(
+
+//)
+
+//DEBUGLOG_DTYPE_CMD
+//(
+
+//)
+
+//DEBUGLOG_DTYPE_STATUS
+(
+	0x0000 STATUS_CODE_WAKE
+	0x0001 STATUS_LPM_WAKE
+	0x0004 STATUS_24G_START 
+)
+//DEBUG_DTYPE_MISC
+(
+	0x0000 MISC_LE_RETRANSMIT
+	0x0001 MISC_LOST_MOUSEDATA
+	0x0002 MISC_TXPOWER_0
+	0x0003 MISC_TXPOWER_1
+	0x0004 MISC_TXPOWER_2
+	0x0006 MISC_PULL_MOUSEDATA
+	0x0007 MISC_PUSH_MOUSEDATA
+	0x0008 MISC_LE_RETRANSMIT_MD
+
+
+)
+
+0x1f00 mem_zcode_buff   
+
+256 ZCODE_BUFF_SIZE
+64 ZCODE_CODE_SIZE
+0xff ZCODE_FLAG
+
+0x00 ZCODE_00
+0x01 ZCODE_01
+0x02 ZCODE_02
+0x03 ZCODE_03
+0x04 ZCODE_04
+0x05 ZCODE_05
+0x06 ZCODE_06
+0x07 ZCODE_07
+0x10 ZCODE_10
+0x11 ZCODE_11
+0x12 ZCODE_12
+0x13 ZCODE_13
+0x14 ZCODE_14
+0x15 ZCODE_15
+0x16 ZCODE_16
+0x17 ZCODE_17
+0x20 ZCODE_20
+0x21 ZCODE_21
+0x22 ZCODE_22
+0x23 ZCODE_23
+0x24 ZCODE_24
+0x25 ZCODE_25
+0x26 ZCODE_26
+0x27 ZCODE_27 
+0x30 ZCODE_30
+0x31 ZCODE_31
+0x32 ZCODE_32
+0x33 ZCODE_33
+0x34 ZCODE_34
+0x35 ZCODE_35
+0x36 ZCODE_36
+0x37 ZCODE_37 
+0x40 ZCODE_40
+0x41 ZCODE_41
+0x42 ZCODE_42
+0x43 ZCODE_43
+0x44 ZCODE_44
+0x45 ZCODE_45
+0x46 ZCODE_46
+0x47 ZCODE_47
+0x50 ZCODE_50
+0x51 ZCODE_51
+0x52 ZCODE_52
+0x53 ZCODE_53
+0x54 ZCODE_54
+0x55 ZCODE_55
+0x56 ZCODE_56
+0x57 ZCODE_57
+0x60 ZCODE_60
+0x61 ZCODE_61
+0x62 ZCODE_62
+0x63 ZCODE_63
+0x64 ZCODE_64
+0x65 ZCODE_65
+0x66 ZCODE_66
+0x67 ZCODE_67
+0x70 ZCODE_70
+0x71 ZCODE_71
+0x72 ZCODE_72
+0x73 ZCODE_73
+0x74 ZCODE_74
+0x75 ZCODE_75
+0x76 ZCODE_76
+0x77 ZCODE_77
+0x80 ZCODE_80
+0x81 ZCODE_81
+0x82 ZCODE_82
+0x83 ZCODE_83
+0x84 ZCODE_84
+0x85 ZCODE_85
+0x86 ZCODE_86
+0x87 ZCODE_87
+0x90 ZCODE_90
+0x91 ZCODE_91
+0x92 ZCODE_92
+0x93 ZCODE_93
+0x94 ZCODE_94
+0x95 ZCODE_95
+0x96 ZCODE_96
+0x97 ZCODE_97
+0xA0 ZCODE_A0
+0xA1 ZCODE_A1
+0xA2 ZCODE_A2
+0xA3 ZCODE_A3
+0xA4 ZCODE_A4
+0xA5 ZCODE_A5
+0xA6 ZCODE_A6
+0xA7 ZCODE_A7
+0xB0 ZCODE_B0
+0xB1 ZCODE_B1
+0xB2 ZCODE_B2
+0xB3 ZCODE_B3
+0xB4 ZCODE_B4
+0xB5 ZCODE_B5
+0xB6 ZCODE_B6
+0xB7 ZCODE_B7
+0xC0 ZCODE_C0
+0xC1 ZCODE_C1
+0xC2 ZCODE_C2
+0xC3 ZCODE_C3
+0xC4 ZCODE_C4
+0xC5 ZCODE_C5
+0xC6 ZCODE_C6
+0xC7 ZCODE_C7
+0xd0 ZCODE_D0
+0xd1 ZCODE_D1
+0xe0 ZCODE_e0
+0xe1 ZCODE_e1
+0xe2 ZCODE_e2
+
+
+
+
+/************************************************************************/
+/* RCS HEADER -- DO NOT ERASE                                           */
+/* $Author: Administrator $                                                     */
+/* $Id: bt_var.osi,v 1.1 2009-09-28 04:06:18 Administrator Exp $   */
+/* Orisil Technology                                                 */
+/************************************************************************/
+
+
+/* packet types */
+(
+  0x02 FHS_PACKET 
+  0x03 DM1_PACKET 
+  0x03 DM1_LMP_PACKET 
+  0x04 DH1_PACKET 
+  0x05 HV1_PACKET 
+  0x06 HV2_PACKET 
+  0x07 HV3_PACKET 
+  0x08 DV_PACKET 
+  0x09 AUX1_PACKET 
+  0x0a DM3_PACKET 
+  0x0b DH3_PACKET 
+  0x0e DM5_PACKET 
+  0x0f DH5_PACKET 
+)
+
+
+/* mem_lmp_respond */
+(
+  0 RESPOND_TO_ALL
+  1 PASS_EVERYTHING
+  2 PASS_ONLY_UNKNOWNS
+  3 RESPOND_TO_LMPS
+)
+/* SCO algorithm defines */
+(
+  0 ULAW
+  1 ALAW
+  2 CVSD
+)
+/* encryption modes */
+(
+  0 NO_ENCRYPTION
+  1 PT_PT_ENCRYPTION
+  2 PT_BROADCAST_ENCRYPTION
+)
+
+/* bits used in mem_lmp_state1 variable */
+(
+  0 LMP_STATE_DETACH
+  1 LMP_STATE_HOLD
+  2 LMP_STATE_SNIFF
+  3 LMP_STATE_PARK
+  4 LMP_STATE_WAIT_SCO_CREATE
+  5 LMP_STATE_WAIT_SCO_KILL
+  6 LMP_STATE_SCO3
+  7 LMP_STATE_WAIT_SCO_START
+)
+/* mem_lmp_state2 */
+(
+  0 LMP_WAIT_FOR_SNIFF_ACCEPT
+  1 LMP_WAIT_FOR_PARK_ACCEPT
+  2 LMP_SEND_UNPARK_ACCEPTED
+  3 LMP_SEND_ENCRYPTION_START
+  4 LMP_SEND_ENCRYPTION_STOP
+  5 MESSAGE_QUEUE
+  7 LMP_STATE_WAIT_BEACON
+)
+/* mem_lmp_state3 */
+(
+ 0 INQUIRY_STATE_CHECK
+ 1 HOST_DELAY_MESSAGE
+ 2 VARIABLE_DELAY
+ 3 TEST_MODE_START_LOOPBACK
+ 4 TEST_MODE_START_PATTERN
+ 5 PARSE_TEST_CONTROL_MESSAGE
+ 6 H_AUTH_SEND_COMB_KEY
+)
+/* mem_rx_status */
+(
+  0 FROM_MASTER
+)
+/* mem_ms_flag */
+(
+  0 MS_RECEIVE_SWITCH_REQ
+  1 MS_SEND_SETUP_COMPLATE
+)
+/* mem_conn_sm */
+(
+  0 CONN_SM_STANDBY
+  1 CONN_SM_WAIT_PAGE
+  2 CONN_SM_SEND_FEATURES
+  3 CONN_SM_WAIT_FEATURES_RES
+  4 CONN_SM_SEND_CONN_REQ
+  5 CONN_SM_WAIT_CONN_ACCEPT
+  6 CONN_SM_AUTH_PAIR
+  7 CONN_SM_AUTH_PAIR_WAIT
+  8 CONN_SM_WAIT_MUTAL_AUTH
+  9 CONN_SM_ENCRYPT
+  0xa CONN_SM_ENCRYPT_WAIT
+  0xb CONN_SM_ENCRYPT_WAIT_CLEAR
+  0xc CONN_SM_SEND_SETUP_COMPLETE
+  0xd CONN_SM_WAIT_SETUP_COMPLETE 
+  0xe CONN_SM_SEND_SWITCH
+  0xf CONN_SM_DETACH_DELAY
+  0x10 CONN_SM_WAIT_SWITCH_AFTER_HOST_CONNECTION
+  0x11 CONN_SM_DELAY_RESTART_CONNECTION
+  0x12 CONN_SM_SEND_VERSION
+  0X13 CONN_SM_WAIT_VERSION
+  0x14 CONN_SM_SEND_FEATURES_EXT
+  0x15 CONN_SM_WAIT_FEATURES_EXT
+  0x16 CONN_SM_PAIRING
+  0x17 CONN_SM_AUTH
+  0x18 CONN_SM_PAIRING_WAIT
+  0x19 CONN_SM_AUTH_WAIT
+  0x1a CONN_SM_DONE
+  0x1b CONN_SM_WAIT_DONE
+)
+
+/* btStateConn1 */
+(
+  0 CONN_STANDBY
+  1 CONN_MASTER_SEND_CONN_REQ
+  2 CONN_MASTER_WAIT_FOR_CONN_ACCEPTED
+  3 CONN_MASTER_AUTH
+  4 CONN_MASTER_WAIT_FOR_FEATURES
+  5 CONN_MASTER_WAIT_FOR_SETUP_COMPLETE
+  6 CONN_MASTER_WAIT_FOR_MAX_SLOT
+  7 CONN_SLAVE_CONN_REQUESTED
+  8 CONN_SLAVE_WAIT_FOR_SETUP_COMPLETE
+  9 CONN_SLAVE_AUTH
+  10 CONN_USING_HOST_OPCODE
+  11 CONN_SLAVE_AUTH_WAIT
+  12 CONN_SLAVE_ENCRYPT_WAIT
+)
+
+/* mem_lmp_conn_state */
+(
+  0 RECEIVED_CONN_REQ
+  1 SENT_CONN_REQ
+  2 RECEIVED_SETUP_COMPLETE
+  3 SENT_SETUP_COMPLETE
+  4 HOST_CONNECTION_MADE
+  6 INIT_COMPLETE
+  7 SNIFF_NEGOTIATE
+)
+/* btStateAuth1 */
+(
+  0 WAIT_FOR_KINIT
+  1 WAIT_FOR_LKA
+  2 WAIT_FOR_LKB
+  3 WAIT_FOR_SRES
+  4 EXAMINE_RECEIVED_SRES
+  5 SEND_AU_RAND
+  6 WAIT_FOR_KC
+  7 DELAYED_ENCRYPT_RESPONSE
+)
+/* btStateAuth2 */
+(
+  0 SENT_SRES
+  1 RECEIVED_IN_RAND
+  2 SENT_AU_RAND
+  3 AUTHENTICATION_FAILED
+  4 AUTHENTICATION_PASSED
+  5 STARTED_AUTH
+  6 SENT_COMB_KEY
+  7 SENT_IN_RAND
+)
+/* btStateAuth3 */
+(
+  0 RECEIVED_AU_RAND
+  1 RECEIVED_SRES
+  2 MUTUALLY_AUTHENTICATE
+)
+/* btStateHost */
+(
+  0 H_AUTH_STARTED
+  2 H_ENCRYPTION_MODE_REQ_PT
+  3 H_ENCRYPTION_KEY_SIZE
+  4 H_ENCRYPTION_START
+  5 H_ENCRYPTION_STOP
+  6 H_AUTH_SECOND_TRY
+)
+/* btStateEncrypt2 */
+(
+  0 RECEIVED_ENCRYPT_MODE_REQ_PT
+  1 RECEIVED_ENCRYPT_KEY_SIZE
+  2 RECEIVED_ENCRYPT_START
+  3 RECEIVED_ENCRYPT_STOP
+  4 STARTED_ENCRYPT_START
+)
+/* mem_ms_state */
+(
+  0x00 MS_STANDBY
+  0x11 M_MINIT_1
+  0x12 M_MINIT_2
+  0x20 M_SINIT_0
+  0x30 S_MINIT_0
+  0x31 S_MINIT_1
+  0x32 S_MINIT_2
+  0x41 S_SINIT_1
+  0x42 S_SINIT_2
+  0x43 S_SINIT_3
+)
+/* mem_test_mode */
+(
+  0 TEST_MODE_ALLOWED
+  1 TEST_MODE_ACTIVE
+)
+/* values for mem_tester_emulate */
+(
+  0x00 NO_TEST_MODE
+  0x00 CONTINUOUS_TRANSMIT
+  0x10 TRANSMIT_TEST
+  0x08 LOOPBACK
+)
+
+/* mem_tx_misc */
+(
+  1 SEND_TX_ADDR
+)
+/* BBHWREG_page_stat */
+(
+  5 PAGE_MODE_END
+)
+/* host_return_parameters_status codes */
+(
+  0x00 HOST_RETURN_SUCCESS
+  0x01 HOST_RETURN_SLAVE_CANT_ISSUE
+  0x02 HOST_RETURN_NO_CONNECTION
+  0x04 HOST_RETURN_PAGE_TIMEOUT
+  0x05 HOST_RETURN_INQUIRY_TIMEOUT
+  0x08 HOST_RETURN_CONNECTION_TIMEOUT
+  0x09 HOST_RETURN_MAX_NUM_CONNECTIONS
+  0x0a HOST_RETURN_MAX_NUM_SCO
+  0x0b HOST_RETURN_MAX_NUM_ACL
+  0x0c HOST_RETURN_SECURITY_REASONS
+  0x10 HOST_RETURN_HOST_TIMEOUT
+  0x11 HOST_RETURN_UNSUPPORTED_FEATURE_PARAMETER
+  0x13 HOST_RETURN_OTHER_END_USER
+  0x14 HOST_RETURN_OTHER_END_LOW_RESOURCE
+  0x15 HOST_RETURN_OTHER_END_POWER_OFF
+  0x16 HOST_RETURN_LOCAL_HOST
+  0x18 HOST_RETURN_PAIRING_NOT_ALLOWED
+  0x19 HOST_RETURN_UNKNOWN_PDU
+  0x1a HOST_RETURN_UNSUPPORTED_REMOTE_FEATURE
+  0x1d HOST_RETURN_SCO_AIR_MODE_REJECTED
+  0x20 HOST_RETURN_UNSUPPORTED_LMP_VALUE
+  0x21 HOST_RETURN_AUTHENTICATION_FAILURE
+  0x22 HOST_RETURN_CHANGED_EXISTING_SCO
+  0x23 HOST_RETURN_HOST_REJECTED
+  0x24 HOST_RETURN_UNSPECIFIED_ERROR
+  0x25 HOST_RESET
+  0x26 HOST_RETURN_BAD_HANDLE
+
+  0x00 HOST_RETURN_ACCEPT_COMMAND
+  0x01 HOST_RETURN_REJECT_COMMAND
+)
+/* host_present */
+(
+  0 HOST_IS_PRESENT
+  1 BCI_IS_PRESENT
+  2 DONT_INIT_RADIO
+)
+/* mem_master_state */
+(
+  0 MASTER_STATE_STANDBY
+  1 MASTER_INQUIRY
+)
+/* misc */
+(
+  92 SECOND_SWITCH_REQ
+  93 SLAVE_DELAY_DETACH
+  94 MASTER_DELAY_DETACH
+  95 UNSNIFF_DELAY_DETACH
+  0 WE_STARTED_AS_MASTER
+  1 WE_STARTED_AS_SLAVE
+)
+/* mem_host_commands */
+(
+  0x01 HOST_INQUIRY
+  0x02 HOST_INQUIRY_CANCEL
+  0x03 HOST_CREATE_CONNECTION
+  0x04 HOST_DISCONNECT_CONNECTION
+  0x05 HOST_ADD_SCO_REQUEST
+  0x06 HOST_REMOTE_NAME_REQUEST
+  0x07 HOST_WRITE_SUPPORTED_FEATURES
+  0x08 HOST_SET_TX_LEVEL
+  0x09 HOST_SET_RX_LEVEL
+  0x0a HOST_SNIFF_REQUEST
+  0x0b HOST_UNSNIFF_REQUEST
+  0x0c HOST_WRITE_LINK_SUPERVISION_TIMEOUT
+  0x0e HOST_WRITE_SCAN_ENABLE
+  0x0f HOST_READ_AUDIO_QUALITY
+  0x10 HOST_ENABLE_DEVICE_UNDER_TEST
+  0x14 HOST_BUTTON_CONFIGURE
+  0x15 HOST_SET_LOW_BATTERY_LEVEL
+  0x16 HOST_WRITE_LOCAL_NAME
+  0x17 HOST_WRITE_LOCAL_PIN
+  0x18 HOST_KILL_SCO_REQUEST
+  0x19 HOST_QOS_REQ
+
+  0x1a HOST_FEATURES_REQUEST
+  0x1b HOST_VERSION_REQUEST
+  0x1c HOST_TIMING_REQUEST
+  0x1d HOST_CLK_OFFSET_REQUEST
+  0x1e HOST_AUTHENTICATE
+  0x1f HOST_START_ENCRYPTION
+  0x20 HOST_STOP_ENCRYPTION
+  0x21 HOST_HOLD_REQUEST
+  0x22 HOST_HOLD_FORCE
+  0x23 HOST_PARK_REQUEST
+  0x24 HOST_MOD_BEACON
+  0x25 HOST_SET_BROADCAST_SCAN_WINDOW
+  0x26 HOST_UNPARK_PM_REQUEST
+  0x27 HOST_UNPARK_BD_REQUEST
+  0x28 HOST_SLAVE_REQUEST_UNPARK
+  0x29 HOST_DECREASE_POWER_REQUEST
+  0x2a HOST_INCREASE_POWER_REQUEST
+  0x2b HOST_SEND_PREFERRED_RATE
+  0x2c HOST_MAX_SLOT_REQ
+  0x2d HOST_MAX_SLOT_FORCE
+  0x2e HOST_PAGE_MODE_REQUEST
+  0x2f HOST_PAGE_SCAN_MODE_REQUEST
+  0x30 HOST_MASTER_SLAVE_SWITCH
+  0x31 HOST_SEND_AUTO_RATE
+  0x32 HOST_PAGE_CANCEL
+  0x33 HOST_CHANGE_LINK_KEY
+  0x34 HOST_RADIO_READ
+  0x35 HOST_RADIO_WRITE
+  0x36 HOST_REMOTE_SLAVE_INIT_UNPARK_REQUESTED
+
+  0x40 HOST_REMOTE_CONNECTION_REQUESTED
+  0x41 HOST_REMOTE_DETACH
+  0x42 HOST_REMOTE_SCO_CREATE_REQUESTED
+  0x43 HOST_REMOTE_SCO_KILL_REQUESTED
+  0x44 HOST_REMOTE_PARK_REQUESTED
+  0x45 HOST_REMOTE_UNPARK_REQUESTED
+  0x46 HOST_REMOTE_SNIFF_REQUESTED
+  0x47 HOST_REMOTE_UNSNIFF_REQUESTED
+  0x48 HOST_REMOTE_HOLD_REQUESTED
+  0x49 HOST_REMOTE_AUTHENTICATION
+  0x4a HOST_REMOTE_START_ENCRYPTION_REQUESTED
+  0x4b HOST_REMOTE_STOP_ENCRYPTION_REQUESTED
+  0x4c HOST_MODE_CHANGE_EVENT
+  0x4d HOST_REMOTE_TEST_ACTIVATE
+  0x4e HOST_REMOTE_TEST_CONTROL
+  0x4f HOST_REMOTE_TIMING_REQUEST
+)
+/* BCI interface (not used if not compiled in ) */
+(
+  0x01 BCI_INQUIRY
+  0x02 BCI_INQUIRY_CANCEL
+  0x03 BCI_CREATE_CONNECTION
+  0x04 BCI_DISCONNECT
+  0x05 BCI_ADD_SCO_CONNECTION
+  0x06 BCI_REMOTE_NAME_REQUEST
+  0x07 BCI_WRITE_SUPPORTED_FEATURES
+  0x08 BCI_SET_TX_POWER_LEVEL
+  0x09 BCI_SET_RX_POWER_LEVEL
+  0x0a BCI_SNIFF_MODE
+  0x0b BCI_EXIT_SNIFF_MODE
+  0x0c BCI_WRITE_LINK_SUPERVISION_TIMEOUT
+  0x0d BCI_WRITE_PAGE_TIMEOUT
+  0x0e BCI_WRITE_SCAN_ENABLE
+  0x0f BCI_GET_AUDIO_QUALITY
+  0x10 BCI_ENABLE_DEVICE_UNDER_TEST
+  0x11 BCI_SEND_DATA
+  0x12 BCI_REGISTER_SERVICE_RECORD
+  0x13 BCI_SERVICE_SEARCH_ATTRIB_REQ
+  0x14 BCI_BUTTON_CONFIGURE
+  0x15 BCI_SET_LOW_BATTERY_LEVEL
+  0x16 BCI_WRITE_LOCAL_NAME
+  0x17 BCI_WRITE_LOCAL_PIN
+  0x18 BCI_REMOVE_SCO_CONNECTION
+  0x19 BCI_QUALITY_OF_SERVICE
+  0x40 BCI_REMOTE_CONNECTION_REQUEST
+  0x41 BCI_REMOTE_DETACH
+  0x42 BCI_REMOTE_ADD_SCO_REQUEST
+  0x43 BCI_REMOTE_REMOVE_SCO_REQUEST
+  0x44 BCI_REMOTE_PARK_REQUEST
+  0x45 BCI_REMOTE_UNPARK_REQUEST
+  0x46 BCI_REMOTE_SNIFF_REQUEST
+  0x47 BCI_REMOTE_UNSNIFF_REQUEST
+  0x48 BCI_REMOTE_HOLD_REQUEST
+  0x49 BCI_REMOTE_AUTHENTICATION_PAIRING_REQUEST
+  0x4a BCI_REMOTE_START_ENCRYPTION_REQUEST
+  0x4b BCI_REMOTE_STOP_ENCRYPTION_REQUEST
+  0x4c BCI_MODE_CHANGE_EVENT
+)
+/* mode changes */
+(
+  0 MODE_CHANGE_ACTIVE
+  1 MODE_CHANGE_SNIFFING
+  2 MODE_CHANGE_PARKED
+  3 MODE_CHANGE_HOLDING
+  4 MODE_CHANGE_SCO_ADDED
+  5 MODE_CHANGE_SCO_REMOVED
+  6 MODE_CHANGE_ACL_CONNECTION
+  7 MODE_CHANGE_DISCONNECT
+  8 MODE_CHANGE_SCO_CHANGED
+  9 MODE_CHANGE_ENCRYPTING
+  10 MODE_CHANGE_NOT_ENCRYPTING
+  11 MODE_CHANGE_BUTTON_UP
+  12 MODE_CHANGE_BUTTON_DOWN
+  13 MODE_CHANGE_BATTERY_LOW
+  14 MODE_CHANGE_RESET
+  15 MODE_CHANGE_INQUIRY_CANCELED_RMTCMD
+  16 MODE_ACTIVE_MSSWITCH_PASSED
+  17 MODE_ACTIVE_MSSWITCH_FAILED
+)
+/* mem_battery - low nibble is level information, upper nibble is status info */
+(
+  6 BATTERY_CHECK_LEVEL
+  7 BATTERY_SENT_STATUS
+)
+/* mem_radio_version */
+(
+  0x02 RADIO_2001
+  0x12 RADIO_2002
+  0x32 RADIO_2002_DDM
+  0x42 RADIO_1008A1
+  0x52 RADIO_1018A0
+)
+/* mem_slave_initiated_conn */
+(
+  0 SLAVE_INIT_AUTHENTICATION
+  1 SLAVE_INIT_ENCRYPTION
+  2 SLAVE_INIT_MASTER_SLAVE_SWITCH
+)
+/* connection_options */
+(
+  0 CONNECTION_AUTH
+  1 CONNECTION_ENCRYPT
+  2 CONNECTION_SWITCH
+  3 CONNECTION_ACL
+  4 CONNECTION_FEATURE_EXT
+)
+/* mem_debug_config */
+(
+  7 AA_INSERTION
+)
Index: rom/ui.prog
===================================================================
--- /branch/mouse_project/YJX_Project/YJX_1059/JDT_172_BD_2.4G&BLE/rom/ui.prog	(nonexistent)
+++ /branch/mouse_project/YJX_Project/YJX_1059/JDT_172_BD_2.4G&BLE/rom/ui.prog	(working copy)
@@ -0,0 +1,701 @@
+ui_init:
+	call lpm_disable_exen_output
+	rtn wake
+	call ui_button_init
+	call ui_timer_init
+	branch ui_led_init_global
+
+ui_dispatch:
+	call ui_led_dispatch
+	
+	branch ui_timer_check
+	
+ui_button_init:
+	fetch 1,mem_ui_button_gpio
+	rtneq UI_BUTTON_GPIO_DISABLE
+	iforce temp
+	call gpio_config_output
+	fetcht 1,mem_ui_button_gpio
+	call gpio_out_inactive
+	nop 100
+	fetcht 1,mem_ui_button_gpio
+	call gpio_config_input
+	branch ui_button_polling
+
+
+	
+ui_button_polling:
+	bpatchx patch3e_3,mem_patch3e
+	fetch 1,mem_ui_button_gpio
+	rtneq UI_BUTTON_GPIO_DISABLE
+	copy pdata,temp
+	call gpio_get_bit
+	nbranch ui_button_up,true
+	//fall through
+ui_button_down:
+	call ui_button_check_long_press
+	fetch 2,mem_ui_state_map
+	set1 UI_STATE_BTN_DOWN
+	store 2,mem_ui_state_map
+	fetch 1,mem_ui_button_last_state
+	rtneq UI_BUTTON_STATE_DOWN
+	jam UI_BUTTON_STATE_DOWN,mem_ui_button_last_state
+	//Down Edge
+	fetch 1,mem_ui_button_timeout
+	store 1,mem_ui_button_timer //start long press timer
+	call lpm_button_get_wake_lock
+	jam BT_EVT_BUTTON_DOWN,mem_fifo_temp
+	branch ui_ipc_send_event
+ui_button_up:
+	fetch 2,mem_ui_state_map
+	set0 UI_STATE_BTN_DOWN
+	store 2,mem_ui_state_map
+	fetch 1,mem_ui_button_last_state
+	rtneq UI_BUTTON_STATE_UP
+	jam UI_BUTTON_STATE_UP,mem_ui_button_last_state
+	//Up Edge
+	jam 0,mem_ui_button_timer//stop long press timer
+	call lpm_button_clean_wake_lock
+	jam BT_EVT_BUTTON_UP,mem_fifo_temp
+	branch ui_ipc_send_event
+
+ui_button_check_long_press:
+	fetch 1,mem_ui_button_timer
+	rtn blank
+	increase -1,pdata
+	store 1,mem_ui_button_timer
+	nrtn blank
+	//Long Press
+	jam BT_EVT_BUTTON_LONG_PRESSED,mem_fifo_temp
+	branch ui_ipc_send_event
+
+lpm_button_get_wake_lock:
+	arg wake_lock_button,queue
+	branch lpm_get_wake_lock
+	
+lpm_button_clean_wake_lock:
+	arg wake_lock_button,queue
+	branch lpm_put_wake_lock
+
+
+
+/***********************ui led function****************************/
+/******************
+led function
+
+ui_led_init_global
+ui_led_on_global
+
+ui_led_off_global
+//input:rega :struct number
+ui_led_blink_start_global
+
+//input:rega :struct number
+//contr: the point that want to set led style address
+ui_led_set_style_global
+
+******************/
+//input:rega :struct number
+//output:regb :current strutct starting pointer
+calc_curr_struct_prt:
+	fetch 2,mem_ui_led_struct_ptr
+	mul32 rega,LED_OFFSET_LENGTH,regb
+	iadd regb,regb
+	rtn
+
+
+ui_led_init_global:
+	fetch 1,mem_ui_led_struct_num
+	rtn blank
+	copy pdata,loopcnt
+	fetch 2,mem_ui_led_struct_ptr
+	copy pdata,regb
+ui_led_init_loop:
+	add regb,LED_OFFSET_LED_GPIO,regc
+	ifetcht 1,regc
+	call gpio_config_output
+	call ui_led_off_static
+	increase LED_OFFSET_LENGTH,regb
+	loop ui_led_init_loop
+	rtn
+
+	
+//input:rega :struct number
+ui_led_on_global:
+	call calc_curr_struct_prt
+	setarg UI_LED_STATE_LIGHTING
+	istore 1,regb
+	call ui_led_stop_timer
+	branch ui_led_on_static
+
+	
+//input:rega :struct number
+ui_led_blink_stop_global:
+ui_led_off_global:
+	call calc_curr_struct_prt
+	setarg UI_LED_STATE_DARKING
+	istore 1,regb
+	call ui_led_stop_timer
+	branch ui_led_off_static
+
+
+//input:rega :struct number
+ui_led_blink_start_global:
+	call calc_curr_struct_prt
+	setarg UI_LED_STATE_BLINK_START
+	istore 1,regb
+	setarg LED_INFINITE_FLASH_NUM
+	istore 1,contw
+	branch ui_led_off_static
+
+
+//input:rega :struct number
+//REGC: the point that want to set led style address
+ui_led_set_style_global:
+	call calc_curr_struct_prt
+	arg LED_OFFSET_LENGTH,loopcnt
+	copy regc,contr
+	copy regb,contw
+	branch memcpy_fast
+
+
+
+ui_led_dispatch:
+	fetch 1,mem_ui_led_struct_num
+	rtn blank
+	arg 0,rega
+ui_led_blink_polling:
+	call ui_led_change_style_by_type
+	increase 1,rega
+	fetch 1,mem_ui_led_struct_num
+	isub rega,null
+	rtn zero
+	branch ui_led_blink_polling
+
+
+ui_led_off_static:
+	add regb,LED_OFFSET_LED_GPIO,regc
+	ifetcht 1,regc
+	branch gpio_out_inactive
+
+
+ui_led_on_static:
+	add regb,LED_OFFSET_LED_GPIO,regc
+	ifetcht 1,regc
+	branch gpio_out_active
+
+
+//input:rega :struct number
+ui_led_change_style_by_type:
+	add rega,ui_led_blink,queue
+	call timer_check
+	nrtn blank			//timer out
+	
+	call calc_curr_struct_prt
+
+	ifetch 1,regb			//led type
+
+	beq UI_LED_STATE_LIGHTING,ui_led_on_static
+	beq UI_LED_STATE_DARKING,ui_led_off_static
+	beq UI_LED_STATE_BLINK_STOP,ui_led_off_static
+	beq UI_LED_STATE_BLINK_DARKING,ui_led_blink_state_darking
+ui_led_blink_state_lighting:
+	call ui_led_on_static
+	add regb,LED_OFFSET_CB_LEDON,regc
+	call push_stack
+	ifetch 2,regc
+	call callback_func
+	call pop_stack
+	setarg UI_LED_STATE_BLINK_DARKING
+	istore 1,regb
+	add regb,LED_OFFSET_ON_TIME,regc
+	ifetch 2,regc
+	branch ui_led_blink_timer_start
+	
+
+ui_led_blink_state_darking:
+	call ui_led_off_static
+	add regb,LED_OFFSET_CB_LEDOFF,regc
+	call push_stack
+	ifetch 2,regc
+	call callback_func
+	call pop_stack
+	
+	add regb,LED_OFFSET_BLINK_COUNT,regc
+	ifetch 1,regc
+	beq LED_INFINITE_FLASH_NUM,ui_led_blink_infinite
+	increase -1,pdata
+	istore 1,regc
+	branch ui_led_blink_stop_global,blank		//End of flicker
+ui_led_blink_infinite:
+	setarg UI_LED_STATE_BLINK_LIGHTING
+	istore 1,regb
+	add regb,LED_OFFSET_OFF_TIME,regc
+	ifetch 2,regc
+ui_led_blink_timer_start:
+	add rega,ui_led_blink,queue
+	branch timer_init
+
+ui_led_stop_timer:
+	setarg 0
+	branch ui_led_blink_timer_start
+
+/***********************ui led function ending****************************/
+
+
+
+ui_timer_timeout:
+	setarg 0x1000
+	lshift16 pdata,pdata
+	iadd regb,regb
+	rtn
+	
+ui_timer_check:
+	bpatchx patch3e_4,mem_patch3e
+	arg 0,rega
+	fetcht 4,mem_ui_timer_last_btclk
+	copy clkn_bt,regb
+	copy regb,pdata
+	isub temp,null
+	ncall ui_timer_timeout,positive
+	//call ice_break
+ui_timer_check_loop:
+	copy regb,pdata
+	increase 160,temp    //320btclk = 100ms
+	increase 160,temp
+	isub temp,null
+	nbranch ui_timer_check_end,positive
+	increase 1,rega   //increase 1 every 100ms count
+	and rega,0x0f,pdata
+	nbranch ui_timer_check_loop,blank
+	arg 0,rega  //reset timer if it's longer than 1.5s between 2 checks
+	call ui_timer_check_send_evt
+ui_timer_init:
+	copy clkn_bt,pdata
+	store 4,mem_ui_timer_last_btclk
+	rtn
+ui_timer_check_end:
+	bpatchx patch3e_5,mem_patch3e
+	copy rega,pdata
+	rtn blank
+	increase -160,temp    //320btclk = 100ms
+	increase -160,temp
+	set0 28,temp
+	storet 4,mem_ui_timer_last_btclk
+ui_timer_check_send_evt:
+	branch app_evt_timer
+
+	
+
+//**********************************************************//
+//************UI Inter-Processor Communication*******//
+//**********************************************************//
+ui_ipc_get_lock:
+	jam 1,mem_ipc_lock_bt
+ui_ipc_get_lock_wait:
+	fetch 1,mem_ipc_lock_c51
+	nbranch ui_ipc_get_lock_wait,blank
+	rtn
+	
+ui_ipc_put_lock:
+	jam 0,mem_ipc_lock_bt
+	rtn
+	
+
+	
+ui_ipc_send_event:
+	bpatchx patch3e_6,mem_patch3e
+	call ui_ipc_get_lock
+	copy rega,pdata
+	store 4,mem_ipc_rega_temp
+	arg mem_ipc_fifo_bt2c51,rega
+	call fifo_in
+	fetch 4,mem_ipc_rega_temp
+	copy pdata,rega
+	branch ui_ipc_put_lock
+
+ui_ipc_send_cmd:
+	bpatchx patch3e_7,mem_patch3e
+	call ui_ipc_get_lock
+	copy rega,pdata
+	store 4,mem_ipc_rega_temp	
+	arg mem_ipc_fifo_c512bt,rega
+	call fifo_in
+	fetch 4,mem_ipc_rega_temp
+	copy pdata,rega	
+	branch ui_ipc_put_lock
+
+ui_ipc_clean_all_fifo:
+	setarg 0
+	store UTIL_FIFO_LEN,mem_ipc_fifo_c512bt
+	store UTIL_FIFO_LEN,mem_ipc_fifo_bt2c51
+	rtn
+	
+check_51cmd:
+	bpatchx patch3f_0,mem_patch3f
+	fetch 1,mem_hci_cmd
+	nrtn blank
+	arg mem_ipc_fifo_c512bt,rega
+	call fifo_is_empty
+	rtn blank
+	jam IPC_CONTINUE_PROCESS,mem_ipc_skip_continue_proc
+	call check_51cmd_once
+	fetch 1,mem_ipc_skip_continue_proc
+	branch check_51cmd,blank
+	rtn
+
+check_51cmd_once:
+	call ui_ipc_get_lock
+	arg mem_ipc_fifo_c512bt,rega
+	call fifo_out
+	copy pdata,temp
+	call ui_ipc_put_lock
+	bpatchx patch3f_1,mem_patch3f
+	copy temp,pdata
+	rtn blank
+ 	beq BT_CMD_START_DISCOVERY,check_51cmd_start_discovery
+  	beq BT_CMD_STOP_DISCOVERY,check_51cmd_stop_discovery
+  	beq BT_CMD_RECONNECT,check_51cmd_reconnect
+  	beq BT_CMD_ENTER_SNIFF_SUBRATING,check_51cmd_enter_sniff_subrating
+  	beq BT_CMD_EXIT_SNIFF_SUBRATING,check_51cmd_exit_sniff_subrating
+  	beq BT_CMD_SNIFF_TEST,check_51cmd_sniff_test
+	beq BT_CMD_START_INQUIRY,check_51cmd_inq
+	beq BT_CMD_STOP_INQUIRY,check_51cmd_stop_inq
+	beq BT_CMD_START_ADV,check_51cmd_adv
+	beq BT_CMD_STOP_ADV,check_51cmd_stop_adv
+	beq BT_CMD_START_DIRECT_ADV,check_51cmd_direct_adv
+	beq BT_CMD_STOP_DIRECT_ADV,check_51cmd_stop_direct_adv
+	beq BT_CMD_LED_OFF,check_51cmd_led_off
+	beq BT_CMD_LED_ON,check_51cmd_led_on
+	beq BT_CMD_LED_BLINK,check_51cmd_led_start_blink
+	beq BT_CMD_LE_START_CONN,check_51cmd_le_start_con
+	beq BT_CMD_LE_START_SCAN,check_51cmd_start_scan
+	beq BT_CMD_LE_STOP_SCAN,check_51cmd_stop_scan
+	beq BT_CMD_ENTER_HIBERNATE,check_51cmd_hibernate
+	beq BT_CMD_LE_SMP_SECURITY_REQUEST,check_51cmd_le_smp_sec_req
+	beq BT_CMD_BB_RECONN_CANCEL,check_51cmd_bb_reconn_cancel
+	//context related, process in context
+	store 1,mem_fifo_temp
+	bpatchx patch3f_2,mem_patch3f
+	call lmo_fifo_check
+	nbranch check_51cmd_restore,blank  //process this cmd next time while lmo fifo is full
+check_51cmd_once_continue:
+	fetch 1,mem_fifo_temp
+	bmark0 mark_context,check_51cmd_check_idle
+	beq BT_CMD_DISCONNECT,check_51cmd_disconnect
+  	beq BT_CMD_ENTER_SNIFF,cmd_in_sniff
+  	beq BT_CMD_EXIT_SNIFF,cmd_exit_sniff
+  	beq BT_CMD_SET_PIN_CODE,check_51cmd_pincode
+	beq BT_CMD_LE_DISCONNECT,check_51cmd_le_disconnect
+	beq BT_CMD_LE_UPDATE_CONN,check_51cmd_ble_update_connect_param
+	beq BT_CMD_ROLE_SWITCH,check_51cmd_role_switch
+	beq BT_CMD_STORE_RECONN_INFO_LE,eeprom_store_le_reconn_info
+	beq BT_CMD_STORE_RECONN_INFO_BT,eeprom_store_bd_reconn_info
+	beq BT_CMD_DHKEY_NOT_ACCEPT,check_51cmd_dhkey_not_accept
+	beq BT_CMD_STORE_RECONN_INFO,check_51cmd_store_reconn_info
+	rtn
+
+check_51cmd_check_idle:
+	store 1,mem_fifo_temp
+  	call context_check_idle
+	branch check_51cmd_restore,zero
+	call context_search_plap
+	nrtn zero
+check_51cmd_restore:
+	jam IPC_SKIP_CONTINUE_PROCESS,mem_ipc_skip_continue_proc
+	branch ui_ipc_send_cmd
+  
+ /******************** 51COMMAND*********************/
+
+//command opcode 0x01	
+check_51cmd_start_discovery:
+	fetch 2,mem_ui_state_map
+	set1 UI_STATE_BT_DISCOVERY
+	store 2,mem_ui_state_map
+	jam 3,mem_scan_mode
+	rtn
+
+
+//command opcode 0x02	
+check_51cmd_stop_discovery:
+	jam 0,mem_hid_handshake_timer_count
+	jam 0,mem_scan_mode
+	fetch 2,mem_ui_state_map
+	set0 UI_STATE_BT_DISCOVERY
+	store 2,mem_ui_state_map
+	rtn	
+
+
+//command opcode 0x03	
+check_51cmd_reconnect:	
+	jam hci_cmd_create_conn,mem_hci_cmd
+	rtn	
+
+
+//command opcode 0x04
+check_51cmd_disconnect:
+	jam LMP_DETACH,mem_lmo_opcode2
+	jam OTHER_END_TERMINATED,mem_disconn_reason_send
+	rtn
+
+	
+//command opcode 0x07
+check_51cmd_enter_sniff_subrating:
+	rtn
+
+
+//command opcode 0x08
+check_51cmd_exit_sniff_subrating:
+	rtn	
+
+
+//command opcode 0x09
+check_51cmd_sniff_test:
+	rtn	
+
+
+//command opcode 0x10
+check_51cmd_pincode:
+	jam pincode_state_pincode_ready,mem_pincode_state
+	branch cmd_pair
+
+
+//command opcode 0x11
+check_51cmd_inq:
+	rtn
+
+
+//command opcode 0x12
+check_51cmd_stop_inq:
+	rtn
+
+
+//command opcode 0x13
+check_51cmd_adv:
+	jam ON,mem_le_adv_enable
+	jam ADV_IND,mem_le_adv_type
+	fetch 2,mem_ui_state_map
+	set1 UI_STATE_BLE_ADV,pdata
+	store 2,mem_ui_state_map
+	rtn
+
+
+//command opcode 0x14
+check_51cmd_stop_adv:
+	fetch 2,mem_ui_state_map
+	set0 UI_STATE_BLE_ADV,pdata
+	store 2,mem_ui_state_map
+	jam OFF,mem_le_adv_enable
+	rtn
+
+
+//command opcode 0x15
+check_51cmd_direct_adv:
+	jam ON,mem_le_adv_enable
+	jam ADV_DIRECT_IND,mem_le_adv_type
+	fetch 2,mem_ui_state_map
+	set1 UI_STATE_BLE_ADV,pdata
+	store 2,mem_ui_state_map
+	rtn
+
+
+//command opcode 0x16
+check_51cmd_stop_direct_adv:
+	fetch 2,mem_ui_state_map
+	set0 UI_STATE_BLE_ADV,pdata
+	store 2,mem_ui_state_map
+	jam OFF,mem_le_adv_enable
+	rtn
+
+
+//command opcode 0x17
+check_51cmd_le_disconnect:
+	setarg 20 // 100ms
+	store 2,mem_le_superto
+	store 2,mem_le_init_superto
+	branch le_send_terminate_ind_user_terminated
+
+
+//command opcode 0x18
+check_51cmd_ble_update_connect_param:
+	branch le_l2cap_tx_update_req
+
+
+//command opcode 19
+check_51cmd_led_off:
+	arg 0,rega
+	branch ui_led_off_global
+
+
+//command opcode 20
+check_51cmd_led_on:
+	arg 0,rega
+	branch ui_led_on_global
+
+
+//command opcode 21
+check_51cmd_led_start_blink:
+	arg 0,rega
+	branch ui_led_blink_start_global
+
+
+//command opcode 0x22
+check_51cmd_le_start_con:
+	jam ON,mem_le_scan_enable
+	jam hci_cmd_le_create_conn,mem_hci_cmd
+//	fetch 6,mem_app_peer_addr
+//	store 6,mem_le_conn_peer_addr
+	rtn
+
+
+//command opcode 0x23
+check_51cmd_start_scan:
+	jam ON,mem_le_scan_enable
+	rtn
+
+
+//command opcode 0x24
+check_51cmd_stop_scan:
+	jam OFF,mem_le_scan_enable
+	jam 0,mem_hci_cmd
+	rtn
+
+
+//command opcode 0x25
+check_51cmd_hibernate:
+	fetch 2,mem_cb_before_hibernate
+	call callback_func
+	fetch 1,mem_ui_button_gpio
+	beq UI_BUTTON_GPIO_DISABLE,check_51cmd_hibernate_btn_disabled
+	copy pdata,temp
+	call gpio_config_input
+check_51cmd_hibernate_btn_disabled:
+	call ui_ipc_clean_all_fifo
+	branch lpm_hibernate	
+
+
+//command opcode 0x27
+check_51cmd_le_smp_sec_req:
+	branch le_send_smp_security_request
+
+
+//command opcode 0x29
+check_51cmd_role_switch:
+  	jam LMP_SLOT_OFFSET,mem_lmo_opcode2
+	set1 mark_switch_initiated,mark
+	nrtn master
+	jam SWITCH_FLAG_INIT,mem_switch_flag
+	jam LMP_SWITCH_REQ ,mem_lmo_opcode2
+	fetch 1,mem_connection_options
+	set0 CONNECTION_SWITCH,pdata
+	store 1,mem_connection_options
+	rtn
+
+
+//command opcode 0x30
+check_51cmd_bb_reconn_cancel:
+	force page_length_timer,queue
+	branch timer_stop
+
+
+//command opcode 0x33
+check_51cmd_dhkey_not_accept:
+	call tid_set_reply
+	jam LMP_DHKey_Check,mem_lmi_opcode2
+	branch parse_lmp_dhkey_check_reject	
+
+
+ui_check_paring_button:
+	fetch 1,mem_ui_state_map
+	rtnbit0 UI_STATE_BTN_DOWN
+	rtnbit0 UI_STATE_BT_RECONNECT
+	branch check_51cmd_bb_reconn_cancel
+
+
+
+///////////queue function////////////
+queue_init:
+	fetch 2,mem_queue_ptr
+	add pdata,QUEUE_OFFSET_CURR_NUM,contw
+	setarg 0
+	istore 3,contw
+	rtn
+	
+//input:rega:the address of the data to which you want to input queue
+//output:if user is disable,mean queue no have space
+queue_push:
+	call disable_user
+	call queue_full
+	rtn blank
+	fetch 2,mem_queue_ptr
+	add pdata,QUEUE_OFFSET_CURR_NUM,regb
+	ifetcht 1,regb
+	increase 1,temp
+	istoret 1,regb	//number add 
+	
+	ifetcht 1,pdata	//temp:each length
+	copy temp,loopcnt
+	add pdata,QUEUE_OFFSET_WRITE_PTR,regb
+	ifetch 1,regb
+	imul32 temp,pdata	//offset
+	iadd contr,contw
+	copy rega,contr
+calc_queue_next_ptr:
+	call memcpy
+	call queue_get_size
+	pincrease -1
+	ifetcht 1,regb
+	increase 1,temp
+	iand temp,temp
+	istoret 1,regb
+	branch enable_user
+
+
+//input:rega:the address of the data to which you want to output queue
+//output:if user is disable,mean queue no have data
+queue_pop:
+	call disable_user
+	call queue_empty
+	rtn blank
+	fetch 2,mem_queue_ptr
+	add pdata,QUEUE_OFFSET_CURR_NUM,regb
+	ifetcht 1,regb
+	increase -1,temp
+	istoret 1,regb
+	ifetcht 1,pdata		//each size
+	copy temp,loopcnt
+	add pdata,QUEUE_OFFSET_READ_PTR,regb
+	ifetch 1,regb
+	imul32 temp,pdata	//offset
+	iadd contr,contr
+	increase 1,contr
+	copy rega,contw
+	branch calc_queue_next_ptr
+
+
+//output:if blank is 1,mean queue is empty
+queue_empty:
+	fetch 2,mem_queue_ptr
+	add pdata,QUEUE_OFFSET_CURR_NUM,contr
+	ifetch 1,contr
+	rtn
+
+//output:if blank is 1,mean queue is full
+queue_full:
+	call queue_get_size
+	ifetcht 1,contr
+	isub temp,pdata
+	rtn
+
+//output:pdata is queue size
+queue_get_size:
+	fetch 2,mem_queue_ptr
+	add pdata,QUEUE_OFFSET_LENGTH,contr
+	ifetch 1,contr
+	rtn
+
+///////////queue function end////////////
+
+
+
+
Index: rom/utility.prog
===================================================================
--- /branch/mouse_project/YJX_Project/YJX_1059/JDT_172_BD_2.4G&BLE/rom/utility.prog	(nonexistent)
+++ /branch/mouse_project/YJX_Project/YJX_1059/JDT_172_BD_2.4G&BLE/rom/utility.prog	(working copy)
@@ -0,0 +1,614 @@
+
+right_shift_n: //rshiftN pdata,pdata
+	sub loopcnt,0,null
+	rtn zero
+right_shift_n_loop: 
+	rshift pdata,pdata
+	loop right_shift_n_loop
+	rtn
+
+/* lshift. 0:1 byte; 1:2byte; 2:4byte; 3:8byte; 4:16byte*/
+left_shift_n:
+	force 1,pdata
+	sub loopcnt,0,null
+	rtn zero
+left_shift_n_loop:
+	lshift pdata,pdata
+	loop left_shift_n_loop
+	rtn
+push_stack:
+	deposit contw
+	store 2, mem_contw
+	storet 8,mem_temp
+	deposit timeup
+	store 4,mem_timeup
+	call push_stack_rega_b_c
+	deposit contr
+	store 2, mem_contr
+	rtn
+
+push_stack_rega_b_c:
+	deposit rega
+	store 4, mem_rega
+	deposit regb
+	store 4, mem_regb
+	deposit regc
+	store 3, mem_regc
+	rtn
+
+pop_stack:
+	fetcht 8,mem_temp
+	fetch 4,mem_timeup
+	iforce timeup
+	call pop_stack_rega_b_c
+	fetch 2, mem_contw
+	iforce contw
+	fetch 2, mem_contr
+	iforce contr
+	rtn
+
+pop_stack_rega_b_c:
+	fetch 4, mem_rega
+	iforce rega
+	fetch 4, mem_regb
+	iforce regb
+	fetch 3,mem_regc
+	iforce regc
+	rtn
+
+get_contw:
+	fetch 2,mem_contw
+	copy pdata,contw
+	rtn
+get_contr:
+	fetch 2,mem_contr
+	copy pdata,contr
+	rtn
+store_contw:
+	copy contw,pdata
+	store 2,mem_contw
+	rtn
+store_contr:
+	copy contr,pdata
+	store 2,mem_contr
+	rtn	
+	
+
+//
+save_cont_pointers:
+	copy contw,pdata
+	store 2,mem_hold_contw
+	copy contr,pdata
+	store 2,mem_hold_contr
+	rtn
+load_cont_pointers:
+	fetch 2,mem_hold_contw
+	copy pdata,contw
+	fetch 2,mem_hold_contr
+	copy pdata,contr
+	rtn
+
+memcpy96:
+	call memcpy32
+memcpy64:
+	call memcpy32
+	branch memcpy32
+memcpy12:
+	call memcpy8
+memcpy4:
+	ifetch 4,contr
+	istore 4,contw
+	rtn	
+memcpy8:
+	ifetch 8,contr
+	istore 8,contw
+	rtn	
+
+memcpy48:
+	call memcpy16
+memcpy32:
+	call memcpy8
+memcpy24:
+	call memcpy8
+memcpy16:
+	call memcpy8
+	branch memcpy8
+
+
+
+delay_10ms:
+	arg 10,loopcnt
+delay_ms_wait:
+	nop 12000
+	loop delay_ms_wait
+	rtn
+
+bn_zero:
+	force 3,loopcnt
+memset0:
+	force 0,pdata
+memset8:
+	istore   8,contw
+	loop   memset8
+	rtn
+
+memset0_8:
+	force 0,pdata
+	istore 8,contw
+	rtn
+memset0_4:
+	force 0,pdata
+	istore 4,contw
+	rtn	
+	
+clear_mem_256:
+	force 4,loopcnt
+	branch memset0 
+clear_mem_512:
+	force 8,loopcnt
+	branch memset0 
+
+clear_mem:
+	deposit loopcnt
+	rtn blank
+	setarg 0
+clear_mem_loop:
+	istore 1,contw
+	loop clear_mem_loop
+	rtn
+	
+
+clear_temp_block:
+	arg 32,loopcnt
+	arg mem_temp_block0,contw
+	branch clear_mem
+	
+xor_loop:
+	ifetch   4,regc
+	ifetcht 4,rega
+	ixor     temp,pdata
+	istore   4,contw	
+	increase 4,rega
+	increase 4,regc
+	loop  xor_loop
+	rtn
+	
+// 11 22 -> 22 11; 11 22 33 -> 33 22 11 
+// rega:data addr ;loopnct:length
+inverse_data:
+	bpatchx patch3f_3,mem_patch3f
+	copy loopcnt,pdata
+	sub pdata,1,null
+	rtn positive
+	iadd rega,regb	
+	increase -1,regb
+	rshift loopcnt,loopcnt
+inverse_loop:
+	ifetcht 1,rega
+	ifetch 1,regb
+	istore 1,rega
+	istoret 1,regb
+	increase -1,regb
+	increase 1,rega
+	loop inverse_loop
+	rtn
+
+
+memcpy_fast:
+	deposit loopcnt
+	rtn blank
+memcpy_fast_loop:
+	increase -8,loopcnt
+	call memcpy8,positive
+	rtn zero
+	branch memcpy_fast_loop,positive
+	increase 8,loopcnt
+memcpy_fast_loop_four:
+	increase -4,loopcnt
+	call memcpy4,positive
+	rtn zero
+	branch memcpy_fast_loop_four,positive
+	increase 4,loopcnt
+	branch memcpy
+ 
+memcpy:
+	deposit loopcnt
+	rtn blank
+memcpy_loop:
+	ifetch 1,contr
+	istore 1,contw
+	loop memcpy_loop
+	rtn
+
+timer_stop:
+	setarg 0
+timer_init:
+	rshift clkn_bt,temp
+	storet 4,mem_last_clkn
+	arg mem_timers,contw
+	iforce temp
+	lshift queue,pdata
+	iadd contw,contw
+	istoret 2,contw
+	bpatchx patch3f_4,mem_patch3f
+	rtn
+
+timer_check_timeout:
+	arg 0x800,timeup
+	lshift16 timeup,timeup
+	iadd timeup,pdata
+	rtn
+
+
+timer_reinit:
+	arg 0,queue
+timer_check:
+	bpatchx patch3f_5,mem_patch3f
+	fetcht 4,mem_last_clkn
+	rshift clkn_bt,pdata
+	store 4,mem_last_clkn	
+	isub temp,null
+	ncall timer_check_timeout,positive	
+	isub temp,timeup
+	copy timeup,temp
+	arg mem_timers,contr
+	copy contr,contw
+	arg 16,loopcnt
+timer_loop:
+	ifetch 2,contr
+	isub temp,pdata
+	branch timer_counting,positive
+	force 0,pdata
+timer_counting:
+	istore 2,contw
+	loop timer_loop	
+	arg mem_timers,contr
+	lshift queue,pdata
+	iadd contr,contr
+	ifetch 2,contr
+	rtn
+
+
+
+	/* pdata 28+16 bit add temp 26+16 bit, result in temp */
+clk_add:
+	iadd temp,temp
+	copy temp, loopcnt
+	setarg 3750
+	isub loopcnt,pdata
+	rtn positive
+	sub pdata,0,pdata
+	rshift16 temp,temp
+	increase 1,temp
+	lshift16 temp,temp
+	ior temp,temp
+	rtn
+
+clk_diff_rt:
+	call clk_diff
+	branch clk2rt
+
+/* pdata -temp -> pdata, all are 28+16 bits, set user if negative */
+clk_diff:
+	disable user
+	isub temp,pdata
+	branch clk_diff_pos,positive
+	enable user
+	sub pdata,0,pdata
+clk_diff_pos:
+	rtnbit0 15
+	arg -61786,temp
+	iadd temp,pdata
+	set0 64,pdata
+	rtn
+
+clk2rt:
+	iforce contr
+	rshift16 pdata,pdata
+	arg 3750,temp
+	imul32 temp,pdata
+	iadd contr,pdata
+	rtn
+
+	/* pdata = clks in, temp = lpo out */
+clk2lpo:
+	lshift8 pdata,pdata
+	lshift4 pdata,pdata
+	fetcht 3,mem_clks_per_lpo
+	idiv temp
+	call wait_div_end
+	quotient temp
+	rtn
+
+	/* rt clk -> bt+rt clk */
+clk2bt:
+	arg 3750,temp
+	idiv temp
+	call wait_div_end
+	quotient pdata
+	lshift16 pdata,pdata
+	remainder temp
+	ior temp,temp
+	rtn
+
+
+
+//input:contru 
+//output:temp
+//used register: temp regc
+string2dec_from_uart:
+	arg 0,temp
+string2dec_from_uart_done:
+         copy temp,regc
+	ifetch 1,contru
+	call uchar2dialog	
+	copy regc,temp
+	call swap
+	arg 10,regb
+	imul32 regb,pdata
+	iadd temp,pdata
+	copy pdata,temp
+	loop string2dec_from_uart_done
+	rtn
+	
+
+
+uchar2dialog:
+	arg 0x3a,temp
+	isub temp,null
+	nbranch uchar2dialog_number,positive
+	arg 0x61,temp
+	isub temp,null
+	branch uchar2dialog_a2f,positive
+	arg 0x37,temp
+	isub temp,pdata
+	rtn
+uchar2dialog_number:
+	arg 0x30,temp
+	isub temp,pdata
+	rtn
+uchar2dialog_a2f:
+	arg 0x57,temp
+	isub temp,pdata
+	rtn
+
+pn9:
+	copy temp,alarm
+	setarg 0x1ff
+	force 0,regb
+pn9_loop:	
+	rshift3 pdata,rega
+	rshift rega,rega
+	ixor rega,rega
+	isolate1 0,rega
+	setflag true,9,pdata
+	rshift temp,temp
+	isolate1 0,pdata
+	setflag true,7,temp
+	rshift pdata,pdata
+	increase 1,regb
+	compare 0,regb,0x7
+	nbranch pn9_loop,true
+	istoret 1,contw
+	loop pn9_loop
+	copy alarm,temp
+	rtn
+
+
+wait_div_end:	
+	rtn modone
+	branch wait_div_end
+
+
+
+//input:
+//	count:loopcnt str1:rega str2:regb
+//output:
+//	same:set falg true ,diff set falg false
+// using:
+//	reg:temp null flag:zero
+compare_loop:
+string_compare:
+	ifetch 1,rega
+	ifetcht 1,regb
+	isub temp,null
+	nrtn zero
+	increase 1,rega
+	increase 1,regb
+	loop string_compare
+	force 0,null
+	rtn
+
+	/* pdata = temp if pdata > temp */
+ceiling:
+	isub temp,null
+	nrtn positive
+	deposit temp
+	rtn
+	
+swap:
+	iadd temp,pdata
+	isub temp,temp
+	isub temp,pdata
+	rtn
+
+clean_mem:
+	arg 0x200,loopcnt
+	arg 0x4000,contw
+	branch memset0				// clear xram at boot
+
+	//cb function ptr in pdata
+callback_func:
+	rtn blank
+	copy pdata,pc	//rtn through cb functon.
+	//branch assert
+
+wait_uarttx:
+	hfetch 2,core_uart_txitems
+	nbranch wait_uarttx,blank
+	rtn
+
+ice_break:
+	jam 0x1,core_ice_ctrl
+	rtn
+
+ice_setbp:
+	hstore 2,core_ice_break0
+	hfetch 1,core_ice_ctrl
+	set1 4,pdata
+	hstore 1,core_ice_ctrl
+	rtn
+ice_setbp2:
+	hstore 2,core_ice_break1
+	hfetch 1,core_ice_ctrl
+	set1 6,pdata
+	hstore 1,core_ice_ctrl
+	rtn
+	
+ice_set_write_bp:
+	hstore 2,core_ice_break0
+	jam 0x30,core_ice_ctrl
+	rtn
+	
+
+
+test_enable_white:
+	hfetch 1,core_config
+	set0 whiteoff_bit,pdata
+	hstore 1,core_config			/* whitening on */
+	rtn
+
+check_uart_tx_buff:
+	hfetch 2,core_uart_txitems
+	arg UART_AIR_CONTROL_THRESHOLD,temp
+pdata_sub_temp:
+	isub temp,null
+	rtn
+
+	//fuction fifo_in
+	//rega pointer to fifo memory , *(rega+len) is the end of fifo
+	//mem_fifo_temp data into fifo
+	//assert if fifo was full
+fifo_in:
+	bpatchx patch3f_6,mem_patch3f
+	ifetcht UTIL_FIFO_LEN,rega
+	and temp,0xff,pdata
+	nbranch fifo_in_push,blank
+	rshift8 temp,pdata
+	istore UTIL_FIFO_LEN,rega
+fifo_in_push:
+	increase UTIL_FIFO_LEN+UTIL_FIFO_OFFSET,rega
+	ifetch 1,rega
+	nbranch assert,blank //fifo full
+	fetch 1,mem_fifo_temp
+	istore 1,rega
+	rtn
+	
+	//fuction fifo_out
+	//rega pointer to fifo memory
+	//pdata  data from fifo, blank mains fifo empty
+fifo_out:
+	bpatchx patch3f_7,mem_patch3f
+	arg UTIL_FIFO_LEN,loopcnt
+	ifetch UTIL_FIFO_LEN,rega
+	rtn blank
+fifo_out_loop:
+	ifetch 1,rega
+	nbranch fifo_out_end,blank
+	increase 1,rega
+	loop fifo_out_loop
+	branch assert
+fifo_out_end:
+	arg 0,temp
+	istoret 1,rega
+	rtn
+
+	//fuction fifo_is_empty
+	//rega pointer to fifo memory
+	//blank--- fifo is empty
+fifo_is_empty:
+	ifetch UTIL_FIFO_LEN,rega
+	rtn
+
+	//fuction fifo_is_full
+	//rega pointer to fifo memory
+	//blank--- fifo is NOT full
+fifo_is_full:
+	ifetch 1,rega
+	rtn
+	//rega pointer to fifo memory
+	//blank--- fifo is NOT near full
+fifo_is_near_full:
+	ifetch 2,rega
+	rtn
+
+	//rega pointer to fifo memory
+	//count output via pdata
+fifo_content_count:
+	arg 0,temp
+fifo_content_count_loop:
+	fetch 1,contr
+	loop fifo_content_count_loop,blank
+	increase 1,temp
+	loop fifo_content_count_loop
+	copy temp,pdata
+	rtn
+	
+not_greater_than:
+	isub temp,null
+	nrtn positive
+	copy temp,pdata
+	rtn
+
+
+disable_positive:
+	force -1,null
+	rtn
+enable_positive:
+disable_zero:
+	force 1,null
+	rtn
+enable_zero:
+	force 0,null
+	rtn
+
+enable_user:
+	enable user
+	rtn
+	
+disable_user:
+	disable user
+	rtn
+	
+enable_user2:
+	enable user2
+	rtn
+	
+disable_user2:
+	disable user2
+	rtn
+
+disable_blank:
+	setarg 1
+	rtn
+
+enable_blank:
+	setarg 0
+	rtn
+
+
+reverse_byte:
+	copy loopcnt,pdata
+	rtn blank
+	copy contr,pdata
+	iadd loopcnt,pdata
+	increase -1,pdata
+	copy pdata,contr	
+reverse_loop:
+	ifetch 1,contr
+	increase -2,contr
+	istore 1,contw
+	loop reverse_loop
+	rtn
+
+
Index: sched/109x.dat
===================================================================
--- /branch/mouse_project/YJX_Project/YJX_1059/JDT_172_BD_2.4G&BLE/sched/109x.dat	(nonexistent)
+++ /branch/mouse_project/YJX_Project/YJX_1059/JDT_172_BD_2.4G&BLE/sched/109x.dat	(working copy)
@@ -0,0 +1,35 @@
+
+mem_lpm_config:8f 10 ce	#4khz
+mem_lpm_xtalcnt:00 0a 0b ef 07
+mem_lpm_hibernate_switch:00
+mem_gpio_wakeup_low:00 00 00 00 00 00 00 00
+#mem_fcomp_mul:02
+#mem_fcomp_div:24
+mem_iscan_window:12 00
+mem_iscan_interval:00 02
+mem_pscan_window:12 00
+mem_pscan_interval:00 02
+mem_inq_window:20 00
+mem_page_window:20 00
+mem_page_to:00 40
+mem_rx_window_init:80 04
+mem_rx_window_sniff:00 08
+
+mem_seqi:00
+
+
+
+mem_tx_power:00#0dbm
+mem_rf_init_data_new:
+# tx power
+4b ba
+55 d0
+56 e0
+57 88
+58 6c
+59 10
+ff
+mem_rf_init_ptr:mem_rf_init_data_new
+
+
+
Index: sched/mouse.dat
===================================================================
--- /branch/mouse_project/YJX_Project/YJX_1059/JDT_172_BD_2.4G&BLE/sched/mouse.dat	(nonexistent)
+++ /branch/mouse_project/YJX_Project/YJX_1059/JDT_172_BD_2.4G&BLE/sched/mouse.dat	(working copy)
@@ -0,0 +1,965 @@
+mem_patch00:06
+mem_patch03:08
+mem_patch04:40
+mem_patch09:05
+mem_patch0a:02
+mem_patch0b:02
+mem_patch10:20
+mem_patch11:02
+mem_patch14:82
+mem_patch15:20
+mem_patch16:06
+mem_patch18:10
+mem_patch19:08
+mem_patch1c:48
+mem_patch1d:1e
+mem_patch20:20
+mem_patch27:02
+mem_patch28:08
+mem_patch29:04
+mem_patch2a:80
+mem_patch2b:02
+mem_patch2c:c8
+mem_patch2d:04
+mem_patch2e:80
+mem_patch30:05
+mem_patch31:31
+mem_patch3f:04
+
+
+#debug
+#mem_patch2f:40
+#mem_patch37:40
+#mem_patch3e:c0
+
+mem_firmware_version:01 00
+
+mem_device_option:42
+mem_lpm_mode:01
+mem_lpm_mult:20
+mem_lpm_mult_init:20
+#mem_lpm_interval:00 00
+
+mem_mouse_function_enable:
+#bit0 MOUSE_ENABLE_USB
+#bit1 MOUSE_ENABLE_24G
+#bit2 MOUSE_ENABLE_SPI2
+#bit3 MOUSE_ENABLE_FLASH
+#bit4 MOUSE_ENABLE_EEPROM
+#bit5 MOUSE_ENABLE_STATUE_UP_THREE_LED
+#bit6 MOUSE_ENABLE_STATUE_UP
+#bit7 MOUSE_ENABLE_DPI_LED_BLINK
+0a
+#bit0 MOUSE_ENABLE_BLE_RANDOM_ADDRE
+#bit1 MOUSE_ENABLE_2K_EEPROM
+#bit2 MOUSE_ENABLE_ADC
+#bit3 MOUSE_ENABLE_INIT_DELAY
+#bit4 MOUSE_ENABLE_DISCOVERY_SENSOR_LED
+#bit5 MOUSE_ENABLE_AUTO_24G_PARING
+#bit6 MOUSE_ENABLE_WAKEUP_FROM_POWER
+#bit7 MOUSE_ENABLE_GPIO_CONTROL_ADC_SENSOR
+45
+
+mem_app_connection_options:06
+mem_lap:22 51 17 01 20 20
+mem_local_name_length:
+'BT3.0 Mouse
+mem_sniff_param_interval:
+0e 00 
+01 00 ##mem_sniff_param_attempt:01 00
+02##mem_sniff_param_timeout:00 00
+
+
+mem_unsniff2sniff_timer:0a
+mem_ssp_mode_flag:03
+mem_ssp_enable:01
+##mem_all_uuid_16bits:
+##06
+##03#Type: Complete list of 16-bit UUIDs
+##0011 0100 1002 1124  1200  0001
+mem_all_uuid_128bits:00
+mem_ptt:00
+
+
+mem_sp_iocap_local:03 00 04
+mem_ui_profile_supported:01
+mem_eir_enable:01
+
+mem_le_adv_data_len:1f
+mem_le_adv_data:
+#flag 
+02 01 05
+
+#uuid
+03 03 12 18
+
+#appearance
+03 19 c2 03
+
+mem_le_adv_swift_pair:
+#microsoft swift pair
+06 ff 06 00 03 00 80
+#name
+'\09BT5.2 Mouse
+
+mem_le_scan_data_len:1f
+mem_le_scan_data:
+#name
+'\09BT5.2 Mouse
+
+
+#max 20bytes, att list data rom limits
+mem_le_name_len:
+'BT5.2 Mouse
+
+
+mem_le_interval_min:
+07 00 #min interval
+07 00 #max interval
+20 00 #latency
+2c 01 #timeout
+
+
+mem_le_adv_interval:00 00
+mem_le_adv_type:00 
+mem_le_adv_own_addr_type:00
+mem_le_adv_channel_map:07 
+
+mem_le_lap:8e b1 3a 0e 8e ed
+
+mem_le_transmit_window:50
+
+mem_le_notify_handle:19 00
+mem_le_pairing_handle:22 00
+
+
+mem_discovery_timeout:08 07#3min
+mem_mouse_direct_timeout:50 00#8s
+mem_mouse_no_data_timeout:70 17#10min
+
+mem_flash_ncs_gpio:0a
+mem_spi_ncs_gpio:ff
+mem_ui_button_gpio:ff
+mem_ui_button_timeout:1e
+
+mem_device_number:02 #max device number
+mem_24g_device_number:02 #devie 2 :24g mode
+mem_adc_config_flag:01 #0 vinlpm 1 hvin 2 gpio
+mem_adc_channel:32 #gpio5
+mem_mouse_vdd_full_vol:a4 01#4.2V
+18 01#mem_mouse_vdd_empty_vol:5a 00# 2.8V
+40 01#mem_mouse_vdd_low_vol:64 00  #3.2v
+
+mem_config_sensor_type:00
+02 #mem_config_sensor_motion:02
+06#mem_lbutton_gpio:04
+08 #mem_rbutton_gpio:1b
+08 #mem_mbutton_gpio:17
+ff #mem_bk_button_gpio:ff
+ff #mem_fw_button_gpio:ff
+06 #mem_dpi_button_gpio:06
+1c #mem_whee_a_data_gpio:02
+1b #mem_whee_b_data_gpio:03
+ff #mem_whee_ta_data_gpio:ff
+ff #mem_whee_tb_data_gpio:ff
+1d #mem_config_bt_button_gpio:ff
+14 #mem_config_select_device_button_gpio:ff
+ff #mem_config_paraing_led_gpio:ff
+ff #mem_config_low_voltage_alarm_gpio:08
+ff #mem_config_device1_led_gpio:08
+ff #mem_config_device2_led_gpio:ff
+ff #mem_config_device3_led_gpio:ff
+ff #mem_sensor_data_gpio:18
+ff #mem_dpi_led_gpio:08
+50 #mem_config_function_enable:04
+03 #mem_config_sensor_angle:00
+ff #mem_select_sensor_angle_gpio:ff
+ff #mem_select_adc_gpio:ff
+
+mem_eeprom_wp_gpio:ff
+mem_sensor_reset_gpio:ff
+mem_sensor_squal_reg:07# 07:3205         	06:3610
+mem_usb_offline_check_gpio:ff
+#mem_wire_usb_interval:19 #128
+
+#mem_config_function_enable:
+#bit0 ENABLE_BT_DISCOVERY_BY_GPIO_LED
+#bit1 ENABLE_MODE_LED
+#bit2 ENABLE_LOW_VOLTAGE_LED
+#bit3 ENABLE_DEVICE_LED
+#bit4 ENABLE_BT_BUTTON
+#bit5 ENABLE_SELECT_DEVICE_BY_GPIO_BUTTON
+#bit6 ENABLE_SELECT_DEVICE_BY_SWITCH
+#bit7 ENABLE_SENSOR_MOTION_PIN
+#50
+
+mem_mouse_dpi_seting:
+01##mem_320x_dpi_1
+02##mem_320x_dpi_2
+03##mem_320x_dpi_3
+04##mem_320x_dpi_4
+
+#15##mem_3212_dpi_1#800
+#1f##mem_3212_dpi_2#1200
+#2a##mem_3212_dpi_3#1600
+#3f##mem_3212_dpi_4#2400
+
+#04##mem_3610_dpi_1
+#05##mem_3610_dpi_2
+#07##mem_3610_dpi_3
+#08##mem_3610_dpi_4
+
+mem_ui_led_struct_ptr:mem_mouse_led_type
+mem_ui_led_struct_num:01
+
+
+mem_mouse_le_uuid_sup:
+25 00 02 03 28 01 12 
+26 00 02 4d 2a 07 00 00 00 00 00 00 00 
+27 00 02 02 29 02 00 00
+28 00 02 08 29 02 11 01
+29 00 02 03 28 01 0e 
+2a 00 02 4d 2a 07 00 00 00 00 00 00 00
+2b 00 02 08 29 02 11 02
+
+
+mem_le_att_pnp_id_len:07
+mem_le_att_pnp_id:
+02		#verdor ID source
+35 12	#usb verdor ID
+22 aa 	#product ID
+01 00	#product version
+
+  
+#24g init
+mem_24g_mode:01#tx
+mem_24g_data_type:01        #mouse 1,kb 2
+mem_24g_max_retry:04#max tx retry
+mem_24g_no_ack:00#with ack
+mem_24g_rx_window:c0 12     #400us
+mem_24g_interval:19
+mem_24g_interval_min:19
+mem_24g_interval_max:1c
+mem_24g_ch_map1:00 13 2c 42
+mem_24g_ch_map2:06 15 36 48
+mem_24g_ch_map3:0f 1a 3a 4c
+mem_24g_ch_map4:11 23 31 4d
+mem_24g_pairing_sm:ff
+mem_24g_paring_addr:20 15 10 05
+mem_24g_common_temp:00 00 00 00 00 00 00 00 00 00
+mem_24g_enter_hibernate:00 48 60
+
+mem_device_flag:
+ff
+ff
+ff ff ff ff ff ff
+#mem_device2_type:
+#34
+#11 22 33 44 55 66
+#mem_device3_type:
+#34
+#11 22 33 44 55 66
+
+mem_sensor_8650_init:
+09 5a
+ff 27
+ab 40
+be d1
+a0 41
+a1 12
+a5 84
+a7 ff
+b5 d0
+b6 00
+ff 00
+09 00
+ff ff
+
+mem_sensor_8009_init:
+09 5a
+06 02
+09 69
+0d 48
+0e 9f
+0f ba
+09 00
+ff ff
+
+#mem_sensor_poweron_init:
+#09 5a
+#0b f3
+#09 00
+#ff ff
+
+mem_flash_base:00 50 00
+mem_eeprom_base:90 1f
+mem_eeprom_block_size:80
+mem_reconn_times_init:00
+mem_bt_discovey_button_statue:01#default: button up
+mem_empty_count:03
+
+mem_mouse_24g_addr_init:ff ff ff ff
+
+mem_mouse_multi_led_gpio:05
+mem_mouse_multi_led_on_timer_init:14
+mem_mouse_multi_led_blink_timer_init:03
+
+#zcode
+mem_zcode_current_number:ff
+mem_xip_flash_offset:00 00 00
+mem_zcode_head:20 20 00 40
+
+#yichip sdp
+#04 0011 0100 1002 1124
+#00 01 00 00
+#36 01 6d
+#09
+#00
+#00
+#0a
+#00
+#01
+#00
+#00
+#09
+#00
+#01
+#35
+#03
+#19
+#11
+#24
+#09
+#00
+#04
+#35
+#0d
+#35
+#06
+#19
+#01
+#00
+#09
+#00
+#11
+#35
+#03
+#19
+#00
+#11
+#09
+#00
+#05
+#35
+#03
+#19
+#10
+#02
+#09
+#00
+#06
+#35
+#09
+#09
+#65
+#6e
+#09
+#00
+#6a
+#09
+#01
+#00
+#09
+#00
+#09
+#35
+#08
+#35
+#06
+#19
+#11
+#24
+#09
+#01
+#00
+#09
+#00
+#0d
+#35
+#0f
+#35
+#0d
+#35
+#06
+#19
+#01
+#00
+#09
+#00
+#13
+#35
+#03
+#19
+#00
+#11
+#09
+#01
+#00
+#25
+#16
+#59
+#69
+#43
+#68
+#69
+#70
+#20
+#42
+#6c
+#75
+#65
+#74
+#6f
+#6f
+#74
+#68
+#20
+#4d
+#6f
+#75
+#73
+#65
+#09
+#01
+#01
+#25
+#05
+#4d
+#6f
+#75
+#73
+#65
+#09
+#01
+#02
+#25
+#06
+#59
+#69
+#43
+#68
+#69
+#70
+#09
+#02
+#00
+#09
+#01
+#00
+#09
+#02
+#01
+#09
+#01
+#11
+#09
+#02
+#02
+#08
+#80
+#09
+#02
+#03
+#08
+#21
+#09
+#02
+#04
+#28
+#01
+#09
+#02
+#05
+#28
+#01
+#09
+#02
+#06
+#35
+#81
+#35
+#7f
+#08
+#22
+#25
+#7b
+#05
+#01
+#09
+#02
+#a1
+#01
+#85
+#02
+#09
+#01
+#a1
+#00
+#05
+#09
+#19
+#01
+#29
+#08
+#15
+#00
+#25
+#01
+#75
+#01
+#95
+#08
+#81
+#02
+#05
+#01
+#09
+#30
+#09
+#31
+#16
+#01
+#f8
+#26
+#ff
+#07
+#75
+#10
+#95
+#02
+#81
+#06
+#09
+#38
+#15
+#81
+#25
+#7f
+#75
+#08
+#95
+#01
+#81
+#06
+#05
+#0c
+#0a
+#38
+#02
+#75
+#08
+#95
+#01
+#81
+#06
+#c0
+#c0
+#05
+#0c
+#09
+#01
+#a1
+#01
+#85
+#03
+#75
+#10
+#95
+#02
+#15
+#01
+#26
+#8c
+#02
+#19
+#01
+#2a
+#8c
+#02
+#81
+#60
+#c0
+#06
+#00
+#ff
+#09
+#01
+#a1
+#01
+#85
+#10
+#75
+#08
+#95
+#06
+#15
+#00
+#26
+#ff
+#00
+#09
+#01
+#81
+#00
+#09
+#01
+#91
+#00
+#c0
+#09
+#02
+#07
+#35
+#08
+#35
+#06
+#09
+#04
+#09
+#09
+#01
+#00
+#09
+#02
+#08
+#28
+#00
+#09
+#02
+#09
+#28
+#01
+#09
+#02
+#0a
+#28
+#01
+#09
+#02
+#0b
+#09
+#01
+#00
+#09
+#02
+#0c
+#09
+#1f
+#40
+#09
+#02
+#0d
+#28
+#00
+#09
+#02
+#0e
+#28
+#01
+#09
+#02
+#0f
+#09
+#00
+#12
+#09
+#02
+#10
+#09
+#00
+#00
+#
+#04 1002 1200 0100 0001
+#00 01 00 01
+#36 00 5a
+#09
+#00
+#00
+#0a
+#00
+#01
+#00
+#01
+#09
+#00
+#01
+#35
+#03
+#19
+#12
+#00
+#09
+#00
+#04
+#35
+#0d
+#35
+#06
+#19
+#01
+#00
+#09
+#00
+#01
+#35
+#03
+#19
+#00
+#01
+#09
+#00
+#05
+#35
+#03
+#19
+#10
+#02
+#09
+#00
+#09
+#35
+#08
+#35
+#06
+#19
+#12
+#00
+#09
+#01
+#00
+#09
+#02
+#00
+#09
+#01
+#03
+#09
+#02
+#01
+#09
+#04
+#6d
+#09
+#02
+#02
+#09
+#b0
+#16
+#09
+#02
+#03
+#09
+#01
+#29
+#09
+#02
+#04
+#28
+#01
+#09
+#02
+#05
+#09
+#00
+#02
+#00
+#00
+#
+#01 0001
+#00 01 00 01
+#36 00 5a
+#09
+#00
+#00
+#0a
+#00
+#01
+#00
+#01
+#09
+#00
+#01
+#35
+#03
+#19
+#12
+#00
+#09
+#00
+#04
+#35
+#0d
+#35
+#06
+#19
+#01
+#00
+#09
+#00
+#01
+#35
+#03
+#19
+#00
+#01
+#09
+#00
+#05
+#35
+#03
+#19
+#10
+#02
+#09
+#00
+#09
+#35
+#08
+#35
+#06
+#19
+#12
+#00
+#09
+#01
+#00
+#09
+#02
+#00
+#09
+#01
+#00
+#09
+#02
+#01
+#09
+#05
+#ac
+#09
+#02
+#02
+#09
+#02
+#39
+#09
+#02
+#03
+#09
+#00
+#44
+#09
+#02
+#04
+#28
+#01
+#09
+#02
+#05
+#09
+#00
+#02
+#
+#03 1101 0003 0100
+#00 01 00 02
+#36 00 2f
+#09
+#00
+#00
+#0a
+#00
+#01
+#00
+#02
+#09
+#00
+#01
+#35
+#03
+#19
+#11
+#01
+#09
+#00
+#04
+#35
+#0c
+#35
+#03
+#19
+#01
+#00
+#35
+#05
+#19
+#00
+#03
+#08
+#01
+#09
+#01
+#00
+#25
+#09
+#53
+#50
+#50
+#20
+#73
+
+
+
+#logi sdp
+#04 1000 0100 0001 1002
+#00 00 00 00
+#36 00 92 
+#09 00 00 0a 00 00 00 00 09 00 01 35 03 19 10 00 09 00 04 35 0d 35 06 
+#19 01 00 09 00 01 35 03 19 00 01 09 00 05 35 03 19 10 02 09 00 06 35 
+#09 09 65 6e 09 00 6a 09 01 00 09 00 09 35 08 35 06 19 01 00 09 01 00 
+#09 01 00 25 2c 4c 6f 67 69 74 65 63 68 20 42 6c 75 65 74 6f 6f 74 68 20 
+#57 69 72 65 6c 65 73 73 20 4d 6f 75 73 65 20 53 44 50 20 53 65 72 76 65 
+#72 09 01 01 25 0f 42 6c 75 65 74 6f 6f 74 68 20 4d 6f 75 73 65 09 02 00 35 03 09 01 00
+
+#04 1124 0100 0011 1002
+#00 01 00 00
+#36 01 ee 
+#09 00 00 0a 00 01 00 00 09 00 01 35 03 19 11 24 09 00 04 35 
+#0d 35 06 19 01 00 09 00 11 35 03 19 00 11 09 00 05 35 03 19 10 02 
+#09 00 06 35 09 09 65 6e 09 00 6a 09 01 00 09 00 09 35 08 35 06 19 11 24 
+#09 01 01 09 00 0d 35 0f 35 0d 35 06 19 01 00 09 00 13 35 03 19 00 11 09 01 
+#00 25 21 4c 6f 67 69 74 65 63 68 20 42 6c 75 65 74 6f 6f 74 68 20 57 69 72 65 6c 
+#65 73 73 20 4d 6f 75 73 65 09 01 01 25 0f 42 6c 75 65 74 6f 6f 74 68 20 4d 6f 75 
+#73 65 09 01 02 25 08 4c 6f 67 69 74 65 63 68 09 02 01 09 01 11 09 02 02 08 80 09 02 
+#03 08 21 09 02 04 28 01 09 02 05 28 01 09 02 06 35 fc 35 fa 08 22 25 f6 05 01 09 02 a1 01 
+#85 02 09 01 a1 00 05 09 19 01 29 08 15 00 25 01 75 01 95 08 81 02 05 01 09 30 09 31 16 01 
+#f8 26 ff 07 75 0c 95 02 81 06 09 38 15 81 25 7f 75 08 95 01 81 06 05 0c 0a 38 02 75 08 95 01 81 
+#06 c0 c0 05 0c 09 01 a1 01 85 03 05 06 09 20 15 00 26 64 00 75 08 95 01 81 02 c0 06 00 ff 09 01 
+#a1 01 85 10 75 08 95 06 15 00 26 ff 00 09 01 81 00 09 01 91 00 c0 06 00 ff 09 02 a1 01 85 11 75 
+#08 95 13 15 00 26 ff 00 09 02 81 00 09 02 91 00 c0 05 01 09 06 a1 01 85 04 75 01 95 08 05 07 
+#19 e0 29 e7 15 00 25 01 81 02 95 01 75 08 81 03 95 05 75 01 05 08 19 01 29 05 91 02 95 01 
+#75 03 91 03 95 06 75 08 15 00 26 ff 00 05 07 19 00 29 ff 81 00 c0 05 0c 09 01 a1 01 85 05 
+#15 00 25 01 75 01 95 02 0a 25 02 0a 24 02 81 02 95 01 75 06 81 03 c0 09 02 07 35 08 35 
+#06 09 04 09 09 01 00 09 02 09 28 01 09 02 0a 28 01 09 02 0c 09 1f 40 09 02 0d 28 00 09 
+#02 0e 28 01 09 02 0f 09 00 12 09 02 10 09 00 00
+
+#04 1200 0100 0001 1002
+#00 01 00 01
+#36 00 ad 
+#09 00 00 0a 00 01 00 01 09 00 01 35 03 19 12 00 09 00 04 35 0d 35 06 19 01 
+#00 09 00 01 35 03 19 00 01 09 00 05 35 03 19 10 02 09 00 06 35 09 09 65 
+#6e 09 00 6a 09 01 00 09 00 09 35 08 35 06 19 12 00 09 01 00 09 01 00 
+#25 2c 4c 6f 67 69 74 65 63 68 20 42 6c 75 65 74 6f 6f 74 68 20 57 69 72 
+#65 6c 65 73 73 20 4d 6f 75 73 65 20 50 6e 50 20 53 65 72 76 65 72 09 01 
+#01 25 0f 42 6c 75 65 74 6f 6f 74 68 20 4d 6f 75 73 65 09 02 00 09 01 03 09 
+#02 01 09 04 6d 09 02 02 09 b0 16 09 02 03 09 12 03 09 02 04 28 01 09 02 05 09 00 02 00
+
+
Index: util/flash_dat2eeprom_dat.pl
===================================================================
--- /branch/mouse_project/YJX_Project/YJX_1059/JDT_172_BD_2.4G&BLE/util/flash_dat2eeprom_dat.pl	(nonexistent)
+++ /branch/mouse_project/YJX_Project/YJX_1059/JDT_172_BD_2.4G&BLE/util/flash_dat2eeprom_dat.pl	(working copy)
@@ -0,0 +1,24 @@
+
+#鏀瑰墠涓変釜瀛楄妭涓0200锛
+#杈撳叆涓涓枃浠讹紝杈撳嚭涓涓枃浠讹紱
+
+if(@ARGV < 2) {
+	printf "less files\n";
+	exit;
+}
+else{
+	open(file, $ARGV[0]) or die "Can't open  file  : $!"; 
+	open(file_out, ">$ARGV[1]")or die "Can't open out file  : $!"; 
+	@lines = <file>;
+	$length = @lines;
+	
+	my $j=3;
+	print file_out "00\n02\n";
+	while($j<$length){
+			print file_out "$lines[$j]";
+			$j++;
+	}
+#	print "----- reverse end -----";
+	close(file);
+	close(file_out);
+}
Index: util/geneep.exe
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: util/geneep.exe
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: util/genotp.pl
===================================================================
--- /branch/mouse_project/YJX_Project/YJX_1059/JDT_172_BD_2.4G&BLE/util/genotp.pl	(nonexistent)
+++ /branch/mouse_project/YJX_Project/YJX_1059/JDT_172_BD_2.4G&BLE/util/genotp.pl	(working copy)
@@ -0,0 +1,38 @@
+#!/usr/bin/perl
+
+open(FILE,"program.lis") or die $!;
+$page_size = 64;
+$j = $page_size;
+while(<FILE>){
+	if(/^([0-9a-f]+)\s+([0-9a-f]+)/ && hex($1) >= 0x10000) {
+		#print $1,"\n",$j,"\n";
+		if(hex(substr($1,length($1)-4,4)) == 1){
+
+			#print "aaa\n";
+			for(;$j < $page_size;$j++) {
+					print "00\n00\n00\n00\n";
+					#print $j,"\n";
+			}
+			$j = 0;
+		}
+		if($j == 0){
+			print "20\n20\n00\n40\n";
+			$j ++;
+		}
+		for($i = 0;$i < 4;$i++) {
+			print substr($2, $i*2, 2),"\n"; 
+
+		}
+		$j ++;
+		if($j == $page_size){
+			$j = 0;
+		}elsif($j > $page_size){
+			print "Overflow at 0x",$1," !\n";
+			close(FILE);
+			die;
+		}
+
+	}
+}
+#print "codecnt = ",$codecnt,"\n";
+close(FILE);
\ No newline at end of file
Index: util/memalloc.pl
===================================================================
--- /branch/mouse_project/YJX_Project/YJX_1059/JDT_172_BD_2.4G&BLE/util/memalloc.pl	(nonexistent)
+++ /branch/mouse_project/YJX_Project/YJX_1059/JDT_172_BD_2.4G&BLE/util/memalloc.pl	(working copy)
@@ -0,0 +1,74 @@
+#!/usr/bin/perl
+$path="output/bt_format.meta";
+open file, $path;
+@f = <file>;
+close file;
+open file, ">$path";
+$path =~ s/\/.*//;
+open file1, ">output/memmap.format";
+$xaddr = 0x4000;
+$addr = 0;
+if($#ARGV == 1) {
+	$addr = hex($ARGV[0]);
+	$xaddr = hex($ARGV[1]);
+}
+for($i = 0;$i < @f;$i++) { $cmalloc[$i] = (); }
+for($i = 0;$i < @f;$i++) { 
+	$_ = $f[$i];
+	$start = 1 if(/^\s*memalloc\s*\(\s*$/);
+	$start = 2 if(/^\s*xmemalloc\s*\(\s*$/);
+	$start = 3 if(/^\s*omemalloc\s*\(\s*$/);
+	$start = 10 + $1 if(/^\s*cmemalloc\s+([0-9])\s*\(\s*$/);
+	if($start) {
+		if(/^\s*([0-9]+)\s+([a-zA-Z0-9_]+)\s*(.*)$/) {
+			if($start == 1) {
+				$str = sprintf "0x%04x %s%s\n", $addr, $2, $3;
+				$addr += $1;
+				$bstr .= $str;
+				$sstr .= $str;
+			} elsif($start == 2) {
+				$str = sprintf "0x%04x %s%s\n", $xaddr, $2, $3;
+				$xaddr += $1;
+				$xstr .= $str;
+			} else {
+				push @ostr, $_;
+			}
+		}
+		if(/^\s*\)\s*$/) {
+			if(@ostr > 0) {
+				if($start == 3) {
+					push @omalloc,[@ostr];
+				} elsif($start > 9) {
+					$j = $start - 10;
+					push @{$cmalloc[$j]},@ostr;
+				} 
+			}
+			$start = 0;
+			@ostr = ();
+		}
+	} else {
+		$sstr .= $_;
+	}
+}
+for($i = 0;$i <= $#cmalloc;$i++) {
+	push @omalloc,$cmalloc[$i];
+#	for($j = 0;$j <= $#{$cmalloc[$i]};$j++) {		print $cmalloc[$i][$j];	}
+}
+
+$xend = $xaddr;
+for($i = 0;$i <= $#omalloc;$i++) {
+	for($j = 0, $oaddr = $xaddr;$j <= $#{$omalloc[$i]};$j++) {
+		if($omalloc[$i][$j] =~ /^\s*([0-9]+)\s+([a-zA-Z0-9_]+)\s*(.*)$/) {
+			$str = sprintf "0x%04x %s%s\n", $oaddr, $2, $3;
+			$oaddr += $1;
+			$xstr .= $str;
+		}
+	}
+}
+$xend = $oaddr if($oaddr > $xend);
+print file $xstr, $sstr;
+print file1 $bstr, $xstr;
+close file;
+close file1;
+printf "\nLast allocated address is %04x\n", $addr;
+printf "\nLast allocated xmem address is %04x\n", $xend;
\ No newline at end of file
Index: util/mergepatch.pl
===================================================================
--- /branch/mouse_project/YJX_Project/YJX_1059/JDT_172_BD_2.4G&BLE/util/mergepatch.pl	(nonexistent)
+++ /branch/mouse_project/YJX_Project/YJX_1059/JDT_172_BD_2.4G&BLE/util/mergepatch.pl	(working copy)
@@ -0,0 +1,44 @@
+#!/usr/bin/perl
+$defs = "";
+$fmt = 0;
+
+
+sub parseif {
+	my($fname) = @_;
+	open file, $fname;
+	@f = <file>;
+	close file;
+	open file, ">$fname";
+	@valid = (1);
+	for($i = 0;$i < @f;$i++) { 
+		$_ = $f[$i];
+		$defs .= $1 . " " if(/^define\s+(\w+)\s*/);
+		if(/^ifdef\s+(\w+)\s*/) {
+			push @valid, ($defs =~ /(^|\s)$1(\s|$)/ ? 1 : 0) & $valid[$#valid];
+		} elsif(/^ifndef\s+(\w+)\s*/) {
+			push @valid, ($defs =~ /(^|\s)$1(\s|$)/ ? 0 : 1) & $valid[$#valid];
+		} elsif(/^else/) {
+			printf "%s\nelse without if at line %d\n", $f[$i - 3], $i if($#valid == 0);
+			$valid[$#valid] = (1 - $valid[$#valid]) & $valid[$#valid - 1];
+		} elsif(/^endif/) {
+			printf "%s\nendif without if at line %d\n", $_, $i if($#valid == 0);
+			pop @valid;
+		} elsif($valid[$#valid]) {
+			if(/^include\s+(.+)\s*/) {
+				open file2, "program/$1";
+				@f2 = <file2>;
+				close file2;
+				splice(@f, $i + 1, 0, @f2);
+			} else {
+				print file $_;
+			}
+		}
+	}
+	close file;
+}
+
+parseif("output/bt_program23.meta");
+$fmt = 1;
+parseif("output/bt_format.meta");
+
+
