* Move static functions into Screen.h, show compass during calibration
* Move to _fontHeight macro to avoid collision
* Move some alert functions to new alert handler
* Catch missed reboot code
* ESP32 fixes
* Bump esp8266-oled-ssd1306
* Fixes for when a device has no screen
* Use new startAlert(char*) helper class
* Add EINK bits back to alert handling
* Add noop class for no-display devices
---------
Co-authored-by: Ben Meadors <benmmeadors@gmail.com>
* Turn off vscode cmake prompt - we don't use cmake on meshtastic
* Add rak4631_dap variant for debugging with NanoDAP debug probe device.
* The rak device can also run freertos (which is underneath nrf52 arduino)
* Add semihosting support for nrf52840 devices
Initial platformio.ini file only supports rak4630
Default to non TCP for the semihosting log output for now...
Fixes https://github.com/meshtastic/firmware/issues/4135
* fix my botched merge - keep board_level = extra flag for rak3631_dbg
---------
Co-authored-by: Ben Meadors <benmmeadors@gmail.com>
* WIP log characteristic
* Bluetooth logging plumbing
* Characteristic
* Callback
* Check for nullptr
* Esp32 bluetooth impl
* Formatting
* Add thread name and log level
* Add settings guard
* Remove comments
* Field name
* Fixes esp32
* Open it up
* Whoops
* Move va_end past our logic
Board is very similar to the Heltec HT-C62 based boards (Heltec HT62 variant) but due to wiring of SK6812 Neopixel LED to GPIO2 it becomes incompatible due to the regular HT-C62 dev board using a simple LED on the same GPIO. Depends on [protobufs#521](https://github.com/meshtastic/protobufs/pull/521).
Works:
* SK6812 Neopixel on GPIO2
* [GXCAS GXHTV3](https://www.lcsc.com/product-detail/Temperature-Sensors_GXCAS-GXHTV3C_C5441730.html) (SHTC3 compatible)
Won't fix:
* Battery reading - Board has no voltage divider on VBAT (board has a 1.25mm pitch "JST" style connector and a TP4054 charge IC)
* Main thread LED - Board has no LED on simple GPIO
Board schematic: [HRU3601.pdf](https://github.com/user-attachments/files/15874850/HRU3601.pdf)
Signed-off-by: Andrew Yong <me@ndoo.sg>
* Workaround to allow bluetooth disable on NRF52
* Use miminum tx power for bluetooth
* Reorganize
* Instantiate nrf52Bluetooth correctly..
* Change log message
* DOES NOT WORK
* trunk
* DOES NOT WORK
* trunk
* DOES NOT WORK
* trunk
* WIP: LR11x0 non functional interface code. Please don't expect a working firmware out of this! I don't know what i am doing! :-)
* trunk fmt
* use canon toolchain
* update and fix radiolib dependency
* Switch Radiolib back to GIT checkout
* enable tcxo and fix startReceive
* progress
* Correct midjudgement on scope of build defines.
* - enable peripheral power rail during startup init
- fix portduino builds
* add tracker pinout variant
* update to radiolib 6.6.0 API (aka: godmode is not for mere mortals)
* tracker is not so 'extra' any more
---------
Co-authored-by: Ben Meadors <benmmeadors@gmail.com>
* Bump platfomio/espressif32 version to latest 6.7.0
* Fix deprecated constants
* Remove pin defs already defined by the framework
* ESP_EXT1_WAKEUP_ALL_LOW is deprecated for any target except esp32
* Enable LTO and use newlib nano flavor
* Make trunk happy
* Respect build_unflags of base env
* Recover float printfing
* Disable BLE_SM_PAIR_AUTHREQ_SC
* Distribute BLE_SM_PAIR_KEY_DIST_ID too
---------
Co-authored-by: Ben Meadors <benmmeadors@gmail.com>
This seems to fix the ch341 quirk where large packets fail to send. As it can be problematic for other radios, we gate it behind "ch341_quirk" in the config.
* Fix type of nodeNum
Type of nodeNum is NodeNum, not uint
* typo
fixed typo "resumeAdverising()"
* fix missing #include "time.h"
Missing include breaks compilation with gccnoneeabi 12.3.1 for nrf52 targets on windows hosts.
* change type uint to unsigned int
uint is not a standard type. Using uint breaks compilation with gccnoneeabi 12.3.1 for nRF52 targets on windows hosts.
* fix type of channel_num
Type of channel_num should be uint32_t (as this is the type of hash() and numChannels).
Using uint non-standard type uint breaks compilation with gccnoneeabi 12.3.1 for nRF52 targets on windows hosts.
* Update nrf52.ini
Default build type should be "release" as this is the default of platformio.
* Update GPS.cpp
uint to unsigned int
* Add better support for the Adafruit PiTFT 2.8 for Native
* native: Make touch i2c address configurable
* Bump portduino to pick up I2C features
---------
Co-authored-by: Ben Meadors <benmmeadors@gmail.com>
* add new variant: TWC_mesh_v4
* fix trunk format
* fix format under wsl
* change board to TWC_mesh_v4
* change platformio & variant.h properly
---------
Co-authored-by: Ben Meadors <benmmeadors@gmail.com>
This changeset gives us the ability to specify a separate SPI device for the LoRa, Display, and Touchscreen. The changes in Portduino also add support for specifying a new SPI speed for each transaction. All together, this means that we can let the Linux OS manage the CS lines, and also get much faster SPI speeds, leading to better framerates.
* Add multiple SPI devices to put Radio, Display, and Touchscreen on each their own
---------
Co-authored-by: Ben Meadors <benmmeadors@gmail.com>
* remove redundant logic
* Handle special screens for old EInkDisplayClass
* Handle special screens for EInkDynamicDisplay class
* Join an async refresh in progress to avoid skipping screensaver
* attempt trunk fix
* Add MaxNodes to Native
* It compiles...
* Convert nodedb to use new
* Closer but still broken.
* Finally working
* Remove unintended lines
* Don't include a pointer
* Capitalization matters.
* avoid rename in protocol regen
* When trimming the nodeDB, start with a cleanup
* Remove extra cleanupMeshDB() call for now
---------
Co-authored-by: Ben Meadors <benmmeadors@gmail.com>
* Added WebServer/WebServices for Native Linux Meshtastic and web gui
* Fix bug in login functionality
* Added customized config of portdunio.ini with LovyannGFX from marelab repro
* Compile Problem resolved with developer version of LovyanGFX.git
* Compile against dev version
* Fixes to fit into main branch
* Update variant.h, main.cpp, .gitignore, WebServer.cpp, esp32s2.ini, WebServer.h, ContentHandler.cpp, rp2040.ini, nrf52.ini, ContentHelper.cpp, Dockerfile, ContentHandler.h, esp32.ini, stm32wl5e.ini
* Added linux pi std /usr/include dir
* Adding /usr/innclude for Linux compile against native libs that are not hadled by platformio
* Review log level changes & translation
* Update Dockerfile
* Fix Typo & VFS ref. Part1
* Fix Typo & VFS ref.
* Dev Version for ulfius web lib
* Update platformio.ini
* Free VFS path string
* Remove unintended changes
* More unintentional changes
* Make the HTTP server optional on native
* Tune-up for Native web defaults
* Don't modify build system yet
* Remove more unneeded changes
---------
Co-authored-by: marc hammermann <marchammermann@googlemail.com>
Co-authored-by: Ben Meadors <benmmeadors@gmail.com>
Co-authored-by: Thomas Göttgens <tgoettgens@gmail.com>
* Fix Heltec Tracker Screen issues
Fix Heltec Tracker Screen issues like wrong offsets, display size and screen not shutting down.
Divides board into two different envs for 1.0 and 1.1 version PCB
* Helteck wireless tracker default version V1_1
* rename heltec tracker 1.1 - trunk fmt
rename varian of heltec tracker 1.1 to "heltec tracker" to be retro-compatible.
Trunk formatting.
* Heltec Tracker increase Screen update to 3Hz
Heltec Tracker increase Screen update to 3Hz from 1Hz
* 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>
* 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>
* 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>
* 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>
* 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
* 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>
* 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>
* 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>