diff --git a/Boot/MDK-ARM/build.log b/Boot/MDK-ARM/build.log
index 4d0b436..398e88f 100644
--- a/Boot/MDK-ARM/build.log
+++ b/Boot/MDK-ARM/build.log
@@ -2,20 +2,20 @@
Rebuild target 'caiic_boot'
assembling startup_n32wb03x.s...
compiling boot_crc32.c...
-compiling n32wb03x_gpio.c...
-compiling boot_cli.c...
-compiling n32wb03x_rcc.c...
+compiling app_bootset.c...
compiling app_ota.c...
compiling main.c...
+compiling n32wb03x_rcc.c...
compiling boot_usart.c...
compiling n32wb03x_usart.c...
+compiling boot_cli.c...
compiling n32wb03x_dma.c...
+compiling n32wb03x_gpio.c...
compiling system_n32wb03x.c...
-compiling app_bootset.c...
compiling n32wb03x_qflash.c...
linking...
Program Size: Code=11910 RO-data=2650 RW-data=96 ZI-data=7288
FromELF: creating hex file...
After Build - User command #1: fromelf --bin --output=.\bin\caiic_boot.bin .\Objects\caiic_boot.axf
".\Objects\caiic_boot.axf" - 0 Error(s), 0 Warning(s).
-Build Time Elapsed: 00:00:01
+Build Time Elapsed: 00:00:02
diff --git a/Boot/MDK-ARM/caiic_boot.uvguix.Administrator b/Boot/MDK-ARM/caiic_boot.uvguix.Administrator
index ab30f70..9c0f433 100644
--- a/Boot/MDK-ARM/caiic_boot.uvguix.Administrator
+++ b/Boot/MDK-ARM/caiic_boot.uvguix.Administrator
@@ -1805,8 +1805,8 @@
59392
File
- 2566
- 00200000010000002800FFFF01001100434D4643546F6F6C426172427574746F6E00E100000000000000000000000000000000000000000000000100000001000000018001E100000000000001000000000000000000000000000000000100000001000000018003E1000000000000020000000000000000000000000000000001000000010000000180CD7F0000000000000300000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018023E100000000040004000000000000000000000000000000000100000001000000018022E100000000040005000000000000000000000000000000000100000001000000018025E10000000000000600000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001802BE10000000004000700000000000000000000000000000000010000000100000001802CE10000000004000800000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001807A8A0000000000000900000000000000000000000000000000010000000100000001807B8A0000000004000A00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180D3B00000000000000B000000000000000000000000000000000100000001000000018015B10000000004000C0000000000000000000000000000000001000000010000000180F4B00000000004000D000000000000000000000000000000000100000001000000018036B10000000004000E00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FF88000000000400460000000000000000000000000000000001000000010000000180FE880000000004004500000000000000000000000000000000010000000100000001800B810000000004001300000000000000000000000000000000010000000100000001800C810000000004001400000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180F0880000020000000F000000000000000000000000000000000100000001000000FFFF0100120043555646696E64436F6D626F427574746F6EE803000000000000000000000000000000000000000000000001000000010000009600000002002050000000000C6170705F626C655F696E6974960000000000000001000C6170705F626C655F696E697400000000018024E10000000000001100000000000000000000000000000000010000000100000001800A810000000000001200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000FFFF01001500434D4643546F6F6C4261724D656E75427574746F6E2280000002000000150000002153746172742F53746F70202644656275672053657373696F6E094374726C2B46350000000000000000000000000100000001000000000000000000000001000000020021802280000000000000150000002153746172742F53746F70202644656275672053657373696F6E094374726C2B4635000000000000000000000000010000000100000000000000000000000100000000002180E0010000000000007500000021456E65726779204D6561737572656D656E742026776974686F75742044656275670000000000000000000000000100000001000000000000000000000001000000000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180C488000000000000160000000000000000000000000000000001000000010000000180C988000000000400180000000000000000000000000000000001000000010000000180C788000000000000190000000000000000000000000000000001000000010000002180C8880000000000001700000027264B696C6C20416C6C20427265616B706F696E747320696E2043757272656E7420546172676574000000000000000000000000010000000100000000000000000000000100000003002180C8880000000000001700000027264B696C6C20416C6C20427265616B706F696E747320696E2043757272656E7420546172676574000000000000000000000000010000000100000000000000000000000100000000002180E50100000000000078000000264B696C6C20416C6C20427265616B706F696E747320696E204163746976652050726F6A656374000000000000000000000000010000000100000000000000000000000100000000002180E601000000000000790000002F4B696C6C20416C6C20427265616B706F696E747320696E204D756C74692D50726F6A65637420576F726B73706163650000000000000000000000000100000001000000000000000000000001000000000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000021804C010000020001001A0000000F2650726F6A6563742057696E646F77000000000000000000000000010000000100000000000000000000000100000008002180DD880000000000001A0000000750726F6A656374000000000000000000000000010000000100000000000000000000000100000000002180DC8B0000000000003A00000005426F6F6B73000000000000000000000000010000000100000000000000000000000100000000002180E18B0000000000003B0000000946756E6374696F6E73000000000000000000000000010000000100000000000000000000000100000000002180E28B000000000000400000000954656D706C6174657300000000000000000000000001000000010000000000000000000000010000000000218018890000000000003D0000000E536F757263652042726F777365720000000000000000000000000100000001000000000000000000000001000000000021800000000000000400FFFFFFFF00000000000000000001000000000000000100000000000000000000000100000000002180D988000000000000390000000C4275696C64204F7574707574000000000000000000000000010000000100000000000000000000000100000000002180E38B000000000000410000000B46696E64204F75747075740000000000000000000000000100000001000000000000000000000001000000000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FB7F0000000000001B000000000000000000000000000000000100000001000000000000000446696C65C6030000
+ 2684
+ 00200000010000002800FFFF01001100434D4643546F6F6C426172427574746F6E00E100000000000000000000000000000000000000000000000100000001000000018001E100000000000001000000000000000000000000000000000100000001000000018003E1000000000000020000000000000000000000000000000001000000010000000180CD7F0000000000000300000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018023E100000000040004000000000000000000000000000000000100000001000000018022E100000000040005000000000000000000000000000000000100000001000000018025E10000000000000600000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001802BE10000000004000700000000000000000000000000000000010000000100000001802CE10000000004000800000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001807A8A0000000004000900000000000000000000000000000000010000000100000001807B8A0000000004000A00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180D3B00000000000000B000000000000000000000000000000000100000001000000018015B10000000004000C0000000000000000000000000000000001000000010000000180F4B00000000004000D000000000000000000000000000000000100000001000000018036B10000000004000E00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FF88000000000400460000000000000000000000000000000001000000010000000180FE880000000004004500000000000000000000000000000000010000000100000001800B810000000004001300000000000000000000000000000000010000000100000001800C810000000004001400000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180F0880000020000000F000000000000000000000000000000000100000001000000FFFF0100120043555646696E64436F6D626F427574746F6EE803000000000000000000000000000000000000000000000001000000010000009600000002002050000000000C626F6F745F636C695F72756E960000000000000007000C626F6F745F636C695F72756E0C6170705F626C655F696E69740B6B655F6D656D5F696E69740A4B455F4D454D5F454E5614675F727769705F686561705F656E765F73697A65146E735F486172644661756C745F48616E646C65720F4750494F5F50696E5F546F67676C6500000000000000000000000000000000000000000000000000000000018024E10000000000001100000000000000000000000000000000010000000100000001800A810000000000001200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000FFFF01001500434D4643546F6F6C4261724D656E75427574746F6E2280000002000000150000002153746172742F53746F70202644656275672053657373696F6E094374726C2B46350000000000000000000000000100000001000000000000000000000001000000020021802280000000000000150000002153746172742F53746F70202644656275672053657373696F6E094374726C2B4635000000000000000000000000010000000100000000000000000000000100000000002180E0010000000000007500000021456E65726779204D6561737572656D656E742026776974686F75742044656275670000000000000000000000000100000001000000000000000000000001000000000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180C488000000000000160000000000000000000000000000000001000000010000000180C988000000000400180000000000000000000000000000000001000000010000000180C788000000000000190000000000000000000000000000000001000000010000002180C8880000000000001700000027264B696C6C20416C6C20427265616B706F696E747320696E2043757272656E7420546172676574000000000000000000000000010000000100000000000000000000000100000003002180C8880000000000001700000027264B696C6C20416C6C20427265616B706F696E747320696E2043757272656E7420546172676574000000000000000000000000010000000100000000000000000000000100000000002180E50100000000000078000000264B696C6C20416C6C20427265616B706F696E747320696E204163746976652050726F6A656374000000000000000000000000010000000100000000000000000000000100000000002180E601000000000000790000002F4B696C6C20416C6C20427265616B706F696E747320696E204D756C74692D50726F6A65637420576F726B73706163650000000000000000000000000100000001000000000000000000000001000000000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000021804C010000020001001A0000000F2650726F6A6563742057696E646F77000000000000000000000000010000000100000000000000000000000100000008002180DD880000000000001A0000000750726F6A656374000000000000000000000000010000000100000000000000000000000100000000002180DC8B0000000000003A00000005426F6F6B73000000000000000000000000010000000100000000000000000000000100000000002180E18B0000000000003B0000000946756E6374696F6E73000000000000000000000000010000000100000000000000000000000100000000002180E28B000000000000400000000954656D706C6174657300000000000000000000000001000000010000000000000000000000010000000000218018890000000000003D0000000E536F757263652042726F777365720000000000000000000000000100000001000000000000000000000001000000000021800000000000000400FFFFFFFF00000000000000000001000000000000000100000000000000000000000100000000002180D988000000000000390000000C4275696C64204F7574707574000000000000000000000000010000000100000000000000000000000100000000002180E38B000000000000410000000B46696E64204F75747075740000000000000000000000000100000001000000000000000000000001000000000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FB7F0000000000001B000000000000000000000000000000000100000001000000000000000446696C65C6030000
1423
@@ -1838,7 +1838,7 @@
Debug
2373
- 00200000000000001900FFFF01001100434D4643546F6F6C426172427574746F6ECC880000000000002500000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018017800000000000002600000000000000000000000000000000010000000100000001801D800000000000002700000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001801A800000000000002800000000000000000000000000000000010000000100000001801B80000000000000290000000000000000000000000000000001000000010000000180E57F0000000000002A00000000000000000000000000000000010000000100000001801C800000000000002B00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018000890000000000002C00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180E48B0000000000002D0000000000000000000000000000000001000000010000000180F07F0000000000002E0000000000000000000000000000000001000000010000000180E8880000000000003700000000000000000000000000000000010000000100000001803B010000000000002F0000000000000000000000000000000001000000010000000180BB8A00000000000030000000000000000000000000000000000100000001000000FFFF01001500434D4643546F6F6C4261724D656E75427574746F6E0E01000000000000310000000D57617463682057696E646F7773000000000000000000000000010000000100000000000000000000000100000003001380D88B00000000000031000000085761746368202631000000000000000000000000010000000100000000000000000000000100000000001380D98B00000000000031000000085761746368202632000000000000000000000000010000000100000000000000000000000100000000001380CE01000000000000FFFFFFFF0C576174636820416E63686F720100000000000000010000000000000001000000000000000000000001000000000013800F01000000000000320000000E4D656D6F72792057696E646F7773000000000000000000000000010000000100000000000000000000000100000004001380D28B00000000000032000000094D656D6F7279202631000000000000000000000000010000000100000000000000000000000100000000001380D38B00000000000032000000094D656D6F7279202632000000000000000000000000010000000100000000000000000000000100000000001380D48B00000000000032000000094D656D6F7279202633000000000000000000000000010000000100000000000000000000000100000000001380D58B00000000000032000000094D656D6F72792026340000000000000000000000000100000001000000000000000000000001000000000013801001000000000000330000000E53657269616C2057696E646F77730000000000000000000000000100000001000000000000000000000001000000040013809307000000000000330000000855415254202326310000000000000000000000000100000001000000000000000000000001000000000013809407000000000000330000000855415254202326320000000000000000000000000100000001000000000000000000000001000000000013809507000000000000330000000855415254202326330000000000000000000000000100000001000000000000000000000001000000000013809607000000000000330000001626446562756720287072696E746629205669657765720000000000000000000000000100000001000000000000000000000001000000000013803C010000000000007200000010416E616C797369732057696E646F7773000000000000000000000000010000000100000000000000000000000100000004001380658A000000000000340000000F264C6F67696320416E616C797A6572000000000000000000000000010000000100000000000000000000000100000000001380DC7F0000000000003E0000001526506572666F726D616E636520416E616C797A6572000000000000000000000000010000000100000000000000000000000100000000001380E788000000000000380000000E26436F646520436F766572616765000000000000000000000000010000000100000000000000000000000100000000001380CD01000000000000FFFFFFFF0F416E616C7973697320416E63686F7201000000000000000100000000000000010000000000000000000000010000000000138053010000000000003F0000000D54726163652057696E646F77730000000000000000000000000100000001000000000000000000000001000000010013805401000000000000FFFFFFFF115472616365204D656E7520416E63686F720100000000000000010000000000000001000000000000000000000001000000000013802901000000000000350000001553797374656D205669657765722057696E646F77730000000000000000000000000100000001000000000000000000000001000000010013804B01000000000000FFFFFFFF1453797374656D2056696577657220416E63686F720100000000000000010000000000000001000000000000000000000001000000000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000013800189000000000000360000000F26546F6F6C626F782057696E646F7700000000000000000000000001000000010000000000000000000000010000000300138044C5000000000000FFFFFFFF0E5570646174652057696E646F77730100000000000000010000000000000001000000000000000000000001000000000013800000000000000400FFFFFFFF000000000000000000010000000000000001000000000000000000000001000000000013805B01000000000000FFFFFFFF12546F6F6C626F78204D656E75416E63686F72010000000000000001000000000000000100000000000000000000000100000000000000000005446562756764020000
+ 00200000000000001900FFFF01001100434D4643546F6F6C426172427574746F6ECC880000000000002500000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018017800000000000002600000000000000000000000000000000010000000100000001801D800000000000002700000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001801A800000000000002800000000000000000000000000000000010000000100000001801B80000000000000290000000000000000000000000000000001000000010000000180E57F0000000000002A00000000000000000000000000000000010000000100000001801C800000000000002B00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018000890000000000002C00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180E48B0000000000002D0000000000000000000000000000000001000000010000000180F07F0000000000002E0000000000000000000000000000000001000000010000000180E8880000000000003700000000000000000000000000000000010000000100000001803B010000000000002F0000000000000000000000000000000001000000010000000180BB8A00000000000030000000000000000000000000000000000100000001000000FFFF01001500434D4643546F6F6C4261724D656E75427574746F6E0E01000000000000310000000D57617463682057696E646F7773000000000000000000000000010000000100000000000000000000000100000003001380D88B00000000000031000000085761746368202631000000000000000000000000010000000100000000000000000000000100000000001380D98B00000000000031000000085761746368202632000000000000000000000000010000000100000000000000000000000100000000001380CE01000000000000FFFFFFFF0C576174636820416E63686F720000000000000000010000000000000001000000000000000000000001000000000013800F01000000000000320000000E4D656D6F72792057696E646F7773000000000000000000000000010000000100000000000000000000000100000004001380D28B00000000000032000000094D656D6F7279202631000000000000000000000000010000000100000000000000000000000100000000001380D38B00000000000032000000094D656D6F7279202632000000000000000000000000010000000100000000000000000000000100000000001380D48B00000000000032000000094D656D6F7279202633000000000000000000000000010000000100000000000000000000000100000000001380D58B00000000000032000000094D656D6F72792026340000000000000000000000000100000001000000000000000000000001000000000013801001000000000000330000000E53657269616C2057696E646F77730000000000000000000000000100000001000000000000000000000001000000040013809307000000000000330000000855415254202326310000000000000000000000000100000001000000000000000000000001000000000013809407000000000000330000000855415254202326320000000000000000000000000100000001000000000000000000000001000000000013809507000000000000330000000855415254202326330000000000000000000000000100000001000000000000000000000001000000000013809607000000000000330000001626446562756720287072696E746629205669657765720000000000000000000000000100000001000000000000000000000001000000000013803C010000000000007200000010416E616C797369732057696E646F7773000000000000000000000000010000000100000000000000000000000100000004001380658A000000000000340000000F264C6F67696320416E616C797A6572000000000000000000000000010000000100000000000000000000000100000000001380DC7F0000000000003E0000001526506572666F726D616E636520416E616C797A6572000000000000000000000000010000000100000000000000000000000100000000001380E788000000000000380000000E26436F646520436F766572616765000000000000000000000000010000000100000000000000000000000100000000001380CD01000000000000FFFFFFFF0F416E616C7973697320416E63686F7200000000000000000100000000000000010000000000000000000000010000000000138053010000000000003F0000000D54726163652057696E646F77730000000000000000000000000100000001000000000000000000000001000000010013805401000000000000FFFFFFFF115472616365204D656E7520416E63686F720000000000000000010000000000000001000000000000000000000001000000000013802901000000000000350000001553797374656D205669657765722057696E646F77730000000000000000000000000100000001000000000000000000000001000000010013804B01000000000000FFFFFFFF1453797374656D2056696577657220416E63686F720000000000000000010000000000000001000000000000000000000001000000000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000013800189000000000000360000000F26546F6F6C626F782057696E646F7700000000000000000000000001000000010000000000000000000000010000000300138044C5000000000000FFFFFFFF0E5570646174652057696E646F77730000000000000000010000000000000001000000000000000000000001000000000013800000000000000400FFFFFFFF000000000000000000010000000000000001000000000000000000000001000000000013805B01000000000000FFFFFFFF12546F6F6C626F78204D656E75416E63686F72000000000000000001000000000000000100000000000000000000000100000000000000000005446562756764020000
898
@@ -3606,9 +3606,9 @@
3
..\src\main.c
- 19
+ 2
89
- 113
+ 116
1
0
@@ -3634,7 +3634,7 @@
..\src\boot_cli.c
0
- 55
+ 1
1
1
diff --git a/SmartAssiter/.hbuilderx/launch.json b/SmartAssiter/.hbuilderx/launch.json
index 559d13f..7bdd7d6 100644
--- a/SmartAssiter/.hbuilderx/launch.json
+++ b/SmartAssiter/.hbuilderx/launch.json
@@ -3,7 +3,7 @@
"configurations" : [
{
"customPlaygroundType" : "local",
- "playground" : "standard",
+ "playground" : "custom",
"type" : "uni-app:app-android"
},
{
diff --git a/SmartAssiter/.icon_build/reg_backup/AeDebug_32_backup.reg b/SmartAssiter/.icon_build/reg_backup/AeDebug_32_backup.reg
new file mode 100644
index 0000000..4f8308b
Binary files /dev/null and b/SmartAssiter/.icon_build/reg_backup/AeDebug_32_backup.reg differ
diff --git a/SmartAssiter/.icon_build/reg_backup/AeDebug_64_backup.reg b/SmartAssiter/.icon_build/reg_backup/AeDebug_64_backup.reg
new file mode 100644
index 0000000..23c0d00
Binary files /dev/null and b/SmartAssiter/.icon_build/reg_backup/AeDebug_64_backup.reg differ
diff --git a/SmartAssiter/static/androidApp.png b/SmartAssiter/static/androidApp.png
deleted file mode 100644
index 8737512..0000000
Binary files a/SmartAssiter/static/androidApp.png and /dev/null differ
diff --git a/SmartAssiter/static/androidApp22.png b/SmartAssiter/static/androidApp22.png
deleted file mode 100644
index baceb27..0000000
Binary files a/SmartAssiter/static/androidApp22.png and /dev/null differ
diff --git a/SmartAssiter/static/charge/UnAvailable.png b/SmartAssiter/static/charge/UnAvailable.png
deleted file mode 100644
index 55442c6..0000000
Binary files a/SmartAssiter/static/charge/UnAvailable.png and /dev/null differ
diff --git a/SmartAssiter/static/charge/Unkonw.png b/SmartAssiter/static/charge/Unkonw.png
deleted file mode 100644
index 987b654..0000000
Binary files a/SmartAssiter/static/charge/Unkonw.png and /dev/null differ
diff --git a/SmartAssiter/static/charge/charging.png b/SmartAssiter/static/charge/charging.png
deleted file mode 100644
index b0701e5..0000000
Binary files a/SmartAssiter/static/charge/charging.png and /dev/null differ
diff --git a/SmartAssiter/static/charge/connectGun.png b/SmartAssiter/static/charge/connectGun.png
deleted file mode 100644
index fd5e9d1..0000000
Binary files a/SmartAssiter/static/charge/connectGun.png and /dev/null differ
diff --git a/SmartAssiter/static/charge/error.png b/SmartAssiter/static/charge/error.png
deleted file mode 100644
index 7ad8276..0000000
Binary files a/SmartAssiter/static/charge/error.png and /dev/null differ
diff --git a/SmartAssiter/static/charge/finishing.png b/SmartAssiter/static/charge/finishing.png
deleted file mode 100644
index a4e321a..0000000
Binary files a/SmartAssiter/static/charge/finishing.png and /dev/null differ
diff --git a/SmartAssiter/static/charge/insertGun.png b/SmartAssiter/static/charge/insertGun.png
deleted file mode 100644
index 7ac80ba..0000000
Binary files a/SmartAssiter/static/charge/insertGun.png and /dev/null differ
diff --git a/SmartAssiter/static/charge/noDevice.png b/SmartAssiter/static/charge/noDevice.png
deleted file mode 100644
index 2fa1a1f..0000000
Binary files a/SmartAssiter/static/charge/noDevice.png and /dev/null differ
diff --git a/SmartAssiter/static/charge/reserve.png b/SmartAssiter/static/charge/reserve.png
deleted file mode 100644
index 3f11c73..0000000
Binary files a/SmartAssiter/static/charge/reserve.png and /dev/null differ
diff --git a/SmartAssiter/static/logo.png b/SmartAssiter/static/logo.png
deleted file mode 100644
index b5771e2..0000000
Binary files a/SmartAssiter/static/logo.png and /dev/null differ
diff --git a/SmartAssiter/static/miniApp.png b/SmartAssiter/static/miniApp.png
deleted file mode 100644
index 8737512..0000000
Binary files a/SmartAssiter/static/miniApp.png and /dev/null differ
diff --git a/SmartAssiter/static/miniApp22.png b/SmartAssiter/static/miniApp22.png
deleted file mode 100644
index 79bd8fe..0000000
Binary files a/SmartAssiter/static/miniApp22.png and /dev/null differ
diff --git a/hardware_design/_analyze.mjs b/hardware_design/_analyze.mjs
new file mode 100644
index 0000000..25efb05
--- /dev/null
+++ b/hardware_design/_analyze.mjs
@@ -0,0 +1,59 @@
+import { readFileSync } from 'node:fs';
+const { compData, wireData, pinData } = JSON.parse(readFileSync('H:/caiic_workspace/mothercup/hardware_design/_dump.json', 'utf8'));
+
+function connPoint(p) {
+ const len = p.len || 20;
+ switch (p.rot) {
+ case 0: return { x: p.x - len, y: p.y }; // pin points left
+ case 90: return { x: p.x, y: p.y - len }; // pin points up
+ case 180: return { x: p.x + len, y: p.y }; // pin points right
+ case 270: return { x: p.x, y: p.y + len }; // pin points down
+ default: return { x: p.x, y: p.y };
+ }
+}
+
+function onSeg(px, py, ax, ay, bx, by, tol = 4) {
+ const cr = (bx - ax) * (py - ay) - (by - ay) * (px - ax);
+ if (Math.abs(cr) > tol * 20) return false;
+ return px >= Math.min(ax, bx) - tol && px <= Math.max(ax, bx) + tol &&
+ py >= Math.min(ay, by) - tol && py <= Math.max(ay, by) + tol;
+}
+function wpts(line) {
+ if (!Array.isArray(line)) return [];
+ if (Array.isArray(line[0])) return line.flat();
+ return line;
+}
+
+// net flags (components with no designator but a name)
+const netflags = compData.filter(c => (!c.d || c.d.trim()==='') && c.n);
+
+function netsAt(pt) {
+ const s = new Set();
+ for (const w of wireData) {
+ const p = wpts(w.line);
+ for (let i = 0; i + 3 < p.length; i += 2) {
+ if (onSeg(pt.x, pt.y, p[i], p[i+1], p[i+2], p[i+3])) if (w.net) s.add(w.net);
+ }
+ }
+ for (const f of netflags) {
+ if (Math.abs(f.x - pt.x) <= 8 && Math.abs(f.y - pt.y) <= 8 && f.n) s.add(f.n);
+ }
+ return [...s];
+}
+
+console.log('=== key component pin -> net ===');
+for (const k of Object.keys(pinData)) {
+ const pd = pinData[k];
+ if (!pd) { console.log(`${k}: (not found)`); continue; }
+ console.log(`${k} (${pd.name}) @ (${pd.pos.x},${pd.pos.y})`);
+ for (const p of pd.pins) {
+ const pt = connPoint(p);
+ const nets = netsAt(pt);
+ console.log(` pin ${p.num} ${p.name||''} rot=${p.rot} len=${p.len} -> ${JSON.stringify(nets)}`);
+ }
+}
+
+// all components with positions (sorted by x then y) to see layout
+console.log('\n=== all components (d:name @x,y) ===');
+const sorted = [...compData].filter(c=>c.d && c.d.trim()).sort((a,b)=>a.x-b.x);
+for (const c of sorted) console.log(` ${c.d}:${c.n||''} @ (${c.x},${c.y})`);
diff --git a/hardware_design/_diag.mjs b/hardware_design/_diag.mjs
new file mode 100644
index 0000000..923752c
--- /dev/null
+++ b/hardware_design/_diag.mjs
@@ -0,0 +1,25 @@
+import { readFileSync } from 'node:fs';
+const { compData, wireData, pinData } = JSON.parse(readFileSync('H:/caiic_workspace/mothercup/hardware_design/_dump.json', 'utf8'));
+
+console.log('=== SW1/Q1/Q7/Q4/Q2/Q3/D1 pins (x,y,rot,len) ===');
+for (const k of ['SW1','Q1','Q7','Q4','Q2','Q3','D1']) {
+ const pd = pinData[k];
+ if (!pd) continue;
+ console.log(`${k} @ (${pd.pos.x},${pd.pos.y})`);
+ for (const p of pd.pins) console.log(` pin${p.num} ${p.name} (${p.x},${p.y}) rot=${p.rot} len=${p.len}`);
+}
+
+console.log('\n=== wires near power-switch region (x -2000..-1500, y -1100..-400) ===');
+let cnt = 0;
+for (const w of wireData) {
+ const p = Array.isArray(w.line) ? (Array.isArray(w.line[0]) ? w.line.flat() : w.line) : [];
+ let near = false, pts = [];
+ for (let i=0;i+1=-2000 && p[i]<=-1500 && p[i+1]>=-1100 && p[i+1]<=-400) { near=true; pts.push([p[i],p[i+1]]); }
+ }
+ if (near && cnt < 60) {
+ cnt++;
+ console.log(` net=${w.net} pts=${JSON.stringify(pts.slice(0,10))}`);
+ }
+}
+console.log('total near wires:', cnt);
diff --git a/hardware_design/_dump.js b/hardware_design/_dump.js
new file mode 100644
index 0000000..7cc9c9d
--- /dev/null
+++ b/hardware_design/_dump.js
@@ -0,0 +1,33 @@
+const comps = await eda.sch_PrimitiveComponent.getAll();
+const wires = await eda.sch_PrimitiveWire.getAll();
+
+const compData = comps.map(c => {
+ let d=null,n=null,x=null,y=null;
+ try{d=c.getState_Designator();}catch(e){}
+ try{n=c.getState_Name();}catch(e){}
+ try{x=c.getState_X();y=c.getState_Y();}catch(e){}
+ return {d,n,x,y};
+});
+
+const wireData = wires.map(w => {
+ let net=null,line=null;
+ try{net=w.getState_Net();}catch(e){}
+ try{line=w.getState_Line();}catch(e){}
+ return {net,line};
+});
+
+// pins of key power-switch components
+const key = ['SW1','Q1','Q7','Q4','Q2','Q3','D1','U1','U3','U5','BAT'];
+const pinData = {};
+for (const k of key) {
+ const c = comps.find(x => { try{return x.getState_Designator()===k;}catch(e){return false;} });
+ if (!c) { pinData[k]=null; continue; }
+ const pins = await eda.sch_PrimitiveComponent.getAllPinsByPrimitiveId(c.getState_PrimitiveId());
+ pinData[k] = {
+ pos: { x: c.getState_X(), y: c.getState_Y() },
+ name: c.getState_Name(),
+ pins: pins.map(p => ({ num:p.pinNumber, name:p.pinName, x:p.x, y:p.y, rot:p.rotation, len:p.pinLength }))
+ };
+}
+
+return { compData, wireData, pinData };
diff --git a/hardware_design/_dump.json b/hardware_design/_dump.json
new file mode 100644
index 0000000..a86f9da
--- /dev/null
+++ b/hardware_design/_dump.json
@@ -0,0 +1 @@
+{"compData":[{"n":"GND","x":-2210.0002,"y":-745.0001},{"n":"GND","x":-1995.0002,"y":-915.0001},{"n":"GND","x":-1585.0002,"y":-595.0001},{"n":"GND","x":-2315.0002,"y":-765.0001},{"n":"GND","x":-2145.0002,"y":-695.0001},{"n":"GND","x":-2175.0002,"y":-755.0001},{"n":"GND","x":-1215,"y":-885},{"n":"GND","x":-1255,"y":-885},{"n":"GND","x":-2075,"y":-1030},{"n":"GND","x":-1730,"y":-1215},{"n":"GND","x":-1925,"y":-1380},{"n":"GND","x":-1865,"y":-760},{"n":"GND","x":-1620,"y":-690},{"n":"GND","x":-1225.0002,"y":-570.0001},{"n":"GND","x":-1350,"y":-485},{"n":"PA0/LED_3","x":-2125.0002,"y":-1067.0001},{"n":"PA1/LED_4","x":-2135.0002,"y":-1067.0001},{"n":"PA2/SWITCH","x":-2272.0002,"y":-1165.0001},{"n":"PA3/INPUT_EN","x":-2287.0002,"y":-1175.0001},{"n":"PB0/LED_1","x":-2289.0002,"y":-1195.0001},{"n":"PA4/SWDCLK","x":-2292.0002,"y":-1205.0001},{"n":"PA5/SWDIO","x":-2292.0002,"y":-1215.0001},{"n":"PA6/LED_7","x":-2294.0002,"y":-1225.0001},{"n":"PB13/LED_6","x":-1980.0002,"y":-1195.0001},{"n":"PB11/LED_5","x":-1980,"y":-1205},{"n":"PB12/TEC_PWM1_12V","x":-1980,"y":-1215},{"n":"PB12/TEC_PWM1_12V","x":-1725,"y":-540},{"n":"PB1/LED_2","x":-2105.0002,"y":-1305.0001},{"n":"PB7/VolMoni","x":-1980.0002,"y":-1235.0001},{"n":"PB6/NTC1","x":-2065,"y":-1315},{"n":"PB5/RX","x":-2075.0002,"y":-1315.0001},{"n":"PB4/TX","x":-2085.0002,"y":-1315.0001},{"n":"PB3/FAN_PWM","x":-2095,"y":-1315},{"n":"PB2/TEC_PWM2_BAT","x":-2115.0002,"y":-1315.0001},{"n":"GND","x":-1915.0002,"y":-1155.0001},{"n":"GND","x":-1890.0002,"y":-1155.0001},{"n":"GND","x":-2215.0002,"y":-1275.0001},{"n":"GND","x":-2175.0002,"y":-1365.0001},{"n":"GND","x":-2205.0002,"y":-1025.0001},{"n":"GND","x":-1700.0002,"y":-1350.0001},{"n":"GND","x":-1860.0002,"y":-920.0001},{"n":"GND","x":-2085.0002,"y":-725.0001},{"n":"GND","x":-2175.0002,"y":-1085.0001},{"n":"GND","x":-2205.0002,"y":-975.0001},{"n":"V3.3","x":-1994.9999,"y":-815.0002},{"n":"V3.3","x":-2095.0002,"y":-975.0001},{"n":"V2.8","x":-2365.0002,"y":-1135.0001},{"n":"GND","x":-2365.0002,"y":-1225},{"n":"PA4/SWDCLK","x":-2005,"y":-1340},{"n":"PA5/SWDIO","x":-2000.0002,"y":-1330.0001},{"n":"PA2/SWITCH","x":-2031,"y":-1040},{"n":"PA3/INPUT_EN","x":-1835,"y":-1045},{"n":"PB5/RX","x":-1825.0002,"y":-1330.0001},{"n":"PB4/TX","x":-1825.0002,"y":-1340.0001},{"n":"V2.8","x":-1215,"y":-785},{"n":"PB2/TEC_PWM2_BAT","x":-1715,"y":-1010},{"n":"PB3/FAN_PWM","x":-1295.0002,"y":-600.0001},{"n":"VOUT_TEC","x":-1350,"y":-445},{"n":"VOUT5V","x":-1175.0002,"y":-580.0001},{"n":"PB1/LED_2","x":-1495,"y":-1110},{"n":"PB0/LED_1","x":-1515,"y":-1110},{"n":"PA0/LED_3","x":-1485,"y":-1110},{"n":"GND","x":-1960.0001,"y":-874.9998},{"n":"PB10/NTC2","x":-1980.0002,"y":-1225.0001},{"n":"PB7/VolMoni","x":-2075,"y":-685},{"d":"C6","n":"22u","x":-1350,"y":-465},{"d":"C4","n":"22u","x":-1375,"y":-465},{"d":"Q1","n":"CJ2333","x":-1610.0002,"y":-820.0001},{"d":"Q7","n":"CJ2333","x":-1585.0002,"y":-445.0001},{"d":"NTC1","n":"MF52 A 103 F 3950","x":-1215,"y":-855},{"d":"L1","n":"2.2uH","x":-1445,"y":-445},{"d":"CN2","n":"A1002WR-S-4P","x":-1155.0002,"y":-585.0001},{"d":"SW1","n":"TSC01A-TDW1EH3.5","x":-1950.0002,"y":-960.0001},{"d":"CON3","n":"TYPEC-304-ACP16","x":-2275.0002,"y":-685.0001},{"d":"R1","n":"5.1k","x":-1834.9999,"y":-925.0002},{"d":"R36","n":"5.1k","x":-1739.9999,"y":-840.0002},{"d":"R6","n":"1k","x":-1655.0002,"y":-890.0001},{"d":"R25","n":"1k","x":-1870.0002,"y":-980.0001},{"d":"C9","n":"0.1u","x":-1905.0002,"y":-1075.0001},{"d":"C17","n":"0.1u","x":-1775.0002,"y":-1005.0001},{"d":"R18","n":"10K","x":-1959.9998,"y":-1074.9999},{"d":"R41","n":"10K","x":-1925.0001,"y":-1039.9998},{"d":"D1","n":"FH1N4148WS-EE","x":-1904.9999,"y":-1000.0002},{"d":"Q4","n":"MMBT3904T","x":-1595.0002,"y":-545.0001},{"d":"R13","n":"10k","x":-1680.0002,"y":-545.0001},{"d":"R32","n":"10k","x":-1195.0002,"y":-600.0001},{"d":"R26","n":"10k 1%","x":-1215,"y":-805},{"d":"R19","n":"10k 1%","x":-1790,"y":-695},{"d":"R20","n":"10k 1%","x":-1790,"y":-750},{"d":"R21","n":"10k 1%","x":-1965,"y":-740},{"d":"R22","n":"10k 1%","x":-1940,"y":-740},{"d":"C21","n":"0.1u","x":-1255,"y":-865},{"d":"C1","n":"0.1u","x":-2070,"y":-575},{"d":"C2","n":"0.1u","x":-2045,"y":-575},{"d":"C3","n":"0.1u","x":-1775,"y":-655},{"d":"C5","n":"0.1u","x":-1690,"y":-680},{"d":"C7","n":"0.1u","x":-1660,"y":-680},{"d":"C8","n":"0.1u","x":-1775,"y":-570},{"d":"C16","n":"0.1u","x":-1800,"y":-570},{"d":"L4","n":"4.7uH","x":-1945.0002,"y":-1165.0001},{"d":"C24","n":"0.1uF","x":-1730.0002,"y":-1200.0001},{"d":"C25","n":"2.2uF","x":-2235.0002,"y":-1255.0001},{"d":"U2","n":"N32WB031","x":-2185.0002,"y":-1165.0001},{"d":"C26","n":"0.1uF","x":-2215.0002,"y":-1255.0001},{"d":"C13","n":"1uF","x":-2075.0002,"y":-1020.0001},{"d":"C20","n":"1uF","x":-1890.0002,"y":-1145.0001},{"d":"C12","n":"1uF","x":-1915.0002,"y":-1145.0001},{"d":"C23","n":"10uF","x":-1755.0002,"y":-1200.0001},{"d":"C11","n":"10u","x":-1995.0002,"y":-895.0001},{"d":"C10","n":"10u","x":-1860.0002,"y":-900.0001},{"d":"U5","n":"CJ6205A33M","x":-1909.9998,"y":-884.9999},{"d":"C28","n":"10pF","x":-2145.0002,"y":-1355.0001},{"d":"C27","n":"10pF","x":-2190.0002,"y":-1355.0001},{"d":"Y2","n":"32.768K/7pF","x":-2145.0002,"y":-1345.0001},{"d":"C14","n":"12pF","x":-2225.0002,"y":-1015.0001},{"d":"Y1","n":"32MHZ/8pF","x":-2225.0002,"y":-1005.0001},{"d":"C15","n":"12pF","x":-2185.0002,"y":-1015.0001},{"d":"C22","n":"1uF","x":-2365.0002,"y":-1195.0001},{"d":"R27","n":"10K","x":-2365.0002,"y":-1135.0001},{"d":"R31","n":"10K","x":-1925.0002,"y":-1290.0001},{"d":"R33","n":"10K","x":-1925.0002,"y":-1340.0001},{"d":"J1","n":"CON_4PIN_2.54MM","x":-1865.0002,"y":-1360.0001},{"d":"J2","n":"CON_4PIN_2.54MM","x":-1690.0002,"y":-1360.0001},{"d":"R34","n":"10R","x":-1760.0002,"y":-1330.0001},{"d":"R35","n":"10R","x":-1765.0002,"y":-1340.0001},{"d":"R30","n":"10R","x":-1515.0002,"y":-1090.0001},{"d":"R28","n":"1R","x":-1485.0002,"y":-1090.0001},{"d":"R29","n":"10R","x":-1495,"y":-1090},{"d":"R5","n":"10R","x":-1465,"y":-1090},{"d":"R8","n":"10R","x":-1445,"y":-1090},{"d":"R10","n":"10R","x":-1410,"y":-1085},{"d":"NTC2","n":"MF52 A 103 F 3950","x":-1865.0002,"y":-740.0001},{"d":"R38","n":"10k 1%","x":-1885.0002,"y":-740.0001},{"d":"R3","n":"100k,1%","x":-2085.0002,"y":-665.0001},{"d":"R11","n":"20k,1%","x":-2085.0002,"y":-705.0001},{"d":"BAT","n":"BATTERY","x":-1620,"y":-670.0001},{"d":"R39","n":"5.1k","x":-2145.0002,"y":-675.0001},{"d":"R40","n":"5.1k","x":-2175.0002,"y":-735.0001},{"d":"R7","n":"10K","x":-1834.9999,"y":-1015.0002},{"d":"R9","n":"10K","x":-1684.9998,"y":-999.9999},{"d":"R24","n":"10K","x":-1645,"y":-1035},{"d":"U3","n":"HY2120CB","x":-1425.0002,"y":-710.0001},{"n":"GND","x":-1610,"y":-1055},{"n":"GND","x":-1630,"y":-600},{"n":"GND","x":-2030,"y":-660},{"n":"GND","x":-2070,"y":-610},{"n":"GND","x":-1790,"y":-625},{"n":"GND","x":-1790,"y":-770},{"n":"GND","x":-1885,"y":-760},{"n":"GND","x":-1925,"y":-625},{"n":"GND","x":-1940,"y":-760},{"n":"GND","x":-1965,"y":-760},{"n":"GND","x":-1800,"y":-595},{"n":"GND","x":-1690,"y":-710},{"n":"GND","x":-1115,"y":-865},{"n":"GND","x":-1115,"y":-815},{"d":"CN1","n":"A1502WR-S-2P","x":-1210,"y":-450},{"d":"R2","n":"10k","x":-1640.0002,"y":-480.0001},{"d":"R4","n":"10k","x":-1585.0002,"y":-505.0001},{"d":"LED1","n":"YF30137","x":-1475,"y":-990},{"n":"PA1/LED_4","x":-1465,"y":-1110},{"n":"PB11/LED_5","x":-1445,"y":-1110},{"n":"PB13/LED_6","x":-1435,"y":-1110},{"d":"R12","n":"10R","x":-1355,"y":-990},{"n":"PA6/LED_7","x":-1355,"y":-1010},{"n":"PB6/NTC1","x":-1274.9998,"y":-834.9999},{"d":"R15","n":"10k","x":-1630,"y":-580},{"d":"Q2","n":"MMBT3904T","x":-1620,"y":-1000},{"d":"Q3","n":"MMBT3904T","x":-1750,"y":-980},{"d":"U1","n":"IP2365","x":-1865,"y":-640},{"d":"R16","n":"80.6k,1%","x":-2010,"y":-575},{"d":"R17","n":"80.6k,1%","x":-2010,"y":-640},{"d":"L2","n":"10uH","x":-1725,"y":-635},{"n":"B-VBat+","x":-1595,"y":-635},{"n":"B-VBat+","x":-1675,"y":-785},{"n":"B-VBat+","x":-1980,"y":-980},{"n":"B-VBat-","x":-1595,"y":-690},{"d":"CN3","n":"A1002WR-S-2P","x":-1135,"y":-840},{"d":"R23","n":"1k","x":-1610,"y":-940},{"d":"R37","n":"1k","x":-1800,"y":-1005},{"d":"R42","n":"1k","x":-1740,"y":-945},{"n":"VBAT_PWMOUT","x":-1575,"y":-840},{"n":"VBAT_PWMOUT","x":-1500,"y":-560},{"n":"GND","x":-1645,"y":-1055},{"n":"GND","x":-1775,"y":-1040},{"n":"GND","x":-1740,"y":-1040},{"n":"GND","x":-1800,"y":-1040},{"n":"GND","x":-1960,"y":-1095},{"n":"GND","x":-1905,"y":-1095},{"d":"Q5","n":"={Manufacturer Part}","x":-1815,"y":-850}],"wireData":[{"net":"PB6/NTC1","line":[-1275,-835,-1255,-835,-1255,-835,-1215,-835,-1215,-835,-1215,-825,-1255,-845,-1255,-835,-1160,-835,-1215,-835]},{"net":"GND","line":[-1160,-845,-1160,-885,-1160,-885,-1215,-885,-1215,-885,-1215,-875]},{"net":"GND","line":[-2145,-1105,-2145,-1085,-2145,-1085,-2175,-1085]},{"net":"PA2/SWITCH","line":[-2205,-1165,-2215,-1165]},{"net":"","line":[-2205,-1175,-2215,-1175]},{"net":"","line":[-2205,-1195,-2215,-1195]},{"net":"","line":[-2205,-1205,-2215,-1205]},{"net":"","line":[-2205,-1215,-2215,-1215]},{"net":"","line":[-2205,-1225,-2215,-1225]},{"net":"PB13/LED_6","line":[-2005,-1195,-1980,-1195]},{"net":"PB11/LED_5","line":[-2005,-1205,-1980,-1205]},{"net":"PB12/TEC_PWM1_12V","line":[-2005,-1215,-1995,-1215,-1995,-1215,-1980,-1215,-2005,-1215,-1995,-1215]},{"net":"PB10/NTC2","line":[-2005,-1225,-1980,-1225]},{"net":"PB7/VolMoni","line":[-2005,-1235,-1980,-1235]},{"net":"PB2/TEC_PWM2_BAT","line":[-2115,-1305,-2115,-1315]},{"net":"PB6/NTC1","line":[-2065,-1305,-2065,-1315]},{"net":"PB5/RX","line":[-2075,-1305,-2075,-1315]},{"net":"PB4/TX","line":[-2085,-1305,-2085,-1315]},{"net":"","line":[-2015,-1165,-2005,-1165,-2005,-1165,-1995,-1165,-2005,-1085,-2005,-1165,-2085,-1105,-2085,-1085,-2085,-1085,-2005,-1085]},{"net":"TX","line":[-1700,-1340,-1725,-1340]},{"net":"","line":[-1773,-1330,-1760,-1330]},{"net":"RX","line":[-1725,-1330,-1720,-1330,-1720,-1330,-1700,-1330]},{"net":"","line":[-1765,-1340,-1772,-1340]},{"net":"PB3/FAN_PWM","line":[-2095,-1305,-2095,-1315]},{"net":"CLK","line":[-1875,-1340,-1925,-1340,-1937,-1340,-1925,-1340]},{"net":"DIO","line":[-1875,-1330,-1925,-1330,-1925,-1330,-1938,-1330]},{"net":"","line":[-1925,-1290,-1885,-1290,-1885,-1290,-1885,-1320,-1885,-1320,-1875,-1320]},{"net":"GND","line":[-1925,-1380,-1925,-1381,-1925,-1381,-1885,-1381,-1885,-1381,-1885,-1350,-1885,-1350,-1875,-1350]},{"net":"GND","line":[-2365,-1225,-2365,-1205]},{"net":"RESET","line":[-2365,-1175,-2365,-1185,-2205,-1185,-2310,-1185,-2310,-1185,-2365,-1185]},{"net":"GND","line":[-2215,-1275,-2215,-1265,-2235,-1265,-2235,-1275,-2235,-1275,-2215,-1275]},{"net":"","line":[-2205,-1235,-2215,-1235,-2215,-1235,-2235,-1235,-2235,-1235,-2235,-1245,-2215,-1245,-2215,-1235]},{"net":"PB9/XOUT_32K","line":[-2125,-1305,-2125,-1335,-2125,-1335,-2145,-1335,-2145,-1345,-2145,-1335]},{"net":"GND","line":[-2145,-1365,-2175,-1365,-2175,-1365,-2190,-1365]},{"net":"PB8/XIN_32K","line":[-2135,-1305,-2135,-1315,-2135,-1315,-2190,-1315,-2190,-1315,-2190,-1335,-2190,-1335,-2185,-1335,-2190,-1335,-2190,-1345]},{"net":"","line":[-1730,-1190,-1730,-1185,-1730,-1185,-1755,-1185,-1755,-1185,-2005,-1185,-1755,-1190,-1755,-1185]},{"net":"","line":[-2135,-1105,-2135,-1095]},{"net":"","line":[-2125,-1105,-2125,-1095]},{"net":"","line":[-2185,-995,-2105,-995,-2105,-995,-2105,-1105,-2185,-1005,-2185,-995]},{"net":"","line":[-2115,-1105,-2115,-1060,-2115,-1060,-2245,-1060,-2245,-1060,-2245,-995,-2245,-995,-2225,-995,-2225,-1005,-2225,-995]},{"net":"GND","line":[-2225,-1025,-2205,-1025,-2205,-1025,-2185,-1025,-2205,-1015,-2205,-1025]},{"net":"GND","line":[-2315,-675,-2315,-705,-2315,-705,-2315,-695,-2315,-695,-2315,-685,-2315,-685,-2315,-765]},{"net":"GND","line":[-2230,-635,-2210,-635,-2210,-635,-2210,-745,-2210,-745,-2230,-745]},{"net":"12V","line":[-2230,-735,-2220,-735,-2220,-735,-2220,-645,-2230,-645,-2220,-645,-1660,-480,-1670,-480,-1670,-480,-1670,-445,-1865,-570,-1865,-535,-1865,-535,-2010,-535,-2010,-535,-2045,-535,-2045,-535,-2070,-535,-2070,-535,-1875,-535,-1875,-535,-1885,-535,-1885,-535,-2085,-535,-2010,-555,-2010,-535,-2045,-555,-2045,-535,-2070,-555,-2070,-535,-1875,-570,-1875,-535,-1885,-570,-1885,-535,-1605,-445,-1670,-445,-1670,-445,-2085,-445,-2085,-445,-2085,-535,-2085,-535,-2085,-645,-2085,-645,-2220,-645]},{"net":"VOUT_TEC","line":[-1425,-445,-1375,-445,-1375,-445,-1350,-445,-1235,-445,-1350,-445]},{"net":"GND","line":[-1350,-485,-1375,-485,-1235,-455,-1235,-485,-1235,-485,-1350,-485]},{"net":"","line":[-1605,-545,-1630,-545,-1630,-545,-1660,-545,-1630,-545,-1630,-560]},{"net":"GND","line":[-1585,-565,-1585,-595]},{"net":"GND","line":[-1175,-570,-1225,-570]},{"net":"","line":[-2095,-1005,-2095,-1105,-2075,-1010,-2075,-990,-2075,-990,-2095,-990,-2095,-990,-2095,-1005,-2095,-975,-2095,-990]},{"net":"GND","line":[-1960,-875,-1960,-860,-1960,-860,-1920,-860]},{"net":"","line":[-2230,-655,-2145,-655]},{"net":"","line":[-2230,-715,-2175,-715]},{"net":"PB7/VolMoni","line":[-2085,-685,-2075,-685]},{"net":"PA2/SWITCH","line":[-1960,-1040,-1960,-1055,-1960,-1040,-1945,-1040,-1960,-1040,-1979.9999999999998,-1040]},{"net":"","line":[-1915,-1155,-1915,-1155]},{"net":"","line":[-1915,-1135,-1915,-1125,-1945,-1125,-1915,-1125,-1945,-1165,-1945,-1125,-1945,-1165,-1945,-1175,-1945,-1175,-2005,-1175,-1915,-1125,-1890,-1125,-1890,-1135,-1890,-1125]},{"net":"","line":[-1585,-465,-1585,-480,-1585,-480,-1585,-485,-1620,-480,-1585,-480]},{"net":"","line":[-1355,-970,-1355,-920,-1355,-920,-1435,-920]},{"net":"","line":[-1410,-1065,-1435,-1065,-1435,-1065,-1435,-1070]},{"net":"PB13/LED_6","line":[-1410,-1105,-1435,-1105,-1435,-1105,-1435,-1110]},{"net":"GND","line":[-1730,-1210,-1730,-1215,-1730,-1215,-1755,-1215,-1755,-1215,-1755,-1210]},{"net":"","line":[-2010,-620,-2010,-615,-2010,-615,-2010,-595,-1925,-615,-2010,-615]},{"net":"GND","line":[-2030,-660,-2010,-660]},{"net":"GND","line":[-2045,-595,-2045,-610,-2045,-610,-2070,-610,-2070,-610,-2070,-595]},{"net":"GND","line":[-1810,-625,-1790,-625,-1790,-625,-1790,-615,-1790,-615,-1810,-615]},{"net":"","line":[-1790,-715,-1790,-725,-1790,-725,-1790,-730,-1845,-710,-1845,-725,-1845,-725,-1790,-725]},{"net":"B-VBat+","line":[-1790,-675,-1790,-665,-1790,-665,-1810,-665,-1660,-660,-1660,-635,-1660,-635,-1690,-635,-1690,-635,-1700,-635,-1705,-635,-1700,-635,-1700,-635,-1700,-665,-1700,-665,-1790,-665,-1690,-660,-1690,-635,-1620,-650,-1620,-635,-1620,-635,-1660,-635,-1595,-635,-1620,-635]},{"net":"","line":[-1865,-720,-1865,-710]},{"net":"","line":[-1885,-710,-1885,-720]},{"net":"","line":[-1925,-635,-1965,-635,-1965,-635,-1965,-720]},{"net":"","line":[-1925,-645,-1940,-645,-1940,-645,-1940,-720]},{"net":"","line":[-1795,-655,-1810,-655]},{"net":"","line":[-1810,-645,-1800,-645,-1800,-645,-1800,-635,-1800,-635,-1810,-635,-1745,-635,-1755,-635,-1755,-635,-1800,-635,-1755,-655,-1755,-635]},{"net":"","line":[-1845,-535,-1835,-535,-1835,-535,-1800,-535,-1800,-535,-1775,-535,-1775,-535,-1775,-550,-1835,-570,-1835,-535,-1845,-570,-1845,-535,-1800,-550,-1800,-535]},{"net":"GND","line":[-1800,-595,-1800,-590,-1800,-590,-1775,-590]},{"net":"GND","line":[-1660,-700,-1660,-705,-1660,-705,-1690,-705,-1690,-705,-1690,-710,-1690,-710,-1690,-705,-1690,-705,-1690,-700]},{"net":"","line":[-1465,-445,-1500,-445,-1500,-445,-1565,-445,-1500,-470,-1500,-445]},{"net":"PB12/TEC_PWM1_12V","line":[-1725,-540,-1725,-545,-1725,-545,-1700,-545]},{"net":"GND","line":[-1595,-690,-1620,-690]},{"net":"","line":[-1610,-840,-1610,-890,-1610,-890,-1635,-890,-1610,-890,-1610,-920]},{"net":"","line":[-1610,-980,-1610,-960]},{"net":"VBAT_PWMOUT","line":[-1590,-840,-1590,-820,-1590,-840,-1575,-840]},{"net":"GND","line":[-1115,-865,-1115,-865]},{"net":"","line":[-1995,-915,-1995,-915]},{"net":"","line":[-1255,-885,-1255,-885]},{"net":"","line":[-2105,-1305,-2105,-1305]},{"net":"","line":[-2075,-1030,-2075,-1030]},{"net":"","line":[-2205,-975,-2205,-975]},{"net":"","line":[-2365,-1135,-2365,-1135]},{"net":"","line":[-1700,-1350,-1700,-1350]},{"net":"","line":[-1215,-785,-1215,-785]},{"net":"","line":[-1175,-580,-1175,-580]},{"net":"","line":[-1495,-1110,-1495,-1110]},{"net":"","line":[-1515,-1110,-1515,-1110]},{"net":"","line":[-1485,-1110,-1485,-1110]},{"net":"","line":[-1860,-920,-1860,-920]},{"net":"","line":[-1865,-760,-1865,-760]},{"net":"","line":[-2085,-725,-2085,-725]},{"net":"","line":[-2145,-695,-2145,-695]},{"net":"","line":[-2175,-755,-2175,-755]},{"net":"","line":[-1175,-600,-1175,-600]},{"net":"","line":[-1585,-525,-1585,-525]},{"net":"","line":[-1515,-1070,-1515,-1070]},{"net":"","line":[-1485,-1070,-1485,-1070]},{"net":"","line":[-1495,-1070,-1495,-1070]},{"net":"GND","line":[-1885,-760,-1885,-760]},{"net":"","line":[-1610,-1020,-1610,-1055]},{"net":"","line":[-1465,-1070,-1465,-1070]},{"net":"","line":[-1445,-1070,-1445,-1070]},{"net":"PA1/LED_4","line":[-1465,-1110,-1465,-1110]},{"net":"PB11/LED_5","line":[-1445,-1110,-1445,-1110]},{"net":"","line":[-1355,-1010,-1355,-1010]},{"net":"GND","line":[-1630,-600,-1630,-600]},{"net":"GND","line":[-1925,-625,-1925,-625]},{"net":"GND","line":[-1790,-770,-1790,-770]},{"net":"GND","line":[-1965,-760,-1965,-760]},{"net":"GND","line":[-1940,-760,-1940,-760]},{"net":"GND","line":[-1115,-815,-1115,-815]},{"net":"","line":[-1665,-1000,-1645,-1000,-1644.9999,-1015.0001999999997,-1645,-1000,-1630,-1000,-1645,-1000]},{"net":"","line":[-1705,-1000,-1715,-1000,-1715,-1010,-1715,-1000]},{"net":"","line":[-1645,-1055,-1645,-1055]},{"net":"","line":[-1675,-820,-1675,-785,-1630,-820,-1675,-820,-1675,-820,-1675,-890,-1740,-820,-1825,-820,-1825,-820,-1825,-830,-1675,-820,-1740,-820]},{"net":"","line":[-1980,-980,-1970,-980]},{"net":"","line":[-1905,-980,-1890,-980,-1930,-980,-1905,-980]},{"net":"","line":[-1740,-1000,-1740,-1040]},{"net":"","line":[-1800,-1025,-1800,-1040.0000000000005]},{"net":"","line":[-1740,-965,-1740,-960]},{"net":"","line":[-1740,-900,-1805,-900,-1805,-900,-1805,-850,-1740,-860,-1740,-900,-1740,-925,-1740,-900]},{"net":"","line":[-1775,-1025,-1775,-1040]},{"net":"","line":[-1800,-980,-1800,-985,-1775,-980,-1800,-980,-1760,-980,-1775,-980,-1775,-980,-1775,-985,-1800,-980,-1835,-980,-1835,-980,-1850,-980,-1835,-945,-1835,-980,-1835,-995,-1835,-980]},{"net":"","line":[-1835,-880,-1835,-905,-1835,-880,-1860,-880,-1860,-860,-1860,-880,-1900,-860,-1860,-860,-1835,-880,-1835,-870,-1835,-870,-1825,-870]},{"net":"","line":[-1995,-875,-1995,-840,-1910,-840,-1995,-840,-1910,-860,-1910,-840,-1995,-815,-1995,-840]},{"net":"","line":[-1890,-1155,-1890,-1155]},{"net":"","line":[-1835,-1035,-1835,-1045]},{"net":"","line":[-1905,-1020,-1905.0000000000002,-1040,-1905,-1055,-1905.0000000000002,-1040]},{"net":"","line":[-1960,-1095,-1960,-1095]},{"net":"","line":[-1905,-1095,-1905,-1095]}],"pinData":{"SW1":{"pos":{"x":-1950.0002,"y":-960.0001},"name":"TSC01A-TDW1EH3.5","pins":[{"num":"2","name":"2","x":-1930,"y":-980,"rot":270,"len":10},{"num":"1","name":"1","x":-1970,"y":-980,"rot":270,"len":10}]},"Q1":{"pos":{"x":-1610.0002,"y":-820.0001},"name":"CJ2333","pins":[{"num":"3","name":"D","x":-1590,"y":-820,"rot":0,"len":10},{"num":"1","name":"G","x":-1610,"y":-840,"rot":270,"len":8},{"num":"2","name":"S","x":-1630,"y":-820,"rot":180,"len":10}]},"Q7":{"pos":{"x":-1585.0002,"y":-445.0001},"name":"CJ2333","pins":[{"num":"3","name":"D","x":-1565,"y":-445,"rot":0,"len":10},{"num":"1","name":"G","x":-1585,"y":-465,"rot":270,"len":8},{"num":"2","name":"S","x":-1605,"y":-445,"rot":180,"len":10}]},"Q4":{"pos":{"x":-1595.0002,"y":-545.0001},"name":"MMBT3904T","pins":[{"num":"3","name":"C","x":-1585,"y":-525,"rot":90,"len":10},{"num":"1","name":"B","x":-1605,"y":-545,"rot":180,"len":10},{"num":"2","name":"E","x":-1585,"y":-565,"rot":270,"len":10}]},"Q2":{"pos":{"x":-1620,"y":-1000},"name":"MMBT3904T","pins":[{"num":"3","name":"C","x":-1610,"y":-980,"rot":90,"len":10},{"num":"1","name":"B","x":-1630,"y":-1000,"rot":180,"len":10},{"num":"2","name":"E","x":-1610,"y":-1020,"rot":270,"len":10}]},"Q3":{"pos":{"x":-1750,"y":-980},"name":"MMBT3904T","pins":[{"num":"3","name":"C","x":-1740,"y":-960,"rot":90,"len":10},{"num":"1","name":"B","x":-1760,"y":-980,"rot":180,"len":10},{"num":"2","name":"E","x":-1740,"y":-1000,"rot":270,"len":10}]},"D1":{"pos":{"x":-1904.9999,"y":-1000.0002},"name":"FH1N4148WS-EE","pins":[{"num":"2","name":"A","x":-1904.9999999999998,"y":-980,"rot":90,"len":15},{"num":"1","name":"C","x":-1904.9999999999998,"y":-1020,"rot":270,"len":15}]},"U1":{"pos":{"x":-1865,"y":-640},"name":"IP2365","pins":[{"num":"1","name":"VINSEN","x":-1925,"y":-615,"rot":180,"len":10},{"num":"2","name":"AGND","x":-1925,"y":-625,"rot":180,"len":10},{"num":"3","name":"ICHG","x":-1925,"y":-635,"rot":180,"len":10},{"num":"4","name":"IADP","x":-1925,"y":-645,"rot":180,"len":10},{"num":"5","name":"NC","x":-1925,"y":-655,"rot":180,"len":10},{"num":"6","name":"NC","x":-1925,"y":-665,"rot":180,"len":10},{"num":"7","name":"SCL","x":-1895,"y":-710,"rot":270,"len":10},{"num":"8","name":"LED","x":-1885,"y":-710,"rot":270,"len":10},{"num":"9","name":"SDA","x":-1875,"y":-710,"rot":270,"len":10},{"num":"10","name":"NTC","x":-1865,"y":-710,"rot":270,"len":10},{"num":"11","name":"AGND","x":-1855,"y":-710,"rot":270,"len":10},{"num":"12","name":"FB","x":-1845,"y":-710,"rot":270,"len":10},{"num":"13","name":"VOUT","x":-1810,"y":-665,"rot":0,"len":10},{"num":"14","name":"BST","x":-1810,"y":-655,"rot":0,"len":10},{"num":"15","name":"LX","x":-1810,"y":-645,"rot":0,"len":10},{"num":"16","name":"LX","x":-1810,"y":-635,"rot":0,"len":10},{"num":"17","name":"PGND","x":-1810,"y":-625,"rot":0,"len":10},{"num":"18","name":"PGND","x":-1810,"y":-615,"rot":0,"len":10},{"num":"19","name":"VSYS","x":-1835,"y":-570,"rot":90,"len":10},{"num":"20","name":"VSYS","x":-1845,"y":-570,"rot":90,"len":10},{"num":"21","name":"VSYS","x":-1855,"y":-570,"rot":90,"len":10},{"num":"22","name":"VIN","x":-1865,"y":-570,"rot":90,"len":10},{"num":"23","name":"VIN","x":-1875,"y":-570,"rot":90,"len":10},{"num":"24","name":"VIN","x":-1885,"y":-570,"rot":90,"len":10},{"num":"25","name":"EPAD","x":-1895,"y":-570,"rot":90,"len":10}]},"U3":{"pos":{"x":-1425.0002,"y":-710.0001},"name":"HY2120CB","pins":[{"num":"1","name":"OD","x":-1465,"y":-700,"rot":180,"len":10},{"num":"2","name":"OC","x":-1465,"y":-710,"rot":180,"len":10},{"num":"3","name":"CS","x":-1465,"y":-720,"rot":180,"len":10},{"num":"4","name":"VC","x":-1385,"y":-720,"rot":0,"len":10},{"num":"5","name":"VDD","x":-1385,"y":-710,"rot":0,"len":10},{"num":"6","name":"VSS","x":-1385,"y":-700,"rot":0,"len":10}]},"U5":{"pos":{"x":-1909.9998,"y":-884.9999},"name":"CJ6205A33M","pins":[{"num":"1","name":"GND","x":-1920,"y":-860,"rot":90,"len":10},{"num":"2","name":"OUT","x":-1910,"y":-860,"rot":90,"len":10},{"num":"3","name":"IN","x":-1900,"y":-860,"rot":90,"len":10}]},"BAT":{"pos":{"x":-1620,"y":-670.0001},"name":"BATTERY","pins":[{"num":"1","name":"","x":-1620,"y":-650,"rot":90,"len":10},{"num":"2","name":"","x":-1620,"y":-690,"rot":270,"len":10}]}}}
\ No newline at end of file
diff --git a/hardware_design/_dump_run.mjs b/hardware_design/_dump_run.mjs
new file mode 100644
index 0000000..d75e7a7
--- /dev/null
+++ b/hardware_design/_dump_run.mjs
@@ -0,0 +1,14 @@
+import { readFileSync, writeFileSync } from 'node:fs';
+import { request } from 'node:http';
+const code = readFileSync('H:/caiic_workspace/mothercup/hardware_design/_dump.js', 'utf8');
+const body = JSON.stringify({ code });
+const req = request({ host: '127.0.0.1', port: 49620, path: '/execute', method: 'POST', headers: { 'Content-Type': 'application/json', 'Content-Length': Buffer.byteLength(body) } }, res => {
+ let d = '';
+ res.on('data', c => d += c);
+ res.on('end', () => {
+ const j = JSON.parse(d);
+ if (j.success) { writeFileSync('H:/caiic_workspace/mothercup/hardware_design/_dump.json', JSON.stringify(j.result)); console.log('saved', JSON.stringify(j.result).length); }
+ else console.log('FAIL', d);
+ });
+});
+req.write(body); req.end();
diff --git a/hardware_design/_netlist.mjs b/hardware_design/_netlist.mjs
new file mode 100644
index 0000000..088d4e5
--- /dev/null
+++ b/hardware_design/_netlist.mjs
@@ -0,0 +1,63 @@
+import { readFileSync } from 'node:fs';
+const { compData, wireData, pinData } = JSON.parse(readFileSync('H:/caiic_workspace/mothercup/hardware_design/_dump.json', 'utf8'));
+
+// Build a connectivity graph from wire segments. Snap to ~1 unit grid.
+const key = (x,y) => `${Math.round(x)},${Math.round(y)}`;
+const graph = new Map(); // node -> {neighbors:Set, label:null}
+
+function node(k) { if(!graph.has(k)) graph.set(k,{n:new Set(),label:null}); return graph.get(k); }
+function link(a,b){ const A=node(a),B=node(b); A.n.add(b); B.n.add(a); }
+
+for (const w of wireData) {
+ const p = Array.isArray(w.line) ? (Array.isArray(w.line[0]) ? w.line.flat() : w.line) : [];
+ const pts = [];
+ for (let i=0;i+1 mark nearest node
+for (const f of compData.filter(c=>(!c.d||c.d.trim()==='')&&c.n)) {
+ const k = key(f.x,f.y);
+ const nd = node(k);
+ if (!nd.label) nd.label = f.n;
+}
+
+// Find connected components and collect labels
+const visited = new Set();
+function component(start) {
+ const comp = new Set(); const labels = new Set();
+ const stack=[start]; visited.add(start);
+ while(stack.length){
+ const k=stack.pop(); comp.add(k);
+ const nd=graph.get(k); if(nd.label) labels.add(nd.label);
+ for(const nb of nd.n) if(!visited.has(nb)){visited.add(nb);stack.push(nb);}
+ }
+ return {comp,labels:[...labels]};
+}
+
+const components=[];
+for(const k of graph.keys()){ if(!visited.has(k)) components.push(component(k)); }
+
+function compOf(x,y){
+ const k=key(x,y);
+ for(const c of components) if(c.comp.has(k)) return c;
+ // nearest node within 2 units
+ for(const c of components) for(const kk of c.comp){ const [a,b]=kk.split(',').map(Number); if(Math.abs(a-x)<=2&&Math.abs(b-y)<=2) return c; }
+ return null;
+}
+
+console.log('=== key pin -> net (connectivity) ===');
+for (const k of ['SW1','Q1','Q7','Q4','Q2','Q3','D1','U5','U1']) {
+ const pd=pinData[k]; if(!pd){console.log(k+': n/a');continue;}
+ console.log(`${k} (${pd.name})`);
+ for(const p of pd.pins){
+ const c=compOf(p.x,p.y);
+ console.log(` pin${p.num} ${p.name||''} @(${p.x.toFixed(0)},${p.y.toFixed(0)}) -> ${c?JSON.stringify(c.labels):'??'} (${c?c.comp.size:0} nodes)`);
+ }
+}
+
+console.log('\n=== labeled nets (component size >= 2) ===');
+for(const c of components) if(c.labels.length && c.comp.size>=2) console.log(` ${JSON.stringify(c.labels)} : ${c.comp.size} nodes`);
diff --git a/hardware_design/_trace.mjs b/hardware_design/_trace.mjs
new file mode 100644
index 0000000..59af110
--- /dev/null
+++ b/hardware_design/_trace.mjs
@@ -0,0 +1,43 @@
+import { readFileSync } from 'node:fs';
+const { compData, wireData, pinData } = JSON.parse(readFileSync('H:/caiic_workspace/mothercup/hardware_design/_dump.json', 'utf8'));
+
+function onSeg(px, py, ax, ay, bx, by, tol = 4) {
+ const cr = (bx - ax) * (py - ay) - (by - ay) * (px - ax);
+ if (Math.abs(cr) > tol * 20) return false;
+ return px >= Math.min(ax, bx) - tol && px <= Math.max(ax, bx) + tol &&
+ py >= Math.min(ay, by) - tol && py <= Math.max(ay, by) + tol;
+}
+function wpts(line) { if (!Array.isArray(line)) return []; if (Array.isArray(line[0])) return line.flat(); return line; }
+
+// net flags
+const netflags = compData.filter(c => (!c.d || c.d.trim()==='') && c.n);
+
+// For a pin at (px,py), find nets of wires touching it (pin connects at its own x,y)
+function netsAt(px, py) {
+ const s = new Set();
+ for (const w of wireData) {
+ const p = wpts(w.line);
+ for (let i=0;i+3 net (pin at own x,y) ===');
+for (const k of ['SW1','Q1','Q7','Q4','Q2','Q3','D1','Q5','U1','U3','U5']) {
+ const pd = pinData[k];
+ if (!pd) { console.log(`${k}: not found`); continue; }
+ console.log(`${k} (${pd.name}) @(${pd.pos.x.toFixed(0)},${pd.pos.y.toFixed(0)})`);
+ for (const p of pd.pins) {
+ console.log(` pin${p.num} ${p.name||''} @(${p.x.toFixed(0)},${p.y.toFixed(0)}) -> ${JSON.stringify(netsAt(p.x,p.y))}`);
+ }
+}
+
+// also dump components near the power-switch region with positions
+console.log('\n=== components x -2000..-1500, y -1100..-400 ===');
+for (const c of compData.filter(c=>c.d&&c.d.trim()).sort((a,b)=>a.x-b.x)) {
+ if (c.x>=-2000 && c.x<=-1500 && c.y>=-1100 && c.y<=-400) console.log(` ${c.d}:${c.n||''} @(${c.x.toFixed(0)},${c.y.toFixed(0)})`);
+}
diff --git a/hardware_design/开关机电路设计方案.md b/hardware_design/开关机电路设计方案.md
new file mode 100644
index 0000000..9788b83
--- /dev/null
+++ b/hardware_design/开关机电路设计方案.md
@@ -0,0 +1,144 @@
+# 软开关机电路设计方案(长按 2 秒开机 + 自动关机)
+
+> 适用于 MotherCup 整机:电池供电,按键软开关,防误触开机,无操作自动断电。
+
+---
+
+## 1. 需求
+
+| 项 | 要求 |
+|---|---|
+| 开机 | **长按按键 2 秒**才开机(防误触,短按不开机) |
+| 关机 | **自动关机**:无操作超时后自动断电(固件定时,超时值可配) |
+| 掉电后 | 整机彻底断电(VSYS=0),待机电流仅 P-MOS 漏电流(<1µA 级) |
+
+---
+
+## 2. 电路设计
+
+```
+ VBAT(电池 3.0~4.2V)
+ │
+ │ S
+ Q1 ─────┤ P-MOS (AO3401)
+ │ D
+ ├─────────────────────── VSYS(整机电源,去 LDO/升压/制冷片)
+ │ G(栅极节点 G)
+ │
+ R2 100K ─────────┼────┬──────────────────┬─────────────────────┐
+ (接 VBAT) │ │ │ │
+ │ │D │D │
+ │ Q2(N-MOS 2N7002) Q3(N-MOS 2N7002) │
+ │ │G │G │
+ │ │ │ │
+ │ ├─ R3 10K ─┐ ├── C1 3.3µF ── GND │
+ │ │ │ │ │
+ │ ├─ R5 100K ┴ GND ├── R4 10M ── GND │
+ │ │ (PWR_HOLD 下拉,MCU 掉电时确保 Q2 关) │
+ │ │ │ │
+ │ └──── PWR_HOLD (MCU 输出) │
+ │ R1 1M │
+ │ │ │
+ │ SW1 ──── VBAT │
+ │ │ │
+ │ (可选) KEY_DET (MCU 输入) │
+ │ Q2/Q3 源极 ── GND Q2/Q3 源极 ── GND
+```
+
+> 说明:Q2 的漏极与 Q3 的漏极都并到栅极节点 G,任一路导通都能把 Q1 栅极拉低。
+
+---
+
+## 3. 工作原理
+
+### 3.1 开机(长按 2 秒)
+
+1. 初始:`PWR_HOLD` 悬空(MCU 未上电),R5 把 Q2 栅极拉低 → Q2 关断;
+ R2 把 Q1 栅极拉高到 VBAT → Q1 关断 → VSYS=0,整机断电。
+2. 按住 SW1:VBAT 经 SW1 → R1 给 C1 充电(τ = R1×C1 ≈ 3.3s)。
+3. 约 **2.1 秒**后 C1 电压达到 Q3(2N7002) 阈值(~2V) → Q3 导通 → 拉低 Q1 栅极 → Q1 导通 → VSYS 得电。
+4. MCU 上电启动,**第一时间置 `PWR_HOLD=高`** → Q2 导通 → 持续拉低 Q1 栅极(锁存开机)。
+5. 松开 SW1:C1 经 R4 缓慢泄放,Q3 逐渐关断,但 Q2 已锁存,不影响供电。
+6. 若按的时间不足 2 秒就松手:C1 没充到阈值,Q3 不导通,Q1 不开机(防误触)。
+
+### 3.2 自动关机
+
+1. MCU 运行中检测「无操作」超时(BLE 无指令 / 按键无动作,超时值可配,见 §6)。
+2. 超时到 → 置 `PWR_HOLD=低` → Q2 关断 → R2 把 Q1 栅极拉高 → Q1 关断 → VSYS=0 → 整机断电。
+
+---
+
+## 4. 器件清单(BOM)
+
+| 位号 | 器件 | 参数/型号 | 封装 | 数量 | 说明 |
+|---|---|---|---|---|---|
+| Q1 | P-MOSFET | AO3401(-30V/-4A,低压开启) | SOT23 | 1 | 高边主开关 |
+| Q2 | N-MOSFET | 2N7002(Vth≈2V) | SOT23 | 1 | PWR_HOLD 锁存 |
+| Q3 | N-MOSFET | 2N7002(Vth≈2V) | SOT23 | 1 | 长按开机触发 |
+| R1 | 电阻 | 1MΩ ±5% | 0402 | 1 | C1 充电电阻(定 2s 延时) |
+| R2 | 电阻 | 100KΩ | 0402 | 1 | Q1 栅极上拉(默认关机) |
+| R3 | 电阻 | 10KΩ | 0402 | 1 | PWR_HOLD → Q2 栅极 |
+| R4 | 电阻 | 10MΩ | 0402 | 1 | C1 泄放 |
+| R5 | 电阻 | 100KΩ | 0402 | 1 | Q2 栅极下拉(MCU 掉电时确保 Q2 关) |
+| C1 | 电容 | 3.3µF / 10V X7R | 0603 | 1 | 延时电容 |
+| SW1 | 轻触按键 | 6×6 侧按/顶按 | — | 1 | 电源键 |
+| (可选) D1 | 二极管 | BAT54 | SOT23 | 1 | 如 KEY_DET 需隔离时用 |
+
+---
+
+## 5. RC 延时计算
+
+- 充电:`Vc(t) = VBAT × (1 − e^(−t/RC))`,RC = R1×C1 = 1M×3.3µF = 3.3s。
+- 2N7002 阈值约 2V,取 VBAT=4.2V:到达 2V 的时间
+ `t = −RC·ln(1 − 2/4.2) = −3.3·ln(0.524) ≈ 2.13s` ✓(约 2 秒)。
+- 若需更精确 2.0s,可调 R1=910K 或 C1=3.0µF;**最终以实测为准微调 R1/C1**。
+
+---
+
+## 6. 固件配合
+
+### 6.1 GPIO
+
+| 引脚 | 方向 | 说明 |
+|---|---|---|
+| `PWR_HOLD` | 输出 | **`main()` 最开头就置高**(先于 banner/初始化),锁存开机;自动关机时置低 |
+| `KEY_DET`(可选) | 输入 | 接 C1 节点/按键节点,运行中检测按键,用于复位自动关机定时器 |
+
+> 注意:`PWR_HOLD` 必须在 MCU 复位后**立即**拉高,否则用户一松键就掉电。
+
+### 6.2 自动关机定时(伪代码)
+
+```c
+// 空闲超时值(可做成 APP_DATA 参数,appset 配置)
+#define AUTO_OFF_TIMEOUT_MS 120000 /* 默认 2 分钟,可配 */
+
+void activity_heartbeat(void) { // 任何活动(BLE 指令/按键)都调
+ s_last_activity = xTaskGetTickCount();
+}
+
+// 在某个常驻任务里(如 BLE 调度任务)周期性检查:
+if ((xTaskGetTickCount() - s_last_activity) >= pdMS_TO_TICKS(AUTO_OFF_TIMEOUT_MS)) {
+ display_set(0, DISP_TYPE_CELSIUS, DISP_BASE_DECIMAL); // 可先清屏/提示
+ vTaskDelay(pdMS_TO_TICKS(500));
+ PWR_HOLD_LOW(); // 断电
+ for(;;) {} // 等电源跌落
+}
+```
+
+---
+
+## 7. 注意事项
+
+1. **开机时序**:`PWR_HOLD` 必须在 MCU 启动后立即置高,且 R5 保证 MCU 掉电时 Q2 可靠关断。
+2. **C1 泄放**:R4 取 10M 时泄放 τ≈33s;若担心「短按后快速再长按」会把上次残余电荷算进去,可把 R4 调小(如 4.7M)或加受控泄放。
+3. **待机功耗**:关机时只有 R2(100K→VBAT) 与 P-MOS 漏电流,约 0.04µA + 漏电流,可满足低待机要求。
+4. **VBAT 下限**:Q3(2N7002) 阈值 2V,电池低到 ~2.5V 时 C1 充不到阈值会导致开不了机;若需支持更低电压,换低压开启的 N-MOS(如 SI2302,Vth<1V)并重算 RC。
+5. **栅极保护**:Q1 栅极如需加 TVS/钳位(防静电/浪涌),可在 G 节点对 VBAT 加 4.7~6.8V 稳压管(可选)。
+
+---
+
+## 8. 待确认
+
+1. **自动关机超时值**:本文默认 2 分钟(`AUTO_OFF_TIMEOUT_MS`),你之前写的是「2 秒」——请确认用多少。
+2. 是否需要 **KEY_DET**(按键复位自动关机定时 / 手动关机)。
+3. 电池最低电压(决定 Q3 选型与 RC 是否需重算)。
diff --git a/mcm-ddc-ble/MDK-ARM/mcm-ddc-ble.uvguix.Administrator b/mcm-ddc-ble/MDK-ARM/mcm-ddc-ble.uvguix.Administrator
index 3bd1efd..06f0f52 100644
--- a/mcm-ddc-ble/MDK-ARM/mcm-ddc-ble.uvguix.Administrator
+++ b/mcm-ddc-ble/MDK-ARM/mcm-ddc-ble.uvguix.Administrator
@@ -110,8 +110,8 @@
0
- 593
- 01000000040000000100000001000000010000000100000000000000020000000000000001000000010000000000000028000000280000000100000004000000030000000100000038483A5C63616969635F776F726B73706163655C6D6F746865726375705C6D636D2D6464632D626C655C7372635C6273705F75736172742E63000000000B6273705F75736172742E6300000000C5D4F200FFFFFFFF35483A5C63616969635F776F726B73706163655C6D6F746865726375705C6D636D2D6464632D626C655C7372635C626C655F75702E630000000008626C655F75702E6300000000FFDC7800FFFFFFFF89483A5C63616969635F776F726B73706163655C6D6F746865726375705C6E6174696F6E732D7465635C4E333257423033785F53444B5F56322E302E305C6D6964646C6577617265735C4E6174696F6E73746563685C626C655F6C6962726172795C6E735F626C655F737461636B5C69705C626C655C686C5C7372635C6174745C6C69625F6174742E6300000000096C69625F6174742E6300000000BECEA100FFFFFFFF3C483A5C63616969635F776F726B73706163655C6D6F746865726375705C6D636D2D6464632D626C655C7372635C6170705F626C655F70726F746F2E63000000000F6170705F626C655F70726F746F2E6300000000F0A0A100FFFFFFFF0100000010000000C5D4F200FFDC7800BECEA100F0A0A100BCA8E1009CC1B600F7B88600D9ADC200A5C2D700B3A6BE00EAD6A300F6FA7D00B5E99D005FC3CF00C1838300CACAD500010000000000000002000000040100006600000000080000A1030000
+ 682
+ 01000000040000000100000001000000010000000100000000000000020000000000000001000000010000000000000028000000280000000100000005000000040000000100000038483A5C63616969635F776F726B73706163655C6D6F746865726375705C6D636D2D6464632D626C655C7372635C6273705F75736172742E63000000000B6273705F75736172742E6300000000C5D4F200FFFFFFFF35483A5C63616969635F776F726B73706163655C6D6F746865726375705C6D636D2D6464632D626C655C7372635C626C655F75702E630000000008626C655F75702E6300000000FFDC7800FFFFFFFF89483A5C63616969635F776F726B73706163655C6D6F746865726375705C6E6174696F6E732D7465635C4E333257423033785F53444B5F56322E302E305C6D6964646C6577617265735C4E6174696F6E73746563685C626C655F6C6962726172795C6E735F626C655F737461636B5C69705C626C655C686C5C7372635C6174745C6C69625F6174742E6300000000096C69625F6174742E6300000000BECEA100FFFFFFFF3C483A5C63616969635F776F726B73706163655C6D6F746865726375705C6D636D2D6464632D626C655C7372635C6170705F626C655F70726F746F2E63000000000F6170705F626C655F70726F746F2E6300000000F0A0A100FFFFFFFF3A483A5C63616969635F776F726B73706163655C6D6F746865726375705C6D636D2D6464632D626C655C7372635C6170705F646973706C61792E63000000000D6170705F646973706C61792E6300000000BCA8E100FFFFFFFF0100000010000000C5D4F200FFDC7800BECEA100F0A0A100BCA8E1009CC1B600F7B88600D9ADC200A5C2D700B3A6BE00EAD6A300F6FA7D00B5E99D005FC3CF00C1838300CACAD500010000000000000002000000040100006600000000080000A1030000
@@ -1805,8 +1805,8 @@
59392
File
- 2566
- 00200000010000002800FFFF01001100434D4643546F6F6C426172427574746F6E00E100000000000000000000000000000000000000000000000100000001000000018001E100000000000001000000000000000000000000000000000100000001000000018003E1000000000000020000000000000000000000000000000001000000010000000180CD7F0000000000000300000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018023E100000000040004000000000000000000000000000000000100000001000000018022E100000000040005000000000000000000000000000000000100000001000000018025E10000000000000600000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001802BE10000000004000700000000000000000000000000000000010000000100000001802CE10000000004000800000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001807A8A0000000004000900000000000000000000000000000000010000000100000001807B8A0000000004000A00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180D3B00000000000000B000000000000000000000000000000000100000001000000018015B10000000004000C0000000000000000000000000000000001000000010000000180F4B00000000004000D000000000000000000000000000000000100000001000000018036B10000000004000E00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FF88000000000400460000000000000000000000000000000001000000010000000180FE880000000004004500000000000000000000000000000000010000000100000001800B810000000004001300000000000000000000000000000000010000000100000001800C810000000004001400000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180F0880000020000000F000000000000000000000000000000000100000001000000FFFF0100120043555646696E64436F6D626F427574746F6EE803000000000000000000000000000000000000000000000001000000010000009600000002002050000000000C6170705F626C655F696E6974960000000000000001000C6170705F626C655F696E697400000000018024E10000000000001100000000000000000000000000000000010000000100000001800A810000000000001200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000FFFF01001500434D4643546F6F6C4261724D656E75427574746F6E2280000002000000150000002153746172742F53746F70202644656275672053657373696F6E094374726C2B46350000000000000000000000000100000001000000000000000000000001000000020021802280000000000000150000002153746172742F53746F70202644656275672053657373696F6E094374726C2B4635000000000000000000000000010000000100000000000000000000000100000000002180E0010000000000007500000021456E65726779204D6561737572656D656E742026776974686F75742044656275670000000000000000000000000100000001000000000000000000000001000000000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180C488000000000000160000000000000000000000000000000001000000010000000180C988000000000400180000000000000000000000000000000001000000010000000180C788000000000000190000000000000000000000000000000001000000010000002180C8880000000000001700000027264B696C6C20416C6C20427265616B706F696E747320696E2043757272656E7420546172676574000000000000000000000000010000000100000000000000000000000100000003002180C8880000000000001700000027264B696C6C20416C6C20427265616B706F696E747320696E2043757272656E7420546172676574000000000000000000000000010000000100000000000000000000000100000000002180E50100000000000078000000264B696C6C20416C6C20427265616B706F696E747320696E204163746976652050726F6A656374000000000000000000000000010000000100000000000000000000000100000000002180E601000000000000790000002F4B696C6C20416C6C20427265616B706F696E747320696E204D756C74692D50726F6A65637420576F726B73706163650000000000000000000000000100000001000000000000000000000001000000000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000021804C010000020001001A0000000F2650726F6A6563742057696E646F77000000000000000000000000010000000100000000000000000000000100000008002180DD880000000000001A0000000750726F6A656374000000000000000000000000010000000100000000000000000000000100000000002180DC8B0000000000003A00000005426F6F6B73000000000000000000000000010000000100000000000000000000000100000000002180E18B0000000000003B0000000946756E6374696F6E73000000000000000000000000010000000100000000000000000000000100000000002180E28B000000000000400000000954656D706C6174657300000000000000000000000001000000010000000000000000000000010000000000218018890000000000003D0000000E536F757263652042726F777365720000000000000000000000000100000001000000000000000000000001000000000021800000000000000400FFFFFFFF00000000000000000001000000000000000100000000000000000000000100000000002180D988000000000000390000000C4275696C64204F7574707574000000000000000000000000010000000100000000000000000000000100000000002180E38B000000000000410000000B46696E64204F75747075740000000000000000000000000100000001000000000000000000000001000000000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FB7F0000000000001B000000000000000000000000000000000100000001000000000000000446696C65C6030000
+ 2684
+ 00200000010000002800FFFF01001100434D4643546F6F6C426172427574746F6E00E100000000000000000000000000000000000000000000000100000001000000018001E100000000000001000000000000000000000000000000000100000001000000018003E1000000000000020000000000000000000000000000000001000000010000000180CD7F0000000000000300000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018023E100000000000004000000000000000000000000000000000100000001000000018022E100000000000005000000000000000000000000000000000100000001000000018025E10000000000000600000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001802BE10000000004000700000000000000000000000000000000010000000100000001802CE10000000004000800000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001807A8A0000000000000900000000000000000000000000000000010000000100000001807B8A0000000004000A00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180D3B00000000000000B000000000000000000000000000000000100000001000000018015B10000000004000C0000000000000000000000000000000001000000010000000180F4B00000000004000D000000000000000000000000000000000100000001000000018036B10000000004000E00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FF88000000000000460000000000000000000000000000000001000000010000000180FE880000000000004500000000000000000000000000000000010000000100000001800B810000000000001300000000000000000000000000000000010000000100000001800C810000000000001400000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180F0880000020000000F000000000000000000000000000000000100000001000000FFFF0100120043555646696E64436F6D626F427574746F6EE803000000000000000000000000000000000000000000000001000000010000009600000002002050000000000C626F6F745F636C695F72756E960000000000000007000C626F6F745F636C695F72756E0C6170705F626C655F696E69740B6B655F6D656D5F696E69740A4B455F4D454D5F454E5614675F727769705F686561705F656E765F73697A65146E735F486172644661756C745F48616E646C65720F4750494F5F50696E5F546F67676C6500000000000000000000000000000000000000000000000000000000018024E10000000000001100000000000000000000000000000000010000000100000001800A810000000000001200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000FFFF01001500434D4643546F6F6C4261724D656E75427574746F6E2280000002000000150000002153746172742F53746F70202644656275672053657373696F6E094374726C2B46350000000000000000000000000100000001000000000000000000000001000000020021802280000000000000150000002153746172742F53746F70202644656275672053657373696F6E094374726C2B4635000000000000000000000000010000000100000000000000000000000100000000002180E0010000000000007500000021456E65726779204D6561737572656D656E742026776974686F75742044656275670000000000000000000000000100000001000000000000000000000001000000000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180C488000000000000160000000000000000000000000000000001000000010000000180C988000000000400180000000000000000000000000000000001000000010000000180C788000000000000190000000000000000000000000000000001000000010000002180C8880000000000001700000027264B696C6C20416C6C20427265616B706F696E747320696E2043757272656E7420546172676574000000000000000000000000010000000100000000000000000000000100000003002180C8880000000000001700000027264B696C6C20416C6C20427265616B706F696E747320696E2043757272656E7420546172676574000000000000000000000000010000000100000000000000000000000100000000002180E50100000000000078000000264B696C6C20416C6C20427265616B706F696E747320696E204163746976652050726F6A656374000000000000000000000000010000000100000000000000000000000100000000002180E601000000000000790000002F4B696C6C20416C6C20427265616B706F696E747320696E204D756C74692D50726F6A65637420576F726B73706163650000000000000000000000000100000001000000000000000000000001000000000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000021804C010000020001001A0000000F2650726F6A6563742057696E646F77000000000000000000000000010000000100000000000000000000000100000008002180DD880000000000001A0000000750726F6A656374000000000000000000000000010000000100000000000000000000000100000000002180DC8B0000000000003A00000005426F6F6B73000000000000000000000000010000000100000000000000000000000100000000002180E18B0000000000003B0000000946756E6374696F6E73000000000000000000000000010000000100000000000000000000000100000000002180E28B000000000000400000000954656D706C6174657300000000000000000000000001000000010000000000000000000000010000000000218018890000000000003D0000000E536F757263652042726F777365720000000000000000000000000100000001000000000000000000000001000000000021800000000000000400FFFFFFFF00000000000000000001000000000000000100000000000000000000000100000000002180D988000000000000390000000C4275696C64204F7574707574000000000000000000000000010000000100000000000000000000000100000000002180E38B000000000000410000000B46696E64204F75747075740000000000000000000000000100000001000000000000000000000001000000000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FB7F0000000000001B000000000000000000000000000000000100000001000000000000000446696C65C6030000
1423
@@ -1838,7 +1838,7 @@
Debug
2373
- 00200000000000001900FFFF01001100434D4643546F6F6C426172427574746F6ECC880000000000002500000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018017800000000000002600000000000000000000000000000000010000000100000001801D800000000000002700000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001801A800000000000002800000000000000000000000000000000010000000100000001801B80000000000000290000000000000000000000000000000001000000010000000180E57F0000000000002A00000000000000000000000000000000010000000100000001801C800000000000002B00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018000890000000000002C00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180E48B0000000000002D0000000000000000000000000000000001000000010000000180F07F0000000000002E0000000000000000000000000000000001000000010000000180E8880000000000003700000000000000000000000000000000010000000100000001803B010000000000002F0000000000000000000000000000000001000000010000000180BB8A00000000000030000000000000000000000000000000000100000001000000FFFF01001500434D4643546F6F6C4261724D656E75427574746F6E0E01000000000000310000000D57617463682057696E646F7773000000000000000000000000010000000100000000000000000000000100000003001380D88B00000000000031000000085761746368202631000000000000000000000000010000000100000000000000000000000100000000001380D98B00000000000031000000085761746368202632000000000000000000000000010000000100000000000000000000000100000000001380CE01000000000000FFFFFFFF0C576174636820416E63686F720100000000000000010000000000000001000000000000000000000001000000000013800F01000000000000320000000E4D656D6F72792057696E646F7773000000000000000000000000010000000100000000000000000000000100000004001380D28B00000000000032000000094D656D6F7279202631000000000000000000000000010000000100000000000000000000000100000000001380D38B00000000000032000000094D656D6F7279202632000000000000000000000000010000000100000000000000000000000100000000001380D48B00000000000032000000094D656D6F7279202633000000000000000000000000010000000100000000000000000000000100000000001380D58B00000000000032000000094D656D6F72792026340000000000000000000000000100000001000000000000000000000001000000000013801001000000000000330000000E53657269616C2057696E646F77730000000000000000000000000100000001000000000000000000000001000000040013809307000000000000330000000855415254202326310000000000000000000000000100000001000000000000000000000001000000000013809407000000000000330000000855415254202326320000000000000000000000000100000001000000000000000000000001000000000013809507000000000000330000000855415254202326330000000000000000000000000100000001000000000000000000000001000000000013809607000000000000330000001626446562756720287072696E746629205669657765720000000000000000000000000100000001000000000000000000000001000000000013803C010000000000007200000010416E616C797369732057696E646F7773000000000000000000000000010000000100000000000000000000000100000004001380658A000000000000340000000F264C6F67696320416E616C797A6572000000000000000000000000010000000100000000000000000000000100000000001380DC7F0000000000003E0000001526506572666F726D616E636520416E616C797A6572000000000000000000000000010000000100000000000000000000000100000000001380E788000000000000380000000E26436F646520436F766572616765000000000000000000000000010000000100000000000000000000000100000000001380CD01000000000000FFFFFFFF0F416E616C7973697320416E63686F7201000000000000000100000000000000010000000000000000000000010000000000138053010000000000003F0000000D54726163652057696E646F77730000000000000000000000000100000001000000000000000000000001000000010013805401000000000000FFFFFFFF115472616365204D656E7520416E63686F720100000000000000010000000000000001000000000000000000000001000000000013802901000000000000350000001553797374656D205669657765722057696E646F77730000000000000000000000000100000001000000000000000000000001000000010013804B01000000000000FFFFFFFF1453797374656D2056696577657220416E63686F720100000000000000010000000000000001000000000000000000000001000000000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000013800189000000000000360000000F26546F6F6C626F782057696E646F7700000000000000000000000001000000010000000000000000000000010000000300138044C5000000000000FFFFFFFF0E5570646174652057696E646F77730100000000000000010000000000000001000000000000000000000001000000000013800000000000000400FFFFFFFF000000000000000000010000000000000001000000000000000000000001000000000013805B01000000000000FFFFFFFF12546F6F6C626F78204D656E75416E63686F72010000000000000001000000000000000100000000000000000000000100000000000000000005446562756764020000
+ 00200000000000001900FFFF01001100434D4643546F6F6C426172427574746F6ECC880000000000002500000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018017800000000000002600000000000000000000000000000000010000000100000001801D800000000000002700000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001801A800000000000002800000000000000000000000000000000010000000100000001801B80000000000000290000000000000000000000000000000001000000010000000180E57F0000000000002A00000000000000000000000000000000010000000100000001801C800000000000002B00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018000890000000000002C00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180E48B0000000000002D0000000000000000000000000000000001000000010000000180F07F0000000000002E0000000000000000000000000000000001000000010000000180E8880000000000003700000000000000000000000000000000010000000100000001803B010000000000002F0000000000000000000000000000000001000000010000000180BB8A00000000000030000000000000000000000000000000000100000001000000FFFF01001500434D4643546F6F6C4261724D656E75427574746F6E0E01000000000000310000000D57617463682057696E646F7773000000000000000000000000010000000100000000000000000000000100000003001380D88B00000000000031000000085761746368202631000000000000000000000000010000000100000000000000000000000100000000001380D98B00000000000031000000085761746368202632000000000000000000000000010000000100000000000000000000000100000000001380CE01000000000000FFFFFFFF0C576174636820416E63686F720000000000000000010000000000000001000000000000000000000001000000000013800F01000000000000320000000E4D656D6F72792057696E646F7773000000000000000000000000010000000100000000000000000000000100000004001380D28B00000000000032000000094D656D6F7279202631000000000000000000000000010000000100000000000000000000000100000000001380D38B00000000000032000000094D656D6F7279202632000000000000000000000000010000000100000000000000000000000100000000001380D48B00000000000032000000094D656D6F7279202633000000000000000000000000010000000100000000000000000000000100000000001380D58B00000000000032000000094D656D6F72792026340000000000000000000000000100000001000000000000000000000001000000000013801001000000000000330000000E53657269616C2057696E646F77730000000000000000000000000100000001000000000000000000000001000000040013809307000000000000330000000855415254202326310000000000000000000000000100000001000000000000000000000001000000000013809407000000000000330000000855415254202326320000000000000000000000000100000001000000000000000000000001000000000013809507000000000000330000000855415254202326330000000000000000000000000100000001000000000000000000000001000000000013809607000000000000330000001626446562756720287072696E746629205669657765720000000000000000000000000100000001000000000000000000000001000000000013803C010000000000007200000010416E616C797369732057696E646F7773000000000000000000000000010000000100000000000000000000000100000004001380658A000000000000340000000F264C6F67696320416E616C797A6572000000000000000000000000010000000100000000000000000000000100000000001380DC7F0000000000003E0000001526506572666F726D616E636520416E616C797A6572000000000000000000000000010000000100000000000000000000000100000000001380E788000000000000380000000E26436F646520436F766572616765000000000000000000000000010000000100000000000000000000000100000000001380CD01000000000000FFFFFFFF0F416E616C7973697320416E63686F7200000000000000000100000000000000010000000000000000000000010000000000138053010000000000003F0000000D54726163652057696E646F77730000000000000000000000000100000001000000000000000000000001000000010013805401000000000000FFFFFFFF115472616365204D656E7520416E63686F720000000000000000010000000000000001000000000000000000000001000000000013802901000000000000350000001553797374656D205669657765722057696E646F77730000000000000000000000000100000001000000000000000000000001000000010013804B01000000000000FFFFFFFF1453797374656D2056696577657220416E63686F720000000000000000010000000000000001000000000000000000000001000000000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000013800189000000000000360000000F26546F6F6C626F782057696E646F7700000000000000000000000001000000010000000000000000000000010000000300138044C5000000000000FFFFFFFF0E5570646174652057696E646F77730000000000000000010000000000000001000000000000000000000001000000000013800000000000000400FFFFFFFF000000000000000000010000000000000001000000000000000000000001000000000013805B01000000000000FFFFFFFF12546F6F6C626F78204D656E75416E63686F72000000000000000001000000000000000100000000000000000000000100000000000000000005446562756764020000
898
@@ -3603,7 +3603,7 @@
0
100
- 3
+ 4
..\src\bsp_usart.c
1
@@ -3640,6 +3640,15 @@
0
+
+ ..\src\app_display.c
+ 24
+ 349
+ 381
+ 1
+
+ 0
+
diff --git a/mcm-ddc-ble/MDK-ARM/mcm-ddc-ble.uvoptx b/mcm-ddc-ble/MDK-ARM/mcm-ddc-ble.uvoptx
index c5e6722..7b6ed88 100644
--- a/mcm-ddc-ble/MDK-ARM/mcm-ddc-ble.uvoptx
+++ b/mcm-ddc-ble/MDK-ARM/mcm-ddc-ble.uvoptx
@@ -73,7 +73,7 @@
0
- 0
+ 1
0
1
@@ -250,7 +250,7 @@
0
0
- 0
+ 255
1
0
@@ -391,7 +391,7 @@
0
0
- 0
+ 255
1
0
@@ -532,7 +532,7 @@
0
0
- 0
+ 255
1
0
@@ -1410,6 +1410,18 @@
0
0
0
+ ..\src\app_display.c
+ app_display.c
+ 0
+ 0
+
+
+ 10
+ 61
+ 1
+ 0
+ 0
+ 0
..\src\app_params.c
app_params.c
0
@@ -1417,7 +1429,7 @@
10
- 61
+ 62
1
0
0
@@ -1437,7 +1449,7 @@
0
11
- 62
+ 63
1
0
0
@@ -1449,7 +1461,7 @@
11
- 63
+ 64
1
0
0
@@ -1469,7 +1481,7 @@
0
12
- 64
+ 65
5
0
0
@@ -1489,7 +1501,7 @@
0
13
- 65
+ 66
5
0
0
@@ -1509,7 +1521,7 @@
0
14
- 66
+ 67
1
0
0
@@ -1521,7 +1533,7 @@
14
- 67
+ 68
1
0
0
@@ -1533,7 +1545,7 @@
14
- 68
+ 69
1
0
0
@@ -1545,7 +1557,7 @@
14
- 69
+ 70
1
0
0
@@ -1557,7 +1569,7 @@
14
- 70
+ 71
1
0
0
@@ -1569,7 +1581,7 @@
14
- 71
+ 72
1
0
0