2024-04-29 22:10:49 +12:00
|
|
|
#include "configuration.h"
|
|
|
|
|
|
|
|
|
|
#if !MESHTASTIC_EXCLUDE_ENVIRONMENTAL_SENSOR
|
|
|
|
|
|
2023-11-04 19:07:00 -06:00
|
|
|
#include "../mesh/generated/meshtastic/telemetry.pb.h"
|
2024-03-17 08:18:30 -05:00
|
|
|
#include "Default.h"
|
2023-11-04 19:07:00 -06:00
|
|
|
#include "MeshService.h"
|
|
|
|
|
#include "NodeDB.h"
|
|
|
|
|
#include "PowerFSM.h"
|
2024-05-03 14:26:57 +02:00
|
|
|
#include "PowerTelemetry.h"
|
2023-11-04 19:07:00 -06:00
|
|
|
#include "RTC.h"
|
|
|
|
|
#include "Router.h"
|
|
|
|
|
#include "main.h"
|
|
|
|
|
#include "power.h"
|
|
|
|
|
#include "sleep.h"
|
|
|
|
|
#include "target_specific.h"
|
|
|
|
|
|
|
|
|
|
#define FAILED_STATE_SENSOR_READ_MULTIPLIER 10
|
|
|
|
|
#define DISPLAY_RECEIVEID_MEASUREMENTS_ON_SCREEN true
|
|
|
|
|
|
2024-02-27 19:49:46 +01:00
|
|
|
#include "graphics/ScreenFonts.h"
|
2024-09-23 08:58:14 -05:00
|
|
|
#include <Throttle.h>
|
2023-11-04 19:07:00 -06:00
|
|
|
|
|
|
|
|
int32_t PowerTelemetryModule::runOnce()
|
|
|
|
|
{
|
|
|
|
|
if (sleepOnNextExecution == true) {
|
|
|
|
|
sleepOnNextExecution = false;
|
2024-07-12 09:24:42 -05:00
|
|
|
uint32_t nightyNightMs = Default::getConfiguredOrDefaultMs(moduleConfig.telemetry.power_update_interval,
|
|
|
|
|
default_telemetry_broadcast_interval_secs);
|
2024-11-04 19:15:59 -06:00
|
|
|
LOG_DEBUG("Sleep for %ims, then awake to send metrics again", nightyNightMs);
|
2024-11-12 06:17:26 -06:00
|
|
|
doDeepSleep(nightyNightMs, true, false);
|
2023-11-04 19:07:00 -06:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
uint32_t result = UINT32_MAX;
|
|
|
|
|
/*
|
|
|
|
|
Uncomment the preferences below if you want to use the module
|
|
|
|
|
without having to configure it from the PythonAPI or WebUI.
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
|
|
// moduleConfig.telemetry.power_measurement_enabled = 1;
|
|
|
|
|
// moduleConfig.telemetry.power_screen_enabled = 1;
|
|
|
|
|
// moduleConfig.telemetry.power_update_interval = 45;
|
|
|
|
|
|
|
|
|
|
if (!(moduleConfig.telemetry.power_measurement_enabled)) {
|
|
|
|
|
// If this module is not enabled, and the user doesn't want the display screen don't waste any OSThread time on it
|
|
|
|
|
return disable();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (firstTime) {
|
|
|
|
|
// This is the first time the OSThread library has called this function, so do some setup
|
|
|
|
|
firstTime = 0;
|
|
|
|
|
#if HAS_TELEMETRY && !defined(ARCH_PORTDUINO)
|
|
|
|
|
if (moduleConfig.telemetry.power_measurement_enabled) {
|
2024-11-04 12:16:25 -06:00
|
|
|
LOG_INFO("Power Telemetry: init");
|
2023-11-04 19:07:00 -06:00
|
|
|
// it's possible to have this module enabled, only for displaying values on the screen.
|
|
|
|
|
// therefore, we should only enable the sensor loop if measurement is also enabled
|
|
|
|
|
if (ina219Sensor.hasSensor() && !ina219Sensor.isInitialized())
|
|
|
|
|
result = ina219Sensor.runOnce();
|
Detect charging status by measuring current flow with configured INA 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: https://github.com/meshtastic/firmware/issues/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 https://github.com/meshtastic/firmware/issues/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 e6fb6b115aebb12b31fb93ed9d1508a6109b2f03.
* 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 fc16d9342116235fa86cf6ac163b17125bb4b50e.
* 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>
2024-12-22 05:02:50 +01:00
|
|
|
if (ina226Sensor.hasSensor() && !ina226Sensor.isInitialized())
|
|
|
|
|
result = ina226Sensor.runOnce();
|
2023-11-04 19:07:00 -06:00
|
|
|
if (ina260Sensor.hasSensor() && !ina260Sensor.isInitialized())
|
|
|
|
|
result = ina260Sensor.runOnce();
|
|
|
|
|
if (ina3221Sensor.hasSensor() && !ina3221Sensor.isInitialized())
|
|
|
|
|
result = ina3221Sensor.runOnce();
|
2024-09-25 20:34:53 +10:00
|
|
|
if (max17048Sensor.hasSensor() && !max17048Sensor.isInitialized())
|
|
|
|
|
result = max17048Sensor.runOnce();
|
2023-11-04 19:07:00 -06:00
|
|
|
}
|
|
|
|
|
return result;
|
|
|
|
|
#else
|
|
|
|
|
return disable();
|
|
|
|
|
#endif
|
|
|
|
|
} else {
|
|
|
|
|
// if we somehow got to a second run of this module with measurement disabled, then just wait forever
|
|
|
|
|
if (!moduleConfig.telemetry.power_measurement_enabled)
|
|
|
|
|
return disable();
|
|
|
|
|
|
|
|
|
|
if (((lastSentToMesh == 0) ||
|
2024-09-23 08:58:14 -05:00
|
|
|
!Throttle::isWithinTimespanMs(lastSentToMesh, Default::getConfiguredOrDefaultMsScaled(
|
|
|
|
|
moduleConfig.telemetry.power_update_interval,
|
|
|
|
|
default_telemetry_broadcast_interval_secs, numOnlineNodes))) &&
|
2023-11-04 19:07:00 -06:00
|
|
|
airTime->isTxAllowedAirUtil()) {
|
|
|
|
|
sendTelemetry();
|
2024-09-23 08:58:14 -05:00
|
|
|
lastSentToMesh = millis();
|
|
|
|
|
} else if (((lastSentToPhone == 0) || !Throttle::isWithinTimespanMs(lastSentToPhone, sendToPhoneIntervalMs)) &&
|
2024-08-01 19:29:49 -05:00
|
|
|
(service->isToPhoneQueueEmpty())) {
|
2023-11-04 19:07:00 -06:00
|
|
|
// Just send to phone when it's not our time to send to mesh yet
|
|
|
|
|
// Only send while queue is empty (phone assumed connected)
|
|
|
|
|
sendTelemetry(NODENUM_BROADCAST, true);
|
2024-09-23 08:58:14 -05:00
|
|
|
lastSentToPhone = millis();
|
2023-11-04 19:07:00 -06:00
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
return min(sendToPhoneIntervalMs, result);
|
|
|
|
|
}
|
|
|
|
|
bool PowerTelemetryModule::wantUIFrame()
|
|
|
|
|
{
|
|
|
|
|
return moduleConfig.telemetry.power_screen_enabled;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void PowerTelemetryModule::drawFrame(OLEDDisplay *display, OLEDDisplayUiState *state, int16_t x, int16_t y)
|
|
|
|
|
{
|
|
|
|
|
display->setTextAlignment(TEXT_ALIGN_LEFT);
|
2025-01-06 01:58:10 +01:00
|
|
|
display->setFont(FONT_SMALL);
|
2025-01-20 09:34:54 +01:00
|
|
|
|
2023-11-04 19:07:00 -06:00
|
|
|
if (lastMeasurementPacket == nullptr) {
|
2025-01-06 16:14:52 +01:00
|
|
|
// In case of no valid packet, display "Power Telemetry", "No measurement"
|
|
|
|
|
display->drawString(x, y, "Power Telemetry");
|
2025-01-06 01:58:10 +01:00
|
|
|
display->drawString(x, y += _fontHeight(FONT_SMALL), "No measurement");
|
2023-11-04 19:07:00 -06:00
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
|
2025-01-06 16:14:52 +01:00
|
|
|
// Decode the last power packet
|
2023-11-04 19:07:00 -06:00
|
|
|
meshtastic_Telemetry lastMeasurement;
|
2024-10-06 19:40:06 +08:00
|
|
|
uint32_t agoSecs = service->GetTimeSinceMeshPacket(lastMeasurementPacket);
|
2023-11-04 19:07:00 -06:00
|
|
|
const char *lastSender = getSenderShortName(*lastMeasurementPacket);
|
|
|
|
|
|
2024-09-26 02:09:06 +02:00
|
|
|
const meshtastic_Data &p = lastMeasurementPacket->decoded;
|
2023-11-04 19:07:00 -06:00
|
|
|
if (!pb_decode_from_bytes(p.payload.bytes, p.payload.size, &meshtastic_Telemetry_msg, &lastMeasurement)) {
|
2025-01-06 16:14:52 +01:00
|
|
|
display->drawString(x, y, "Measurement Error");
|
2023-11-04 19:07:00 -06:00
|
|
|
LOG_ERROR("Unable to decode last packet");
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
|
2025-01-06 16:14:52 +01:00
|
|
|
// Display "Pow. From: ..."
|
2025-01-20 09:34:54 +01:00
|
|
|
display->drawString(x, y, "Pow. From: " + String(lastSender) + "(" + String(agoSecs) + "s)");
|
2025-01-06 16:14:52 +01:00
|
|
|
|
2024-09-25 20:34:53 +10:00
|
|
|
// Display current and voltage based on ...power_metrics.has_[channel/voltage/current]... flags
|
|
|
|
|
if (lastMeasurement.variant.power_metrics.has_ch1_voltage || lastMeasurement.variant.power_metrics.has_ch1_current) {
|
2024-06-25 11:26:02 -05:00
|
|
|
display->drawString(x, y += _fontHeight(FONT_SMALL),
|
2025-01-20 09:34:54 +01:00
|
|
|
"Ch1: " + String(lastMeasurement.variant.power_metrics.ch1_voltage, 2) + "V " +
|
|
|
|
|
String(lastMeasurement.variant.power_metrics.ch1_current, 0) + "mA");
|
2024-09-25 20:34:53 +10:00
|
|
|
}
|
|
|
|
|
if (lastMeasurement.variant.power_metrics.has_ch2_voltage || lastMeasurement.variant.power_metrics.has_ch2_current) {
|
2024-06-25 11:26:02 -05:00
|
|
|
display->drawString(x, y += _fontHeight(FONT_SMALL),
|
2025-01-20 09:34:54 +01:00
|
|
|
"Ch2: " + String(lastMeasurement.variant.power_metrics.ch2_voltage, 2) + "V " +
|
|
|
|
|
String(lastMeasurement.variant.power_metrics.ch2_current, 0) + "mA");
|
2024-09-25 20:34:53 +10:00
|
|
|
}
|
|
|
|
|
if (lastMeasurement.variant.power_metrics.has_ch3_voltage || lastMeasurement.variant.power_metrics.has_ch3_current) {
|
2024-06-25 11:26:02 -05:00
|
|
|
display->drawString(x, y += _fontHeight(FONT_SMALL),
|
2025-01-20 09:34:54 +01:00
|
|
|
"Ch3: " + String(lastMeasurement.variant.power_metrics.ch3_voltage, 2) + "V " +
|
|
|
|
|
String(lastMeasurement.variant.power_metrics.ch3_current, 0) + "mA");
|
2023-11-04 19:07:00 -06:00
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
bool PowerTelemetryModule::handleReceivedProtobuf(const meshtastic_MeshPacket &mp, meshtastic_Telemetry *t)
|
|
|
|
|
{
|
|
|
|
|
if (t->which_variant == meshtastic_Telemetry_power_metrics_tag) {
|
|
|
|
|
#ifdef DEBUG_PORT
|
|
|
|
|
const char *sender = getSenderShortName(mp);
|
|
|
|
|
|
2024-09-25 20:34:53 +10:00
|
|
|
LOG_INFO("(Received from %s): ch1_voltage=%.1f, ch1_current=%.1f, ch2_voltage=%.1f, ch2_current=%.1f, "
|
2024-10-14 06:11:43 +02:00
|
|
|
"ch3_voltage=%.1f, ch3_current=%.1f",
|
2023-11-04 19:07:00 -06:00
|
|
|
sender, t->variant.power_metrics.ch1_voltage, t->variant.power_metrics.ch1_current,
|
|
|
|
|
t->variant.power_metrics.ch2_voltage, t->variant.power_metrics.ch2_current, t->variant.power_metrics.ch3_voltage,
|
|
|
|
|
t->variant.power_metrics.ch3_current);
|
|
|
|
|
#endif
|
|
|
|
|
// release previous packet before occupying a new spot
|
|
|
|
|
if (lastMeasurementPacket != nullptr)
|
|
|
|
|
packetPool.release(lastMeasurementPacket);
|
|
|
|
|
|
|
|
|
|
lastMeasurementPacket = packetPool.allocCopy(mp);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return false; // Let others look at this message also if they want
|
|
|
|
|
}
|
|
|
|
|
|
2024-06-23 14:13:59 +02:00
|
|
|
bool PowerTelemetryModule::getPowerTelemetry(meshtastic_Telemetry *m)
|
2023-11-04 19:07:00 -06:00
|
|
|
{
|
|
|
|
|
bool valid = false;
|
2024-06-23 14:13:59 +02:00
|
|
|
m->time = getTime();
|
|
|
|
|
m->which_variant = meshtastic_Telemetry_power_metrics_tag;
|
|
|
|
|
|
2024-09-25 20:34:53 +10:00
|
|
|
m->variant.power_metrics = meshtastic_PowerMetrics_init_zero;
|
2023-11-04 19:07:00 -06:00
|
|
|
#if HAS_TELEMETRY && !defined(ARCH_PORTDUINO)
|
|
|
|
|
if (ina219Sensor.hasSensor())
|
2024-06-23 14:13:59 +02:00
|
|
|
valid = ina219Sensor.getMetrics(m);
|
Detect charging status by measuring current flow with configured INA 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: https://github.com/meshtastic/firmware/issues/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 https://github.com/meshtastic/firmware/issues/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 e6fb6b115aebb12b31fb93ed9d1508a6109b2f03.
* 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 fc16d9342116235fa86cf6ac163b17125bb4b50e.
* 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>
2024-12-22 05:02:50 +01:00
|
|
|
if (ina226Sensor.hasSensor())
|
|
|
|
|
valid = ina226Sensor.getMetrics(m);
|
2023-11-04 19:07:00 -06:00
|
|
|
if (ina260Sensor.hasSensor())
|
2024-06-23 14:13:59 +02:00
|
|
|
valid = ina260Sensor.getMetrics(m);
|
2023-11-04 19:07:00 -06:00
|
|
|
if (ina3221Sensor.hasSensor())
|
2024-06-23 14:13:59 +02:00
|
|
|
valid = ina3221Sensor.getMetrics(m);
|
2024-09-25 20:34:53 +10:00
|
|
|
if (max17048Sensor.hasSensor())
|
|
|
|
|
valid = max17048Sensor.getMetrics(m);
|
2023-11-04 19:07:00 -06:00
|
|
|
#endif
|
|
|
|
|
|
2024-06-23 14:13:59 +02:00
|
|
|
return valid;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
meshtastic_MeshPacket *PowerTelemetryModule::allocReply()
|
|
|
|
|
{
|
|
|
|
|
if (currentRequest) {
|
|
|
|
|
auto req = *currentRequest;
|
|
|
|
|
const auto &p = req.decoded;
|
|
|
|
|
meshtastic_Telemetry scratch;
|
|
|
|
|
meshtastic_Telemetry *decoded = NULL;
|
|
|
|
|
memset(&scratch, 0, sizeof(scratch));
|
|
|
|
|
if (pb_decode_from_bytes(p.payload.bytes, p.payload.size, &meshtastic_Telemetry_msg, &scratch)) {
|
|
|
|
|
decoded = &scratch;
|
|
|
|
|
} else {
|
2024-10-14 06:11:43 +02:00
|
|
|
LOG_ERROR("Error decoding PowerTelemetry module!");
|
2024-06-23 14:13:59 +02:00
|
|
|
return NULL;
|
|
|
|
|
}
|
|
|
|
|
// Check for a request for power metrics
|
|
|
|
|
if (decoded->which_variant == meshtastic_Telemetry_power_metrics_tag) {
|
|
|
|
|
meshtastic_Telemetry m = meshtastic_Telemetry_init_zero;
|
|
|
|
|
if (getPowerTelemetry(&m)) {
|
2024-11-04 19:15:59 -06:00
|
|
|
LOG_INFO("Power telemetry reply to request");
|
2024-06-23 14:13:59 +02:00
|
|
|
return allocDataProtobuf(m);
|
|
|
|
|
} else {
|
|
|
|
|
return NULL;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return NULL;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
bool PowerTelemetryModule::sendTelemetry(NodeNum dest, bool phoneOnly)
|
|
|
|
|
{
|
|
|
|
|
meshtastic_Telemetry m = meshtastic_Telemetry_init_zero;
|
2024-08-14 16:24:28 -05:00
|
|
|
m.which_variant = meshtastic_Telemetry_power_metrics_tag;
|
|
|
|
|
m.time = getTime();
|
2024-06-23 14:13:59 +02:00
|
|
|
if (getPowerTelemetry(&m)) {
|
2024-11-04 19:15:59 -06:00
|
|
|
LOG_INFO("Send: ch1_voltage=%f, ch1_current=%f, ch2_voltage=%f, ch2_current=%f, "
|
2024-10-14 06:11:43 +02:00
|
|
|
"ch3_voltage=%f, ch3_current=%f",
|
2023-11-04 19:07:00 -06:00
|
|
|
m.variant.power_metrics.ch1_voltage, m.variant.power_metrics.ch1_current, m.variant.power_metrics.ch2_voltage,
|
|
|
|
|
m.variant.power_metrics.ch2_current, m.variant.power_metrics.ch3_voltage, m.variant.power_metrics.ch3_current);
|
|
|
|
|
|
|
|
|
|
sensor_read_error_count = 0;
|
|
|
|
|
|
|
|
|
|
meshtastic_MeshPacket *p = allocDataProtobuf(m);
|
|
|
|
|
p->to = dest;
|
|
|
|
|
p->decoded.want_response = false;
|
|
|
|
|
if (config.device.role == meshtastic_Config_DeviceConfig_Role_SENSOR)
|
|
|
|
|
p->priority = meshtastic_MeshPacket_Priority_RELIABLE;
|
|
|
|
|
else
|
2024-03-12 18:21:09 +01:00
|
|
|
p->priority = meshtastic_MeshPacket_Priority_BACKGROUND;
|
2023-11-04 19:07:00 -06:00
|
|
|
// release previous packet before occupying a new spot
|
|
|
|
|
if (lastMeasurementPacket != nullptr)
|
|
|
|
|
packetPool.release(lastMeasurementPacket);
|
|
|
|
|
|
|
|
|
|
lastMeasurementPacket = packetPool.allocCopy(*p);
|
|
|
|
|
if (phoneOnly) {
|
2024-11-04 12:16:25 -06:00
|
|
|
LOG_INFO("Send packet to phone");
|
2024-08-01 19:29:49 -05:00
|
|
|
service->sendToPhone(p);
|
2023-11-04 19:07:00 -06:00
|
|
|
} else {
|
2024-11-04 12:16:25 -06:00
|
|
|
LOG_INFO("Send packet to mesh");
|
2024-08-01 19:29:49 -05:00
|
|
|
service->sendToMesh(p, RX_SRC_LOCAL, true);
|
2023-11-04 19:07:00 -06:00
|
|
|
|
|
|
|
|
if (config.device.role == meshtastic_Config_DeviceConfig_Role_SENSOR && config.power.is_power_saving) {
|
2024-11-04 19:15:59 -06:00
|
|
|
LOG_DEBUG("Start next execution in 5s then sleep");
|
2023-11-04 19:07:00 -06:00
|
|
|
sleepOnNextExecution = true;
|
|
|
|
|
setIntervalFromNow(5000);
|
|
|
|
|
}
|
|
|
|
|
}
|
2024-06-23 14:13:59 +02:00
|
|
|
return true;
|
2023-11-04 19:07:00 -06:00
|
|
|
}
|
2024-06-23 14:13:59 +02:00
|
|
|
return false;
|
2024-04-29 22:10:49 +12:00
|
|
|
}
|
|
|
|
|
|
Detect charging status by measuring current flow with configured INA 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: https://github.com/meshtastic/firmware/issues/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 https://github.com/meshtastic/firmware/issues/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 e6fb6b115aebb12b31fb93ed9d1508a6109b2f03.
* 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 fc16d9342116235fa86cf6ac163b17125bb4b50e.
* 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>
2024-12-22 05:02:50 +01:00
|
|
|
#endif
|