Index: do.bat
===================================================================
--- /1121s/branch/mouse/mouse_public_1M/do.bat	(revision 6512)
+++ /1121s/branch/mouse/mouse_public_1M/do.bat	(working copy)
@@ -4,7 +4,7 @@
 @set YC_PATCH_FILE=yc_patch_yc1021.h
 @set enc=1
 @set enckey=0000000000000000
-@set sched_optimize=0
+@set sched_optimize=1
 @rem set device_option=rfbqb
 @set device_option=mouse
 @rem set device_option=shutter
Index: output/eeprom.dat
===================================================================
--- /1121s/branch/mouse/mouse_public_1M/output/eeprom.dat	(revision 6512)
+++ /1121s/branch/mouse/mouse_public_1M/output/eeprom.dat	(working copy)
@@ -5638,74 +5638,66 @@
 13
 aa
 55
-40
-00
+06
 00
-40
+f1
+44
 05
+22
+26
+55
+51
+61
+aa
+55
+06
 00
-73
-07
-a0
-00
-00
-00
-00
-00
-00
-00
-00
-d7
-18
-86
-f2
-7d
-69
-00
-00
-00
-00
+db
+42
+51
+81
+91
+a1
+b3
+c1
+aa
+55
+01
 00
-20
+1c
+41
+3e
+aa
+55
+02
 00
-60
+38
+46
+b0
 04
+aa
+55
+01
 00
+12
+47
+0a
+aa
+55
+02
 00
-00
-00
-00
-00
-10
-04
+25
+47
 70
+17
+aa
+55
+02
 00
-00
-06
-00
-30
-00
-00
-00
-00
-00
-00
-00
-00
-45
-a4
-00
-00
-00
-00
-00
-00
-00
-00
-00
-00
-00
-00
+3a
+46
+58
+02
 aa
 55
 08
@@ -5722,6 +5714,48 @@
 1b
 aa
 55
+01
+00
+27
+47
+07
+aa
+55
+01
+00
+3c
+46
+64
+aa
+55
+01
+00
+1b
+47
+03
+aa
+55
+01
+00
+28
+47
+03
+aa
+55
+01
+00
+3d
+46
+64
+aa
+55
+01
+00
+29
+47
+01
+aa
+55
 1e
 00
 44
@@ -5758,50 +5792,47 @@
 ff
 aa
 55
-01
+02
 00
-29
-47
-01
+66
+46
+00
+34
 aa
 55
-02
+01
 00
 ff
 46
 00
-14
 aa
 55
-03
+01
 00
 02
 47
 05
-02
-05
 aa
 55
 01
 00
-07
+05
 47
-14
+02
 aa
 55
 01
 00
-05
+07
 47
-02
+14
 aa
 55
-02
+01
 00
 0a
 47
 02
-06
 aa
 55
 01
@@ -5811,13 +5842,6 @@
 0a
 aa
 55
-01
-00
-12
-47
-0a
-aa
-55
 02
 00
 0f
@@ -5826,19 +5850,11 @@
 02
 aa
 55
-02
-00
-3a
-46
-58
-02
-aa
-55
 01
 00
-3d
-46
-64
+1e
+47
+0a
 aa
 55
 02
@@ -5849,290 +5865,284 @@
 00
 aa
 55
-01
+0c
 00
-3c
-46
-64
+8c
+49
+0b
+42
+54
+35
+2e
+32
+20
+4d
+6f
+75
+73
+65
 aa
 55
 02
 00
-38
-46
-b0
-04
+fa
+49
+b9
+1a
 aa
 55
-01
+0c
+00
+16
+00
+00
+00
+20
+00
+00
+00
+00
+00
+00
+00
 00
-1e
-47
-0a
-aa
-55
-02
 00
-25
-47
-70
-17
 aa
 55
 01
 00
-cb
-43
-08
+1c
+02
+5a
 aa
 55
 01
 00
-1b
-47
-03
+6c
+08
+ff
 aa
 55
-01
-00
-94
 40
-01
-aa
-55
-01
 00
-c0
+00
 40
-20
-aa
-55
-01
+05
 00
-6b
-49
-20
-aa
-55
-03
+73
+07
+a0
 00
-3c
-47
 00
 00
 00
-aa
-55
-02
 00
-66
-46
 00
-34
-aa
-55
-01
 00
-74
-46
-34
-aa
-55
-01
 00
-81
-46
-34
-aa
-55
-01
+d7
+18
+86
+f2
+7d
+69
 00
-28
-47
-03
-aa
-55
-01
 00
-27
-47
-07
-aa
-55
-06
 00
-e6
-46
 00
 00
+20
 00
+60
+04
 00
 00
 00
-aa
-55
+00
+00
+00
+10
+04
+70
+00
+00
 06
 00
-f1
-44
-05
-22
-26
-55
-51
-61
-aa
-55
-01
+30
+00
+00
+00
+00
+00
 00
-89
-45
-01
-aa
-55
-05
 00
-e3
-45
-01
-0f
-0f
-0f
-0f
-aa
-55
-01
 00
-b9
 45
+a4
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
 00
 aa
 55
-01
+0a
 00
+94
 40
-47
-02
-aa
-55
 01
 00
-ca
-45
 00
+00
+00
+18
+00
+0c
+49
+41
 aa
 55
 01
 00
-7b
-47
-00
+a7
+40
+20
 aa
 55
-02
+0c
 00
-8b
-45
 c0
-12
-aa
-55
-07
+40
+20
 00
-43
-47
-d0
-52
 00
-80
-bb
+35
+3f
+64
+db
+7b
+3b
 00
-05
+08
+b4
 aa
 55
-04
+09
 00
-55
-47
-80
-bb
+41
+41
+03
+00
+ff
+04
 00
 00
+08
+0c
+ff
 aa
 55
-07
+05
 00
-4a
-47
-70
-11
-01
+5e
+41
+08
+0e
+05
+03
 00
-77
-01
-0b
 aa
 55
-04
-00
-59
-47
-00
-77
 01
 00
+68
+41
+20
 aa
 55
-03
-00
-af
-45
+0c
 00
-48
-60
+6b
+42
+0b
+42
+54
+35
+2e
+32
+20
+4d
+6f
+75
+73
+65
 aa
 55
-02
+08
+00
+d3
+42
+06
+00
+09
+00
+20
 00
-1d
-46
 2c
 01
 aa
 55
 02
 00
-1b
-46
-50
+32
+43
+2d
 00
 aa
 55
-02
-00
-23
-47
-64
-00
-aa
-55
-01
+0c
 00
-f4
-46
+48
+43
+1f
+02
 01
+05
+03
+03
+12
+18
+03
+19
+c2
+03
 aa
 55
-06
+0e
 00
-db
+68
+43
+1f
+0c
+09
 42
-51
-81
-91
-a1
-b3
-c1
+54
+35
+2e
+32
+20
+4d
+6f
+75
+73
+65
 aa
 55
 01
@@ -6142,6 +6152,14 @@
 07
 aa
 55
+02
+00
+9b
+43
+19
+00
+aa
+55
 08
 00
 c0
@@ -6156,335 +6174,244 @@
 08
 aa
 55
-02
-00
-be
-47
-96
+01
 00
+cb
+43
+08
 aa
 55
-02
+01
 00
-b5
-47
-15
+09
+44
+0a
+aa
+55
+07
 00
+38
+44
+a0
+90
+01
+bc
+02
+03
+09
 aa
 55
 02
 00
-9b
-43
-19
-00
+eb
+44
+1e
+ff
 aa
 55
 04
 00
-b7
-47
-1d
-00
-21
+89
+45
+01
 00
+c0
+12
 aa
 55
-02
+03
 00
-32
-43
-2d
+af
+45
 00
+48
+60
 aa
 55
-02
-00
-bb
-47
-30
+01
 00
+d2
+45
+07
 aa
 55
-0c
+05
 00
-48
-43
-1f
-02
+e3
+45
 01
-05
-03
-03
-12
-18
-03
-19
-c2
-03
+0f
+0f
+0f
+0f
 aa
 55
-14
+02
 00
-a0
+f0
+45
+83
 47
-06
-ff
-06
+aa
+55
+04
 00
-03
+1b
+46
+50
 00
-80
-0c
-09
-42
-54
-35
-2e
-32
-20
-4d
-6f
-75
-73
-65
+2c
+01
 aa
 55
-0e
+01
 00
-68
-43
-1f
-0c
-09
-42
-54
-35
-2e
-32
-20
-4d
-6f
-75
-73
-65
+27
+46
+7d
 aa
 55
-0c
+06
 00
-6b
-42
-0b
-42
-54
-35
-2e
-32
-20
-4d
-6f
+3e
+46
+94
+85
+90
+63
 75
-73
-65
+80
 aa
 55
-0c
+01
 00
-8c
-49
-0b
-42
-54
-35
-2e
-32
-20
-4d
-6f
-75
-73
-65
+74
+46
+34
 aa
 55
-08
-00
-d3
-42
-06
-00
-09
+01
 00
-20
+81
+46
+34
+aa
+55
+01
 00
-2c
+f4
+46
 01
 aa
 55
-06
+05
+00
 00
-9a
 47
-03
-12
-18
-ff
+14
 00
 00
+02
+05
 aa
 55
-04
+01
 00
-fa
-49
-b9
-1a
-ea
-1a
+0b
+47
+06
 aa
 55
-18
+02
 00
-e2
-49
-eb
-1a
-b2
-1b
-b3
-1b
-2a
-1c
-2b
-1c
-de
-1c
-df
-1c
-92
-1d
-93
-1d
-46
-1e
+23
 47
-1e
-fa
-1e
-aa
-55
-06
+64
 00
-fe
-49
-fb
-1e
-ac
-1f
-ae
-1f
 aa
 55
-01
+1d
 00
-ec
-44
-ff
-aa
-55
-01
+40
+47
+02
 00
-eb
-44
-1e
-aa
-55
-01
 00
-ee
-44
+d0
+52
 00
-aa
-55
+80
+bb
+00
+05
+70
+11
 01
 00
-41
-41
-03
-aa
-55
+77
 01
+0b
 00
-3e
-46
-94
-aa
-55
+00
+00
+00
+80
+bb
+00
+00
+00
+77
 01
 00
-d2
-45
-07
 aa
 55
-02
+1a
 00
-f0
-45
-83
+9a
 47
-aa
-55
-02
+03
+12
+18
+ff
 00
-3f
-46
-85
-90
-aa
-55
-02
 00
+06
+ff
+06
+00
+03
+00
+80
+0c
+09
 42
-46
+54
+35
+2e
+32
+20
+4d
+6f
 75
-80
+73
+65
 aa
 55
-01
+0b
 00
-41
-46
-63
-aa
-55
-01
+b5
+47
+15
 00
-27
-46
-7d
-aa
-55
-01
+1d
 00
-37
-44
+21
 00
-aa
-55
-03
+30
 00
-08
-4a
 00
-03
-25
-aa
-55
-01
+96
 00
-6c
-08
-ff
 aa
 55
 11
@@ -6510,58 +6437,6 @@
 88
 aa
 55
-08
-00
-4e
-49
-09
-a5
-0b
-f3
-09
-00
-ff
-ff
-aa
-55
-08
-00
-46
-49
-09
-5a
-0b
-f3
-09
-00
-ff
-ff
-aa
-55
-12
-00
-0b
-4a
-09
-a5
-46
-34
-19
-04
-60
-07
-69
-04
-7d
-20
-7e
-00
-09
-00
-ff
-ff
-aa
-55
 0a
 00
 7c
@@ -6638,176 +6513,108 @@
 ff
 aa
 55
-01
+10
 00
+46
+49
+09
+5a
+0b
+f3
 09
-44
-0a
-aa
-55
-01
 00
-48
-41
-0c
-aa
-55
-06
+ff
+ff
+09
+a5
+0b
+f3
+09
 00
-c3
-40
-35
-3f
-64
-db
-7b
-3b
+ff
+ff
 aa
 55
 01
 00
-a7
-40
+6b
+49
 20
 aa
 55
-03
-00
-c9
-40
-00
-08
-b4
-aa
-55
-01
-00
-99
-40
-18
-aa
-55
-01
+22
 00
+e2
+49
+eb
+1a
+b2
+1b
+b3
+1b
+2a
 1c
-41
-3e
-aa
-55
-0c
-00
-16
-00
-00
-00
-20
-00
-00
-00
-00
-00
-00
-00
-00
-00
-aa
-55
-05
-00
-5e
-41
-08
-0e
-05
-03
-00
-aa
-55
-01
-00
-68
-41
-20
-aa
-55
-02
-00
-9a
-40
-00
-0c
-aa
-55
-05
-00
-43
-41
-ff
-04
-00
-00
-08
-aa
-55
-01
-00
+2b
 1c
-02
-5a
-aa
-55
-01
-00
-38
-44
-a0
-aa
-55
-02
+de
+1c
+df
+1c
+92
+1d
+93
+1d
+46
+1e
+47
+1e
+fa
+1e
 00
-3b
-44
-bc
-02
-aa
-55
-02
 00
-39
-44
-90
-01
+ea
+1a
+fb
+1e
+ac
+1f
+ae
+1f
 aa
 55
-02
+15
+00
+08
+4a
 00
-3d
-44
 03
+25
 09
-aa
-55
-01
+a5
+46
+34
+19
+04
+60
+07
+69
+04
+7d
+20
+7e
 00
-49
-41
-ff
-aa
-55
-02
+09
 00
-9c
-40
-49
-41
+ff
+ff
 55
 aa
 aa
 55
-b5
-3c
-f6
-da
+2d
+02
+3e
+d3
 ff
 ff
 ff
@@ -8188,5 +7995,198 @@
 ff
 ff
 ff
-6c
-35
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+08
+26
Index: output/otp.dat
===================================================================
--- /1121s/branch/mouse/mouse_public_1M/output/otp.dat	(revision 6512)
+++ /1121s/branch/mouse/mouse_public_1M/output/otp.dat	(working copy)
@@ -5647,74 +5647,66 @@
 13
 aa
 55
-40
-00
+06
 00
-40
+f1
+44
 05
+22
+26
+55
+51
+61
+aa
+55
+06
 00
-73
-07
-a0
-00
-00
-00
-00
-00
-00
-00
-00
-d7
-18
-86
-f2
-7d
-69
-00
-00
-00
-00
+db
+42
+51
+81
+91
+a1
+b3
+c1
+aa
+55
+01
 00
-20
+1c
+41
+3e
+aa
+55
+02
 00
-60
+38
+46
+b0
 04
+aa
+55
+01
 00
+12
+47
+0a
+aa
+55
+02
 00
-00
-00
-00
-00
-10
-04
+25
+47
 70
+17
+aa
+55
+02
 00
-00
-06
-00
-30
-00
-00
-00
-00
-00
-00
-00
-00
-45
-a4
-00
-00
-00
-00
-00
-00
-00
-00
-00
-00
-00
-00
+3a
+46
+58
+02
 aa
 55
 08
@@ -5731,6 +5723,48 @@
 1b
 aa
 55
+01
+00
+27
+47
+07
+aa
+55
+01
+00
+3c
+46
+64
+aa
+55
+01
+00
+1b
+47
+03
+aa
+55
+01
+00
+28
+47
+03
+aa
+55
+01
+00
+3d
+46
+64
+aa
+55
+01
+00
+29
+47
+01
+aa
+55
 1e
 00
 44
@@ -5767,50 +5801,47 @@
 ff
 aa
 55
-01
+02
 00
-29
-47
-01
+66
+46
+00
+34
 aa
 55
-02
+01
 00
 ff
 46
 00
-14
 aa
 55
-03
+01
 00
 02
 47
 05
-02
-05
 aa
 55
 01
 00
-07
+05
 47
-14
+02
 aa
 55
 01
 00
-05
+07
 47
-02
+14
 aa
 55
-02
+01
 00
 0a
 47
 02
-06
 aa
 55
 01
@@ -5820,13 +5851,6 @@
 0a
 aa
 55
-01
-00
-12
-47
-0a
-aa
-55
 02
 00
 0f
@@ -5835,19 +5859,11 @@
 02
 aa
 55
-02
-00
-3a
-46
-58
-02
-aa
-55
 01
 00
-3d
-46
-64
+1e
+47
+0a
 aa
 55
 02
@@ -5858,345 +5874,238 @@
 00
 aa
 55
-01
+0c
 00
-3c
-46
-64
+8c
+49
+0b
+42
+54
+35
+2e
+32
+20
+4d
+6f
+75
+73
+65
 aa
 55
 02
 00
-38
-46
-b0
-04
+fa
+49
+b9
+1a
 aa
 55
-01
+0c
+00
+16
+00
+00
+00
+20
+00
+00
+00
+00
+00
+00
+00
 00
-1e
-47
-0a
-aa
-55
-02
 00
-25
-47
-70
-17
 aa
 55
 01
 00
-cb
-43
-08
+1c
+02
+5a
 aa
 55
 01
 00
-1b
-47
-03
+6c
+08
+ff
 aa
 55
-01
-00
-94
 40
-01
-aa
-55
-01
 00
-c0
+00
 40
-20
-aa
-55
-01
+05
 00
-6b
-49
-20
-aa
-55
-03
+73
+07
+a0
 00
-3c
-47
 00
 00
 00
-aa
-55
-02
 00
-66
-46
 00
-34
-aa
-55
-01
 00
-74
-46
-34
-aa
-55
-01
 00
-81
-46
-34
-aa
-55
-01
+d7
+18
+86
+f2
+7d
+69
 00
-28
-47
-03
-aa
-55
-01
 00
-27
-47
-07
-aa
-55
-06
 00
-e6
-46
 00
 00
+20
 00
+60
+04
 00
 00
 00
-aa
-55
-06
 00
-f1
-44
-05
-22
-26
-55
-51
-61
-aa
-55
-01
 00
-89
-45
-01
-aa
-55
-05
 00
-e3
-45
-01
-0f
-0f
-0f
-0f
-aa
-55
-01
+10
+04
+70
 00
-b9
-45
 00
-aa
-55
-01
+06
 00
-40
-47
-02
-aa
-55
-01
+30
 00
-ca
-45
 00
-aa
-55
-01
 00
-7b
-47
 00
-aa
-55
-02
 00
-8b
-45
-c0
-12
-aa
-55
-07
 00
-43
-47
-d0
-52
 00
-80
-bb
 00
-05
-aa
-55
-04
+45
+a4
+00
+00
 00
-55
-47
-80
-bb
 00
 00
-aa
-55
-07
 00
-4a
-47
-70
-11
-01
 00
-77
-01
-0b
-aa
-55
-04
 00
-59
-47
 00
-77
-01
 00
-aa
-55
-03
 00
-af
-45
 00
-48
-60
 aa
 55
-02
+0a
 00
-1d
-46
-2c
+94
+40
 01
-aa
-55
-02
 00
-1b
-46
-50
 00
-aa
-55
-02
 00
-23
-47
-64
 00
+18
+00
+0c
+49
+41
 aa
 55
 01
 00
-f4
-46
-01
+a7
+40
+20
 aa
 55
-06
+0c
 00
+c0
+40
+20
+00
+00
+35
+3f
+64
 db
-42
-51
-81
-91
-a1
-b3
-c1
-aa
-55
-01
+7b
+3b
 00
-93
-43
-07
+08
+b4
 aa
 55
-08
+09
 00
-c0
-43
-fb
+41
+41
+03
+00
+ff
+04
 00
-48
-08
-fb
 00
-48
 08
+0c
+ff
 aa
 55
-02
+05
 00
-be
-47
-96
+5e
+41
+08
+0e
+05
+03
 00
 aa
 55
-02
-00
-b5
-47
-15
+01
 00
+68
+41
+20
 aa
 55
-02
-00
-9b
-43
-19
+0c
 00
+6b
+42
+0b
+42
+54
+35
+2e
+32
+20
+4d
+6f
+75
+73
+65
 aa
 55
-04
+08
 00
-b7
-47
-1d
+d3
+42
+06
 00
-21
+09
+00
+20
 00
+2c
+01
 aa
 55
 02
@@ -6207,14 +6116,6 @@
 00
 aa
 55
-02
-00
-bb
-47
-30
-00
-aa
-55
 0c
 00
 48
@@ -6233,32 +6134,6 @@
 03
 aa
 55
-14
-00
-a0
-47
-06
-ff
-06
-00
-03
-00
-80
-0c
-09
-42
-54
-35
-2e
-32
-20
-4d
-6f
-75
-73
-65
-aa
-55
 0e
 00
 68
@@ -6274,158 +6149,92 @@
 20
 4d
 6f
-75
-73
-65
-aa
-55
-0c
-00
-6b
-42
-0b
-42
-54
-35
-2e
-32
-20
-4d
-6f
-75
-73
-65
-aa
-55
-0c
-00
-8c
-49
-0b
-42
-54
-35
-2e
-32
-20
-4d
-6f
-75
-73
-65
-aa
-55
-08
-00
-d3
-42
-06
-00
-09
-00
-20
-00
-2c
-01
-aa
-55
-06
-00
-9a
-47
-03
-12
-18
-ff
-00
-00
-aa
-55
-04
-00
-fa
-49
-b9
-1a
-ea
-1a
-aa
-55
-18
-00
-e2
-49
-eb
-1a
-b2
-1b
-b3
-1b
-2a
-1c
-2b
-1c
-de
-1c
-df
-1c
-92
-1d
+75
+73
+65
+aa
+55
+01
+00
 93
-1d
-46
-1e
-47
-1e
-fa
-1e
+43
+07
 aa
 55
-06
+02
 00
-fe
-49
+9b
+43
+19
+00
+aa
+55
+08
+00
+c0
+43
 fb
-1e
-ac
-1f
-ae
-1f
+00
+48
+08
+fb
+00
+48
+08
 aa
 55
 01
 00
-ec
-44
-ff
+cb
+43
+08
 aa
 55
 01
 00
-eb
+09
 44
-1e
+0a
 aa
 55
-01
+07
 00
-ee
+38
 44
+a0
+90
+01
+bc
+02
+03
+09
+aa
+55
+02
 00
+eb
+44
+1e
+ff
 aa
 55
+04
+00
+89
+45
 01
 00
-41
-41
-03
+c0
+12
 aa
 55
-01
+03
 00
-3e
-46
-94
+af
+45
+00
+48
+60
 aa
 55
 01
@@ -6435,6 +6244,17 @@
 07
 aa
 55
+05
+00
+e3
+45
+01
+0f
+0f
+0f
+0f
+aa
+55
 02
 00
 f0
@@ -6443,132 +6263,187 @@
 47
 aa
 55
-02
+04
 00
-3f
+1b
 46
-85
-90
+50
+00
+2c
+01
 aa
 55
-02
+01
 00
-42
+27
+46
+7d
+aa
+55
+06
+00
+3e
 46
+94
+85
+90
+63
 75
 80
 aa
 55
 01
 00
-41
+74
 46
-63
+34
 aa
 55
 01
 00
-27
+81
 46
-7d
+34
 aa
 55
 01
 00
-37
-44
-00
+f4
+46
+01
 aa
 55
-03
+05
 00
-08
-4a
 00
-03
-25
+47
+14
+00
+00
+02
+05
 aa
 55
 01
 00
-6c
-08
-ff
+0b
+47
+06
 aa
 55
-11
-00
-68
-48
-03
-04
-01
 02
-20
-2a
-3f
-15
-14
-1b
-11
-0e
-8a
-8b
-83
-84
-88
+00
+23
+47
+64
+00
 aa
 55
-08
+1d
 00
-4e
-49
-09
-a5
+40
+47
+02
+00
+00
+d0
+52
+00
+80
+bb
+00
+05
+70
+11
+01
+00
+77
+01
 0b
-f3
-09
 00
+00
+00
+00
+80
+bb
+00
+00
+00
+77
+01
+00
+aa
+55
+1a
+00
+9a
+47
+03
+12
+18
 ff
+00
+00
+06
 ff
+06
+00
+03
+00
+80
+0c
+09
+42
+54
+35
+2e
+32
+20
+4d
+6f
+75
+73
+65
 aa
 55
-08
+0b
+00
+b5
+47
+15
+00
+1d
+00
+21
+00
+30
 00
-46
-49
-09
-5a
-0b
-f3
-09
 00
-ff
-ff
+96
+00
 aa
 55
-12
+11
 00
-0b
-4a
-09
-a5
-46
-34
-19
-04
-60
-07
-69
+68
+48
+03
 04
-7d
+01
+02
 20
-7e
-00
-09
-00
-ff
-ff
+2a
+3f
+15
+14
+1b
+11
+0e
+8a
+8b
+83
+84
+88
 aa
 55
 0a
@@ -6647,174 +6522,106 @@
 ff
 aa
 55
-01
+10
 00
+46
+49
+09
+5a
+0b
+f3
 09
-44
-0a
-aa
-55
-01
 00
-48
-41
-0c
-aa
-55
-06
+ff
+ff
+09
+a5
+0b
+f3
+09
 00
-c3
-40
-35
-3f
-64
-db
-7b
-3b
+ff
+ff
 aa
 55
 01
 00
-a7
-40
+6b
+49
 20
 aa
 55
-03
-00
-c9
-40
-00
-08
-b4
-aa
-55
-01
-00
-99
-40
-18
-aa
-55
-01
+22
 00
+e2
+49
+eb
+1a
+b2
+1b
+b3
+1b
+2a
 1c
-41
-3e
-aa
-55
-0c
-00
-16
-00
-00
-00
-20
-00
-00
-00
-00
-00
-00
-00
+2b
+1c
+de
+1c
+df
+1c
+92
+1d
+93
+1d
+46
+1e
+47
+1e
+fa
+1e
 00
 00
+ea
+1a
+fb
+1e
+ac
+1f
+ae
+1f
 aa
 55
-05
+15
 00
-5e
-41
 08
-0e
-05
-03
-00
-aa
-55
-01
-00
-68
-41
-20
-aa
-55
-02
-00
-9a
-40
-00
-0c
-aa
-55
-05
+4a
 00
-43
-41
-ff
+03
+25
+09
+a5
+46
+34
+19
 04
+60
+07
+69
+04
+7d
+20
+7e
 00
-00
-08
-aa
-55
-01
-00
-1c
-02
-5a
-aa
-55
-01
-00
-38
-44
-a0
-aa
-55
-02
-00
-3b
-44
-bc
-02
-aa
-55
-02
-00
-39
-44
-90
-01
-aa
-55
-02
-00
-3d
-44
-03
 09
-aa
-55
-01
 00
-49
-41
 ff
-aa
-55
-02
-00
-9c
-40
-49
-41
+ff
 55
 aa
 aa
 55
-b5
-3c
-f6
-da
+2d
+02
+3e
+d3
 20
Index: util/otpcheck.pl
===================================================================
--- /1121s/branch/mouse/mouse_public_1M/util/otpcheck.pl	(revision 6512)
+++ /1121s/branch/mouse/mouse_public_1M/util/otpcheck.pl	(working copy)
@@ -1,76 +1,77 @@
 #!/usr/bin/perl
 use strict;
 use warnings;
-use File::Spec;  
+use File::Spec;
 # 获取当前脚本的目录路径
+# Path setup
 my $current_dir = File::Spec->rel2abs('.');
-my $parent_dir = File::Spec->catdir($current_dir, '..');  # 获取上一级目录
-
+my $parent_dir  = File::Spec->catdir($current_dir, '..');  # 获取上一级目录
+my $otp_file    = File::Spec->catfile($parent_dir, 'output', 'otp.dat');
 # 指定要搜索的文件名
-my $filename = File::Spec->catfile($parent_dir, 'output', 'otp.dat');
+my $sched_file  = File::Spec->catfile($parent_dir, 'output', 'sched.rom');
 # 打开文件进行读取
-open(my $fh, '<',$filename) or die "无法打开文件 '$filename':$!";
-
-# 读取整个文件到数组中
-my @file_content = <$fh>;
-chomp @file_content;  # 移除每行的换行符
-
+# Address of mem_otp_offset_dpi (2 bytes, little-endian)
+# This variable stores the OTP address where DPI/device-info data begins
+my $DPI_OFFSET_ADDR = '49fa';
+
+# ===== Step 1: Find OTP firmware end from otp.dat =====
+open(my $otp_fh, '<', $otp_file) or die "Cannot open '$otp_file': $!\n";
+my @otp_lines = <$otp_fh>;
+chomp @otp_lines;
+s/\r$// for @otp_lines;  # Strip CR from CRLF line endings
 # 关闭文件句柄
-close($fh);
+close($otp_fh);
 
 # 初始化变量
 my $found = 0;
-my $otp_end_address = 0;
+my $otp_end = 0;
 # 循环遍历文件内容，每次移动一个字节
-for my $start (0 ..$#file_content - 3) {
+for my $i (0 .. $#otp_lines - 3) {
     # 提取从当前起始位置开始的四个字节
-    my $chunk = join('', @file_content[$start .. $start + 3]);
-    
+    my $chunk = join('', @otp_lines[$i .. $i + 3]);
     # 检查这四个字节是否匹配指定的字符串
-    if ($chunk eq '55aaaa55') {
-        $otp_end_address = $start +9;
-        # print "After adding 9 to the start position: $start\n";
+    if (lc($chunk) eq '55aaaa55') {
+        $otp_end = $i + 9;
         $found = 1;
+        last;
     }
 }
 
-# 如果找到了 "55aaaa55"，则继续处理 sched.rom 文件
-if ($found) {
-    my $sched_filename = File::Spec->catfile($parent_dir, 'output', 'sched.rom');
-    # 打开文件进行读取
-    open(my $sched_fh, '<',$sched_filename) or die "无法打开文件 '$sched_filename'$!";
-    # 读取整个文件到字符串中
-    my $sched_content = do { local$/; <$sched_fh> };
-    chomp $sched_content;  # 移除字符串末尾的换行符
-    # print "sched_content: $sched_content\n";
-    # 关闭文件句柄
-    close($sched_fh);
-    # 在 sched_content 中查找 "mem_otp_offset_dpi:"
-    my $sched_position = index($sched_content, 'mem_otp_offset_dpi:');
-    # 如果找到了 "mem_otp_offset_dpi:"
-    if ($sched_position != -1) {
-        # 获取 "mem_otp_offset_dpi:" 后面的两个字节
-        my $five_bytes_with_spaces = substr($sched_content, $sched_position + length("mem_otp_offset_dpi:"), 5);
-        $five_bytes_with_spaces =~ s/ //g;  # 移除空格
-        my $five_bytes =$five_bytes_with_spaces;
-        # 字节颠倒
-        my $reversed_bytes = substr($five_bytes, 2, 2) . substr($five_bytes, 0, 2);
-        my $decimal_value = hex($reversed_bytes);
-        # 打印找到的字符串位置信息以及后面跟随的两个字节
-        print "Original otp dpi store start little-endian bytes: $five_bytes\n";
-        print "Reversed (big-endian) bytes:  $decimal_value\n";
-        print "otp end bytes:  $otp_end_address\n";
-        if($decimal_value>$otp_end_address)
-        {
-            print"otp check done";
-        }
-        else
-        {
-            die "系统错误：在文件 '$sched_filename' 中找不到字符串 'mem_otp_offset_dpi:'\n";
+die "Error: pattern '55AAAA55' not found in '$otp_file'\n" unless $found;
+
+# ===== Step 2: Find DPI offset from sched.rom =====
+open(my $sched_fh, '<', $sched_file) or die "Cannot open '$sched_file': $!\n";
+my @sched_lines = <$sched_fh>;
+close($sched_fh);
+
+my $dpi_start = undef;
+
+for my $line (@sched_lines) {
+    chomp $line;
+    if ($line =~ /^\s*$DPI_OFFSET_ADDR\s*:\s*(.+)/i) {
+        my $data = $1;
+        $data =~ s/\s+//g;
+        if (length($data) >= 4) {
+            # Little-endian: low byte first, high byte second
+            my $lo = substr($data, 0, 2);
+            my $hi = substr($data, 2, 2);
+            $dpi_start = hex($hi . $lo);
         }
-    } else {
-        print "String 'mem_otp_offset_dpi:' not found in file '$sched_filename'.\n";
+        last;
     }
 }
 
+die "Error: address '$DPI_OFFSET_ADDR:' not found in '$sched_file'\n" unless defined $dpi_start;
+
+# ===== Step 3: Calculate and report =====
+my $remaining = $dpi_start - $otp_end;
 
+print "OTP firmware end:    $otp_end  (0x" . sprintf("%04X", $otp_end) . ")\n";
+print "DPI storage start:  $dpi_start  (0x" . sprintf("%04X", $dpi_start) . ")\n";
+print "Remaining space:    $remaining bytes\n";
+
+if ($remaining >= 0) {
+    print "OTP check passed.\n";
+} else {
+    die "Error: OTP overflow by " . (-$remaining) . " bytes\n";
+}
Index: util/sortsched.pl
===================================================================
--- /1121s/branch/mouse/mouse_public_1M/util/sortsched.pl	(revision 6512)
+++ /1121s/branch/mouse/mouse_public_1M/util/sortsched.pl	(working copy)
@@ -3,6 +3,26 @@
 $Sched_path=$ARGV[0];
 $Sched_test_path=$ARGV[1];
 
+# ===== Exclusion list =====
+# Variables at these addresses will NOT be merged with adjacent variables.
+# They are output as independent initialization blocks before the merged data.
+# Add addresses (4-digit hex, lowercase) as needed.
+@exclude_addrs = (
+'44f1',            # fixed: position 0
+'42db',            # fixed: position 1
+'411c',            # isolated
+# Interleave contiguous groups A(4638,463a,463c,463d), B(4712,4713,471b), C(4725,4727,4728,4729)
+# so that no two addresses from the same group are adjacent in output
+'4638', '4712', '4725',   # A0, B0, C0
+'463a', '4713', '4727',   # A1, B1, C1
+'463c', '471b', '4728',   # A2, B2, C2
+'463d', '4729',           # A3, C3
+# Remaining isolated addresses
+'4644', '4666', '46ff', '4702', '4705', '4707', '470a', '470d', '470f',
+'471e', '4721', '498c', '4b21', '49fa'
+);
+# ==========================
+
 open(Sched,"$Sched_path")||die("Cannot open files1\n");
 @sched=<Sched>;
 @sched[-1] = "";
@@ -17,23 +37,27 @@
 $Data_num=0;
 @Address_num;
 @OriginalRecord;
+$current_exclude_addr = "";
+
 foreach $sched (@sched)
 {
 	if($sched=~/[0-9a-fA-F][0-9a-fA-F][0-9a-fA-F][0-9a-fA-F]:/)
 	{
-		$lap_flag = 0;
-		$le_lap_flag = 0;
-		if($sched=~/44f1:/)
-		{
-			$lap_data = $sched;
-			$lap_flag = 1;
-		}
-		if($sched =~ /42db:/)
+		$current_exclude_addr = "";
+		$exclude_flag = 0;
+
+		foreach $ex_addr (@exclude_addrs)
 		{
-			$le_lap_data = $sched;
-			$le_lap_flag = 1;
+			if($sched =~ /$ex_addr:/i)
+			{
+				$exclude_records{$ex_addr} = $sched;
+				$exclude_flag = 1;
+				$current_exclude_addr = $ex_addr;
+				last;
+			}
 		}
-		else
+
+		if($exclude_flag == 0)
 		{
 			$Data_num++;
 			@OriginalRecord[$Data_num]=$sched;
@@ -43,13 +67,9 @@
 	}
 	else
 	{
-		if($lap_flag == 1)
+		if($current_exclude_addr ne "")
 		{
-			$lap_data .= $sched;
-		}
-		if($le_lap_flag == 1)
-		{
-			$le_lap_data .= $sched;
+			$exclude_records{$current_exclude_addr} .= $sched;
 		}
 		else
 		{
@@ -79,7 +99,7 @@
 	$sort_Data=@sort_Data[$i];
 	@snap_variable=split(/:/,$sort_Data);
 	$WData=@snap_variable[1];
-	
+
 	if($WData =~ /[1-9a-fA-F]/ && hex(@snap_variable[0]) >= 16384){
 	$WADDR=@snap_variable[0];
 	@sort_Data[$i]=@OriginalRecord[$i];
@@ -127,38 +147,24 @@
 	#$sort_Data =~ s/\n//;
 	#$sort_Data.="\n";
 }
-#print Sched_test @OriginalRecord;
-print Sched_test1 $lap_data;
-print Sched_test1 $le_lap_data;
+
+# Output excluded records first (in the order listed in @exclude_addrs)
+# The order is arranged so that no two contiguous addresses appear consecutively;
+# otherwise geneep would merge them into a single aa55 block in otp.dat.
+# Only 44f1 and 42db are printed to stdout; all others go to file only.
+foreach $ex_addr (@exclude_addrs)
+{
+	if($exclude_records{$ex_addr})
+	{
+		print Sched_test1 $exclude_records{$ex_addr};
+		if($ex_addr eq '44f1' || $ex_addr eq '42db')
+		{
+			print $exclude_records{$ex_addr};
+		}
+	}
+}
+
 print Sched_test1 @sort_Data;
-print  $lap_data;
-print  $le_lap_data;
-#for($i=0;$i<$len_sort_Data;$i++)
-#foreach $sort_Data (@sort_Data)
-#{	
-	#$sort_Data=@sort_Data[$i];
-	#print Sched_test $PreviousData;
-	#@snap_variable=split(/:/,$sort_Data);
-	#$CurrentADDR=@snap_variable[0];
-	#$CurrentData=$sort_Data;
-	#print ($CurrentADDR);
-	#if($CurrentADDR-$PreviousADDR==1)
-	#{
-	#	$CurrentVal=@snap_variable[1];
-	#	@snap_variable=split(/\n/,$PreviousData);
-		
-	#	$PreviousData.=" ".$CurrentVal;
-	#	$CurrentData=$PreviousData;
-	#	@sort_Data[$i]="";
-	#	@sort_Data[$i-1]=$CurrentData;
-		#print ($CurrentData."\n");
-	#}
-	#$PreviousADDR=$CurrentADDR;
-	#$PreviousData=$CurrentData;
-	#print Sched_test $CurrentData;
-#}
-#print Sched_test @sort_Data;
-#close(Sched_test);
 close(Sched_test1);
 
 sub hex_add{
@@ -166,4 +172,4 @@
 	$data=hex($ADDR);
 	$data=$data+$Len-1;
 	return(sprintf("%04x",$data));
-}
\ No newline at end of file
+}
