From b0a17f300bc640587084b350bb7b4c9f24ad9ab0 Mon Sep 17 00:00:00 2001 From: Felipe Neves Date: Mon, 1 Jun 2026 20:15:12 -0300 Subject: [PATCH 1/4] Replace TunerStudio with espFoC Tool host stack (Phase 0). Rename espfoc_studio to espfoc_tool, add four-view shell with USB scan, offline navigation, OpenGL plots by default, and drop the generic scope tab. --- .github/workflows/espfoc_flow.yaml | 7 +- README.md | 51 +- doc/images/espfoc_tool_logo.png | Bin 0 -> 1037368 bytes doc/images/espfoc_tool_logo.svg | 13 + examples/axis_tuning/sdkconfig.defaults | 2 +- .../drivers/gui_link/esp_foc_bridge_uart.h | 2 +- tools/espfoc_studio/README.md | 61 --- tools/espfoc_studio/__init__.py | 6 - tools/espfoc_studio/gui/__init__.py | 6 - tools/espfoc_studio/gui/__main__.py | 80 ---- tools/espfoc_studio/gui/main_window.py | 339 ------------- tools/espfoc_studio/gui/scope_panel.py | 383 --------------- .../espfoc_studio/gui/sensors_debug_panel.py | 452 ------------------ tools/espfoc_studio/tests/test_gui_smoke.py | 128 ----- tools/espfoc_tool/README.md | 42 ++ tools/espfoc_tool/__init__.py | 3 + .../cli/__init__.py | 0 .../cli/espfocctl.py} | 24 +- tools/espfoc_tool/client/__init__.py | 17 + .../fake_tuner_loopback.py | 0 tools/espfoc_tool/gui/__init__.py | 6 + tools/espfoc_tool/gui/__main__.py | 65 +++ .../gui/alignment_progress.py | 0 .../gui/analysis_panel.py | 41 ++ tools/espfoc_tool/gui/app.py | 38 ++ tools/espfoc_tool/gui/connection_manager.py | 182 +++++++ tools/espfoc_tool/gui/control_rail.py | 244 ++++++++++ .../gui/crosshair.py | 0 tools/espfoc_tool/gui/main_window.py | 306 ++++++++++++ tools/espfoc_tool/gui/nav_rail.py | 41 ++ .../gui/plot_display.py | 0 tools/espfoc_tool/gui/scope_constants.py | 8 + .../gui/scope_stream_timing.py | 0 tools/espfoc_tool/gui/states_panel.py | 250 ++++++++++ .../gui/svm_panel.py | 18 +- .../gui/theme.py | 58 ++- .../gui/tuner_poll_worker.py | 0 .../gui/tuning_panel.py | 143 +----- .../link/__init__.py | 2 +- .../link/codec.py | 0 .../link/reader.py | 0 .../link/scope_sample.py | 8 +- .../link/transport.py | 0 .../link/transport_serial.py | 0 .../model/__init__.py | 2 +- .../model/analysis.py | 0 .../protocol/__init__.py | 0 .../protocol/tuner.py | 0 .../requirements.txt | 2 +- .../tests/__init__.py | 0 .../tests/test_analysis.py | 4 +- tools/espfoc_tool/tests/test_gui_smoke.py | 57 +++ .../tests/test_link_codec.py | 4 +- .../tests/test_link_io_tuner.py | 4 +- .../tests/test_scope_sample.py | 2 +- .../tests/test_tuner_protocol.py | 6 +- 56 files changed, 1471 insertions(+), 1636 deletions(-) create mode 100644 doc/images/espfoc_tool_logo.png create mode 100644 doc/images/espfoc_tool_logo.svg delete mode 100644 tools/espfoc_studio/README.md delete mode 100644 tools/espfoc_studio/__init__.py delete mode 100644 tools/espfoc_studio/gui/__init__.py delete mode 100644 tools/espfoc_studio/gui/__main__.py delete mode 100644 tools/espfoc_studio/gui/main_window.py delete mode 100644 tools/espfoc_studio/gui/scope_panel.py delete mode 100644 tools/espfoc_studio/gui/sensors_debug_panel.py delete mode 100644 tools/espfoc_studio/tests/test_gui_smoke.py create mode 100644 tools/espfoc_tool/README.md create mode 100644 tools/espfoc_tool/__init__.py rename tools/{espfoc_studio => espfoc_tool}/cli/__init__.py (100%) rename tools/{espfoc_studio/cli/tunerctl.py => espfoc_tool/cli/espfocctl.py} (91%) create mode 100644 tools/espfoc_tool/client/__init__.py rename tools/{espfoc_studio => espfoc_tool}/fake_tuner_loopback.py (100%) create mode 100644 tools/espfoc_tool/gui/__init__.py create mode 100644 tools/espfoc_tool/gui/__main__.py rename tools/{espfoc_studio => espfoc_tool}/gui/alignment_progress.py (100%) rename tools/{espfoc_studio => espfoc_tool}/gui/analysis_panel.py (85%) create mode 100644 tools/espfoc_tool/gui/app.py create mode 100644 tools/espfoc_tool/gui/connection_manager.py create mode 100644 tools/espfoc_tool/gui/control_rail.py rename tools/{espfoc_studio => espfoc_tool}/gui/crosshair.py (100%) create mode 100644 tools/espfoc_tool/gui/main_window.py create mode 100644 tools/espfoc_tool/gui/nav_rail.py rename tools/{espfoc_studio => espfoc_tool}/gui/plot_display.py (100%) create mode 100644 tools/espfoc_tool/gui/scope_constants.py rename tools/{espfoc_studio => espfoc_tool}/gui/scope_stream_timing.py (100%) create mode 100644 tools/espfoc_tool/gui/states_panel.py rename tools/{espfoc_studio => espfoc_tool}/gui/svm_panel.py (97%) rename tools/{espfoc_studio => espfoc_tool}/gui/theme.py (81%) rename tools/{espfoc_studio => espfoc_tool}/gui/tuner_poll_worker.py (100%) rename tools/{espfoc_studio => espfoc_tool}/gui/tuning_panel.py (75%) rename tools/{espfoc_studio => espfoc_tool}/link/__init__.py (91%) rename tools/{espfoc_studio => espfoc_tool}/link/codec.py (100%) rename tools/{espfoc_studio => espfoc_tool}/link/reader.py (100%) rename tools/{espfoc_studio => espfoc_tool}/link/scope_sample.py (90%) rename tools/{espfoc_studio => espfoc_tool}/link/transport.py (100%) rename tools/{espfoc_studio => espfoc_tool}/link/transport_serial.py (100%) rename tools/{espfoc_studio => espfoc_tool}/model/__init__.py (90%) rename tools/{espfoc_studio => espfoc_tool}/model/analysis.py (100%) rename tools/{espfoc_studio => espfoc_tool}/protocol/__init__.py (100%) rename tools/{espfoc_studio => espfoc_tool}/protocol/tuner.py (100%) rename tools/{espfoc_studio => espfoc_tool}/requirements.txt (70%) rename tools/{espfoc_studio => espfoc_tool}/tests/__init__.py (100%) rename tools/{espfoc_studio => espfoc_tool}/tests/test_analysis.py (98%) create mode 100644 tools/espfoc_tool/tests/test_gui_smoke.py rename tools/{espfoc_studio => espfoc_tool}/tests/test_link_codec.py (97%) rename tools/{espfoc_studio => espfoc_tool}/tests/test_link_io_tuner.py (93%) rename tools/{espfoc_studio => espfoc_tool}/tests/test_scope_sample.py (94%) rename tools/{espfoc_studio => espfoc_tool}/tests/test_tuner_protocol.py (93%) diff --git a/.github/workflows/espfoc_flow.yaml b/.github/workflows/espfoc_flow.yaml index 5e3d20f5..5bd5817f 100644 --- a/.github/workflows/espfoc_flow.yaml +++ b/.github/workflows/espfoc_flow.yaml @@ -78,7 +78,7 @@ jobs: # Temporarily disabled while tuner protocol / axis lifecycle catches up with Studio. python_tests: if: false - name: TunerStudio host tests + name: espFoC Tool host tests runs-on: ubuntu-latest steps: - name: Checkout @@ -94,14 +94,15 @@ jobs: sudo apt-get update sudo apt-get install -y libegl1 libxkbcommon0 libdbus-1-3 python -m pip install --upgrade pip - pip install -r tools/espfoc_studio/requirements.txt + pip install -r tools/espfoc_tool/requirements.txt - name: Run host test suite env: QT_QPA_PLATFORM: offscreen PYTHONPATH: ${{ github.workspace }}/tools + ESPFOC_TOOL_NO_GL: "1" run: | - python -m pytest tools/espfoc_studio/tests/ -v --tb=short + python -m pytest tools/espfoc_tool/tests/ -v --tb=short unit_tests: name: Unit tests (build and run on QEMU) diff --git a/README.md b/README.md index d6150e02..4c6e80d9 100644 --- a/README.md +++ b/README.md @@ -14,7 +14,7 @@ position loops live in the application's regulation callback; the library stays focused and the hot path runs without floating-point math. Gains can be synthesised at build time, retuned live from the firmware API, persisted to NVS, or dialled in interactively through -the bundled TunerStudio GUI. +the bundled **espFoC Tool** desktop GUI. Targets: ESP32, **ESP32-C6**, ESP32-S3, ESP32-P4 (ESP-IDF v5+). The reference bring-up target is **ESP32-C6** (fixed-point hot path sized for @@ -83,27 +83,29 @@ Inverter and rotor drivers are pluggable: --- -## Tuning +## Tuning (espFoC Tool) -![TunerStudio demo](doc/images/tuner_studio.gif) +![espFoC Tool](doc/images/espfoc_tool_logo.svg) -espFoC ships with **TunerStudio**, a PySide6 + pyqtgraph desktop app -that speaks the runtime tuner protocol over UART or USB-CDC. In a -single window you get: +**espFoC Tool** is a PySide6 + pyqtgraph control app over UART/USB-CDC. +It opens without a board connected (USB auto-scan) and exposes four views: -- live axis state and gain readout with in-place editing; -- one-click rotor alignment with auto-detected natural direction; -- align / run / stop lifecycle and store / erase calibration to NVS; -- predicted step response, Bode, pole-zero and root-locus plots; -- firmware scope stream with per-channel colour, toggle and cursor; -- SVPWM hexagon with the three phase projections and the resultant - voltage vector rotating as the motor is driven. +| View | Purpose | +|------|---------| +| **Config** | Live gains, NVS store/erase, motor parameters | +| **Current** | MPZ design plots (step, Bode, pole-zero, root locus) | +| **Control** | id/iq targets, align, E-stop, SVPWM hexagon | +| **States** | Named scope channels (axis_tuning wire map) | -### Launch TunerStudio +OpenGL plot rendering is enabled by default; set `ESPFOC_TOOL_NO_GL=1` to disable. + +### Launch espFoC Tool ```bash -pip install -r tools/espfoc_studio/requirements.txt -PYTHONPATH=tools python3 -m espfoc_studio.gui --port /dev/ttyACM0 +pip install -r tools/espfoc_tool/requirements.txt +PYTHONPATH=tools python3 -m espfoc_tool.gui +# optional fixed port: +PYTHONPATH=tools python3 -m espfoc_tool.gui --port /dev/ttyACM0 ``` ### Talk to a real target @@ -130,14 +132,17 @@ For your own firmware, enable a transport bridge in `menuconfig` Then: ```bash -PYTHONPATH=tools python3 -m espfoc_studio.gui --port /dev/ttyACM0 +PYTHONPATH=tools python3 -m espfoc_tool.gui --port /dev/ttyACM0 ``` -### Scripted tuning +### Scripted control + +**espfocctl** drives align, run, stop, E-stop, gain writes, id/iq targets, +and NVS store/erase from scripts: -A companion CLI (`tunerctl`) drives align, run, stop, gain writes, -target id/iq, store, and erase from scripts. Details in -[`doc/TUNING.md`](doc/TUNING.md). +```bash +PYTHONPATH=tools python3 -m espfoc_tool.cli.espfocctl --port /dev/ttyACM0 -i +``` --- @@ -219,7 +224,7 @@ loop contains no floating-point operations. ``` espFoC/ ├── doc/ -│ ├── images/ # architecture, TunerStudio screenshot, demo gif +│ ├── images/ # architecture, espFoC Tool logo, demo gif │ └── TUNING.md # deep dive: autogen, runtime API, protocol, CLI ├── examples/ # axis_tuning / unit_test_runner / test_drivers ├── include/espFoC/ # public API @@ -232,7 +237,7 @@ espFoC/ │ ├── motor_control/ # axis core (FOC ISR + slow loop), MPZ, Q16 helpers │ └── osal/ # OS abstraction (tasks, critical sections, esp_timer) ├── test/ # Unity unit tests (run via examples/unit_test_runner) -└── tools/espfoc_studio # PySide6 + pyqtgraph GUI, CLI, host protocol +└── tools/espfoc_tool # PySide6 GUI (espFoC Tool), espfocctl, host protocol ``` --- diff --git a/doc/images/espfoc_tool_logo.png b/doc/images/espfoc_tool_logo.png new file mode 100644 index 0000000000000000000000000000000000000000..07ddd7f49635cc0b571fab771bf773f1aeec83b6 GIT binary patch literal 1037368 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ⅈrQxjm)z`mjFnv?fk0t%nb5ps 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

%!iC~I6e1o*R4fknttZad%kqFd*K_FET*Hf#(S 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

6h@my+YeTC82vu+cM9@QA$6-AAyapHMr3J zq3%mS)4c?;0^N>8Q({gfOaKUN*LF6}zi)c(;Njkgk$&Twmx`}2L!lRu(95u3ixbA9 zbLb-*osi9W+n4u?77Gt6iY9Qoie^qUN6@ln3*{Z{hI4@p<`U`!zM5V#wwkk8piM+ajR73~#mn@Os zV8Jez3MB8u7*oO4#m9hA37tHoX|5>|0l+bq34f(cT^C)y?x*e%pDtK2_VH=LfqT-3 zMwag4AOjO%7$!|z?QdSLF zRoEjy)j(Thj#;oz1)S!y=Qk+cY_h#}?h9NL1uiMYzI!9KJPny;<)rRld?cjzm{!lo z!2%0*jUp_>J(+KAW6ZiUAede>kVVrgC#M1Sfo8fl;c1d zW0EYZL+I*3g5ngU0rAxGJy^G>J77=)#A+-%{0ra~yRt!D-YoBG4ZH^TSU*`>^%qy0_nM+9!<1Nw!#HLn?&J!pf-}#mFUw z32(7NmP8F*GJgoktvF};Q8?vD&Qa7-q5hFQlEhc=Sd@!(>UK<0>6a)>4mugp4fCCo z)SPXir9%H~H>B$DN9}C)XHh!V87OH3U#{^VlyU88W@qOCe@Maz29^X+Xlbd=lL!RC?UwIyNoK1? z*VWDm0bFDW2Xa-tAqY1XLE@878*L05b*b z7mp!HJ2(@EwF?$mC{0Ae5BN60tI2NH%V{S$yprMYtrvRyk72Lb;^1S7Op>s~jT$k=ljCgsc zEf{3Z<>?T7DskS4gB|Qjh)|7jDwH>VG>;k?7LpXfMCyM}b5i~NV*c>gzJEabMu6tq z?qPq96Boxa&CQg3tFQiU(RY8@wOp_1W)DoxtJs}Dgkti5ky5xPaQhrojpA`p$qt2E zqTvw_l+?_J2@=IR(FasVvkE7m$Bw|9hMmVNK#eLPRYDueC}elQ1i%}!E6kR^XiCQj zt0EJ_TNw1zfU6Oe-vo$%K?L`S?jl#i%@UFFNG@Fxv4H?o+^$i4HNlvtYp6!E?} z>SJ%eBeZF(h)obLa@d4-*&afK?WmgFvHGFS_b%_Sp*0e}Cm0oi{@ip&9V!t~S6HM} zRlSbID;Y%f$9QHM2G+eVNaJv_QFQsl@l=IpicaD~NE3yG#tqIJtbGT*VR3QjRL!NR z=1Xr!jEu-^^_}7s1%Tb+;J!et;0QD?K;%`Kiiy|)>2LoQ4GL!>uEk#1Y9&rdPS+PlQ^#g$ru2V&mX{F|H4IqkT{@0KrTH z39ZGM01Qh6RRp*=5&rCOr_ZP3foC0n`dsMicnc1-nN1hSLX(nBzfY){*nUsm%8)f) zr%6_dYvI)zdh9Si@>7=|nE&;QM-xsjTy^4sH!CFJP%171+h(G{*CY$FhM+0%xprK9 z@u7_E7iTVeC}UrH)ydYG7)`#%U-MU-x_8#o)$_$)E2<`DWGo1^V%>Lf|0x#x8T*#} z`cLA^#Pf0TMQ8;=iBi=*f5q+tmAeVR`BhI(_0ZutUPwlK+c?qVk!BA<91X2(S&skI zv4wrdUcdU=F<^CUrLyyABAb7GTo>*=z3Yi>uYB>hQJ>7;y9xIo4ky^3vZP2|kj;Y0 z%3*DgW|%|)6no_W)FqP0YIBKX`W5xb%TtIk1BMuC6;Js@c4TD%9l*Re^nDiY$2z-- z7|!Z@)yC?3D>rQ-&4af6Yqu^GM0K$4e(PO>&;8=kO>RDv&W>jpFDc{`o%xTjM6M-YaW7_qNLOsZ#*BIM&EN0+Y1riJos+M1w*2jP6Q>VDsDUsQz{I&gsLEMA1PNV8WTV_CxCF^! zP)1U{#s=*erf{m-7o;zwR}#1xhpW>EJ0}76VhFozMK)aEU^Fj(&=24cedhEg8r!(W@ zZyKDYM`7_leV;-&^{#oI?$SB%bWWpfFyGxXISu5$nrae3Z`@Rq`|$%^qKVlNlNGjtr1U}$%hRp zliJ6P9>_65-nB_mV$+M}RDzo?4J$u-Gx4pWrmn88pZosj#XCBnKH&3+zOm+ni4^R< zBElx8JpGdvMhsi}D_SAi*iYS3wtma#+=Dus36&hp!ewYYs=JKW$v0TOb)s8<3$( zFqM_H@W9n>p(Xd~$Ws{y${->iY!cBkX-+I}1?~})!x~E>n2DpQw-?kiSol)O3 z&$lSYTLGd%|#1YQw;p0bDVYC0-_$pZ8-vV{4y$~i;${$pK86l1Hw zh2%Mw%t@>kJrn0qG{PohS*@&evYSm65L5gCcUdpiUcZ!+^*8YQGk>->qB0VOkNBE7 zb=lB)G6S%rx#d|mDA7Q5yAe~PzDYC@%rBtbzRYD-L9wEVAvwZijcRmJreK^`O;W1Fu8(58ItDjCJ9gUp z48gGy7H4tWqR;QnbwBS;O)6XY_Q{%ui@)tG{d&gQ_B$I_zsIyM+GUI~$BD)41mEpU z&$8aYmfq&9hMLEdfI}pn6T2o(cz4fNt|_06`sH5>X5Te+)I0tCM_1mNQjh|^n`?0K zM3$t%Q&Tl(Gf8MeCo*>Ks@f8MUk&fV*<`ZEh**<~v8|f8 z7`vX+1WVVAAUy8)fV*d#Pd8`U`{n09xiI;~XMYFd2!s=Q3!|EmN{eNcAg{#+5|faS zps*tll(xn+M39VYC%?@*)4M^lpZ zrwRM+`Hm-M*5J?Z=~k?YCzRBui$1dyfq_qAFqtdT$0fa~sVAT0jhsg4BH4;~S?yE2 ztNF{E=O#{E`58PC6QVoOK&VJlC25`0hN(O4`UnnCHQL%t@?1pJ3w4L&RV<--f@CTI z@n#@Z9idYHtoI6)dCdx)b6yfLibBRKl|0U9xjyrTnR9-xRr}}%a9%+XBm+e-B_EIH zxG>0$Bf_V>i3)+)ZIa6p)auEowB~p?`P&vRz^xxbRH{p|lhc3~v6M^58ElP4^oU7$ z#2R7@?(_y~b#o0Zj`iyw+uMI;Z||3jdhXkOpG5jjVfZi`TwO?lY>vmTrZs-4E|Nz^ zkwH6$g`Kk`ajwRQf!>lvb*jz~=ao}RWS>muA*|-3YO`1__9jwrbckF{_Zs6;H=IThR2}%iXfKh^)wM|qD2L=u*6aF z1FMQB%P?rCGfx5K;l2xrUg^LV&-2pmcB{z#xLDY%G=@ztE&{9q?@(yFN`cwl?ThT9)^_HgaiwhR5|`j4J3{%-EN z{*} z^UG_+N3WiKq$};Mb(`;Bb6#YbWUlPHL1p^a7)&Ojd|`G)IbtGMTj^k=?65*5`FFi= z@ViL6JAVPI&rLQnhuz;7^A!mM{_0hZAS1(oQLpVRyOvib=sXtXohFgN9w`rDL zd+p^{*Iw!z7+BQTu&BRxQQvn@@3^`D%U8BzB1M%E1hCo!*bWX&O!po~Wr6}hTR{)1 zjI(dRPSL_qzws6n--ZwY*o9%lD+r+o7EPS4Fqb-p-WvK8*+9${Co+yJQc%+5(ukhm zh9hNLE&Th*3NW$4vgq4J_DmhPRKITT_5OdAA4`?p<8A7W)r)x|VX?tk&hhwIkjSty z7#j64vkkXb>{B8kpZv!D+S--xHp0cV9ZX#bLsB-XX-SYUAeTXKM@I|7G8U22}`O6_WBq^cbp^9Q~i?-1gOn zr;9&1ja_W}*PrCQk)EK4Pj=C<;qMvojOEY4nVGJzSm`{X&p)liI-NZccNEu>7Ll$( zQb4~JCz-(&hUckCCAWUWJ5PFaIT|w=!;)2Ri{z;DVMK@*#_gn3q=<~=-VKjscG5Ke zJYvV06Ki*+iB-=C6RGYo)K#*!J?c#HiyAb;BT2~?$)O-UAWnFB;R`P7oL)(nrw(^L zNS2nGBhJJz$c%=|N(rJj;UyRr-5dJ_C(>{VyN*B~il6M12pniIczGhdMc7N3v;twy zX95DqR+5V>VL&PYuv0l20fpCftz+0k**}i|m}pVfV3|}bbo?f!%c}@$%Zzp@;Dt0a! z$0r&mA<83c4r%=0a*K?^*LceQ;O}|q3-9ipnVmTl;6!A4W)AgA)(wL*F`r4tx5d_s zD>N4bwy1&PCU!syQCew4sKG%C5fHqECFYvx%~6}emz9JPJ3UzkYTl@}D~$1WgB`XK zoGO~}6iRee-G(1`8ZB@U2g+QO)L6{mZIb&;mp$@n=%bo-9fgbf?>qNX z#?)J7kFCGev*z4O&+cBb!j%GbDTmCXc1~*SWyA)MCtP$9dstOtegKwd7g9uS9^qA2 zb@}9>A743h>V^J;i*6iy?BPCa7?$t&`SllmdHv9#wQ>2mA}zffNDaD*#GTCifklpO z)UNKouQ>VVIom3^S9AI7nr%6aAs_tqv-3B<`1MPt%a4BFdb?sq1(O1@X+;6OBUyww z3`k=i+-=JE$aep2b3fdBtLw@Q1pVFPANlt9?ped8-|qHOnq12sVz=Al#t%nfB?^Ru zfU{2kSNbJ8As@^OSmbH!Y{S%ImSgUZ2m%A!(L{djG`#$5eeKqdW_Ex=!UVvI;MP2i z-Kph~Nu%MAlz2@yD^fXk)30wvWG0nZe$Y?v{QmpkrRQ4WjG|9Kqf>p0wg-F~v>y8! zdPF;3U`a~Oc1q{+4rf@s?cyii{*Ehu?-@Su?^WeJ9FBkUSaqiM5-<*GG;jIJd zuNA!*ed%{eC1GNFhtlsgDWe`=f~mmoEB7^2?w`MV^tHhH%+5`3-B@40_Uy^p?Ul1& zE6ZxTClU9Ok7p_tNTTt&-GOPd-IHZ&%x?7HoF;5;NUmFsNA1ENzu4&7dFf2_^Nn&< zi%K`F)G;ULjlh`OSz$4WGgIU%WAB(tC%5jymxv85jK^*_gKn&+6Ir7bWR~s;o(g4r zT{o++uDpHf1H7QY^-q$U%An!jM5DpEnZsQ*z3I}Clb2?;W0gXSLyL~-lO@g{#ywTs z@T&BrcTZhB@?p>J@;PPOC$hn-D@+l#Dwwdq%(Xxd@)S)9mHbL+V^FnNN`}~{?f+o+ z>GQ7`KA-ouY1~WrRpbZc)Pe=*@+BS?_(ZBmo#np|tnRyUvgL4VOW);1{e@F6Wh6wC zOsPTHtTi2%axy85W^h}D#N`>KAkS8|ZkfQVmx=rlR#i4ret|zw7|!v?0)9YElZZ45 zt6Ec7ls_I{leO!h0SL20Q{vxLN)?OnU^1T;n8B^&0O=uW#Lvm9ND|r7~ESNup6VFpeIS5Y)ua4yO@tp4%8S1$BC z_zE z=VNWH%H}d!%og^S2vIzAn=BLCjw#|(The28=oXL0(zS2iG}D3Ba|2(WBQ<4U``lN1 zxAdQF8}M%_?w$L<%LA`|FrC-ybI-uzxNxCWuE=r*3Ul|n0c`f({GYuyPZ#%|wi$d0 z^l&iLyt-(mN^Mp_;J{P)b~Sc`El^&AL-3_HgJWQJxL{Z?qyFDzM}l9a&qh9mXKR`h za;+UcpoRE&%(Hf2?2!=dI+zUOd}un6?|$xY7LXEivIYASAA^iGy404JXos?8o-rINf*s9{27mBYpjeq#N(W9<^ykN)5OV1s26x@mMl7**Oc>#K{ z{(@t8JQgK#hLjrky~CzYGr2;c(5Rci^^bJEGkk3~Kl9PiKL^*GyYib+Gf#c-(r?^eXmImwYrfI^q9OwQG~{5q%6E_f+6zM&Fu4HJ#9nz1?%=8rX-QrnZ* z>dR)Bp%_!x#Ns!ClFk;HG^`_nfcQ~N1;tQ>RlZFvo*9<9;o9xHr{35+bxr;7n?JcP zzn!sbmu<<4kUW8Cla7jVl7g$(tW$Bo|B8Vf1eg= z-?v`eeC20Y8y7!c=nK%FrPDBMxG)yce@Dc?x}oaiOjzkY0xOIRZVGX{`~P_6zRzAg z@`v3e_@3xRz$t3GAvsPRGTXrXuEn;sXLf&dSuw~^n%b>2732mcthfAuRd_8e8(efa2|>5Y z<0I9K2v>}l0YH#ZYeCpJ2Wuvb*|xDfLxAJuX;iUxK0_X*nUYDg@DbZ}Jgtf7okBem zcY){Y^qm_vY`;8l%)reT1_yS3bL}@%`-zn~I`xO6ZO=aNmc<*yUfjt_B0kjz+^y6E zL?*8*_tXQQ;OMj8!pdsWWTe?M@b|Hk--za_qT{kq<{#h0&5`SA~@RA0<@@49@i!6=cifz`Lz za#Ppr8_-&XZK3kZO#)hr*cjEKRc}PkoLSfUw^6-6UKyD5!qv(bR{qem@ss}7rZ<~F z)6)fU^)6cY9D1Ocp@i4}_P6g+Mt3)_`|64FnmS}Z_+;QNgg>QD;`9#ZG!xn3VE0F` zcebY8RKQMSnLb<1>PhFcHp@*|r&XuoJLv zKXrH}7Eo<`av;$lTIM3$tgH+oEW>>u$W)T4#9ON9QQIRP6f_*DEEX}r^i3oJOAqYD zKM<~5jpXcT-UdvIB+PZp61rFkI6#i}m0>o;3d%V!G4_APBuYtJM>d+!O*a+ar|epE z%(T!XWaczPCz_N`k+=R7oS3Op4=?bNt?j4~VFY`J=L?{jcybYmmt}Jf%-~O{Q15k3 zhb=xNNyr_FN{Bjvqr$dNNw6sHGMxuSq2D6m$iXXGrXMu6$wkN`_b&=dcc+f!3NX%yT=la^vLy- z9XnRue0#;G%LA6stEHb`FQ5u*|0Uz{nYT{8)O`xx_5dryG%<>nQU>#Q*v0 z8?4OaNcKfIxZfVS)!p>!)Si(9ebna@r>Ht~nc(wqo8fEe8p$Ks?6Nb8$1 zVB;gQJMm$?&DC*R!Rh&j_Ec^dhY$lShp-vRTcA|uroDMyP@7wC4t)Q8b7BBc;X#ys zN?aX|Y`b{kSl=HG-2A0&;Oyv|4Wl29o;!E;n+I0*ZT;^9`!h~CJE8`!ipmDQ#otY< z^aidBdou=2Ta@NH;3x_9-YPEY`?R=k{A=g$f3;=&t9_5b!9Q~On}Mu~5;Bb0>8W`r zVdd`dqiy2`)rFh~7Eb-QdHA}2ct`i`-}P|eBa7Zmz{&N*68&(NSz{~(VjBX(F@d83 z2tg4x0KtgeC0U4yc;F9N5vTR=@Ok7wE#(>Wd^mlesLto0(eUN4GyPHYDSwbmB`!`VohY_oOa{1Y%tS-AaKzW1BLVwo*55?ltQx5 z$|~gQMX`oPQc)8Cxm`5F(8vHd+MU5QCgAKu5lbcJnaS3{N$JcvJ*izF#(f{QGxoHd z=-Z{+df^EQf@E!Tm|DvasW%N8geaJixqEMZ&*)}CV_^P!iUwMXe^YV;*%3*yP4!LA zpf$=B7nsA6_&PJoMvMRw-l+UC~bEZzQu%4@15;GH+OPnpRAsTO3sA$tS z;l~4zfRV#UIgfBNz|opxIIJz!F}ZNOTJVbqe)Li3NO#APOQ8iXe0}!Jw)g&zsR;uO zda9c>b2f07seq;-M^oUAneL;cR=X@ZWTWVNBAqZJW9ja1-2T)X`H$=v{X@+lSV`^W z6SLmYAm76-10ykE#0nF!V>TRqAEY(2E7v?>4AU?oQ;tVbdRPi=yx@%GLG-ehGvy-k zE0IbvF7&it>HFr2h=#rvd&~+@y1fVXK?5Lj-#0j8q(Gzx7AUhkbyP!Q=1^t~Gee<3 zB$UreVbZ<^oGo~%cE=q0D~ytW&!8a-a7i5&>QI#@pi@`f1FQ%ph}0Z|LiQ`PgUYU6 zxM-~8gpvgrfK31%aF!8~VFpn24y<+2^CTeTn(c6mL6#?eOhw?yrDxXMJag$tclD8r ztELY2JhAP8ujZeTIAC!Xag*@F$jtIsgP@Xcc=UmVt8TX5x2w&6lsL9iG!U_GiPr!N zB>WBIauWr?6)|81x_d358=kZ%jl2*T#QbJ!V<8UcJf{iQ^*CK;JI$#-fOxzB&}D;o&}VY{8NKk6!EfX!U_@nXlDddS%yw8Ot6L z`E{+(bhblZUVSD;YpQpj@qd4HeKEhq&7Xos)dD37 zKGgn(0H<!{iDLTlqHU=RCkE|5LH6%&HCgjR6b*%UfonSxj;7bnZp*}K#=kb zDZ;G+L7;G+-FxL`$Mf|)pRT*{X(;s80k=LhgbyKZfzuo|$u_4B63+2(T9_#(2vF?q!Yh4UFAV

AGJYd+ES9ep-r*lba`zp{k20K`RB0i*0E) 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

j5M>J&~V#K{uGPa@`BxEdOy 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%0D+E$aIkG#K0?tCmbuNU)1 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 + + + + + + + + + + espFoC + tool + diff --git a/examples/axis_tuning/sdkconfig.defaults b/examples/axis_tuning/sdkconfig.defaults index b9a3a73b..f083498b 100644 --- a/examples/axis_tuning/sdkconfig.defaults +++ b/examples/axis_tuning/sdkconfig.defaults @@ -1,5 +1,5 @@ # axis_tuning — reference firmware with runtime tuner always enabled. -# Host drives align → run → tune → store → stop via tunerctl / Studio. +# Host drives align → run → tune → store → stop via espfocctl / espFoC Tool. CONFIG_ESP_TASK_WDT_EN=n diff --git a/include/espFoC/drivers/gui_link/esp_foc_bridge_uart.h b/include/espFoC/drivers/gui_link/esp_foc_bridge_uart.h index ee140b3b..5f8a3f5d 100644 --- a/include/espFoC/drivers/gui_link/esp_foc_bridge_uart.h +++ b/include/espFoC/drivers/gui_link/esp_foc_bridge_uart.h @@ -9,7 +9,7 @@ * @brief UART bridge for the espFoC tuner / scope link. * * Implements the weak callbacks declared by esp_foc_tuner.h so any - * espFoC build can talk to the host TunerStudio over a regular UART: + * espFoC build can talk to the host espFoC Tool over a regular UART: * * - esp_foc_tuner_init_bus_callback() -> driver install + RX task * - esp_foc_tuner_recv_callback() -> shim around uart_read_bytes diff --git a/tools/espfoc_studio/README.md b/tools/espfoc_studio/README.md deleted file mode 100644 index 996ed69c..00000000 --- a/tools/espfoc_studio/README.md +++ /dev/null @@ -1,61 +0,0 @@ -# espfoc_studio - -Host-side tooling for the espFoC tuner stack. Three layers that share the -same wire format as the firmware (see `source/motor_control/esp_foc_link.c` -and `esp_foc_tuner.c`): - -- `espfoc_studio.link` — framing codec + transports (loopback, pyserial). -- `espfoc_studio.protocol` — synchronous `TunerClient` for read / write / - exec round-trips (axis state, gains, motion targets, calibration). -- `espfoc_studio.model` — analytical helpers (MPZ design, step response, - Bode, pole/zero, root locus). No Qt dependency. -- `espfoc_studio.cli.tunerctl` — argparse CLI on top of TunerClient. -- `espfoc_studio.gui` — PySide6 + pyqtgraph front-end (TunerStudio). - -## Install - -```bash -pip install -r tools/espfoc_studio/requirements.txt -``` - -`PySide6` and `pyqtgraph` are only needed for the GUI; the CLI and the -library layers work with just `pyserial` and `numpy`. - -## TunerStudio GUI - -Requires a serial target (UART or USB-CDC): - -```bash -PYTHONPATH=tools python3 -m espfoc_studio.gui --port /dev/ttyACM0 -``` - -The window opens with: - -- a **Tuning** panel on the left (live gains, manual edit, - override toggle, current references); -- an **Analysis** tab that redraws the predicted step response, Bode - magnitude, pole/zero map and root locus when motor or gain - parameters change; -- **Scope**, **Sensors**, and **SVM Hexagon** tabs. - -Flash firmware with a bridge enabled (`CONFIG_ESP_FOC_BRIDGE_UART` or -`CONFIG_ESP_FOC_BRIDGE_USBCDC`), then use the same `--port` command as above. - -The CLI `tunerctl` works against the same bridges: - -```bash -PYTHONPATH=tools python3 -m espfoc_studio.cli.tunerctl \ - --port /dev/ttyACM0 axis-state -``` - -## Run the host-side tests - -Each test file is standalone and exits with status 0 on success. - -```bash -PYTHONPATH=tools python3 tools/espfoc_studio/tests/test_link_codec.py -PYTHONPATH=tools python3 tools/espfoc_studio/tests/test_tuner_protocol.py -PYTHONPATH=tools python3 tools/espfoc_studio/tests/test_analysis.py -QT_QPA_PLATFORM=offscreen PYTHONPATH=tools \ - python3 tools/espfoc_studio/tests/test_gui_smoke.py -``` diff --git a/tools/espfoc_studio/__init__.py b/tools/espfoc_studio/__init__.py deleted file mode 100644 index f63fefad..00000000 --- a/tools/espfoc_studio/__init__.py +++ /dev/null @@ -1,6 +0,0 @@ -"""espfoc_studio — host-side tooling for the espFoC tuner stack. - -Currently exports the wire-level link codec (mirror of esp_foc_link.c). -Subsequent PRs will add transports (USB-CDC, UART), tuner protocol, -analysis library, CLI and GUI. -""" diff --git a/tools/espfoc_studio/gui/__init__.py b/tools/espfoc_studio/gui/__init__.py deleted file mode 100644 index bf0c7345..00000000 --- a/tools/espfoc_studio/gui/__init__.py +++ /dev/null @@ -1,6 +0,0 @@ -"""espfoc_studio.gui — PySide6 + pyqtgraph front-end for the tuner. - -Run with: - - PYTHONPATH=tools python3 -m espfoc_studio.gui --port /dev/ttyACM0 -""" diff --git a/tools/espfoc_studio/gui/__main__.py b/tools/espfoc_studio/gui/__main__.py deleted file mode 100644 index 43cc1992..00000000 --- a/tools/espfoc_studio/gui/__main__.py +++ /dev/null @@ -1,80 +0,0 @@ -"""Entry point for `python -m espfoc_studio.gui`. - -Requires ``--port`` for a serial transport (UART or USB-CDC bridge). - -Closing the window stops the link reader and exits cleanly. -""" - -from __future__ import annotations - -import argparse -import os -import signal -import sys -from typing import Callable, Optional - -from .main_window import MainWindow -from .theme import apply_dark_theme - - -def _parse_args(argv: Optional[list[str]]) -> argparse.Namespace: - p = argparse.ArgumentParser(prog="python -m espfoc_studio.gui", - description=__doc__) - p.add_argument("--port", required=True, - help="serial port of a real espFoC target (e.g. /dev/ttyACM0)") - p.add_argument("--baud", type=int, default=921600, - help="baud rate") - p.add_argument("--axis", type=int, default=0, - help="axis id the GUI should attach to (0..3)") - p.add_argument( - "--scope-csv", action="store_true", - help="decode legacy SCOPE as CSV (match CONFIG_ESP_FOC_SCOPE_LEGACY_CSV on device)") - return p.parse_args(argv) - - -def _setup_serial(port: str, baud: int, axis: int - ) -> tuple[TunerClient, Callable[[], None]]: - from ..link.transport_serial import SerialTransport - transport = SerialTransport(port=port, baud=baud) - reader = LinkReader(transport) - reader.start() - client = TunerClient(reader, axis=axis) - - def shutdown() -> None: - reader.stop() - - return client, shutdown - - -def main(argv: Optional[list[str]] = None) -> int: - args = _parse_args(argv) - if getattr(args, "scope_csv", False): - os.environ["ESP_FOC_STUDIO_SCOPE_CSV"] = "1" - - from PySide6.QtCore import QTimer - from PySide6.QtWidgets import QApplication - - client, shutdown = _setup_serial(args.port, args.baud, args.axis) - title = f"espFoC TunerStudio — {args.port} @ {args.baud}" - link_descr = f"{args.port} @ {args.baud}" - serial_config = (args.port, args.baud, args.axis) - - app = QApplication.instance() or QApplication(sys.argv) - apply_dark_theme(app) - window = MainWindow( - client, title=title, link_descr=link_descr, - serial_config=serial_config) - window.show() - - signal.signal(signal.SIGINT, lambda *_: app.quit()) - interrupt_tick = QTimer() - interrupt_tick.start(200) - interrupt_tick.timeout.connect(lambda: None) - - exit_code = app.exec() - shutdown() - return exit_code - - -if __name__ == "__main__": - sys.exit(main()) diff --git a/tools/espfoc_studio/gui/main_window.py b/tools/espfoc_studio/gui/main_window.py deleted file mode 100644 index d947734e..00000000 --- a/tools/espfoc_studio/gui/main_window.py +++ /dev/null @@ -1,339 +0,0 @@ -"""Main window: assembles Tuning + Analysis + Scope into a single view. - -Tuner serial round-trips run on :class:`TunerPollWorker`; the GUI thread only -applies snapshots and updates badges.""" - -from __future__ import annotations - -import time -from typing import Optional, Tuple - -from PySide6.QtCore import QMetaObject, QTimer, Qt, QThread -from PySide6.QtWidgets import ( - QHBoxLayout, - QLabel, - QMessageBox, - QMainWindow, - QPushButton, - QSplitter, - QTabWidget, - QSizePolicy, - QWidget, -) - -from ..link import LinkReader -from ..protocol import TunerClient, TunerError -from .theme import make_badge_qss, make_reset_board_button_qss -from .analysis_panel import AnalysisPanel -from .sensors_debug_panel import SensorsDebugPanel -from .scope_panel import ScopePanel -from .scope_stream_timing import scope_uniform_dt_s -from .svm_panel import SvmPanel -from .tuning_panel import TuningPanel -from .tuner_poll_worker import TunerPollSnapshot, TunerPollWorker - -# Consecutive failed pings before the badge switches from CONNECTED to NO LINK. -_LINK_DOWN_AFTER_CONSECUTIVE_PING_FAILS = 10 - - -class MainWindow(QMainWindow): - def __init__(self, client: TunerClient, - title: str = "espFoC TunerStudio", - link_descr: str = "", - serial_config: Optional[Tuple[str, int, int]] = None) -> None: - super().__init__() - self._client = client - self._serial_config = serial_config - self._last_reconnect_mono: float = 0.0 - self._link_ping_seen: bool = False - self._ping_fail_streak: int = 0 - self.setWindowTitle(title) - # 900 px of vertical room is what fits the SVM hexagon (380) - # plus its three-phase waveform (220) plus axis labels and tab - # chrome without clipping. The Scope tab is more forgiving but - # benefits from the same headroom. - self.resize(1280, 900) - self.setMinimumSize(1024, 720) - - central = QWidget() - self.setCentralWidget(central) - root = QHBoxLayout(central) - - splitter = QSplitter(Qt.Horizontal) - root.addWidget(splitter, 1) - - self._analysis = AnalysisPanel(client=self._client) - # The scope and the SVM hexagon both subscribe to the same shared - # LinkReader. ch0/1/2 are (by convention) the three-phase SVPWM - # voltages, which the SVM panel reads exclusively. - self._scope = ScopePanel(reader=self._client.reader) - self._svm = SvmPanel(reader=self._client.reader) - self._sensors = SensorsDebugPanel(reader=self._client.reader) - - # Analysis plots are expensive (step sim + bode + root locus). - # Debounce spinbox storms so one nudge of the mouse wheel doesn't - # fire a dozen full recomputes back-to-back. Must be created - # BEFORE the TuningPanel because the panel primes an initial - # _on_params call during construction. - self._analysis_pending = None - self._analysis_debounce = QTimer(self) - self._analysis_debounce.setSingleShot(True) - self._analysis_debounce.setInterval(150) - self._analysis_debounce.timeout.connect(self._run_pending_analysis) - - self._tuning = TuningPanel( - self._client, on_params_changed=self._on_params) - splitter.addWidget(self._tuning) - - tabs = QTabWidget() - tabs.addTab(self._analysis, "Analysis") - tabs.addTab(self._sensors, "Sensors") - tabs.addTab(self._svm, "SVM Hexagon") - tabs.addTab(self._scope, "Scope") - - splitter.addWidget(tabs) - splitter.setStretchFactor(0, 0) - splitter.setStretchFactor(1, 1) - splitter.setSizes([380, 900]) - - # Status bar: transport + link badge (permanent, right). - if link_descr: - dtext = link_descr - elif serial_config is not None: - dtext = f"{serial_config[0]} @ {serial_config[1]}" - else: - dtext = "" - sb = self.statusBar() - self._link_badge = QLabel() - self._link_badge.setSizePolicy( - QSizePolicy.Minimum, QSizePolicy.Fixed) - self._link_descr = QLabel() - self._link_descr.setStyleSheet("color: #9aa0a6; font-size: 12px;") - self._link_descr.setText(dtext) - self._link_descr.setMinimumWidth(100) - self._reset_btn = QPushButton("RESET BOARD") - self._reset_btn.setCursor(Qt.PointingHandCursor) - self._reset_btn.setStyleSheet(make_reset_board_button_qss()) - self._reset_btn.setToolTip( - "Restart the target (esp_restart). Emergency use only.") - self._reset_btn.clicked.connect(self._on_reset_board_clicked) - sb.addPermanentWidget(self._link_badge, 0) - sb.addPermanentWidget(self._reset_btn, 0) - sb.addPermanentWidget(self._link_descr, 0) - self._set_link_badge("LINK_WAIT") - - self._poll_thread = QThread(self) - self._poll_worker = TunerPollWorker(self._client) - self._poll_worker.moveToThread(self._poll_thread) - self._poll_worker.poll_finished.connect( - self._on_poll_finished, Qt.QueuedConnection) - self._poll_worker.ping_finished.connect( - self._on_ping_finished, Qt.QueuedConnection) - self._poll_worker.device_reads_ready.connect( - self._on_device_reads_ready, Qt.QueuedConnection) - self._tuning.poll_refresh_requested.connect( - self._poll_worker.poll_tick, Qt.QueuedConnection) - self._tuning.long_operation.connect( - self._poll_worker.set_paused, Qt.QueuedConnection) - self._tuning.long_operation.connect( - self._scope.set_live_priority, Qt.QueuedConnection) - self._poll_thread.started.connect(self._poll_worker.start_timer) - self._poll_thread.start() - - self._update_link_badge() - self._set_sensors_interactive() - - def _on_device_reads_ready( - self, - fs_hz: float, - shadows: object, - pole: object, - ) -> None: - """Apply tuner readout gathered on :attr:`_poll_worker` (GUI thread only).""" - if fs_hz > 1.0: - self._analysis.set_loop_rate_hz(fs_hz) - self._tuning.set_loop_rate_hz(fs_hz) - scope_dt = scope_uniform_dt_s(fs_hz) - self._scope.set_uniform_sample_period_s(scope_dt) - self._svm.set_uniform_sample_period_s(scope_dt) - self._sensors.set_uniform_sample_period_s(scope_dt) - if shadows is not None: - t = shadows - self._tuning.apply_nvs_shadow_floats( - t[0], t[1], t[2], t[3], t[4], t[5]) - if pole is not None: - self._analysis.set_motor_pole_pairs_silent(int(pole)) - self._tuning._notify_params_changed() - - def closeEvent(self, event) -> None: - self._tuning.long_operation.emit(True) - QMetaObject.invokeMethod( - self._poll_worker, - "shutdown", - Qt.BlockingQueuedConnection, - ) - self._poll_thread.quit() - self._poll_thread.wait(5000) - super().closeEvent(event) - - def _on_reset_board_clicked(self) -> None: - r = QMessageBox.question( - self, "Reset board", - "Restart the board now? The USB link may drop briefly.", - QMessageBox.Yes | QMessageBox.No, QMessageBox.No, - ) - if r != QMessageBox.Yes: - return - try: - self._client.reset_board() - except TunerError as e: - QMessageBox.warning(self, "Reset failed", str(e)) - - def _set_sensors_interactive(self) -> None: - # Same readiness rule as Scope / SVM: live when the link reader is - # running. Do not gate on tuner poll success — scope frames can flow - # while CMD_TUNER polling is still warming up or temporarily failing. - r = self._client.reader - ok = bool(r and r.is_running) - self._sensors.set_interactive(ok) - - def _set_link_badge(self, key: str) -> None: - text, qss = make_badge_qss(key) - self._link_badge.setText(text) - self._link_badge.setStyleSheet(qss) - self._link_badge.setVisible(True) - - def _update_link_badge(self) -> None: - r = self._client.reader - if r is None or not r.is_running: - self._set_link_badge("LINK_DOWN") - return - if not self._link_ping_seen: - self._set_link_badge("LINK_WAIT") - return - if self._ping_fail_streak >= _LINK_DOWN_AFTER_CONSECUTIVE_PING_FAILS: - self._set_link_badge("LINK_DOWN") - else: - self._set_link_badge("LINK_OK") - - def _on_ping_finished(self, ok: bool, err: str) -> None: - self._link_ping_seen = True - if ok: - self._ping_fail_streak = 0 - else: - self._ping_fail_streak += 1 - self._update_link_badge() - if (not ok - and self._serial_config is not None - and self._poll_error_implies_dead_transport(err) - and self._maybe_reconnect()): - QMetaObject.invokeMethod( - self._poll_worker, - "ping_now", - Qt.QueuedConnection, - ) - - def _reconnect_serial(self) -> bool: - """Replace serial transport. Never acquire ``_bus_lock`` on the GUI thread — - that blocked the window while the worker held the mutex during poll/ping.""" - assert self._serial_config is not None - from ..link.transport_serial import SerialTransport - self._tuning.last_poll_ok = False - self._link_ping_seen = False - self._ping_fail_streak = 0 - self._poll_worker.suspend_requested.emit(True) - time.sleep(0.15) - success = False - try: - self._tuning.detach_log_reader() - old = self._client.reader - try: - old.stop() - except Exception: - pass - port, baud, _axis = self._serial_config - try: - t = SerialTransport(port=port, baud=baud) - except Exception: - success = False - else: - r = LinkReader(t) - r.start() - time.sleep(0.15) - self._client.replace_reader(r) - self._scope.attach_reader(r) - self._svm.attach_reader(r) - self._sensors.attach_reader(r) - self._tuning.rebind_log_reader() - success = True - finally: - QMetaObject.invokeMethod( - self._poll_worker, - "run_post_reconnect_reads", - Qt.QueuedConnection, - ) - QMetaObject.invokeMethod( - self._poll_worker, - "finish_reconnect", - Qt.QueuedConnection, - ) - return success - - def _maybe_reconnect(self) -> bool: - if self._serial_config is None: - return False - now = time.monotonic() - if now - self._last_reconnect_mono < 1.0: - return False - self._last_reconnect_mono = now - if self._reconnect_serial(): - return True - return False - - @staticmethod - def _poll_error_implies_dead_transport(err: str) -> bool: - """Host-side I/O loss or dead reader — safe to reopen serial.""" - el = (err or "").lower() - if ( - "link not running" in el - or "reader stopped" in el - or "link i/o:" in el): - return True - return any( - s in el for s in ( - "errno 5", - "[errno 5]", - "input/output error", - "bad file descriptor", - "serial send failed", - "timeout waiting for response", - "device disconnected", - )) - - def _on_poll_finished( - self, - ok: bool, - err: str, - snap: Optional[TunerPollSnapshot]) -> None: - if ok and snap is not None: - self._tuning.apply_poll_snapshot(snap) - else: - self._tuning.apply_poll_error(err or "poll failed") - self._set_sensors_interactive() - if (self._serial_config is not None - and not self._tuning.last_poll_ok - and self._poll_error_implies_dead_transport(err) - and self._maybe_reconnect()): - self._tuning.poll_refresh_requested.emit(True) - - def _on_params(self, r: float, l: float, bw: float, - kp: float, ki: float) -> None: - self._analysis_pending = (r, l, bw, kp, ki) - self._analysis_debounce.start() - - def _run_pending_analysis(self) -> None: - if self._analysis_pending is None: - return - r, l, bw, kp, ki = self._analysis_pending - self._analysis_pending = None - self._analysis.update_model(r, l, bw, kp, ki) diff --git a/tools/espfoc_studio/gui/scope_panel.py b/tools/espfoc_studio/gui/scope_panel.py deleted file mode 100644 index 8caa4834..00000000 --- a/tools/espfoc_studio/gui/scope_panel.py +++ /dev/null @@ -1,383 +0,0 @@ -"""Scope panel: rolling time-series of every channel emitted by the -firmware's esp_foc_scope. - -Decoded samples go into a **long ring buffer**; the plot shows a window -that lags the newest sample by :attr:`ScopePanel.DISPLAY_LAG_S` so USB -bursts are absorbed instead of discarded. Eviction drops only history -older than ``window + lag + margin``. Optional :meth:`set_live_priority` -shortens the lag while the GUI runs blocking tuner traffic. -""" - -from __future__ import annotations - -import threading -import time -from collections import deque -from typing import Deque, List, Optional, Tuple - -import numpy as np -import pyqtgraph as pg -from PySide6.QtCore import Qt, QTimer -from PySide6.QtGui import QColor -from PySide6.QtWidgets import ( - QCheckBox, - QFrame, - QHBoxLayout, - QLabel, - QPushButton, - QScrollArea, - QVBoxLayout, - QWidget, -) - -from ..link import LinkReader -from ..link.scope_sample import decode_scope_payload_to_floats_csv_first -from .crosshair import attach_crosshair -from .plot_display import ( - configure_dynamic_curve, - configure_rolling_time_xaxis, - decimation_indices_peak_union, - rolling_plot_x_upper, -) -from .scope_stream_timing import scope_uniform_dt_s - - -_CHANNEL_COLORS = ( - "#4fc3f7", - "#ffb74d", - "#81c784", - "#e57373", - "#ba68c8", - "#f06292", - "#aed581", - "#fff176", -) - - -class ScopePanel(QWidget): - WINDOW_S = 2.0 - RENDER_INTERVAL_MS = 55 - MAX_DISPLAY_POINTS_PER_CURVE = 1600 - INBOX_CAP = 8192 - MAX_RAW_FRAMES_DECODE_BATCH = 2048 - MAX_FRAMES_PER_UI_TICK = 2048 - # Legacy names for SensorsDebugPanel (strip charts still use pending merge). - BUFFER_CAP = 4096 - MAX_PENDING_DECODED = 8192 - MAX_MERGE_SAMPLES_PER_TICK = 8192 - - RING_MAX_SAMPLES = 200_000 - DISPLAY_LAG_S = 0.35 - LIVE_PRIORITY_LAG_S = 0.05 - EVICT_MARGIN_S = 1.5 - - def __init__(self, reader: Optional[LinkReader] = None, - sample_period_s: float = 1e-3 * 4, - async_decode: bool = True) -> None: - super().__init__() - self._async_decode = async_decode - self._reader = reader - self._sample_dt = sample_period_s - self._uniform_dt_s = scope_uniform_dt_s(20000.0) - self._scope_synth_t = 0.0 - self._display_lag_s = float(self.DISPLAY_LAG_S) - self._live_priority = False - - self._history_lock = threading.Lock() - self._history: Deque[Tuple[float, Tuple[float, ...]]] = deque( - maxlen=self.RING_MAX_SAMPLES) - - self._inbox_lock = threading.Lock() - self._inbox: Deque[Tuple[float, bytes]] = deque(maxlen=self.INBOX_CAP) - self._worker_stop = threading.Event() - self._decode_thread: Optional[threading.Thread] = None - self._t0 = time.monotonic() - self._curves: List[pg.PlotDataItem] = [] - self._checkboxes: List[QCheckBox] = [] - self._n_channels = 0 - - self._x_buf_a: Optional[np.ndarray] = None - self._x_buf_b: Optional[np.ndarray] = None - self._y_bufs_a: List[Optional[np.ndarray]] = [] - self._y_bufs_b: List[Optional[np.ndarray]] = [] - self._ping_pong = False - - root = QHBoxLayout(self) - - gutter = QFrame() - gutter.setFrameShape(QFrame.NoFrame) - gutter.setMinimumWidth(140) - self._gutter_layout = QVBoxLayout(gutter) - self._gutter_layout.setContentsMargins(4, 4, 4, 4) - autoset_btn = QPushButton("Autoset") - autoset_btn.setToolTip( - "Clear ring buffer and synthetic time; re-enable Y autorange.") - autoset_btn.clicked.connect(self.autoset) - self._gutter_layout.addWidget(autoset_btn) - self._gutter_layout.addWidget(QLabel("Channels")) - self._gutter_layout.addStretch(1) - scroll = QScrollArea() - scroll.setWidgetResizable(True) - scroll.setMinimumWidth(160) - scroll.setMaximumWidth(220) - scroll.setWidget(gutter) - root.addWidget(scroll) - - self._plot = pg.PlotWidget(title="Scope — firmware CSV stream") - self._plot.setLabel('left', "amplitude") - self._plot.setLabel('bottom', "time", units='s') - self._plot.showGrid(x=True, y=True, alpha=0.3) - self._plot.setMinimumHeight(380) - configure_rolling_time_xaxis(self._plot) - self._plot.setXRange(0.0, self.WINDOW_S, padding=0) - self._plot.enableAutoRange(axis='x', enable=False) - self._crosshair = attach_crosshair( - self._plot, - fmt=lambda x, y: f"t = {x:.3f} s\ny = {y:+.4g}") - root.addWidget(self._plot, 1) - - self._render_timer = QTimer(self) - self._render_timer.setInterval(self.RENDER_INTERVAL_MS) - self._render_timer.timeout.connect(self._render_tick) - self._render_timer.start() - - if reader is not None: - reader.register_scope_callback(self._on_frame_reader_thread) - - if self._async_decode: - self._decode_thread = threading.Thread( - target=self._decode_worker_loop, - daemon=True, - name="espfoc-scope-decode", - ) - self._decode_thread.start() - else: - self._decode_thread = None - - def closeEvent(self, event) -> None: - self._worker_stop.set() - if self._decode_thread is not None: - self._decode_thread.join(timeout=1.5) - super().closeEvent(event) - - def _effective_lag_s(self) -> float: - if self._live_priority: - return min(self._display_lag_s, self.LIVE_PRIORITY_LAG_S) - return self._display_lag_s - - def _playback_head_s(self, t_newest: float, t_oldest: float) -> float: - """Replay head = newest minus lag; if lag exceeds buffered span, show up to newest.""" - h = t_newest - self._effective_lag_s() - if h < t_oldest: - return t_newest - return h - - def set_sample_period(self, dt_s: float) -> None: - if dt_s > 0: - self.set_uniform_sample_period_s(dt_s) - - def set_uniform_sample_period_s(self, dt_s: float) -> None: - if dt_s > 1e-9: - self._uniform_dt_s = float(dt_s) - self._sample_dt = self._uniform_dt_s - - def set_display_lag_s(self, lag_s: float) -> None: - """Plot trails newest sample by *lag_s* (absorbs transport bursts).""" - if lag_s >= 0.0: - self._display_lag_s = float(lag_s) - - def set_live_priority(self, active: bool) -> None: - """Shorten lag during blocking GUI→target traffic (e.g. NVS save).""" - self._live_priority = bool(active) - - def attach_reader(self, reader: LinkReader) -> None: - if self._reader is not None and self._reader is not reader: - try: - self._reader.unregister_scope_callback( - self._on_frame_reader_thread) - except ValueError: - pass - with self._inbox_lock: - self._inbox.clear() - with self._history_lock: - self._history.clear() - self._scope_synth_t = 0.0 - self._reader = reader - reader.register_scope_callback(self._on_frame_reader_thread) - - def autoset(self) -> None: - with self._inbox_lock: - self._inbox.clear() - with self._history_lock: - self._history.clear() - self._scope_synth_t = 0.0 - self._t0 = time.monotonic() - self._x_buf_a = self._x_buf_b = None - self._y_bufs_a = [] - self._y_bufs_b = [] - self._ping_pong = False - for curve in self._curves: - curve.setData([], []) - self._plot.setXRange(0.0, self.WINDOW_S, padding=0) - self._plot.enableAutoRange(axis='y', enable=True) - - def _on_frame_reader_thread(self, channel: int, seq: int, - payload: bytes) -> None: - t_mono = time.monotonic() - with self._inbox_lock: - self._inbox.append((t_mono, payload)) - - def _decode_batch_values(self, batch: List[Tuple[float, bytes]] - ) -> List[Tuple[float, ...]]: - out: List[Tuple[float, ...]] = [] - for _t_mono, payload in batch: - try: - values = decode_scope_payload_to_floats_csv_first(payload) - except ValueError: - continue - if not values: - continue - out.append(tuple(values)) - return out - - def _flush_rows_to_ring(self, rows: List[Tuple[float, ...]]) -> None: - if not rows: - return - dt = self._uniform_dt_s - with self._history_lock: - for vals in rows: - self._history.append((self._scope_synth_t, vals)) - self._scope_synth_t += dt - self._evict_old_locked() - - def _evict_old_locked(self) -> None: - if not self._history: - return - t_newest = self._history[-1][0] - t_oldest = self._history[0][0] - t_play = self._playback_head_s(t_newest, t_oldest) - t_cut = t_play - self.WINDOW_S - self.EVICT_MARGIN_S - while self._history and self._history[0][0] < t_cut: - self._history.popleft() - - def _decode_worker_loop(self) -> None: - while not self._worker_stop.is_set(): - batch: List[Tuple[float, bytes]] = [] - with self._inbox_lock: - n = len(self._inbox) - if n > 0: - take = min(n, self.MAX_RAW_FRAMES_DECODE_BATCH) - batch = [self._inbox.popleft() for _ in range(take)] - if not batch: - if self._worker_stop.wait(0.003): - break - continue - rows = self._decode_batch_values(batch) - self._flush_rows_to_ring(rows) - - def _render_tick(self) -> None: - if not self._async_decode: - batch: List[Tuple[float, bytes]] = [] - with self._inbox_lock: - n = len(self._inbox) - if n > 0: - take = min(n, self.MAX_RAW_FRAMES_DECODE_BATCH) - batch = [self._inbox.popleft() for _ in range(take)] - if batch: - self._flush_rows_to_ring(self._decode_batch_values(batch)) - - with self._history_lock: - if not self._history: - return - t_newest = self._history[-1][0] - t_oldest = self._history[0][0] - t_play = self._playback_head_s(t_newest, t_oldest) - t_lo = t_play - self.WINDOW_S - xs: List[float] = [] - ycols: Optional[List[List[float]]] = None - for t_s, vals in self._history: - if t_s < t_lo: - continue - if t_s > t_play: - break - xs.append(t_s) - if ycols is None: - ycols = [[] for _ in range(len(vals))] - nc = len(ycols) - for i in range(nc): - v = float(vals[i]) if i < len(vals) else 0.0 - ycols[i].append(v) - - if not xs or ycols is None: - return - max_ch = len(ycols) - self._ensure_channels(max_ch) - t_arr0 = np.asarray(xs, dtype=np.float64) - t_arr = t_arr0 - float(t_arr0[0]) - - use_a = not self._ping_pong - self._ping_pong = not self._ping_pong - if use_a: - self._x_buf_a = t_arr - x_plot = self._x_buf_a - else: - self._x_buf_b = t_arr - x_plot = self._x_buf_b - - n = int(x_plot.shape[0]) - mp = self.MAX_DISPLAY_POINTS_PER_CURVE - y_for_peak: List[np.ndarray] = [] - for i in range(min(len(ycols), len(self._checkboxes))): - if self._checkboxes[i].isChecked(): - y_for_peak.append(np.asarray(ycols[i], dtype=np.float64)) - if n <= mp or not y_for_peak: - dec_idx: Optional[np.ndarray] = None - x_dec = x_plot - else: - dec_idx = decimation_indices_peak_union(y_for_peak, mp) - x_dec = x_plot[dec_idx] - - for i, curve in enumerate(self._curves): - if i >= len(ycols) or not self._checkboxes[i].isChecked(): - curve.setData([], []) - continue - y_arr = np.asarray(ycols[i], dtype=np.float64) - y_dec = y_arr if dec_idx is None else y_arr[dec_idx] - if use_a: - while len(self._y_bufs_a) <= i: - self._y_bufs_a.append(None) - self._y_bufs_a[i] = y_dec - else: - while len(self._y_bufs_b) <= i: - self._y_bufs_b.append(None) - self._y_bufs_b[i] = y_dec - curve.setData(x_dec, y_dec) - - x_up = rolling_plot_x_upper(x_dec, self.WINDOW_S) - self._plot.setXRange(0.0, x_up, padding=0) - - def _ensure_channels(self, n: int) -> None: - if n <= self._n_channels: - return - spacer = self._gutter_layout.takeAt(self._gutter_layout.count() - 1) - for idx in range(self._n_channels, n): - color = _CHANNEL_COLORS[idx % len(_CHANNEL_COLORS)] - cb = QCheckBox(f"ch{idx}") - cb.setChecked(False) - cb.setStyleSheet( - f"QCheckBox {{ color: {color}; font-family: monospace; " - f"font-weight: bold; }}") - self._gutter_layout.addWidget(cb) - self._checkboxes.append(cb) - curve = self._plot.plot( - pen=pg.mkPen(color=QColor(color), width=2)) - configure_dynamic_curve(curve) - self._curves.append(curve) - if spacer is not None and spacer.spacerItem() is not None: - self._gutter_layout.addItem(spacer) - else: - self._gutter_layout.addStretch(1) - self._n_channels = n - - def poll(self) -> None: - pass diff --git a/tools/espfoc_studio/gui/sensors_debug_panel.py b/tools/espfoc_studio/gui/sensors_debug_panel.py deleted file mode 100644 index 61230f11..00000000 --- a/tools/espfoc_studio/gui/sensors_debug_panel.py +++ /dev/null @@ -1,452 +0,0 @@ -"""Sensors: Q16 raw readout, engineering value, and rolling subplots for -SCOPE channels 6..11 (tuner_studio_target wire convention). X-axis uses the -same 2 s rolling window as the main Scope view.""" - -from __future__ import annotations - -import math -import threading -import time -from collections import deque -from dataclasses import dataclass -from typing import Deque, List, Optional, Tuple - -import numpy as np -import pyqtgraph as pg -from PySide6.QtCore import Qt, QTimer -from PySide6.QtGui import QColor -from PySide6.QtWidgets import ( - QCheckBox, - QFormLayout, - QFrame, - QHBoxLayout, - QLabel, - QLineEdit, - QScrollArea, - QSpinBox, - QVBoxLayout, - QWidget, -) - -from ..link import LinkReader -from ..link.scope_sample import decode_scope_payload_to_floats_csv_first -from .crosshair import attach_crosshair -from .plot_display import ( - configure_dynamic_curve, - configure_rolling_time_xaxis, - decimation_indices_peak_union, - rolling_plot_x_upper, -) -from .scope_panel import ScopePanel -from .scope_stream_timing import scope_uniform_dt_s - -SENSOR_CH_FIRST = 6 -SENSOR_N = 6 -HOT_PATH_US_CH = 12 -WINDOW_S = ScopePanel.WINDOW_S -BUFFER_CAP = ScopePanel.BUFFER_CAP -INBOX_CAP = ScopePanel.INBOX_CAP -MAX_PENDING_DECODED = ScopePanel.MAX_PENDING_DECODED -MAX_MERGE_SAMPLES_PER_TICK = ScopePanel.MAX_MERGE_SAMPLES_PER_TICK -MAX_RAW_FRAMES_DECODE_BATCH = ScopePanel.MAX_RAW_FRAMES_DECODE_BATCH -# Six stacked PlotWidgets: modest UI rate; full-rate merge stays in deques. -SENSORS_RENDER_INTERVAL_MS = 55 -STRIP_DISPLAY_MAX_POINTS = 800 -# Tall strip chart; scroll the page to see numeric readouts below. -PLOT_MIN_HEIGHT = 220 - - -def _float_to_q16_int(f: float) -> int: - v = f * 65536.0 - vi = int(round(v)) - if vi > 0x7FFFFFFF: - return 0x7FFFFFFF - if vi < -0x80000000: - return -0x80000000 - return vi - - -def _wrap_counts(ch_f: float, cpr: int) -> float: - """Scope float for ch6 == engineering encoder counts (same as q16/65536).""" - if cpr <= 0: - cpr = 1 - cf = float(cpr) - x = ch_f % cf - if x < 0.0: - x += cf - return x - - -def _eng_text(row: int, ch_f: float, cpr: int) -> str: - if cpr <= 0: - cpr = 1 - if row == 0: - cnt = _wrap_counts(ch_f, cpr) - deg = (cnt / float(cpr)) * 360.0 - return ( - f"θ_m = {deg:+.2f}° ({cnt:.1f} counts / {cpr}, " - f"q16 engineering counts)" - ) - if row == 1: - cps = ch_f - rev_s = cps / float(cpr) - rpm_m = rev_s * 60.0 - w_mech = rev_s * (2.0 * math.pi) - return ( - f"dθ/dt = {cps:+.2f} counts/s | {rev_s:+.6f} rev/s mech | " - f"{rpm_m:+.2f} rpm mech | ω_mech = {w_mech:+.4f} rad/s" - ) - return f"{ch_f:+.5f} A" - - -def _plot_y(row: int, f: float, cpr: int) -> float: - if cpr <= 0: - cpr = 1 - if row == 0: - cnt = _wrap_counts(f, cpr) - return (cnt / float(cpr)) * 360.0 - if row == 1: - return f - return f - - -@dataclass(frozen=True) -class _RowSpec: - title: str - - -def _all_specs() -> List[_RowSpec]: - return [ - _RowSpec("Encoder counts (ch6 → rotor_shaft_ticks)"), - _RowSpec("Velocity counts/s (ch7 → current_speed)"), - _RowSpec("Phase current I_U (ch8)"), - _RowSpec("Phase current I_V (ch9)"), - _RowSpec("Iα Clarke (ch10)"), - _RowSpec("Iβ Clarke (ch11)"), - ] - - -class SensorsDebugPanel(QWidget): - def __init__( - self, - reader: Optional[LinkReader] = None, - async_decode: bool = True) -> None: - super().__init__() - self._reader = reader - self._async_decode = async_decode - self._worker_stop = threading.Event() - self._inbox_lock = threading.Lock() - self._inbox: Deque[Tuple[float, bytes]] = deque(maxlen=INBOX_CAP) - self._pending_lock = threading.Lock() - self._pending_decoded: List[Tuple[float, Tuple[float, ...]]] = [] - self._decode_thread: Optional[threading.Thread] = None - self._t0 = time.monotonic() - self._uniform_dt_s = scope_uniform_dt_s(20000.0) - self._scope_synth_t = 0.0 - self._time_buf: Deque[float] = deque(maxlen=BUFFER_CAP) - self._plot_bufs: List[Deque[float]] = [ - deque(maxlen=BUFFER_CAP) for _ in range(SENSOR_N)] - self._eng_labels: List[QLabel] = [] - self._raw_fields: List[QLineEdit] = [] - self._trace_cbs: List[QCheckBox] = [] - self._curves: List[pg.PlotDataItem] = [] - self._plots: List[pg.PlotWidget] = [] - self._active = True - self._row_specs = _all_specs() - - root = QVBoxLayout(self) - intro = ( - f"Requires SCOPE stream with at least 12 fields (13 for hot-path µs). " - f"Ch{SENSOR_CH_FIRST}: encoder position as Q16 engineering counts " - f"(e.g. AS5600 0…4095); ch{SENSOR_CH_FIRST + 1}: Δcounts×sample rate [counts/s]. " - f"Set CPR below to convert to degrees / mech rpm. " - f"Ch{SENSOR_CH_FIRST + 2}…: currents; ch{HOT_PATH_US_CH}: FOC hot-path [µs]. " - f"Window: {WINDOW_S:.0f} s." - ) - l0 = QLabel(intro) - l0.setWordWrap(True) - l0.setStyleSheet("color: #9aa0a6; font-size: 11px;") - root.addWidget(l0) - - cpr_row = QHBoxLayout() - cpr_row.addWidget(QLabel("Encoder CPR (counts/rev)")) - self._cpr_spin = QSpinBox() - self._cpr_spin.setRange(1, 65536) - self._cpr_spin.setValue(4096) - self._cpr_spin.setToolTip( - "Must match firmware rotor sensor (AS5600: 4096, AS5048: 16384, …)." - ) - cpr_row.addWidget(self._cpr_spin) - cpr_row.addStretch(1) - root.addLayout(cpr_row) - - hp = QHBoxLayout() - hp.addWidget(QLabel("FOC hot path")) - self._hot_path_us = QLineEdit() - self._hot_path_us.setReadOnly(True) - self._hot_path_us.setPlaceholderText("—") - self._hot_path_us.setToolTip( - f"Last channel (ch {HOT_PATH_US_CH}): execution time of the FOC hot " - "path on the target (µs), from esp_foc_now_useconds().") - hp.addWidget(self._hot_path_us, 1) - root.addLayout(hp) - - scroll = QScrollArea() - scroll.setWidgetResizable(True) - body = QWidget() - col = QVBoxLayout(body) - for r in range(SENSOR_N): - col.addWidget(self._build_row(self._row_specs[r])) - col.addStretch(0) - scroll.setWidget(body) - root.addWidget(scroll, 1) - - self._render_timer = QTimer(self) - self._render_timer.setInterval(SENSORS_RENDER_INTERVAL_MS) - self._render_timer.timeout.connect(self._render_tick) - self._render_timer.start() - if reader is not None: - reader.register_scope_callback(self._on_frame_reader_thread) - if self._async_decode: - self._decode_thread = threading.Thread( - target=self._decode_worker_loop, - daemon=True, - name="espfoc-sensors-decode", - ) - self._decode_thread.start() - else: - self._decode_thread = None - - def closeEvent(self, event) -> None: - self._worker_stop.set() - if self._decode_thread is not None: - self._decode_thread.join(timeout=1.5) - super().closeEvent(event) - - def _build_row(self, sp: _RowSpec) -> QWidget: - fr = QFrame() - v_l = QVBoxLayout(fr) - head = QHBoxLayout() - title = QLabel(sp.title) - title.setStyleSheet("font-weight: 600;") - head.addWidget(title) - trace_cb = QCheckBox("Trace") - trace_cb.setChecked(True) - trace_cb.setToolTip( - "Rolling strip for this channel. Uncheck to save CPU.") - head.addWidget(trace_cb) - head.addStretch(1) - v_l.addLayout(head) - self._trace_cbs.append(trace_cb) - plot = pg.PlotWidget() - if "Encoder" in sp.title: - y_lab = "deg (from counts)" - elif "Velocity" in sp.title: - y_lab = "counts/s" - else: - y_lab = "A" - plot.setLabel("left", y_lab) - plot.setLabel("bottom", "time", units="s") - plot.showGrid(x=True, y=True, alpha=0.25) - plot.setMinimumHeight(PLOT_MIN_HEIGHT) - configure_rolling_time_xaxis(plot) - plot.setXRange(0.0, WINDOW_S, padding=0) - plot.enableAutoRange(axis="x", enable=False) - plot.enableAutoRange(axis="y", enable=True) - vb = plot.getViewBox() - vb.setMouseEnabled(x=False, y=True) - c = plot.plot(pen=pg.mkPen(QColor("#4fc3f7"), width=1.5)) - configure_dynamic_curve(c) - _ = attach_crosshair( - plot, fmt=lambda x, y: f"t = {x:.3f} s\ny = {y:+.5g}") - self._plots.append(plot) - self._curves.append(c) - v_l.addWidget(plot, 0) - form = QFormLayout() - r = QLineEdit() - r.setReadOnly(True) - r.setFixedWidth(220) - form.addRow("Raw (Q16 int32)", r) - e = QLabel("—") - e.setTextInteractionFlags( - Qt.TextSelectableByMouse | Qt.TextSelectableByKeyboard) - form.addRow("Value", e) - v_l.addLayout(form) - self._raw_fields.append(r) - self._eng_labels.append(e) - return fr - - def set_interactive(self, active: bool) -> None: - self._active = active - self.setEnabled(active) - - def set_uniform_sample_period_s(self, dt_s: float) -> None: - if dt_s > 1e-9: - self._uniform_dt_s = float(dt_s) - - def set_counts_per_rev(self, cpr: int) -> None: - """Set encoder counts-per-revolution hint for the synthetic plot (1…65536).""" - if cpr < 1: - cpr = 1 - if cpr > 65536: - cpr = 65536 - self._cpr_spin.setValue(cpr) - - def attach_reader(self, reader: LinkReader) -> None: - if self._reader is not None and self._reader is not reader: - try: - self._reader.unregister_scope_callback( - self._on_frame_reader_thread) - except ValueError: - pass - with self._inbox_lock: - self._inbox.clear() - with self._pending_lock: - self._pending_decoded.clear() - self._scope_synth_t = 0.0 - self._reader = reader - reader.register_scope_callback(self._on_frame_reader_thread) - - def _decode_raw_batch(self, batch: List[Tuple[float, bytes]]) -> None: - out: List[Tuple[float, Tuple[float, ...]]] = [] - for t_mono, payload in batch: - try: - values = decode_scope_payload_to_floats_csv_first(payload) - except ValueError: - continue - if not values: - continue - out.append((t_mono, tuple(values))) - if not out: - return - with self._pending_lock: - self._pending_decoded.extend(out) - while len(self._pending_decoded) > MAX_PENDING_DECODED: - del self._pending_decoded[: len(self._pending_decoded) // 2] - - def _decode_worker_loop(self) -> None: - while not self._worker_stop.is_set(): - batch: List[Tuple[float, bytes]] = [] - with self._inbox_lock: - n = len(self._inbox) - if n > 0: - take = min(n, MAX_RAW_FRAMES_DECODE_BATCH) - batch = [self._inbox.popleft() for _ in range(take)] - if not batch: - if self._worker_stop.wait(0.003): - break - continue - self._decode_raw_batch(batch) - - def _on_frame_reader_thread( - self, _c: int, _s: int, payload: bytes) -> None: - t_mono = time.monotonic() - with self._inbox_lock: - self._inbox.append((t_mono, payload)) - - def _render_tick(self) -> None: - if not self._async_decode: - batch: List[Tuple[float, bytes]] = [] - with self._inbox_lock: - n = len(self._inbox) - if n > 0: - take = min(n, MAX_RAW_FRAMES_DECODE_BATCH) - batch = [self._inbox.popleft() for _ in range(take)] - if batch: - self._decode_raw_batch(batch) - - chunk: List[Tuple[float, Tuple[float, ...]]] - with self._pending_lock: - chunk = self._pending_decoded - self._pending_decoded = [] - - cap = MAX_MERGE_SAMPLES_PER_TICK - if len(chunk) > cap: - chunk = chunk[-cap:] - - need = SENSOR_CH_FIRST + SENSOR_N - last_vals: Optional[Tuple[float, ...]] = None - for _t_mono, vals in chunk: - if len(vals) < need or not self._active: - continue - last_vals = vals - self._time_buf.append(self._scope_synth_t) - self._scope_synth_t += self._uniform_dt_s - cpr = self._cpr_spin.value() - for r in range(SENSOR_N): - f = vals[SENSOR_CH_FIRST + r] - self._plot_bufs[r].append(_plot_y(r, f, cpr)) - - if last_vals is not None and self._active: - cpr = self._cpr_spin.value() - for r in range(SENSOR_N): - f = last_vals[SENSOR_CH_FIRST + r] - self._raw_fields[r].setText(str(_float_to_q16_int(f))) - self._eng_labels[r].setText(_eng_text(r, f, cpr)) - if len(last_vals) > HOT_PATH_US_CH: - self._hot_path_us.setText( - f"{last_vals[HOT_PATH_US_CH]:.2f} µs") - else: - self._hot_path_us.clear() - self._hot_path_us.setPlaceholderText("—") - - while (self._time_buf - and (self._time_buf[-1] - self._time_buf[0] > WINDOW_S)): - self._time_buf.popleft() - for pb in self._plot_bufs: - if pb: - pb.popleft() - - if not self._active: - for p in self._plots: - p.setXRange(0.0, WINDOW_S, padding=0) - return - - if not self._time_buf: - for c in self._curves: - c.setData([], []) - for p in self._plots: - p.setXRange(0.0, WINDOW_S, padding=0) - return - - t_rels = np.fromiter( - self._time_buf, dtype=float, count=len(self._time_buf)) - t_arr = t_rels - float(t_rels[0]) - n = min(len(t_arr), min(len(b) for b in self._plot_bufs)) - if n <= 0: - for c in self._curves: - c.setData([], []) - for p in self._plots: - p.setXRange(0.0, WINDOW_S, padding=0) - return - t_arr = t_arr[-n:] - mp = STRIP_DISPLAY_MAX_POINTS - y_checked = [ - np.fromiter(list(self._plot_bufs[r])[-n:], dtype=float, count=n) - for r in range(len(self._curves)) - if self._trace_cbs[r].isChecked() - ] - if n <= mp: - strip_idx = None - t_d = t_arr - elif y_checked: - strip_idx = decimation_indices_peak_union(y_checked, mp) - t_d = t_arr[strip_idx] - else: - strip_idx = None - t_d = t_arr - for r, c in enumerate(self._curves): - if self._trace_cbs[r].isChecked(): - y = np.fromiter( - list(self._plot_bufs[r])[-n:], dtype=float, count=n) - y_d = y if strip_idx is None else y[strip_idx] - c.setData(t_d, y_d) - else: - c.setData([], []) - - x_up = rolling_plot_x_upper(t_d, WINDOW_S) - for p in self._plots: - p.setXRange(0.0, x_up, padding=0) - - def poll(self) -> None: - pass diff --git a/tools/espfoc_studio/tests/test_gui_smoke.py b/tools/espfoc_studio/tests/test_gui_smoke.py deleted file mode 100644 index d7324241..00000000 --- a/tools/espfoc_studio/tests/test_gui_smoke.py +++ /dev/null @@ -1,128 +0,0 @@ -#!/usr/bin/env python3 -"""Headless smoke tests for TunerStudio GUI pieces. - -QT_QPA_PLATFORM=offscreen keeps CI headless. - -Run: - QT_QPA_PLATFORM=offscreen PYTHONPATH=tools \\ - python3 tools/espfoc_studio/tests/test_gui_smoke.py -""" - -from __future__ import annotations - -import os -import sys -import time - -os.environ.setdefault("QT_QPA_PLATFORM", "offscreen") - -HERE = os.path.dirname(os.path.abspath(__file__)) -sys.path.insert(0, os.path.dirname(os.path.dirname(HERE))) - -from PySide6.QtWidgets import QApplication - -from espfoc_studio.link.scope_sample import pack_scope_i32_to_payload - - -def _scope_bin_32(*vals: float) -> bytes: - q = [int(round(f * 65536.0)) for f in vals] - return pack_scope_i32_to_payload(q) - - -def test_scope_panel_uniform_time_and_autoset(): - """X-axis advances by uniform_dt per frame (low-speed scope), even when - USB delivers a burst with identical wall timestamps.""" - from espfoc_studio.gui.scope_panel import ScopePanel - - app = QApplication.instance() or QApplication(sys.argv) - panel = ScopePanel(async_decode=False) - panel.set_uniform_sample_period_s(1e-3) - panel.set_display_lag_s(0.0) - n_inj = min(40, ScopePanel.MAX_MERGE_SAMPLES_PER_TICK - 1) - base = time.monotonic() - for _i in range(n_inj): - with panel._inbox_lock: - panel._inbox.append((base, _scope_bin_32(1.0, 2.0, 3.0))) - panel._render_tick() - assert panel._n_channels == 3 - with panel._history_lock: - hist = list(panel._history) - assert len(hist) == n_inj - times = [t for t, _ in hist] - span = times[-1] - times[0] - exp = (n_inj - 1) * 1e-3 - assert abs(span - exp) < 1e-9, f"span={span!r} expected {exp!r}" - for i in range(1, len(times)): - assert abs(times[i] - times[i - 1] - 1e-3) < 1e-12 - - panel.autoset() - with panel._history_lock: - assert len(panel._history) == 0 - with panel._inbox_lock: - panel._inbox.append((time.monotonic(), _scope_bin_32(4.0, 5.0, 6.0))) - panel._render_tick() - with panel._history_lock: - assert len(panel._history) == 1 - assert panel._history[0][0] == 0.0 - - -def test_scope_stream_timing_hw(): - from espfoc_studio.gui.scope_stream_timing import ( - LOW_SPEED_DOWNSAMPLING, - scope_uniform_dt_s, - ) - - dt_hw = scope_uniform_dt_s(20000.0) - assert abs(dt_hw - LOW_SPEED_DOWNSAMPLING / 20000.0) < 1e-15 - - -def test_scope_panel_roll_mode_x_axis_stays_bounded(): - """X is seconds within the visible window (0 = oldest on screen); - values stay in [0, WINDOW_S] even if the panel has been running - for a long time (t0 is not on the plot axis).""" - from espfoc_studio.gui.scope_panel import ScopePanel - - app = QApplication.instance() or QApplication(sys.argv) - panel = ScopePanel(async_decode=False) - panel._t0 = time.monotonic() - 3600.0 - with panel._inbox_lock: - panel._inbox.append((time.monotonic() - 0.010, _scope_bin_32(1.0, 2.0))) - panel._inbox.append(( - time.monotonic() - 0.005, _scope_bin_32(1.5, 2.5))) - panel._inbox.append((time.monotonic(), _scope_bin_32(2.0, 3.0))) - panel._render_tick() - assert panel._n_channels == 2 - panel._checkboxes[0].setChecked(True) - panel._render_tick() - x_data, _ = panel._curves[0].getData() - assert x_data is not None and len(x_data) == 3 - assert x_data[0] < 0.02, f"oldest sample at x={x_data[0]!r}, expected ~0" - assert x_data[-1] > x_data[0] - assert x_data[-1] < panel.WINDOW_S + 0.1, ( - f"newest x={x_data[-1]!r} past window") - assert min(x_data) >= -0.01, "X should be non-negative (time from t_oldest)" - - -def main() -> int: - tests = [ - test_scope_panel_uniform_time_and_autoset, - test_scope_stream_timing_hw, - test_scope_panel_roll_mode_x_axis_stays_bounded, - ] - failed = 0 - for t in tests: - try: - t() - print(f"OK {t.__name__}") - except Exception as e: - failed += 1 - print(f"FAIL {t.__name__}: {e}") - if failed: - print(f"\n{failed} test(s) failed", file=sys.stderr) - return 1 - print(f"\nAll {len(tests)} tests passed") - return 0 - - -if __name__ == "__main__": - sys.exit(main()) diff --git a/tools/espfoc_tool/README.md b/tools/espfoc_tool/README.md new file mode 100644 index 00000000..ed4130cc --- /dev/null +++ b/tools/espfoc_tool/README.md @@ -0,0 +1,42 @@ +# espFoC Tool (host) + +Desktop control GUI and CLI for espFoC targets over the link/tuner protocol. + +## Install + +```bash +pip install -r tools/espfoc_tool/requirements.txt +``` + +## GUI + +```bash +PYTHONPATH=tools python3 -m espfoc_tool.gui +``` + +Options: `--port` (skip USB scan), `--baud`, `--axis`, `--no-gl`, `--scope-csv`. + +## CLI + +```bash +PYTHONPATH=tools python3 -m espfoc_tool.cli.espfocctl --port /dev/ttyACM0 -i +``` + +## Layout + +- `link/` — framing, serial transport, scope decode +- `protocol/` — `TunerClient` (shared by GUI and CLI) +- `client/` — stable import alias `EspFocClient` +- `model/` — MPZ / Bode analysis (numpy) +- `gui/` — espFoC Tool views +- `cli/espfocctl.py` — scripted control + +## Tests + +```bash +QT_QPA_PLATFORM=offscreen ESPFOC_TOOL_NO_GL=1 PYTHONPATH=tools \ + python3 tools/espfoc_tool/tests/test_gui_smoke.py +pytest tools/espfoc_tool/tests/ +``` + +`FakeTunerLoopback` is for unit tests only (not exposed in the GUI). diff --git a/tools/espfoc_tool/__init__.py b/tools/espfoc_tool/__init__.py new file mode 100644 index 00000000..04347204 --- /dev/null +++ b/tools/espfoc_tool/__init__.py @@ -0,0 +1,3 @@ +"""espFoC Tool — host-side GUI and CLI for motor control.""" + +__version__ = "0.1.0" diff --git a/tools/espfoc_studio/cli/__init__.py b/tools/espfoc_tool/cli/__init__.py similarity index 100% rename from tools/espfoc_studio/cli/__init__.py rename to tools/espfoc_tool/cli/__init__.py diff --git a/tools/espfoc_studio/cli/tunerctl.py b/tools/espfoc_tool/cli/espfocctl.py similarity index 91% rename from tools/espfoc_studio/cli/tunerctl.py rename to tools/espfoc_tool/cli/espfocctl.py index 24548318..a764d308 100644 --- a/tools/espfoc_studio/cli/tunerctl.py +++ b/tools/espfoc_tool/cli/espfocctl.py @@ -1,8 +1,8 @@ #!/usr/bin/env python3 -"""tunerctl — interactive espFoC tuner client (protocol v2). +"""espfocctl — interactive espFoC device client (protocol v2). Opens one serial session, runs connect, then accepts subcommands on stdin. -One-shot mode: ``tunerctl --port DEV align`` → connect → align → disconnect. +One-shot: ``espfocctl --port DEV align`` → connect → align → disconnect. """ from __future__ import annotations @@ -55,6 +55,7 @@ def __init__(self, cli: TunerClient) -> None: "scope-stop": self._cmd_scope_stop, "cutoff": self._cmd_cutoff, "firmware-type": self._cmd_firmware_type, + "estop": self._cmd_estop, "quit": self._cmd_quit, "exit": self._cmd_quit, } @@ -62,7 +63,7 @@ def __init__(self, cli: TunerClient) -> None: def _cmd_help(self, _args: list[str]) -> int: print("commands: connect disconnect status read write align run stop " "store erase set-target scope-start scope-stop cutoff " - "firmware-type quit") + "firmware-type estop quit") return 0 def _cmd_connect(self, _args: list[str]) -> int: @@ -185,6 +186,13 @@ def _cmd_firmware_type(self, _args: list[str]) -> int: print(f"firmware_type = 0x{fw:08x} (\"{fourcc}\")") return 0 + def _cmd_estop(self, _args: list[str]) -> int: + self.cli.write_target_id(0.0) + self.cli.write_target_iq(0.0) + self.cli.stop_axis() + print("estop: id/iq=0, axis stopped, inverter disabled") + return 0 + def _cmd_quit(self, _args: list[str]) -> int: return 130 @@ -205,7 +213,7 @@ def run_line(self, line: str) -> int: return handler(parts[1:]) def repl(self) -> int: - print("tunerctl interactive — type 'help' or 'quit'") + print("espfocctl interactive — type 'help' or 'quit'") while True: try: line = input("espfoc> ") @@ -223,7 +231,7 @@ def _one_shot(cli: TunerClient, cmd: str, cmd_args: list[str]) -> int: try: cli.connect() except TunerError as e: - print(f"tunerctl: connect failed: {e}", file=sys.stderr) + print(f"espfocctl: connect failed: {e}", file=sys.stderr) return 1 try: return shell.run_line(" ".join([cmd] + cmd_args)) @@ -235,7 +243,7 @@ def _one_shot(cli: TunerClient, cmd: str, cmd_args: list[str]) -> int: def build_parser() -> argparse.ArgumentParser: - p = argparse.ArgumentParser(prog="tunerctl") + p = argparse.ArgumentParser(prog="espfocctl") p.add_argument("--port", help="serial port (required except -h)") p.add_argument("--baud", type=int, default=921600) p.add_argument("--axis", type=int, default=0) @@ -260,7 +268,7 @@ def main(argv: Optional[list[str]] = None) -> int: try: shell._cmd_connect([]) except TunerError as e: - print(f"tunerctl: connect failed: {e}", file=sys.stderr) + print(f"espfocctl: connect failed: {e}", file=sys.stderr) return 1 try: return shell.repl() @@ -271,7 +279,7 @@ def main(argv: Optional[list[str]] = None) -> int: pass return _one_shot(cli, args.command[0], args.command[1:]) except TunerError as e: - print(f"tunerctl: {e}", file=sys.stderr) + print(f"espfocctl: {e}", file=sys.stderr) return 1 finally: cli.close() diff --git a/tools/espfoc_tool/client/__init__.py b/tools/espfoc_tool/client/__init__.py new file mode 100644 index 00000000..7d252376 --- /dev/null +++ b/tools/espfoc_tool/client/__init__.py @@ -0,0 +1,17 @@ +"""Host-side device API shared by espFoC Tool GUI and espfocctl.""" + +from ..protocol import TunerClient, TunerError, AxisStateFlag, ParamId, Op +from ..protocol.tuner import ConnectInfo, TUNER_FIRMWARE_TYPE_TSGX + +EspFocClient = TunerClient + +__all__ = [ + "EspFocClient", + "TunerClient", + "TunerError", + "AxisStateFlag", + "ParamId", + "Op", + "ConnectInfo", + "TUNER_FIRMWARE_TYPE_TSGX", +] diff --git a/tools/espfoc_studio/fake_tuner_loopback.py b/tools/espfoc_tool/fake_tuner_loopback.py similarity index 100% rename from tools/espfoc_studio/fake_tuner_loopback.py rename to tools/espfoc_tool/fake_tuner_loopback.py diff --git a/tools/espfoc_tool/gui/__init__.py b/tools/espfoc_tool/gui/__init__.py new file mode 100644 index 00000000..a22eef56 --- /dev/null +++ b/tools/espfoc_tool/gui/__init__.py @@ -0,0 +1,6 @@ +"""espfoc_tool.gui — PySide6 + pyqtgraph front-end for the tuner. + +Run with: + + PYTHONPATH=tools python3 -m espfoc_tool.gui --port /dev/ttyACM0 +""" diff --git a/tools/espfoc_tool/gui/__main__.py b/tools/espfoc_tool/gui/__main__.py new file mode 100644 index 00000000..eed00d6a --- /dev/null +++ b/tools/espfoc_tool/gui/__main__.py @@ -0,0 +1,65 @@ +"""Entry point: ``python -m espfoc_tool.gui``.""" + +from __future__ import annotations + +import argparse +import os +import signal +import sys +from typing import Optional + +from .app import create_application +from .connection_manager import ConnectionManager +from .main_window import MainWindow + + +def _parse_args(argv: Optional[list[str]] = None) -> argparse.Namespace: + p = argparse.ArgumentParser( + prog="python -m espfoc_tool.gui", + description="espFoC Tool — motor control GUI (optional --port).", + ) + p.add_argument( + "--port", + default=None, + help="serial port (e.g. /dev/ttyACM0); omit to auto-scan USB", + ) + p.add_argument("--baud", type=int, default=921600) + p.add_argument("--axis", type=int, default=0) + p.add_argument( + "--no-gl", + action="store_true", + help="disable OpenGL plot rendering", + ) + p.add_argument( + "--scope-csv", + action="store_true", + help="legacy SCOPE CSV decode (CONFIG_ESP_FOC_SCOPE_LEGACY_CSV)", + ) + return p.parse_args(argv) + + +def main(argv: Optional[list[str]] = None) -> int: + args = _parse_args(argv) + if args.no_gl: + os.environ["ESPFOC_TOOL_NO_GL"] = "1" + if args.scope_csv: + os.environ["ESPFOC_TOOL_SCOPE_CSV"] = "1" + + from PySide6.QtCore import QTimer + + app = create_application() + conn = ConnectionManager( + baud=args.baud, axis=args.axis, fixed_port=args.port) + window = MainWindow(conn, title="espFoC Tool") + window.show() + + signal.signal(signal.SIGINT, lambda *_: app.quit()) + tick = QTimer() + tick.start(200) + tick.timeout.connect(lambda: None) + + return app.exec() + + +if __name__ == "__main__": + sys.exit(main()) diff --git a/tools/espfoc_studio/gui/alignment_progress.py b/tools/espfoc_tool/gui/alignment_progress.py similarity index 100% rename from tools/espfoc_studio/gui/alignment_progress.py rename to tools/espfoc_tool/gui/alignment_progress.py diff --git a/tools/espfoc_studio/gui/analysis_panel.py b/tools/espfoc_tool/gui/analysis_panel.py similarity index 85% rename from tools/espfoc_studio/gui/analysis_panel.py rename to tools/espfoc_tool/gui/analysis_panel.py index 5d5509e0..1e14ae4e 100644 --- a/tools/espfoc_studio/gui/analysis_panel.py +++ b/tools/espfoc_tool/gui/analysis_panel.py @@ -10,6 +10,8 @@ from PySide6.QtWidgets import ( QFormLayout, QGridLayout, + QHBoxLayout, + QPushButton, QSpinBox, QVBoxLayout, QWidget, @@ -19,6 +21,7 @@ MotorParams, PiGains, bode, + mpz_design, pole_zero_map, root_locus, step_response, @@ -35,6 +38,9 @@ class AnalysisPanel(QWidget): def __init__(self, client: Optional[TunerClient] = None) -> None: super().__init__() self._client = client + self._last_r = 1.08 + self._last_l = 0.0018 + self._last_bw = 150.0 pg.setConfigOptions(antialias=True) root = QVBoxLayout(self) @@ -115,9 +121,44 @@ def __init__(self, client: Optional[TunerClient] = None) -> None: grid.addWidget(self._pz_plot, 1, 0) grid.addWidget(self._rl_plot, 1, 1) + btn_row = QHBoxLayout() + self._apply_mpz_btn = QPushButton("Apply MPZ to RAM") + self._apply_mpz_btn.clicked.connect(self._on_apply_mpz) + self._save_nvs_btn = QPushButton("Save to NVS") + self._save_nvs_btn.clicked.connect(self._on_save_nvs) + btn_row.addWidget(self._apply_mpz_btn) + btn_row.addWidget(self._save_nvs_btn) + btn_row.addStretch(1) + root.addLayout(btn_row) + + def _on_apply_mpz(self) -> None: + if self._client is None: + return + try: + motor = MotorParams( + r_ohm=self._last_r, l_h=self._last_l, + ts_s=self._ts_s(), v_max=12.0) + gains = mpz_design(motor, self._last_bw) + self._client.write_kp(gains.kp) + self._client.write_ki(gains.ki) + self._client.write_int_lim(gains.int_lim) + except (TunerError, ValueError) as e: + return + + def _on_save_nvs(self) -> None: + if self._client is None: + return + try: + self._client.store_calibration() + except TunerError: + return + def update_model(self, motor_r: float, motor_l: float, bw_hz: float, kp: float, ki: float) -> None: """Re-render everything for the given operating point.""" + self._last_r = motor_r + self._last_l = motor_l + self._last_bw = bw_hz try: motor = MotorParams(r_ohm=motor_r, l_h=motor_l, ts_s=self._ts_s(), v_max=12.0) diff --git a/tools/espfoc_tool/gui/app.py b/tools/espfoc_tool/gui/app.py new file mode 100644 index 00000000..70fd4b44 --- /dev/null +++ b/tools/espfoc_tool/gui/app.py @@ -0,0 +1,38 @@ +"""Qt application bootstrap: theme, OpenGL plots, optional GPU opt-out.""" + +from __future__ import annotations + +import os +import sys + +import pyqtgraph as pg +from PySide6.QtCore import Qt +from PySide6.QtGui import QSurfaceFormat +from PySide6.QtWidgets import QApplication + +from .theme import apply_dark_theme + + +def graphics_disabled() -> bool: + v = os.environ.get("ESPFOC_TOOL_NO_GL", "").strip().lower() + return v in ("1", "true", "yes", "on") + + +def configure_graphics() -> None: + if graphics_disabled(): + pg.setConfigOptions(useOpenGL=False) + return + QApplication.setAttribute(Qt.ApplicationAttribute.AA_UseDesktopOpenGL, True) + fmt = QSurfaceFormat() + fmt.setSamples(4) + QSurfaceFormat.setDefaultFormat(fmt) + pg.setConfigOptions(useOpenGL=True) + + +def create_application(argv: list[str] | None = None) -> QApplication: + app = QApplication.instance() + if app is None: + app = QApplication(argv if argv is not None else sys.argv) + configure_graphics() + apply_dark_theme(app) + return app diff --git a/tools/espfoc_tool/gui/connection_manager.py b/tools/espfoc_tool/gui/connection_manager.py new file mode 100644 index 00000000..bf03661b --- /dev/null +++ b/tools/espfoc_tool/gui/connection_manager.py @@ -0,0 +1,182 @@ +"""USB discovery and serial session lifecycle for espFoC Tool.""" + +from __future__ import annotations + +import time +from typing import Callable, Optional + +from PySide6.QtCore import QObject, QTimer, Signal + +from ..link import LinkReader +from ..link.transport_serial import SerialTransport +from ..protocol import TunerClient, TunerError +from ..protocol.tuner import TUNER_FIRMWARE_TYPE_TSGX + +SCAN_INTERVAL_MS = 2000 +CONNECT_PROBE_TIMEOUT_S = 0.35 + + +def list_candidate_ports() -> list[str]: + try: + from serial.tools import list_ports + except ImportError: + return [] + out: list[str] = [] + for info in list_ports.comports(): + dev = info.device + if not dev: + continue + desc = (info.description or "").lower() + if "bluetooth" in desc: + continue + out.append(dev) + return out + + +def probe_port(port: str, baud: int, axis: int) -> Optional[TunerClient]: + """Try CONNECT on *port*; return a live client or None.""" + transport: Optional[SerialTransport] = None + reader: Optional[LinkReader] = None + try: + transport = SerialTransport(port=port, baud=baud) + reader = LinkReader(transport) + reader.start() + client = TunerClient(reader, axis=axis) + info = client.connect(timeout=CONNECT_PROBE_TIMEOUT_S) + if info.firmware_type != TUNER_FIRMWARE_TYPE_TSGX: + client.disconnect() + return None + return client + except (TunerError, OSError, Exception): + if reader is not None: + try: + reader.stop() + except Exception: + pass + if transport is not None: + try: + transport.close() + except Exception: + pass + return None + + +class ConnectionManager(QObject): + """Background scan when offline; holds the active :class:`TunerClient`.""" + + state_changed = Signal(str) + client_ready = Signal(object) + client_lost = Signal() + port_descr_changed = Signal(str) + + STATE_NO_DEVICE = "NO_DEVICE" + STATE_SCANNING = "SCANNING" + STATE_CONNECTING = "CONNECTING" + STATE_CONNECTED = "CONNECTED" + + def __init__( + self, + baud: int = 921600, + axis: int = 0, + fixed_port: Optional[str] = None, + parent: QObject | None = None, + ) -> None: + super().__init__(parent) + self._baud = baud + self._axis = axis + self._fixed_port = fixed_port + self._client: Optional[TunerClient] = None + self._state = self.STATE_NO_DEVICE + self._scan_timer = QTimer(self) + self._scan_timer.setInterval(SCAN_INTERVAL_MS) + self._scan_timer.timeout.connect(self._on_scan_tick) + self._busy = False + + @property + def client(self) -> Optional[TunerClient]: + return self._client + + @property + def connected(self) -> bool: + return self._client is not None + + @property + def state(self) -> str: + return self._state + + def start(self) -> None: + if self._fixed_port: + self._set_state(self.STATE_CONNECTING) + self.port_descr_changed.emit( + f"{self._fixed_port} @ {self._baud}") + self._try_open(self._fixed_port) + return + self._set_state(self.STATE_SCANNING) + self.port_descr_changed.emit("Scanning USB…") + self._scan_timer.start() + self._on_scan_tick() + + def stop(self) -> None: + self._scan_timer.stop() + self._release_client() + + def _set_state(self, state: str) -> None: + if self._state == state: + return + self._state = state + self.state_changed.emit(state) + + def _release_client(self) -> None: + if self._client is None: + return + try: + self._client.disconnect() + except Exception: + pass + try: + self._client.reader.stop() + except Exception: + pass + self._client = None + self.client_lost.emit() + self._set_state(self.STATE_NO_DEVICE) + + def _try_open(self, port: str) -> bool: + if self._busy: + return False + self._busy = True + try: + if self._client is not None: + return True + self._set_state(self.STATE_CONNECTING) + client = probe_port(port, self._baud, self._axis) + if client is None: + return False + self._client = client + self._set_state(self.STATE_CONNECTED) + self.port_descr_changed.emit(f"{port} @ {self._baud}") + self.client_ready.emit(client) + self._scan_timer.stop() + return True + finally: + self._busy = False + + def _on_scan_tick(self) -> None: + if self._fixed_port or self._client is not None or self._busy: + return + ports = list_candidate_ports() + if not ports: + self._set_state(self.STATE_SCANNING) + self.port_descr_changed.emit("No USB serial device") + return + self._set_state(self.STATE_SCANNING) + for port in ports: + if self._try_open(port): + return + self.port_descr_changed.emit( + f"Scanning ({len(ports)} port(s))…") + + def replace_client_reader(self, setup: Callable[[TunerClient], None]) -> None: + """After serial reconnect, *setup* rebinds scope subscribers.""" + if self._client is not None: + setup(self._client) diff --git a/tools/espfoc_tool/gui/control_rail.py b/tools/espfoc_tool/gui/control_rail.py new file mode 100644 index 00000000..544aa675 --- /dev/null +++ b/tools/espfoc_tool/gui/control_rail.py @@ -0,0 +1,244 @@ +"""Control view sidebar: id/iq targets, align, E-stop.""" + +from __future__ import annotations + +from typing import Callable, Optional + +from PySide6.QtCore import Qt, QThread, Signal +from PySide6.QtWidgets import ( + QCheckBox, + QDoubleSpinBox, + QFormLayout, + QGroupBox, + QHBoxLayout, + QLabel, + QPushButton, + QVBoxLayout, + QWidget, +) + +from ..protocol import TunerClient, TunerError +from .alignment_progress import AlignmentProgressDialog +from .theme import make_estop_button_qss + + +def _spin(minimum: float, maximum: float, decimals: int, value: float, + step: float = 0.1, suffix: str = "") -> QDoubleSpinBox: + box = QDoubleSpinBox() + box.setRange(minimum, maximum) + box.setDecimals(decimals) + box.setSingleStep(step) + box.setValue(value) + if suffix: + box.setSuffix(suffix) + box.setMinimumWidth(140) + return box + + +class _AlignThread(QThread): + success = Signal() + failed = Signal(str) + + def __init__(self, client: TunerClient, parent=None) -> None: + super().__init__(parent) + self._client = client + + def run(self) -> None: # noqa: N802 + try: + self._client.align_axis() + except TunerError as e: + self.failed.emit(str(e)) + else: + self.success.emit() + + +class ControlRail(QWidget): + long_operation = Signal(bool) + + def __init__( + self, + client: Optional[TunerClient], + connected: Callable[[], bool], + parent: QWidget | None = None, + ) -> None: + super().__init__(parent) + self._client = client + self._connected = connected + self._align_thread: Optional[_AlignThread] = None + self._align_progress: Optional[AlignmentProgressDialog] = None + + root = QVBoxLayout(self) + root.setContentsMargins(8, 8, 8, 8) + + motion = QGroupBox("Motion") + mform = QFormLayout(motion) + self._override_box = QCheckBox("Override active") + self._override_box.toggled.connect(self._on_override_toggled) + mform.addRow(self._override_box) + + self._id_spin = _spin(-50.0, 50.0, 4, 0.0, step=0.1, suffix=" A") + self._iq_spin = _spin(-50.0, 50.0, 4, 0.0, step=0.1, suffix=" A") + self._id_spin.setEnabled(False) + self._iq_spin.setEnabled(False) + mform.addRow("id ref", self._id_spin) + mform.addRow("iq ref", self._iq_spin) + + id_row = QHBoxLayout() + for label, delta in (("id −", -0.1), ("id 0", None), ("id +", 0.1)): + b = QPushButton(label) + b.clicked.connect( + lambda _c=False, d=delta, s=self._id_spin: self._nudge(s, d)) + id_row.addWidget(b) + mform.addRow(id_row) + + iq_row = QHBoxLayout() + for label, delta in (("iq −", -0.1), ("iq 0", None), ("iq +", 0.1)): + b = QPushButton(label) + b.clicked.connect( + lambda _c=False, d=delta, s=self._iq_spin: self._nudge(s, d)) + iq_row.addWidget(b) + mform.addRow(iq_row) + + self._id_spin.valueChanged.connect(self._on_id_changed) + self._iq_spin.valueChanged.connect(self._on_iq_changed) + root.addWidget(motion) + + align = QGroupBox("Alignment") + al = QVBoxLayout(align) + self._align_btn = QPushButton("Align axis") + self._align_btn.clicked.connect(self._on_align) + al.addWidget(self._align_btn) + root.addWidget(align) + + self._estop_btn = QPushButton("E-STOP") + self._estop_btn.setStyleSheet(make_estop_button_qss()) + self._estop_btn.setCursor(Qt.PointingHandCursor) + self._estop_btn.clicked.connect(self._on_estop) + root.addWidget(self._estop_btn) + + self._status = QLabel("") + self._status.setStyleSheet("color: #ef5350;") + root.addWidget(self._status) + root.addStretch(1) + + self.set_actions_enabled(False) + + def set_client(self, client: Optional[TunerClient]) -> None: + self._client = client + + def set_actions_enabled(self, on: bool) -> None: + for w in ( + self._override_box, + self._id_spin, + self._iq_spin, + self._align_btn, + self._estop_btn, + ): + w.setEnabled(on) + for btn in self.findChildren(QPushButton): + if btn is not self._estop_btn: + btn.setEnabled(on) + + def apply_override_state(self, active: bool) -> None: + self._override_box.blockSignals(True) + self._override_box.setChecked(active) + self._override_box.blockSignals(False) + self._id_spin.setEnabled(active and self._connected()) + self._iq_spin.setEnabled(active and self._connected()) + + @staticmethod + def _nudge(spin: QDoubleSpinBox, delta: Optional[float]) -> None: + if delta is None: + spin.setValue(0.0) + else: + spin.setValue(spin.value() + delta) + + def _require_client(self) -> Optional[TunerClient]: + if not self._connected() or self._client is None: + self._status.setText("Connect a board to run this action.") + return None + self._status.setText("") + return self._client + + def _on_override_toggled(self, on: bool) -> None: + cli = self._require_client() + if cli is None: + self._override_box.blockSignals(True) + self._override_box.setChecked(False) + self._override_box.blockSignals(False) + return + try: + if on: + cli.run_axis() + else: + cli.stop_axis() + except TunerError as e: + self._status.setText(str(e)) + self._override_box.blockSignals(True) + self._override_box.setChecked(not on) + self._override_box.blockSignals(False) + return + self._id_spin.setEnabled(on) + self._iq_spin.setEnabled(on) + + def _on_id_changed(self, v: float) -> None: + cli = self._require_client() + if cli is None: + return + try: + cli.write_target_id(v) + except TunerError as e: + self._status.setText(str(e)) + + def _on_iq_changed(self, v: float) -> None: + cli = self._require_client() + if cli is None: + return + try: + cli.write_target_iq(v) + except TunerError as e: + self._status.setText(str(e)) + + def _on_align(self) -> None: + cli = self._require_client() + if cli is None: + return + self.long_operation.emit(True) + self._align_progress = AlignmentProgressDialog(self) + self._align_progress.show() + self._align_thread = _AlignThread(cli, self) + self._align_thread.success.connect(self._on_align_done) + self._align_thread.failed.connect(self._on_align_failed) + self._align_thread.finished.connect(self._align_thread.deleteLater) + self._align_thread.start() + + def _on_align_done(self) -> None: + if self._align_progress is not None: + self._align_progress.accept() + self._align_progress = None + self.long_operation.emit(False) + + def _on_align_failed(self, msg: str) -> None: + if self._align_progress is not None: + self._align_progress.reject() + self._align_progress = None + self._status.setText(msg) + self.long_operation.emit(False) + + def _on_estop(self) -> None: + cli = self._require_client() + if cli is None: + return + try: + cli.write_target_id(0.0) + cli.write_target_iq(0.0) + cli.stop_axis() + self._override_box.blockSignals(True) + self._override_box.setChecked(False) + self._override_box.blockSignals(False) + self._id_spin.setValue(0.0) + self._iq_spin.setValue(0.0) + self._id_spin.setEnabled(False) + self._iq_spin.setEnabled(False) + except TunerError as e: + self._status.setText(str(e)) diff --git a/tools/espfoc_studio/gui/crosshair.py b/tools/espfoc_tool/gui/crosshair.py similarity index 100% rename from tools/espfoc_studio/gui/crosshair.py rename to tools/espfoc_tool/gui/crosshair.py diff --git a/tools/espfoc_tool/gui/main_window.py b/tools/espfoc_tool/gui/main_window.py new file mode 100644 index 00000000..3e55a4ab --- /dev/null +++ b/tools/espfoc_tool/gui/main_window.py @@ -0,0 +1,306 @@ +"""espFoC Tool main window: nav rail + four views, optional USB auto-connect.""" + +from __future__ import annotations + +import time +from typing import Optional, Tuple + +from PySide6.QtCore import QMetaObject, Qt, QThread, QTimer +from PySide6.QtWidgets import ( + QHBoxLayout, + QLabel, + QMessageBox, + QMainWindow, + QPushButton, + QSplitter, + QStackedWidget, + QSizePolicy, + QWidget, +) + +from ..link import LinkReader +from ..protocol import TunerClient, TunerError +from .analysis_panel import AnalysisPanel +from .connection_manager import ConnectionManager +from .control_rail import ControlRail +from .nav_rail import NavRail +from .scope_stream_timing import scope_uniform_dt_s +from .states_panel import StatesPanel +from .svm_panel import SvmPanel +from .theme import make_badge_qss, make_reset_board_button_qss +from .tuning_panel import TuningPanel +from .tuner_poll_worker import TunerPollSnapshot, TunerPollWorker + +_LINK_DOWN_AFTER_CONSECUTIVE_PING_FAILS = 10 + + +class MainWindow(QMainWindow): + def __init__( + self, + conn: ConnectionManager, + title: str = "espFoC Tool", + ) -> None: + super().__init__() + self._conn = conn + self._client: Optional[TunerClient] = None + self._serial_config: Optional[Tuple[str, int, int]] = None + self._link_ping_seen = False + self._ping_fail_streak = 0 + self._last_reconnect_mono = 0.0 + + self.setWindowTitle(title) + self.resize(1320, 900) + self.setMinimumSize(1080, 720) + + central = QWidget() + self.setCentralWidget(central) + outer = QHBoxLayout(central) + outer.setContentsMargins(0, 0, 0, 0) + outer.setSpacing(0) + + self._nav = NavRail() + outer.addWidget(self._nav) + + self._stack = QStackedWidget() + self._nav.page_selected.connect(self._stack.setCurrentIndex) + outer.addWidget(self._stack, 1) + + self._analysis = AnalysisPanel(client=None) + self._analysis_debounce = QTimer(self) + self._analysis_debounce.setSingleShot(True) + self._analysis_debounce.setInterval(150) + self._analysis_debounce.timeout.connect(self._run_pending_analysis) + self._analysis_pending = None + + self._tuning = TuningPanel( + client=None, on_params_changed=self._on_params) + self._control = ControlRail( + client=None, connected=self._device_connected) + self._svm = SvmPanel(reader=None) + self._states = StatesPanel(reader=None) + + self._stack.addWidget(self._wrap_margin(self._tuning)) + self._stack.addWidget(self._wrap_margin(self._analysis)) + ctrl = QWidget() + cs = QHBoxLayout(ctrl) + cs.setContentsMargins(0, 0, 0, 0) + split = QSplitter(Qt.Horizontal) + split.addWidget(self._control) + split.addWidget(self._svm) + split.setStretchFactor(0, 0) + split.setStretchFactor(1, 1) + split.setSizes([320, 900]) + cs.addWidget(split) + self._stack.addWidget(ctrl) + self._stack.addWidget(self._states) + + sb = self.statusBar() + self._link_badge = QLabel() + self._link_badge.setSizePolicy( + QSizePolicy.Minimum, QSizePolicy.Fixed) + self._link_descr = QLabel() + self._link_descr.setStyleSheet("color: #9aa0a6; font-size: 12px;") + self._reset_btn = QPushButton("RESET BOARD") + self._reset_btn.setStyleSheet(make_reset_board_button_qss()) + self._reset_btn.clicked.connect(self._on_reset_board_clicked) + sb.addPermanentWidget(self._link_badge) + sb.addPermanentWidget(self._reset_btn) + sb.addPermanentWidget(self._link_descr) + + self._poll_thread: Optional[QThread] = None + self._poll_worker: Optional[TunerPollWorker] = None + + self._conn.state_changed.connect(self._on_conn_state) + self._conn.port_descr_changed.connect(self._link_descr.setText) + self._conn.client_ready.connect(self._on_client_ready) + self._conn.client_lost.connect(self._on_client_lost) + + self._control.long_operation.connect(self._set_poll_paused) + self._tuning.long_operation.connect(self._set_poll_paused) + + self._on_conn_state(self._conn.state) + self._conn.start() + + @staticmethod + def _wrap_margin(child: QWidget) -> QWidget: + page = QWidget() + lay = QHBoxLayout(page) + lay.setContentsMargins(8, 8, 8, 8) + lay.addWidget(child) + return page + + def _device_connected(self) -> bool: + return self._client is not None and self._conn.connected + + def _set_device_actions_enabled(self, on: bool) -> None: + self._reset_btn.setEnabled(on) + self._tuning.set_actions_enabled(on) + self._control.set_actions_enabled(on) + self._analysis._apply_mpz_btn.setEnabled(on) + self._analysis._save_nvs_btn.setEnabled(on) + self._analysis._motor_pole_pairs.setEnabled(on) + if on: + self._states.set_interactive(True) + if self._client is not None: + self._svm.attach_reader(self._client.reader) + self._states.attach_reader(self._client.reader) + else: + self._states.set_interactive(False) + + def _on_conn_state(self, state: str) -> None: + key = { + ConnectionManager.STATE_NO_DEVICE: "NO_DEVICE", + ConnectionManager.STATE_SCANNING: "SCANNING", + ConnectionManager.STATE_CONNECTING: "LINK_WAIT", + ConnectionManager.STATE_CONNECTED: "LINK_WAIT", + }.get(state, "NO_DEVICE") + text, qss = make_badge_qss(key) + self._link_badge.setText(text) + self._link_badge.setStyleSheet(qss) + + def _on_client_ready(self, client: object) -> None: + self._client = client # type: ignore[assignment] + assert isinstance(self._client, TunerClient) + if self._conn._fixed_port: + self._serial_config = ( + self._conn._fixed_port, self._conn._baud, self._conn._axis) + self._tuning.set_client(self._client) + self._control.set_client(self._client) + self._analysis._client = self._client + self._svm.attach_reader(self._client.reader) + self._states.attach_reader(self._client.reader) + self._tuning.rebind_log_reader() + self._start_poll_worker() + self._set_device_actions_enabled(True) + try: + self._client.scope_start() + except TunerError: + pass + text, qss = make_badge_qss("LINK_WAIT") + self._link_badge.setText(text) + self._link_badge.setStyleSheet(qss) + + def _on_client_lost(self) -> None: + self._stop_poll_worker() + self._client = None + self._tuning.set_client(None) + self._control.set_client(None) + self._analysis._client = None + self._svm.detach() + self._states.attach_reader(None) + self._set_device_actions_enabled(False) + self._link_ping_seen = False + self._ping_fail_streak = 0 + + def _start_poll_worker(self) -> None: + if self._client is None or self._poll_thread is not None: + return + self._poll_thread = QThread(self) + self._poll_worker = TunerPollWorker(self._client) + self._poll_worker.moveToThread(self._poll_thread) + self._poll_worker.poll_finished.connect( + self._on_poll_finished, Qt.QueuedConnection) + self._poll_worker.ping_finished.connect( + self._on_ping_finished, Qt.QueuedConnection) + self._poll_worker.device_reads_ready.connect( + self._on_device_reads_ready, Qt.QueuedConnection) + self._tuning.poll_refresh_requested.connect( + self._poll_worker.poll_tick, Qt.QueuedConnection) + self._poll_thread.started.connect(self._poll_worker.start_timer) + self._poll_thread.start() + self._tuning.poll_refresh_requested.emit(True) + + def _stop_poll_worker(self) -> None: + if self._poll_worker is None or self._poll_thread is None: + return + self._tuning.long_operation.emit(True) + QMetaObject.invokeMethod( + self._poll_worker, "shutdown", Qt.BlockingQueuedConnection) + self._poll_thread.quit() + self._poll_thread.wait(3000) + self._poll_thread = None + self._poll_worker = None + + def _set_poll_paused(self, paused: bool) -> None: + if self._poll_worker is not None: + self._poll_worker.set_paused(paused) + + def closeEvent(self, event) -> None: + self._conn.stop() + self._stop_poll_worker() + super().closeEvent(event) + + def _on_reset_board_clicked(self) -> None: + if not self._device_connected() or self._client is None: + return + r = QMessageBox.question( + self, "Reset board", + "Restart the board now? The USB link may drop briefly.", + QMessageBox.Yes | QMessageBox.No, QMessageBox.No) + if r != QMessageBox.Yes: + return + try: + self._client.reset_board() + except TunerError as e: + QMessageBox.warning(self, "Reset failed", str(e)) + + def _on_ping_finished(self, ok: bool, err: str) -> None: + self._link_ping_seen = True + if ok: + self._ping_fail_streak = 0 + else: + self._ping_fail_streak += 1 + if self._client is None: + return + if not self._link_ping_seen: + return + if self._ping_fail_streak >= _LINK_DOWN_AFTER_CONSECUTIVE_PING_FAILS: + self._set_link_badge("LINK_DOWN") + else: + self._set_link_badge("LINK_OK") + + def _set_link_badge(self, key: str) -> None: + text, qss = make_badge_qss(key) + self._link_badge.setText(text) + self._link_badge.setStyleSheet(qss) + + def _on_poll_finished( + self, + ok: bool, + err: str, + snap: Optional[TunerPollSnapshot]) -> None: + if ok and snap is not None: + self._tuning.apply_poll_snapshot(snap) + self._control.apply_override_state(snap.override_active) + else: + self._tuning.apply_poll_error(err or "poll failed") + if self._client is not None: + self._states.set_interactive(self._client.reader.is_running) + + def _on_device_reads_ready( + self, fs_hz: float, shadows: object, pole: object) -> None: + if fs_hz > 1.0: + self._analysis.set_loop_rate_hz(fs_hz) + self._tuning.set_loop_rate_hz(fs_hz) + dt = scope_uniform_dt_s(fs_hz) + self._svm.set_uniform_sample_period_s(dt) + self._states.set_uniform_sample_period_s(dt) + if shadows is not None: + t = shadows + self._tuning.apply_nvs_shadow_floats( + t[0], t[1], t[2], t[3], t[4], t[5]) + if pole is not None: + self._analysis.set_motor_pole_pairs_silent(int(pole)) + self._tuning._notify_params_changed() + + def _on_params(self, r: float, l: float, bw: float, + kp: float, ki: float) -> None: + self._analysis_pending = (r, l, bw, kp, ki) + self._analysis_debounce.start() + + def _run_pending_analysis(self) -> None: + if self._analysis_pending is None: + return + r, l, bw, kp, ki = self._analysis_pending + self._analysis_pending = None + self._analysis.update_model(r, l, bw, kp, ki) diff --git a/tools/espfoc_tool/gui/nav_rail.py b/tools/espfoc_tool/gui/nav_rail.py new file mode 100644 index 00000000..57c1e898 --- /dev/null +++ b/tools/espfoc_tool/gui/nav_rail.py @@ -0,0 +1,41 @@ +"""Left navigation rail (Material-style list).""" + +from __future__ import annotations + +from PySide6.QtCore import Qt, Signal +from PySide6.QtWidgets import QButtonGroup, QPushButton, QVBoxLayout, QWidget + +from .theme import make_nav_button_qss + + +class NavRail(QWidget): + page_selected = Signal(int) + + LABELS = ("Config", "Current", "Control", "States") + + def __init__(self, parent: QWidget | None = None) -> None: + super().__init__(parent) + self.setObjectName("NavRail") + self.setFixedWidth(132) + lay = QVBoxLayout(self) + lay.setContentsMargins(8, 12, 8, 12) + lay.setSpacing(6) + self._group = QButtonGroup(self) + self._group.setExclusive(True) + self._buttons: list[QPushButton] = [] + for i, label in enumerate(self.LABELS): + b = QPushButton(label) + b.setCheckable(True) + b.setCursor(Qt.PointingHandCursor) + b.setStyleSheet(make_nav_button_qss()) + if i == 0: + b.setChecked(True) + b.clicked.connect(lambda _c=False, idx=i: self.page_selected.emit(idx)) + self._group.addButton(b, i) + self._buttons.append(b) + lay.addWidget(b) + lay.addStretch(1) + + def set_current_index(self, index: int) -> None: + if 0 <= index < len(self._buttons): + self._buttons[index].setChecked(True) diff --git a/tools/espfoc_studio/gui/plot_display.py b/tools/espfoc_tool/gui/plot_display.py similarity index 100% rename from tools/espfoc_studio/gui/plot_display.py rename to tools/espfoc_tool/gui/plot_display.py diff --git a/tools/espfoc_tool/gui/scope_constants.py b/tools/espfoc_tool/gui/scope_constants.py new file mode 100644 index 00000000..c5d10bfa --- /dev/null +++ b/tools/espfoc_tool/gui/scope_constants.py @@ -0,0 +1,8 @@ +"""Shared scope stream buffer sizing (axis_tuning wire map).""" + +WINDOW_S = 2.0 +BUFFER_CAP = 4096 +INBOX_CAP = 8192 +MAX_PENDING_DECODED = 8192 +MAX_MERGE_SAMPLES_PER_TICK = 8192 +MAX_RAW_FRAMES_DECODE_BATCH = 2048 diff --git a/tools/espfoc_studio/gui/scope_stream_timing.py b/tools/espfoc_tool/gui/scope_stream_timing.py similarity index 100% rename from tools/espfoc_studio/gui/scope_stream_timing.py rename to tools/espfoc_tool/gui/scope_stream_timing.py diff --git a/tools/espfoc_tool/gui/states_panel.py b/tools/espfoc_tool/gui/states_panel.py new file mode 100644 index 00000000..4584ad6e --- /dev/null +++ b/tools/espfoc_tool/gui/states_panel.py @@ -0,0 +1,250 @@ +"""States view: named scope channels (axis_tuning wire map, ch 0–13).""" + +from __future__ import annotations + +import math +import threading +import time +from collections import deque +from dataclasses import dataclass +from typing import Deque, List, Optional, Tuple + +import numpy as np +import pyqtgraph as pg +from PySide6.QtCore import Qt, QTimer +from PySide6.QtGui import QColor +from PySide6.QtWidgets import ( + QCheckBox, + QFormLayout, + QHBoxLayout, + QLabel, + QLineEdit, + QScrollArea, + QSpinBox, + QVBoxLayout, + QWidget, +) + +from ..link import LinkReader +from ..link.scope_sample import decode_scope_payload_to_floats_csv_first +from .crosshair import attach_crosshair +from .plot_display import ( + configure_dynamic_curve, + configure_rolling_time_xaxis, + decimation_indices_peak_union, + rolling_plot_x_upper, +) +from . import scope_constants as sc +from .scope_stream_timing import scope_uniform_dt_s + +STATES_CH_FIRST = 0 +STATES_N = 14 +HOT_PATH_CH = 13 +WINDOW_S = sc.WINDOW_S +BUFFER_CAP = sc.BUFFER_CAP +INBOX_CAP = sc.INBOX_CAP +MAX_PENDING_DECODED = sc.MAX_PENDING_DECODED +MAX_MERGE_SAMPLES_PER_TICK = sc.MAX_MERGE_SAMPLES_PER_TICK +MAX_RAW_FRAMES_DECODE_BATCH = sc.MAX_RAW_FRAMES_DECODE_BATCH +RENDER_INTERVAL_MS = 55 +STRIP_DISPLAY_MAX_POINTS = 800 +PLOT_MIN_HEIGHT = 160 + +AXIS_TUNING_LABELS = ( + "id target", + "id meas", + "iq target", + "iq meas", + "ud", + "uq", + "θ_meas mech", + "θ_est mech", + "ω_est mech", + "PLL error", + "iu", + "iv", + "iα", + "FOC hot-path µs", +) + + +@dataclass(frozen=True) +class _RowSpec: + title: str + + +def _all_specs() -> List[_RowSpec]: + return [_RowSpec(f"ch{i}: {AXIS_TUNING_LABELS[i]}") for i in range(STATES_N)] + + +def _eng_text(row: int, ch_f: float, cpr: int) -> str: + if row == 6: + cnt = ch_f % float(max(cpr, 1)) + deg = (cnt / float(max(cpr, 1))) * 360.0 + return f"θ_meas = {deg:+.2f}° ({cnt:.1f} counts)" + if row == 8: + return f"ω_est = {ch_f:+.5f} (per-unit turns/s)" + if row in (10, 11, 12): + return f"{ch_f:+.5f} A" + if row == HOT_PATH_CH: + return f"{ch_f * 65536.0:+.1f} µs (q16→µs)" + return f"{ch_f:+.5f}" + + +class StatesPanel(QWidget): + def __init__( + self, + reader: Optional[LinkReader] = None, + async_decode: bool = True) -> None: + super().__init__() + self._reader = reader + self._async_decode = async_decode + self._worker_stop = threading.Event() + self._inbox_lock = threading.Lock() + self._inbox: Deque[Tuple[float, bytes]] = deque(maxlen=INBOX_CAP) + self._pending_lock = threading.Lock() + self._pending_decoded: List[Tuple[float, Tuple[float, ...]]] = [] + self._decode_thread: Optional[threading.Thread] = None + self._uniform_dt_s = scope_uniform_dt_s(20000.0) + self._scope_synth_t = 0.0 + self._time_buf: Deque[float] = deque(maxlen=BUFFER_CAP) + self._plot_bufs: List[Deque[float]] = [ + deque(maxlen=BUFFER_CAP) for _ in range(STATES_N)] + self._eng_labels: List[QLabel] = [] + self._raw_fields: List[QLineEdit] = [] + self._trace_cbs: List[QCheckBox] = [] + self._curves: List[pg.PlotDataItem] = [] + self._plots: List[pg.PlotWidget] = [] + self._active = True + self._row_specs = _all_specs() + + root = QVBoxLayout(self) + intro = QLabel( + "SCOPE channels per axis_tuning firmware map. " + f"Window {WINDOW_S:.0f} s. Connect and start scope from firmware " + "(auto on connect in a later build)." + ) + intro.setWordWrap(True) + intro.setStyleSheet("color: #9aa0a6; font-size: 11px;") + root.addWidget(intro) + + cpr_row = QHBoxLayout() + cpr_row.addWidget(QLabel("Encoder CPR")) + self._cpr_spin = QSpinBox() + self._cpr_spin.setRange(1, 65536) + self._cpr_spin.setValue(4096) + cpr_row.addWidget(self._cpr_spin) + cpr_row.addStretch(1) + root.addLayout(cpr_row) + + scroll = QScrollArea() + scroll.setWidgetResizable(True) + scroll.setFrameShape(QScrollArea.NoFrame) + body = QWidget() + scroll.setWidget(body) + body_lay = QVBoxLayout(body) + for r, spec in enumerate(self._row_specs): + body_lay.addWidget(self._make_strip(r, spec.title)) + body_lay.addStretch(1) + root.addWidget(scroll, 1) + + self._render_timer = QTimer(self) + self._render_timer.timeout.connect(self._render_tick) + self._render_timer.start(RENDER_INTERVAL_MS) + if reader is not None: + self.attach_reader(reader) + + def _make_strip(self, row: int, title: str) -> QWidget: + box = QWidget() + lay = QVBoxLayout(box) + lay.setContentsMargins(0, 4, 0, 8) + head = QLabel(title) + head.setStyleSheet("font-weight: 600; color: #e6e6e6;") + lay.addWidget(head) + plot = pg.PlotWidget() + plot.setMinimumHeight(PLOT_MIN_HEIGHT) + plot.showGrid(x=True, y=True, alpha=0.25) + configure_rolling_time_xaxis(plot) + curve = plot.plot(pen=pg.mkPen("#4fc3f7", width=1.5)) + attach_crosshair(plot) + configure_dynamic_curve(curve) + self._plots.append(plot) + self._curves.append(curve) + lay.addWidget(plot) + form = QFormLayout() + raw = QLineEdit() + raw.setReadOnly(True) + raw.setStyleSheet("font-family: monospace;") + eng = QLabel("-") + eng.setStyleSheet("color: #9aa0a6; font-size: 11px;") + cb = QCheckBox("plot") + cb.setChecked(row < 4) + self._raw_fields.append(raw) + self._eng_labels.append(eng) + self._trace_cbs.append(cb) + form.addRow("Q16", raw) + form.addRow("value", eng) + form.addRow(cb) + lay.addLayout(form) + return box + + def attach_reader(self, reader: Optional[LinkReader]) -> None: + if self._reader is not None: + self._reader.unregister_scope_callback( + self._on_frame_reader_thread) + self._reader = reader + if reader is not None: + reader.register_scope_callback(self._on_frame_reader_thread) + + def set_interactive(self, on: bool) -> None: + self._active = on + + def set_uniform_sample_period_s(self, dt_s: float) -> None: + if dt_s > 0.0: + self._uniform_dt_s = dt_s + + def _on_frame_reader_thread(self, channel: int, seq: int, + payload: bytes) -> None: + if not self._active: + return + _ = channel, seq + with self._inbox_lock: + self._inbox.append((time.monotonic(), payload)) + + def _render_tick(self) -> None: + batch: List[Tuple[float, bytes]] = [] + with self._inbox_lock: + while self._inbox: + batch.append(self._inbox.popleft()) + if not batch: + return + cpr = self._cpr_spin.value() + for _wall, payload in batch[-MAX_MERGE_SAMPLES_PER_TICK:]: + vals = decode_scope_payload_to_floats_csv_first(payload) + if len(vals) < STATES_CH_FIRST + STATES_N: + continue + self._scope_synth_t += self._uniform_dt_s + self._time_buf.append(self._scope_synth_t) + for r in range(STATES_N): + f = vals[STATES_CH_FIRST + r] + self._plot_bufs[r].append(f) + q16 = int(round(f * 65536.0)) + self._raw_fields[r].setText(str(q16)) + self._eng_labels[r].setText(_eng_text(r, f, cpr)) + n = len(self._time_buf) + if n < 2: + return + t_arr = np.fromiter(list(self._time_buf)[-n:], dtype=float, count=n) + t_lo = max(0.0, self._scope_synth_t - WINDOW_S) + for r, c in enumerate(self._curves): + if not self._trace_cbs[r].isChecked(): + c.setData([], []) + continue + y = np.fromiter(list(self._plot_bufs[r])[-n:], dtype=float, count=n) + mp = min(STRIP_DISPLAY_MAX_POINTS, len(t_arr)) + idx = decimation_indices_peak_union(y, mp) + t_d = t_arr[idx] + y_d = y[idx] + c.setData(t_d, y_d) + self._plots[r].setXRange(0.0, rolling_plot_x_upper(t_d, WINDOW_S), + padding=0) diff --git a/tools/espfoc_studio/gui/svm_panel.py b/tools/espfoc_tool/gui/svm_panel.py similarity index 97% rename from tools/espfoc_studio/gui/svm_panel.py rename to tools/espfoc_tool/gui/svm_panel.py index d514f865..15ec9031 100644 --- a/tools/espfoc_studio/gui/svm_panel.py +++ b/tools/espfoc_tool/gui/svm_panel.py @@ -1,6 +1,6 @@ """Space-vector PWM hexagon view. -Reads channels 0/1/2 (u_u, u_v, u_w) from the firmware scope stream +Reads scope channels 10/11/12 (iu, iv, iα) from axis_tuning firmware map and shows: * three fixed phase axes (A/B/C at 0°/120°/240°) with a colored @@ -48,7 +48,6 @@ decimation_indices_peak_union, rolling_plot_x_upper, ) -from .scope_panel import ScopePanel from .scope_stream_timing import scope_uniform_dt_s @@ -223,11 +222,11 @@ def __init__(self, reader: Optional[LinkReader] = None, self._wave_plot, fmt=lambda x, y: f"t = {x:.4f} s\nu = {y:+.3f} V") self._uu_curve = self._wave_plot.plot( - pen=pg.mkPen(QColor(_PHASE_COLORS[0]), width=2), name="u_u (ch0)") + pen=pg.mkPen(QColor(_PHASE_COLORS[0]), width=2), name="iu (ch10)") self._uv_curve = self._wave_plot.plot( - pen=pg.mkPen(QColor(_PHASE_COLORS[1]), width=2), name="u_v (ch1)") + pen=pg.mkPen(QColor(_PHASE_COLORS[1]), width=2), name="iv (ch11)") self._uw_curve = self._wave_plot.plot( - pen=pg.mkPen(QColor(_PHASE_COLORS[2]), width=2), name="u_w (ch2)") + pen=pg.mkPen(QColor(_PHASE_COLORS[2]), width=2), name="iw (ch12 proxy)") for _c in (self._uu_curve, self._uv_curve, self._uw_curve): configure_dynamic_curve(_c) root.addWidget(self._wave_plot, 1) @@ -305,7 +304,12 @@ def _render_tick(self) -> None: if len(allv) < 3: continue vals = allv[:3] - u_u, u_v, u_w = vals[0], vals[1], vals[2] + if len(vals) < 13: + return + iu, iv, ialpha = vals[10], vals[11], vals[12] + ibeta = -(iu + iv) * 0.57735026919 + u_u, u_v, u_w = iu, iv, -(iu + iv) + _ = ialpha, ibeta a, b = _clarke(u_u, u_v, u_w) self._last_abc = (u_u, u_v, u_w) self._alpha_buf.append(a) @@ -394,7 +398,7 @@ def _render_tick(self) -> None: self._alpha_label.setText(f"α = {a_n:+8.3f} pu") self._beta_label.setText(f"β = {b_n:+8.3f} pu") self._mag_label.setText(f"|V| = {mag_pu:8.3f} pu") - self._scale_label.setText(f"1 pu = {self._pu_ref:8.4f} (ch0–2 units)") + self._scale_label.setText(f"1 pu = {self._pu_ref:8.4f} (phase A)") if mag < 1e-20: self._sector_label.setText("sector: -") else: diff --git a/tools/espfoc_studio/gui/theme.py b/tools/espfoc_tool/gui/theme.py similarity index 81% rename from tools/espfoc_studio/gui/theme.py rename to tools/espfoc_tool/gui/theme.py index 7606c52c..80fa5353 100644 --- a/tools/espfoc_studio/gui/theme.py +++ b/tools/espfoc_tool/gui/theme.py @@ -28,6 +28,8 @@ # of the old "+INITIALIZED -ALIGNED -RUNNING -TUNER_OVERRIDE" text. Keep # the foreground / background pair high-contrast on the dark theme. BADGE_STYLES = { + "NO_DEVICE": ("NO DEVICE", "#0b0c0d", "#6c757d"), + "SCANNING": ("SCANNING", "#0b0c0d", "#ffb300"), "OFFLINE": ("OFFLINE", "#0b0c0d", "#6c757d"), "INIT": ("INIT", "#0b0c0d", "#26a69a"), "ALIGNING": ("ALIGNING", "#0b0c0d", "#ff9800"), @@ -61,6 +63,49 @@ def make_badge_qss(state_key: str) -> tuple[str, str]: return label, qss +def make_nav_button_qss() -> str: + return f""" + QPushButton {{ + background-color: transparent; + color: {_DIM}; + border: none; + border-radius: 10px; + padding: 10px 14px; + font-size: 13px; + font-weight: 500; + text-align: left; + }} + QPushButton:hover {{ + background-color: #2e3036; + color: {_FG}; + }} + QPushButton:checked {{ + background-color: #32363d; + color: {_ACCENT}; + font-weight: 600; + }} + """ + + +def make_estop_button_qss() -> str: + fg, bg = "#ffffff", _ERROR + return ( + f"QPushButton {{" + f" background-color: {bg};" + f" color: {fg};" + f" border: 1px solid #ffcdd2;" + f" border-radius: 12px;" + f" padding: 12px 16px;" + f" font-weight: 700;" + f" font-size: 13px;" + f" letter-spacing: 1px;" + f"}}" + f"QPushButton:hover {{ background-color: #e53935; }}" + f"QPushButton:pressed {{ background-color: #c62828; }}" + f"QPushButton:disabled {{ background-color: #4e342e; color: #bcaaa4; }}" + ) + + def make_reset_board_button_qss() -> str: """Pill matching link badges, with a clear border and hover for a pushbutton (emergency board reset).""" @@ -88,7 +133,7 @@ def make_reset_board_button_qss() -> str: ) -def apply_dark_theme(app: QApplication) -> None: +def apply_dark_theme(app: QApplication, *, use_opengl_plots: bool = True) -> None: app.setStyle("Fusion") pal = QPalette() @@ -190,7 +235,14 @@ def apply_dark_theme(app: QApplication) -> None: border: 1px solid {_BORDER}; border-bottom-color: {_BG_ALT}; }} - QSplitter::handle {{ background: {_BORDER}; }} + QSplitter::handle {{ + background: {_BORDER}; + width: 3px; + }} + #NavRail {{ + background-color: #18191c; + border-right: 1px solid {_BORDER}; + }} QScrollArea, QScrollArea > QWidget > QWidget {{ background-color: {_BG}; }} @@ -201,3 +253,5 @@ def apply_dark_theme(app: QApplication) -> None: pg.setConfigOption("background", _BG_ALT) pg.setConfigOption("foreground", _FG) pg.setConfigOption("antialias", True) + if not use_opengl_plots: + pg.setConfigOptions(useOpenGL=False) diff --git a/tools/espfoc_studio/gui/tuner_poll_worker.py b/tools/espfoc_tool/gui/tuner_poll_worker.py similarity index 100% rename from tools/espfoc_studio/gui/tuner_poll_worker.py rename to tools/espfoc_tool/gui/tuner_poll_worker.py diff --git a/tools/espfoc_studio/gui/tuning_panel.py b/tools/espfoc_tool/gui/tuning_panel.py similarity index 75% rename from tools/espfoc_studio/gui/tuning_panel.py rename to tools/espfoc_tool/gui/tuning_panel.py index 5cb74f7b..cc50a5fb 100644 --- a/tools/espfoc_studio/gui/tuning_panel.py +++ b/tools/espfoc_tool/gui/tuning_panel.py @@ -4,7 +4,7 @@ from typing import Callable, Optional -from PySide6.QtCore import Qt, QThread, QTimer, Signal +from PySide6.QtCore import Qt, QTimer, Signal from PySide6.QtGui import QFont from PySide6.QtWidgets import ( QCheckBox, @@ -22,7 +22,6 @@ ) from ..protocol import AxisStateFlag, TunerClient, TunerError -from .alignment_progress import AlignmentProgressDialog from .tuner_poll_worker import TunerPollSnapshot from .theme import make_badge_qss @@ -49,26 +48,6 @@ def _spin(minimum: float, maximum: float, return box -class _AlignAxisThread(QThread): - """Runs firmware align off the Qt GUI thread; align can block for - many seconds and must not stall repaints, timers, or the scope view.""" - - success = Signal() - failed = Signal(str) - - def __init__(self, client: TunerClient, parent=None) -> None: - super().__init__(parent) - self._client = client - - def run(self) -> None: # noqa: N802 - try: - self._client.align_axis() - except TunerError as e: - self.failed.emit(str(e)) - else: - self.success.emit() - - class TuningPanel(QWidget): """Left-hand side of the main window: controls + live readout. @@ -83,7 +62,7 @@ class TuningPanel(QWidget): long_operation = Signal(bool) poll_refresh_requested = Signal(bool) - def __init__(self, client: TunerClient, + def __init__(self, client: Optional[TunerClient] = None, on_params_changed: Optional[Callable[[float, float, float, float, float], None]] = None) -> None: super().__init__() @@ -94,8 +73,6 @@ def __init__(self, client: TunerClient, self._last_motor_l = 0.0018 self._last_bw = 150.0 self._cal_present = False - self._align_thread: Optional[_AlignAxisThread] = None - self._align_progress: Optional[AlignmentProgressDialog] = None self.last_axis_state: Optional[AxisStateFlag] = None # The whole panel sits inside a QScrollArea so a small window @@ -192,30 +169,9 @@ def __init__(self, client: TunerClient, self._kp_spin, self._ki_spin): spin.valueChanged.connect(self._notify_params_changed) - # --- Override + motion targets --- - ovr = QGroupBox("Tuner override / motion") - ovr_layout = QVBoxLayout(ovr) - self._override_box = QCheckBox("Override active") - self._override_box.toggled.connect(self._on_override_toggled) - ovr_layout.addWidget(self._override_box) - target_form = QFormLayout() - self._iq_spin = _spin(-50.0, 50.0, 4, 0.0, step=0.1, suffix=" A") - self._id_spin = _spin(-50.0, 50.0, 4, 0.0, step=0.1, suffix=" A") - self._iq_spin.setEnabled(False) - self._id_spin.setEnabled(False) - self._iq_spin.valueChanged.connect(self._on_iq_changed) - self._id_spin.valueChanged.connect(self._on_id_changed) - target_form.addRow("iq ref [A]", self._iq_spin) - target_form.addRow("id ref [A]", self._id_spin) - ovr_layout.addLayout(target_form) - root.addWidget(ovr) - - # --- Alignment + calibration --- - align = QGroupBox("Alignment & calibration") + # --- Calibration (motion / align live on Control view) --- + align = QGroupBox("Calibration NVS") align_layout = QVBoxLayout(align) - self._align_btn = QPushButton("Align axis") - self._align_btn.clicked.connect(self._on_align) - align_layout.addWidget(self._align_btn) self._cal_label = QLabel("calibration: -") self._cal_label.setStyleSheet("font-family: monospace; color: #9aa0a6;") align_layout.addWidget(self._cal_label) @@ -257,7 +213,13 @@ def set_loop_rate_hz(self, fs_hz: float) -> None: self._loop_fs_hz = fs_hz self._loop_fs_label.setText(f"{fs_hz:9.1f}") + def set_client(self, client: Optional[TunerClient]) -> None: + self._client = client + self.rebind_log_reader() + def rebind_log_reader(self) -> None: + if self._client is None: + return try: self._client.reader.register_log_callback(self._on_log_reader) except Exception: @@ -291,12 +253,6 @@ def apply_poll_snapshot(self, snap: TunerPollSnapshot) -> None: self._cal_label.setText("calibration: " + ("\u2713 present in NVS" if snap.cal_present else "\u2717 none stored")) - self._override_box.blockSignals(True) - self._override_box.setChecked(snap.override_active) - self._override_box.blockSignals(False) - self._iq_spin.setEnabled(snap.override_active) - self._id_spin.setEnabled(snap.override_active) - def apply_poll_error(self, msg: str) -> None: """Worker poll failed (transport / tuner error).""" self._status.setText(msg) @@ -305,6 +261,8 @@ def apply_poll_error(self, msg: str) -> None: # --- Handlers ---------------------------------------------------------- def _on_apply_manual(self) -> None: + if self._client is None: + return try: self._client.write_kp(self._kp_spin.value()) self._client.write_ki(self._ki_spin.value()) @@ -316,79 +274,20 @@ def _on_apply_manual(self) -> None: self._notify_params_changed() def _on_apply_fc(self) -> None: - try: - self._client.write_current_filter_fc(self._fc_spin.value()) - except TunerError as e: - self._status.setText(str(e)) + if self._client is None: return - self._status.setText("") - - def _on_override_toggled(self, checked: bool) -> None: try: - if checked: - self._client.run_axis() - else: - self._client.stop_axis() - except TunerError as e: - self._status.setText(str(e)) - self._override_box.blockSignals(True) - self._override_box.setChecked(not checked) - self._override_box.blockSignals(False) - return - self._status.setText("") - self._iq_spin.setEnabled(checked) - self._id_spin.setEnabled(checked) - self._status.setText("") - - def _on_iq_changed(self, value: float) -> None: - try: - self._client.write_target_iq(value) - except TunerError as e: - self._status.setText(str(e)) - - def _on_id_changed(self, value: float) -> None: - try: - self._client.write_target_id(value) + self._client.write_current_filter_fc(self._fc_spin.value()) except TunerError as e: self._status.setText(str(e)) - - def _on_align(self) -> None: - if self._align_thread is not None and self._align_thread.isRunning(): return - self._append_log("> alignment requested") - self._align_btn.setEnabled(False) - self._set_axis_badge_key("ALIGNING") - self.long_operation.emit(True) - par = self.window() - parent_widget = par if isinstance(par, QWidget) else self - self._align_progress = AlignmentProgressDialog(parent_widget) - self._align_progress.show() - self._align_thread = _AlignAxisThread(self._client, self) - self._align_thread.success.connect( - self._on_align_succeeded, Qt.QueuedConnection) - self._align_thread.failed.connect( - self._on_align_failed, Qt.QueuedConnection) - self._align_thread.finished.connect( - self._on_align_thread_finished, Qt.QueuedConnection) - self._align_thread.start() - - def _on_align_succeeded(self) -> None: self._status.setText("") - def _on_align_failed(self, err: str) -> None: - self._status.setText(err) - - def _on_align_thread_finished(self) -> None: - if self._align_progress is not None: - self._align_progress.close() - self._align_progress = None - self._align_btn.setEnabled(True) - self.long_operation.emit(False) - self._align_thread = None - try: - self.poll_refresh_requested.emit(True) - except Exception: - pass + def set_actions_enabled(self, on: bool) -> None: + for w in self.findChildren(QPushButton): + w.setEnabled(on) + for w in self.findChildren(QDoubleSpinBox): + w.setEnabled(on) def _set_axis_badge_key(self, key: str) -> None: label, qss = make_badge_qss(key) @@ -396,6 +295,8 @@ def _set_axis_badge_key(self, key: str) -> None: self._state_label.setStyleSheet(qss) def _on_persist(self) -> None: + if self._client is None: + return try: self._client.store_calibration() except TunerError as e: @@ -405,6 +306,8 @@ def _on_persist(self) -> None: self.poll_refresh_requested.emit(True) def _on_erase(self) -> None: + if self._client is None: + return try: self._client.erase_calibration() except TunerError as e: diff --git a/tools/espfoc_studio/link/__init__.py b/tools/espfoc_tool/link/__init__.py similarity index 91% rename from tools/espfoc_studio/link/__init__.py rename to tools/espfoc_tool/link/__init__.py index b739b8ab..8fb57f66 100644 --- a/tools/espfoc_studio/link/__init__.py +++ b/tools/espfoc_tool/link/__init__.py @@ -1,6 +1,6 @@ """Wire framing for the espFoC tuner protocol — Python mirror of source/motor_control/esp_foc_link.c. Cross-validated against the -firmware-side encoder/decoder via tools/espfoc_studio/tests/. +firmware-side encoder/decoder via tools/espfoc_tool/tests/. """ from .codec import ( diff --git a/tools/espfoc_studio/link/codec.py b/tools/espfoc_tool/link/codec.py similarity index 100% rename from tools/espfoc_studio/link/codec.py rename to tools/espfoc_tool/link/codec.py diff --git a/tools/espfoc_studio/link/reader.py b/tools/espfoc_tool/link/reader.py similarity index 100% rename from tools/espfoc_studio/link/reader.py rename to tools/espfoc_tool/link/reader.py diff --git a/tools/espfoc_studio/link/scope_sample.py b/tools/espfoc_tool/link/scope_sample.py similarity index 90% rename from tools/espfoc_studio/link/scope_sample.py rename to tools/espfoc_tool/link/scope_sample.py index 14347fd1..8b603603 100644 --- a/tools/espfoc_studio/link/scope_sample.py +++ b/tools/espfoc_tool/link/scope_sample.py @@ -2,7 +2,7 @@ If the target was built with ``CONFIG_ESP_FOC_SCOPE_LEGACY_CSV=y`` (or you are testing old code), set env ``ESP_FOC_STUDIO_SCOPE_CSV=1`` or use -``python -m espfoc_studio.gui --scope-csv`` so comma-separated float lines +``python -m espfoc_tool.gui --scope-csv`` so comma-separated float lines are still decoded. Otherwise only SCOPE v1 is parsed (no CSV branch).""" from __future__ import annotations @@ -13,7 +13,8 @@ # Match legacy firmware: enable CSV decode only when set to "1" (Kconfig # has no direct equivalent on the host). -_ENV_CSV = "ESP_FOC_STUDIO_SCOPE_CSV" +_ENV_CSV = "ESPFOC_TOOL_SCOPE_CSV" +_ENV_CSV_LEGACY = "ESP_FOC_STUDIO_SCOPE_CSV" # Wire: 0xFF + 'S','C', v1. First byte 0xFF avoids collision with CSV digits. SCOPE_WIRE_V1 = 0x01 @@ -35,7 +36,8 @@ def pack_scope_i32_to_payload(samples_i32: List[int]) -> bytes: def legacy_csv_decoding_enabled() -> bool: - return os.environ.get(_ENV_CSV, "0") == "1" + return (os.environ.get(_ENV_CSV, "0") == "1" + or os.environ.get(_ENV_CSV_LEGACY, "0") == "1") def decode_scope_payload_to_floats(payload: bytes) -> Optional[List[float]]: diff --git a/tools/espfoc_studio/link/transport.py b/tools/espfoc_tool/link/transport.py similarity index 100% rename from tools/espfoc_studio/link/transport.py rename to tools/espfoc_tool/link/transport.py diff --git a/tools/espfoc_studio/link/transport_serial.py b/tools/espfoc_tool/link/transport_serial.py similarity index 100% rename from tools/espfoc_studio/link/transport_serial.py rename to tools/espfoc_tool/link/transport_serial.py diff --git a/tools/espfoc_studio/model/__init__.py b/tools/espfoc_tool/model/__init__.py similarity index 90% rename from tools/espfoc_studio/model/__init__.py rename to tools/espfoc_tool/model/__init__.py index 013b73a1..4fb1de11 100644 --- a/tools/espfoc_studio/model/__init__.py +++ b/tools/espfoc_tool/model/__init__.py @@ -1,4 +1,4 @@ -"""Motor / control analysis library for TunerStudio. +"""Motor / control analysis library for espFoC Tool. Pure numpy; no Qt or GUI dependency. Reused by the GUI's Analysis tab, the CLI snapshot report, and the offline golden-vector tests. diff --git a/tools/espfoc_studio/model/analysis.py b/tools/espfoc_tool/model/analysis.py similarity index 100% rename from tools/espfoc_studio/model/analysis.py rename to tools/espfoc_tool/model/analysis.py diff --git a/tools/espfoc_studio/protocol/__init__.py b/tools/espfoc_tool/protocol/__init__.py similarity index 100% rename from tools/espfoc_studio/protocol/__init__.py rename to tools/espfoc_tool/protocol/__init__.py diff --git a/tools/espfoc_studio/protocol/tuner.py b/tools/espfoc_tool/protocol/tuner.py similarity index 100% rename from tools/espfoc_studio/protocol/tuner.py rename to tools/espfoc_tool/protocol/tuner.py diff --git a/tools/espfoc_studio/requirements.txt b/tools/espfoc_tool/requirements.txt similarity index 70% rename from tools/espfoc_studio/requirements.txt rename to tools/espfoc_tool/requirements.txt index 9fca75a1..32127b05 100644 --- a/tools/espfoc_studio/requirements.txt +++ b/tools/espfoc_tool/requirements.txt @@ -1,4 +1,4 @@ -# Runtime dependencies for espfoc_studio (CLI + GUI). +# Runtime dependencies for espfoc_tool (CLI + GUI). pyserial>=3.5 numpy>=1.23 pytest>=7.0.0 diff --git a/tools/espfoc_studio/tests/__init__.py b/tools/espfoc_tool/tests/__init__.py similarity index 100% rename from tools/espfoc_studio/tests/__init__.py rename to tools/espfoc_tool/tests/__init__.py diff --git a/tools/espfoc_studio/tests/test_analysis.py b/tools/espfoc_tool/tests/test_analysis.py similarity index 98% rename from tools/espfoc_studio/tests/test_analysis.py rename to tools/espfoc_tool/tests/test_analysis.py index dbcdd1d5..9a89fa33 100644 --- a/tools/espfoc_studio/tests/test_analysis.py +++ b/tools/espfoc_tool/tests/test_analysis.py @@ -1,5 +1,5 @@ #!/usr/bin/env python3 -"""Unit tests for tools/espfoc_studio/model/analysis.py. +"""Unit tests for tools/espfoc_tool/model/analysis.py. Pure math, no Qt; safe to run in CI or headless dev boxes. """ @@ -15,7 +15,7 @@ HERE = os.path.dirname(os.path.abspath(__file__)) sys.path.insert(0, os.path.dirname(os.path.dirname(HERE))) -from espfoc_studio.model import ( +from espfoc_tool.model import ( MotorParams, PiGains, bode, diff --git a/tools/espfoc_tool/tests/test_gui_smoke.py b/tools/espfoc_tool/tests/test_gui_smoke.py new file mode 100644 index 00000000..12771e85 --- /dev/null +++ b/tools/espfoc_tool/tests/test_gui_smoke.py @@ -0,0 +1,57 @@ +#!/usr/bin/env python3 +"""Headless smoke tests for espFoC Tool GUI.""" + +from __future__ import annotations + +import os +import sys + +os.environ.setdefault("QT_QPA_PLATFORM", "offscreen") +os.environ["ESPFOC_TOOL_NO_GL"] = "1" + +HERE = os.path.dirname(os.path.abspath(__file__)) +sys.path.insert(0, os.path.dirname(os.path.dirname(HERE))) + +from PySide6.QtWidgets import QApplication + +from espfoc_tool.gui.app import create_application +from espfoc_tool.gui.connection_manager import ConnectionManager +from espfoc_tool.gui.main_window import MainWindow +from espfoc_tool.gui.scope_stream_timing import ( + LOW_SPEED_DOWNSAMPLING, + scope_uniform_dt_s, +) + + +def test_main_window_offline_smoke(): + app = create_application() + conn = ConnectionManager(fixed_port=None) + w = MainWindow(conn, title="espFoC Tool test") + assert w._stack.count() == 4 + w.close() + conn.stop() + + +def test_scope_stream_timing_hw(): + dt_hw = scope_uniform_dt_s(20000.0) + assert abs(dt_hw - LOW_SPEED_DOWNSAMPLING / 20000.0) < 1e-15 + + +def main() -> int: + tests = [ + test_main_window_offline_smoke, + test_scope_stream_timing_hw, + ] + failed = 0 + for t in tests: + try: + t() + print(f"OK {t.__name__}") + except Exception as e: + failed += 1 + print(f"FAIL {t.__name__}: {e}") + return 1 if failed else 0 + + +if __name__ == "__main__": + sys.exit(main()) diff --git a/tools/espfoc_studio/tests/test_link_codec.py b/tools/espfoc_tool/tests/test_link_codec.py similarity index 97% rename from tools/espfoc_studio/tests/test_link_codec.py rename to tools/espfoc_tool/tests/test_link_codec.py index 42444dad..43b4b016 100644 --- a/tools/espfoc_studio/tests/test_link_codec.py +++ b/tools/espfoc_tool/tests/test_link_codec.py @@ -9,7 +9,7 @@ no longer talk to each other. Run from the component root: - PYTHONPATH=tools python3 tools/espfoc_studio/tests/test_link_codec.py + PYTHONPATH=tools python3 tools/espfoc_tool/tests/test_link_codec.py """ from __future__ import annotations @@ -20,7 +20,7 @@ HERE = os.path.dirname(os.path.abspath(__file__)) sys.path.insert(0, os.path.dirname(os.path.dirname(HERE))) -from espfoc_studio.link import ( +from espfoc_tool.link import ( Channel, Decoder, LinkError, diff --git a/tools/espfoc_studio/tests/test_link_io_tuner.py b/tools/espfoc_tool/tests/test_link_io_tuner.py similarity index 93% rename from tools/espfoc_studio/tests/test_link_io_tuner.py rename to tools/espfoc_tool/tests/test_link_io_tuner.py index 0ce69780..a8c6aec6 100644 --- a/tools/espfoc_studio/tests/test_link_io_tuner.py +++ b/tools/espfoc_tool/tests/test_link_io_tuner.py @@ -9,8 +9,8 @@ import pytest # type: ignore -from espfoc_studio.link import LinkReader, Transport -from espfoc_studio.protocol import TunerClient, TunerError +from espfoc_tool.link import LinkReader, Transport +from espfoc_tool.protocol import TunerClient, TunerError def test_send_oserror_is_tuner_error() -> None: diff --git a/tools/espfoc_studio/tests/test_scope_sample.py b/tools/espfoc_tool/tests/test_scope_sample.py similarity index 94% rename from tools/espfoc_studio/tests/test_scope_sample.py rename to tools/espfoc_tool/tests/test_scope_sample.py index 3769a4e3..4ddf6e77 100644 --- a/tools/espfoc_studio/tests/test_scope_sample.py +++ b/tools/espfoc_tool/tests/test_scope_sample.py @@ -1,4 +1,4 @@ -from espfoc_studio.link.scope_sample import ( +from espfoc_tool.link.scope_sample import ( decode_scope_payload_to_floats, decode_scope_payload_to_floats_csv_first, pack_scope_i32_to_payload, diff --git a/tools/espfoc_studio/tests/test_tuner_protocol.py b/tools/espfoc_tool/tests/test_tuner_protocol.py similarity index 93% rename from tools/espfoc_studio/tests/test_tuner_protocol.py rename to tools/espfoc_tool/tests/test_tuner_protocol.py index 6cf2942f..2728a689 100644 --- a/tools/espfoc_studio/tests/test_tuner_protocol.py +++ b/tools/espfoc_tool/tests/test_tuner_protocol.py @@ -9,9 +9,9 @@ HERE = os.path.dirname(os.path.abspath(__file__)) sys.path.insert(0, os.path.dirname(os.path.dirname(HERE))) -from espfoc_studio.fake_tuner_loopback import FakeTunerLoopback -from espfoc_studio.link import LoopbackTransport -from espfoc_studio.protocol import ( +from espfoc_tool.fake_tuner_loopback import FakeTunerLoopback +from espfoc_tool.link import LoopbackTransport +from espfoc_tool.protocol import ( AxisStateFlag, TunerClient, TunerError, From 35dd49a27e98e1f786eb0f09d333a10e0dc92577 Mon Sep 17 00:00:00 2001 From: Felipe Neves Date: Mon, 1 Jun 2026 20:17:08 -0300 Subject: [PATCH 2/4] Polish espFoC Tool views with NVS diff, split Config/Current, and reconnect. Config pairs tuning with live-vs-editor NVS RMW; Current owns motor model; restore serial reconnect on transport loss; refine Material-style chrome. --- tools/espfoc_tool/gui/__main__.py | 8 + tools/espfoc_tool/gui/analysis_panel.py | 11 -- tools/espfoc_tool/gui/connection_manager.py | 7 + tools/espfoc_tool/gui/main_window.py | 122 ++++++++++--- tools/espfoc_tool/gui/motor_model_rail.py | 79 +++++++++ tools/espfoc_tool/gui/nvs_diff_panel.py | 181 ++++++++++++++++++++ tools/espfoc_tool/gui/theme.py | 6 +- tools/espfoc_tool/gui/tuning_panel.py | 102 ++--------- tools/espfoc_tool/gui/views/__init__.py | 6 + tools/espfoc_tool/gui/views/config_view.py | 32 ++++ tools/espfoc_tool/gui/views/current_view.py | 31 ++++ 11 files changed, 460 insertions(+), 125 deletions(-) create mode 100644 tools/espfoc_tool/gui/motor_model_rail.py create mode 100644 tools/espfoc_tool/gui/nvs_diff_panel.py create mode 100644 tools/espfoc_tool/gui/views/__init__.py create mode 100644 tools/espfoc_tool/gui/views/config_view.py create mode 100644 tools/espfoc_tool/gui/views/current_view.py diff --git a/tools/espfoc_tool/gui/__main__.py b/tools/espfoc_tool/gui/__main__.py index eed00d6a..443dc950 100644 --- a/tools/espfoc_tool/gui/__main__.py +++ b/tools/espfoc_tool/gui/__main__.py @@ -6,8 +6,11 @@ import os import signal import sys +from pathlib import Path from typing import Optional +from PySide6.QtGui import QIcon + from .app import create_application from .connection_manager import ConnectionManager from .main_window import MainWindow @@ -48,6 +51,11 @@ def main(argv: Optional[list[str]] = None) -> int: from PySide6.QtCore import QTimer app = create_application() + for icon_name in ("espfoc_tool_logo.svg", "espfoc_tool_logo.png"): + icon_path = Path(__file__).resolve().parents[3] / "doc" / "images" / icon_name + if icon_path.is_file(): + app.setWindowIcon(QIcon(str(icon_path))) + break conn = ConnectionManager( baud=args.baud, axis=args.axis, fixed_port=args.port) window = MainWindow(conn, title="espFoC Tool") diff --git a/tools/espfoc_tool/gui/analysis_panel.py b/tools/espfoc_tool/gui/analysis_panel.py index 1e14ae4e..834f66c3 100644 --- a/tools/espfoc_tool/gui/analysis_panel.py +++ b/tools/espfoc_tool/gui/analysis_panel.py @@ -124,10 +124,7 @@ def __init__(self, client: Optional[TunerClient] = None) -> None: btn_row = QHBoxLayout() self._apply_mpz_btn = QPushButton("Apply MPZ to RAM") self._apply_mpz_btn.clicked.connect(self._on_apply_mpz) - self._save_nvs_btn = QPushButton("Save to NVS") - self._save_nvs_btn.clicked.connect(self._on_save_nvs) btn_row.addWidget(self._apply_mpz_btn) - btn_row.addWidget(self._save_nvs_btn) btn_row.addStretch(1) root.addLayout(btn_row) @@ -145,14 +142,6 @@ def _on_apply_mpz(self) -> None: except (TunerError, ValueError) as e: return - def _on_save_nvs(self) -> None: - if self._client is None: - return - try: - self._client.store_calibration() - except TunerError: - return - def update_model(self, motor_r: float, motor_l: float, bw_hz: float, kp: float, ki: float) -> None: """Re-render everything for the given operating point.""" diff --git a/tools/espfoc_tool/gui/connection_manager.py b/tools/espfoc_tool/gui/connection_manager.py index bf03661b..410b434e 100644 --- a/tools/espfoc_tool/gui/connection_manager.py +++ b/tools/espfoc_tool/gui/connection_manager.py @@ -91,6 +91,11 @@ def __init__( self._scan_timer.setInterval(SCAN_INTERVAL_MS) self._scan_timer.timeout.connect(self._on_scan_tick) self._busy = False + self._active_port: Optional[str] = None + + @property + def active_port(self) -> Optional[str]: + return self._active_port @property def client(self) -> Optional[TunerClient]: @@ -138,6 +143,7 @@ def _release_client(self) -> None: except Exception: pass self._client = None + self._active_port = None self.client_lost.emit() self._set_state(self.STATE_NO_DEVICE) @@ -153,6 +159,7 @@ def _try_open(self, port: str) -> bool: if client is None: return False self._client = client + self._active_port = port self._set_state(self.STATE_CONNECTED) self.port_descr_changed.emit(f"{port} @ {self._baud}") self.client_ready.emit(client) diff --git a/tools/espfoc_tool/gui/main_window.py b/tools/espfoc_tool/gui/main_window.py index 3e55a4ab..060f9289 100644 --- a/tools/espfoc_tool/gui/main_window.py +++ b/tools/espfoc_tool/gui/main_window.py @@ -19,6 +19,7 @@ ) from ..link import LinkReader +from ..link.transport_serial import SerialTransport from ..protocol import TunerClient, TunerError from .analysis_panel import AnalysisPanel from .connection_manager import ConnectionManager @@ -30,6 +31,7 @@ from .theme import make_badge_qss, make_reset_board_button_qss from .tuning_panel import TuningPanel from .tuner_poll_worker import TunerPollSnapshot, TunerPollWorker +from .views import ConfigView, CurrentView _LINK_DOWN_AFTER_CONSECUTIVE_PING_FAILS = 10 @@ -72,18 +74,20 @@ def __init__( self._analysis_debounce.timeout.connect(self._run_pending_analysis) self._analysis_pending = None - self._tuning = TuningPanel( - client=None, on_params_changed=self._on_params) + self._tuning = TuningPanel(client=None) + self._config = ConfigView(self._tuning) + self._current = CurrentView( + self._analysis, on_params_changed=self._on_params) self._control = ControlRail( client=None, connected=self._device_connected) self._svm = SvmPanel(reader=None) self._states = StatesPanel(reader=None) - self._stack.addWidget(self._wrap_margin(self._tuning)) - self._stack.addWidget(self._wrap_margin(self._analysis)) + self._stack.addWidget(self._config) + self._stack.addWidget(self._current) ctrl = QWidget() cs = QHBoxLayout(ctrl) - cs.setContentsMargins(0, 0, 0, 0) + cs.setContentsMargins(8, 8, 8, 8) split = QSplitter(Qt.Horizontal) split.addWidget(self._control) split.addWidget(self._svm) @@ -92,7 +96,11 @@ def __init__( split.setSizes([320, 900]) cs.addWidget(split) self._stack.addWidget(ctrl) - self._stack.addWidget(self._states) + states_wrap = QWidget() + sl = QHBoxLayout(states_wrap) + sl.setContentsMargins(8, 8, 8, 8) + sl.addWidget(self._states) + self._stack.addWidget(states_wrap) sb = self.statusBar() self._link_badge = QLabel() @@ -121,23 +129,16 @@ def __init__( self._on_conn_state(self._conn.state) self._conn.start() - @staticmethod - def _wrap_margin(child: QWidget) -> QWidget: - page = QWidget() - lay = QHBoxLayout(page) - lay.setContentsMargins(8, 8, 8, 8) - lay.addWidget(child) - return page - def _device_connected(self) -> bool: return self._client is not None and self._conn.connected def _set_device_actions_enabled(self, on: bool) -> None: self._reset_btn.setEnabled(on) self._tuning.set_actions_enabled(on) + self._config.nvs.set_actions_enabled(on) + self._config.nvs.set_client(self._client if on else None) self._control.set_actions_enabled(on) self._analysis._apply_mpz_btn.setEnabled(on) - self._analysis._save_nvs_btn.setEnabled(on) self._analysis._motor_pole_pairs.setEnabled(on) if on: self._states.set_interactive(True) @@ -161,9 +162,9 @@ def _on_conn_state(self, state: str) -> None: def _on_client_ready(self, client: object) -> None: self._client = client # type: ignore[assignment] assert isinstance(self._client, TunerClient) - if self._conn._fixed_port: - self._serial_config = ( - self._conn._fixed_port, self._conn._baud, self._conn._axis) + port = self._conn.active_port or self._conn._fixed_port + if port: + self._serial_config = (port, self._conn._baud, self._conn._axis) self._tuning.set_client(self._client) self._control.set_client(self._client) self._analysis._client = self._client @@ -176,6 +177,8 @@ def _on_client_ready(self, client: object) -> None: self._client.scope_start() except TunerError: pass + self._link_ping_seen = False + self._ping_fail_streak = 0 text, qss = make_badge_qss("LINK_WAIT") self._link_badge.setText(text) self._link_badge.setStyleSheet(qss) @@ -183,6 +186,7 @@ def _on_client_ready(self, client: object) -> None: def _on_client_lost(self) -> None: self._stop_poll_worker() self._client = None + self._serial_config = None self._tuning.set_client(None) self._control.set_client(None) self._analysis._client = None @@ -252,18 +256,83 @@ def _on_ping_finished(self, ok: bool, err: str) -> None: self._ping_fail_streak += 1 if self._client is None: return - if not self._link_ping_seen: - return if self._ping_fail_streak >= _LINK_DOWN_AFTER_CONSECUTIVE_PING_FAILS: self._set_link_badge("LINK_DOWN") else: self._set_link_badge("LINK_OK") + if (not ok + and self._serial_config is not None + and self._poll_error_implies_dead_transport(err) + and self._maybe_reconnect()): + QMetaObject.invokeMethod( + self._poll_worker, "ping_now", Qt.QueuedConnection) def _set_link_badge(self, key: str) -> None: text, qss = make_badge_qss(key) self._link_badge.setText(text) self._link_badge.setStyleSheet(qss) + @staticmethod + def _poll_error_implies_dead_transport(err: str) -> bool: + el = (err or "").lower() + if ("link not running" in el or "reader stopped" in el + or "link i/o:" in el): + return True + return any(s in el for s in ( + "errno 5", "[errno 5]", "input/output error", + "bad file descriptor", "serial send failed", + "timeout waiting for response", "device disconnected", + )) + + def _maybe_reconnect(self) -> bool: + if self._serial_config is None: + return False + now = time.monotonic() + if now - self._last_reconnect_mono < 1.0: + return False + self._last_reconnect_mono = now + return self._reconnect_serial() + + def _reconnect_serial(self) -> bool: + assert self._serial_config is not None + self._tuning.last_poll_ok = False + self._link_ping_seen = False + self._ping_fail_streak = 0 + if self._poll_worker is not None: + self._poll_worker.suspend_requested.emit(True) + time.sleep(0.15) + success = False + try: + self._tuning.detach_log_reader() + old = self._client.reader if self._client else None + if old is not None: + try: + old.stop() + except Exception: + pass + port, baud, _axis = self._serial_config + t = SerialTransport(port=port, baud=baud) + r = LinkReader(t) + r.start() + time.sleep(0.15) + if self._client is not None: + self._client.replace_reader(r) + self._svm.attach_reader(r) + self._states.attach_reader(r) + self._tuning.rebind_log_reader() + success = True + except Exception: + success = False + finally: + if self._poll_worker is not None: + QMetaObject.invokeMethod( + self._poll_worker, "run_post_reconnect_reads", + Qt.QueuedConnection) + QMetaObject.invokeMethod( + self._poll_worker, "finish_reconnect", + Qt.QueuedConnection) + return success + def _on_poll_finished( self, ok: bool, @@ -272,8 +341,17 @@ def _on_poll_finished( if ok and snap is not None: self._tuning.apply_poll_snapshot(snap) self._control.apply_override_state(snap.override_active) + self._config.nvs.update_live( + snap.kp, snap.ki, snap.lim, snap.fc) + self._config.nvs.set_calibration_present(snap.cal_present) + self._current.motor.set_kp_ki_hint(snap.kp, snap.ki) else: self._tuning.apply_poll_error(err or "poll failed") + if (self._serial_config is not None + and not self._tuning.last_poll_ok + and self._poll_error_implies_dead_transport(err) + and self._maybe_reconnect()): + self._tuning.poll_refresh_requested.emit(True) if self._client is not None: self._states.set_interactive(self._client.reader.is_running) @@ -289,9 +367,11 @@ def _on_device_reads_ready( t = shadows self._tuning.apply_nvs_shadow_floats( t[0], t[1], t[2], t[3], t[4], t[5]) + self._current.motor.apply_nvs_motor(t[0], t[1], t[2]) + self._config.nvs.capture_nvs_reference( + t[3], t[4], self._tuning._lim_spin.value(), t[5]) if pole is not None: self._analysis.set_motor_pole_pairs_silent(int(pole)) - self._tuning._notify_params_changed() def _on_params(self, r: float, l: float, bw: float, kp: float, ki: float) -> None: diff --git a/tools/espfoc_tool/gui/motor_model_rail.py b/tools/espfoc_tool/gui/motor_model_rail.py new file mode 100644 index 00000000..7b4c24fc --- /dev/null +++ b/tools/espfoc_tool/gui/motor_model_rail.py @@ -0,0 +1,79 @@ +"""Current-design sidebar: R, L, bandwidth for MPZ plots.""" + +from __future__ import annotations + +from typing import Callable, Optional + +from PySide6.QtWidgets import ( + QFormLayout, + QGroupBox, + QVBoxLayout, + QWidget, +) + +from .tuning_panel import _spin + + +class MotorModelRail(QWidget): + def __init__( + self, + on_params_changed: Optional[Callable[[float, float, float, + float, float], None]] = None, + parent: QWidget | None = None, + ) -> None: + super().__init__(parent) + self._on_params_changed = on_params_changed + self._last_r = 1.08 + self._last_l = 0.0018 + self._last_bw = 150.0 + + root = QVBoxLayout(self) + box = QGroupBox("Motor model") + form = QFormLayout(box) + self._r_spin = _spin(0.001, 1000.0, 4, self._last_r, + step=0.01, suffix=" Ω") + self._l_mh_spin = _spin(0.001, 10_000.0, 4, + self._last_l * 1000.0, + step=0.01, suffix=" mH") + self._bw_spin = _spin(1.0, 5000.0, 1, self._last_bw, + step=10.0, suffix=" Hz") + form.addRow("R", self._r_spin) + form.addRow("L", self._l_mh_spin) + form.addRow("Bandwidth", self._bw_spin) + root.addWidget(box) + root.addStretch(1) + + for sp in (self._r_spin, self._l_mh_spin, self._bw_spin): + sp.valueChanged.connect(self._notify) + + if self._on_params_changed is not None: + self._notify() + + def set_kp_ki_hint(self, kp: float, ki: float) -> None: + self._kp_hint = kp + self._ki_hint = ki + self._notify() + + def _notify(self) -> None: + if self._on_params_changed is None: + return + l_h = self._l_mh_spin.value() * 1e-3 + kp = getattr(self, "_kp_hint", 1.0) + ki = getattr(self, "_ki_hint", 100.0) + self._on_params_changed( + self._r_spin.value(), l_h, self._bw_spin.value(), kp, ki) + + def apply_nvs_motor(self, r: float, l_h: float, bw: float) -> None: + for sp in (self._r_spin, self._l_mh_spin, self._bw_spin): + sp.blockSignals(True) + try: + if r > 1e-10: + self._r_spin.setValue(r) + if l_h > 1e-12: + self._l_mh_spin.setValue(l_h * 1e3) + if bw > 0.5: + self._bw_spin.setValue(bw) + finally: + for sp in (self._r_spin, self._l_mh_spin, self._bw_spin): + sp.blockSignals(False) + self._notify() diff --git a/tools/espfoc_tool/gui/nvs_diff_panel.py b/tools/espfoc_tool/gui/nvs_diff_panel.py new file mode 100644 index 00000000..df7254bb --- /dev/null +++ b/tools/espfoc_tool/gui/nvs_diff_panel.py @@ -0,0 +1,181 @@ +"""NVS / live tuning diff: editor vs device, RMW store.""" + +from __future__ import annotations + +from typing import Optional + +from PySide6.QtWidgets import ( + QFormLayout, + QGroupBox, + QHBoxLayout, + QLabel, + QPushButton, + QVBoxLayout, + QWidget, +) + +from ..protocol import TunerClient, TunerError + + +class NvsDiffPanel(QWidget): + """Right-hand Config card: live vs editor, write dirty fields, store NVS.""" + + _EPS_KP = 0.02 + _EPS_KI = 1.0 + _EPS_LIM = 0.05 + _EPS_FC = 1.0 + + def __init__( + self, + client: Optional[TunerClient] = None, + kp_spin=None, + ki_spin=None, + lim_spin=None, + fc_spin=None, + parent: QWidget | None = None, + ) -> None: + super().__init__(parent) + self._client = client + self._kp_spin = kp_spin + self._ki_spin = ki_spin + self._lim_spin = lim_spin + self._fc_spin = fc_spin + self._live = {"kp": 0.0, "ki": 0.0, "lim": 0.0, "fc": 0.0} + + root = QVBoxLayout(self) + box = QGroupBox("Live vs editor (NVS RMW on store)") + form = QFormLayout(box) + mono = "font-family: monospace; font-size: 12px;" + self._live_kp = QLabel("-") + self._live_ki = QLabel("-") + self._live_lim = QLabel("-") + self._live_fc = QLabel("-") + self._delta_kp = QLabel("-") + self._delta_ki = QLabel("-") + self._delta_lim = QLabel("-") + self._delta_fc = QLabel("-") + for w in ( + self._live_kp, self._live_ki, self._live_lim, self._live_fc, + self._delta_kp, self._delta_ki, self._delta_lim, self._delta_fc, + ): + w.setStyleSheet(mono) + form.addRow("Kp live", self._live_kp) + form.addRow("Kp Δ edit", self._delta_kp) + form.addRow("Ki live", self._live_ki) + form.addRow("Ki Δ edit", self._delta_ki) + form.addRow("ILim live", self._live_lim) + form.addRow("ILim Δ edit", self._delta_lim) + form.addRow("fc live", self._live_fc) + form.addRow("fc Δ edit", self._delta_fc) + self._nvs_hint = QLabel("NVS: —") + self._nvs_hint.setWordWrap(True) + self._nvs_hint.setStyleSheet("color: #9aa0a6; font-size: 11px;") + form.addRow(self._nvs_hint) + root.addWidget(box) + + self._write_btn = QPushButton("Write dirty fields to device") + self._write_btn.clicked.connect(self._on_write_dirty) + self._store_btn = QPushButton("Store to NVS (RMW)") + self._store_btn.clicked.connect(self._on_store) + row = QHBoxLayout() + row.addWidget(self._write_btn) + row.addWidget(self._store_btn) + root.addLayout(row) + self._erase_btn = QPushButton("Erase NVS calibration") + self._erase_btn.clicked.connect(self._on_erase) + root.addWidget(self._erase_btn) + root.addStretch(1) + self._status = QLabel("") + self._status.setStyleSheet("color: #ef5350; font-size: 11px;") + root.addWidget(self._status) + + def set_client(self, client: Optional[TunerClient]) -> None: + self._client = client + + def set_actions_enabled(self, on: bool) -> None: + self._write_btn.setEnabled(on) + self._store_btn.setEnabled(on) + self._erase_btn.setEnabled(on) + + def set_calibration_present(self, present: bool) -> None: + self._nvs_hint.setText( + "NVS: calibration present — Store merges only changed tuning fields." + if present else "NVS: empty — Store writes a new blob.") + + def update_live(self, kp: float, ki: float, lim: float, fc: float) -> None: + self._live = {"kp": kp, "ki": ki, "lim": lim, "fc": fc} + self._live_kp.setText(f"{kp:9.4f}") + self._live_ki.setText(f"{ki:9.2f}") + self._live_lim.setText(f"{lim:9.3f}") + self._live_fc.setText(f"{fc:9.1f}") + self._refresh_deltas() + + def _editor_values(self) -> dict[str, float]: + return { + "kp": self._kp_spin.value() if self._kp_spin else 0.0, + "ki": self._ki_spin.value() if self._ki_spin else 0.0, + "lim": self._lim_spin.value() if self._lim_spin else 0.0, + "fc": self._fc_spin.value() if self._fc_spin else 0.0, + } + + def _refresh_deltas(self) -> None: + ed = self._editor_values() + self._set_delta(self._delta_kp, ed["kp"] - self._live["kp"], self._EPS_KP) + self._set_delta(self._delta_ki, ed["ki"] - self._live["ki"], self._EPS_KI) + self._set_delta(self._delta_lim, ed["lim"] - self._live["lim"], self._EPS_LIM) + self._set_delta(self._delta_fc, ed["fc"] - self._live["fc"], self._EPS_FC) + + @staticmethod + def _set_delta(lbl: QLabel, d: float, eps: float) -> None: + if abs(d) <= eps: + lbl.setText("—") + lbl.setStyleSheet("font-family: monospace; color: #66bb6a;") + else: + lbl.setText(f"{d:+.4f}") + lbl.setStyleSheet("font-family: monospace; color: #ffb300;") + + def refresh_from_editor(self) -> None: + self._refresh_deltas() + + def _require_client(self) -> Optional[TunerClient]: + if self._client is None: + self._status.setText("Connect a board first.") + return None + self._status.setText("") + return self._client + + def _on_write_dirty(self) -> None: + cli = self._require_client() + if cli is None: + return + ed = self._editor_values() + try: + if abs(ed["kp"] - self._live["kp"]) > self._EPS_KP: + cli.write_kp(ed["kp"]) + if abs(ed["ki"] - self._live["ki"]) > self._EPS_KI: + cli.write_ki(ed["ki"]) + if abs(ed["lim"] - self._live["lim"]) > self._EPS_LIM: + cli.write_int_lim(ed["lim"]) + if abs(ed["fc"] - self._live["fc"]) > self._EPS_FC: + cli.write_current_filter_fc(ed["fc"]) + except TunerError as e: + self._status.setText(str(e)) + + def _on_store(self) -> None: + cli = self._require_client() + if cli is None: + return + try: + self._on_write_dirty() + cli.store_calibration() + except TunerError as e: + self._status.setText(str(e)) + + def _on_erase(self) -> None: + cli = self._require_client() + if cli is None: + return + try: + cli.erase_calibration() + except TunerError as e: + self._status.setText(str(e)) diff --git a/tools/espfoc_tool/gui/theme.py b/tools/espfoc_tool/gui/theme.py index 80fa5353..d13e4f40 100644 --- a/tools/espfoc_tool/gui/theme.py +++ b/tools/espfoc_tool/gui/theme.py @@ -165,9 +165,9 @@ def apply_dark_theme(app: QApplication, *, use_opengl_plots: bool = True) -> Non }} QGroupBox {{ border: 1px solid {_BORDER}; - border-radius: 6px; - margin-top: 12px; - padding: 6px; + border-radius: 12px; + margin-top: 14px; + padding: 10px 8px 8px 8px; background-color: {_BG_ALT}; }} QGroupBox::title {{ diff --git a/tools/espfoc_tool/gui/tuning_panel.py b/tools/espfoc_tool/gui/tuning_panel.py index cc50a5fb..f24f0785 100644 --- a/tools/espfoc_tool/gui/tuning_panel.py +++ b/tools/espfoc_tool/gui/tuning_panel.py @@ -2,7 +2,7 @@ from __future__ import annotations -from typing import Callable, Optional +from typing import Optional from PySide6.QtCore import Qt, QTimer, Signal from PySide6.QtGui import QFont @@ -62,16 +62,10 @@ class TuningPanel(QWidget): long_operation = Signal(bool) poll_refresh_requested = Signal(bool) - def __init__(self, client: Optional[TunerClient] = None, - on_params_changed: Optional[Callable[[float, float, float, - float, float], None]] = None) -> None: + def __init__(self, client: Optional[TunerClient] = None) -> None: super().__init__() self._client = client self.last_poll_ok: bool = False - self._on_params_changed = on_params_changed - self._last_motor_r = 1.08 - self._last_motor_l = 0.0018 - self._last_bw = 150.0 self._cal_present = False self.last_axis_state: Optional[AxisStateFlag] = None @@ -139,50 +133,19 @@ def __init__(self, client: Optional[TunerClient] = None, mform.addRow(btn_apply) root.addWidget(manual) - # --- Motor model (analysis tab) --- - mpz = QGroupBox("Motor model (analysis)") - mfrm = QFormLayout(mpz) - self._r_spin = _spin(0.001, 1000.0, 4, self._last_motor_r, - step=0.01, suffix=" Ω") - self._l_mh_spin = _spin(0.001, 10_000.0, 4, - self._last_motor_l * 1000.0, - step=0.01, suffix=" mH") - self._bw_spin = _spin(1.0, 5000.0, 1, self._last_bw, - step=10.0, suffix=" Hz") + fc_box = QGroupBox("Current filter") + fc_form = QFormLayout(fc_box) self._fc_spin = _spin(10.0, 20000.0, 1, 300.0, step=10.0, suffix=" Hz") - mfrm.addRow("R", self._r_spin) - mfrm.addRow("L", self._l_mh_spin) - mfrm.addRow("Bandwidth", self._bw_spin) - mfrm.addRow("I-LPF fc", self._fc_spin) - btn_fc = QPushButton("Apply current LPF cutoff") + btn_fc = QPushButton("Apply I-LPF cutoff") btn_fc.clicked.connect(self._on_apply_fc) - mfrm.addRow(btn_fc) - root.addWidget(mpz) - # Push any initial model to the Analysis view. - if self._on_params_changed is not None: - self._on_params_changed(self._last_motor_r, self._last_motor_l, - self._last_bw, - self._kp_spin.value(), - self._ki_spin.value()) - for spin in (self._r_spin, self._l_mh_spin, self._bw_spin, - self._kp_spin, self._ki_spin): - spin.valueChanged.connect(self._notify_params_changed) - - # --- Calibration (motion / align live on Control view) --- - align = QGroupBox("Calibration NVS") - align_layout = QVBoxLayout(align) + fc_form.addRow("I-LPF fc", self._fc_spin) + fc_form.addRow(btn_fc) + root.addWidget(fc_box) + self._cal_label = QLabel("calibration: -") self._cal_label.setStyleSheet("font-family: monospace; color: #9aa0a6;") - align_layout.addWidget(self._cal_label) - cal_btns = QHBoxLayout() - for label, slot in (("Store NVS", self._on_persist), - ("Erase", self._on_erase)): - b = QPushButton(label) - b.clicked.connect(slot) - cal_btns.addWidget(b) - align_layout.addLayout(cal_btns) - root.addWidget(align) + root.addWidget(self._cal_label) # --- Log channel viewer --- self._log_view = QPlainTextEdit() @@ -271,7 +234,6 @@ def _on_apply_manual(self) -> None: self._status.setText(str(e)) return self._status.setText("") - self._notify_params_changed() def _on_apply_fc(self) -> None: if self._client is None: @@ -294,27 +256,6 @@ def _set_axis_badge_key(self, key: str) -> None: self._state_label.setText(label) self._state_label.setStyleSheet(qss) - def _on_persist(self) -> None: - if self._client is None: - return - try: - self._client.store_calibration() - except TunerError as e: - self._status.setText(str(e)) - return - self._status.setText("") - self.poll_refresh_requested.emit(True) - - def _on_erase(self) -> None: - if self._client is None: - return - try: - self._client.erase_calibration() - except TunerError as e: - self._status.setText(str(e)) - return - self.poll_refresh_requested.emit(True) - # --- LOG channel viewer -------------------------------------------- def _on_log_reader(self, seq: int, payload: bytes) -> None: @@ -328,14 +269,6 @@ def _append_log(self, line: str) -> None: if line: self._log_view.appendPlainText(line.rstrip("\n")) - def _notify_params_changed(self) -> None: - if self._on_params_changed is None: - return - motor_l_h = self._l_mh_spin.value() * 1e-3 # mH -> H for the model - self._on_params_changed(self._r_spin.value(), motor_l_h, - self._bw_spin.value(), - self._kp_spin.value(), self._ki_spin.value()) - def apply_nvs_shadow_floats( self, r: float, @@ -346,27 +279,16 @@ def apply_nvs_shadow_floats( fc: float, ) -> None: """Apply NVS-shadow values to spinboxes (GUI thread only; no I/O).""" - for sp in (self._r_spin, self._l_mh_spin, self._bw_spin, - self._kp_spin, self._ki_spin, self._fc_spin): + for sp in (self._kp_spin, self._ki_spin, self._fc_spin): sp.blockSignals(True) try: - if r > 1e-10: - self._r_spin.setValue(r) - if l_h > 1e-12: - self._l_mh_spin.setValue(l_h * 1e3) - if bw > 0.5: - self._bw_spin.setValue(bw) self._kp_spin.setValue(kp) self._ki_spin.setValue(ki) if fc > 0.0: self._fc_spin.setValue(fc) finally: - for sp in (self._r_spin, self._l_mh_spin, self._bw_spin, - self._kp_spin, self._ki_spin, self._fc_spin): + for sp in (self._kp_spin, self._ki_spin, self._fc_spin): sp.blockSignals(False) - self._last_motor_r = self._r_spin.value() - self._last_motor_l = self._l_mh_spin.value() * 1e-3 - self._last_bw = self._bw_spin.value() def sync_motor_from_nvs_shadows(self) -> None: """Pull R/L/BW and live controls from the target (blocks on :class:`TunerClient`). diff --git a/tools/espfoc_tool/gui/views/__init__.py b/tools/espfoc_tool/gui/views/__init__.py new file mode 100644 index 00000000..50ca6a98 --- /dev/null +++ b/tools/espfoc_tool/gui/views/__init__.py @@ -0,0 +1,6 @@ +"""espFoC Tool main views.""" + +from .config_view import ConfigView +from .current_view import CurrentView + +__all__ = ["ConfigView", "CurrentView"] diff --git a/tools/espfoc_tool/gui/views/config_view.py b/tools/espfoc_tool/gui/views/config_view.py new file mode 100644 index 00000000..219a64fa --- /dev/null +++ b/tools/espfoc_tool/gui/views/config_view.py @@ -0,0 +1,32 @@ +"""Config view: tuning controls + NVS diff panel.""" + +from __future__ import annotations + +from PySide6.QtCore import Qt +from PySide6.QtWidgets import QHBoxLayout, QSplitter, QWidget + +from ..nvs_diff_panel import NvsDiffPanel +from ..tuning_panel import TuningPanel + + +class ConfigView(QWidget): + def __init__(self, tuning: TuningPanel, parent: QWidget | None = None) -> None: + super().__init__(parent) + lay = QHBoxLayout(self) + lay.setContentsMargins(0, 0, 0, 0) + split = QSplitter(Qt.Horizontal) + split.addWidget(tuning) + self.nvs = NvsDiffPanel( + kp_spin=tuning._kp_spin, + ki_spin=tuning._ki_spin, + lim_spin=tuning._lim_spin, + fc_spin=tuning._fc_spin, + ) + split.addWidget(self.nvs) + split.setStretchFactor(0, 3) + split.setStretchFactor(1, 2) + split.setSizes([520, 340]) + lay.addWidget(split) + for sp in (tuning._kp_spin, tuning._ki_spin, + tuning._lim_spin, tuning._fc_spin): + sp.valueChanged.connect(self.nvs.refresh_from_editor) diff --git a/tools/espfoc_tool/gui/views/current_view.py b/tools/espfoc_tool/gui/views/current_view.py new file mode 100644 index 00000000..d42d10d4 --- /dev/null +++ b/tools/espfoc_tool/gui/views/current_view.py @@ -0,0 +1,31 @@ +"""Current design view: motor model rail + analysis plots.""" + +from __future__ import annotations + +from typing import Callable, Optional + +from PySide6.QtCore import Qt +from PySide6.QtWidgets import QHBoxLayout, QSplitter, QWidget + +from ..analysis_panel import AnalysisPanel +from ..motor_model_rail import MotorModelRail + + +class CurrentView(QWidget): + def __init__( + self, + analysis: AnalysisPanel, + on_params_changed: Optional[Callable] = None, + parent: QWidget | None = None, + ) -> None: + super().__init__(parent) + lay = QHBoxLayout(self) + lay.setContentsMargins(0, 0, 0, 0) + split = QSplitter(Qt.Horizontal) + self.motor = MotorModelRail(on_params_changed=on_params_changed) + split.addWidget(self.motor) + split.addWidget(analysis) + split.setStretchFactor(0, 0) + split.setStretchFactor(1, 1) + split.setSizes([220, 900]) + lay.addWidget(split) From a049e6f7383c3c1ba65c688bc5038d997b27b8ee Mon Sep 17 00:00:00 2001 From: Felipe Neves Date: Mon, 1 Jun 2026 20:21:32 -0300 Subject: [PATCH 3/4] Document espFoC Tool workflow and re-enable host CI tests. Add doc/TUNING.md with views, scope map, and espfocctl reference; align README and changelog; enable python_tests job; fix stale host unit tests for v2 link. --- .github/workflows/espfoc_flow.yaml | 2 - Kconfig | 2 +- README.md | 16 +- changelog.txt | 15 ++ doc/TUNING.md | 179 ++++++++++++++++++ doc/images/README.md | 20 ++ tools/espfoc_tool/README.md | 33 +++- tools/espfoc_tool/tests/test_link_codec.py | 2 +- tools/espfoc_tool/tests/test_link_io_tuner.py | 2 + 9 files changed, 250 insertions(+), 21 deletions(-) create mode 100644 doc/TUNING.md create mode 100644 doc/images/README.md diff --git a/.github/workflows/espfoc_flow.yaml b/.github/workflows/espfoc_flow.yaml index 5bd5817f..5bfc95df 100644 --- a/.github/workflows/espfoc_flow.yaml +++ b/.github/workflows/espfoc_flow.yaml @@ -75,9 +75,7 @@ jobs: idf.py build popd - # Temporarily disabled while tuner protocol / axis lifecycle catches up with Studio. python_tests: - if: false name: espFoC Tool host tests runs-on: ubuntu-latest steps: diff --git a/Kconfig b/Kconfig index 436eb324..311ca0fb 100644 --- a/Kconfig +++ b/Kconfig @@ -147,7 +147,7 @@ menu "espFoC Settings" depends on ESP_FOC_TUNER_ENABLE default ESP_FOC_BRIDGE_NONE help - Physical bus for Tuner Studio or custom host tools. + Physical bus for espFoC Tool / espfocctl or custom host tools. config ESP_FOC_BRIDGE_NONE bool "None (weak callbacks in application)" diff --git a/README.md b/README.md index 4c6e80d9..175edf84 100644 --- a/README.md +++ b/README.md @@ -92,12 +92,13 @@ It opens without a board connected (USB auto-scan) and exposes four views: | View | Purpose | |------|---------| -| **Config** | Live gains, NVS store/erase, motor parameters | -| **Current** | MPZ design plots (step, Bode, pole-zero, root locus) | +| **Config** | Live gains, editor vs device diff, write dirty fields, NVS RMW store/erase | +| **Current** | Motor R/L/bw + MPZ plots (step, Bode, pole-zero, root locus) | | **Control** | id/iq targets, align, E-stop, SVPWM hexagon | -| **States** | Named scope channels (axis_tuning wire map) | +| **States** | Named scope channels ([axis_tuning](examples/axis_tuning) wire map) | OpenGL plot rendering is enabled by default; set `ESPFOC_TOOL_NO_GL=1` to disable. +Full workflow: [`doc/TUNING.md`](doc/TUNING.md). ### Launch espFoC Tool @@ -142,6 +143,8 @@ and NVS store/erase from scripts: ```bash PYTHONPATH=tools python3 -m espfoc_tool.cli.espfocctl --port /dev/ttyACM0 -i +# one-shot E-stop: +PYTHONPATH=tools python3 -m espfoc_tool.cli.espfocctl --port /dev/ttyACM0 estop ``` --- @@ -224,12 +227,11 @@ loop contains no floating-point operations. ``` espFoC/ ├── doc/ -│ ├── images/ # architecture, espFoC Tool logo, demo gif -│ └── TUNING.md # deep dive: autogen, runtime API, protocol, CLI +│ ├── images/ # architecture, espFoC Tool logo, demo gifs +│ └── TUNING.md # espFoC Tool + espfocctl workflow and scope map ├── examples/ # axis_tuning / unit_test_runner / test_drivers ├── include/espFoC/ # public API -├── scripts/ -│ └── motors/*.json # motor profiles consumed by the autotuner +├── scripts/ # gen_iq31_sin_lut.py, build_samples.sh ├── source/ │ ├── calibration/ # NVS calibration format and axis helpers │ ├── drivers/ # inverters, encoders, shunts, tuner bridges diff --git a/changelog.txt b/changelog.txt index 34acf031..b5ca5c73 100644 --- a/changelog.txt +++ b/changelog.txt @@ -6,6 +6,21 @@ This file is used to generate GitHub releases. All versions from 2.0.0 onward ar ## Unreleased +### Added + +- **espFoC Tool** (`tools/espfoc_tool`) — PySide6 control GUI replacing TunerStudio: Config / Current / Control / States views, USB auto-scan, offline navigation, OpenGL plots by default. +- **`espfocctl`** — CLI rename from `tunerctl`; adds `estop` (id/iq zero + stop). +- **`doc/TUNING.md`** — host tuning reference (views, scope map, CLI, troubleshooting). + +### Removed + +- **TunerStudio** host app (`tools/espfoc_studio`), generic Scope tab, in-GUI demo/loopback mode, Generate App / Hardware tabs (never shipped in 3.x tree). + +### Changed + +- Host package **`espfoc_studio` → `espfoc_tool`**; launch with `python -m espfoc_tool.gui`. +- CI **`python_tests`** job runs `tools/espfoc_tool/tests` (offscreen Qt, no GL). + ### Removed - **Tuner override mode** (`CMD_OVERRIDE_ON/OFF`, `TUNER_OVERRIDE` state bit, `ESP_FOC_TUNER_ALWAYS_OVERRIDE_VOLTAGE_MODE`). Host writes `target_i_d` / `target_i_q` directly while the axis is `RUNNING`. diff --git a/doc/TUNING.md b/doc/TUNING.md new file mode 100644 index 00000000..e02f1295 --- /dev/null +++ b/doc/TUNING.md @@ -0,0 +1,179 @@ +# espFoC Tool — tuning and host protocol + +This document describes how to control an espFoC axis from the host using +**espFoC Tool** (GUI) or **espfocctl** (CLI). Both use the same binary link +layer and tuner protocol implemented in firmware (`esp_foc_link`, `esp_foc_tuner`). + +--- + +## Prerequisites + +```bash +pip install -r tools/espfoc_tool/requirements.txt +export PYTHONPATH=tools # or prefix every command with PYTHONPATH=tools +``` + +Reference firmware: [`examples/axis_tuning`](../examples/axis_tuning). It advertises +firmware type **`TSGX`** so auto-scan can recognise the board. + +Enable in your own project: + +- `CONFIG_ESP_FOC_TUNER_ENABLE=y` +- `CONFIG_ESP_FOC_BRIDGE_UART` or `CONFIG_ESP_FOC_BRIDGE_USBCDC` +- `CONFIG_ESP_FOC_SCOPE=y` (for States / Control plots) + +--- + +## Quick start (GUI) + +```bash +python3 -m espfoc_tool.gui +# optional fixed port (skips USB scan): +python3 -m espfoc_tool.gui --port /dev/ttyACM0 --baud 921600 +``` + +1. Wait for **CONNECTED** (or plug the board — scan runs every 2 s). +2. **Control** → **Align axis** (rotor direction + encoder zero). +3. **Control** → enable **Override active** (starts `RUN`). +4. Set **iq** / **id** with spinboxes or nudge buttons. +5. **Config** → tune Kp/Ki, **Write dirty fields**, then **Store to NVS (RMW)**. +6. **E-STOP** or disable override → `stop` (inverter disabled, targets zeroed). + +The GUI works **offline**: all views are navigable without a board; device +actions stay disabled until connected. + +--- + +## Views + +### Config + +| Area | Purpose | +|------|---------| +| Left | Live gains, manual Kp/Ki/ILim editor, I-LPF cutoff, axis badge, firmware log | +| Right | **Live vs editor** diff; **Write dirty fields**; **Store to NVS** (firmware RMW); **Erase NVS** | + +NVS **store** only writes tuning fields that changed relative to the blob +(`esp_foc_calibration_axis_tuner_store` on device). Align data in NVS is not +edited from the tool in this release. + +### Current design + +| Area | Purpose | +|------|---------| +| Left | Motor **R**, **L**, **bandwidth** for MPZ synthesis | +| Right | Predicted step, Bode, pole-zero, root locus | +| Actions | **Apply MPZ to RAM** writes computed Kp/Ki/ILim to the device | + +Pole pairs can be pushed to the target from this view (persist with Config → Store). + +### Control + +| Area | Purpose | +|------|---------| +| Left | Override, id/iq spinboxes + nudge, align, **E-STOP** | +| Right | SVPWM hexagon + phase waveforms (scope ch 10–12 on `axis_tuning`) | + +**E-STOP** sequence: id/iq → 0, `stop` axis (also calls `inverter.disable` via +`park_inverter_safe`). + +### States + +Rolling plots for all scope channels wired in `axis_tuning` (see table below). +Requires scope streaming (`scope_start` on connect in the GUI). + +--- + +## Scope channel map (`axis_tuning`) + +| Ch | Signal | +|----|--------| +| 0 | id target | +| 1 | id measured | +| 2 | iq target | +| 3 | iq measured | +| 4 | ud | +| 5 | uq | +| 6 | θ_meas mech | +| 7 | θ_est mech | +| 8 | ω_est mech | +| 9 | PLL error | +| 10 | iu | +| 11 | iv | +| 12 | iα | +| 13 | FOC hot-path µs | + +Other examples may use different maps; only `axis_tuning` is the contract for espFoC Tool. + +--- + +## espfocctl (CLI) + +Interactive: + +```bash +python3 -m espfoc_tool.cli.espfocctl --port /dev/ttyACM0 -i +``` + +One-shot: + +```bash +python3 -m espfoc_tool.cli.espfocctl --port /dev/ttyACM0 align +python3 -m espfoc_tool.cli.espfocctl --port /dev/ttyACM0 estop +``` + +| Command | Description | +|---------|-------------| +| `connect` / `disconnect` | Link session | +| `status` | Heartbeat + axis state flags | +| `read` | Kp, Ki, Kd, Kff, ILim, Vmax | +| `write --kp … --ki …` | Write gains | +| `align` | Rotor alignment | +| `run` / `stop` | Start / stop FOC loop | +| `set-target id\|iq VALUE` | Current references (A) | +| `store` / `erase` | NVS calibration | +| `cutoff [--set HZ]` | Current LPF | +| `scope-start` / `scope-stop` | Scope stream | +| `firmware-type` | FourCC (expect `TSGX` on axis_tuning) | +| `estop` | id/iq=0 + stop | + +--- + +## Environment variables + +| Variable | Effect | +|----------|--------| +| `ESPFOC_TOOL_NO_GL=1` | Disable OpenGL plot rendering | +| `ESPFOC_TOOL_SCOPE_CSV=1` | Decode legacy CSV scope (if firmware built with legacy CSV) | +| `QT_QPA_PLATFORM=offscreen` | Headless CI / smoke tests | + +--- + +## Host tests + +```bash +QT_QPA_PLATFORM=offscreen ESPFOC_TOOL_NO_GL=1 PYTHONPATH=tools \ + python3 -m pytest tools/espfoc_tool/tests/ -v +``` + +`FakeTunerLoopback` is for unit tests only — not exposed in the GUI. + +--- + +## Troubleshooting + +| Symptom | Check | +|---------|--------| +| Stuck on SCANNING | Cable, driver, correct port; firmware must expose bridge + `TSGX` | +| NO LINK after connect | Heartbeat / baud (default 921600); another app holding the port | +| Align fails | Motor wiring, pole pairs, sensor; see serial log in Config | +| States flat | `CONFIG_ESP_FOC_SCOPE`, scope started, PWM loop running | +| Plots slow on VM | `ESPFOC_TOOL_NO_GL=1` or smaller window | + +--- + +## FITL builds + +Firmware built with `CONFIG_ESP_FOC_FITL` simulates plant + sensors in software. +espFoC Tool treats it like a normal target (`TSGX`); use **axis_tuning** without +FITL when validating real hardware. diff --git a/doc/images/README.md b/doc/images/README.md new file mode 100644 index 00000000..8d979ee0 --- /dev/null +++ b/doc/images/README.md @@ -0,0 +1,20 @@ +# Documentation images + +| File | Description | +|------|-------------| +| `architecture.svg` | espFoC component architecture (README) | +| `espfoc_tool_logo.svg` | espFoC Tool icon / README header | +| `espfoc_tool_logo.png` | Raster variant for window icon | +| `espfoc_demo.gif` | Hardware demo (motor running) | +| `espfoc_tool.gif` | *(optional)* espFoC Tool screen capture for README | + +## Recording `espfoc_tool.gif` + +When the UI is stable: + +1. Run `axis_tuning` on hardware and connect espFoC Tool. +2. Capture 1280×720, ~15 s: connect → Config → Current → Control (iq step) → States. +3. Export as GIF (e.g. `ffmpeg` or Peek) and save as `espfoc_tool.gif`. +4. Link from the root `README.md` tuning section. + +Until then the SVG logo is used as the README visual. diff --git a/tools/espfoc_tool/README.md b/tools/espfoc_tool/README.md index ed4130cc..1d252fad 100644 --- a/tools/espfoc_tool/README.md +++ b/tools/espfoc_tool/README.md @@ -2,6 +2,8 @@ Desktop control GUI and CLI for espFoC targets over the link/tuner protocol. +**Documentation:** [`doc/TUNING.md`](../../doc/TUNING.md) + ## Install ```bash @@ -14,7 +16,13 @@ pip install -r tools/espfoc_tool/requirements.txt PYTHONPATH=tools python3 -m espfoc_tool.gui ``` -Options: `--port` (skip USB scan), `--baud`, `--axis`, `--no-gl`, `--scope-csv`. +| Flag | Description | +|------|-------------| +| `--port` | Fixed serial port (omit to auto-scan USB) | +| `--baud` | Default 921600 | +| `--axis` | Axis index 0..3 | +| `--no-gl` | CPU plot rendering | +| `--scope-csv` | Legacy CSV scope decode | ## CLI @@ -24,19 +32,24 @@ PYTHONPATH=tools python3 -m espfoc_tool.cli.espfocctl --port /dev/ttyACM0 -i ## Layout -- `link/` — framing, serial transport, scope decode -- `protocol/` — `TunerClient` (shared by GUI and CLI) -- `client/` — stable import alias `EspFocClient` -- `model/` — MPZ / Bode analysis (numpy) -- `gui/` — espFoC Tool views -- `cli/espfocctl.py` — scripted control +``` +espfoc_tool/ +├── client/ # EspFocClient alias (TunerClient) +├── link/ # framing, serial, scope decode +├── protocol/ # tuner requests +├── model/ # MPZ / Bode (numpy) +├── gui/ +│ ├── views/ # Config, Current wrappers +│ ├── app.py # Qt + OpenGL bootstrap +│ └── ... +└── cli/espfocctl.py +``` ## Tests ```bash QT_QPA_PLATFORM=offscreen ESPFOC_TOOL_NO_GL=1 PYTHONPATH=tools \ - python3 tools/espfoc_tool/tests/test_gui_smoke.py -pytest tools/espfoc_tool/tests/ + python3 -m pytest tools/espfoc_tool/tests/ -v ``` -`FakeTunerLoopback` is for unit tests only (not exposed in the GUI). +`FakeTunerLoopback` is unit-test only — not used by the GUI. diff --git a/tools/espfoc_tool/tests/test_link_codec.py b/tools/espfoc_tool/tests/test_link_codec.py index 43b4b016..f0c9552c 100644 --- a/tools/espfoc_tool/tests/test_link_codec.py +++ b/tools/espfoc_tool/tests/test_link_codec.py @@ -56,7 +56,7 @@ def test_encode_roundtrip_small(): def test_encode_roundtrip_empty(): - frame = encode(Channel.LOG, 0) + frame = encode(Channel.TUNER, 0) dec = Decoder() for b in frame[:-1]: assert dec.push(b) == Status.NEED_MORE diff --git a/tools/espfoc_tool/tests/test_link_io_tuner.py b/tools/espfoc_tool/tests/test_link_io_tuner.py index a8c6aec6..a24ef2a4 100644 --- a/tools/espfoc_tool/tests/test_link_io_tuner.py +++ b/tools/espfoc_tool/tests/test_link_io_tuner.py @@ -28,6 +28,7 @@ def close(self) -> None: r.start() try: c = TunerClient(r, axis=0) + c._connected = True with pytest.raises(TunerError) as einfo: c.read_kp() assert "link I/O" in str(einfo.value) @@ -55,6 +56,7 @@ def close(self) -> None: r.start() try: c = TunerClient(r, axis=0) + c._connected = True with pytest.raises(TunerError) as einfo: c.read_kp() assert "link I/O" in str(einfo.value) From 1e8013ba1b660bd6e82e73bd135bbe75a8247328 Mon Sep 17 00:00:00 2001 From: Felipe Neves Date: Mon, 1 Jun 2026 22:18:14 -0300 Subject: [PATCH 4/4] Unify espFoC Tool GUI into Tune/Dashboard and drop QML spike. Two-page layout replaces four-tab Config/Current/Control/States; shared dark theme, flash Read/Write/Patch, and docs match the shipping workflow. --- doc/TUNING.md | 60 ++-- doc/images/README.md | 2 +- tools/espfoc_tool/README.md | 39 ++- tools/espfoc_tool/gui/analysis_panel.py | 18 +- tools/espfoc_tool/gui/buttons.py | 50 +++ tools/espfoc_tool/gui/control_rail.py | 76 +++-- tools/espfoc_tool/gui/labels.py | 16 + tools/espfoc_tool/gui/main_window.py | 57 ++-- tools/espfoc_tool/gui/motor_model_rail.py | 65 ++-- tools/espfoc_tool/gui/nav_rail.py | 11 +- tools/espfoc_tool/gui/nvs_diff_panel.py | 174 ++++++---- tools/espfoc_tool/gui/states_panel.py | 10 +- tools/espfoc_tool/gui/svm_panel.py | 82 ++--- tools/espfoc_tool/gui/theme.py | 308 ++++++++++++++---- tools/espfoc_tool/gui/tuning_panel.py | 258 +++++---------- tools/espfoc_tool/gui/views/__init__.py | 6 +- tools/espfoc_tool/gui/views/config_view.py | 32 -- tools/espfoc_tool/gui/views/current_view.py | 31 -- tools/espfoc_tool/gui/views/dashboard_view.py | 57 ++++ tools/espfoc_tool/gui/views/tune_view.py | 86 +++++ tools/espfoc_tool/gui/widgets.py | 186 +++++++++++ tools/espfoc_tool/tests/test_gui_smoke.py | 7 +- 22 files changed, 1050 insertions(+), 581 deletions(-) create mode 100644 tools/espfoc_tool/gui/buttons.py create mode 100644 tools/espfoc_tool/gui/labels.py delete mode 100644 tools/espfoc_tool/gui/views/config_view.py delete mode 100644 tools/espfoc_tool/gui/views/current_view.py create mode 100644 tools/espfoc_tool/gui/views/dashboard_view.py create mode 100644 tools/espfoc_tool/gui/views/tune_view.py create mode 100644 tools/espfoc_tool/gui/widgets.py diff --git a/doc/TUNING.md b/doc/TUNING.md index e02f1295..907b6538 100644 --- a/doc/TUNING.md +++ b/doc/TUNING.md @@ -20,7 +20,7 @@ Enable in your own project: - `CONFIG_ESP_FOC_TUNER_ENABLE=y` - `CONFIG_ESP_FOC_BRIDGE_UART` or `CONFIG_ESP_FOC_BRIDGE_USBCDC` -- `CONFIG_ESP_FOC_SCOPE=y` (for States / Control plots) +- `CONFIG_ESP_FOC_SCOPE=y` (for Dashboard scope plots) --- @@ -32,55 +32,55 @@ python3 -m espfoc_tool.gui python3 -m espfoc_tool.gui --port /dev/ttyACM0 --baud 921600 ``` -1. Wait for **CONNECTED** (or plug the board — scan runs every 2 s). -2. **Control** → **Align axis** (rotor direction + encoder zero). -3. **Control** → enable **Override active** (starts `RUN`). -4. Set **iq** / **id** with spinboxes or nudge buttons. -5. **Config** → tune Kp/Ki, **Write dirty fields**, then **Store to NVS (RMW)**. -6. **E-STOP** or disable override → `stop` (inverter disabled, targets zeroed). +1. Wait for **CONNECTED** in the status bar (or plug the board — scan runs every 2 s). +2. Open **Dashboard** → **Run alignment** (rotor direction + encoder zero). +3. Enable **Manual setpoints**, set **iq** / **id** (nudge buttons optional). +4. Open **Tune** → edit Kp/Ki/lim/filter → **Write** (RAM) → **Patch** (flash). +5. **E-STOP** (Dashboard → Actions) or disable manual setpoints → axis stops. -The GUI works **offline**: all views are navigable without a board; device +The GUI works **offline**: both views are navigable without a board; device actions stay disabled until connected. --- ## Views -### Config +### Tune | Area | Purpose | |------|---------| -| Left | Live gains, manual Kp/Ki/ILim editor, I-LPF cutoff, axis badge, firmware log | -| Right | **Live vs editor** diff; **Write dirty fields**; **Store to NVS** (firmware RMW); **Erase NVS** | +| Left | Live gains, manual editor, **Apply gains** / **Apply filter**, serial log | +| Center | Device vs pending diff; flash badge (stored / empty) | +| Right | Motor **R**, **L**, **bandwidth**; MPZ step/Bode/pole-zero/root locus | -NVS **store** only writes tuning fields that changed relative to the blob -(`esp_foc_calibration_axis_tuner_store` on device). Align data in NVS is not -edited from the tool in this release. +**Flash actions** (center column): -### Current design +| Button | Action | +|--------|--------| +| **Read** | Load Kp, Ki, lim, filter cutoff from device RAM into the editor | +| **Write** | Push only fields that differ from live RAM | +| **Patch** | Write dirty fields, then **store calibration** to NVS (firmware RMW) | -| Area | Purpose | -|------|---------| -| Left | Motor **R**, **L**, **bandwidth** for MPZ synthesis | -| Right | Predicted step, Bode, pole-zero, root locus | -| Actions | **Apply MPZ to RAM** writes computed Kp/Ki/ILim to the device | +**Apply gains** under the MPZ plots writes synthesized Kp/Ki/lim from the motor model. +Pole pairs can be changed in the plot toolbar; persist with **Patch**. -Pole pairs can be pushed to the target from this view (persist with Config → Store). +NVS **store** only writes tuning fields that changed relative to the blob +(`esp_foc_calibration_axis_tuner_store` on device). Align data in NVS is not +edited from the tool in this release. -### Control +### Dashboard | Area | Purpose | |------|---------| -| Left | Override, id/iq spinboxes + nudge, align, **E-STOP** | -| Right | SVPWM hexagon + phase waveforms (scope ch 10–12 on `axis_tuning`) | +| Left — Motion | Manual setpoints, id/iq spinboxes + nudge | +| Left — Actions | **Run alignment**, **E-STOP**, **Autoset** (SVM/scope reset) | +| Right — top | SVPWM hexagon (pu) beside three-phase waveforms (scope ch 10–12) | +| Right — bottom | Rolling plots for all scope channels (`axis_tuning` map) | **E-STOP** sequence: id/iq → 0, `stop` axis (also calls `inverter.disable` via `park_inverter_safe`). -### States - -Rolling plots for all scope channels wired in `axis_tuning` (see table below). -Requires scope streaming (`scope_start` on connect in the GUI). +Scope streaming starts automatically on connect. --- @@ -166,8 +166,8 @@ QT_QPA_PLATFORM=offscreen ESPFOC_TOOL_NO_GL=1 PYTHONPATH=tools \ |---------|--------| | Stuck on SCANNING | Cable, driver, correct port; firmware must expose bridge + `TSGX` | | NO LINK after connect | Heartbeat / baud (default 921600); another app holding the port | -| Align fails | Motor wiring, pole pairs, sensor; see serial log in Config | -| States flat | `CONFIG_ESP_FOC_SCOPE`, scope started, PWM loop running | +| Align fails | Motor wiring, pole pairs, sensor; see serial log on **Tune** | +| Scope flat | `CONFIG_ESP_FOC_SCOPE`, scope started, PWM loop running | | Plots slow on VM | `ESPFOC_TOOL_NO_GL=1` or smaller window | --- diff --git a/doc/images/README.md b/doc/images/README.md index 8d979ee0..778f5ef4 100644 --- a/doc/images/README.md +++ b/doc/images/README.md @@ -13,7 +13,7 @@ When the UI is stable: 1. Run `axis_tuning` on hardware and connect espFoC Tool. -2. Capture 1280×720, ~15 s: connect → Config → Current → Control (iq step) → States. +2. Capture 1280×720, ~15 s: connect → Tune → Dashboard (iq step, scope). 3. Export as GIF (e.g. `ffmpeg` or Peek) and save as `espfoc_tool.gif`. 4. Link from the root `README.md` tuning section. diff --git a/tools/espfoc_tool/README.md b/tools/espfoc_tool/README.md index 1d252fad..30597a74 100644 --- a/tools/espfoc_tool/README.md +++ b/tools/espfoc_tool/README.md @@ -1,8 +1,8 @@ # espFoC Tool (host) -Desktop control GUI and CLI for espFoC targets over the link/tuner protocol. +Desktop GUI and CLI for espFoC targets over the link/tuner protocol. -**Documentation:** [`doc/TUNING.md`](../../doc/TUNING.md) +**Full workflow:** [`doc/TUNING.md`](../../doc/TUNING.md) ## Install @@ -24,6 +24,36 @@ PYTHONPATH=tools python3 -m espfoc_tool.gui | `--no-gl` | CPU plot rendering | | `--scope-csv` | Legacy CSV scope decode | +Connection state (scanning, connected, link health) is shown in the **status bar**. +All device actions stay disabled until a board is connected; views remain navigable offline. + +## Views + +### Tune + +Setup, flash, and MPZ preview in one screen: + +| Column | Content | +|--------|---------| +| Left | Live gains, manual editor (Kp/Ki/lim/filter), firmware log | +| Center | Flash diff (device vs pending); **Read** / **Write** / **Patch** | +| Right | Motor model (R, L, bandwidth) + four MPZ plots | + +- **Apply gains** (editor): push spinbox values to RAM. +- **Apply gains** (plots): write MPZ-designed Kp/Ki/lim to RAM. +- **Patch**: write dirty fields, then store calibration to flash (firmware RMW). + +### Dashboard + +Runtime control and scope: + +| Column | Content | +|--------|---------| +| Left | Motion (manual id/iq, nudge), **Actions** (align, E-STOP, Autoset) | +| Right | SVPWM hexagon + three-phase waveforms (top), rolling scope channels (bottom) | + +**Autoset** clears SVM trail/waveform history and resets the per-unit scale. + ## CLI ```bash @@ -39,8 +69,9 @@ espfoc_tool/ ├── protocol/ # tuner requests ├── model/ # MPZ / Bode (numpy) ├── gui/ -│ ├── views/ # Config, Current wrappers -│ ├── app.py # Qt + OpenGL bootstrap +│ ├── views/ # tune_view, dashboard_view +│ ├── theme.py # dark palette + button/surface styles +│ ├── widgets.py │ └── ... └── cli/espfocctl.py ``` diff --git a/tools/espfoc_tool/gui/analysis_panel.py b/tools/espfoc_tool/gui/analysis_panel.py index 834f66c3..1f21ef42 100644 --- a/tools/espfoc_tool/gui/analysis_panel.py +++ b/tools/espfoc_tool/gui/analysis_panel.py @@ -17,6 +17,10 @@ QWidget, ) +from . import labels as L +from .buttons import action_button +from .widgets import SurfaceCard + from ..model import ( MotorParams, PiGains, @@ -44,18 +48,18 @@ def __init__(self, client: Optional[TunerClient] = None) -> None: pg.setConfigOptions(antialias=True) root = QVBoxLayout(self) + root.setContentsMargins(0, 0, 0, 0) + root.setSpacing(10) + toolbar = SurfaceCard() top = QFormLayout() self._motor_pole_pairs = QSpinBox() self._motor_pole_pairs.setRange(1, 64) self._motor_pole_pairs.setValue(7) - self._motor_pole_pairs.setToolTip( - "Number of motor pole pairs p (sent to the target). Use " - "Tuning \u2192 Save to NVS to store in flash together with the " - "rest of the calibration.") - top.addRow("Pole pairs count", self._motor_pole_pairs) + top.addRow(L.POLE_PAIRS, self._motor_pole_pairs) self._motor_pole_pairs.valueChanged.connect( self._on_motor_pole_pairs_changed) - root.addLayout(top) + toolbar.body_layout.addLayout(top) + root.addWidget(toolbar) grid = QGridLayout() root.addLayout(grid, 1) @@ -122,7 +126,7 @@ def __init__(self, client: Optional[TunerClient] = None) -> None: grid.addWidget(self._rl_plot, 1, 1) btn_row = QHBoxLayout() - self._apply_mpz_btn = QPushButton("Apply MPZ to RAM") + self._apply_mpz_btn = action_button("Apply gains", "BtnDefault") self._apply_mpz_btn.clicked.connect(self._on_apply_mpz) btn_row.addWidget(self._apply_mpz_btn) btn_row.addStretch(1) diff --git a/tools/espfoc_tool/gui/buttons.py b/tools/espfoc_tool/gui/buttons.py new file mode 100644 index 00000000..dd250cff --- /dev/null +++ b/tools/espfoc_tool/gui/buttons.py @@ -0,0 +1,50 @@ +"""Styled push buttons (single neutral action palette).""" + +from __future__ import annotations + +from PySide6.QtCore import Qt +from PySide6.QtGui import QFont +from PySide6.QtWidgets import QPushButton + +from .theme import button_font, monospace_font + +def action_button(text: str, role: str = "BtnDefault") -> QPushButton: + btn = QPushButton(text) + apply_button_style(btn, role) + return btn + + +def apply_button_style(btn: QPushButton, role: str) -> None: + estop = role == "BtnEstop" or btn.text().upper() in ("E-STOP", "ESTOP") + nudge = role == "BtnNudge" + reset = role == "BtnReset" + if role == "BtnNav": + obj = "BtnNav" + elif estop: + obj = "BtnEstop" + elif nudge: + obj = "BtnNudge" + elif reset: + obj = "BtnReset" + elif role == "BtnCompact": + obj = "BtnCompact" + else: + obj = "BtnDefault" + btn.setObjectName(obj) + btn.setCursor(Qt.PointingHandCursor) + btn.setFocusPolicy(Qt.FocusPolicy.StrongFocus) + + if obj == "BtnNav": + btn.setFont(button_font(13, QFont.Weight.Medium)) + elif estop: + f = button_font(13, QFont.Weight.Bold) + f.setLetterSpacing(QFont.SpacingType.AbsoluteSpacing, 1.5) + btn.setFont(f) + elif nudge: + btn.setFont(monospace_font(10)) + elif obj == "BtnCompact": + btn.setFont(button_font(11, QFont.Weight.Medium)) + elif reset: + btn.setFont(button_font(11, QFont.Weight.Medium)) + else: + btn.setFont(button_font(12, QFont.Weight.Medium)) diff --git a/tools/espfoc_tool/gui/control_rail.py b/tools/espfoc_tool/gui/control_rail.py index 544aa675..43114d95 100644 --- a/tools/espfoc_tool/gui/control_rail.py +++ b/tools/espfoc_tool/gui/control_rail.py @@ -9,17 +9,19 @@ QCheckBox, QDoubleSpinBox, QFormLayout, - QGroupBox, QHBoxLayout, QLabel, QPushButton, + QSizePolicy, QVBoxLayout, QWidget, ) from ..protocol import TunerClient, TunerError +from . import labels as L from .alignment_progress import AlignmentProgressDialog -from .theme import make_estop_button_qss +from .buttons import action_button +from .widgets import SurfaceCard def _spin(minimum: float, maximum: float, decimals: int, value: float, @@ -66,13 +68,19 @@ def __init__( self._connected = connected self._align_thread: Optional[_AlignThread] = None self._align_progress: Optional[AlignmentProgressDialog] = None + self._autoset_cb: Optional[Callable[[], None]] = None + + self.setSizePolicy( + QSizePolicy.Policy.Fixed, QSizePolicy.Policy.Expanding) root = QVBoxLayout(self) - root.setContentsMargins(8, 8, 8, 8) + root.setContentsMargins(0, 0, 0, 0) + root.setSpacing(12) - motion = QGroupBox("Motion") - mform = QFormLayout(motion) - self._override_box = QCheckBox("Override active") + motion_card = SurfaceCard("Motion") + mform = QFormLayout() + mform.setLabelAlignment(Qt.AlignRight) + self._override_box = QCheckBox("Manual setpoints") self._override_box.toggled.connect(self._on_override_toggled) mform.addRow(self._override_box) @@ -80,44 +88,52 @@ def __init__( self._iq_spin = _spin(-50.0, 50.0, 4, 0.0, step=0.1, suffix=" A") self._id_spin.setEnabled(False) self._iq_spin.setEnabled(False) - mform.addRow("id ref", self._id_spin) - mform.addRow("iq ref", self._iq_spin) + mform.addRow(L.D_AXIS_CURRENT, self._id_spin) + mform.addRow(L.Q_AXIS_CURRENT, self._iq_spin) id_row = QHBoxLayout() - for label, delta in (("id −", -0.1), ("id 0", None), ("id +", 0.1)): - b = QPushButton(label) + id_row.setSpacing(6) + for label, delta in (("−", -0.1), ("0", None), ("+", 0.1)): + b = action_button(label, "BtnNudge") b.clicked.connect( lambda _c=False, d=delta, s=self._id_spin: self._nudge(s, d)) id_row.addWidget(b) - mform.addRow(id_row) + id_row.addStretch(1) + mform.addRow("d-axis", id_row) iq_row = QHBoxLayout() - for label, delta in (("iq −", -0.1), ("iq 0", None), ("iq +", 0.1)): - b = QPushButton(label) + iq_row.setSpacing(6) + for label, delta in (("−", -0.1), ("0", None), ("+", 0.1)): + b = action_button(label, "BtnNudge") b.clicked.connect( lambda _c=False, d=delta, s=self._iq_spin: self._nudge(s, d)) iq_row.addWidget(b) - mform.addRow(iq_row) + iq_row.addStretch(1) + mform.addRow("q-axis", iq_row) self._id_spin.valueChanged.connect(self._on_id_changed) self._iq_spin.valueChanged.connect(self._on_iq_changed) - root.addWidget(motion) + motion_card.body_layout.addLayout(mform) + root.addWidget(motion_card) - align = QGroupBox("Alignment") - al = QVBoxLayout(align) - self._align_btn = QPushButton("Align axis") + safety_card = SurfaceCard("Actions") + safety_lay = QVBoxLayout() + safety_lay.setSpacing(10) + self._align_btn = action_button("Run alignment", "BtnDefault") self._align_btn.clicked.connect(self._on_align) - al.addWidget(self._align_btn) - root.addWidget(align) - - self._estop_btn = QPushButton("E-STOP") - self._estop_btn.setStyleSheet(make_estop_button_qss()) - self._estop_btn.setCursor(Qt.PointingHandCursor) + safety_lay.addWidget(self._align_btn) + self._estop_btn = action_button("E-STOP", "BtnEstop") self._estop_btn.clicked.connect(self._on_estop) - root.addWidget(self._estop_btn) + safety_lay.addWidget(self._estop_btn) + self._autoset_btn = action_button("Autoset", "BtnDefault") + self._autoset_btn.clicked.connect(self._on_autoset) + safety_lay.addWidget(self._autoset_btn) + safety_card.body_layout.addLayout(safety_lay) + root.addWidget(safety_card) self._status = QLabel("") - self._status.setStyleSheet("color: #ef5350;") + self._status.setStyleSheet("color: #ef5350; font-size: 11px;") + self._status.setWordWrap(True) root.addWidget(self._status) root.addStretch(1) @@ -126,6 +142,9 @@ def __init__( def set_client(self, client: Optional[TunerClient]) -> None: self._client = client + def bind_svm_autoset(self, callback: Callable[[], None]) -> None: + self._autoset_cb = callback + def set_actions_enabled(self, on: bool) -> None: for w in ( self._override_box, @@ -133,12 +152,17 @@ def set_actions_enabled(self, on: bool) -> None: self._iq_spin, self._align_btn, self._estop_btn, + self._autoset_btn, ): w.setEnabled(on) for btn in self.findChildren(QPushButton): if btn is not self._estop_btn: btn.setEnabled(on) + def _on_autoset(self) -> None: + if self._autoset_cb is not None: + self._autoset_cb() + def apply_override_state(self, active: bool) -> None: self._override_box.blockSignals(True) self._override_box.setChecked(active) diff --git a/tools/espfoc_tool/gui/labels.py b/tools/espfoc_tool/gui/labels.py new file mode 100644 index 00000000..3658684a --- /dev/null +++ b/tools/espfoc_tool/gui/labels.py @@ -0,0 +1,16 @@ +"""Plain-language UI labels shared across panels.""" + +PROPORTIONAL_GAIN = "Proportional gain" +INTEGRAL_GAIN = "Integral gain" +CURRENT_LIMIT = "Current limit" +VOLTAGE_LIMIT = "Voltage limit" +CURRENT_FILTER = "Current filter" +LOOP_RATE = "Loop rate" + +RESISTANCE = "Resistance" +INDUCTANCE = "Inductance" +CONTROL_BANDWIDTH = "Control bandwidth" +POLE_PAIRS = "Pole pairs" + +D_AXIS_CURRENT = "d-axis current" +Q_AXIS_CURRENT = "q-axis current" diff --git a/tools/espfoc_tool/gui/main_window.py b/tools/espfoc_tool/gui/main_window.py index 060f9289..0ebc6b11 100644 --- a/tools/espfoc_tool/gui/main_window.py +++ b/tools/espfoc_tool/gui/main_window.py @@ -1,4 +1,4 @@ -"""espFoC Tool main window: nav rail + four views, optional USB auto-connect.""" +"""espFoC Tool main window: nav rail + Tune/Dashboard, optional USB auto-connect.""" from __future__ import annotations @@ -12,7 +12,6 @@ QMessageBox, QMainWindow, QPushButton, - QSplitter, QStackedWidget, QSizePolicy, QWidget, @@ -28,10 +27,11 @@ from .scope_stream_timing import scope_uniform_dt_s from .states_panel import StatesPanel from .svm_panel import SvmPanel -from .theme import make_badge_qss, make_reset_board_button_qss +from .buttons import action_button +from .theme import make_badge_qss from .tuning_panel import TuningPanel from .tuner_poll_worker import TunerPollSnapshot, TunerPollWorker -from .views import ConfigView, CurrentView +from .views import DashboardView, TuneView _LINK_DOWN_AFTER_CONSECUTIVE_PING_FAILS = 10 @@ -74,33 +74,21 @@ def __init__( self._analysis_debounce.timeout.connect(self._run_pending_analysis) self._analysis_pending = None - self._tuning = TuningPanel(client=None) - self._config = ConfigView(self._tuning) - self._current = CurrentView( - self._analysis, on_params_changed=self._on_params) + self._tuning = TuningPanel(client=None, scrollable=False) + self._tune = TuneView( + self._tuning, + self._analysis, + on_params_changed=self._on_params, + ) self._control = ControlRail( client=None, connected=self._device_connected) self._svm = SvmPanel(reader=None) self._states = StatesPanel(reader=None) + self._dashboard = DashboardView( + self._control, self._svm, self._states) - self._stack.addWidget(self._config) - self._stack.addWidget(self._current) - ctrl = QWidget() - cs = QHBoxLayout(ctrl) - cs.setContentsMargins(8, 8, 8, 8) - split = QSplitter(Qt.Horizontal) - split.addWidget(self._control) - split.addWidget(self._svm) - split.setStretchFactor(0, 0) - split.setStretchFactor(1, 1) - split.setSizes([320, 900]) - cs.addWidget(split) - self._stack.addWidget(ctrl) - states_wrap = QWidget() - sl = QHBoxLayout(states_wrap) - sl.setContentsMargins(8, 8, 8, 8) - sl.addWidget(self._states) - self._stack.addWidget(states_wrap) + self._stack.addWidget(self._tune) + self._stack.addWidget(self._dashboard) sb = self.statusBar() self._link_badge = QLabel() @@ -108,8 +96,7 @@ def __init__( QSizePolicy.Minimum, QSizePolicy.Fixed) self._link_descr = QLabel() self._link_descr.setStyleSheet("color: #9aa0a6; font-size: 12px;") - self._reset_btn = QPushButton("RESET BOARD") - self._reset_btn.setStyleSheet(make_reset_board_button_qss()) + self._reset_btn = action_button("RESET BOARD", "BtnDefault") self._reset_btn.clicked.connect(self._on_reset_board_clicked) sb.addPermanentWidget(self._link_badge) sb.addPermanentWidget(self._reset_btn) @@ -135,8 +122,8 @@ def _device_connected(self) -> bool: def _set_device_actions_enabled(self, on: bool) -> None: self._reset_btn.setEnabled(on) self._tuning.set_actions_enabled(on) - self._config.nvs.set_actions_enabled(on) - self._config.nvs.set_client(self._client if on else None) + self._tune.nvs.set_actions_enabled(on) + self._tune.nvs.set_client(self._client if on else None) self._control.set_actions_enabled(on) self._analysis._apply_mpz_btn.setEnabled(on) self._analysis._motor_pole_pairs.setEnabled(on) @@ -341,10 +328,10 @@ def _on_poll_finished( if ok and snap is not None: self._tuning.apply_poll_snapshot(snap) self._control.apply_override_state(snap.override_active) - self._config.nvs.update_live( + self._tune.nvs.update_live( snap.kp, snap.ki, snap.lim, snap.fc) - self._config.nvs.set_calibration_present(snap.cal_present) - self._current.motor.set_kp_ki_hint(snap.kp, snap.ki) + self._tune.nvs.set_calibration_present(snap.cal_present) + self._tune.motor.set_kp_ki_hint(snap.kp, snap.ki) else: self._tuning.apply_poll_error(err or "poll failed") if (self._serial_config is not None @@ -367,8 +354,8 @@ def _on_device_reads_ready( t = shadows self._tuning.apply_nvs_shadow_floats( t[0], t[1], t[2], t[3], t[4], t[5]) - self._current.motor.apply_nvs_motor(t[0], t[1], t[2]) - self._config.nvs.capture_nvs_reference( + self._tune.motor.apply_nvs_motor(t[0], t[1], t[2]) + self._tune.nvs.capture_nvs_reference( t[3], t[4], self._tuning._lim_spin.value(), t[5]) if pole is not None: self._analysis.set_motor_pole_pairs_silent(int(pole)) diff --git a/tools/espfoc_tool/gui/motor_model_rail.py b/tools/espfoc_tool/gui/motor_model_rail.py index 7b4c24fc..57d79cc2 100644 --- a/tools/espfoc_tool/gui/motor_model_rail.py +++ b/tools/espfoc_tool/gui/motor_model_rail.py @@ -1,17 +1,14 @@ -"""Current-design sidebar: R, L, bandwidth for MPZ plots.""" +"""Motor parameters bar for MPZ preview (R, L, bandwidth).""" from __future__ import annotations from typing import Callable, Optional -from PySide6.QtWidgets import ( - QFormLayout, - QGroupBox, - QVBoxLayout, - QWidget, -) +from PySide6.QtCore import Qt +from PySide6.QtWidgets import QFormLayout, QHBoxLayout, QSizePolicy, QWidget -from .tuning_panel import _spin +from . import labels as L +from .widgets import LiveMetricGrid, SurfaceCard, spin_box class MotorModelRail(QWidget): @@ -23,45 +20,53 @@ def __init__( ) -> None: super().__init__(parent) self._on_params_changed = on_params_changed - self._last_r = 1.08 - self._last_l = 0.0018 - self._last_bw = 150.0 + self._kp_hint = 1.0 + self._ki_hint = 100.0 + self.setSizePolicy( + QSizePolicy.Policy.Expanding, QSizePolicy.Policy.Fixed) - root = QVBoxLayout(self) - box = QGroupBox("Motor model") - form = QFormLayout(box) - self._r_spin = _spin(0.001, 1000.0, 4, self._last_r, - step=0.01, suffix=" Ω") - self._l_mh_spin = _spin(0.001, 10_000.0, 4, - self._last_l * 1000.0, - step=0.01, suffix=" mH") - self._bw_spin = _spin(1.0, 5000.0, 1, self._last_bw, - step=10.0, suffix=" Hz") - form.addRow("R", self._r_spin) - form.addRow("L", self._l_mh_spin) - form.addRow("Bandwidth", self._bw_spin) - root.addWidget(box) - root.addStretch(1) + card = SurfaceCard("Motor model") + row = QHBoxLayout() + row.setContentsMargins(0, 0, 0, 0) + row.setSpacing(24) + + form = QFormLayout() + form.setLabelAlignment(Qt.AlignRight) + form.setHorizontalSpacing(12) + self._r_spin = spin_box(0.001, 1000.0, 4, 1.08, step=0.01, suffix=" Ω") + self._l_mh_spin = spin_box(0.001, 10_000.0, 4, 1.8, step=0.01, suffix=" mH") + self._bw_spin = spin_box(1.0, 5000.0, 1, 150.0, step=10.0, suffix=" Hz") + form.addRow(L.RESISTANCE, self._r_spin) + form.addRow(L.INDUCTANCE, self._l_mh_spin) + form.addRow(L.CONTROL_BANDWIDTH, self._bw_spin) + row.addLayout(form) + + self._gain_grid = LiveMetricGrid([L.PROPORTIONAL_GAIN, L.INTEGRAL_GAIN]) + row.addWidget(self._gain_grid, 1) + + card.body_layout.addLayout(row) + outer = QHBoxLayout(self) + outer.setContentsMargins(0, 0, 0, 0) + outer.addWidget(card) for sp in (self._r_spin, self._l_mh_spin, self._bw_spin): sp.valueChanged.connect(self._notify) - if self._on_params_changed is not None: self._notify() def set_kp_ki_hint(self, kp: float, ki: float) -> None: self._kp_hint = kp self._ki_hint = ki + self._gain_grid.set_values([f"{kp:.4f} V/A", f"{ki:.1f} V/(A·s)"]) self._notify() def _notify(self) -> None: if self._on_params_changed is None: return l_h = self._l_mh_spin.value() * 1e-3 - kp = getattr(self, "_kp_hint", 1.0) - ki = getattr(self, "_ki_hint", 100.0) self._on_params_changed( - self._r_spin.value(), l_h, self._bw_spin.value(), kp, ki) + self._r_spin.value(), l_h, self._bw_spin.value(), + self._kp_hint, self._ki_hint) def apply_nvs_motor(self, r: float, l_h: float, bw: float) -> None: for sp in (self._r_spin, self._l_mh_spin, self._bw_spin): diff --git a/tools/espfoc_tool/gui/nav_rail.py b/tools/espfoc_tool/gui/nav_rail.py index 57c1e898..c0ee44bb 100644 --- a/tools/espfoc_tool/gui/nav_rail.py +++ b/tools/espfoc_tool/gui/nav_rail.py @@ -3,15 +3,15 @@ from __future__ import annotations from PySide6.QtCore import Qt, Signal -from PySide6.QtWidgets import QButtonGroup, QPushButton, QVBoxLayout, QWidget +from PySide6.QtWidgets import QButtonGroup, QLabel, QPushButton, QVBoxLayout, QWidget -from .theme import make_nav_button_qss +from .buttons import apply_button_style class NavRail(QWidget): page_selected = Signal(int) - LABELS = ("Config", "Current", "Control", "States") + LABELS = ("Tune", "Dashboard") def __init__(self, parent: QWidget | None = None) -> None: super().__init__(parent) @@ -20,6 +20,9 @@ def __init__(self, parent: QWidget | None = None) -> None: lay = QVBoxLayout(self) lay.setContentsMargins(8, 12, 8, 12) lay.setSpacing(6) + brand = QLabel("espFoC") + brand.setObjectName("NavBrand") + lay.addWidget(brand) self._group = QButtonGroup(self) self._group.setExclusive(True) self._buttons: list[QPushButton] = [] @@ -27,7 +30,7 @@ def __init__(self, parent: QWidget | None = None) -> None: b = QPushButton(label) b.setCheckable(True) b.setCursor(Qt.PointingHandCursor) - b.setStyleSheet(make_nav_button_qss()) + apply_button_style(b, "BtnNav") if i == 0: b.setChecked(True) b.clicked.connect(lambda _c=False, idx=i: self.page_selected.emit(idx)) diff --git a/tools/espfoc_tool/gui/nvs_diff_panel.py b/tools/espfoc_tool/gui/nvs_diff_panel.py index df7254bb..a86c8e34 100644 --- a/tools/espfoc_tool/gui/nvs_diff_panel.py +++ b/tools/espfoc_tool/gui/nvs_diff_panel.py @@ -5,20 +5,23 @@ from typing import Optional from PySide6.QtWidgets import ( - QFormLayout, - QGroupBox, + QGridLayout, QHBoxLayout, QLabel, - QPushButton, + QSizePolicy, QVBoxLayout, QWidget, ) from ..protocol import TunerClient, TunerError +from . import labels as L +from .theme import make_nvs_badge_qss, monospace_font +from .buttons import action_button +from .widgets import SurfaceCard class NvsDiffPanel(QWidget): - """Right-hand Config card: live vs editor, write dirty fields, store NVS.""" + """Right-hand Config column: live vs editor, write dirty fields, store NVS.""" _EPS_KP = 0.02 _EPS_KI = 1.0 @@ -43,71 +46,91 @@ def __init__( self._live = {"kp": 0.0, "ki": 0.0, "lim": 0.0, "fc": 0.0} root = QVBoxLayout(self) - box = QGroupBox("Live vs editor (NVS RMW on store)") - form = QFormLayout(box) - mono = "font-family: monospace; font-size: 12px;" - self._live_kp = QLabel("-") - self._live_ki = QLabel("-") - self._live_lim = QLabel("-") - self._live_fc = QLabel("-") - self._delta_kp = QLabel("-") - self._delta_ki = QLabel("-") - self._delta_lim = QLabel("-") - self._delta_fc = QLabel("-") - for w in ( - self._live_kp, self._live_ki, self._live_lim, self._live_fc, - self._delta_kp, self._delta_ki, self._delta_lim, self._delta_fc, - ): - w.setStyleSheet(mono) - form.addRow("Kp live", self._live_kp) - form.addRow("Kp Δ edit", self._delta_kp) - form.addRow("Ki live", self._live_ki) - form.addRow("Ki Δ edit", self._delta_ki) - form.addRow("ILim live", self._live_lim) - form.addRow("ILim Δ edit", self._delta_lim) - form.addRow("fc live", self._live_fc) - form.addRow("fc Δ edit", self._delta_fc) - self._nvs_hint = QLabel("NVS: —") - self._nvs_hint.setWordWrap(True) - self._nvs_hint.setStyleSheet("color: #9aa0a6; font-size: 11px;") - form.addRow(self._nvs_hint) - root.addWidget(box) - - self._write_btn = QPushButton("Write dirty fields to device") - self._write_btn.clicked.connect(self._on_write_dirty) - self._store_btn = QPushButton("Store to NVS (RMW)") - self._store_btn.clicked.connect(self._on_store) - row = QHBoxLayout() - row.addWidget(self._write_btn) - row.addWidget(self._store_btn) - root.addLayout(row) - self._erase_btn = QPushButton("Erase NVS calibration") - self._erase_btn.clicked.connect(self._on_erase) - root.addWidget(self._erase_btn) + root.setContentsMargins(0, 0, 0, 0) + root.setSpacing(12) + + card = SurfaceCard("Flash") + grid = QGridLayout() + grid.setHorizontalSpacing(12) + grid.setVerticalSpacing(8) + hdr_style = "color: #9aa0a6; font-size: 11px; font-weight: 600;" + mono_font = monospace_font(12) + for col, text in enumerate(("", "Device", "Pending")): + h = QLabel(text) + h.setStyleSheet(hdr_style) + grid.addWidget(h, 0, col) + + self._rows: list[tuple[str, QLabel, QLabel]] = [] + row_labels = ( + ("kp", L.PROPORTIONAL_GAIN), + ("ki", L.INTEGRAL_GAIN), + ("lim", L.CURRENT_LIMIT), + ("fc", L.CURRENT_FILTER), + ) + for row_i, (key, label) in enumerate(row_labels, start=1): + name = QLabel(label) + live = QLabel("—") + live.setFont(mono_font) + delta = QLabel("—") + delta.setFont(mono_font) + grid.addWidget(name, row_i, 0) + grid.addWidget(live, row_i, 1) + grid.addWidget(delta, row_i, 2) + self._rows.append((key, live, delta)) + + self._live_kp = self._rows[0][1] + self._live_ki = self._rows[1][1] + self._live_lim = self._rows[2][1] + self._live_fc = self._rows[3][1] + self._delta_kp = self._rows[0][2] + self._delta_ki = self._rows[1][2] + self._delta_lim = self._rows[2][2] + self._delta_fc = self._rows[3][2] + + card.body_layout.addLayout(grid) + self._nvs_badge = QLabel("—") + self._nvs_badge.setObjectName("NvsBadge") + card.body_layout.addWidget(self._nvs_badge) + root.addWidget(card) + + btn_row = QHBoxLayout() + btn_row.setSpacing(6) + btn_row.setContentsMargins(0, 0, 0, 0) + self._read_btn = action_button("Read", "BtnCompact") + self._write_btn = action_button("Write", "BtnCompact") + self._patch_btn = action_button("Patch", "BtnCompact") + for btn in (self._read_btn, self._write_btn, self._patch_btn): + btn.setSizePolicy( + QSizePolicy.Policy.Expanding, QSizePolicy.Policy.Fixed) + btn_row.addWidget(btn, 1) + root.addLayout(btn_row) root.addStretch(1) self._status = QLabel("") self._status.setStyleSheet("color: #ef5350; font-size: 11px;") root.addWidget(self._status) + self._read_btn.clicked.connect(self._on_read) + self._write_btn.clicked.connect(self._on_write_dirty) + self._patch_btn.clicked.connect(self._on_patch) + def set_client(self, client: Optional[TunerClient]) -> None: self._client = client def set_actions_enabled(self, on: bool) -> None: + self._read_btn.setEnabled(on) self._write_btn.setEnabled(on) - self._store_btn.setEnabled(on) - self._erase_btn.setEnabled(on) + self._patch_btn.setEnabled(on) def set_calibration_present(self, present: bool) -> None: - self._nvs_hint.setText( - "NVS: calibration present — Store merges only changed tuning fields." - if present else "NVS: empty — Store writes a new blob.") + self._nvs_badge.setText("Stored" if present else "Empty") + self._nvs_badge.setStyleSheet(make_nvs_badge_qss(present)) def update_live(self, kp: float, ki: float, lim: float, fc: float) -> None: self._live = {"kp": kp, "ki": ki, "lim": lim, "fc": fc} - self._live_kp.setText(f"{kp:9.4f}") - self._live_ki.setText(f"{ki:9.2f}") - self._live_lim.setText(f"{lim:9.3f}") - self._live_fc.setText(f"{fc:9.1f}") + self._live_kp.setText(f"{kp:.4f}") + self._live_ki.setText(f"{ki:.1f}") + self._live_lim.setText(f"{lim:.2f}") + self._live_fc.setText(f"{fc:.0f}") self._refresh_deltas() def _editor_values(self) -> dict[str, float]: @@ -129,10 +152,10 @@ def _refresh_deltas(self) -> None: def _set_delta(lbl: QLabel, d: float, eps: float) -> None: if abs(d) <= eps: lbl.setText("—") - lbl.setStyleSheet("font-family: monospace; color: #66bb6a;") + lbl.setStyleSheet("color: #66bb6a;") else: lbl.setText(f"{d:+.4f}") - lbl.setStyleSheet("font-family: monospace; color: #ffb300;") + lbl.setStyleSheet("color: #ffb300;") def refresh_from_editor(self) -> None: self._refresh_deltas() @@ -144,6 +167,33 @@ def _require_client(self) -> Optional[TunerClient]: self._status.setText("") return self._client + def _on_read(self) -> None: + cli = self._require_client() + if cli is None: + return + if not all((self._kp_spin, self._ki_spin, self._lim_spin, self._fc_spin)): + return + try: + kp = cli.read_kp() + ki = cli.read_ki() + lim = cli.read_int_lim() + fc = cli.read_current_filter_fc() + except TunerError as e: + self._status.setText(str(e)) + return + for sp in (self._kp_spin, self._ki_spin, self._lim_spin, self._fc_spin): + sp.blockSignals(True) + try: + self._kp_spin.setValue(kp) + self._ki_spin.setValue(ki) + self._lim_spin.setValue(lim) + self._fc_spin.setValue(fc) + finally: + for sp in (self._kp_spin, self._ki_spin, self._lim_spin, self._fc_spin): + sp.blockSignals(False) + self.update_live(kp, ki, lim, fc) + self._refresh_deltas() + def _on_write_dirty(self) -> None: cli = self._require_client() if cli is None: @@ -161,7 +211,7 @@ def _on_write_dirty(self) -> None: except TunerError as e: self._status.setText(str(e)) - def _on_store(self) -> None: + def _on_patch(self) -> None: cli = self._require_client() if cli is None: return @@ -171,11 +221,5 @@ def _on_store(self) -> None: except TunerError as e: self._status.setText(str(e)) - def _on_erase(self) -> None: - cli = self._require_client() - if cli is None: - return - try: - cli.erase_calibration() - except TunerError as e: - self._status.setText(str(e)) + def capture_nvs_reference(self, *args, **kwargs) -> None: + pass diff --git a/tools/espfoc_tool/gui/states_panel.py b/tools/espfoc_tool/gui/states_panel.py index 4584ad6e..cf4472dc 100644 --- a/tools/espfoc_tool/gui/states_panel.py +++ b/tools/espfoc_tool/gui/states_panel.py @@ -119,17 +119,9 @@ def __init__( self._row_specs = _all_specs() root = QVBoxLayout(self) - intro = QLabel( - "SCOPE channels per axis_tuning firmware map. " - f"Window {WINDOW_S:.0f} s. Connect and start scope from firmware " - "(auto on connect in a later build)." - ) - intro.setWordWrap(True) - intro.setStyleSheet("color: #9aa0a6; font-size: 11px;") - root.addWidget(intro) cpr_row = QHBoxLayout() - cpr_row.addWidget(QLabel("Encoder CPR")) + cpr_row.addWidget(QLabel("Encoder counts per rev")) self._cpr_spin = QSpinBox() self._cpr_spin.setRange(1, 65536) self._cpr_spin.setValue(4096) diff --git a/tools/espfoc_tool/gui/svm_panel.py b/tools/espfoc_tool/gui/svm_panel.py index 15ec9031..656cd1bc 100644 --- a/tools/espfoc_tool/gui/svm_panel.py +++ b/tools/espfoc_tool/gui/svm_panel.py @@ -11,8 +11,8 @@ fading trail; α and β are in **per-unit** relative to a running scale so the view stays in [-1, 1] and phase rails stay inside the unit hex; -* the three-phase time-series underneath, physical units (V), matching - the scope tab's channels 0/1/2. +* the three-phase time-series beside the hexagon (same row height), + physical units (V), matching the scope tab's channels 0/1/2. Rendering is buffered on the reader side and flushed at a modest UI rate so scope bursts after a current step do not stall the Qt loop. @@ -30,13 +30,7 @@ import pyqtgraph as pg from PySide6.QtCore import Qt, QTimer from PySide6.QtGui import QColor -from PySide6.QtWidgets import ( - QHBoxLayout, - QLabel, - QPushButton, - QVBoxLayout, - QWidget, -) +from PySide6.QtWidgets import QSizePolicy, QVBoxLayout, QWidget from ..link import LinkReader from ..link.scope_sample import decode_scope_payload_to_floats_csv_first @@ -49,6 +43,7 @@ rolling_plot_x_upper, ) from .scope_stream_timing import scope_uniform_dt_s +from .widgets import horizontal_splitter _HEX_COLOR = "#6e7681" @@ -56,7 +51,6 @@ _VERTEX_COLOR = "#ffcc66" _TRAIL_COLOR = "#4fc3f7" _ARROW_COLOR = "#ff7043" -_LABEL_COLOR = "#9aa0a6" # Keep these in sync with ScopePanel's first three entries so a phase # colour in the SVM view matches its counterpart in the scope tab. _PHASE_COLORS = ("#4fc3f7", "#ffb74d", "#81c784") @@ -117,18 +111,18 @@ def __init__(self, reader: Optional[LinkReader] = None, self._last_abc: tuple[float, float, float] = (0.0, 0.0, 0.0) root = QVBoxLayout(self) + root.setContentsMargins(0, 0, 0, 0) - # --- Top half: hexagon + readout column -------------------------- - top_row = QHBoxLayout() - root.addLayout(top_row, 2) - - self._plot = pg.PlotWidget(title="SVPWM voltage vector (per unit)") + self._plot = pg.PlotWidget(title="SVPWM vector (pu)") self._plot.setAspectLocked(True) self._plot.setLabel('left', "β (pu)", units="") self._plot.setLabel('bottom', "α (pu)", units="") self._plot.showGrid(x=True, y=True, alpha=0.15) configure_rolling_time_xaxis(self._plot) - self._plot.setMinimumHeight(380) + plot_min_h = 300 + self._plot.setMinimumHeight(plot_min_h) + self._plot.setSizePolicy( + QSizePolicy.Policy.Expanding, QSizePolicy.Policy.Expanding) self._hex_crosshair = attach_crosshair( self._plot, fmt=lambda x, y: f"α = {x:+.3f} pu\nβ = {y:+.3f} pu") @@ -183,37 +177,15 @@ def __init__(self, reader: Optional[LinkReader] = None, self._plot.addItem(self._head_scatter) self._redraw_hexagon() self._apply_hex_viewport() - top_row.addWidget(self._plot, 1) - - side = QVBoxLayout() - side.setContentsMargins(6, 6, 6, 6) - side.setSpacing(4) - self._alpha_label = QLabel("α = 0.000 pu") - self._beta_label = QLabel("β = 0.000 pu") - self._mag_label = QLabel("|V| = 0.000 pu") - self._sector_label = QLabel("sector: -") - self._scale_label = QLabel("1 pu = 1.00 (arb.)") - for lbl in (self._alpha_label, self._beta_label, - self._mag_label, self._sector_label, self._scale_label): - lbl.setStyleSheet("font-family: monospace; color: %s;" - % _LABEL_COLOR) - side.addWidget(lbl) - autoset_btn = QPushButton("Autoset") - autoset_btn.setToolTip( - "Clear the trail, reset the per-unit scale, lock the SVM view " - "to [-1,1], rebase the waveform, and re-enable voltage autorange.") - autoset_btn.clicked.connect(self.autoset) - side.addWidget(autoset_btn) - side.addStretch(1) - top_row.addLayout(side, 0) - - # --- Bottom half: three-phase waveform --------------------------- + # X is seconds within the rolling window (0 = oldest on screen). - self._wave_plot = pg.PlotWidget(title="Three-phase output") + self._wave_plot = pg.PlotWidget(title="Three-phase (V)") self._wave_plot.setLabel('left', "voltage", units='V') self._wave_plot.setLabel('bottom', "time", units='s') self._wave_plot.showGrid(x=True, y=True, alpha=0.2) - self._wave_plot.setMinimumHeight(220) + self._wave_plot.setMinimumHeight(plot_min_h) + self._wave_plot.setSizePolicy( + QSizePolicy.Policy.Expanding, QSizePolicy.Policy.Expanding) configure_rolling_time_xaxis(self._wave_plot) self._wave_plot.setXRange(0.0, self.WAVEFORM_WINDOW_S, padding=0) self._wave_plot.enableAutoRange(axis='x', enable=False) @@ -229,7 +201,13 @@ def __init__(self, reader: Optional[LinkReader] = None, pen=pg.mkPen(QColor(_PHASE_COLORS[2]), width=2), name="iw (ch12 proxy)") for _c in (self._uu_curve, self._uv_curve, self._uw_curve): configure_dynamic_curve(_c) - root.addWidget(self._wave_plot, 1) + + root.addWidget(horizontal_splitter( + self._plot, + self._wave_plot, + stretches=(1, 1), + sizes=(520, 520), + ), 1) # --- Render timer ------------------------------------------------ self._render_timer = QTimer(self) @@ -394,22 +372,6 @@ def _render_tick(self) -> None: x_up = rolling_plot_x_upper(t_d, self.WAVEFORM_WINDOW_S) self._wave_plot.setXRange(0.0, x_up, padding=0) - mag_pu = mag * inv - self._alpha_label.setText(f"α = {a_n:+8.3f} pu") - self._beta_label.setText(f"β = {b_n:+8.3f} pu") - self._mag_label.setText(f"|V| = {mag_pu:8.3f} pu") - self._scale_label.setText(f"1 pu = {self._pu_ref:8.4f} (phase A)") - if mag < 1e-20: - self._sector_label.setText("sector: -") - else: - ang = math.atan2(b_n, a_n) - if ang < 0: - ang += 2.0 * math.pi - sec = int(ang // (math.pi / 3.0)) + 1 - if sec > 6: - sec = 6 - self._sector_label.setText(f"sector: {sec}") - # --- Static geometry -------------------------------------------------- # Phase-axis unit vectors (A=0°, B=120°, C=240°). Dashed rails in the diff --git a/tools/espfoc_tool/gui/theme.py b/tools/espfoc_tool/gui/theme.py index d13e4f40..ed614dcd 100644 --- a/tools/espfoc_tool/gui/theme.py +++ b/tools/espfoc_tool/gui/theme.py @@ -8,9 +8,11 @@ from __future__ import annotations +import sys + import pyqtgraph as pg from PySide6.QtCore import Qt -from PySide6.QtGui import QColor, QPalette +from PySide6.QtGui import QColor, QFont, QPalette from PySide6.QtWidgets import QApplication @@ -22,6 +24,23 @@ _BORDER = "#3a3b3f" _ERROR = "#ef5350" +# Raised surfaces (neutral warm gray — cards, metrics, inputs) +_SURF_TOP = "#35383f" +_SURF_BOT = "#27292e" +_SURF_BORDER = "#43474f" +_SURF_INSET_TOP = "#2f3238" +_SURF_INSET_BOT = "#25272c" + +# Action buttons (cool slate — distinct from surfaces) +_BTN_TOP = "#3d5563" +_BTN_MID = "#334a57" +_BTN_BOT = "#2a3b47" +_BTN_BORDER = "#4a6a7c" +_BTN_FG = "#b8d4e0" +_BTN_HOVER_TOP = "#476372" +_BTN_HOVER_BOT = "#324957" +_BTN_PRESS = "#243038" + # Axis-state badge palette. Picked the dominant flag (override > running > # aligned > init > none) and rendered it as a single colored pill instead @@ -42,6 +61,31 @@ } +def make_nvs_badge_qss(stored: bool) -> str: + if stored: + grad = ( + "qlineargradient(x1:0,y1:0,x2:0,y2:1," + "stop:0 #2e4038, stop:1 #243530)" + ) + fg = "#a8c8b4" + border = "#3d5a4a" + else: + grad = ( + f"qlineargradient(x1:0,y1:0,x2:0,y2:1," + f"stop:0 {_SURF_TOP}, stop:1 {_SURF_BOT})" + ) + fg = _DIM + border = _SURF_BORDER + return ( + f"QLabel#NvsBadge {{" + f" background: {grad}; color: {fg};" + f" border: 1px solid {border};" + f" border-radius: 8px; padding: 4px 12px;" + f" font-size: 11px; font-weight: 600;" + f"}}" + ) + + def make_badge_qss(state_key: str) -> tuple[str, str]: """Returns (label, qss) for the axis state badge. Unknown keys fall back to the OFFLINE style. Caller applies the qss to a @@ -63,78 +107,129 @@ def make_badge_qss(state_key: str) -> tuple[str, str]: return label, qss -def make_nav_button_qss() -> str: +def _btn_qss_block() -> str: + """Single neutral action style; legacy role names map to BtnDefault.""" + disabled = ( + "background: #2e3036; color: #6c757d; border: 1px solid #3a3b3f;" + ) + action_sel = ( + "QPushButton#BtnDefault," + "QPushButton#BtnSecondary," + "QPushButton#BtnPrimary," + "QPushButton#PrimaryButton," + "QPushButton#BtnAccent," + "QPushButton#BtnApply," + "QPushButton#BtnAlign," + "QPushButton#BtnDanger," + "QPushButton#BtnEstop," + "QPushButton#BtnReset," + "QPushButton#BtnNudge," + "QPushButton#BtnCompact" + ) return f""" - QPushButton {{ - background-color: transparent; + QPushButton#BtnNav {{ + background: transparent; color: {_DIM}; border: none; - border-radius: 10px; + border-radius: 12px; padding: 10px 14px; font-size: 13px; font-weight: 500; text-align: left; }} - QPushButton:hover {{ - background-color: #2e3036; + QPushButton#BtnNav:hover {{ + background: qlineargradient(x1:0,y1:0,x2:0,y2:1, + stop:0 #32363d, stop:1 #2a2c31); color: {_FG}; }} - QPushButton:checked {{ - background-color: #32363d; - color: {_ACCENT}; + QPushButton#BtnNav:checked {{ + background: qlineargradient(x1:0,y1:0,x2:1,y2:1, + stop:0 #2e353d, stop:0.5 #2a3038, stop:1 #262a31); + color: {_FG}; + border: 1px solid #4a4e56; + font-weight: 600; + }} + {action_sel} {{ + background: qlineargradient(x1:0,y1:0,x2:0,y2:1, + stop:0 {_BTN_TOP}, stop:0.5 {_BTN_MID}, stop:1 {_BTN_BOT}); + color: {_BTN_FG}; + border: 1px solid {_BTN_BORDER}; + border-radius: 8px; + padding: 8px 14px; + min-height: 20px; + }} + {action_sel}:hover {{ + background: qlineargradient(x1:0,y1:0,x2:0,y2:1, + stop:0 {_BTN_HOVER_TOP}, stop:1 {_BTN_HOVER_BOT}); + border-color: {_ACCENT}; + color: #d4eaf2; + }} + {action_sel}:pressed {{ + background: qlineargradient(x1:0,y1:0,x2:0,y2:1, + stop:0 {_BTN_PRESS}, stop:1 #1e2a32); + border-color: #3a5560; + color: #e8f4f8; + }} + {action_sel}:disabled {{ {disabled} }} + QPushButton#BtnEstop {{ + padding: 12px 16px; + min-height: 28px; font-weight: 600; }} + QPushButton#BtnNudge {{ + padding: 6px 8px; + min-width: 36px; + max-width: 48px; + }} + QPushButton#BtnReset {{ + padding: 5px 12px; + min-width: 88px; + font-size: 11px; + }} + QPushButton#BtnCompact {{ + padding: 7px 10px; + min-height: 18px; + }} """ -def make_estop_button_qss() -> str: - fg, bg = "#ffffff", _ERROR - return ( - f"QPushButton {{" - f" background-color: {bg};" - f" color: {fg};" - f" border: 1px solid #ffcdd2;" - f" border-radius: 12px;" - f" padding: 12px 16px;" - f" font-weight: 700;" - f" font-size: 13px;" - f" letter-spacing: 1px;" - f"}}" - f"QPushButton:hover {{ background-color: #e53935; }}" - f"QPushButton:pressed {{ background-color: #c62828; }}" - f"QPushButton:disabled {{ background-color: #4e342e; color: #bcaaa4; }}" - ) +def _ui_font() -> QFont: + font = QFont() + if sys.platform == "darwin": + font.setFamilies([".AppleSystemUIFont", "SF Pro Text", "Helvetica Neue"]) + elif sys.platform == "win32": + font.setFamilies(["Segoe UI Variable", "Segoe UI"]) + else: + font.setFamilies(["Ubuntu", "Cantarell", "Noto Sans", "sans-serif"]) + font.setPointSize(10) + font.setStyleStrategy(QFont.StyleStrategy.PreferAntialias) + return font -def make_reset_board_button_qss() -> str: - """Pill matching link badges, with a clear border and hover for a - pushbutton (emergency board reset).""" - fg, bg = "#ffffff", _ERROR - return ( - f"QPushButton {{" - f" background-color: {bg};" - f" color: {fg};" - f" border: 1px solid #ffcdd2;" - f" border-radius: 6px;" - f" padding: 4px 12px;" - f" font-weight: 600;" - f" font-size: 11px;" - f" letter-spacing: 0.5px;" - f" min-width: 96px;" - f"}}" - f"QPushButton:hover {{" - f" background-color: #e53935;" - f" border: 1px solid #ffebee;" - f" color: #fff;" - f"}}" - f"QPushButton:pressed {{ background-color: #c62828; }}" - f"QPushButton:disabled {{ background-color: #4e342e; color: #bcaaa4;" - f" border-color: #5d4037; }}" - ) +def monospace_font(point_size: int = 10) -> QFont: + f = QFont() + f.setFamilies([ + "JetBrains Mono", "Cascadia Mono", "SF Mono", + "Consolas", "Liberation Mono", "monospace", + ]) + f.setPointSize(point_size) + f.setStyleStrategy(QFont.StyleStrategy.PreferAntialias) + return f + + +def button_font( + point_size: int = 12, + weight: QFont.Weight = QFont.Weight.Medium, +) -> QFont: + f = _ui_font() + f.setPointSize(point_size) + f.setWeight(weight) + return f def apply_dark_theme(app: QApplication, *, use_opengl_plots: bool = True) -> None: app.setStyle("Fusion") + app.setFont(_ui_font()) pal = QPalette() pal.setColor(QPalette.Window, QColor(_BG)) @@ -164,11 +259,12 @@ def apply_dark_theme(app: QApplication, *, use_opengl_plots: bool = True) -> Non color: {_FG}; }} QGroupBox {{ - border: 1px solid {_BORDER}; + border: 1px solid {_SURF_BORDER}; border-radius: 12px; margin-top: 14px; padding: 10px 8px 8px 8px; - background-color: {_BG_ALT}; + background: qlineargradient(x1:0,y1:0,x2:0,y2:1, + stop:0 {_SURF_TOP}, stop:1 {_SURF_BOT}); }} QGroupBox::title {{ subcontrol-origin: margin; @@ -182,15 +278,21 @@ def apply_dark_theme(app: QApplication, *, use_opengl_plots: bool = True) -> Non }} QLabel, QCheckBox, QRadioButton {{ color: {_FG}; + font-size: 13px; + }} + QFormLayout QLabel {{ + color: #c8ccd2; + font-size: 12px; }} /* Fusion's default indicator melts into the dark background. * Force a visible square with a clear checked state. */ QCheckBox::indicator {{ width: 16px; height: 16px; - border: 1px solid {_BORDER}; + border: 1px solid {_SURF_BORDER}; border-radius: 3px; - background-color: #2b2c30; + background: qlineargradient(x1:0,y1:0,x2:0,y2:1, + stop:0 {_SURF_INSET_TOP}, stop:1 {_SURF_INSET_BOT}); }} QCheckBox::indicator:hover {{ border: 1px solid {_ACCENT}; @@ -205,21 +307,24 @@ def apply_dark_theme(app: QApplication, *, use_opengl_plots: bool = True) -> Non border: 1px solid {_BORDER}; }} QLineEdit, QDoubleSpinBox, QSpinBox, QComboBox {{ - background-color: #2b2c30; - border: 1px solid {_BORDER}; - border-radius: 4px; + background: qlineargradient(x1:0,y1:0,x2:0,y2:1, + stop:0 {_SURF_INSET_TOP}, stop:1 {_SURF_INSET_BOT}); + border: 1px solid {_SURF_BORDER}; + border-radius: 6px; padding: 3px 6px; selection-background-color: {_ACCENT}; selection-color: #0b0c0d; }} - QPushButton {{ - background-color: #303236; - border: 1px solid {_BORDER}; - border-radius: 4px; - padding: 6px 12px; + QPlainTextEdit {{ + background: qlineargradient(x1:0,y1:0,x2:0,y2:1, + stop:0 {_SURF_INSET_TOP}, stop:1 {_SURF_INSET_BOT}); + border: 1px solid {_SURF_BORDER}; + border-radius: 8px; + padding: 6px; + selection-background-color: {_ACCENT}; + selection-color: #0b0c0d; }} - QPushButton:hover {{ background-color: #3a3c41; }} - QPushButton:pressed {{ background-color: #2a2c30; }} + {_btn_qss_block()} QTabWidget::pane {{ border: 1px solid {_BORDER}; border-radius: 4px; }} QTabBar::tab {{ background: {_BG}; @@ -236,15 +341,78 @@ def apply_dark_theme(app: QApplication, *, use_opengl_plots: bool = True) -> Non border-bottom-color: {_BG_ALT}; }} QSplitter::handle {{ - background: {_BORDER}; - width: 3px; + background: qlineargradient(x1:0,y1:0,x2:0,y2:1, + stop:0 #3a3d44, stop:1 #2a2c31); + width: 5px; + margin: 4px 0; + border-radius: 2px; + }} + QSplitter::handle:hover {{ + background: qlineargradient(x1:0,y1:0,x2:0,y2:1, + stop:0 #4a6270, stop:1 #354a57); }} #NavRail {{ - background-color: #18191c; + background: qlineargradient(x1:0,y1:0,x2:0,y2:1, + stop:0 #1c1e22, stop:1 #141518); border-right: 1px solid {_BORDER}; }} + #NavBrand {{ + font-size: 15px; + font-weight: 700; + color: {_ACCENT}; + letter-spacing: 0.5px; + padding: 4px 6px 12px 6px; + }} + #NavHint {{ + color: {_DIM}; + font-size: 10px; + padding: 0 6px 10px 6px; + }} + #PageTitle {{ + font-size: 24px; + font-weight: 600; + color: {_FG}; + letter-spacing: -0.3px; + }} + #SurfaceCard {{ + background: qlineargradient(x1:0,y1:0,x2:0,y2:1, + stop:0 {_SURF_TOP}, stop:1 {_SURF_BOT}); + border: 1px solid {_SURF_BORDER}; + border-radius: 14px; + }} + #CardTitle {{ + font-size: 12px; + font-weight: 600; + color: #c8ccd2; + letter-spacing: 0.6px; + text-transform: uppercase; + }} + #NvsBadge {{ + font-size: 11px; + font-weight: 600; + letter-spacing: 0.4px; + padding: 4px 10px; + border-radius: 8px; + }} + #LiveMetric {{ + background: qlineargradient(x1:0,y1:0,x2:0,y2:1, + stop:0 {_SURF_INSET_TOP}, stop:1 {_SURF_INSET_BOT}); + border: 1px solid {_SURF_BORDER}; + border-radius: 10px; + }} + #MetricCaption {{ + color: {_DIM}; + font-size: 11px; + font-weight: 500; + }} + #MetricValue {{ + font-size: 15px; + font-weight: 500; + color: {_FG}; + letter-spacing: -0.2px; + }} QScrollArea, QScrollArea > QWidget > QWidget {{ - background-color: {_BG}; + background-color: transparent; }} """) diff --git a/tools/espfoc_tool/gui/tuning_panel.py b/tools/espfoc_tool/gui/tuning_panel.py index f24f0785..edfb0c53 100644 --- a/tools/espfoc_tool/gui/tuning_panel.py +++ b/tools/espfoc_tool/gui/tuning_panel.py @@ -4,177 +4,118 @@ from typing import Optional -from PySide6.QtCore import Qt, QTimer, Signal -from PySide6.QtGui import QFont +from PySide6.QtCore import Qt, Signal from PySide6.QtWidgets import ( - QCheckBox, QDoubleSpinBox, QFormLayout, - QGroupBox, QHBoxLayout, QLabel, QPlainTextEdit, - QPushButton, QScrollArea, - QSizePolicy, QVBoxLayout, QWidget, ) -from ..protocol import AxisStateFlag, TunerClient, TunerError +from ..protocol import TunerClient, TunerError +from . import labels as L from .tuner_poll_worker import TunerPollSnapshot -from .theme import make_badge_qss - - -def _spin(minimum: float, maximum: float, - decimals: int, value: float, - step: float = 0.1, - suffix: str = "") -> QDoubleSpinBox: - """Convenience wrapper matching Qt's (min, max) ordering and with an - optional unit suffix. Type-in is always allowed — the step value - only controls the ± buttons / scroll wheel.""" - if minimum > maximum: - minimum, maximum = maximum, minimum - box = QDoubleSpinBox() - box.setRange(minimum, maximum) - box.setDecimals(decimals) - box.setSingleStep(step) - box.setValue(value) - if suffix: - box.setSuffix(suffix) - # Keep the spinner buttons; make the field wide enough so long - # suffixes like " Ω" do not visually collide with the number. - box.setMinimumWidth(140) - return box +from .theme import monospace_font +from .buttons import action_button +from .widgets import LiveMetricGrid, SurfaceCard, spin_box class TuningPanel(QWidget): - """Left-hand side of the main window: controls + live readout. - - Most slots use short TunerClient round-trips. Long executables - (align) run in a QThread; MainWindow pauses the background poll - worker to keep bus usage serialized. - - Periodic tuner reads run on :class:`TunerPollWorker`; results arrive via - :meth:`apply_poll_snapshot`.""" + """Left column of Config: status, live metrics, overrides, log.""" _logFromReader = Signal(str) long_operation = Signal(bool) poll_refresh_requested = Signal(bool) - def __init__(self, client: Optional[TunerClient] = None) -> None: + def __init__( + self, + client: Optional[TunerClient] = None, + *, + scrollable: bool = True, + ) -> None: super().__init__() self._client = client self.last_poll_ok: bool = False - self._cal_present = False - self.last_axis_state: Optional[AxisStateFlag] = None - - # The whole panel sits inside a QScrollArea so a small window - # gets a vertical scroll bar instead of clipping content. Keeps - # every existing widget the operator already knows. outer = QVBoxLayout(self) outer.setContentsMargins(0, 0, 0, 0) - scroll = QScrollArea() - scroll.setWidgetResizable(True) - scroll.setHorizontalScrollBarPolicy(Qt.ScrollBarAlwaysOff) - scroll.setFrameShape(QScrollArea.NoFrame) - outer.addWidget(scroll) body = QWidget() - scroll.setWidget(body) root = QVBoxLayout(body) - - # --- Axis state badge (single colored pill, dominant flag) --- - state_row = QHBoxLayout() - state_row.addWidget(QLabel("Axis status:")) - self._state_label = QLabel("OFFLINE") - label, qss = make_badge_qss("OFFLINE") - self._state_label.setText(label) - self._state_label.setStyleSheet(qss) - self._state_label.setSizePolicy(QSizePolicy.Maximum, QSizePolicy.Fixed) - state_row.addWidget(self._state_label) - state_row.addStretch(1) - root.addLayout(state_row) - - # --- Live gains readout --- - live_box = QGroupBox("Live gains") - live_form = QFormLayout(live_box) - self._kp_label = QLabel("-") - self._ki_label = QLabel("-") - self._lim_label = QLabel("-") - self._vmax_label = QLabel("-") - for lbl in (self._kp_label, self._ki_label, - self._lim_label, self._vmax_label): - lbl.setStyleSheet("font-family: monospace;") - self._fc_label = QLabel("-") - self._fc_label.setStyleSheet("font-family: monospace;") - self._loop_fs_label = QLabel("-") - self._loop_fs_label.setStyleSheet("font-family: monospace;") - live_form.addRow("Kp [V/A]", self._kp_label) - live_form.addRow("Ki [V/(A·s)]", self._ki_label) - live_form.addRow("ILim [V]", self._lim_label) - live_form.addRow("Vmax [V]", self._vmax_label) - live_form.addRow("I-LPF fc [Hz]", self._fc_label) - live_form.addRow("Loop fs [Hz]", self._loop_fs_label) - root.addWidget(live_box) - - # --- Manual gain editor --- - manual = QGroupBox("Manual gain override") - mform = QFormLayout(manual) - self._kp_spin = _spin(0.0, 500.0, 4, 1.46, step=0.01, suffix=" V/A") - self._ki_spin = _spin(0.0, 1_000_000.0, 2, 659.17, step=10.0, - suffix=" V/(A·s)") - self._lim_spin = _spin(0.0, 200.0, 3, 12.0, step=0.1, suffix=" V") - mform.addRow("Kp", self._kp_spin) - mform.addRow("Ki", self._ki_spin) - mform.addRow("ILim", self._lim_spin) - btn_apply = QPushButton("Apply manual gains") + root.setContentsMargins(0, 0, 8, 0) + root.setSpacing(12) + + live_card = SurfaceCard("Live") + self._live_grid = LiveMetricGrid([ + L.PROPORTIONAL_GAIN, + L.INTEGRAL_GAIN, + L.CURRENT_LIMIT, + L.VOLTAGE_LIMIT, + L.CURRENT_FILTER, + L.LOOP_RATE, + ]) + live_card.body_layout.addWidget(self._live_grid) + root.addWidget(live_card) + + editor_card = SurfaceCard("Editor") + mform = QFormLayout() + mform.setLabelAlignment(Qt.AlignRight) + self._kp_spin = spin_box(0.0, 500.0, 4, 1.46, step=0.01, suffix=" V/A") + self._ki_spin = spin_box(0.0, 1_000_000.0, 2, 659.17, step=10.0, + suffix=" V/(A·s)") + self._lim_spin = spin_box(0.0, 200.0, 3, 12.0, step=0.1, suffix=" V") + self._fc_spin = spin_box(10.0, 20000.0, 1, 300.0, step=10.0, suffix=" Hz") + mform.addRow(L.PROPORTIONAL_GAIN, self._kp_spin) + mform.addRow(L.INTEGRAL_GAIN, self._ki_spin) + mform.addRow(L.CURRENT_LIMIT, self._lim_spin) + mform.addRow(L.CURRENT_FILTER, self._fc_spin) + btn_apply = action_button("Apply gains", "BtnDefault") btn_apply.clicked.connect(self._on_apply_manual) - mform.addRow(btn_apply) - root.addWidget(manual) - - fc_box = QGroupBox("Current filter") - fc_form = QFormLayout(fc_box) - self._fc_spin = _spin(10.0, 20000.0, 1, 300.0, - step=10.0, suffix=" Hz") - btn_fc = QPushButton("Apply I-LPF cutoff") + btn_fc = action_button("Apply filter", "BtnDefault") btn_fc.clicked.connect(self._on_apply_fc) - fc_form.addRow("I-LPF fc", self._fc_spin) - fc_form.addRow(btn_fc) - root.addWidget(fc_box) - - self._cal_label = QLabel("calibration: -") - self._cal_label.setStyleSheet("font-family: monospace; color: #9aa0a6;") - root.addWidget(self._cal_label) - - # --- Log channel viewer --- + btn_row = QHBoxLayout() + btn_row.setSpacing(8) + btn_row.addWidget(btn_apply) + btn_row.addWidget(btn_fc) + btn_row.addStretch(1) + editor_card.body_layout.addLayout(mform) + editor_card.body_layout.addLayout(btn_row) + root.addWidget(editor_card) + + log_card = SurfaceCard("Log") self._log_view = QPlainTextEdit() self._log_view.setReadOnly(True) self._log_view.setMaximumBlockCount(80) - self._log_view.setMaximumHeight(110) - f = QFont("monospace") - f.setPointSize(9) - self._log_view.setFont(f) - root.addWidget(self._log_view) - self._logFromReader.connect(self._append_log) - self.rebind_log_reader() + self._log_view.setMaximumHeight(120) + self._log_view.setFont(monospace_font(9)) + log_card.body_layout.addWidget(self._log_view) + root.addWidget(log_card) - # --- Status / errors bar --- self._status = QLabel("") - self._status.setStyleSheet("color: #c62828;") + self._status.setStyleSheet("color: #c62828; font-size: 11px;") root.addWidget(self._status) - root.addStretch(1) - # --- Public slots (driven by MainWindow / poll worker) ----------------- + if scrollable: + scroll = QScrollArea() + scroll.setWidgetResizable(True) + scroll.setHorizontalScrollBarPolicy(Qt.ScrollBarAlwaysOff) + scroll.setFrameShape(QScrollArea.NoFrame) + scroll.setWidget(body) + outer.addWidget(scroll) + else: + outer.addWidget(body) + + self._loop_fs_hz = 0.0 + self._logFromReader.connect(self._append_log) + self.rebind_log_reader() def set_loop_rate_hz(self, fs_hz: float) -> None: - """Receive the firmware's current PI sample rate (read once - on connect by MainWindow). Cached so the UI can show it - without a round-trip per refresh — the value is fixed for - the duration of a session.""" if fs_hz > 1.0: self._loop_fs_hz = fs_hz - self._loop_fs_label.setText(f"{fs_hz:9.1f}") + self._live_grid.metric(5).set_value(f"{fs_hz:.1f} Hz") def set_client(self, client: Optional[TunerClient]) -> None: self._client = client @@ -189,40 +130,33 @@ def rebind_log_reader(self) -> None: pass def detach_log_reader(self) -> None: + if self._client is None: + return try: self._client.reader.register_log_callback(None) except Exception: pass def request_full_tuner_poll(self) -> None: - """Ask the background worker for Vmax + NVS-present on the next pass.""" self.poll_refresh_requested.emit(True) def apply_poll_snapshot(self, snap: TunerPollSnapshot) -> None: - """Apply a snapshot emitted by :class:`TunerPollWorker` (GUI thread).""" self.last_poll_ok = snap.last_poll_ok - self._cal_present = snap.cal_present self._status.setText("") - self._kp_label.setText(f"{snap.kp:9.4f}") - self._ki_label.setText(f"{snap.ki:9.2f}") - self._lim_label.setText(f"{snap.lim:9.3f}") - self._vmax_label.setText(f"{snap.vmax:9.3f}") - self._fc_label.setText(f"{snap.fc:9.1f}") - self.last_axis_state = AxisStateFlag(snap.state) - badge_key = self._badge_key_for_state(self.last_axis_state) - label, qss = make_badge_qss(badge_key) - self._state_label.setText(label) - self._state_label.setStyleSheet(qss) - self._cal_label.setText("calibration: " + - ("\u2713 present in NVS" if snap.cal_present - else "\u2717 none stored")) + fs_str = (f"{self._loop_fs_hz:.1f} Hz" if self._loop_fs_hz > 1.0 + else "—") + self._live_grid.set_values([ + f"{snap.kp:.4f} V/A", + f"{snap.ki:.1f} V/(A·s)", + f"{snap.lim:.2f} V", + f"{snap.vmax:.2f} V", + f"{snap.fc:.0f} Hz", + fs_str, + ]) def apply_poll_error(self, msg: str) -> None: - """Worker poll failed (transport / tuner error).""" self._status.setText(msg) self.last_poll_ok = False - # --- Handlers ---------------------------------------------------------- - def _on_apply_manual(self) -> None: if self._client is None: return @@ -251,15 +185,7 @@ def set_actions_enabled(self, on: bool) -> None: for w in self.findChildren(QDoubleSpinBox): w.setEnabled(on) - def _set_axis_badge_key(self, key: str) -> None: - label, qss = make_badge_qss(key) - self._state_label.setText(label) - self._state_label.setStyleSheet(qss) - - # --- LOG channel viewer -------------------------------------------- - def _on_log_reader(self, seq: int, payload: bytes) -> None: - """Reader thread context — bounce to the Qt thread.""" try: self._logFromReader.emit(payload.decode("ascii", errors="replace")) except Exception: @@ -278,7 +204,6 @@ def apply_nvs_shadow_floats( ki: float, fc: float, ) -> None: - """Apply NVS-shadow values to spinboxes (GUI thread only; no I/O).""" for sp in (self._kp_spin, self._ki_spin, self._fc_spin): sp.blockSignals(True) try: @@ -291,10 +216,8 @@ def apply_nvs_shadow_floats( sp.blockSignals(False) def sync_motor_from_nvs_shadows(self) -> None: - """Pull R/L/BW and live controls from the target (blocks on :class:`TunerClient`). - - Prefer having the poll worker read and call :meth:`apply_nvs_shadow_floats` - from the GUI thread so the main thread never holds the bus lock.""" + if self._client is None: + return try: kp = self._client.read_kp() ki = self._client.read_ki() @@ -302,14 +225,3 @@ def sync_motor_from_nvs_shadows(self) -> None: except TunerError: return self.apply_nvs_shadow_floats(0.0, 0.0, 0.0, kp, ki, fc) - - @staticmethod - def _badge_key_for_state(s: AxisStateFlag) -> str: - """Pick the dominant flag and map it to a badge palette key.""" - if s & AxisStateFlag.RUNNING: - return "RUNNING" - if s & AxisStateFlag.ALIGNED: - return "ALIGNED" - if s & AxisStateFlag.INITIALIZED: - return "INIT" - return "OFFLINE" diff --git a/tools/espfoc_tool/gui/views/__init__.py b/tools/espfoc_tool/gui/views/__init__.py index 50ca6a98..586a6335 100644 --- a/tools/espfoc_tool/gui/views/__init__.py +++ b/tools/espfoc_tool/gui/views/__init__.py @@ -1,6 +1,6 @@ """espFoC Tool main views.""" -from .config_view import ConfigView -from .current_view import CurrentView +from .dashboard_view import DashboardView +from .tune_view import TuneView -__all__ = ["ConfigView", "CurrentView"] +__all__ = ["TuneView", "DashboardView"] diff --git a/tools/espfoc_tool/gui/views/config_view.py b/tools/espfoc_tool/gui/views/config_view.py deleted file mode 100644 index 219a64fa..00000000 --- a/tools/espfoc_tool/gui/views/config_view.py +++ /dev/null @@ -1,32 +0,0 @@ -"""Config view: tuning controls + NVS diff panel.""" - -from __future__ import annotations - -from PySide6.QtCore import Qt -from PySide6.QtWidgets import QHBoxLayout, QSplitter, QWidget - -from ..nvs_diff_panel import NvsDiffPanel -from ..tuning_panel import TuningPanel - - -class ConfigView(QWidget): - def __init__(self, tuning: TuningPanel, parent: QWidget | None = None) -> None: - super().__init__(parent) - lay = QHBoxLayout(self) - lay.setContentsMargins(0, 0, 0, 0) - split = QSplitter(Qt.Horizontal) - split.addWidget(tuning) - self.nvs = NvsDiffPanel( - kp_spin=tuning._kp_spin, - ki_spin=tuning._ki_spin, - lim_spin=tuning._lim_spin, - fc_spin=tuning._fc_spin, - ) - split.addWidget(self.nvs) - split.setStretchFactor(0, 3) - split.setStretchFactor(1, 2) - split.setSizes([520, 340]) - lay.addWidget(split) - for sp in (tuning._kp_spin, tuning._ki_spin, - tuning._lim_spin, tuning._fc_spin): - sp.valueChanged.connect(self.nvs.refresh_from_editor) diff --git a/tools/espfoc_tool/gui/views/current_view.py b/tools/espfoc_tool/gui/views/current_view.py deleted file mode 100644 index d42d10d4..00000000 --- a/tools/espfoc_tool/gui/views/current_view.py +++ /dev/null @@ -1,31 +0,0 @@ -"""Current design view: motor model rail + analysis plots.""" - -from __future__ import annotations - -from typing import Callable, Optional - -from PySide6.QtCore import Qt -from PySide6.QtWidgets import QHBoxLayout, QSplitter, QWidget - -from ..analysis_panel import AnalysisPanel -from ..motor_model_rail import MotorModelRail - - -class CurrentView(QWidget): - def __init__( - self, - analysis: AnalysisPanel, - on_params_changed: Optional[Callable] = None, - parent: QWidget | None = None, - ) -> None: - super().__init__(parent) - lay = QHBoxLayout(self) - lay.setContentsMargins(0, 0, 0, 0) - split = QSplitter(Qt.Horizontal) - self.motor = MotorModelRail(on_params_changed=on_params_changed) - split.addWidget(self.motor) - split.addWidget(analysis) - split.setStretchFactor(0, 0) - split.setStretchFactor(1, 1) - split.setSizes([220, 900]) - lay.addWidget(split) diff --git a/tools/espfoc_tool/gui/views/dashboard_view.py b/tools/espfoc_tool/gui/views/dashboard_view.py new file mode 100644 index 00000000..6538bc26 --- /dev/null +++ b/tools/espfoc_tool/gui/views/dashboard_view.py @@ -0,0 +1,57 @@ +"""Dashboard view: motion control, SVM, and scope channels.""" + +from __future__ import annotations + +from PySide6.QtWidgets import QHBoxLayout, QSizePolicy, QWidget + +from ..control_rail import ControlRail +from ..states_panel import StatesPanel +from ..svm_panel import SvmPanel +from ..widgets import PageShell, horizontal_splitter, vertical_splitter + + +class DashboardView(QWidget): + def __init__( + self, + control: ControlRail, + svm: SvmPanel, + states: StatesPanel, + parent: QWidget | None = None, + ) -> None: + super().__init__(parent) + + control.bind_svm_autoset(svm.autoset) + + control.setMinimumWidth(260) + control.setMaximumWidth(360) + control.setSizePolicy( + QSizePolicy.Policy.Fixed, QSizePolicy.Policy.Expanding) + + plots = vertical_splitter( + svm, + states, + stretches=(2, 3), + sizes=(340, 500), + ) + + split = horizontal_splitter( + control, + plots, + stretches=(0, 1), + sizes=(300, 960), + ) + + body = QWidget() + lay = QHBoxLayout(body) + lay.setContentsMargins(0, 0, 0, 0) + lay.addWidget(split) + + shell = PageShell( + "Dashboard", + "Setpoints and actions on the left; SVM vector view and scope on the right.", + body, + parent=self, + ) + outer = QHBoxLayout(self) + outer.setContentsMargins(0, 0, 0, 0) + outer.addWidget(shell) diff --git a/tools/espfoc_tool/gui/views/tune_view.py b/tools/espfoc_tool/gui/views/tune_view.py new file mode 100644 index 00000000..a71a6c2a --- /dev/null +++ b/tools/espfoc_tool/gui/views/tune_view.py @@ -0,0 +1,86 @@ +"""Tune view: device setup, flash, motor model, MPZ analysis.""" + +from __future__ import annotations + +from PySide6.QtCore import Qt +from PySide6.QtWidgets import ( + QHBoxLayout, + QScrollArea, + QSizePolicy, + QVBoxLayout, + QWidget, +) + +from ..analysis_panel import AnalysisPanel +from ..motor_model_rail import MotorModelRail +from ..nvs_diff_panel import NvsDiffPanel +from ..tuning_panel import TuningPanel +from ..widgets import PageShell, horizontal_splitter + + +class TuneView(QWidget): + def __init__( + self, + tuning: TuningPanel, + analysis: AnalysisPanel, + on_params_changed=None, + parent: QWidget | None = None, + ) -> None: + super().__init__(parent) + + self.nvs = NvsDiffPanel( + kp_spin=tuning._kp_spin, + ki_spin=tuning._ki_spin, + lim_spin=tuning._lim_spin, + fc_spin=tuning._fc_spin, + ) + self.nvs.setMinimumWidth(260) + self.nvs.setMaximumWidth(420) + self.nvs.setSizePolicy( + QSizePolicy.Policy.Preferred, QSizePolicy.Policy.Expanding) + + self.motor = MotorModelRail(on_params_changed=on_params_changed) + + setup_scroll = QScrollArea() + setup_scroll.setWidgetResizable(True) + setup_scroll.setHorizontalScrollBarPolicy(Qt.ScrollBarAlwaysOff) + setup_scroll.setFrameShape(QScrollArea.NoFrame) + setup_scroll.setWidget(tuning) + setup_scroll.setMinimumWidth(300) + setup_scroll.setSizePolicy( + QSizePolicy.Policy.Preferred, QSizePolicy.Policy.Expanding) + + plots_col = QWidget() + plots_lay = QVBoxLayout(plots_col) + plots_lay.setContentsMargins(0, 0, 0, 0) + plots_lay.setSpacing(12) + plots_lay.addWidget(self.motor, 0) + plots_lay.addWidget(analysis, 1) + + split = horizontal_splitter( + setup_scroll, + self.nvs, + plots_col, + stretches=(2, 1, 3), + sizes=(400, 300, 720), + ) + + body = QWidget() + lay = QHBoxLayout(body) + lay.setContentsMargins(0, 0, 0, 0) + lay.addWidget(split) + + shell = PageShell( + "Tune", + "Status and gains on the left, flash diff in the center, " + "motor model and MPZ plots on the right.", + body, + parent=self, + ) + outer = QHBoxLayout(self) + outer.setContentsMargins(0, 0, 0, 0) + outer.addWidget(shell) + + for sp in (tuning._kp_spin, tuning._ki_spin, + tuning._lim_spin, tuning._fc_spin): + sp.valueChanged.connect(self.nvs.refresh_from_editor) diff --git a/tools/espfoc_tool/gui/widgets.py b/tools/espfoc_tool/gui/widgets.py new file mode 100644 index 00000000..621e4434 --- /dev/null +++ b/tools/espfoc_tool/gui/widgets.py @@ -0,0 +1,186 @@ +"""Shared layout primitives: page chrome, elevated cards, live metrics.""" + +from __future__ import annotations + +from PySide6.QtCore import Qt +from PySide6.QtWidgets import ( + QDoubleSpinBox, + QFrame, + QGridLayout, + QHBoxLayout, + QLabel, + QSplitter, + QVBoxLayout, + QWidget, +) + +from .theme import monospace_font + + +def spin_box( + minimum: float, + maximum: float, + decimals: int, + value: float, + *, + step: float = 0.1, + suffix: str = "", +) -> QDoubleSpinBox: + if minimum > maximum: + minimum, maximum = maximum, minimum + box = QDoubleSpinBox() + box.setRange(minimum, maximum) + box.setDecimals(decimals) + box.setSingleStep(step) + box.setValue(value) + if suffix: + box.setSuffix(suffix) + box.setMinimumWidth(120) + return box + + +def horizontal_splitter( + *panes: QWidget, + stretches: tuple[int, ...] | None = None, + sizes: tuple[int, ...] | None = None, +) -> QSplitter: + split = QSplitter(Qt.Horizontal) + split.setChildrenCollapsible(False) + split.setHandleWidth(6) + for i, pane in enumerate(panes): + split.addWidget(pane) + if stretches is not None and i < len(stretches): + split.setStretchFactor(i, stretches[i]) + if sizes is not None: + split.setSizes(list(sizes)) + return split + + +def vertical_splitter( + *panes: QWidget, + stretches: tuple[int, ...] | None = None, + sizes: tuple[int, ...] | None = None, +) -> QSplitter: + split = QSplitter(Qt.Vertical) + split.setChildrenCollapsible(False) + split.setHandleWidth(6) + for i, pane in enumerate(panes): + split.addWidget(pane) + if stretches is not None and i < len(stretches): + split.setStretchFactor(i, stretches[i]) + if sizes is not None: + split.setSizes(list(sizes)) + return split + + +class PageHeader(QWidget): + def __init__( + self, + title: str, + subtitle: str = "", + parent: QWidget | None = None, + ) -> None: + super().__init__(parent) + lay = QVBoxLayout(self) + lay.setContentsMargins(0, 0, 0, 0) + lay.setSpacing(4) + t = QLabel(title) + t.setObjectName("PageTitle") + lay.addWidget(t) + if subtitle.strip(): + s = QLabel(subtitle) + s.setObjectName("PageSubtitle") + s.setWordWrap(True) + lay.addWidget(s) + + +class PageShell(QWidget): + """Top title band + stretchable body (typical view wrapper).""" + + def __init__( + self, + title: str, + subtitle: str, + body: QWidget, + parent: QWidget | None = None, + ) -> None: + super().__init__(parent) + root = QVBoxLayout(self) + root.setContentsMargins(20, 18, 20, 16) + root.setSpacing(14) + root.addWidget(PageHeader(title, subtitle)) + root.addWidget(body, 1) + + +class SurfaceCard(QFrame): + def __init__( + self, + title: str = "", + subtitle: str = "", + parent: QWidget | None = None, + ) -> None: + super().__init__(parent) + self.setObjectName("SurfaceCard") + outer = QVBoxLayout(self) + outer.setContentsMargins(16, 14, 16, 14) + outer.setSpacing(10) + if title: + t = QLabel(title) + t.setObjectName("CardTitle") + outer.addWidget(t) + if subtitle.strip(): + s = QLabel(subtitle) + s.setObjectName("CardSubtitle") + s.setWordWrap(True) + outer.addWidget(s) + self._body = QWidget() + self._body_layout = QVBoxLayout(self._body) + self._body_layout.setContentsMargins(0, 0, 0, 0) + self._body_layout.setSpacing(8) + outer.addWidget(self._body) + + @property + def body_layout(self) -> QVBoxLayout: + return self._body_layout + + +class LiveMetric(QWidget): + def __init__(self, label: str, parent: QWidget | None = None) -> None: + super().__init__(parent) + lay = QVBoxLayout(self) + lay.setContentsMargins(10, 8, 10, 8) + lay.setSpacing(2) + self.setObjectName("LiveMetric") + cap = QLabel(label) + cap.setObjectName("MetricCaption") + self.value = QLabel("—") + self.value.setObjectName("MetricValue") + self.value.setFont(monospace_font(14)) + lay.addWidget(cap) + lay.addWidget(self.value) + + def set_value(self, text: str) -> None: + self.value.setText(text) + + +class LiveMetricGrid(QWidget): + def __init__(self, labels: list[str], parent: QWidget | None = None) -> None: + super().__init__(parent) + grid = QGridLayout(self) + grid.setContentsMargins(0, 0, 0, 0) + grid.setHorizontalSpacing(10) + grid.setVerticalSpacing(10) + self._metrics: list[LiveMetric] = [] + cols = 2 + for i, lab in enumerate(labels): + m = LiveMetric(lab) + self._metrics.append(m) + grid.addWidget(m, i // cols, i % cols) + + def metric(self, index: int) -> LiveMetric: + return self._metrics[index] + + def set_values(self, texts: list[str]) -> None: + for m, t in zip(self._metrics, texts): + m.set_value(t) + diff --git a/tools/espfoc_tool/tests/test_gui_smoke.py b/tools/espfoc_tool/tests/test_gui_smoke.py index 12771e85..b1d59fa9 100644 --- a/tools/espfoc_tool/tests/test_gui_smoke.py +++ b/tools/espfoc_tool/tests/test_gui_smoke.py @@ -27,7 +27,12 @@ def test_main_window_offline_smoke(): app = create_application() conn = ConnectionManager(fixed_port=None) w = MainWindow(conn, title="espFoC Tool test") - assert w._stack.count() == 4 + assert w._stack.count() == 2 + from PySide6.QtWidgets import QLabel + titles = [lb.text() for lb in w.findChildren(QLabel) + if lb.objectName() == "PageTitle"] + assert "Tune" in titles + assert "Dashboard" in titles w.close() conn.stop()

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