Skip to content

Conversation

@ThatKalle
Copy link
Contributor

Ths PR aims to extend the support for Windows users by leveraging the devcontainer feature.

It's targeted towards the tft-gui-work branch as I've used a T-Deck Plus to test and validate, that said, the changes are not really tft-gui specific persay, so maybe it would be better suited somewhere else.

The two issues with developing using Windows is that Trunk.io and Platformio is not fully supported.

Trunk.io

Trunk.io works nicely within the devcontainer simply by installing the vscode extension during build.

  "customizations": {
    "vscode": {
      "extensions": [
        "Trunk.io"
      ]
    }
  },

It finds and uses the configuration within /.trunk/.

Installing the same extension on Windows natively results in all kinds of errors.

PlatformIO

PlatformIO does have very much the same sort of issue as Trunk.io, it does not play nicely on Windows native, but does work from within the devcontainer.

  "customizations": {
    "vscode": {
      "extensions": [
        "platformio.platformio-ide"
      ]
    }
  },

A feature that needs a bit of a helping hand however is the ability to Upload the built firmware to the device using the serial connection (in the case of T-Deck Plus).

Due to how the forwarding of devices work from Windows to WSL2 to Devcontainer not only do we need to make some changes to the container itself, but also to Windows and WSL.

Windows

Using usbipd-win we're able to send a connected device down WSL2.

> usbipd list
Connected:
BUSID  VID:PID    DEVICE
4-7    303a:1001  USB Serial Device (COM18), USB JTAG/serial debug unit
> usbipd bind --busid=4-7
> usbipd attach --wsl --busid=4-7 --auto-attach

WSL2

Within WSL2 we'll see the device

$ lsusb
Bus 001 Device 005: ID 303a:1001 Espressif USB JTAG/serial debug unit
$ sudo dmesg | grep tty
[ 2944.930440] cdc_acm 1-1:1.0: ttyACM0: USB ACM device

But, we also need to setup udev rules for PlatformIO supported boards/devices. ref

$ sudo apt-get install udev -y
$ curl -fsSL https://raw.githubusercontent.com/platformio/platformio-core/develop/platformio/assets/system/99-platformio-udev.rules | sudo tee /etc/udev/rules.d/99-platformio-udev.rules
$ sudo service udev restart

The ttyACM0 device should now be ready to be sent over to the devcontainer to be used by Platformio from within VSCode.

devcontainer

The "runArgs": ["--device=/dev/ttyACM0"], needs to be adjusted to match your system. On my machine it ended up being /dev/ttyACM0, It's probably not the case for every system, hence commented out.

The same udev rules for PlatformIO is also added to the devcontainer via Dockerfile.

GPG

The devcontainer needs the gpg and gnupg2 packages to allow for GPG signed commits to be created.

@CLAassistant
Copy link

CLAassistant commented Nov 19, 2024

CLA assistant check
All committers have signed the CLA.

@CLAassistant
Copy link

CLA assistant check
Thank you for your submission! We really appreciate it. Like many open source projects, we ask that you sign our Contributor License Agreement before we can accept your contribution.
You have signed the CLA already but the status is still pending? Let us recheck it.

@koga73
Copy link

koga73 commented Nov 19, 2024

Related to Windows support, I built the tft-gui-work branch on Windows with PlatformIO but was getting this error:

lto-wrapper.exe: fatal error: CreateProcess: No such file or directory

As a workaround I removed the -flto compile flag from my local and this resolved the problem.
Will this PR address lto-wrapper.exe missing?

@ThatKalle
Copy link
Contributor Author

Related to Windows support, I built the tft-gui-work branch on Windows with PlatformIO but was getting this error:

lto-wrapper.exe: fatal error: CreateProcess: No such file or directory

As a workaround I removed the -flto compile flag from my local and this resolved the problem. Will this PR address lto-wrapper.exe missing?

The error message looks very familiar.

This PR will not resolve the fact that lto-wrapper.exe is missing, can't be found, or can't find what it's looking for.

However, it does allow Windows users to do the building and uploading using a devcontainer with some setup, rather than locally. The devcontainer does not experience the lto-wrapper.exe ralated error during my testing, most likely due to it being a more supported Linux box, rather than a Windows one.

@mverch67
Copy link
Collaborator

Is this the same that was already added to the device-ui repo?

&& apt-get clean && rm -rf /var/lib/apt/lists/*

RUN pipx install platformio==6.1.15 No newline at end of file
RUN pipx install platformio==6.1.15
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

maybe add install --upgrade meshtastic ? :)

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think there's a chance that might conflict, since this is designed for dev-envs?

@fifieldt fifieldt merged commit 50f1cb8 into meshtastic:tft-gui-work Nov 27, 2024
@fifieldt
Copy link
Member

fifieldt commented Nov 27, 2024

Thanks a lot for your dedication and excellent write-up, @ThatKalle . Welcome to Meshtastic!

fifieldt pushed a commit to fifieldt/meshtastic-firmware that referenced this pull request Dec 7, 2024
* Add support for GPG

* Add usb device support

* Add trunk.io to devcontainer

* Trunk things

* trunk fmt

* formatting

* fix trivy/DS002, checkov/CKV_DOCKER_3

* hide docker extension popup

* fix trivy/DS026, checkov/CKV_DOCKER_2
fifieldt pushed a commit to fifieldt/meshtastic-firmware that referenced this pull request Dec 7, 2024
* Add support for GPG

* Add usb device support

* Add trunk.io to devcontainer

* Trunk things

* trunk fmt

* formatting

* fix trivy/DS002, checkov/CKV_DOCKER_3

* hide docker extension popup

* fix trivy/DS026, checkov/CKV_DOCKER_2
fifieldt pushed a commit to fifieldt/meshtastic-firmware that referenced this pull request Dec 7, 2024
* Add support for GPG

* Add usb device support

* Add trunk.io to devcontainer

* Trunk things

* trunk fmt

* formatting

* fix trivy/DS002, checkov/CKV_DOCKER_3

* hide docker extension popup

* fix trivy/DS026, checkov/CKV_DOCKER_2
fifieldt pushed a commit to fifieldt/meshtastic-firmware that referenced this pull request Dec 8, 2024
* Add support for GPG

* Add usb device support

* Add trunk.io to devcontainer

* Trunk things

* trunk fmt

* formatting

* fix trivy/DS002, checkov/CKV_DOCKER_3

* hide docker extension popup

* fix trivy/DS026, checkov/CKV_DOCKER_2
fifieldt pushed a commit to fifieldt/meshtastic-firmware that referenced this pull request Dec 11, 2024
* Add support for GPG

* Add usb device support

* Add trunk.io to devcontainer

* Trunk things

* trunk fmt

* formatting

* fix trivy/DS002, checkov/CKV_DOCKER_3

* hide docker extension popup

* fix trivy/DS026, checkov/CKV_DOCKER_2
caveman99 pushed a commit that referenced this pull request Dec 12, 2024
* Add support for GPG
* Add usb device support
* Add trunk.io to devcontainer
* Trunk things
* trunk fmt
* formatting
* fix trivy/DS002, checkov/CKV_DOCKER_3
* hide docker extension popup
* fix trivy/DS026, checkov/CKV_DOCKER_2

Co-authored-by: Kalle Lilja <15094562+ThatKalle@users.noreply.github.com>
fifieldt added a commit to nebman/meshtastic-firmware that referenced this pull request Dec 14, 2024
…5518)

* Add support for GPG
* Add usb device support
* Add trunk.io to devcontainer
* Trunk things
* trunk fmt
* formatting
* fix trivy/DS002, checkov/CKV_DOCKER_3
* hide docker extension popup
* fix trivy/DS026, checkov/CKV_DOCKER_2

Co-authored-by: Kalle Lilja <15094562+ThatKalle@users.noreply.github.com>
fifieldt added a commit that referenced this pull request Dec 22, 2024
…battery sensor (#5271)

* INA219 charging detection

minimal implementation: if there is a configured INA219 sensor for battery monitoring we can take the current flow across the shunt resistor to know if we are charging the battery - negative milliamps indicate charging

* Update Power.cpp

added comments and 2 extra defines to disable and swap detection direction

* Update Power.cpp

fix disabled case

* move getCurrentMa() to new CurrentSensor class

* INA219 charging detection

minimal implementation: if there is a configured INA219 sensor for battery monitoring we can take the current flow across the shunt resistor to know if we are charging the battery - negative milliamps indicate charging

* Update Power.cpp

added comments and 2 extra defines to disable and swap detection direction

* Update Power.cpp

fix disabled case

* move getCurrentMa() to new CurrentSensor class

* add INA3221 charging detection

* RP2040: Update core; add mDNS support (#5355)

* Update arduino-pico core

* RP2040: Add mDNS support

* SimpleMDNS `begin` now returns a bool

* Add `-g` option to `debug_build_flags` to link files for gdb

* RAK11310 needs old platform as well

* Change defines to specific architecture

* Core version 4.2.1 is out

* Add sudo to apt-get commands for Raspbian Build (#5364)

Without sudo, inadequate permissions to runs the commands meant
the build was failing.

* Typo fix in build_raspbian.yml (#5365)

s/sudp/sudo :(:(:(

* Rework some things

* Trunk

* Separate littlefs bundle

* version tags

* Diag

* Add littlefswebui

* Bug fixed in ExternalNotificationModule (#5375)

While `nagging` setExternalState wasn't written to Buzzer & Vibra so output was never toggled.

Possible fix for #5348

* Cleanup static files from bad Web UI bundle on 2.5.13 release (#5376)

* Cleanup static files from bad Web UI bundle on 2.5.13 release

* Check existence first

* Esp32 is the only one we care about

* Move some actions to after `startTransmit()` (#5383)

To minimize the time between channel scan and actual transmit

* [create-pull-request] automated change (#5380)

Co-authored-by: thebentern <9000580+thebentern@users.noreply.github.com>

* Allows all 3 PKI keys to be added to userPrefs.h (#4969) and a tool. (#5368)

* more userPrefs.h

Added PKI Admin keys to userPrefs.h

* Update userPrefs.h

Allows all 3 PKI keys to be added to userPrefs.h (#4969)

* Update NodeDB.cpp

Trunk

* Update userPrefs.h

Changed wording

* Create base64_to_hex.py

A little tool for converting base64 PKI Keys to decoded byte that userPrefs.h can understand.

* more userPrefs.h

Added PKI Admin keys to userPrefs.h

* Update userPrefs.h

Allows all 3 PKI keys to be added to userPrefs.h (#4969)

* Update NodeDB.cpp

Trunk

* Update userPrefs.h

Changed wording

* Create base64_to_hex.py

A little tool for converting base64 PKI Keys to decoded byte that userPrefs.h can understand.

* [create-pull-request] automated change (#5388)

Co-authored-by: thebentern <9000580+thebentern@users.noreply.github.com>

* add smiley emoji (#5391)

* add smiley emoji

* clang-formatted

* Anable trace route function on wismeshtap platform (#5389)

* fix 'symbal' typo (#5395)

* [create-pull-request] automated change (#5399)

Co-authored-by: thebentern <9000580+thebentern@users.noreply.github.com>

* /api/v1/fromradio: add OPTIONS handler for CORS. (#5386)

This avoids hitting the 404 Not Found handler, which breaks connection
keep-alive, so this change fixes a big performance regression for Web Client in
Chrome: #5385

Tested on Heltec V3.

Co-authored-by: Ben Meadors <benmmeadors@gmail.com>

* Make heart emoji usable (#5403)

* Create a specific hw_model for WisMesh Tap (#5400)

* Create a specific hw_model for WisMesh Tap

* Trunk

* HAS_ETHERNET

* Remove it altogether

* Don't need these either

* Fix RTC time injection and consolidate position logic (#5396)

* Fix RTC time injection and consolidate position logic

* Comment out unused var warning

* Backerds

* Update arduino-pico core to fix sporadic hangs (#5406)

* Update platform-raspberrypi also (#5407)

* Update arduino-pico core to fix sporadic hangs

* Update platform-raspberrypi also

* --web added to device-install(.sh/.bat) (#5405)

* Add --web

* Update device-install.bat

Forgot a "-" a few places.

---------

Co-authored-by: Ben Meadors <benmmeadors@gmail.com>

* add GPS in indicator board (#5411)

* Fixed NMEA sentence issue in CalTopo as well as bug with no printing all of the nodes (#5412)

* --web littlefswebui-* typo fix (#5416)

* Add --web

* Update device-install.bat

Forgot a "-" a few places.

* Typo fix.

* Typo fix

---------

Co-authored-by: Ben Meadors <benmmeadors@gmail.com>
Co-authored-by: GUVWAF <78759985+GUVWAF@users.noreply.github.com>

* Temporarily disable MDNS when MQTT is enabled (#5418)

Leads to a panic

* Check for OkToMqtt flag presence before uplinking to MQTT (#5413)

* Check for oktomqtt flag presence before uplinking to MQTT

* Move to mqtt->onSend

* Temetry can respond to want-response for LocalStats variant (#5414)

* Seems like the last DIY board that's not "extra" (#5420)

* Cherry pick tdeck fixes (#5422)

* Try-fix (workaround) T-Deck audio crash

* set T-Deck audio to unused 48 (mem mclk)

* swap mclk to gpio 21

* dreamcatcher: assign GPIO44 to audio mclk

---------

Co-authored-by: mverch67 <manuel.verch@gmx.de>

* add canned message and keyboard in indicator board (#5410)

* add canned message and keyboard in indicator board

* Added virtual keyboard macro and enabled for Indicator

* Cleanup macros by applying USE_VIRTUAL_KEYBOARD and DISPLAY_CLOCK_FRAME

---------

Co-authored-by: Ben Meadors <benmmeadors@gmail.com>

* Update build-native.sh (#5415)

* Update build-native.sh

Device-install.sh and device-update.sh are not used on native platform, skip copying to release directory after build and copy native-install.sh and native-run.sh instead.

* Update build-native.sh

Skip native-run.sh copy

* Cleans up visibility in GPS.h (#5426)

Signed-off-by: Christopher Hoover <ch@murgatroid.com>

* Fix admin key loading from userPrefs.h (#5417)

* Fix LED pinout for T-Echo board marked v1.0, date 2021-6-28

* Merge PR #420

* Fixed double and missing Default class.

* Use correct format specifier and fixed typo.

* Removed duplicate code.

* Fix error: #if with no expression

* Fix warning: extra tokens at end of #endif directive.

* Fix antenna switching logic. Complementary-pin control logic is required on the rp2040-lora board.

* Fix deprecated macros.

* Set RP2040 in dormant mode when deep sleep is triggered.

* Fix array out of bounds read.

* Admin key count needs to be set otherwise the key will be zero loaded after reset.

* Don't reset the admin key size when loading defaults. Preserve an existing key in config if possible.

* Remove log spam when reading INA voltage sensor.

* Remove static declaration for admin keys from userPrefs.h. Load hard coded admin keys in case config file has empty slots.

* Removed newlines from log.

---------

Co-authored-by: Ben Meadors <benmmeadors@gmail.com>
Co-authored-by: Thomas Göttgens <tgoettgens@gmail.com>

* try to detect dfrobot station to tell it apart from an ublox gps. (#5393)

* Remove BMA-423 and STK8X by default (#5429)

* Remove BMA-423 by default

* STK

* Wrong macro

* Helps if you include the file

* [create-pull-request] automated change (#5431)

Co-authored-by: caveman99 <25002+caveman99@users.noreply.github.com>

* Support for the ClimateGuard RadSens Geiger-Muller tube (#5425)

* fixes #5434 (#5435)

* update libpax
* fix interval init

* Fix memory leaks by adding missing `free()` calls before early returns in `MQTT::onReceive` (#5439)

This fix addresses memory leaks in the `MQTT::onReceive` function by ensuring that dynamically allocated resources (`e.channel_id`, `e.gateway_id` and `e.packet`) are properly freed before each early return. Previously, these resources were only freed at the end of the function, leaving them unhandled in certain exit paths. Adding the missing `free()` calls prevents memory leaks and ensures proper resource cleanup in all scenarios.

* Removing 1.0 legacy boards from releases and completely removing Heltec wireless capsule from support (#5436)

Co-authored-by: Tom Fifield <tom@tomfifield.net>

* A second round of cleanup on GPS.h. (#5433)

* Move yet more stuff out of GPS.h and into file scope.

* Protect code macros from eating semicolons.

* Remove unused (and unimplemented) getDOPString.

* clang-format with project style file on affected files.

Signed-off-by: Christopher Hoover <ch@murgatroid.com>

* enable MQTT with TLS on RPi picow (#5442)

Co-authored-by: Ben Meadors <benmmeadors@gmail.com>

* Don't powersave on Wifi (#5443)

* Don't go into light sleep with wifi enabled

* Move

* Trunk

* Revert "Seems like the last DIY board that's not "extra" (#5420)" (#5446)

This reverts commit e6fb6b1.

* Actually gunzip all the files when building a .deb (#5449)

* [create-pull-request] automated change (#5457)

Co-authored-by: thebentern <9000580+thebentern@users.noreply.github.com>

* Cleanup i2c scan logs and macro to save some bytes and remain consistent (#5455)

* Cleanup i2c scan logs and macro to save some bytes and remain consistent

* Functions are better than macros

* Exclude i2c scan for STM32

* Useless log

* Clean up some inline functions (#5454)

* Use isWithinTimespanMs to avoid refererence to NodeDb instance inside of NodeDb (#5453)

* fix cors for meshtasticd to allow use of cross origin clients (#5463)

* Remove ATECC crypto chip placeholder code (#5461)

* GPS.h cleanups round 3. (#5447)

* GPS.h cleanups round 3.

No effective behavior change.

Protected members can be private so make it so.  (Supporting
subclasses needs a lot more work.)

Moves uBloxGnssModelInfo into file scope.

Moves uBloxProtocolVersion into uBloxGnssModelInfo.

Moves baud rate arrays into file scope.

Removes unused/ unimplemented powerStateToString.

Signed-off-by: Christopher Hoover <ch@murgatroid.com>

* Trunk Format.

---------

Signed-off-by: Christopher Hoover <ch@murgatroid.com>
Co-authored-by: Tom Fifield <tom@tomfifield.net>

* Fix ukrainian fonts (#5468)

* FIX:  rollback to !4624

* UPDATE: new 16 and 24 UA Fonts and fixes

* fix: Solve the lightsleep crash problem via disable  lightsleep for indicator. (#5470)

* Trunk

* Warnings and log cleanup (#5472)

* Don't log if keyboard not found

* Signed comparison issue

* [create-pull-request] automated change (#5475)

Co-authored-by: thebentern <9000580+thebentern@users.noreply.github.com>

* Adds libusb dev package to Raspbian build steps (#5480)

* [create-pull-request] automated change (#5478)

Co-authored-by: thebentern <9000580+thebentern@users.noreply.github.com>

* Portduino fixes (#5479)

* Set config.yaml defaults even if General is missing

* Unsigned values should get %u in logging

* Update arduino-pico core and remove MDNS restriction (#5483)

* Update xiao_esp32 fully support L67K (#5488)

L67K module hardware changed

* Convert userprefs to a json file instead of header file which has to be included everywhere (#5471)

* WIP

* Got string quoting and macro expansion working

* Need the placeholder

* Cleanup

* Missed a user prefs reference

* Update jsonc

* SimRadio: clean-up and emulate collisions (#5487)

* Clean up SimRadio and don't let it use PKC

* Add collision emulation for SimRadio

* Add stats from SimRadio to LocalStats

* Make emulating collisions optional

* add nodeId to nodeinfo update log lines and removed redundant nodeinfo update log line (#5493)

* Refact the macro definition of GPS initialization of GPSDEFAULTD_NOT_PRESENT and added  seeeed Indicator to this sequence (#5494)

Co-authored-by: Ben Meadors <benmmeadors@gmail.com>

* Extend Length of Source and Destination Node IDs Logged (#5492)

* show 8 chars for logging source and destination ids

* extend legnth of source and destination nodes in log

* Added femtofox configs (#5477)

* added femtofox configs

* Rename bin/config.d/femtofox_Waveshare-SX126X-XXXM_AI-Thinker-RA-01SH.yaml to bin/config.d/femtofox/femtofox_Waveshare-SX126X-XXXM_AI-Thinker-RA-01SH.yaml

* moved femtofox configs to subdir

* [Add] LR1110, LR1120 and LR1121 to linux native Portduino (#5496)

* Update main.cpp

* Update PortduinoGlue.h

* Update PortduinoGlue.cpp

* Update PortduinoGlue.cpp

* Update PortduinoGlue.cpp

* Update main.cpp

* [create-pull-request] automated change (#5500)

Co-authored-by: thebentern <9000580+thebentern@users.noreply.github.com>

* Fix minor typos in package workflows (#5505)

* Don't use channel index for encrypted packet (#5509)

* Don't use channel index for encrypted packet

* Remove assert in `getKey`, set invalid key length
So encrypting will fail without reboot

* Reset channel to 0 when unable to encrypt
Such that the NAK doesn't use the failing channel hash

* Always Announce MDNS meshtastic service (#5503)

* refactor server api port into define

* always announce MDNS meshtastic service

* fix nodeDB erase loop when free mem returns invalid value (0, -1). (#5519)

Co-authored-by: mverch67 <manuel.verch@gmx.de>

* Add heltec capsule back

* Revert "Add heltec capsule back"

This reverts commit fc16d93.

* Lets try this again minus device ui

* Add popular nrf52 pro micro to the builds (#5523)

* Add MACAddress to config.yaml (#5506)

* Add MACAddress to config.yaml

* Better error handling on native, including failing to launch with blank MAC Address and real hardware.

* Re-arrange Mac Address handling and add MACAddressSource

* Bump portduino to remove macaddr function there

---------

Co-authored-by: Ben Meadors <benmmeadors@gmail.com>

* Configure Seeed Xiao S3 RX enable pin (#5517)

* Create OpenWRT_One_mikroBUS_sx1262.yaml (#5529)

* tlora_v2_1_16: Unset BUTTON_PIN and BUTTON_NEED_PULLUP (#5535)

Unset BUTTON_PIN and BUTTON_NEED_PULLUP as the board ships without a user button.

Devices and users expecting a button on GPIO12 have to set [GPIO for user button](https://meshtastic.org/docs/configuration/radio/device/#gpio-for-user-button) to 12 (or any GPIO pin the momentary switch was connected to) to restore functionality.

Signed-off-by: Andrew Yong <me@ndoo.sg>

* [create-pull-request] automated change (#5530)

Co-authored-by: thebentern <9000580+thebentern@users.noreply.github.com>

* Fix detection for some RadSens hardware versions (#5542)

Co-authored-by: Jake-B <jake-b@users.noreply.github.com>

* Initialize dmac array to nulls (#5538)

* Initialize dmac array to nulls

* Use std::cout for print before console is init.

* Update OpenWRT_One_mikroBUS_sx1262.yaml (#5544)

* Add portduino-buildroot variant (#5540)

* Add portduino-buildroot variant

* Update platform-native for platform-buildroot

* portduino-buildroot: Define c standard (#5547)

* Portduino: Move meshtasticd/web out of /usr/share/doc/ (#5548)

* Portduino: fix transitional symlinks (#5550)

* Windows Support - Trunk and Platformio (#5397) (#5518)

* Add support for GPG
* Add usb device support
* Add trunk.io to devcontainer
* Trunk things
* trunk fmt
* formatting
* fix trivy/DS002, checkov/CKV_DOCKER_3
* hide docker extension popup
* fix trivy/DS026, checkov/CKV_DOCKER_2

Co-authored-by: Kalle Lilja <15094562+ThatKalle@users.noreply.github.com>

* Synch minor changes from TFT branch (#5520)

* Synch minor changes from TFT branch

Includes:
* New nordicnrf52 minor version (10.5.0 --> 10.6.0)
* Optimisations for T_DECK
* preparation for MESH_TAB
* add ext notification module to portduino

---------

Co-authored-by: mverch67 <manuel.verch@gmx.de>

* DIO3_TCXO_VOLTAGE in config.yaml can now take an exact voltage (#5558)

* Support TLORA_V3.0 (#5563)

- Support TLORA_V3.0. Update of the legendary 2.1_1.6.1 with solar charger, TCXO and IPEX connector.
- 'extra' some short-lived EOL intermediate boards in that range. If possible use T3S3 instead of all of these!
- update trunk to latest version

* Create OpenWRT-One-mikroBUS-LR-IOT-CLICK.yaml (#5564)

* Portduino: fix setting hwId via argument (#5565)

* INA219 charging detection

minimal implementation: if there is a configured INA219 sensor for battery monitoring we can take the current flow across the shunt resistor to know if we are charging the battery - negative milliamps indicate charging

* Update Power.cpp

added comments and 2 extra defines to disable and swap detection direction

* Trunk Fixes

* Add INA226 support

---------

Signed-off-by: Christopher Hoover <ch@murgatroid.com>
Signed-off-by: Andrew Yong <me@ndoo.sg>
Co-authored-by: Ben Meadors <benmmeadors@gmail.com>
Co-authored-by: Jonathan Bennett <jbennett@incomsystems.biz>
Co-authored-by: GUVWAF <78759985+GUVWAF@users.noreply.github.com>
Co-authored-by: Tom Fifield <tom@tomfifield.net>
Co-authored-by: Michael Gjelsø <36234524+gjelsoe@users.noreply.github.com>
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: thebentern <9000580+thebentern@users.noreply.github.com>
Co-authored-by: jcyrio <50239349+jcyrio@users.noreply.github.com>
Co-authored-by: Daniel.Cao <144674500+DanielCao0@users.noreply.github.com>
Co-authored-by: Catalin Patulea <cronos586@gmail.com>
Co-authored-by: dylanli <dylan3000dylan@gmail.com>
Co-authored-by: mverch67 <manuel.verch@gmx.de>
Co-authored-by: madeofstown <33820964+madeofstown@users.noreply.github.com>
Co-authored-by: Christopher Hoover <ch@murgatroid.com>
Co-authored-by: Mictronics <github@mictronics.de>
Co-authored-by: Thomas Göttgens <tgoettgens@gmail.com>
Co-authored-by: caveman99 <25002+caveman99@users.noreply.github.com>
Co-authored-by: jake-b <1012393+jake-b@users.noreply.github.com>
Co-authored-by: César de Tassis Filho <CTassisF@users.noreply.github.com>
Co-authored-by: Tomas Dubec <tomas.dubec@gmail.com>
Co-authored-by: Liam Cottle <liam@liamcottle.com>
Co-authored-by: panaceya <panaceya@users.noreply.github.com>
Co-authored-by: virgil <virgil.wang.cj@gmail.com>
Co-authored-by: Robert <r@rbrt.io>
Co-authored-by: noon92 <40807970+noon92@users.noreply.github.com>
Co-authored-by: Mark Trevor Birss <markbirss@gmail.com>
Co-authored-by: broglep <20624281+broglep@users.noreply.github.com>
Co-authored-by: Matthias Granberry <matthias.granberry@gmail.com>
Co-authored-by: Andrew Yong <me@ndoo.sg>
Co-authored-by: Jake-B <jake-b@users.noreply.github.com>
Co-authored-by: Austin <vidplace7@gmail.com>
Co-authored-by: Kalle Lilja <15094562+ThatKalle@users.noreply.github.com>
tavdog added a commit to tavdog/meshtastic-firmware that referenced this pull request Dec 22, 2024
commit 91d6a4e
Merge: dc260bc 80fc0f2
Author: Tavis <github@tavis.la>
Date:   Sat Dec 21 18:55:39 2024 -1000

    Merge remote-tracking branch 'upstream/master'

commit 80fc0f2
Author: nebman <nebman@users.noreply.github.com>
Date:   Sun Dec 22 05:02:50 2024 +0100

    Detect charging status by measuring current flow with configured INA battery sensor (meshtastic#5271)

    * INA219 charging detection

    minimal implementation: if there is a configured INA219 sensor for battery monitoring we can take the current flow across the shunt resistor to know if we are charging the battery - negative milliamps indicate charging

    * Update Power.cpp

    added comments and 2 extra defines to disable and swap detection direction

    * Update Power.cpp

    fix disabled case

    * move getCurrentMa() to new CurrentSensor class

    * INA219 charging detection

    minimal implementation: if there is a configured INA219 sensor for battery monitoring we can take the current flow across the shunt resistor to know if we are charging the battery - negative milliamps indicate charging

    * Update Power.cpp

    added comments and 2 extra defines to disable and swap detection direction

    * Update Power.cpp

    fix disabled case

    * move getCurrentMa() to new CurrentSensor class

    * add INA3221 charging detection

    * RP2040: Update core; add mDNS support (meshtastic#5355)

    * Update arduino-pico core

    * RP2040: Add mDNS support

    * SimpleMDNS `begin` now returns a bool

    * Add `-g` option to `debug_build_flags` to link files for gdb

    * RAK11310 needs old platform as well

    * Change defines to specific architecture

    * Core version 4.2.1 is out

    * Add sudo to apt-get commands for Raspbian Build (meshtastic#5364)

    Without sudo, inadequate permissions to runs the commands meant
    the build was failing.

    * Typo fix in build_raspbian.yml (meshtastic#5365)

    s/sudp/sudo :(:(:(

    * Rework some things

    * Trunk

    * Separate littlefs bundle

    * version tags

    * Diag

    * Add littlefswebui

    * Bug fixed in ExternalNotificationModule (meshtastic#5375)

    While `nagging` setExternalState wasn't written to Buzzer & Vibra so output was never toggled.

    Possible fix for meshtastic#5348

    * Cleanup static files from bad Web UI bundle on 2.5.13 release (meshtastic#5376)

    * Cleanup static files from bad Web UI bundle on 2.5.13 release

    * Check existence first

    * Esp32 is the only one we care about

    * Move some actions to after `startTransmit()` (meshtastic#5383)

    To minimize the time between channel scan and actual transmit

    * [create-pull-request] automated change (meshtastic#5380)

    Co-authored-by: thebentern <9000580+thebentern@users.noreply.github.com>

    * Allows all 3 PKI keys to be added to userPrefs.h (meshtastic#4969) and a tool. (meshtastic#5368)

    * more userPrefs.h

    Added PKI Admin keys to userPrefs.h

    * Update userPrefs.h

    Allows all 3 PKI keys to be added to userPrefs.h (meshtastic#4969)

    * Update NodeDB.cpp

    Trunk

    * Update userPrefs.h

    Changed wording

    * Create base64_to_hex.py

    A little tool for converting base64 PKI Keys to decoded byte that userPrefs.h can understand.

    * more userPrefs.h

    Added PKI Admin keys to userPrefs.h

    * Update userPrefs.h

    Allows all 3 PKI keys to be added to userPrefs.h (meshtastic#4969)

    * Update NodeDB.cpp

    Trunk

    * Update userPrefs.h

    Changed wording

    * Create base64_to_hex.py

    A little tool for converting base64 PKI Keys to decoded byte that userPrefs.h can understand.

    * [create-pull-request] automated change (meshtastic#5388)

    Co-authored-by: thebentern <9000580+thebentern@users.noreply.github.com>

    * add smiley emoji (meshtastic#5391)

    * add smiley emoji

    * clang-formatted

    * Anable trace route function on wismeshtap platform (meshtastic#5389)

    * fix 'symbal' typo (meshtastic#5395)

    * [create-pull-request] automated change (meshtastic#5399)

    Co-authored-by: thebentern <9000580+thebentern@users.noreply.github.com>

    * /api/v1/fromradio: add OPTIONS handler for CORS. (meshtastic#5386)

    This avoids hitting the 404 Not Found handler, which breaks connection
    keep-alive, so this change fixes a big performance regression for Web Client in
    Chrome: meshtastic#5385

    Tested on Heltec V3.

    Co-authored-by: Ben Meadors <benmmeadors@gmail.com>

    * Make heart emoji usable (meshtastic#5403)

    * Create a specific hw_model for WisMesh Tap (meshtastic#5400)

    * Create a specific hw_model for WisMesh Tap

    * Trunk

    * HAS_ETHERNET

    * Remove it altogether

    * Don't need these either

    * Fix RTC time injection and consolidate position logic (meshtastic#5396)

    * Fix RTC time injection and consolidate position logic

    * Comment out unused var warning

    * Backerds

    * Update arduino-pico core to fix sporadic hangs (meshtastic#5406)

    * Update platform-raspberrypi also (meshtastic#5407)

    * Update arduino-pico core to fix sporadic hangs

    * Update platform-raspberrypi also

    * --web added to device-install(.sh/.bat) (meshtastic#5405)

    * Add --web

    * Update device-install.bat

    Forgot a "-" a few places.

    ---------

    Co-authored-by: Ben Meadors <benmmeadors@gmail.com>

    * add GPS in indicator board (meshtastic#5411)

    * Fixed NMEA sentence issue in CalTopo as well as bug with no printing all of the nodes (meshtastic#5412)

    * --web littlefswebui-* typo fix (meshtastic#5416)

    * Add --web

    * Update device-install.bat

    Forgot a "-" a few places.

    * Typo fix.

    * Typo fix

    ---------

    Co-authored-by: Ben Meadors <benmmeadors@gmail.com>
    Co-authored-by: GUVWAF <78759985+GUVWAF@users.noreply.github.com>

    * Temporarily disable MDNS when MQTT is enabled (meshtastic#5418)

    Leads to a panic

    * Check for OkToMqtt flag presence before uplinking to MQTT (meshtastic#5413)

    * Check for oktomqtt flag presence before uplinking to MQTT

    * Move to mqtt->onSend

    * Temetry can respond to want-response for LocalStats variant (meshtastic#5414)

    * Seems like the last DIY board that's not "extra" (meshtastic#5420)

    * Cherry pick tdeck fixes (meshtastic#5422)

    * Try-fix (workaround) T-Deck audio crash

    * set T-Deck audio to unused 48 (mem mclk)

    * swap mclk to gpio 21

    * dreamcatcher: assign GPIO44 to audio mclk

    ---------

    Co-authored-by: mverch67 <manuel.verch@gmx.de>

    * add canned message and keyboard in indicator board (meshtastic#5410)

    * add canned message and keyboard in indicator board

    * Added virtual keyboard macro and enabled for Indicator

    * Cleanup macros by applying USE_VIRTUAL_KEYBOARD and DISPLAY_CLOCK_FRAME

    ---------

    Co-authored-by: Ben Meadors <benmmeadors@gmail.com>

    * Update build-native.sh (meshtastic#5415)

    * Update build-native.sh

    Device-install.sh and device-update.sh are not used on native platform, skip copying to release directory after build and copy native-install.sh and native-run.sh instead.

    * Update build-native.sh

    Skip native-run.sh copy

    * Cleans up visibility in GPS.h (meshtastic#5426)

    Signed-off-by: Christopher Hoover <ch@murgatroid.com>

    * Fix admin key loading from userPrefs.h (meshtastic#5417)

    * Fix LED pinout for T-Echo board marked v1.0, date 2021-6-28

    * Merge PR meshtastic#420

    * Fixed double and missing Default class.

    * Use correct format specifier and fixed typo.

    * Removed duplicate code.

    * Fix error: #if with no expression

    * Fix warning: extra tokens at end of #endif directive.

    * Fix antenna switching logic. Complementary-pin control logic is required on the rp2040-lora board.

    * Fix deprecated macros.

    * Set RP2040 in dormant mode when deep sleep is triggered.

    * Fix array out of bounds read.

    * Admin key count needs to be set otherwise the key will be zero loaded after reset.

    * Don't reset the admin key size when loading defaults. Preserve an existing key in config if possible.

    * Remove log spam when reading INA voltage sensor.

    * Remove static declaration for admin keys from userPrefs.h. Load hard coded admin keys in case config file has empty slots.

    * Removed newlines from log.

    ---------

    Co-authored-by: Ben Meadors <benmmeadors@gmail.com>
    Co-authored-by: Thomas Göttgens <tgoettgens@gmail.com>

    * try to detect dfrobot station to tell it apart from an ublox gps. (meshtastic#5393)

    * Remove BMA-423 and STK8X by default (meshtastic#5429)

    * Remove BMA-423 by default

    * STK

    * Wrong macro

    * Helps if you include the file

    * [create-pull-request] automated change (meshtastic#5431)

    Co-authored-by: caveman99 <25002+caveman99@users.noreply.github.com>

    * Support for the ClimateGuard RadSens Geiger-Muller tube (meshtastic#5425)

    * fixes meshtastic#5434 (meshtastic#5435)

    * update libpax
    * fix interval init

    * Fix memory leaks by adding missing `free()` calls before early returns in `MQTT::onReceive` (meshtastic#5439)

    This fix addresses memory leaks in the `MQTT::onReceive` function by ensuring that dynamically allocated resources (`e.channel_id`, `e.gateway_id` and `e.packet`) are properly freed before each early return. Previously, these resources were only freed at the end of the function, leaving them unhandled in certain exit paths. Adding the missing `free()` calls prevents memory leaks and ensures proper resource cleanup in all scenarios.

    * Removing 1.0 legacy boards from releases and completely removing Heltec wireless capsule from support (meshtastic#5436)

    Co-authored-by: Tom Fifield <tom@tomfifield.net>

    * A second round of cleanup on GPS.h. (meshtastic#5433)

    * Move yet more stuff out of GPS.h and into file scope.

    * Protect code macros from eating semicolons.

    * Remove unused (and unimplemented) getDOPString.

    * clang-format with project style file on affected files.

    Signed-off-by: Christopher Hoover <ch@murgatroid.com>

    * enable MQTT with TLS on RPi picow (meshtastic#5442)

    Co-authored-by: Ben Meadors <benmmeadors@gmail.com>

    * Don't powersave on Wifi (meshtastic#5443)

    * Don't go into light sleep with wifi enabled

    * Move

    * Trunk

    * Revert "Seems like the last DIY board that's not "extra" (meshtastic#5420)" (meshtastic#5446)

    This reverts commit e6fb6b1.

    * Actually gunzip all the files when building a .deb (meshtastic#5449)

    * [create-pull-request] automated change (meshtastic#5457)

    Co-authored-by: thebentern <9000580+thebentern@users.noreply.github.com>

    * Cleanup i2c scan logs and macro to save some bytes and remain consistent (meshtastic#5455)

    * Cleanup i2c scan logs and macro to save some bytes and remain consistent

    * Functions are better than macros

    * Exclude i2c scan for STM32

    * Useless log

    * Clean up some inline functions (meshtastic#5454)

    * Use isWithinTimespanMs to avoid refererence to NodeDb instance inside of NodeDb (meshtastic#5453)

    * fix cors for meshtasticd to allow use of cross origin clients (meshtastic#5463)

    * Remove ATECC crypto chip placeholder code (meshtastic#5461)

    * GPS.h cleanups round 3. (meshtastic#5447)

    * GPS.h cleanups round 3.

    No effective behavior change.

    Protected members can be private so make it so.  (Supporting
    subclasses needs a lot more work.)

    Moves uBloxGnssModelInfo into file scope.

    Moves uBloxProtocolVersion into uBloxGnssModelInfo.

    Moves baud rate arrays into file scope.

    Removes unused/ unimplemented powerStateToString.

    Signed-off-by: Christopher Hoover <ch@murgatroid.com>

    * Trunk Format.

    ---------

    Signed-off-by: Christopher Hoover <ch@murgatroid.com>
    Co-authored-by: Tom Fifield <tom@tomfifield.net>

    * Fix ukrainian fonts (meshtastic#5468)

    * FIX:  rollback to !4624

    * UPDATE: new 16 and 24 UA Fonts and fixes

    * fix: Solve the lightsleep crash problem via disable  lightsleep for indicator. (meshtastic#5470)

    * Trunk

    * Warnings and log cleanup (meshtastic#5472)

    * Don't log if keyboard not found

    * Signed comparison issue

    * [create-pull-request] automated change (meshtastic#5475)

    Co-authored-by: thebentern <9000580+thebentern@users.noreply.github.com>

    * Adds libusb dev package to Raspbian build steps (meshtastic#5480)

    * [create-pull-request] automated change (meshtastic#5478)

    Co-authored-by: thebentern <9000580+thebentern@users.noreply.github.com>

    * Portduino fixes (meshtastic#5479)

    * Set config.yaml defaults even if General is missing

    * Unsigned values should get %u in logging

    * Update arduino-pico core and remove MDNS restriction (meshtastic#5483)

    * Update xiao_esp32 fully support L67K (meshtastic#5488)

    L67K module hardware changed

    * Convert userprefs to a json file instead of header file which has to be included everywhere (meshtastic#5471)

    * WIP

    * Got string quoting and macro expansion working

    * Need the placeholder

    * Cleanup

    * Missed a user prefs reference

    * Update jsonc

    * SimRadio: clean-up and emulate collisions (meshtastic#5487)

    * Clean up SimRadio and don't let it use PKC

    * Add collision emulation for SimRadio

    * Add stats from SimRadio to LocalStats

    * Make emulating collisions optional

    * add nodeId to nodeinfo update log lines and removed redundant nodeinfo update log line (meshtastic#5493)

    * Refact the macro definition of GPS initialization of GPSDEFAULTD_NOT_PRESENT and added  seeeed Indicator to this sequence (meshtastic#5494)

    Co-authored-by: Ben Meadors <benmmeadors@gmail.com>

    * Extend Length of Source and Destination Node IDs Logged (meshtastic#5492)

    * show 8 chars for logging source and destination ids

    * extend legnth of source and destination nodes in log

    * Added femtofox configs (meshtastic#5477)

    * added femtofox configs

    * Rename bin/config.d/femtofox_Waveshare-SX126X-XXXM_AI-Thinker-RA-01SH.yaml to bin/config.d/femtofox/femtofox_Waveshare-SX126X-XXXM_AI-Thinker-RA-01SH.yaml

    * moved femtofox configs to subdir

    * [Add] LR1110, LR1120 and LR1121 to linux native Portduino (meshtastic#5496)

    * Update main.cpp

    * Update PortduinoGlue.h

    * Update PortduinoGlue.cpp

    * Update PortduinoGlue.cpp

    * Update PortduinoGlue.cpp

    * Update main.cpp

    * [create-pull-request] automated change (meshtastic#5500)

    Co-authored-by: thebentern <9000580+thebentern@users.noreply.github.com>

    * Fix minor typos in package workflows (meshtastic#5505)

    * Don't use channel index for encrypted packet (meshtastic#5509)

    * Don't use channel index for encrypted packet

    * Remove assert in `getKey`, set invalid key length
    So encrypting will fail without reboot

    * Reset channel to 0 when unable to encrypt
    Such that the NAK doesn't use the failing channel hash

    * Always Announce MDNS meshtastic service (meshtastic#5503)

    * refactor server api port into define

    * always announce MDNS meshtastic service

    * fix nodeDB erase loop when free mem returns invalid value (0, -1). (meshtastic#5519)

    Co-authored-by: mverch67 <manuel.verch@gmx.de>

    * Add heltec capsule back

    * Revert "Add heltec capsule back"

    This reverts commit fc16d93.

    * Lets try this again minus device ui

    * Add popular nrf52 pro micro to the builds (meshtastic#5523)

    * Add MACAddress to config.yaml (meshtastic#5506)

    * Add MACAddress to config.yaml

    * Better error handling on native, including failing to launch with blank MAC Address and real hardware.

    * Re-arrange Mac Address handling and add MACAddressSource

    * Bump portduino to remove macaddr function there

    ---------

    Co-authored-by: Ben Meadors <benmmeadors@gmail.com>

    * Configure Seeed Xiao S3 RX enable pin (meshtastic#5517)

    * Create OpenWRT_One_mikroBUS_sx1262.yaml (meshtastic#5529)

    * tlora_v2_1_16: Unset BUTTON_PIN and BUTTON_NEED_PULLUP (meshtastic#5535)

    Unset BUTTON_PIN and BUTTON_NEED_PULLUP as the board ships without a user button.

    Devices and users expecting a button on GPIO12 have to set [GPIO for user button](https://meshtastic.org/docs/configuration/radio/device/#gpio-for-user-button) to 12 (or any GPIO pin the momentary switch was connected to) to restore functionality.

    Signed-off-by: Andrew Yong <me@ndoo.sg>

    * [create-pull-request] automated change (meshtastic#5530)

    Co-authored-by: thebentern <9000580+thebentern@users.noreply.github.com>

    * Fix detection for some RadSens hardware versions (meshtastic#5542)

    Co-authored-by: Jake-B <jake-b@users.noreply.github.com>

    * Initialize dmac array to nulls (meshtastic#5538)

    * Initialize dmac array to nulls

    * Use std::cout for print before console is init.

    * Update OpenWRT_One_mikroBUS_sx1262.yaml (meshtastic#5544)

    * Add portduino-buildroot variant (meshtastic#5540)

    * Add portduino-buildroot variant

    * Update platform-native for platform-buildroot

    * portduino-buildroot: Define c standard (meshtastic#5547)

    * Portduino: Move meshtasticd/web out of /usr/share/doc/ (meshtastic#5548)

    * Portduino: fix transitional symlinks (meshtastic#5550)

    * Windows Support - Trunk and Platformio (meshtastic#5397) (meshtastic#5518)

    * Add support for GPG
    * Add usb device support
    * Add trunk.io to devcontainer
    * Trunk things
    * trunk fmt
    * formatting
    * fix trivy/DS002, checkov/CKV_DOCKER_3
    * hide docker extension popup
    * fix trivy/DS026, checkov/CKV_DOCKER_2

    Co-authored-by: Kalle Lilja <15094562+ThatKalle@users.noreply.github.com>

    * Synch minor changes from TFT branch (meshtastic#5520)

    * Synch minor changes from TFT branch

    Includes:
    * New nordicnrf52 minor version (10.5.0 --> 10.6.0)
    * Optimisations for T_DECK
    * preparation for MESH_TAB
    * add ext notification module to portduino

    ---------

    Co-authored-by: mverch67 <manuel.verch@gmx.de>

    * DIO3_TCXO_VOLTAGE in config.yaml can now take an exact voltage (meshtastic#5558)

    * Support TLORA_V3.0 (meshtastic#5563)

    - Support TLORA_V3.0. Update of the legendary 2.1_1.6.1 with solar charger, TCXO and IPEX connector.
    - 'extra' some short-lived EOL intermediate boards in that range. If possible use T3S3 instead of all of these!
    - update trunk to latest version

    * Create OpenWRT-One-mikroBUS-LR-IOT-CLICK.yaml (meshtastic#5564)

    * Portduino: fix setting hwId via argument (meshtastic#5565)

    * INA219 charging detection

    minimal implementation: if there is a configured INA219 sensor for battery monitoring we can take the current flow across the shunt resistor to know if we are charging the battery - negative milliamps indicate charging

    * Update Power.cpp

    added comments and 2 extra defines to disable and swap detection direction

    * Trunk Fixes

    * Add INA226 support

    ---------

    Signed-off-by: Christopher Hoover <ch@murgatroid.com>
    Signed-off-by: Andrew Yong <me@ndoo.sg>
    Co-authored-by: Ben Meadors <benmmeadors@gmail.com>
    Co-authored-by: Jonathan Bennett <jbennett@incomsystems.biz>
    Co-authored-by: GUVWAF <78759985+GUVWAF@users.noreply.github.com>
    Co-authored-by: Tom Fifield <tom@tomfifield.net>
    Co-authored-by: Michael Gjelsø <36234524+gjelsoe@users.noreply.github.com>
    Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
    Co-authored-by: thebentern <9000580+thebentern@users.noreply.github.com>
    Co-authored-by: jcyrio <50239349+jcyrio@users.noreply.github.com>
    Co-authored-by: Daniel.Cao <144674500+DanielCao0@users.noreply.github.com>
    Co-authored-by: Catalin Patulea <cronos586@gmail.com>
    Co-authored-by: dylanli <dylan3000dylan@gmail.com>
    Co-authored-by: mverch67 <manuel.verch@gmx.de>
    Co-authored-by: madeofstown <33820964+madeofstown@users.noreply.github.com>
    Co-authored-by: Christopher Hoover <ch@murgatroid.com>
    Co-authored-by: Mictronics <github@mictronics.de>
    Co-authored-by: Thomas Göttgens <tgoettgens@gmail.com>
    Co-authored-by: caveman99 <25002+caveman99@users.noreply.github.com>
    Co-authored-by: jake-b <1012393+jake-b@users.noreply.github.com>
    Co-authored-by: César de Tassis Filho <CTassisF@users.noreply.github.com>
    Co-authored-by: Tomas Dubec <tomas.dubec@gmail.com>
    Co-authored-by: Liam Cottle <liam@liamcottle.com>
    Co-authored-by: panaceya <panaceya@users.noreply.github.com>
    Co-authored-by: virgil <virgil.wang.cj@gmail.com>
    Co-authored-by: Robert <r@rbrt.io>
    Co-authored-by: noon92 <40807970+noon92@users.noreply.github.com>
    Co-authored-by: Mark Trevor Birss <markbirss@gmail.com>
    Co-authored-by: broglep <20624281+broglep@users.noreply.github.com>
    Co-authored-by: Matthias Granberry <matthias.granberry@gmail.com>
    Co-authored-by: Andrew Yong <me@ndoo.sg>
    Co-authored-by: Jake-B <jake-b@users.noreply.github.com>
    Co-authored-by: Austin <vidplace7@gmail.com>
    Co-authored-by: Kalle Lilja <15094562+ThatKalle@users.noreply.github.com>

commit fa1a1fd
Author: noon92 <40807970+noon92@users.noreply.github.com>
Date:   Sun Dec 22 01:04:18 2024 +0200

    Update Femtofox configs (meshtastic#5646)

    * Delete bin/config.d/femtofox/femtofox_EByte-E22-900M30S_Ebyte-E22-900M22S.yaml

    * Delete bin/config.d/femtofox/femtofox_EByte-E22-900MM22S.yaml

    * Delete bin/config.d/femtofox/femtofox_Heltec-HT-RA62_Seeed-WIO-SX1262.yaml

    * Delete bin/config.d/femtofox/femtofox_Waveshare-SX126X-XXXM_AI-Thinker-RA-01SH.yaml

    * Add files via upload

    * Update and rename bin/config.d/femtofox_SX1262_XTAL.yaml to bin/config.d/femtofox/femtofox_SX1262_XTAL.yaml

    * Update and rename bin/config.d/femtofox_LR1121_TCXO.yaml to bin/config.d/femtofox/femtofox_LR1121_TCXO.yaml

    * Update and rename bin/config.d/femtofox_SX1262_TCXO.yaml to bin/config.d/femtofox/femtofox_SX1262_TCXO.yaml

commit 2fd5a48
Author: Eric Severance <esev@esev.com>
Date:   Sat Dec 21 12:07:20 2024 -0800

    Separate host:port before checking for private IP (x2) (meshtastic#5643)

commit f4cff33
Author: GUVWAF <78759985+GUVWAF@users.noreply.github.com>
Date:   Sat Dec 21 18:13:03 2024 +0100

    Portduino: specify C++ version and add link pthread (meshtastic#5642)

commit 1c8b165
Author: Ben Meadors <benmmeadors@gmail.com>
Date:   Sat Dec 21 11:03:17 2024 -0600

    Add libusb to dockerfile for ch341 (meshtastic#5641)

commit 8e6ef4e
Author: Thomas Göttgens <tgoettgens@gmail.com>
Date:   Sat Dec 21 14:57:01 2024 +0100

    add nugget and nibble boards for 38c3 (meshtastic#5609)

    * add nugget and nibble boards for 38c3

    * mark those boards extra for now

commit fb7866f
Author: Ben Meadors <benmmeadors@gmail.com>
Date:   Sat Dec 21 07:49:25 2024 -0600

    Revert "Check if MQTT remote IP is private (meshtastic#5627)" (meshtastic#5636)

    This reverts commit 9a10907.

commit d9b2878
Author: Ben Meadors <benmmeadors@gmail.com>
Date:   Sat Dec 21 07:48:47 2024 -0600

    Revert "Separate host/port before checking for private IP (meshtastic#5630)" (meshtastic#5635)

    This reverts commit 398d290.

commit f39a9c5
Author: Ben Meadors <benmmeadors@gmail.com>
Date:   Fri Dec 20 21:42:54 2024 -0600

    Clean up some straggler NRF52 json (meshtastic#5628)

commit 398d290
Author: Eric Severance <esev@esev.com>
Date:   Fri Dec 20 19:06:01 2024 -0800

    Separate host/port before checking for private IP (meshtastic#5630)

commit df63423
Author: Tom Fifield <tom@tomfifield.net>
Date:   Sat Dec 21 12:26:23 2024 +1100

    Let RangeTest Module use Phone position if there's no GPS (meshtastic#5623)

    As reported by @Fastomat, if a user had enabled "Share Phone
    Position" in the app, RangeTest did not use this position and
    recorded a 0,0 lat/lon.

    This change preferences GPS where avaialble, but otherwise
    uses the position stored for the node in NodeDB.

    fixes meshtastic#5620

commit 9a10907
Author: Eric Severance <esev@esev.com>
Date:   Fri Dec 20 17:25:31 2024 -0800

    Check if MQTT remote IP is private (meshtastic#5627)

commit 5fed679
Author: Tom Fifield <tom@tomfifield.net>
Date:   Sat Dec 21 12:24:29 2024 +1100

    Add detection code for INA226 (meshtastic#5605)

    INA226 is a high accuracy current and voltage sensor.

commit 58d80b8
Author: Eric Severance <esev@esev.com>
Date:   Fri Dec 20 16:21:27 2024 -0800

    Use IPAddress.fromString for parsing private IPs (meshtastic#5621)

commit 960626e
Author: Jonathan Bennett <jbennett@incomsystems.biz>
Date:   Fri Dec 20 17:34:02 2024 -0600

    Ch341 (meshtastic#5474)

    * Very hacky first attempt at usermod ech341

    * Fixes and debug printfs

    * Move to library version of libpinedio-usb

    * Add spidev: ch341 option in meshtasticd config.yaml

    * Only check settingsStrings on native

    * Use new CH341 code

    * Bump ch341 lib

    * Cleanup USBHal

    * Add ch341 config.d files

    * Remove ch341quirk

    * Bump to most recent spi-userspace driver

    * Add handling for ch341 serial, pid, and vid

    * Minor fixes from pio check

    * Trunk

    * Add include for musl compliance

    * Point to upstream libch341

commit 658459a
Author: Eric Severance <esev@esev.com>
Date:   Fri Dec 20 12:59:23 2024 -0800

    Use encoded ServiceEnvelope in mqttQueue (meshtastic#5619)

commit e1de439
Author: Eric Severance <esev@esev.com>
Date:   Thu Dec 19 17:14:27 2024 -0800

    Remove unnecessary memcpy for PKI crypto (meshtastic#5608)

    * Remove unnecessary memcpy for PKI crypto

    * Update comment s/packet_id/id/

    * Create a copy of bytes for each channel decrypt

    ---------

    Co-authored-by: Jonathan Bennett <jbennett@incomsystems.biz>

commit 827553f
Author: Ben Meadors <benmmeadors@gmail.com>
Date:   Thu Dec 19 08:42:49 2024 -0600

    Only execute on workflow_dispatch

commit 445c641
Author: Ben Meadors <benmmeadors@gmail.com>
Date:   Thu Dec 19 07:52:17 2024 -0600

    Version

commit 7075a05
Author: Ben Meadors <benmmeadors@gmail.com>
Date:   Thu Dec 19 06:27:19 2024 -0600

    Fix docker secret permission

commit 63091b7
Author: Lewis He <lewishe@outlook.com>
Date:   Thu Dec 19 20:21:54 2024 +0800

    [T-Deck] Fixed the issue that some devices may experience low voltage reset due to excessive startup current (meshtastic#5607)

    Co-authored-by: Ben Meadors <benmmeadors@gmail.com>

commit 8c6eec5
Author: Eric Severance <esev@esev.com>
Date:   Thu Dec 19 03:47:46 2024 -0800

    Refactor MQTT::onReceive to reduce if/else nesting (meshtastic#5592)

    * Refactor MQTT::onReceive to reduce if/else nesting

    * Fix missing #include <functional>

    * const DecodedServiceEnvelope e

    * Combine validDecode if statement.

    * Only call pb_release when validDecode.

    * s/ptr/channelName/

    * Use reference type for deleter

    * Use lambda instead of bind

    * Document deleter

    * Reorder 'if's to avoid object creation

    * Remove unnecessary comment

    * Remove 'else'; simpifies meshtastic#5516

    ---------

    Co-authored-by: Ben Meadors <benmmeadors@gmail.com>

commit 6841348
Author: Ben Meadors <benmmeadors@gmail.com>
Date:   Wed Dec 18 07:15:48 2024 -0600

    Switch back docker/login-action

commit af79970
Author: 📡 WatskeBart 🤖 <bartistic@gmail.com>
Date:   Wed Dec 18 05:46:18 2024 +0100

    Added product url (meshtastic#5594)

commit 4edeca5
Author: Tom <116762865+Nestpebble@users.noreply.github.com>
Date:   Tue Dec 17 16:25:37 2024 +0000

    Added support for the LR1121 radio to the NRF52 Pro-Micro (meshtastic#5515)

    * Added support for the LR1121 radio

    Added support for the LR1121 radio, tested as functional with an E80-900M2213S from CDEbyte.

    * Swap PNG for PDF

    * remove PNG

    * put TCXO voltage to 1.8, as in example file

    It worked at 1.6v, but ¯\_(ツ)_/¯

    * Hopefully this will appease Trunk

    * Update rf switch pins and Schematic

    ---------

    Co-authored-by: Ben Meadors <benmmeadors@gmail.com>

commit b0e3039
Author: Ben Meadors <benmmeadors@gmail.com>
Date:   Tue Dec 17 06:52:26 2024 -0600

    Bump platform

commit 92511ab
Author: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Date:   Tue Dec 17 06:33:17 2024 -0600

    [create-pull-request] automated change (meshtastic#5597)

    Co-authored-by: thebentern <9000580+thebentern@users.noreply.github.com>

commit b0a4087
Author: Ben Meadors <benmmeadors@gmail.com>
Date:   Tue Dec 17 06:12:23 2024 -0600

    Bump nano-pb

commit 1b2fc00
Author: Ben Meadors <benmmeadors@gmail.com>
Date:   Tue Dec 17 05:45:31 2024 -0600

    Update main_matrix.yml

commit 69d01a8
Author: GUVWAF <78759985+GUVWAF@users.noreply.github.com>
Date:   Sun Dec 15 20:11:13 2024 +0100

    StoreForward: (tapback) reply support (meshtastic#5585)

commit 09c082f
Author: Ben Meadors <benmmeadors@gmail.com>
Date:   Sun Dec 15 09:59:14 2024 -0600

    Fix omission of AQ metrics (meshtastic#5584)

commit 020e910
Author: Tom Fifield <tom@tomfifield.net>
Date:   Mon Dec 16 00:14:48 2024 +1100

    Define BUTTON_PIN as -1 for RP2040-lora (meshtastic#5574)

    The previous approach of undef'ing meant that it was impossible
    for users to change the button pin in the apps.

    Fixes meshtastic#5566

commit 2d45afa
Author: Ben Meadors <benmmeadors@gmail.com>
Date:   Sun Dec 15 06:52:45 2024 -0600

    Try docker authentication with command-line instead

commit 5600215
Author: Tom Fifield <tom@tomfifield.net>
Date:   Sun Dec 15 23:23:27 2024 +1100

    Based default Node Names on NodeNum, rather than MAC address (meshtastic#5576)

    Presently we base the default long name (Meshtastic XXXX) and short
    names (XXXX) on a node's MAC address. This works fine, unless you
    have a node with no bluetooth, like Portduino.

    Our logic for node numbers is also based on MAC address. However,
    it has the added feature that it will create a random node number
    if the Mac address is no good. The name is always "Meshtastic 0001".

    This change switches node names (long and short) to instead rely
    on the node number for defaults. For nodes with mac addresses,
    there should be no user-visible change. For nodes without, they'll
    now have a name other than "Meshtastic 0001".

    Fixes meshtastic#5370

    Co-authored-by: Ben Meadors <benmmeadors@gmail.com>

commit 547a572
Author: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Date:   Sun Dec 15 05:23:15 2024 -0600

    [create-pull-request] automated change (meshtastic#5577)

    Co-authored-by: fifieldt <1287116+fifieldt@users.noreply.github.com>

commit ea72abf
Author: Ben Meadors <benmmeadors@gmail.com>
Date:   Sat Dec 14 20:21:19 2024 -0600

    Posthumous tronk

commit 4024bfd
Author: Aaron.Lee <32860565+Heltec-Aaron-Lee@users.noreply.github.com>
Date:   Sun Dec 15 10:20:29 2024 +0800

    Add screen detection function (meshtastic#5533)

commit 6d8be13
Author: Austin <vidplace7@gmail.com>
Date:   Sat Dec 14 20:19:19 2024 -0500

    Portduino-buildroot: Remove pkg-config optional libs (meshtastic#5573)

commit 4a1239f
Author: André Perdigão Gonçalves <andrepcg@gmail.com>
Date:   Sun Dec 15 00:43:41 2024 +0000

    Add new endpoint to retrieve node info (meshtastic#5557)

commit 44cf6d3
Author: GUVWAF <78759985+GUVWAF@users.noreply.github.com>
Date:   Sat Dec 14 11:55:32 2024 +0100

    Portduino: fix setting hwId via argument (meshtastic#5565)

commit c3f89a6
Author: Mark Trevor Birss <markbirss@gmail.com>
Date:   Sat Dec 14 12:46:35 2024 +0200

    Create OpenWRT-One-mikroBUS-LR-IOT-CLICK.yaml (meshtastic#5564)

commit 332dbaf
Author: Thomas Göttgens <tgoettgens@gmail.com>
Date:   Sat Dec 14 10:59:15 2024 +0100

    Support TLORA_V3.0 (meshtastic#5563)

    - Support TLORA_V3.0. Update of the legendary 2.1_1.6.1 with solar charger, TCXO and IPEX connector.
    - 'extra' some short-lived EOL intermediate boards in that range. If possible use T3S3 instead of all of these!
    - update trunk to latest version

commit 92225eb
Author: Jonathan Bennett <jbennett@incomsystems.biz>
Date:   Fri Dec 13 11:48:27 2024 -0600

    DIO3_TCXO_VOLTAGE in config.yaml can now take an exact voltage (meshtastic#5558)

commit 03770b7
Author: Tom Fifield <tom@tomfifield.net>
Date:   Fri Dec 13 03:42:41 2024 +1100

    Synch minor changes from TFT branch (meshtastic#5520)

    * Synch minor changes from TFT branch

    Includes:
    * New nordicnrf52 minor version (10.5.0 --> 10.6.0)
    * Optimisations for T_DECK
    * preparation for MESH_TAB
    * add ext notification module to portduino

    ---------

    Co-authored-by: mverch67 <manuel.verch@gmx.de>

commit 1790407
Author: Tom Fifield <tom@tomfifield.net>
Date:   Fri Dec 13 02:58:19 2024 +1100

    Windows Support - Trunk and Platformio (meshtastic#5397) (meshtastic#5518)

    * Add support for GPG
    * Add usb device support
    * Add trunk.io to devcontainer
    * Trunk things
    * trunk fmt
    * formatting
    * fix trivy/DS002, checkov/CKV_DOCKER_3
    * hide docker extension popup
    * fix trivy/DS026, checkov/CKV_DOCKER_2

    Co-authored-by: Kalle Lilja <15094562+ThatKalle@users.noreply.github.com>

commit 7dd3629
Author: Austin <vidplace7@gmail.com>
Date:   Tue Dec 10 16:02:38 2024 -0500

    Portduino: fix transitional symlinks (meshtastic#5550)

commit cabeb40
Author: Austin <vidplace7@gmail.com>
Date:   Tue Dec 10 14:58:16 2024 -0500

    Portduino: Move meshtasticd/web out of /usr/share/doc/ (meshtastic#5548)

commit 761a99d
Author: Austin <vidplace7@gmail.com>
Date:   Tue Dec 10 11:09:54 2024 -0500

    portduino-buildroot: Define c standard (meshtastic#5547)

commit cf46e67
Author: Austin <vidplace7@gmail.com>
Date:   Tue Dec 10 10:14:52 2024 -0500

    Add portduino-buildroot variant (meshtastic#5540)

    * Add portduino-buildroot variant

    * Update platform-native for platform-buildroot

commit 438f627
Author: Mark Trevor Birss <markbirss@gmail.com>
Date:   Tue Dec 10 09:46:50 2024 +0200

    Update OpenWRT_One_mikroBUS_sx1262.yaml (meshtastic#5544)

commit 0e3dae4
Author: Jonathan Bennett <jbennett@incomsystems.biz>
Date:   Mon Dec 9 21:51:55 2024 -0600

    Initialize dmac array to nulls (meshtastic#5538)

    * Initialize dmac array to nulls

    * Use std::cout for print before console is init.

commit d0e3427
Author: jake-b <1012393+jake-b@users.noreply.github.com>
Date:   Mon Dec 9 20:46:13 2024 -0500

    Fix detection for some RadSens hardware versions (meshtastic#5542)

    Co-authored-by: Jake-B <jake-b@users.noreply.github.com>

commit f3850ee
Author: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Date:   Mon Dec 9 06:50:30 2024 -0600

    [create-pull-request] automated change (meshtastic#5530)

    Co-authored-by: thebentern <9000580+thebentern@users.noreply.github.com>

commit 3ae85e2
Author: Andrew Yong <me@ndoo.sg>
Date:   Mon Dec 9 19:38:51 2024 +0800

    tlora_v2_1_16: Unset BUTTON_PIN and BUTTON_NEED_PULLUP (meshtastic#5535)

    Unset BUTTON_PIN and BUTTON_NEED_PULLUP as the board ships without a user button.

    Devices and users expecting a button on GPIO12 have to set [GPIO for user button](https://meshtastic.org/docs/configuration/radio/device/#gpio-for-user-button) to 12 (or any GPIO pin the momentary switch was connected to) to restore functionality.

    Signed-off-by: Andrew Yong <me@ndoo.sg>

commit f81d3b0
Author: Mark Trevor Birss <markbirss@gmail.com>
Date:   Sun Dec 8 12:06:45 2024 +0200

    Create OpenWRT_One_mikroBUS_sx1262.yaml (meshtastic#5529)

commit 59ed5c9
Author: Matthias Granberry <matthias.granberry@gmail.com>
Date:   Sat Dec 7 14:32:49 2024 -0600

    Configure Seeed Xiao S3 RX enable pin (meshtastic#5517)

commit 4a34bf6
Author: Jonathan Bennett <jbennett@incomsystems.biz>
Date:   Sat Dec 7 10:29:49 2024 -0600

    Add MACAddress to config.yaml (meshtastic#5506)

    * Add MACAddress to config.yaml

    * Better error handling on native, including failing to launch with blank MAC Address and real hardware.

    * Re-arrange Mac Address handling and add MACAddressSource

    * Bump portduino to remove macaddr function there

    ---------

    Co-authored-by: Ben Meadors <benmmeadors@gmail.com>

commit b99e57a
Author: Ben Meadors <benmmeadors@gmail.com>
Date:   Sat Dec 7 07:03:58 2024 -0600

    Add popular nrf52 pro micro to the builds (meshtastic#5523)

commit 46eab20
Author: Ben Meadors <benmmeadors@gmail.com>
Date:   Sat Dec 7 05:30:59 2024 -0600

    Lets try this again minus device ui

commit 39b5fb0
Author: Ben Meadors <benmmeadors@gmail.com>
Date:   Sat Dec 7 05:29:13 2024 -0600

    Revert "Add heltec capsule back"

    This reverts commit fc16d93.

commit fc16d93
Author: Ben Meadors <benmmeadors@gmail.com>
Date:   Fri Dec 6 20:01:47 2024 -0600

    Add heltec capsule back

commit bac9fec
Author: Tom Fifield <tom@tomfifield.net>
Date:   Sat Dec 7 11:39:30 2024 +1100

    fix nodeDB erase loop when free mem returns invalid value (0, -1). (meshtastic#5519)

    Co-authored-by: mverch67 <manuel.verch@gmx.de>

commit de77418
Author: broglep <20624281+broglep@users.noreply.github.com>
Date:   Thu Dec 5 13:02:10 2024 +0100

    Always Announce MDNS meshtastic service (meshtastic#5503)

    * refactor server api port into define

    * always announce MDNS meshtastic service

commit c3d6034
Author: GUVWAF <78759985+GUVWAF@users.noreply.github.com>
Date:   Thu Dec 5 03:00:19 2024 +0100

    Don't use channel index for encrypted packet (meshtastic#5509)

    * Don't use channel index for encrypted packet

    * Remove assert in `getKey`, set invalid key length
    So encrypting will fail without reboot

    * Reset channel to 0 when unable to encrypt
    Such that the NAK doesn't use the failing channel hash

commit d3e3985
Author: Jonathan Bennett <jbennett@incomsystems.biz>
Date:   Wed Dec 4 12:15:17 2024 -0600

    Fix minor typos in package workflows (meshtastic#5505)

commit 8eca6a2
Author: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Date:   Wed Dec 4 08:15:50 2024 -0600

    [create-pull-request] automated change (meshtastic#5500)

    Co-authored-by: thebentern <9000580+thebentern@users.noreply.github.com>

commit e4f5367
Author: Mark Trevor Birss <markbirss@gmail.com>
Date:   Wed Dec 4 13:39:02 2024 +0200

    [Add] LR1110, LR1120 and LR1121 to linux native Portduino (meshtastic#5496)

    * Update main.cpp

    * Update PortduinoGlue.h

    * Update PortduinoGlue.cpp

    * Update PortduinoGlue.cpp

    * Update PortduinoGlue.cpp

    * Update main.cpp

commit 10e1045
Author: noon92 <40807970+noon92@users.noreply.github.com>
Date:   Tue Dec 3 14:33:27 2024 +0200

    Added femtofox configs (meshtastic#5477)

    * added femtofox configs

    * Rename bin/config.d/femtofox_Waveshare-SX126X-XXXM_AI-Thinker-RA-01SH.yaml to bin/config.d/femtofox/femtofox_Waveshare-SX126X-XXXM_AI-Thinker-RA-01SH.yaml

    * moved femtofox configs to subdir

commit f846503
Author: Robert <r@rbrt.io>
Date:   Tue Dec 3 06:30:19 2024 -0600

    Extend Length of Source and Destination Node IDs Logged (meshtastic#5492)

    * show 8 chars for logging source and destination ids

    * extend legnth of source and destination nodes in log

commit 85b2bad
Author: dylanli <dylan3000dylan@gmail.com>
Date:   Tue Dec 3 20:29:33 2024 +0800

    Refact the macro definition of GPS initialization of GPSDEFAULTD_NOT_PRESENT and added  seeeed Indicator to this sequence (meshtastic#5494)

    Co-authored-by: Ben Meadors <benmmeadors@gmail.com>

commit 7ad137b
Author: Robert <r@rbrt.io>
Date:   Tue Dec 3 06:28:46 2024 -0600

    add nodeId to nodeinfo update log lines and removed redundant nodeinfo update log line (meshtastic#5493)

commit 57ea6a2
Author: GUVWAF <78759985+GUVWAF@users.noreply.github.com>
Date:   Tue Dec 3 13:21:24 2024 +0100

    SimRadio: clean-up and emulate collisions (meshtastic#5487)

    * Clean up SimRadio and don't let it use PKC

    * Add collision emulation for SimRadio

    * Add stats from SimRadio to LocalStats

    * Make emulating collisions optional

commit d00e0f6
Author: Ben Meadors <benmmeadors@gmail.com>
Date:   Tue Dec 3 06:17:25 2024 -0600

    Convert userprefs to a json file instead of header file which has to be included everywhere (meshtastic#5471)

    * WIP

    * Got string quoting and macro expansion working

    * Need the placeholder

    * Cleanup

    * Missed a user prefs reference

    * Update jsonc

commit 594af0c
Author: dylanli <dylan3000dylan@gmail.com>
Date:   Mon Dec 2 16:59:34 2024 +0800

    Update xiao_esp32 fully support L67K (meshtastic#5488)

    L67K module hardware changed
thebentern added a commit that referenced this pull request Feb 7, 2025
#3259)

* lib update: light theme

* fix merge issue

* lib update: home buttons + button try-fix

* lib update: icon color fix

* lib update: fix instability/crash on notification

* update lib: timezone

* timezone label

* lib update: fix set owner

* fix spiLock in RadioLibInterface

* add picomputer tft build

* picomputer build

* fix compiler error std::find()

* fix merge

* lib update: theme runtime config

* lib update: packet logger + T-Deck Plus

* lib update: mesh detector

* lib update: fix brightness & trackball crash

* try-fix less paranoia

* sensecap indicator updates

* lib update: indicator fix

* lib update: statistic & some fixes

* lib-update: other T-Deck touch driver

* use custom touch driver for Indicator

* lower tft task prio

* prepare LVGL ST7789 driver

* lib update: try-fix audio

* Drop received packets from self

* Additional decoded packet ignores

* Honor flip & color for Heltec T114 and T190 (#4786)

* Honor TFT_MESH color if defined for Heltec T114 or T190

* Temporary: point lib_deps at fork of Heltec's ST7789 library
For demo only, until ST7789 is merged

* Update lib_deps; tidy preprocessor logic

* Download debian files after firmware zip

* set title for protobufs bump PR (#4792)

* set title for version bump PR (#4791)

* Enable Dependabot

* chore: trunk fmt

* fix dependabot syntax (#4795)

* fix dependabot syntax

* Update dependabot.yml

* Update dependabot.yml

* Bump peter-evans/create-pull-request from 6 to 7 in /.github/workflows (#4797)

* Bump docker/build-push-action from 5 to 6 in /.github/workflows (#4800)

* Actions: Semgrep Images have moved from returntocorp to semgrep (#4774)

https://hub.docker.com/r/returntocorp/semgrep notes: "We've moved!
 Official Docker images for Semgrep now available at semgrep/semgrep."

Patch updates our CI workflow for these images.

Co-authored-by: Ben Meadors <benmmeadors@gmail.com>

* Bump meshtestic from `31ee3d9` to `37245b3` (#4799)

Bumps [meshtestic](https://github.com/meshtastic/meshTestic) from `31ee3d9` to `37245b3`.
- [Commits](meshtastic/meshTestic@31ee3d9...37245b3)

---
updated-dependencies:
- dependency-name: meshtestic
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* [create-pull-request] automated change (#4789)

Co-authored-by: thebentern <9000580+thebentern@users.noreply.github.com>

* Bump pnpm/action-setup from 2 to 4 in /.github/workflows (#4798)

Bumps [pnpm/action-setup](https://github.com/pnpm/action-setup) from 2 to 4.
- [Release notes](https://github.com/pnpm/action-setup/releases)
- [Commits](pnpm/action-setup@v2...v4)

---
updated-dependencies:
- dependency-name: pnpm/action-setup
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* Raspberry Pico2 - needs protos

* Re-order doDeepSleep (#4802)

Make sure PMU sleep takes place before I2C ends

* [create-pull-request] automated change

* heltec-wireless-bridge
requires Proto PR first

* feat: trigger class update when protobufs are changed

* meshtastic/ is a test suite; protobufs/ contains protobufs;

* Update platform-native to pick up portduino crash fix (#4807)

* Hopefully extract and commit to meshtastic.github.io

* CI fixes

* [Board] DIY "t-energy-s3_e22" (#4782)

* New variant "t-energy-s3_e22"

- Lilygo T-Energy-S3
- NanoVHF "Mesh-v1.06-TTGO-T18" board
- Ebyte E22 Series

* add board_level = extra

* Update variant.h

---------

Co-authored-by: Thomas Göttgens <tgoettgens@gmail.com>
Co-authored-by: Tom Fifield <tom@tomfifield.net>

* Consolidate variant build steps (#4806)

* poc: consolidate variant build steps

* use build-variant action

* only checkout once and clean up after run

* Revert "Consolidate variant build steps (#4806)" (#4816)

This reverts commit 9f8d86c.

* Make Ublox code more readable (#4727)

* Simplify Ublox code

Ublox comes in a myriad of versions and settings. Presently our
configuration code does a lot of branching based on versions being
or not being present.

This patch adds version detection earlier in the piece and branches
on the set gnssModel instead to create separate setup methods for Ublox 6,
Ublox 7/8/9, and Ublox10.

Additionally, adds a macro to make the code much shorter and more
readable.

* Make trunk happy

* Make trunk happy

---------

Co-authored-by: Ben Meadors <benmmeadors@gmail.com>

* Consider the LoRa header when checking packet length

* Minor fix (#4666)

* Minor fixes

It turns out setting a map value with the index notation causes
an lookup that can be avoided with emplace. Apply this to one line in
the StoreForward module.

Fix also Cppcheck-determined highly minor performance increase by
passing gpiochipname as a const reference :)

The amount of cycles used on this laptop while learning about these
callouts from cppcheck is unlikely to ever be more than the cycles
saved by the fixes ;)

* Update PortduinoGlue.cpp

* Revert "Update classes on protobufs update" (#4824)

* Revert "Update classes on protobufs update"

* remove quotes to fix trunk.

---------

Co-authored-by: Tom Fifield <tom@tomfifield.net>

* Implement optional second I2C bus for NRF52840
Enabled at compile-time if WIRE_INFERFACES_COUNT defined as 2

* Add I2C bus to Heltec T114 header pins
SDA: P0.13
SCL: P0.16

Uses bus 1, leaving bus 0 routed to the unpopulated footprint for the RTC (general future-proofing)

* Tidier macros

* Swap SDA and SCL
SDA=P0.16, SCL=P0.13

* Refactor and consolidate time window logic (#4826)

* Refactor and consolidate windowing logic

* Trunk

* Fixes

* More

* Fix braces and remove unused now variables.

There was a brace in src/mesh/RadioLibInterface.cpp that was breaking
compile on some architectures.

Additionally, there were some brace errors in
src/modules/Telemetry/AirQualityTelemetry.cpp
src/modules/Telemetry/EnvironmentTelemetry.cpp
src/mesh/wifi/WiFiAPClient.cpp

Move throttle include in WifiAPClient.cpp to top.

Add Default.h to sleep.cpp

rest of files just remove unused now variables.

* Remove a couple more meows

---------

Co-authored-by: Tom Fifield <tom@tomfifield.net>

* Rename message length headers and set payload max to 255 (#4827)

* Rename message length headers and set payload max to 255

* Add MESHTASTIC_PKC_OVERHEAD

* compare to MESHTASTIC_HEADER_LENGTH

---------

Co-authored-by: Thomas Göttgens <tgoettgens@gmail.com>

* Check for null before printing debug (#4835)

* fix merge

* try-fix crash

* lib update: fix neighbors

* fix GPIO0 mode after I2S audio

* lib update: audio fix

* lib update: fixes and improvements

* extra

* added ILI9342 (from master)

* device-ui persistency

* review update

* fix request, add handled

* fix merge issue

* fix merge issue

* remove newline

* remove newlines from debug log

* playing with locks; but needs more testing

* diy mesh-tab initial files

* board definition for mesh-tab (not yet used)

* use DISPLAY_SET_RESOLUTION to avoid hw dependency in code

* no telemetry for Indicator

* 16MB partition for Indicator

* 8MB partition for Indicator

* stability: add SPI lock before saving via littleFS

* dummy for config transfer (#5154)

* update indicator (due to compile and linker errors)

* remove faulty partition line

* fix missing include

* update indicator board

* update mesh-tab ILI9143 TFT

* fix naming

* mesh-tab targets

* try: disable duplicate locks

* fix nodeDB erase loop when free mem returns invalid value (0, -1).

* upgrade toolchain for nrf52 to gcc 9.3.1

* try-fix (workaround) T-Deck audio crash

* update mesh-tab tft configs

* set T-Deck audio to unused 48 (mem mclk)

* swap mclk to gpio 21

* update meshtab voltage divider

* update mesh-tab ini

* Fixed the issue that indicator device uploads via rp2040 serial port in some cases.

* Fixed the issue that the touch I2C address definition was not effective.

* Fixed the issue that the wifi configuration saved to RAM did not take effect.

* rotation fix; added ST7789 3.2" display

* dreamcatcher: assign GPIO44 to audio mclk

* mesh-tab touch updates

* add mesh-tab powersave as default

* fix DIO1 wakeup

* mesh-tab: enable alert message menu

* Streamline board definitions for first tech preview. (#5390)

* Streamline board definitions for first tech preview. TBD: Indicator Support

* add point-of-checkin

* use board/unphone.json

---------

Co-authored-by: mverch67 <manuel.verch@gmx.de>

* fix native targets

* add RadioLib debugging options for (T-Deck)

* fix T-Deck build

* fix native tft targets for rpi

* remove wrong debug defines

* t-deck-tft button is handled in device-ui

* disable default lightsleep for indicator

* Windows Support - Trunk and Platformio (#5397)

* Add support for GPG

* Add usb device support

* Add trunk.io to devcontainer

* Trunk things

* trunk fmt

* formatting

* fix trivy/DS002, checkov/CKV_DOCKER_3

* hide docker extension popup

* fix trivy/DS026, checkov/CKV_DOCKER_2

* fix radioLib warnings for T-Deck target

* wake screen with button only

* use custom touch driver

* define wake button for unphone

* use board definition for mesh-tab

* mesh-tab rotation upside-down

* update platform native

* use MESH_TAB hardware model definition

* radioLib update (fix crash/assert)

* reference seeed indicator fix commit arduino-esp32

* Remove unneeded file change :)

* disable serial module and tcp socket api for standalone devices (#5591)

* disable serial module and tcp socket api for standalone devices
* just disable webserver, leave wifi available
* disable socket api

* mesh-tab: lower I2C touch frequency

* log error when packet queue is full

* add more locking for shared SPI devices (#5595)

* add more locking for shared SPI devices
* call initSPI before the lock is used
* remove old one
* don't double lock
* Add missing unlock
* More missing unlocks
* Add locks to SafeFile, remove from `readcb`, introduce some LockGuards
* fix lock in setupSDCard()
* pull radiolib trunk with SPI-CS fixes
* change ContentHandler to Constructor type locks, where applicable

---------

Co-authored-by: mverch67 <manuel.verch@gmx.de>
Co-authored-by: GUVWAF <thijs@havinga.eu>
Co-authored-by: Manuel <71137295+mverch67@users.noreply.github.com>

* T-Deck: revert back to lovyanGFX touch driver

* T-Deck: increase allocated PSRAM by 50%

* mesh-tab: streamline target definitions

* update RadioLib 7.1.2

* mesh-tab: fix touch rotation 4.0 inch display

* Mesh-Tab platformio: 4.0inch: increase SPI frequency to max

* mesh-tab: fix rotation for 3.5 IPS capacitive display

* mesh-tab: fix rotation for 3.2 IPS capacitive display

* restructure device-ui library into sub-directories

* preparations for generic DisplayDriverFactory

* T-Deck: increase LVGL memory size

* update lib

* trunk fmt

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: Ben Meadors <benmmeadors@gmail.com>
Co-authored-by: todd-herbert <herbert.todd@gmail.com>
Co-authored-by: Jason Murray <15822260+scruplelesswizard@users.noreply.github.com>
Co-authored-by: Jason Murray <jason@chaosaffe.io>
Co-authored-by: Tom Fifield <tom@tomfifield.net>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: thebentern <9000580+thebentern@users.noreply.github.com>
Co-authored-by: Thomas Göttgens <tgoettgens@gmail.com>
Co-authored-by: Jonathan Bennett <jbennett@incomsystems.biz>
Co-authored-by: Austin <vidplace7@gmail.com>
Co-authored-by: virgil <virgil.wang.cj@gmail.com>
Co-authored-by: Mark Trevor Birss <markbirss@gmail.com>
Co-authored-by: Kalle Lilja <15094562+ThatKalle@users.noreply.github.com>
Co-authored-by: GUVWAF <thijs@havinga.eu>
thebentern added a commit that referenced this pull request Mar 1, 2025
* 2.6 protos

* [create-pull-request] automated change (#5789)

Co-authored-by: thebentern <9000580+thebentern@users.noreply.github.com>

* Hello world support for UDP broadcasts over the LAN on ESP32 (#5779)

* UDP local area network meshing on ESP32

* Logs

* Comment

* Update UdpMulticastThread.h

* Changes

* Only use router->send

* Make NodeDatabase (and file) independent of DeviceState (#5813)

* Make NodeDatabase (and file) independent of DeviceState

* 70

* Remove logging statement no longer needed

* Explicitly set CAD symbols, improve slot time calculation and adjust CW size accordingly (#5772)

* File system persistence fixes

* [create-pull-request] automated change (#6000)

Co-authored-by: thebentern <9000580+thebentern@users.noreply.github.com>

* Update ref

* Back to 80

* [create-pull-request] automated change (#6002)

Co-authored-by: thebentern <9000580+thebentern@users.noreply.github.com>

* 2.6 <- Next hop router (#6005)

* Initial version of NextHopRouter

* Set original hop limit in header flags

* Short-circuit to FloodingRouter for broadcasts

* If packet traveled 1 hop, set `relay_node` as `next_hop` for the original transmitter

* Set last byte to 0xFF if it ended at 0x00
As per an idea of @S5NC

* Also update next-hop based on received DM for us

* temp

* Add 1 retransmission for intermediate hops when using NextHopRouter

* Add next_hop and relayed_by in PacketHistory for setting next-hop and handle flooding fallback

* Update protos, store multiple relayers

* Remove next-hop update logic from NeighborInfoModule

* Fix retransmissions

* Improve ACKs for repeated packets and responses

* Stop retransmission even if there's not relay node

* Revert perhapsRebroadcast()

* Remove relayer if we cancel a transmission

* Better checking for fallback to flooding

* Fix newlines in traceroute print logs

* Stop retransmission for original packet

* Use relayID

* Also when want_ack is set, we should try to retransmit

* Fix cppcheck error

* Fix 'router' not in scope error

* Fix another cppcheck error

* Check for hop_limit and also update next hop when `hop_start == hop_limit` on ACK
Also check for broadcast in `getNextHop()`

* Formatting and correct NUM_RETRANSMISSIONS

* Update protos

* Start retransmissions in NextHopRouter if ReliableRouter didn't do it

* Handle repeated/fallback to flooding packets properly
First check if it's not still in the TxQueue

* Guard against clients setting `next_hop`/`relay_node`

* Don't cancel relay if we were the assigned next-hop

* Replies (e.g. tapback emoji) are also a valid confirmation of receipt

---------

Co-authored-by: GUVWAF <thijs@havinga.eu>
Co-authored-by: Thomas Göttgens <tgoettgens@gmail.com>
Co-authored-by: Tom Fifield <tom@tomfifield.net>
Co-authored-by: GUVWAF <78759985+GUVWAF@users.noreply.github.com>

* fix "native" compiler errors/warnings NodeDB.h

* fancy T-Deck / SenseCAP Indicator / unPhone / PICOmputer-S3 TFT screen (#3259)

* lib update: light theme

* fix merge issue

* lib update: home buttons + button try-fix

* lib update: icon color fix

* lib update: fix instability/crash on notification

* update lib: timezone

* timezone label

* lib update: fix set owner

* fix spiLock in RadioLibInterface

* add picomputer tft build

* picomputer build

* fix compiler error std::find()

* fix merge

* lib update: theme runtime config

* lib update: packet logger + T-Deck Plus

* lib update: mesh detector

* lib update: fix brightness & trackball crash

* try-fix less paranoia

* sensecap indicator updates

* lib update: indicator fix

* lib update: statistic & some fixes

* lib-update: other T-Deck touch driver

* use custom touch driver for Indicator

* lower tft task prio

* prepare LVGL ST7789 driver

* lib update: try-fix audio

* Drop received packets from self

* Additional decoded packet ignores

* Honor flip & color for Heltec T114 and T190 (#4786)

* Honor TFT_MESH color if defined for Heltec T114 or T190

* Temporary: point lib_deps at fork of Heltec's ST7789 library
For demo only, until ST7789 is merged

* Update lib_deps; tidy preprocessor logic

* Download debian files after firmware zip

* set title for protobufs bump PR (#4792)

* set title for version bump PR (#4791)

* Enable Dependabot

* chore: trunk fmt

* fix dependabot syntax (#4795)

* fix dependabot syntax

* Update dependabot.yml

* Update dependabot.yml

* Bump peter-evans/create-pull-request from 6 to 7 in /.github/workflows (#4797)

* Bump docker/build-push-action from 5 to 6 in /.github/workflows (#4800)

* Actions: Semgrep Images have moved from returntocorp to semgrep (#4774)

https://hub.docker.com/r/returntocorp/semgrep notes: "We've moved!
 Official Docker images for Semgrep now available at semgrep/semgrep."

Patch updates our CI workflow for these images.

Co-authored-by: Ben Meadors <benmmeadors@gmail.com>

* Bump meshtestic from `31ee3d9` to `37245b3` (#4799)

Bumps [meshtestic](https://github.com/meshtastic/meshTestic) from `31ee3d9` to `37245b3`.
- [Commits](meshtastic/meshTestic@31ee3d9...37245b3)

---
updated-dependencies:
- dependency-name: meshtestic
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* [create-pull-request] automated change (#4789)

Co-authored-by: thebentern <9000580+thebentern@users.noreply.github.com>

* Bump pnpm/action-setup from 2 to 4 in /.github/workflows (#4798)

Bumps [pnpm/action-setup](https://github.com/pnpm/action-setup) from 2 to 4.
- [Release notes](https://github.com/pnpm/action-setup/releases)
- [Commits](pnpm/action-setup@v2...v4)

---
updated-dependencies:
- dependency-name: pnpm/action-setup
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* Raspberry Pico2 - needs protos

* Re-order doDeepSleep (#4802)

Make sure PMU sleep takes place before I2C ends

* [create-pull-request] automated change

* heltec-wireless-bridge
requires Proto PR first

* feat: trigger class update when protobufs are changed

* meshtastic/ is a test suite; protobufs/ contains protobufs;

* Update platform-native to pick up portduino crash fix (#4807)

* Hopefully extract and commit to meshtastic.github.io

* CI fixes

* [Board] DIY "t-energy-s3_e22" (#4782)

* New variant "t-energy-s3_e22"

- Lilygo T-Energy-S3
- NanoVHF "Mesh-v1.06-TTGO-T18" board
- Ebyte E22 Series

* add board_level = extra

* Update variant.h

---------

Co-authored-by: Thomas Göttgens <tgoettgens@gmail.com>
Co-authored-by: Tom Fifield <tom@tomfifield.net>

* Consolidate variant build steps (#4806)

* poc: consolidate variant build steps

* use build-variant action

* only checkout once and clean up after run

* Revert "Consolidate variant build steps (#4806)" (#4816)

This reverts commit 9f8d86c.

* Make Ublox code more readable (#4727)

* Simplify Ublox code

Ublox comes in a myriad of versions and settings. Presently our
configuration code does a lot of branching based on versions being
or not being present.

This patch adds version detection earlier in the piece and branches
on the set gnssModel instead to create separate setup methods for Ublox 6,
Ublox 7/8/9, and Ublox10.

Additionally, adds a macro to make the code much shorter and more
readable.

* Make trunk happy

* Make trunk happy

---------

Co-authored-by: Ben Meadors <benmmeadors@gmail.com>

* Consider the LoRa header when checking packet length

* Minor fix (#4666)

* Minor fixes

It turns out setting a map value with the index notation causes
an lookup that can be avoided with emplace. Apply this to one line in
the StoreForward module.

Fix also Cppcheck-determined highly minor performance increase by
passing gpiochipname as a const reference :)

The amount of cycles used on this laptop while learning about these
callouts from cppcheck is unlikely to ever be more than the cycles
saved by the fixes ;)

* Update PortduinoGlue.cpp

* Revert "Update classes on protobufs update" (#4824)

* Revert "Update classes on protobufs update"

* remove quotes to fix trunk.

---------

Co-authored-by: Tom Fifield <tom@tomfifield.net>

* Implement optional second I2C bus for NRF52840
Enabled at compile-time if WIRE_INFERFACES_COUNT defined as 2

* Add I2C bus to Heltec T114 header pins
SDA: P0.13
SCL: P0.16

Uses bus 1, leaving bus 0 routed to the unpopulated footprint for the RTC (general future-proofing)

* Tidier macros

* Swap SDA and SCL
SDA=P0.16, SCL=P0.13

* Refactor and consolidate time window logic (#4826)

* Refactor and consolidate windowing logic

* Trunk

* Fixes

* More

* Fix braces and remove unused now variables.

There was a brace in src/mesh/RadioLibInterface.cpp that was breaking
compile on some architectures.

Additionally, there were some brace errors in
src/modules/Telemetry/AirQualityTelemetry.cpp
src/modules/Telemetry/EnvironmentTelemetry.cpp
src/mesh/wifi/WiFiAPClient.cpp

Move throttle include in WifiAPClient.cpp to top.

Add Default.h to sleep.cpp

rest of files just remove unused now variables.

* Remove a couple more meows

---------

Co-authored-by: Tom Fifield <tom@tomfifield.net>

* Rename message length headers and set payload max to 255 (#4827)

* Rename message length headers and set payload max to 255

* Add MESHTASTIC_PKC_OVERHEAD

* compare to MESHTASTIC_HEADER_LENGTH

---------

Co-authored-by: Thomas Göttgens <tgoettgens@gmail.com>

* Check for null before printing debug (#4835)

* fix merge

* try-fix crash

* lib update: fix neighbors

* fix GPIO0 mode after I2S audio

* lib update: audio fix

* lib update: fixes and improvements

* extra

* added ILI9342 (from master)

* device-ui persistency

* review update

* fix request, add handled

* fix merge issue

* fix merge issue

* remove newline

* remove newlines from debug log

* playing with locks; but needs more testing

* diy mesh-tab initial files

* board definition for mesh-tab (not yet used)

* use DISPLAY_SET_RESOLUTION to avoid hw dependency in code

* no telemetry for Indicator

* 16MB partition for Indicator

* 8MB partition for Indicator

* stability: add SPI lock before saving via littleFS

* dummy for config transfer (#5154)

* update indicator (due to compile and linker errors)

* remove faulty partition line

* fix missing include

* update indicator board

* update mesh-tab ILI9143 TFT

* fix naming

* mesh-tab targets

* try: disable duplicate locks

* fix nodeDB erase loop when free mem returns invalid value (0, -1).

* upgrade toolchain for nrf52 to gcc 9.3.1

* try-fix (workaround) T-Deck audio crash

* update mesh-tab tft configs

* set T-Deck audio to unused 48 (mem mclk)

* swap mclk to gpio 21

* update meshtab voltage divider

* update mesh-tab ini

* Fixed the issue that indicator device uploads via rp2040 serial port in some cases.

* Fixed the issue that the touch I2C address definition was not effective.

* Fixed the issue that the wifi configuration saved to RAM did not take effect.

* rotation fix; added ST7789 3.2" display

* dreamcatcher: assign GPIO44 to audio mclk

* mesh-tab touch updates

* add mesh-tab powersave as default

* fix DIO1 wakeup

* mesh-tab: enable alert message menu

* Streamline board definitions for first tech preview. (#5390)

* Streamline board definitions for first tech preview. TBD: Indicator Support

* add point-of-checkin

* use board/unphone.json

---------

Co-authored-by: mverch67 <manuel.verch@gmx.de>

* fix native targets

* add RadioLib debugging options for (T-Deck)

* fix T-Deck build

* fix native tft targets for rpi

* remove wrong debug defines

* t-deck-tft button is handled in device-ui

* disable default lightsleep for indicator

* Windows Support - Trunk and Platformio (#5397)

* Add support for GPG

* Add usb device support

* Add trunk.io to devcontainer

* Trunk things

* trunk fmt

* formatting

* fix trivy/DS002, checkov/CKV_DOCKER_3

* hide docker extension popup

* fix trivy/DS026, checkov/CKV_DOCKER_2

* fix radioLib warnings for T-Deck target

* wake screen with button only

* use custom touch driver

* define wake button for unphone

* use board definition for mesh-tab

* mesh-tab rotation upside-down

* update platform native

* use MESH_TAB hardware model definition

* radioLib update (fix crash/assert)

* reference seeed indicator fix commit arduino-esp32

* Remove unneeded file change :)

* disable serial module and tcp socket api for standalone devices (#5591)

* disable serial module and tcp socket api for standalone devices
* just disable webserver, leave wifi available
* disable socket api

* mesh-tab: lower I2C touch frequency

* log error when packet queue is full

* add more locking for shared SPI devices (#5595)

* add more locking for shared SPI devices
* call initSPI before the lock is used
* remove old one
* don't double lock
* Add missing unlock
* More missing unlocks
* Add locks to SafeFile, remove from `readcb`, introduce some LockGuards
* fix lock in setupSDCard()
* pull radiolib trunk with SPI-CS fixes
* change ContentHandler to Constructor type locks, where applicable

---------

Co-authored-by: mverch67 <manuel.verch@gmx.de>
Co-authored-by: GUVWAF <thijs@havinga.eu>
Co-authored-by: Manuel <71137295+mverch67@users.noreply.github.com>

* T-Deck: revert back to lovyanGFX touch driver

* T-Deck: increase allocated PSRAM by 50%

* mesh-tab: streamline target definitions

* update RadioLib 7.1.2

* mesh-tab: fix touch rotation 4.0 inch display

* Mesh-Tab platformio: 4.0inch: increase SPI frequency to max

* mesh-tab: fix rotation for 3.5 IPS capacitive display

* mesh-tab: fix rotation for 3.2 IPS capacitive display

* restructure device-ui library into sub-directories

* preparations for generic DisplayDriverFactory

* T-Deck: increase LVGL memory size

* update lib

* trunk fmt

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: Ben Meadors <benmmeadors@gmail.com>
Co-authored-by: todd-herbert <herbert.todd@gmail.com>
Co-authored-by: Jason Murray <15822260+scruplelesswizard@users.noreply.github.com>
Co-authored-by: Jason Murray <jason@chaosaffe.io>
Co-authored-by: Tom Fifield <tom@tomfifield.net>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: thebentern <9000580+thebentern@users.noreply.github.com>
Co-authored-by: Thomas Göttgens <tgoettgens@gmail.com>
Co-authored-by: Jonathan Bennett <jbennett@incomsystems.biz>
Co-authored-by: Austin <vidplace7@gmail.com>
Co-authored-by: virgil <virgil.wang.cj@gmail.com>
Co-authored-by: Mark Trevor Birss <markbirss@gmail.com>
Co-authored-by: Kalle Lilja <15094562+ThatKalle@users.noreply.github.com>
Co-authored-by: GUVWAF <thijs@havinga.eu>

* Version this

* Update platformio.ini (#6006)

* tested higher speed and it works

* Un-extra

* Add -tft environments to the ci matrix

* Exclude unphone tft for now. Something is wonky

* fixed Indicator touch issue (causing IO expander issues), added more RAM

* update lib

* fixed Indicator touch issue (causing IO expander issues), added more RAM (#6013)

* increase T-Deck PSRAM to avoid too early out-of-memory when messages fill up the storage

* update device-ui lib

* Fix T-Deck SD card detection (#6023)

* increase T-Deck PSRAM to avoid too early out-of-memory when messages fill up the storage

* fix SDCard for T-Deck; allow SPI frequency config

* meshtasticd: Add X11 480x480 preset (#6020)

* Littlefs per device

* 2.6 update

* [create-pull-request] automated change (#6037)

Co-authored-by: thebentern <9000580+thebentern@users.noreply.github.com>

* InkHUD UI for E-Ink (#6034)

* Decouple ButtonThread from sleep.cpp
Reorganize sleep observables. Don't call ButtonThread methods inside doLightSleep. Instead, handle in class with new lightsleep Observables.

* InkHUD: initial commit (WIP)
Publicly discloses the current work in progress. Not ready for use.

* feat: battery icon

* chore: implement meshtastic/firmware #5454
Clean up some inline functions

* feat: menu & settings for "jump to applet"

* Remove the beforeRender pattern
It hugely complicates things. If we can achieve acceptable performance without it, so much the better.

* Remove previous Map Applet
Needs re-implementation to work without the beforeRender pattern

* refactor: reimplement map applet
Doesn't require own position
Doesn't require the beforeRender pattern to precalculate; now all-at-once in render
Lays groundwork for fixed-size map with custom background image

* feat: autoshow
Allow user to select which applets (if any) should be automatically brought to foreground when they have new data to display

* refactor: tidy-up applet constructors
misc. jobs including:
- consistent naming
- move initializer-list-only constructors to header
- give derived applets unique identifiers for MeshModule and OSThread logging

* hotfix: autoshow always uses FAST update
In future, it *will* often use FAST, but this will be controlled by a WindowManager component which has not yet been written.
Hotfixed, in case anybody is attempting to use this development version on their deployed devices.

* refactor: bringToForeground no longer requests FAST update
In situations where an applet has moved to foreground because of user input, requestUpdate can be manually called, to upgrade to FAST refresh.
More permanent solution for #23e1dfc

* refactor: extract string storage from ThreadedMessageApplet
Separates the code responsible for storing the limited message history, which was previously part of the ThreadedMessageApplet.
We're now also using this code to store the "most recent message". Previously, this was stored in the `InkHUD::settings` struct, which was much less space-efficient.
We're also now storing the latest DM, laying the foundation for an applet to display only DMs, which will complement the threaded message applet.

* fix: text wrapping
Attempts to fix a disparity between `Applet::printWrapped` and `Applet::getWrappedTextHeight`, which would occasionally cause a ThreadedMessageApplet message to render "too short", overlapping other text.

* fix: purge old constructor
This one slipped through the last commit..

* feat: DM Applet
Useful in combination with the ThreadedMessageApplets, which don't show DMs

* fix: applets shouldn't handle events while deactivated
Only one or two applets were actually doing this, but I'm making a habit of having all applets return early from their event handling methods (as good practice), even if those methods are disabled elsewhere (e.g. not observing observable, return false from wantPacket)

* refactor: allow requesting update without requesting autoshow
Some applets may want to redraw, if they are displayed, but not feel the information is worth being brought to foreground for. Example: ActiveNodesApplet, when purging old nodes from list.

* feat: custom "Recently Active" duration
Allows users to tailor how long nodes will appear in the "Recents" applets, to suit the activity level of their mesh.

* refactor: rename some applets

* fix: autoshow

* fix: getWrappedTextHeight
Remove the "simulate" option from printWrapped; too hard to keep inline with genuine printing (because of AdafruitGFX Fonts' xAdvance, mabye?). Instead of simulating, we printWrapped as normal, and discard pixel output by setting crop. Both methods are similarly inefficient, apparently.

* fix: text wrapping in ThreadedMessageApplet
Wrong arguments were passed to Applet::printWrapped

* feat: notifications for text messages
Only shown if current applet does not already display the same info. Autoshow takes priority over notifications, if both would be used to display the same info.

* feat: optimize FAST vs FULL updates
New UpdateMediator class counts the number of each update type, and suggets which one to use, if the code doesn't already have an explicit prefence. Also performs "maintenance refreshes" unprovoked if display is not given an opportunity to before a FULL refresh through organic use.

* chore: update todo list

* fix: rare lock-up of buttons

* refactor: backlight
Replaces the initial proof-of-concept frontlight code for T-Echo
Presses less than 5 seconds momentarily illuminate the display
Presses longer than 5 seconds latch the light, requiring another tap to disable
If user has previously removed the T-Echo's capacitive touch button (some DIY projects), the light is controlled by the on-screen menu. This fallback is used by all T-Echo devices, until a press of the capacitive touch button is detected.

* feat: change tile with aux button
Applied to VM-E290.
Working as is, but a refactor of WindowManager::render is expected shortly, which will also tidy code from this push.

* fix: specify out-of-the-box tile assignments
Prevents placeholder applet showing on initial boot, for devices which use a mult-tile layout by default (VM-E290)

* fix: verify settings version when loading

* fix: wrong settings version

* refactor: remove unimplemented argument from requestUpdate
Specified whether or not to update "async", however the implementation was slightly broken, Applet::requestUpdate is only handled next time WindowManager::runOnce is called. This didn't allow code to actually await an update, which was misleading.

* refactor: renaming
Applet::render becomes Applet::onRender.
Tile::displayedApplet becomes Tile::assignedApplet.
New onRender method name allows us to move some of the pre and post render code from WindowManager into new Applet::render method, which will call onRender for us.

* refactor: rendering
Bit of a tidy-up. No intended change in behavior.

* fix: optimize refresh times
Shorter wait between retrying update if display was previously busy.
Set anticipated update durations closer to observed values. No signifacant performance increase, but does decrease the amount of polling required.

* feat: blocking update for E-Ink
Option to wait for display update to complete before proceeding. Important when shutting down the device.

* refactor: allow system applets to lock rendering
Temporarily prevents other applets from rendering.

* feat: boot and shutdown screens

* feat: BluetoothStatus
Adds a meshtastic::Status object which exposes the state of the Bluetooth connection. Intends to allow decoupling of UI code.

* feat: Bluetooth pairing screen

* fix: InkHUD defaults not honored

* fix: random Bluetooth pin for NicheGraphics UIs

* chore: button interrupts tested

* fix: emoji reactions show as blank messages

* fix: autoshow and notification triggered by outgoing message

* feat: save InkHUD data before reboot
Implemented with a new Observable. Previously, config and a few recent messages were saved on shutdown. These were lost if the device rebooted, for example when firmware settings were changed by a client. Now, the InkHUD config and recent messages saved on reboot, the same as during an intentional shutdown.

* feat: imperial distances
Controlled by the config.display.units setting

* fix: hide features which are not yet implemented

* refactor: faster rendering
Previously, only tiles which requested update were re-rendered. Affected tiles had their region blanked before render, pixel by pixel. Benchmarking revealed that it is significantly faster to memset the framebuffer and redraw all tiles.

* refactor: tile ownership
Tiles and Applets now maintain a reciprocal link, which is enforced by asserts. Less confusing than the old situation, where an applet and a tile may disagree on their relationship. Empty tiles are now identified by a nullptr *Applet, instead of by having the placeholderApplet assigned.

* fix: notifications and battery when menu open
Do render notifications in front of menu; don't render battery icon in front of menu.

* fix: simpler defaults
Don't expose new users to multiplexed applets straight away: make them enable the feature for themselves.

* fix: Inputs::TwoButton interrupts, when only one button in use

* fix: ensure display update is complete when ESP32 enters light sleep
Many panels power down automatically, but some require active intervention from us. If light sleep (ESP32) occurs during a display update, these panels could potentially remain powered on, applying voltage the pixels for an extended period of time, and potentially damaging the display.

* fix: honor per-variant user tile limit
Set as the default value for InkHUD::settings.userTiles.maxCount in nicheGraphics.h

* feat: initial InkHUD support for Wireless Paper v1.1 and VM-E213

* refactor: Heard and Recents Applets
Tidier code, significant speed boost. Possibly no noticable change in responsiveness, but rendering now spends much less time blocking execution, which is important for correction functioning of the other firmware components.

* refactor: use a common pio base config
Easier to make any future PlatformIO config changes

* feat: tips
Show information that we think the user might find helpful. Some info shown first boot only. Other info shown when / if relevant.

* fix: text wrapping for '\n'
Previously, the newline was honored, but the adojining word was not printed.

* Decouple ButtonThread from sleep.cpp
Reorganize sleep observables. Don't call ButtonThread methods inside doLightSleep. Instead, handle in class with new lightsleep Observables.

* feat: BluetoothStatus
Adds a meshtastic::Status object which exposes the state of the Bluetooth connection. Intends to allow decoupling of UI code.

* feat: observable for reboot

* refactor: Heltec VM-E290 installDefaultConfig

* fix: random Bluetooth pin for NicheGraphics UIs

* update device-ui: fix touch/crash issue while light sleep

* Collect inkhud

* fix: InkHUD shouldn't nag about timezone (#6040)

* Guard eink drivers w/ MESHTASTIC_INCLUDE_NICHE_GRAPHICS

* Case sensitive perhaps?

* More case-sensitivity instances

* Moar

* RTC

* Yet another case issue!

* Sigh...

* MUI: BT programming mode (#6046)

* allow BT connection with disabled MUI

* Update device-ui

---------

Co-authored-by: Ben Meadors <benmmeadors@gmail.com>

* MUI: fix nag timeout, disable BT programming mode for native (#6052)

* allow BT connection with disabled MUI

* Update device-ui

* MUI: fix nag timeout default and remove programming mode for native

---------

Co-authored-by: Ben Meadors <benmmeadors@gmail.com>

* remove debuglog leftover

* Wireless Paper: remove stray board_level = extra (#6060)

Makes sure the InkHUD version gets build into the release zip

* Fixed persistence stragglers from NodeDB / Device State divorce (#6059)

* Increase `MAX_THREADS` for InkHUD variants with WiFi (#6064)

* Licensed usage compliance (#6047)

* Prevent psk and legacy admin channel on licensed mode

* Move it

* Consolidate warning strings

* More holes

* Device UI submodule bump

* Prevent licensed users from rebroadcasting unlicensed traffic (#6068)

* Prevent licensed users from rebroadcasting unlicensed traffic

* Added method and enum to make user license status more clear

* MUI: move UI initialization out of main.cpp and adding lightsleep observer + mutex (#6078)

* added device-ui to lightSleep observers for handling graceful sleep; refactoring main.cpp

* bump lib version

* Update device-ui

* unPhone TFT: include into build, enable SD card, increase PSRAM (#6082)

* unPhone-tft: include into build, enable SD card, increase assigned PSRAM

* lib update

* Backup / migrate pub private keys when upgrading to new files in 2.6 (#6096)

* Save a backup of pub/private keys before factory reset

* Fix licensed mode warning

* Unlock spi on else file doesn't exist

* Update device-ui

* Update protos and device-ui

* [create-pull-request] automated change (#6129)

Co-authored-by: thebentern <9000580+thebentern@users.noreply.github.com>

* Proto

* [create-pull-request] automated change (#6131)

* Proto update for backup

* [create-pull-request] automated change (#6133)

Co-authored-by: thebentern <9000580+thebentern@users.noreply.github.com>

* Update protobufs

* Space

* [create-pull-request] automated change (#6144)

Co-authored-by: thebentern <9000580+thebentern@users.noreply.github.com>

* Protos

* [create-pull-request] automated change (#6152)

Co-authored-by: thebentern <9000580+thebentern@users.noreply.github.com>

* Updeet

* device-ui lib update

* fix channel OK button

* device-lib update: fix settings panel -> no scrolling

* device-ui lib: last minute update

* defined(SENSECAP_INDICATOR)

* MUI hot-fix pub/priv keys

* MUI hot-fix username dialog

* MUI: BT programming mode button

* Update protobufs

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: GUVWAF <78759985+GUVWAF@users.noreply.github.com>
Co-authored-by: GUVWAF <thijs@havinga.eu>
Co-authored-by: Thomas Göttgens <tgoettgens@gmail.com>
Co-authored-by: Tom Fifield <tom@tomfifield.net>
Co-authored-by: mverch67 <manuel.verch@gmx.de>
Co-authored-by: Manuel <71137295+mverch67@users.noreply.github.com>
Co-authored-by: todd-herbert <herbert.todd@gmail.com>
Co-authored-by: Jason Murray <15822260+scruplelesswizard@users.noreply.github.com>
Co-authored-by: Jason Murray <jason@chaosaffe.io>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Jonathan Bennett <jbennett@incomsystems.biz>
Co-authored-by: Austin <vidplace7@gmail.com>
Co-authored-by: virgil <virgil.wang.cj@gmail.com>
Co-authored-by: Mark Trevor Birss <markbirss@gmail.com>
Co-authored-by: Kalle Lilja <15094562+ThatKalle@users.noreply.github.com>
Co-authored-by: rcarteraz <robert.l.carter2@gmail.com>
r41d pushed a commit to r41d/meshtastic-firmware that referenced this pull request Mar 12, 2025
* 2.6 protos

* [create-pull-request] automated change (meshtastic#5789)

Co-authored-by: thebentern <9000580+thebentern@users.noreply.github.com>

* Hello world support for UDP broadcasts over the LAN on ESP32 (meshtastic#5779)

* UDP local area network meshing on ESP32

* Logs

* Comment

* Update UdpMulticastThread.h

* Changes

* Only use router->send

* Make NodeDatabase (and file) independent of DeviceState (meshtastic#5813)

* Make NodeDatabase (and file) independent of DeviceState

* 70

* Remove logging statement no longer needed

* Explicitly set CAD symbols, improve slot time calculation and adjust CW size accordingly (meshtastic#5772)

* File system persistence fixes

* [create-pull-request] automated change (meshtastic#6000)

Co-authored-by: thebentern <9000580+thebentern@users.noreply.github.com>

* Update ref

* Back to 80

* [create-pull-request] automated change (meshtastic#6002)

Co-authored-by: thebentern <9000580+thebentern@users.noreply.github.com>

* 2.6 <- Next hop router (meshtastic#6005)

* Initial version of NextHopRouter

* Set original hop limit in header flags

* Short-circuit to FloodingRouter for broadcasts

* If packet traveled 1 hop, set `relay_node` as `next_hop` for the original transmitter

* Set last byte to 0xFF if it ended at 0x00
As per an idea of @S5NC

* Also update next-hop based on received DM for us

* temp

* Add 1 retransmission for intermediate hops when using NextHopRouter

* Add next_hop and relayed_by in PacketHistory for setting next-hop and handle flooding fallback

* Update protos, store multiple relayers

* Remove next-hop update logic from NeighborInfoModule

* Fix retransmissions

* Improve ACKs for repeated packets and responses

* Stop retransmission even if there's not relay node

* Revert perhapsRebroadcast()

* Remove relayer if we cancel a transmission

* Better checking for fallback to flooding

* Fix newlines in traceroute print logs

* Stop retransmission for original packet

* Use relayID

* Also when want_ack is set, we should try to retransmit

* Fix cppcheck error

* Fix 'router' not in scope error

* Fix another cppcheck error

* Check for hop_limit and also update next hop when `hop_start == hop_limit` on ACK
Also check for broadcast in `getNextHop()`

* Formatting and correct NUM_RETRANSMISSIONS

* Update protos

* Start retransmissions in NextHopRouter if ReliableRouter didn't do it

* Handle repeated/fallback to flooding packets properly
First check if it's not still in the TxQueue

* Guard against clients setting `next_hop`/`relay_node`

* Don't cancel relay if we were the assigned next-hop

* Replies (e.g. tapback emoji) are also a valid confirmation of receipt

---------

Co-authored-by: GUVWAF <thijs@havinga.eu>
Co-authored-by: Thomas Göttgens <tgoettgens@gmail.com>
Co-authored-by: Tom Fifield <tom@tomfifield.net>
Co-authored-by: GUVWAF <78759985+GUVWAF@users.noreply.github.com>

* fix "native" compiler errors/warnings NodeDB.h

* fancy T-Deck / SenseCAP Indicator / unPhone / PICOmputer-S3 TFT screen (meshtastic#3259)

* lib update: light theme

* fix merge issue

* lib update: home buttons + button try-fix

* lib update: icon color fix

* lib update: fix instability/crash on notification

* update lib: timezone

* timezone label

* lib update: fix set owner

* fix spiLock in RadioLibInterface

* add picomputer tft build

* picomputer build

* fix compiler error std::find()

* fix merge

* lib update: theme runtime config

* lib update: packet logger + T-Deck Plus

* lib update: mesh detector

* lib update: fix brightness & trackball crash

* try-fix less paranoia

* sensecap indicator updates

* lib update: indicator fix

* lib update: statistic & some fixes

* lib-update: other T-Deck touch driver

* use custom touch driver for Indicator

* lower tft task prio

* prepare LVGL ST7789 driver

* lib update: try-fix audio

* Drop received packets from self

* Additional decoded packet ignores

* Honor flip & color for Heltec T114 and T190 (meshtastic#4786)

* Honor TFT_MESH color if defined for Heltec T114 or T190

* Temporary: point lib_deps at fork of Heltec's ST7789 library
For demo only, until ST7789 is merged

* Update lib_deps; tidy preprocessor logic

* Download debian files after firmware zip

* set title for protobufs bump PR (meshtastic#4792)

* set title for version bump PR (meshtastic#4791)

* Enable Dependabot

* chore: trunk fmt

* fix dependabot syntax (meshtastic#4795)

* fix dependabot syntax

* Update dependabot.yml

* Update dependabot.yml

* Bump peter-evans/create-pull-request from 6 to 7 in /.github/workflows (meshtastic#4797)

* Bump docker/build-push-action from 5 to 6 in /.github/workflows (meshtastic#4800)

* Actions: Semgrep Images have moved from returntocorp to semgrep (meshtastic#4774)

https://hub.docker.com/r/returntocorp/semgrep notes: "We've moved!
 Official Docker images for Semgrep now available at semgrep/semgrep."

Patch updates our CI workflow for these images.

Co-authored-by: Ben Meadors <benmmeadors@gmail.com>

* Bump meshtestic from `31ee3d9` to `37245b3` (meshtastic#4799)

Bumps [meshtestic](https://github.com/meshtastic/meshTestic) from `31ee3d9` to `37245b3`.
- [Commits](meshtastic/meshTestic@31ee3d9...37245b3)

---
updated-dependencies:
- dependency-name: meshtestic
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* [create-pull-request] automated change (meshtastic#4789)

Co-authored-by: thebentern <9000580+thebentern@users.noreply.github.com>

* Bump pnpm/action-setup from 2 to 4 in /.github/workflows (meshtastic#4798)

Bumps [pnpm/action-setup](https://github.com/pnpm/action-setup) from 2 to 4.
- [Release notes](https://github.com/pnpm/action-setup/releases)
- [Commits](pnpm/action-setup@v2...v4)

---
updated-dependencies:
- dependency-name: pnpm/action-setup
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* Raspberry Pico2 - needs protos

* Re-order doDeepSleep (meshtastic#4802)

Make sure PMU sleep takes place before I2C ends

* [create-pull-request] automated change

* heltec-wireless-bridge
requires Proto PR first

* feat: trigger class update when protobufs are changed

* meshtastic/ is a test suite; protobufs/ contains protobufs;

* Update platform-native to pick up portduino crash fix (meshtastic#4807)

* Hopefully extract and commit to meshtastic.github.io

* CI fixes

* [Board] DIY "t-energy-s3_e22" (meshtastic#4782)

* New variant "t-energy-s3_e22"

- Lilygo T-Energy-S3
- NanoVHF "Mesh-v1.06-TTGO-T18" board
- Ebyte E22 Series

* add board_level = extra

* Update variant.h

---------

Co-authored-by: Thomas Göttgens <tgoettgens@gmail.com>
Co-authored-by: Tom Fifield <tom@tomfifield.net>

* Consolidate variant build steps (meshtastic#4806)

* poc: consolidate variant build steps

* use build-variant action

* only checkout once and clean up after run

* Revert "Consolidate variant build steps (meshtastic#4806)" (meshtastic#4816)

This reverts commit 9f8d86c.

* Make Ublox code more readable (meshtastic#4727)

* Simplify Ublox code

Ublox comes in a myriad of versions and settings. Presently our
configuration code does a lot of branching based on versions being
or not being present.

This patch adds version detection earlier in the piece and branches
on the set gnssModel instead to create separate setup methods for Ublox 6,
Ublox 7/8/9, and Ublox10.

Additionally, adds a macro to make the code much shorter and more
readable.

* Make trunk happy

* Make trunk happy

---------

Co-authored-by: Ben Meadors <benmmeadors@gmail.com>

* Consider the LoRa header when checking packet length

* Minor fix (meshtastic#4666)

* Minor fixes

It turns out setting a map value with the index notation causes
an lookup that can be avoided with emplace. Apply this to one line in
the StoreForward module.

Fix also Cppcheck-determined highly minor performance increase by
passing gpiochipname as a const reference :)

The amount of cycles used on this laptop while learning about these
callouts from cppcheck is unlikely to ever be more than the cycles
saved by the fixes ;)

* Update PortduinoGlue.cpp

* Revert "Update classes on protobufs update" (meshtastic#4824)

* Revert "Update classes on protobufs update"

* remove quotes to fix trunk.

---------

Co-authored-by: Tom Fifield <tom@tomfifield.net>

* Implement optional second I2C bus for NRF52840
Enabled at compile-time if WIRE_INFERFACES_COUNT defined as 2

* Add I2C bus to Heltec T114 header pins
SDA: P0.13
SCL: P0.16

Uses bus 1, leaving bus 0 routed to the unpopulated footprint for the RTC (general future-proofing)

* Tidier macros

* Swap SDA and SCL
SDA=P0.16, SCL=P0.13

* Refactor and consolidate time window logic (meshtastic#4826)

* Refactor and consolidate windowing logic

* Trunk

* Fixes

* More

* Fix braces and remove unused now variables.

There was a brace in src/mesh/RadioLibInterface.cpp that was breaking
compile on some architectures.

Additionally, there were some brace errors in
src/modules/Telemetry/AirQualityTelemetry.cpp
src/modules/Telemetry/EnvironmentTelemetry.cpp
src/mesh/wifi/WiFiAPClient.cpp

Move throttle include in WifiAPClient.cpp to top.

Add Default.h to sleep.cpp

rest of files just remove unused now variables.

* Remove a couple more meows

---------

Co-authored-by: Tom Fifield <tom@tomfifield.net>

* Rename message length headers and set payload max to 255 (meshtastic#4827)

* Rename message length headers and set payload max to 255

* Add MESHTASTIC_PKC_OVERHEAD

* compare to MESHTASTIC_HEADER_LENGTH

---------

Co-authored-by: Thomas Göttgens <tgoettgens@gmail.com>

* Check for null before printing debug (meshtastic#4835)

* fix merge

* try-fix crash

* lib update: fix neighbors

* fix GPIO0 mode after I2S audio

* lib update: audio fix

* lib update: fixes and improvements

* extra

* added ILI9342 (from master)

* device-ui persistency

* review update

* fix request, add handled

* fix merge issue

* fix merge issue

* remove newline

* remove newlines from debug log

* playing with locks; but needs more testing

* diy mesh-tab initial files

* board definition for mesh-tab (not yet used)

* use DISPLAY_SET_RESOLUTION to avoid hw dependency in code

* no telemetry for Indicator

* 16MB partition for Indicator

* 8MB partition for Indicator

* stability: add SPI lock before saving via littleFS

* dummy for config transfer (meshtastic#5154)

* update indicator (due to compile and linker errors)

* remove faulty partition line

* fix missing include

* update indicator board

* update mesh-tab ILI9143 TFT

* fix naming

* mesh-tab targets

* try: disable duplicate locks

* fix nodeDB erase loop when free mem returns invalid value (0, -1).

* upgrade toolchain for nrf52 to gcc 9.3.1

* try-fix (workaround) T-Deck audio crash

* update mesh-tab tft configs

* set T-Deck audio to unused 48 (mem mclk)

* swap mclk to gpio 21

* update meshtab voltage divider

* update mesh-tab ini

* Fixed the issue that indicator device uploads via rp2040 serial port in some cases.

* Fixed the issue that the touch I2C address definition was not effective.

* Fixed the issue that the wifi configuration saved to RAM did not take effect.

* rotation fix; added ST7789 3.2" display

* dreamcatcher: assign GPIO44 to audio mclk

* mesh-tab touch updates

* add mesh-tab powersave as default

* fix DIO1 wakeup

* mesh-tab: enable alert message menu

* Streamline board definitions for first tech preview. (meshtastic#5390)

* Streamline board definitions for first tech preview. TBD: Indicator Support

* add point-of-checkin

* use board/unphone.json

---------

Co-authored-by: mverch67 <manuel.verch@gmx.de>

* fix native targets

* add RadioLib debugging options for (T-Deck)

* fix T-Deck build

* fix native tft targets for rpi

* remove wrong debug defines

* t-deck-tft button is handled in device-ui

* disable default lightsleep for indicator

* Windows Support - Trunk and Platformio (meshtastic#5397)

* Add support for GPG

* Add usb device support

* Add trunk.io to devcontainer

* Trunk things

* trunk fmt

* formatting

* fix trivy/DS002, checkov/CKV_DOCKER_3

* hide docker extension popup

* fix trivy/DS026, checkov/CKV_DOCKER_2

* fix radioLib warnings for T-Deck target

* wake screen with button only

* use custom touch driver

* define wake button for unphone

* use board definition for mesh-tab

* mesh-tab rotation upside-down

* update platform native

* use MESH_TAB hardware model definition

* radioLib update (fix crash/assert)

* reference seeed indicator fix commit arduino-esp32

* Remove unneeded file change :)

* disable serial module and tcp socket api for standalone devices (meshtastic#5591)

* disable serial module and tcp socket api for standalone devices
* just disable webserver, leave wifi available
* disable socket api

* mesh-tab: lower I2C touch frequency

* log error when packet queue is full

* add more locking for shared SPI devices (meshtastic#5595)

* add more locking for shared SPI devices
* call initSPI before the lock is used
* remove old one
* don't double lock
* Add missing unlock
* More missing unlocks
* Add locks to SafeFile, remove from `readcb`, introduce some LockGuards
* fix lock in setupSDCard()
* pull radiolib trunk with SPI-CS fixes
* change ContentHandler to Constructor type locks, where applicable

---------

Co-authored-by: mverch67 <manuel.verch@gmx.de>
Co-authored-by: GUVWAF <thijs@havinga.eu>
Co-authored-by: Manuel <71137295+mverch67@users.noreply.github.com>

* T-Deck: revert back to lovyanGFX touch driver

* T-Deck: increase allocated PSRAM by 50%

* mesh-tab: streamline target definitions

* update RadioLib 7.1.2

* mesh-tab: fix touch rotation 4.0 inch display

* Mesh-Tab platformio: 4.0inch: increase SPI frequency to max

* mesh-tab: fix rotation for 3.5 IPS capacitive display

* mesh-tab: fix rotation for 3.2 IPS capacitive display

* restructure device-ui library into sub-directories

* preparations for generic DisplayDriverFactory

* T-Deck: increase LVGL memory size

* update lib

* trunk fmt

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: Ben Meadors <benmmeadors@gmail.com>
Co-authored-by: todd-herbert <herbert.todd@gmail.com>
Co-authored-by: Jason Murray <15822260+scruplelesswizard@users.noreply.github.com>
Co-authored-by: Jason Murray <jason@chaosaffe.io>
Co-authored-by: Tom Fifield <tom@tomfifield.net>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: thebentern <9000580+thebentern@users.noreply.github.com>
Co-authored-by: Thomas Göttgens <tgoettgens@gmail.com>
Co-authored-by: Jonathan Bennett <jbennett@incomsystems.biz>
Co-authored-by: Austin <vidplace7@gmail.com>
Co-authored-by: virgil <virgil.wang.cj@gmail.com>
Co-authored-by: Mark Trevor Birss <markbirss@gmail.com>
Co-authored-by: Kalle Lilja <15094562+ThatKalle@users.noreply.github.com>
Co-authored-by: GUVWAF <thijs@havinga.eu>

* Version this

* Update platformio.ini (meshtastic#6006)

* tested higher speed and it works

* Un-extra

* Add -tft environments to the ci matrix

* Exclude unphone tft for now. Something is wonky

* fixed Indicator touch issue (causing IO expander issues), added more RAM

* update lib

* fixed Indicator touch issue (causing IO expander issues), added more RAM (meshtastic#6013)

* increase T-Deck PSRAM to avoid too early out-of-memory when messages fill up the storage

* update device-ui lib

* Fix T-Deck SD card detection (meshtastic#6023)

* increase T-Deck PSRAM to avoid too early out-of-memory when messages fill up the storage

* fix SDCard for T-Deck; allow SPI frequency config

* meshtasticd: Add X11 480x480 preset (meshtastic#6020)

* Littlefs per device

* 2.6 update

* [create-pull-request] automated change (meshtastic#6037)

Co-authored-by: thebentern <9000580+thebentern@users.noreply.github.com>

* InkHUD UI for E-Ink (meshtastic#6034)

* Decouple ButtonThread from sleep.cpp
Reorganize sleep observables. Don't call ButtonThread methods inside doLightSleep. Instead, handle in class with new lightsleep Observables.

* InkHUD: initial commit (WIP)
Publicly discloses the current work in progress. Not ready for use.

* feat: battery icon

* chore: implement meshtastic/firmware meshtastic#5454
Clean up some inline functions

* feat: menu & settings for "jump to applet"

* Remove the beforeRender pattern
It hugely complicates things. If we can achieve acceptable performance without it, so much the better.

* Remove previous Map Applet
Needs re-implementation to work without the beforeRender pattern

* refactor: reimplement map applet
Doesn't require own position
Doesn't require the beforeRender pattern to precalculate; now all-at-once in render
Lays groundwork for fixed-size map with custom background image

* feat: autoshow
Allow user to select which applets (if any) should be automatically brought to foreground when they have new data to display

* refactor: tidy-up applet constructors
misc. jobs including:
- consistent naming
- move initializer-list-only constructors to header
- give derived applets unique identifiers for MeshModule and OSThread logging

* hotfix: autoshow always uses FAST update
In future, it *will* often use FAST, but this will be controlled by a WindowManager component which has not yet been written.
Hotfixed, in case anybody is attempting to use this development version on their deployed devices.

* refactor: bringToForeground no longer requests FAST update
In situations where an applet has moved to foreground because of user input, requestUpdate can be manually called, to upgrade to FAST refresh.
More permanent solution for #23e1dfc

* refactor: extract string storage from ThreadedMessageApplet
Separates the code responsible for storing the limited message history, which was previously part of the ThreadedMessageApplet.
We're now also using this code to store the "most recent message". Previously, this was stored in the `InkHUD::settings` struct, which was much less space-efficient.
We're also now storing the latest DM, laying the foundation for an applet to display only DMs, which will complement the threaded message applet.

* fix: text wrapping
Attempts to fix a disparity between `Applet::printWrapped` and `Applet::getWrappedTextHeight`, which would occasionally cause a ThreadedMessageApplet message to render "too short", overlapping other text.

* fix: purge old constructor
This one slipped through the last commit..

* feat: DM Applet
Useful in combination with the ThreadedMessageApplets, which don't show DMs

* fix: applets shouldn't handle events while deactivated
Only one or two applets were actually doing this, but I'm making a habit of having all applets return early from their event handling methods (as good practice), even if those methods are disabled elsewhere (e.g. not observing observable, return false from wantPacket)

* refactor: allow requesting update without requesting autoshow
Some applets may want to redraw, if they are displayed, but not feel the information is worth being brought to foreground for. Example: ActiveNodesApplet, when purging old nodes from list.

* feat: custom "Recently Active" duration
Allows users to tailor how long nodes will appear in the "Recents" applets, to suit the activity level of their mesh.

* refactor: rename some applets

* fix: autoshow

* fix: getWrappedTextHeight
Remove the "simulate" option from printWrapped; too hard to keep inline with genuine printing (because of AdafruitGFX Fonts' xAdvance, mabye?). Instead of simulating, we printWrapped as normal, and discard pixel output by setting crop. Both methods are similarly inefficient, apparently.

* fix: text wrapping in ThreadedMessageApplet
Wrong arguments were passed to Applet::printWrapped

* feat: notifications for text messages
Only shown if current applet does not already display the same info. Autoshow takes priority over notifications, if both would be used to display the same info.

* feat: optimize FAST vs FULL updates
New UpdateMediator class counts the number of each update type, and suggets which one to use, if the code doesn't already have an explicit prefence. Also performs "maintenance refreshes" unprovoked if display is not given an opportunity to before a FULL refresh through organic use.

* chore: update todo list

* fix: rare lock-up of buttons

* refactor: backlight
Replaces the initial proof-of-concept frontlight code for T-Echo
Presses less than 5 seconds momentarily illuminate the display
Presses longer than 5 seconds latch the light, requiring another tap to disable
If user has previously removed the T-Echo's capacitive touch button (some DIY projects), the light is controlled by the on-screen menu. This fallback is used by all T-Echo devices, until a press of the capacitive touch button is detected.

* feat: change tile with aux button
Applied to VM-E290.
Working as is, but a refactor of WindowManager::render is expected shortly, which will also tidy code from this push.

* fix: specify out-of-the-box tile assignments
Prevents placeholder applet showing on initial boot, for devices which use a mult-tile layout by default (VM-E290)

* fix: verify settings version when loading

* fix: wrong settings version

* refactor: remove unimplemented argument from requestUpdate
Specified whether or not to update "async", however the implementation was slightly broken, Applet::requestUpdate is only handled next time WindowManager::runOnce is called. This didn't allow code to actually await an update, which was misleading.

* refactor: renaming
Applet::render becomes Applet::onRender.
Tile::displayedApplet becomes Tile::assignedApplet.
New onRender method name allows us to move some of the pre and post render code from WindowManager into new Applet::render method, which will call onRender for us.

* refactor: rendering
Bit of a tidy-up. No intended change in behavior.

* fix: optimize refresh times
Shorter wait between retrying update if display was previously busy.
Set anticipated update durations closer to observed values. No signifacant performance increase, but does decrease the amount of polling required.

* feat: blocking update for E-Ink
Option to wait for display update to complete before proceeding. Important when shutting down the device.

* refactor: allow system applets to lock rendering
Temporarily prevents other applets from rendering.

* feat: boot and shutdown screens

* feat: BluetoothStatus
Adds a meshtastic::Status object which exposes the state of the Bluetooth connection. Intends to allow decoupling of UI code.

* feat: Bluetooth pairing screen

* fix: InkHUD defaults not honored

* fix: random Bluetooth pin for NicheGraphics UIs

* chore: button interrupts tested

* fix: emoji reactions show as blank messages

* fix: autoshow and notification triggered by outgoing message

* feat: save InkHUD data before reboot
Implemented with a new Observable. Previously, config and a few recent messages were saved on shutdown. These were lost if the device rebooted, for example when firmware settings were changed by a client. Now, the InkHUD config and recent messages saved on reboot, the same as during an intentional shutdown.

* feat: imperial distances
Controlled by the config.display.units setting

* fix: hide features which are not yet implemented

* refactor: faster rendering
Previously, only tiles which requested update were re-rendered. Affected tiles had their region blanked before render, pixel by pixel. Benchmarking revealed that it is significantly faster to memset the framebuffer and redraw all tiles.

* refactor: tile ownership
Tiles and Applets now maintain a reciprocal link, which is enforced by asserts. Less confusing than the old situation, where an applet and a tile may disagree on their relationship. Empty tiles are now identified by a nullptr *Applet, instead of by having the placeholderApplet assigned.

* fix: notifications and battery when menu open
Do render notifications in front of menu; don't render battery icon in front of menu.

* fix: simpler defaults
Don't expose new users to multiplexed applets straight away: make them enable the feature for themselves.

* fix: Inputs::TwoButton interrupts, when only one button in use

* fix: ensure display update is complete when ESP32 enters light sleep
Many panels power down automatically, but some require active intervention from us. If light sleep (ESP32) occurs during a display update, these panels could potentially remain powered on, applying voltage the pixels for an extended period of time, and potentially damaging the display.

* fix: honor per-variant user tile limit
Set as the default value for InkHUD::settings.userTiles.maxCount in nicheGraphics.h

* feat: initial InkHUD support for Wireless Paper v1.1 and VM-E213

* refactor: Heard and Recents Applets
Tidier code, significant speed boost. Possibly no noticable change in responsiveness, but rendering now spends much less time blocking execution, which is important for correction functioning of the other firmware components.

* refactor: use a common pio base config
Easier to make any future PlatformIO config changes

* feat: tips
Show information that we think the user might find helpful. Some info shown first boot only. Other info shown when / if relevant.

* fix: text wrapping for '\n'
Previously, the newline was honored, but the adojining word was not printed.

* Decouple ButtonThread from sleep.cpp
Reorganize sleep observables. Don't call ButtonThread methods inside doLightSleep. Instead, handle in class with new lightsleep Observables.

* feat: BluetoothStatus
Adds a meshtastic::Status object which exposes the state of the Bluetooth connection. Intends to allow decoupling of UI code.

* feat: observable for reboot

* refactor: Heltec VM-E290 installDefaultConfig

* fix: random Bluetooth pin for NicheGraphics UIs

* update device-ui: fix touch/crash issue while light sleep

* Collect inkhud

* fix: InkHUD shouldn't nag about timezone (meshtastic#6040)

* Guard eink drivers w/ MESHTASTIC_INCLUDE_NICHE_GRAPHICS

* Case sensitive perhaps?

* More case-sensitivity instances

* Moar

* RTC

* Yet another case issue!

* Sigh...

* MUI: BT programming mode (meshtastic#6046)

* allow BT connection with disabled MUI

* Update device-ui

---------

Co-authored-by: Ben Meadors <benmmeadors@gmail.com>

* MUI: fix nag timeout, disable BT programming mode for native (meshtastic#6052)

* allow BT connection with disabled MUI

* Update device-ui

* MUI: fix nag timeout default and remove programming mode for native

---------

Co-authored-by: Ben Meadors <benmmeadors@gmail.com>

* remove debuglog leftover

* Wireless Paper: remove stray board_level = extra (meshtastic#6060)

Makes sure the InkHUD version gets build into the release zip

* Fixed persistence stragglers from NodeDB / Device State divorce (meshtastic#6059)

* Increase `MAX_THREADS` for InkHUD variants with WiFi (meshtastic#6064)

* Licensed usage compliance (meshtastic#6047)

* Prevent psk and legacy admin channel on licensed mode

* Move it

* Consolidate warning strings

* More holes

* Device UI submodule bump

* Prevent licensed users from rebroadcasting unlicensed traffic (meshtastic#6068)

* Prevent licensed users from rebroadcasting unlicensed traffic

* Added method and enum to make user license status more clear

* MUI: move UI initialization out of main.cpp and adding lightsleep observer + mutex (meshtastic#6078)

* added device-ui to lightSleep observers for handling graceful sleep; refactoring main.cpp

* bump lib version

* Update device-ui

* unPhone TFT: include into build, enable SD card, increase PSRAM (meshtastic#6082)

* unPhone-tft: include into build, enable SD card, increase assigned PSRAM

* lib update

* Backup / migrate pub private keys when upgrading to new files in 2.6 (meshtastic#6096)

* Save a backup of pub/private keys before factory reset

* Fix licensed mode warning

* Unlock spi on else file doesn't exist

* Update device-ui

* Update protos and device-ui

* [create-pull-request] automated change (meshtastic#6129)

Co-authored-by: thebentern <9000580+thebentern@users.noreply.github.com>

* Proto

* [create-pull-request] automated change (meshtastic#6131)

* Proto update for backup

* [create-pull-request] automated change (meshtastic#6133)

Co-authored-by: thebentern <9000580+thebentern@users.noreply.github.com>

* Update protobufs

* Space

* [create-pull-request] automated change (meshtastic#6144)

Co-authored-by: thebentern <9000580+thebentern@users.noreply.github.com>

* Protos

* [create-pull-request] automated change (meshtastic#6152)

Co-authored-by: thebentern <9000580+thebentern@users.noreply.github.com>

* Updeet

* device-ui lib update

* fix channel OK button

* device-lib update: fix settings panel -> no scrolling

* device-ui lib: last minute update

* defined(SENSECAP_INDICATOR)

* MUI hot-fix pub/priv keys

* MUI hot-fix username dialog

* MUI: BT programming mode button

* Update protobufs

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: GUVWAF <78759985+GUVWAF@users.noreply.github.com>
Co-authored-by: GUVWAF <thijs@havinga.eu>
Co-authored-by: Thomas Göttgens <tgoettgens@gmail.com>
Co-authored-by: Tom Fifield <tom@tomfifield.net>
Co-authored-by: mverch67 <manuel.verch@gmx.de>
Co-authored-by: Manuel <71137295+mverch67@users.noreply.github.com>
Co-authored-by: todd-herbert <herbert.todd@gmail.com>
Co-authored-by: Jason Murray <15822260+scruplelesswizard@users.noreply.github.com>
Co-authored-by: Jason Murray <jason@chaosaffe.io>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Jonathan Bennett <jbennett@incomsystems.biz>
Co-authored-by: Austin <vidplace7@gmail.com>
Co-authored-by: virgil <virgil.wang.cj@gmail.com>
Co-authored-by: Mark Trevor Birss <markbirss@gmail.com>
Co-authored-by: Kalle Lilja <15094562+ThatKalle@users.noreply.github.com>
Co-authored-by: rcarteraz <robert.l.carter2@gmail.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

6 participants