2023-11-18 08:12:34 -06:00
|
|
|
#pragma once
|
2024-07-28 19:49:10 -05:00
|
|
|
#include <fstream>
|
2023-11-18 08:12:34 -06:00
|
|
|
#include <map>
|
2025-03-30 21:47:15 -04:00
|
|
|
#include <unordered_map>
|
2023-11-18 08:12:34 -06:00
|
|
|
|
2025-08-18 16:33:52 -05:00
|
|
|
#include "LR11x0Interface.h"
|
|
|
|
|
#include "Module.h"
|
2024-12-20 17:34:02 -06:00
|
|
|
#include "platform/portduino/USBHal.h"
|
|
|
|
|
|
2025-03-30 21:47:15 -04:00
|
|
|
// Product strings for auto-configuration
|
|
|
|
|
// {"PRODUCT_STRING", "CONFIG.YAML"}
|
|
|
|
|
// YAML paths are relative to `meshtastic/available.d`
|
2025-08-20 14:18:20 -05:00
|
|
|
inline const std::unordered_map<std::string, std::string> configProducts = {
|
|
|
|
|
{"MESHTOAD", "lora-usb-meshtoad-e22.yaml"},
|
|
|
|
|
{"MESHSTICK", "lora-meshstick-1262.yaml"},
|
|
|
|
|
{"MESHADV-PI", "lora-MeshAdv-900M30S.yaml"},
|
|
|
|
|
{"MeshAdv Mini", "lora-MeshAdv-Mini-900M22S.yaml"},
|
|
|
|
|
{"POWERPI", "lora-MeshAdv-900M30S.yaml"},
|
|
|
|
|
{"RAK6421-13300-S1", "lora-RAK6421-13300-slot1.yaml"},
|
|
|
|
|
{"RAK6421-13300-S2", "lora-RAK6421-13300-slot2.yaml"}};
|
2025-03-30 21:47:15 -04:00
|
|
|
|
2023-12-12 20:27:31 -06:00
|
|
|
enum configNames {
|
2025-01-12 20:40:25 +01:00
|
|
|
default_gpiochip,
|
|
|
|
|
cs_pin,
|
|
|
|
|
cs_line,
|
|
|
|
|
cs_gpiochip,
|
|
|
|
|
irq_pin,
|
|
|
|
|
irq_line,
|
|
|
|
|
irq_gpiochip,
|
|
|
|
|
busy_pin,
|
|
|
|
|
busy_line,
|
|
|
|
|
busy_gpiochip,
|
|
|
|
|
reset_pin,
|
|
|
|
|
reset_line,
|
|
|
|
|
reset_gpiochip,
|
|
|
|
|
txen_pin,
|
|
|
|
|
txen_line,
|
|
|
|
|
txen_gpiochip,
|
|
|
|
|
rxen_pin,
|
|
|
|
|
rxen_line,
|
|
|
|
|
rxen_gpiochip,
|
|
|
|
|
sx126x_ant_sw_pin,
|
|
|
|
|
sx126x_ant_sw_line,
|
|
|
|
|
sx126x_ant_sw_gpiochip,
|
2025-01-29 06:51:26 -05:00
|
|
|
sx126x_max_power,
|
|
|
|
|
sx128x_max_power,
|
|
|
|
|
lr1110_max_power,
|
|
|
|
|
lr1120_max_power,
|
|
|
|
|
rf95_max_power,
|
2023-12-12 20:27:31 -06:00
|
|
|
dio2_as_rf_switch,
|
2024-01-12 02:00:31 -06:00
|
|
|
dio3_tcxo_voltage,
|
2025-03-30 21:47:15 -04:00
|
|
|
use_simradio,
|
|
|
|
|
use_autoconf,
|
2023-12-12 20:27:31 -06:00
|
|
|
use_rf95,
|
2025-01-12 20:40:25 +01:00
|
|
|
use_sx1262,
|
|
|
|
|
use_sx1268,
|
2023-12-18 02:05:04 +02:00
|
|
|
use_sx1280,
|
2024-12-04 13:39:02 +02:00
|
|
|
use_lr1110,
|
|
|
|
|
use_lr1120,
|
|
|
|
|
use_lr1121,
|
2025-01-12 20:40:25 +01:00
|
|
|
use_llcc68,
|
2024-12-20 17:34:02 -06:00
|
|
|
lora_usb_serial_num,
|
|
|
|
|
lora_usb_pid,
|
|
|
|
|
lora_usb_vid,
|
Unify the native display config between legacy display and MUI (#6838)
* Add missed include
* Another Warning fix
* Add another HAS_SCREEN
* Namespace fixes
* Removed depricated destination types and re-factored destination screen
* Get rid of Arduino Strings
* Clean up after Copilot
* SixthLine Def, Screen Rename
Added Sixth Line Definition Screen Rename, and Automatic Line Adjustment
* Consistency is hard - fixed "Sixth"
* System Frame Updates
Adjusted line construction to ensure we fit maximum content per screen.
* Fix up notifications
* Add a couple more ifdef HAS_SCREEN lines
* Add screen->isOverlayBannerShowing()
* Don't forget the invert!
* Adjust Nodelist Center Divider
Adjust Nodelist Center Divider
* Fix variable casting
* Fix entryText variable as empty before update to fix validation
* Altitude is int32_t
* Update PowerTelemetry to have correct data type
* Fix cppcheck warnings (#6945)
* Fix cppcheck warnings
* Adjust logic in Power.cpp for power sensor
---------
Co-authored-by: Jason P <applewiz@mac.com>
* More pixel wrangling so things line up NodeList edition
* Adjust NodeList alignments and plumb some background padding for a possible title fix
* Better alignment for banner notifications
* Move title into drawCommonHeader; initial screen tested
* Fonts make spacing items difficult
* Improved beeping booping and other buzzer based feedback (#6947)
* Improved beeping booping and other buzzer based feedback
* audible button feedback (#6949)
* Refactor
---------
Co-authored-by: todd-herbert <herbert.todd@gmail.com>
* Sandpapered the corners of the notification popup
* Finalize drawCommonHeader migration
* Update Title of Favorite Node Screens
* Update node metric alignment on LoRa screen
* Update the border for popups to separate it from background
* Update PaxcounterModule.cpp with CommonHeader
* Update WiFi screen with CommonHeader and related data reflow
* It was not, in fact, pointing up
* Fix build on wismeshtap
* T-deck trackball debounce
* Fix uptime on Device Focused page to actually detail
* Update Sys screen for new uptime, add label to Freq/Chan on LoRa
* Don't display DOP any longer, make Uptime consistent
* Revert Uptime change on Favorites, Apply to Device Focused
* Label the satelite number to avoid confusion
* Boop boop boop boop
* Correct GPS positioning and string consistency across strings for GPS
* Fix GPS text alignment
* Enable canned messages by default
* Don't wake screen on new nodes
* Cannedmessage list emote support added
* Fn+e emote picker for freetext screen
* Actually block CannedInput actions while display is shown
* Add selection menu to bannerOverlay
* Off by one
* Move to unified text layouts and spacing
* Still my Fav without an "e"
* Fully remove EVENT_NODEDB_UPDATED
* Simply LoRa screen
* Make some char pointers const to fix compilation on native targets
* Update drawCompassNorth to include radius
* Fix warning
* button thread cleanup
* Pull OneButton handling from PowerFSM and add MUI switch (#6973)
* Trunk
* Onebutton Menu Support
* Add temporary clock icon
* Add gps location to fsi
* Banner message state reset
* Cast to char to satisfy compiler
* Better fast handling of input during banner
* Fix warning
* Derp
* oops
* Update ref
* Wire buzzer_mode
* remove legacy string->print()
* Only init screen if one found
* Unsigned Char
* More buttonThread cleaning
* screen.cpp button handling cleanup
* The Great Event Rename of 2025
* Fix the Radiomaster
* Missed trackball type change
* Remove unused function
* Make ButtonThread an InputBroker
* Coffee hadn't kicked in yet
* Add clock icon for Navigation Bar
* Restore clock screen definition code - whoops
* ExternalNotifications now observe inputBroker
* Clock rework (#6992)
* Move Clock bits into ClockRenderer space
* Rework clock into all device navigation
* T-Watch Actually Builds Different
* Compile fix
---------
Co-authored-by: Jonathan Bennett <jbennett@incomsystems.biz>
* Add AM/PM to Digital Clock
* Flip Seconds and AM/PM on Clock Display
* Tik-tok pixels are hard
* Fix builds on Thinknode M1
* Check for GPS and don't crash
* Don't endif til the end
* Rework the OneButton thread to be much less of a mess. (#6997)
* Rework the OneButton thread to be much less of a mess. And break lots of targets temporarily
* Update src/input/ButtonThread.h
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
* fix GPS toggle
* Send the shutdown event, not just the kbchar
* Honor the back button in a notificaiton popup
* Draw the right size box for popup with options
* Try to un-break all the things
---------
Co-authored-by: Ben Meadors <benmmeadors@gmail.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
* 24-hour Clock Should have leading zero, but not 12-hour
* Fixup some compile errors
* Add intRoutine to ButtonThread init, to get more responsive user button back
* Add Timezone picker
* Fix Warning
* Optionally set the initial selection for the chooser popup
* Make back buttons work in canned messages
* Drop the wrapper classes
* LonPressTime now configurable
* Clock Frame can not longer be blank; just add valid time
* Back buttons everywhere!
* Key Verification confirm banner
* Make Elecrow M* top button a back button
* Add settings saves
* EInk responsiveness fixes
* Linux Input Fixes
* Add Native Trackball/Joystick support, and move UserButton to Input
* No Flight Stick Mode
* Send input event
* Add Channel Utilization to Device Focused frame
* Don't shift screens when we draw new ones
* Add showOverlayBanner arguments to no-op
* trunk
* Default Native trackball to NC
* Fix crash in simulator mode
* Add longLong button press
* Get the args right
* Adjust Bluetooth Pairing Screen to account for bottom navigation.
* Trackball everywhere, and unPhone buttons
* Remap visionmaster secondary button to TB_UP
* Kill ScanAndSelect
* trunk
* No longer need the canned messages input filter
* All Canned All the time
* Fix stm32 compile error regarding inputBroker
* Unify tft lineheights (#7033)
* Create variable line heights based upon SCREEN_HEIGHT
* Refactor textPositions into method -> getTextPositions
* Update SharedUIDisplay.h
---------
Co-authored-by: Jason P <applewiz@mac.com>
* Adjust top distance for larger displays
* Adjust icon sizes for larger displays
* Fix Paxcounter compile errors after code updates
* Pixel wrangling to make larger screens fit better
* Alert frame has precedence over banner -- for now
* Unify on ALT_BUTTON
* Align AM/PM to the digit, not the segment on larger displays
* Move some global pin defines into configuration.h
* Scaffolding for BMM150 9-axis gyro
* Alt button behavior
* Don't add the blank GPS frames without HAS_GPS
* EVENT_NODEDB_UPDATED has been retired
* Clean out LOG_WARN messages from debugging
* Add dismiss message function
* Minor buttonThread cleanup
* Add BMM150 support
* Clean up last warning from dev
* Simplify bmm150 init return logic
* Add option to reply to messages
* Add minimal menu upon selecting home screen
* Move Messages to slot 2, rename GPS to Position, move variables nearer functional usage in Screen.cpp
* Properly dismiss message
* T-Deck Trackball press is not user button
* Add select on favorite frame to launch cannedMessage DM
* Minor wording change
* Less capital letters
* Fix empty message check, time isn't reliable
* drop dead code
* Make UIRenderer a static class instead of namespace
* Fix the select on favorite
* Check if message is empty early and then 'return'
* Add kb_found, and show the option to launch freetype if appropriate
* Ignore impossible touchscreen touches
* Auto scroll fix
* Move linebreak after "from" for banners to maximize screen usage.
* Center "No messages to show" on Message frame
* Start consolidating buzzer behavior
* Fixed signed / unsigned warning
* Cast second parameter of max() to make some targets happy
* Cast kbchar to (char) to make arduino string happy
* Shorten the notice of "No messages"
* Add buzzer mode chooser
* Add regionPicker to Lora icon
* Reduce line spacing and reorder Position screen to resolve overlapping issues
* Update message titles, fix GPS icons, add Back options
* Leftover boops
* Remove chirp
* Make the region selection dismissable when a region is already set
* Add read-aloud functionality on messages w/ esp8266sam
* "Last Heard" is a better label
* tweak the beep
* 5 options
* properly tear down freetext upon cancel
* de-convelute canned messages just a bit
* Correct height of Mail icon in navigation bar
* Remove unused warning
* Consolidate time methods into TimeFormatters
* Oops
* Change LoRa Picker Cancel to Back
* Tweak selection characters on Banner
* Message render not scrolling on 5th line
* More fixes for message scrolling
* Remove the safety next on text overflow - we found that root cause
* Add pin definitions to fix compilation for obscure target
* Don't let the touchscreen send unitialized kbchar values
* Make virtual KB just a bit quicker
* No more double tap, swipe!
* Left is left, and Right is right
* Update horizontal lightning bolt design
* Move from solid to dashed separator for Message Frame
* Single emote feature fix
* Manually sort overlapping elements for now
* Freetext and clearer choices
* Fix ESP32 InkHUD builds on the unify-tft branch (#7087)
* Remove BaseUI branding
* Capitalization is fun
* Revert Meshtastic Boot Frame Changes
* Add ANZ_433 LoRa region to picker
* Update settings.json
---------
Co-authored-by: HarukiToreda <116696711+HarukiToreda@users.noreply.github.com>
Co-authored-by: Ben Meadors <benmmeadors@gmail.com>
Co-authored-by: Jason P <applewiz@mac.com>
Co-authored-by: todd-herbert <herbert.todd@gmail.com>
Co-authored-by: Thomas Göttgens <tgoettgens@gmail.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2025-06-21 06:36:04 -05:00
|
|
|
userButtonPin,
|
|
|
|
|
tbUpPin,
|
|
|
|
|
tbDownPin,
|
|
|
|
|
tbLeftPin,
|
|
|
|
|
tbRightPin,
|
|
|
|
|
tbPressPin,
|
2025-07-03 06:53:27 -05:00
|
|
|
tbDirection,
|
2024-01-12 02:00:31 -06:00
|
|
|
spidev,
|
2024-08-01 19:29:49 -05:00
|
|
|
spiSpeed,
|
2024-01-28 20:15:29 -06:00
|
|
|
i2cdev,
|
2023-12-12 20:27:31 -06:00
|
|
|
has_gps,
|
|
|
|
|
touchscreenModule,
|
|
|
|
|
touchscreenCS,
|
|
|
|
|
touchscreenIRQ,
|
2024-04-23 14:18:51 -05:00
|
|
|
touchscreenI2CAddr,
|
2024-04-20 02:27:13 +02:00
|
|
|
touchscreenBusFrequency,
|
|
|
|
|
touchscreenRotate,
|
2024-04-17 14:25:52 -05:00
|
|
|
touchscreenspidev,
|
|
|
|
|
displayspidev,
|
2024-04-20 02:27:13 +02:00
|
|
|
displayBusFrequency,
|
2023-12-12 20:27:31 -06:00
|
|
|
displayPanel,
|
|
|
|
|
displayWidth,
|
|
|
|
|
displayHeight,
|
|
|
|
|
displayCS,
|
|
|
|
|
displayDC,
|
2024-04-20 02:27:13 +02:00
|
|
|
displayRGBOrder,
|
2023-12-12 20:27:31 -06:00
|
|
|
displayBacklight,
|
2024-04-20 02:27:13 +02:00
|
|
|
displayBacklightPWMChannel,
|
|
|
|
|
displayBacklightInvert,
|
2023-12-12 20:27:31 -06:00
|
|
|
displayReset,
|
|
|
|
|
displayRotate,
|
2024-04-20 02:27:13 +02:00
|
|
|
displayOffsetRotate,
|
2024-01-12 02:00:31 -06:00
|
|
|
displayOffsetX,
|
|
|
|
|
displayOffsetY,
|
|
|
|
|
displayInvert,
|
2024-01-22 01:27:06 -06:00
|
|
|
keyboardDevice,
|
2024-12-29 01:31:54 +11:00
|
|
|
pointerDevice,
|
Native Webserver (#3343)
* 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>
2024-03-06 16:23:04 -06:00
|
|
|
logoutputlevel,
|
2024-07-28 19:49:10 -05:00
|
|
|
traceFilename,
|
Native Webserver (#3343)
* 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>
2024-03-06 16:23:04 -06:00
|
|
|
webserver,
|
|
|
|
|
webserverport,
|
2024-03-21 09:06:37 -05:00
|
|
|
webserverrootpath,
|
2025-02-01 03:58:58 -05:00
|
|
|
websslkeypath,
|
|
|
|
|
websslcertpath,
|
2024-08-01 19:29:49 -05:00
|
|
|
maxtophone,
|
2024-08-15 17:09:06 -07:00
|
|
|
maxnodes,
|
2024-10-28 21:48:10 -05:00
|
|
|
ascii_logs,
|
2024-12-07 10:29:49 -06:00
|
|
|
config_directory,
|
2025-04-02 07:55:14 -04:00
|
|
|
available_directory,
|
2025-05-15 09:23:37 -05:00
|
|
|
mac_address,
|
|
|
|
|
hostMetrics_interval,
|
2025-05-20 13:04:05 -05:00
|
|
|
hostMetrics_channel,
|
2025-07-11 16:09:59 -05:00
|
|
|
hostMetrics_user_command,
|
|
|
|
|
configDisplayMode,
|
|
|
|
|
has_configDisplayMode
|
2023-12-12 20:27:31 -06:00
|
|
|
};
|
2025-05-01 03:50:30 +02:00
|
|
|
enum { no_screen, x11, fb, st7789, st7735, st7735s, st7796, ili9341, ili9342, ili9486, ili9488, hx8357d };
|
2024-04-20 02:27:13 +02:00
|
|
|
enum { no_touchscreen, xpt2046, stmpe610, gt911, ft5x06 };
|
2024-07-28 19:49:10 -05:00
|
|
|
enum { level_error, level_warn, level_info, level_debug, level_trace };
|
2023-11-18 08:12:34 -06:00
|
|
|
|
2023-12-12 20:27:31 -06:00
|
|
|
extern std::map<configNames, int> settingsMap;
|
|
|
|
|
extern std::map<configNames, std::string> settingsStrings;
|
2024-07-28 19:49:10 -05:00
|
|
|
extern std::ofstream traceFile;
|
2024-12-20 17:34:02 -06:00
|
|
|
extern Ch341Hal *ch341Hal;
|
2025-01-12 20:40:25 +01:00
|
|
|
int initGPIOPin(int pinNum, std::string gpioChipname, int line);
|
2024-10-28 21:48:10 -05:00
|
|
|
bool loadConfig(const char *configPath);
|
2024-12-04 13:39:02 +02:00
|
|
|
static bool ends_with(std::string_view str, std::string_view suffix);
|
2024-12-07 10:29:49 -06:00
|
|
|
void getMacAddr(uint8_t *dmac);
|
2025-05-15 09:23:37 -05:00
|
|
|
bool MAC_from_string(std::string mac_str, uint8_t *dmac);
|
2025-08-18 16:33:52 -05:00
|
|
|
std::string exec(const char *cmd);
|
|
|
|
|
|
|
|
|
|
extern struct portduino_config_struct {
|
|
|
|
|
bool has_rfswitch_table = false;
|
|
|
|
|
uint32_t rfswitch_dio_pins[5] = {RADIOLIB_NC, RADIOLIB_NC, RADIOLIB_NC, RADIOLIB_NC, RADIOLIB_NC};
|
|
|
|
|
Module::RfSwitchMode_t rfswitch_table[8];
|
2025-08-19 14:15:05 -05:00
|
|
|
bool force_simradio = false;
|
2025-08-20 14:18:20 -05:00
|
|
|
bool has_device_id = false;
|
|
|
|
|
uint8_t device_id[16] = {0};
|
2025-08-18 16:33:52 -05:00
|
|
|
} portduino_config;
|