New LUA scripts & widgets - #3
jurgelenas wants to merge 242 commits into
Conversation
…ns for mk3 and 1 column for small screen radios
GREEN and RED are raw primaries -- RGB(0,255,0) and RGB(255,0,0), colors.cpp:51-54 -- so a full-width LQ bar in GREEN was the loudest thing on the screen, and it stayed that way whatever theme the pilot had chosen. The theme carries the same three meanings in colours picked to sit together: EDIT, ACTIVE and WARNING. Bars, the status LED and the LQ headline now take those and repaint with the theme. Text keeps a separate ramp. COLOR_THEME_ACTIVE is a bright yellow, which is fine as a bar fill and illegible as a word on the light themes' near-white panel, so warnings in text stay ORANGE. Bar tracks are the disabled grey at part opacity. Solid it read as a second bar competing with its own fill; the theme's soft secondary disappeared into the panel entirely, which left the fill a floating stub with nothing to measure it against. The 1/2 tier keeps both bars, which is the point of the layout -- it is the size the widget is usually placed at, and the mirrored-blocks draft this replaced could not keep even one there. The battery row drops before either bar is squeezed below the height at which it stops being a bar.
TQly sits beside TRSS on the same row in percent, so a bare -94 there invites reading it as one too. The unit is not something the width ladder gets to trade away. It was the first thing to go, which left the narrowest rung showing "TRSS -94". Now the pack total goes first, then the row splits, and the DOWNLINK header is what drops last -- the right order, because TQly and TRSS name themselves and a bare number does not name its unit. Costs nothing at the sizes that matter: the 396px zone still fits the row under its header, and the 198px one reaches the headerless rung it was already using.
Both were COLOR_THEME_PRIMARY1, which is the text colour -- RGB(0,0,0) on the light themes. As a glyph that is correct and as a filled block it is a black bar dropped onto a blue panel, which is what they looked like. COLOR_THEME_FOCUS is what EdgeTX uses everywhere else to mean "this one is active", which is exactly what a lit power cell and the live antenna cell are saying, and it follows the theme. Power deliberately stays off the green/amber/red ramp: 500 mW is not worse than 50, so a health colour there would be claiming something the number does not mean. The mismatch banners move from RED to COLOR_THEME_WARNING with them, so the whole widget now draws from the theme. The single exception is ORANGE for warning text, because COLOR_THEME_ACTIVE is a yellow that cannot be read on a near-white panel.
Four adjustments from looking at it on the radio rather than in the plan. The status LED was centred on the strip height, which is the text's line box plus padding, so it sat below the RF mode beside it -- near enough to read as a mistake rather than a choice. It now centres on the line box, landing on the same centre as the antenna cells, and it is a third smaller: at half the row height an indicator stops being a dot and starts competing with the text. It also gets a fixed lane, so its radius can be tuned without the RF mode moving sideways. TX POWER's meter was absorbing the whole gap between the RF mode and the antenna cells, which dragged its own reading to the far side of the strip with nothing tying the two together. The meter now has a natural width measured off the row, the reading sits a fixed gap after it, and the slack stays to their right. Whether the meter fits at all is now measured against the antenna cells' position instead of assumed from the width gate. The panel is inset from the zone rather than filling it, so two widgets side by side no longer share one edge, and the content is inset again from the panel's own border -- full-width bars starting and ending on the border read as spilling out of the panel. And at half width TX POWER moves above the uplink panel instead of below the group rows. It is link configuration, like the RF mode and the antenna it now sits with; last place filed it under the flight controller's readings, which is not what it is.
Remove the ELRS handset address distinction
At 400K baud the module splits a command answer into 27-byte chunks and serves the continuation only on CMD_QUERY. The session hurried the read deadline instead of the query one, so every extra chunk waited for the 2 s keep-alive: a confirm dialog took 2 s to appear, and again after Confirm. Query the next chunk on the next tick, as the legacy script did. Route every command step through one send path that retries a push the radio's single output slot refused and resets chunk state only after a successful send, so a one-chunk idle answer after a chunked executing one is no longer swallowed and Bind dismisses on its own. The click guard keys on the live popup, not on the field's stale status. Both UIs show "Sending..." while a click or confirm is unanswered, after a 200 ms grace so healthy links go straight to the dialog. The B&W popup repaints the page after a cancel. The simulator now chunks command answers and serves continuation chunks only on CMD_QUERY like the firmware, with the firmware's 2 s timeout; maxPacketBytes = 35 reproduces the 400K/500 Hz case.
|
Whew. A lot to get through but almost all these are small tweaks. I really like the visual redo you did on the VTX Admin, it looks great and the widget is a lot easier to glance at now. This took the better part of 2 days to get through all the code again with so many different scripts on so many platforms, but here's the abridged review notes!
AIness
ELRS Version requirementWe know what the ELRS version is from the deviceinfo header, and we know what version the script requires, but these scripts just sort of fail to work properly if the ELRS version isn't high enough. It could display a message about it. *** DO NOT MAKE THAT CHANGE, I DO NOT WANT TO REVIEW NEW FEATURE CODE AGAIN *** this could be done in a separate PR if you want. Somebody should though. |
After a value write the session re-read the parent folder and its value and INFO siblings but skipped COMMAND fields, so a command the firmware hides or shows in response kept its stale visibility until a full reload. Legacy elrs.lua made the same change in cc2e010; the firmware keeps Send VTx always visible because scripts did not re-read commands. The simulator now applies the firmware's VTX Admin visibility rules: Channel, Pwr Lvl and Pitmode hide while Band/Enable is Disabled, and Pitmode hides at Pwr Lvl "-". Send VTx hides with Band/Enable too, which exercises the command re-read.
Re-read sibling crsf command fields after a value write
Retain legacy elrs.lua for old radios support
Addressed in #23
I was hoping for EdgeTX team to release official EdgeTX Lua typedefs based on my https://github.com/jurgelenas/edgetx-lua-stdlib idea. Unfortunately the progress has stalled. Will remove it later.
Addressed in #25
Addressed in #26
I think I had more reasons for it, but the only thing that I can remember now is that we are using directories for tool scripts.
Addressed in #27
Addressed in #28
Good idea. I have updated telemetry widget top bar layout too. Addressed in #29
Addressed in #30
Addressed in #31
Could not reproduce this one. Could you share a screenshot? What EdgetTX version you were using? |
No description provided.