* Add battery level with lookup table
now uses a lookup table to better calculate battery level of different cells
* LifePo4 and PB battery table - added voltage filter
removed delay from adc reading, added a software filter to smooth out voltage readings. In those applications battery would last hours to days, no sudden change should be expected so a less frequent voltage reading or a more aggressive filtering could be done.
Note: to speed up convergence i initiliazied the last value to the minimum voltage, there are other and better ways to init the filter.
Added LiFePO4 and PB open circuit volta battery tables,
* Fixed ADC_CTRL , Checks for valid ADC readings
line 230/386 For heltec v3 and heltec tracker a different approach was used with the ADC_CTRL pin, now is more uniform using the same code for the 3 boards.
line 236 Check if the raw reading we are getting is Valid or not, count only the valid readings. This could lead to a division by 0 (improbable) so that's why at line 258 there is a check for that.
* updated OCV values
updated value to not OCV but to very low current, almost the same anyway
* Added Alkaline/Nimh voltage curve
Added Alkaline/Nimh voltage curve for AA/AAA and similar cells
* updates variants for new capacity measurement
* trunk reformatting
* trunk fmt
* Add LTO chemistry
---------
Co-authored-by: Ben Meadors <benmmeadors@gmail.com>
Co-authored-by: code8buster <20384924+code8buster@users.noreply.github.com>
* Portduino multiple logging levels
* Fixes based on GPSFan work
* Fix derped logic
* Correct size field for AID message
* Reformat to add comments, beginning of GPS rework
* Update PM2 message for Neo-6
* Correct ECO mode logic as ECO mode is only for Neo-6
* Cleanup ubx.h add a few more comments
* GPS rework, changes for M8 and stub for M10
* Add VALSET commands for u-blox M10 receivers
* Add VALSET commands for u-blox M10 receivers
tweak M8 commands
add comments for VALSET configuration commands
* Add commands to init M10 receivers,
tweak the M8 init sequence, this is a WIP as there are still some issues during init.
Add M10 version of PMREQ.
* Add wakeup source of uartrx to PMREQ_10
The M10 does not respond to commands when asleep,
may need to do this for the M8 as well
* Enable NMEA messages on USB port.
Normally, it is a good idea to disable messages on unused ports.
Native Linux needs to be able to use GNSS modules connected via
via either serial or USB.
In the future I2C connections may be required, but are not enabled for now.
---------
Co-authored-by: Jonathan Bennett <jbennett@incomsystems.biz>
Co-authored-by: Ben Meadors <benmmeadors@gmail.com>
* StoreForward updates
- Send history in "text" variant
- Don't send history the client already got
- Check if PSRAM is full
- More sensible defaults
* Set `TEXT_BROADCAST` or `TEXT_DIRECT` RequestResponse tag
* feat: E-Ink "Dynamic Partial" (#3193)
Use a mixture of full refresh, partial refresh, and skipped updates, balancing urgency and display health.
Co-authored-by: Ben Meadors <benmmeadors@gmail.com>
* [create-pull-request] automated change (#3209)
Co-authored-by: thebentern <thebentern@users.noreply.github.com>
* Reset `last_index` if history was cleared, e.g. by reboot
---------
Co-authored-by: Ben Meadors <benmmeadors@gmail.com>
Co-authored-by: todd-herbert <herbert.todd@gmail.com>
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: thebentern <thebentern@users.noreply.github.com>
Co-authored-by: Garth Vander Houwen <garthvh@yahoo.com>
* Portduino multiple logging levels
* Fixes based on GPSFan work
* Fix derped logic
* Correct size field for AID message
* Reformat to add comments, beginning of GPS rework
* Update PM2 message for Neo-6
* Correct ECO mode logic as ECO mode is only for Neo-6
* Cleanup ubx.h add a few more comments
* GPS rework, changes for M8 and stub for M10
* Add VALSET commands for u-blox M10 receivers
* Add VALSET commands for u-blox M10 receivers
tweak M8 commands
add comments for VALSET configuration commands
* Add commands to init M10 receivers,
tweak the M8 init sequence, this is a WIP as there are still some issues during init.
Add M10 version of PMREQ.
* Add wakeup source of uartrx to PMREQ_10
The M10 does not respond to commands when asleep,
may need to do this for the M8 as well
---------
Co-authored-by: Jonathan Bennett <jbennett@incomsystems.biz>
Co-authored-by: Ben Meadors <benmmeadors@gmail.com>
Fixed ESP32 ADC resolution bug introduced by #3184 as esp32 analog resolution is already set some line of code before to 12 bit default.
For our usage wouldn't be faster to use 10 bit? .
Use a mixture of full refresh, partial refresh, and skipped updates, balancing urgency and display health.
Co-authored-by: Ben Meadors <benmmeadors@gmail.com>
* compiling w/o e-ink display
* pinout changes
* progress getting LoRa and LCD working
* fix for bootloader, gps pins
* add canary to build matrix
* merge with main
* fix build by excluding BellModem in RadioLib
* fixes for GPS
* Fix LED_BLUE and GPS RX/TX pins
* Variant changes for merge
* make GPS baud rate configurable
* fix debug config
* Canary v1.2 changes
* Fixes for GPS
* pass trunk check
* bump protobufs to master
* update build flags to use CANARYONE enum
* use canaryone throughout for consistency.
* #define 0 is still defined
* add back .vscode/extensions.json
* bump protobufs
* revert manual change to generated file
---------
Co-authored-by: Steven Osborn <steven@lolsborn.com>
E-ink panel is DEPG0213BNS800. Otherwise, identical to v1.1 (?)
Partial refresh supported, but not implemented in this commit.
Co-authored-by: Ben Meadors <benmmeadors@gmail.com>
* Fix getting channel name from MQTT topic
* Allow specifying channel index in JSON field "channel" for downlink
Still requires JSON message to be published to channel named "mqtt"
* Make non-breaking if someone adds another slash
* Portduino multiple logging levels
* Fixes based on GPSFan work
* Fix derped logic
* Correct size field for AID message
* Reformat to add comments, beginning of GPS rework
* Update PM2 message for Neo-6
* Correct ECO mode logic as ECO mode is only for Neo-6
* Cleanup ubx.h add a few more comments
* GPS rework, changes for M8 and stub for M10
---------
Co-authored-by: Jonathan Bennett <jbennett@incomsystems.biz>
Co-authored-by: Ben Meadors <benmmeadors@gmail.com>
* Fix: mark packet via MQTT as ACKed only after we sent it out via LoRa
* Don't need to check for broadcast, DMs also get implicit ACKs
---------
Co-authored-by: Ben Meadors <benmmeadors@gmail.com>
* Portduino multiple logging levels
* Fixes based on GPSFan work
* Fix derped logic
* Correct size field for AID message
* Reformat to add comments, beginning of GPS rework
* Update PM2 message for Neo-6
* Correct ECO mode logic as ECO mode is only for Neo-6
* Cleanup ubx.h add a few more comments
---------
Co-authored-by: Jonathan Bennett <jbennett@incomsystems.biz>
Co-authored-by: Ben Meadors <benmmeadors@gmail.com>
* feat(variants): Add support for TXCO on TLORA_V2_1_6 devices
* chore: remove long comment
* feat(variants): Add tlora-v2-1-1_6-tcxo to build matrix
* feat(variants): Use RADIOLIB_NC as DIO1 pin for tlora_v2_1_16 with TXCO
* Use generic naming scheme, add variant to build envs
---------
Co-authored-by: Ben Meadors <benmmeadors@gmail.com>
Co-authored-by: code8buster <20384924+code8buster@users.noreply.github.com>
* Isolate esp32 adc logic gymnastics, try simplifying getBattVoltage
* Set sense resolution for pico platforms
* try silencing cppcheck when variant has no battery pin
* ADC channel for esp-idf calibration
* Missed an rp2040 device
---------
Co-authored-by: Ben Meadors <benmmeadors@gmail.com>
* Add debug options for RP2040
* Rename: "observed" should be plural: "observables"
* PhoneAPI: return failure on timeout
In `onNotify()`, when disconnected, PhoneAPI removed itself from the list of observers that was looped through in `notifyObservers()`. We should exit that loop in that case.
* Add Chatter 2 default_envs
* Add Chatter 2 to varients
* Add Chatter 2 specific code to esp32 platform code
* Parameterize TFT_INVERT for Chatter 2 and specify setRotation to 1
* Fix formatting to make Trunk happy
* Remove commented out #define USE_LCC68
* Fix formatting again
* Add chatter2 to the CI matrix
---------
Co-authored-by: code8buster <20384924+code8buster@users.noreply.github.com>
* fix: allow MQTT `encryption_enabled` with `json_enabled`
* fix: copy decoded MeshPacket and release memory after use
* fix: use `packetPool` allocCopy and release methods
---------
Co-authored-by: Ben Meadors <benmmeadors@gmail.com>
* Mark packets received via MQTT and add option to ignore them
* Don't send packets received via MQTT back into MQTT
Generate implicit ACK for packets we as an MQTT gateway sent
---------
Co-authored-by: Ben Meadors <benmmeadors@gmail.com>
* Move to Portduino's getMacAddr()
* Add ST7735/S screen support
* Push Raspbian support into native target
* Remove latent pigpio references.
* CardKB defensive programming
* Adds configurable spidev
* Fixes to build on Fedora 40
* ENUMs are not #defines. Pull latest portduino
* Add more configuration options for SPI displays
* Add config.yaml option to set DIO3_TCXO_VOLTAGE
* change tft clear() to fillScreen()
Maintains compatability with ESPI driver.
* Adds TXen and RXen pins to portduino
* Add -c --config options to specify config file
* Fail when a specified config file is unavailable
---------
Co-authored-by: Ben Meadors <benmmeadors@gmail.com>
* Attempts at getting the Heltec Wireless Paper eink operational
* Bogus comment
* Fixing Support For Heltec Wireless Paper
---------
Co-authored-by: NfN Orange <orange@reveb.la>
* Portduino reboot
* separate blocks
---------
Co-authored-by: Jonathan Bennett <jbennett@incomsystems.biz>
Co-authored-by: Ben Meadors <benmmeadors@gmail.com>
* WIP
* ESP8266 SAM fun
* I2S audio / ext. notification module
* Remove
* Protos
* Add use_i2s_as_buzzer from protos
* Fixes
* Stuff
* Thing
* Ext. Notification working(ish)
* Remove SAM commented code
* Trunk upgrade
* Trunk
* Fixes
* Slow not fast... :-|
* T-Deck and T-Watch don't use normal buttons
* Stop ext. notification nagging with touchscreen as well
* Add button gpio back for T-Deck, but guard against long-press during ext. notification
* Ext. notification wrap up
* Better place to guard against long-press false positives
* Adjust default gain and guard against non-i2s devices referencing audio-thread
* Simplify guard logic with a boolean
* Supress uninitMemberVar
* Protos merge got out of wack
* Trunk resolution
* Remove extra crap
* Cleanup and thread-interval
* Default to alert message buzzer and add nag timeout
* Formatting
- only works if we don't have a phone connected, but that is probably dsired
- this will send a copy of device-originating text messgaes to a connected phone. Breaking change.
- this will iterate the tophone queue by deconstructing and reconstructing it every time we look for an ID. Probably also mangles the queue oder since it aborts when a ID is found.
- Can we navigate the packet pool instead? If so, how?
- Let's keep this in draft state for now
* Fix typo in GNSS_MODEL defination and usages for the UC6580
Correct the $CFGSYS init string for the UC6580 to init the receiver for:
GPS L1 & L5 + BDS B1I & B2a + GLONASS L1 + GALILEO E1 & E5a + SBAS
* Reduce GNSS serial traffic on Helted Wireless Tracker
Turn off GSV and NOTIFY __TXT messages as neither are
necessary to Meshtastic operation.
* End wire if we find no i2c devices
* Set tx-power to 0 on nrf bluetooth shutdown
* Change polling interval of PowerFSM to 100ms instead of 10ms
* Guard 3v3
* Fix time lost on the Pico W right after NTP
Shouldn't check for `#ifdef` as it will always be defined, but might be set to 0
* Handle reconnect for Wi-Fi on RP2040
* Update arduino-core for Wi-Fi + FreeRTOS fixes
---------
Co-authored-by: Ben Meadors <benmmeadors@gmail.com>
* Pico W: Initial WiFi support: connects, but freezes after a while
* Update arduino-pico core to fix hang with Wi-Fi
* Add `picow` to workflow since it's different from `pico` now
* Show Wi-Fi frame on screen for all devices with Wi-Fi
* Pico W: Disable mDNS as it's unsupported with FreeRTOS
* Fix printing IP address
* Fix Raspbian build
* Pico W: Initial WiFi support: connects, but freezes after a while
* Update arduino-pico core to fix hang with Wi-Fi
* Add `picow` to workflow since it's different from `pico` now
* Each pin individually
* Correction
---------
Co-authored-by: Jonathan Bennett <jbennett@incomsystems.biz>
Co-authored-by: Ben Meadors <benmmeadors@gmail.com>
* Enable IO2 toggling on RAK if the coast is clear
* Guard against monteops target which doesn't use 3V3 pin
* Also check for en_gpio = 0 to avoid re-setting the value
* Add support for the rak10701 board, no touch
* Moved tftblack fillin and changed teh src flags
* Added rak10701 to platformio.ini
* Add USB detection to RAK4631 units.
* Eliminate spurious symbol in comment field.
---------
Co-authored-by: Ben Meadors <benmmeadors@gmail.com>
* Add configuration via /etc/meshtastic/config.yaml
* Move example config, support more locations
* Fix config check
* Use access() to check for config file presence
* Throw an error and exit on radio init fail
* Adds error check for reading Bluetooth MAC
* Settle on meshtasticd, add install script
* Shell fixes
* Fine. I'll put it back and then disable you
* Get wrekt, shellchekt
* Firat attempt at adding raspbian CI build
* Tickle the workflow
* Beatings will continue til morale improves
* Permissions are overrated
---------
Co-authored-by: Jonathan Bennett <jbennett@incomsystems.biz>
* Add support for the rak10701 board, no touch
* Moved tftblack fillin and changed teh src flags
* Added rak10701 to platformio.ini
---------
Co-authored-by: Ben Meadors <benmmeadors@gmail.com>
* Refactor away some duplication
* Refactor preset names to display formatter method
* Remove unused screen brightness adjustment and extract wifi disconnect reason name to display formatter method
* Tronk
* Let's be more clear with this naming
* Effed
* DisplayFormatters static class and use native wifi disconnect reason names method
* git mv file so casing should match now
* Include titlecase
* Trunk
* Guard-clause channel util. to reduce nesting
* Try-fix PhoneAPI position not updating
* Trunk
* Missed it
* Really disable GPS when asked to
---------
Co-authored-by: Jonathan Bennett <jbennett@incomsystems.biz>
* Fix for T-Beam 1.2 GPS, with DEBUG enabled
* Don't break other devices
* Saving GPS data on this breaks on next boot. Fix.
* derp
* disable the extra verbosity
* Try the same sort of factory reset as the Lilygo image
* Catch GPS reboots and squash
* trunk
* GPS
---------
Co-authored-by: Ben Meadors <benmmeadors@gmail.com>
* Populate the position log entries with data fields
includes datafields with no data as 0
* trunk check formatted.
---------
Co-authored-by: Ben Meadors <benmmeadors@gmail.com>
* Support for SerialModule on RP2040
* Remove one !defined too many
* Increase serial RX_BUFFER: more reliable for long packets
Even results into an error for ESP32
---------
Co-authored-by: Ben Meadors <benmmeadors@gmail.com>
* Fix compression: encode to bytes after `decoded` is modified
* Change payload size to decompressed length
---------
Co-authored-by: Ben Meadors <benmmeadors@gmail.com>
* Refactor GPS to not probe if pins not defined
* Use Named Constructor to clean up code
* Move doGPSPowerSave to GPS class
* Make sure to set GPS awake on triple-click
* Cleanup and remove dead code
* Rename GPS_PIN_WAKE to GPS_PIN_STANDBY
* Actually put GPS to sleep between fixes
* add GPS_POWER_TOGGLE for heltec-tracker and t-deck
* Change GPS_THREAD_INTERVAL to 200 ms
* More dead code, compiler warnings, and add returns
* Add Number of sats to log output
* Add pgs enable and triple-click config
* Track average GPS fix time to judge low-power time
* Feed PositionModule on GPS fix
* Don't turn off the 3v3_s line on RAK4631
when the rotary is present.
* Add GPS power standbyOnly option
* Delay setting time currentQuality
to avoid strange log message.
* Typos, comments, and remove unused variable
* Short-circuit the setAwake logic on GPS disable
* heltec-tracker 0.3 GPS power saving
* set en_gpio to defined state
* Fix fixed_position logic with GPS disabled
* Don't process GPS serial when not isAwake
* Add quirk for Heltec Tracker GPS powersave
---------
Co-authored-by: Ben Meadors <benmmeadors@gmail.com>
Co-authored-by: mverch67 <manuel.verch@gmx.de>
Co-authored-by: Manuel <71137295+mverch67@users.noreply.github.com>
* Use UINT32_MAX to indicate no configured GPS
* Refactor GPS to not probe if pins not defined
* Minor cleanups related to rework
* Use Named Constructor to clean up code
* Actually disable the GPS thread
* Don't actually disable the GPS thread
* Move doGPSPowerSave to GPS class
* Make sure to set GPS awake on triple-click
---------
Co-authored-by: Ben Meadors <benmmeadors@gmail.com>
* Update variant.h
Add second i2c channel on external connector for Station G1
* Create trunk-check.yml
* Fix typo in logging
Corrected typo in pb_msgdesc logging for packets failing to be decoded.
---------
Co-authored-by: Ben Meadors <benmmeadors@gmail.com>
* First attempt at lazy config of GPS
* More GPS rework
Break GPS init into smaller, interruptable steps
Move more GPS commands into ubx.h
Combine Setup functions
* Move the rest of UBX messages to ubs.h