From 5f38e79b8f02e993c4da5b4eb4c2fc7558eb8e44 Mon Sep 17 00:00:00 2001 From: Jm Casler Date: Wed, 26 Jul 2023 16:34:36 -0700 Subject: [PATCH 01/19] Add documentation to a few areas --- .vscode/extensions.json | 7 ++- src/FSCommon.cpp | 40 ++++++++++++ src/gps/RTC.cpp | 32 +++++++++- src/modules/ExternalNotificationModule.cpp | 19 ++++++ src/modules/RangeTestModule.cpp | 21 +++++-- src/modules/SerialModule.cpp | 30 ++++++++- src/modules/esp32/StoreForwardModule.cpp | 73 +++++++++++++++++++++- 7 files changed, 209 insertions(+), 13 deletions(-) diff --git a/.vscode/extensions.json b/.vscode/extensions.json index 4fc84fa78..080e70d08 100644 --- a/.vscode/extensions.json +++ b/.vscode/extensions.json @@ -2,8 +2,9 @@ // See http://go.microsoft.com/fwlink/?LinkId=827846 // for the documentation about the extensions.json format "recommendations": [ - "ms-vscode.cpptools", - "platformio.platformio-ide", - "trunk.io" + "platformio.platformio-ide" ], + "unwantedRecommendations": [ + "ms-vscode.cpptools-extension-pack" + ] } diff --git a/src/FSCommon.cpp b/src/FSCommon.cpp index a458a9fcf..9b59bdadf 100644 --- a/src/FSCommon.cpp +++ b/src/FSCommon.cpp @@ -1,3 +1,11 @@ +/** + * @file FSCommon.cpp + * @brief This file contains functions for common filesystem operations such as copying, renaming, listing and deleting files and directories. + * + * The functions in this file are used to perform common filesystem operations such as copying, renaming, listing and deleting files and directories. + * These functions are used in the Meshtastic-device project to manage files and directories on the device's filesystem. + * + */ #include "FSCommon.h" #include "configuration.h" @@ -14,6 +22,13 @@ SPIClass SPI1(HSPI); #endif // HAS_SDCARD +/** + * @brief Copies a file from one location to another. + * + * @param from The path of the source file. + * @param to The path of the destination file. + * @return true if the file was successfully copied, false otherwise. + */ bool copyFile(const char *from, const char *to) { #ifdef FSCom @@ -43,6 +58,14 @@ bool copyFile(const char *from, const char *to) #endif } +/** + * Renames a file from pathFrom to pathTo. + * + * @param pathFrom The original path of the file. + * @param pathTo The new path of the file. + * + * @return True if the file was successfully renamed, false otherwise. + */ bool renameFile(const char *pathFrom, const char *pathTo) { #ifdef FSCom @@ -59,6 +82,13 @@ bool renameFile(const char *pathFrom, const char *pathTo) #endif } +/** + * Lists the contents of a directory. + * + * @param dirname The name of the directory to list. + * @param levels The number of levels of subdirectories to list. + * @param del Whether or not to delete the contents of the directory after listing. + */ void listDir(const char *dirname, uint8_t levels, bool del = false) { #ifdef FSCom @@ -154,6 +184,13 @@ void listDir(const char *dirname, uint8_t levels, bool del = false) #endif } +/** + * @brief Removes a directory and all its contents. + * + * This function recursively removes a directory and all its contents, including subdirectories and files. + * + * @param dirname The name of the directory to remove. + */ void rmDir(const char *dirname) { #ifdef FSCom @@ -182,6 +219,9 @@ void fsInit() #endif } +/** + * Initializes the SD card and mounts the file system. + */ void setupSDCard() { #ifdef HAS_SDCARD diff --git a/src/gps/RTC.cpp b/src/gps/RTC.cpp index b80fd04aa..b2d397ed8 100644 --- a/src/gps/RTC.cpp +++ b/src/gps/RTC.cpp @@ -17,6 +17,10 @@ static uint32_t timeStartMsec; // Once we have a GPS lock, this is where we hold the initial msec clock that corresponds to that time static uint64_t zeroOffsetSecs; // GPS based time in secs since 1970 - only updated once on initial lock +/** + * Reads the current date and time from the RTC module and updates the system time. + * @return True if the RTC was successfully read and the system time was updated, false otherwise. + */ void readFromRTC() { struct timeval tv; /* btw settimeofday() is helpful here too*/ @@ -83,7 +87,15 @@ void readFromRTC() #endif } -/// If we haven't yet set our RTC this boot, set it from a GPS derived time +/** + * Sets the RTC (Real-Time Clock) if the provided time is of higher quality than the current RTC time. + * + * @param q The quality of the provided time. + * @param tv A pointer to a timeval struct containing the time to potentially set the RTC to. + * @return True if the RTC was set, false otherwise. + * + * If we haven't yet set our RTC this boot, set it from a GPS derived time + */ bool perhapsSetRTC(RTCQuality q, const struct timeval *tv) { static uint32_t lastSetMsec = 0; @@ -151,6 +163,13 @@ bool perhapsSetRTC(RTCQuality q, const struct timeval *tv) } } +/** + * Sets the RTC time if the provided time is of higher quality than the current RTC time. + * + * @param q The quality of the provided time. + * @param t The time to potentially set the RTC to. + * @return True if the RTC was set to the provided time, false otherwise. + */ bool perhapsSetRTC(RTCQuality q, struct tm &t) { /* Convert to unix time @@ -171,11 +190,22 @@ bool perhapsSetRTC(RTCQuality q, struct tm &t) } } +/** + * Returns the current time in seconds since the Unix epoch (January 1, 1970). + * + * @return The current time in seconds since the Unix epoch. + */ uint32_t getTime() { return (((uint32_t)millis() - timeStartMsec) / 1000) + zeroOffsetSecs; } +/** + * Returns the current time from the RTC if the quality of the time is at least minQuality. + * + * @param minQuality The minimum quality of the RTC time required for it to be considered valid. + * @return The current time from the RTC if it meets the minimum quality requirement, or 0 if the time is not valid. + */ uint32_t getValidTime(RTCQuality minQuality) { return (currentQuality >= minQuality) ? getTime() : 0; diff --git a/src/modules/ExternalNotificationModule.cpp b/src/modules/ExternalNotificationModule.cpp index 7dd6dd1ce..a939ee3f1 100644 --- a/src/modules/ExternalNotificationModule.cpp +++ b/src/modules/ExternalNotificationModule.cpp @@ -1,3 +1,17 @@ +/** + * @file ExternalNotificationModule.cpp + * @brief Implementation of the ExternalNotificationModule class. + * + * This file contains the implementation of the ExternalNotificationModule class, which is responsible for handling external notifications such as vibration, buzzer, and LED lights. + * The class provides methods to turn on and off the external notification outputs and to play ringtones using PWM buzzer. + * It also includes default configurations and a runOnce() method to handle the module's behavior. + * + * Documentation: + * https://meshtastic.org/docs/settings/moduleconfig/external-notification + * + * @author Jm Casler & Meshtastic Team + * @date [Insert Date] + */ #include "ExternalNotificationModule.h" #include "MeshService.h" #include "NodeDB.h" @@ -113,6 +127,11 @@ int32_t ExternalNotificationModule::runOnce() } } +/** + * Sets the external notification on for the specified index. + * + * @param index The index of the external notification to turn on. + */ void ExternalNotificationModule::setExternalOn(uint8_t index) { externalCurrentState[index] = 1; diff --git a/src/modules/RangeTestModule.cpp b/src/modules/RangeTestModule.cpp index 28835406d..705c72c68 100644 --- a/src/modules/RangeTestModule.cpp +++ b/src/modules/RangeTestModule.cpp @@ -1,3 +1,13 @@ +/** + * @file RangeTestModule.cpp + * @brief Implementation of the RangeTestModule class and RangeTestModuleRadio class. + * + * As a sender, this module sends packets every n seconds with an incremented PacketID. + * As a receiver, this module receives packets from multiple senders and saves them to the Filesystem. + * + * The RangeTestModule class is an OSThread that runs the module. + * The RangeTestModuleRadio class handles sending and receiving packets. + */ #include "RangeTestModule.h" #include "FSCommon.h" #include "MeshService.h" @@ -10,11 +20,6 @@ #include "gps/GeoCoord.h" #include -/* - As a sender, I can send packets every n seconds. These packets include an incremented PacketID. - As a receiver, I can receive packets from multiple senders. These packets can be saved to the Filesystem. -*/ - RangeTestModule *rangeTestModule; RangeTestModuleRadio *rangeTestModuleRadio; @@ -97,6 +102,12 @@ int32_t RangeTestModule::runOnce() return disable(); } +/** + * Sends a payload to a specified destination node. + * + * @param dest The destination node number. + * @param wantReplies Whether or not to request replies from the destination node. + */ void RangeTestModuleRadio::sendPayload(NodeNum dest, bool wantReplies) { meshtastic_MeshPacket *p = allocDataPacket(); diff --git a/src/modules/SerialModule.cpp b/src/modules/SerialModule.cpp index 1caae69a3..47ca1eef6 100644 --- a/src/modules/SerialModule.cpp +++ b/src/modules/SerialModule.cpp @@ -86,7 +86,13 @@ SerialModuleRadio::SerialModuleRadio() : MeshModule("SerialModuleRadio") } } -// For the serial2 port we can't really detect if any client is on the other side, so instead just look for recent messages +/** + * @brief Checks if the serial connection is established. + * + * @return true if the serial connection is established, false otherwise. + * + * For the serial2 port we can't really detect if any client is on the other side, so instead just look for recent messages + */ bool SerialModule::checkIsConnected() { uint32_t now = millis(); @@ -191,6 +197,11 @@ int32_t SerialModule::runOnce() } } +/** + * Allocates a new mesh packet for use as a reply to a received packet. + * + * @return A pointer to the newly allocated mesh packet. + */ meshtastic_MeshPacket *SerialModuleRadio::allocReply() { auto reply = allocDataPacket(); // Allocate a packet for sending @@ -198,6 +209,12 @@ meshtastic_MeshPacket *SerialModuleRadio::allocReply() return reply; } +/** + * Sends a payload to a specified destination node. + * + * @param dest The destination node number. + * @param wantReplies Whether or not to request replies from the destination node. + */ void SerialModuleRadio::sendPayload(NodeNum dest, bool wantReplies) { meshtastic_Channel *ch = (boundChannel != NULL) ? &channels.getByName(boundChannel) : NULL; @@ -216,6 +233,12 @@ void SerialModuleRadio::sendPayload(NodeNum dest, bool wantReplies) service.sendToMesh(p); } +/** + * Handle a received mesh packet. + * + * @param mp The received mesh packet. + * @return The processed message. + */ ProcessMessage SerialModuleRadio::handleReceived(const meshtastic_MeshPacket &mp) { if (moduleConfig.serial.enabled) { @@ -277,6 +300,11 @@ ProcessMessage SerialModuleRadio::handleReceived(const meshtastic_MeshPacket &mp return ProcessMessage::CONTINUE; // Let others look at this message also if they want } +/** + * @brief Returns the baud rate of the serial module from the module configuration. + * + * @return uint32_t The baud rate of the serial module. + */ uint32_t SerialModule::getBaudRate() { if (moduleConfig.serial.baud == meshtastic_ModuleConfig_SerialConfig_Serial_Baud_BAUD_110) { diff --git a/src/modules/esp32/StoreForwardModule.cpp b/src/modules/esp32/StoreForwardModule.cpp index fccbd7199..bce228224 100644 --- a/src/modules/esp32/StoreForwardModule.cpp +++ b/src/modules/esp32/StoreForwardModule.cpp @@ -1,3 +1,16 @@ +/** + * @file StoreForwardModule.cpp + * @brief Implementation of the StoreForwardModule class. + * + * This file contains the implementation of the StoreForwardModule class, which is responsible for managing the store and forward functionality of the Meshtastic device. + * The class provides methods for sending and receiving messages, as well as managing the message history queue. + * It also initializes and manages the data structures used for storing the message history. + * + * The StoreForwardModule class is used by the MeshService class to provide store and forward functionality to the Meshtastic device. + * + * @author Jm Casler + * @date [Insert Date] + */ #include "StoreForwardModule.h" #include "MeshService.h" #include "NodeDB.h" @@ -52,9 +65,9 @@ int32_t StoreForwardModule::runOnce() return disable(); } -/* - Create our data structure in the PSRAM. -*/ +/** + * Populates the PSRAM with data to be sent later when a device is out of range. + */ void StoreForwardModule::populatePSRAM() { /* @@ -82,6 +95,12 @@ void StoreForwardModule::populatePSRAM() LOG_DEBUG("*** numberOfPackets for packetHistory - %u\n", numberOfPackets); } +/** + * Sends messages from the message history to the specified recipient. + * + * @param msAgo The number of milliseconds ago from which to start sending messages. + * @param to The recipient ID to send the messages to. + */ void StoreForwardModule::historySend(uint32_t msAgo, uint32_t to) { uint32_t queueSize = storeForwardModule->historyQueueCreate(msAgo, to); @@ -101,6 +120,13 @@ void StoreForwardModule::historySend(uint32_t msAgo, uint32_t to) storeForwardModule->sendMessage(to, sf); } +/** + * Creates a new history queue with messages that were received within the specified time frame. + * + * @param msAgo The number of milliseconds ago to start the history queue. + * @param to The maximum number of messages to include in the history queue. + * @return The ID of the newly created history queue. + */ uint32_t StoreForwardModule::historyQueueCreate(uint32_t msAgo, uint32_t to) { @@ -141,6 +167,11 @@ uint32_t StoreForwardModule::historyQueueCreate(uint32_t msAgo, uint32_t to) return this->packetHistoryTXQueue_size; } +/** + * Adds a mesh packet to the history buffer for store-and-forward functionality. + * + * @param mp The mesh packet to add to the history buffer. + */ void StoreForwardModule::historyAdd(const meshtastic_MeshPacket &mp) { const auto &p = mp.decoded; @@ -162,6 +193,12 @@ meshtastic_MeshPacket *StoreForwardModule::allocReply() return reply; } +/** + * Sends a payload to a specified destination node using the store and forward mechanism. + * + * @param dest The destination node number. + * @param packetHistory_index The index of the packet in the packet history buffer. + */ void StoreForwardModule::sendPayload(NodeNum dest, uint32_t packetHistory_index) { LOG_INFO("*** Sending S&F Payload\n"); @@ -183,6 +220,12 @@ void StoreForwardModule::sendPayload(NodeNum dest, uint32_t packetHistory_index) service.sendToMesh(p); } +/** + * Sends a message to a specified destination node using the store and forward protocol. + * + * @param dest The destination node number. + * @param payload The message payload to be sent. + */ void StoreForwardModule::sendMessage(NodeNum dest, meshtastic_StoreAndForward &payload) { meshtastic_MeshPacket *p = allocDataProtobuf(payload); @@ -203,6 +246,12 @@ void StoreForwardModule::sendMessage(NodeNum dest, meshtastic_StoreAndForward &p service.sendToMesh(p); } +/** + * Sends a store-and-forward message to the specified destination node. + * + * @param dest The destination node number. + * @param rr The store-and-forward request/response message to send. + */ void StoreForwardModule::sendMessage(NodeNum dest, meshtastic_StoreAndForward_RequestResponse rr) { // Craft an empty response, save some bytes in flash @@ -211,6 +260,11 @@ void StoreForwardModule::sendMessage(NodeNum dest, meshtastic_StoreAndForward_Re storeForwardModule->sendMessage(dest, sf); } +/** + * Sends statistics about the store and forward module to the specified node. + * + * @param to The node ID to send the statistics to. + */ void StoreForwardModule::statsSend(uint32_t to) { meshtastic_StoreAndForward sf = meshtastic_StoreAndForward_init_zero; @@ -231,6 +285,12 @@ void StoreForwardModule::statsSend(uint32_t to) storeForwardModule->sendMessage(to, sf); } +/** + * Handles a received mesh packet, potentially storing it for later forwarding. + * + * @param mp The received mesh packet. + * @return A `ProcessMessage` indicating whether the packet was successfully handled. + */ ProcessMessage StoreForwardModule::handleReceived(const meshtastic_MeshPacket &mp) { #ifdef ARCH_ESP32 @@ -287,6 +347,13 @@ ProcessMessage StoreForwardModule::handleReceived(const meshtastic_MeshPacket &m return ProcessMessage::CONTINUE; // Let others look at this message also if they want } +/** + * Handles a received protobuf message for the Store and Forward module. + * + * @param mp The received MeshPacket to handle. + * @param p A pointer to the StoreAndForward object. + * @return True if the message was successfully handled, false otherwise. + */ bool StoreForwardModule::handleReceivedProtobuf(const meshtastic_MeshPacket &mp, meshtastic_StoreAndForward *p) { if (!moduleConfig.store_forward.enabled) { From 641d117106e4957215b6d19d4cdba76916acfe04 Mon Sep 17 00:00:00 2001 From: Jm Casler Date: Wed, 26 Jul 2023 16:38:48 -0700 Subject: [PATCH 02/19] Update extensions.json --- .vscode/extensions.json | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/.vscode/extensions.json b/.vscode/extensions.json index 080e70d08..783791f0b 100644 --- a/.vscode/extensions.json +++ b/.vscode/extensions.json @@ -2,9 +2,8 @@ // See http://go.microsoft.com/fwlink/?LinkId=827846 // for the documentation about the extensions.json format "recommendations": [ - "platformio.platformio-ide" + "ms-vscode.cpptools", + "platformio.platformio-ide", + "trunk.io" ], - "unwantedRecommendations": [ - "ms-vscode.cpptools-extension-pack" - ] -} +} \ No newline at end of file From e9cbe54ecae1c765b60fbb25cfdb9effe31f2e4d Mon Sep 17 00:00:00 2001 From: Jm Casler Date: Wed, 26 Jul 2023 16:48:04 -0700 Subject: [PATCH 03/19] add more documentaiton --- src/OSTimer.cpp | 10 ++++++++++ src/Power.cpp | 16 ++++++++++++++++ src/PowerFSM.cpp | 9 +++++++++ src/memGet.cpp | 27 +++++++++++++++++++++++++++ src/xmodem.cpp | 31 +++++++++++++++++++++++++++++++ 5 files changed, 93 insertions(+) diff --git a/src/OSTimer.cpp b/src/OSTimer.cpp index 21744615f..3c25abdd9 100644 --- a/src/OSTimer.cpp +++ b/src/OSTimer.cpp @@ -29,6 +29,16 @@ static void IRAM_ATTR onTimer() (*tCallback)(tParam1, tParam2); } +/** + * Schedules a hardware callback function to be executed after a specified delay. + * + * @param callback The function to be executed. + * @param param1 The first parameter to be passed to the function. + * @param param2 The second parameter to be passed to the function. + * @param delayMsec The delay time in milliseconds before the function is executed. + * + * @return True if the function was successfully scheduled, false otherwise. + */ bool scheduleHWCallback(PendableFunction callback, void *param1, uint32_t param2, uint32_t delayMsec) { if (!timer) { diff --git a/src/Power.cpp b/src/Power.cpp index a66ed4ec7..dac158e15 100644 --- a/src/Power.cpp +++ b/src/Power.cpp @@ -1,3 +1,14 @@ +/** + * @file Power.cpp + * @brief This file contains the implementation of the Power class, which is responsible for managing power-related functionality of the device. + * It includes battery level sensing, power management unit (PMU) control, and power state machine management. + * The Power class is used by the main device class to manage power-related functionality. + * + * The file also includes implementations of various battery level sensors, such as the AnalogBatteryLevel class, which assumes the battery voltage is attached via a voltage-divider to an analog input. + * + * This file is part of the Meshtastic project. + * For more information, see: https://meshtastic.org/ + */ #include "power.h" #include "NodeDB.h" #include "PowerFSM.h" @@ -366,6 +377,11 @@ bool Power::analogInit() #endif } +/** + * Initializes the Power class. + * + * @return true if the setup was successful, false otherwise. + */ bool Power::setup() { bool found = axpChipInit(); diff --git a/src/PowerFSM.cpp b/src/PowerFSM.cpp index 2d42ef655..988499e14 100644 --- a/src/PowerFSM.cpp +++ b/src/PowerFSM.cpp @@ -1,3 +1,12 @@ +/** + * @file PowerFSM.cpp + * @brief Implements the finite state machine for power management. + * + * This file contains the implementation of the finite state machine (FSM) for power management. + * The FSM controls the power states of the device, including SDS (shallow deep sleep), LS (light sleep), + * NB (normal mode), and POWER (powered mode). The FSM also handles transitions between states and + * actions to be taken upon entering or exiting each state. + */ #include "PowerFSM.h" #include "GPS.h" #include "MeshService.h" diff --git a/src/memGet.cpp b/src/memGet.cpp index 9f59d29ff..4799c7e97 100644 --- a/src/memGet.cpp +++ b/src/memGet.cpp @@ -1,8 +1,21 @@ +/** + * @file memGet.cpp + * @brief Implementation of MemGet class that provides functions to get memory information. + * + * This file contains the implementation of MemGet class that provides functions to get + * information about free heap, heap size, free psram and psram size. The functions are + * implemented for ESP32 and NRF52 architectures. If the platform does not have heap + * management function implemented, the functions return UINT32_MAX or 0. + */ #include "memGet.h" #include "configuration.h" MemGet memGet; +/** + * Returns the amount of free heap memory in bytes. + * @return uint32_t The amount of free heap memory in bytes. + */ uint32_t MemGet::getFreeHeap() { #ifdef ARCH_ESP32 @@ -15,6 +28,10 @@ uint32_t MemGet::getFreeHeap() #endif } +/** + * Returns the size of the heap memory in bytes. + * @return uint32_t The size of the heap memory in bytes. + */ uint32_t MemGet::getHeapSize() { #ifdef ARCH_ESP32 @@ -27,6 +44,11 @@ uint32_t MemGet::getHeapSize() #endif } +/** + * Returns the amount of free psram memory in bytes. + * + * @return The amount of free psram memory in bytes. + */ uint32_t MemGet::getFreePsram() { #ifdef ARCH_ESP32 @@ -36,6 +58,11 @@ uint32_t MemGet::getFreePsram() #endif } +/** + * @brief Returns the size of the PSRAM memory. + * + * @return uint32_t The size of the PSRAM memory. + */ uint32_t MemGet::getPsramSize() { #ifdef ARCH_ESP32 diff --git a/src/xmodem.cpp b/src/xmodem.cpp index e8727c468..3e4a9eb3e 100644 --- a/src/xmodem.cpp +++ b/src/xmodem.cpp @@ -1,3 +1,18 @@ +/** + * @file xmodem.cpp + * @brief Implementation of XMODEM protocol for Meshtastic devices. + * + * This file contains the implementation of the XMODEM protocol for Meshtastic devices. It is based on the XMODEM implementation by Georges Menie (www.menie.org) and has been adapted for protobuf encapsulation. + * + * The XMODEM protocol is used for reliable transmission of binary data over a serial connection. This implementation supports both sending and receiving of data. + * + * The XModemAdapter class provides the main functionality for the protocol, including CRC calculation, packet handling, and control signal sending. + * + * @copyright Copyright (c) 2001-2019 Georges Menie + * @author + * @author + * @date + */ /*********************************************************************************************************************** * based on XMODEM implementation by Georges Menie (www.menie.org) *********************************************************************************************************************** @@ -36,6 +51,13 @@ XModemAdapter xModem; XModemAdapter::XModemAdapter() {} +/** + * Calculates the CRC-16 CCITT checksum of the given buffer. + * + * @param buffer The buffer to calculate the checksum for. + * @param length The length of the buffer. + * @return The calculated checksum. + */ unsigned short XModemAdapter::crc16_ccitt(const pb_byte_t *buffer, int length) { unsigned short crc16 = 0; @@ -52,6 +74,15 @@ unsigned short XModemAdapter::crc16_ccitt(const pb_byte_t *buffer, int length) return crc16; } +/** + * Calculates the checksum of the given buffer and compares it to the given + * expected checksum. Returns 1 if the checksums match, 0 otherwise. + * + * @param buf The buffer to calculate the checksum of. + * @param sz The size of the buffer. + * @param tcrc The expected checksum. + * @return 1 if the checksums match, 0 otherwise. + */ int XModemAdapter::check(const pb_byte_t *buf, int sz, unsigned short tcrc) { return crc16_ccitt(buf, sz) == tcrc; From 794948d7e41bcefd7fd82c7c2b7d5205bc01a2d3 Mon Sep 17 00:00:00 2001 From: Jm Casler Date: Wed, 26 Jul 2023 16:58:14 -0700 Subject: [PATCH 04/19] fixing trunk problems --- src/OSTimer.cpp | 4 ++-- src/Power.cpp | 15 ++++++++------- src/PowerFSM.cpp | 8 ++++---- src/memGet.cpp | 12 ++++++------ src/xmodem.cpp | 27 +++++++++++++++------------ 5 files changed, 35 insertions(+), 31 deletions(-) diff --git a/src/OSTimer.cpp b/src/OSTimer.cpp index 3c25abdd9..f6739d75e 100644 --- a/src/OSTimer.cpp +++ b/src/OSTimer.cpp @@ -31,12 +31,12 @@ static void IRAM_ATTR onTimer() /** * Schedules a hardware callback function to be executed after a specified delay. - * + * * @param callback The function to be executed. * @param param1 The first parameter to be passed to the function. * @param param2 The second parameter to be passed to the function. * @param delayMsec The delay time in milliseconds before the function is executed. - * + * * @return True if the function was successfully scheduled, false otherwise. */ bool scheduleHWCallback(PendableFunction callback, void *param1, uint32_t param2, uint32_t delayMsec) diff --git a/src/Power.cpp b/src/Power.cpp index dac158e15..aad5b26ae 100644 --- a/src/Power.cpp +++ b/src/Power.cpp @@ -1,11 +1,12 @@ /** * @file Power.cpp - * @brief This file contains the implementation of the Power class, which is responsible for managing power-related functionality of the device. - * It includes battery level sensing, power management unit (PMU) control, and power state machine management. - * The Power class is used by the main device class to manage power-related functionality. - * - * The file also includes implementations of various battery level sensors, such as the AnalogBatteryLevel class, which assumes the battery voltage is attached via a voltage-divider to an analog input. - * + * @brief This file contains the implementation of the Power class, which is responsible for managing power-related functionality + * of the device. It includes battery level sensing, power management unit (PMU) control, and power state machine management. The + * Power class is used by the main device class to manage power-related functionality. + * + * The file also includes implementations of various battery level sensors, such as the AnalogBatteryLevel class, which assumes + * the battery voltage is attached via a voltage-divider to an analog input. + * * This file is part of the Meshtastic project. * For more information, see: https://meshtastic.org/ */ @@ -379,7 +380,7 @@ bool Power::analogInit() /** * Initializes the Power class. - * + * * @return true if the setup was successful, false otherwise. */ bool Power::setup() diff --git a/src/PowerFSM.cpp b/src/PowerFSM.cpp index 988499e14..c9c863a57 100644 --- a/src/PowerFSM.cpp +++ b/src/PowerFSM.cpp @@ -1,10 +1,10 @@ /** * @file PowerFSM.cpp * @brief Implements the finite state machine for power management. - * - * This file contains the implementation of the finite state machine (FSM) for power management. - * The FSM controls the power states of the device, including SDS (shallow deep sleep), LS (light sleep), - * NB (normal mode), and POWER (powered mode). The FSM also handles transitions between states and + * + * This file contains the implementation of the finite state machine (FSM) for power management. + * The FSM controls the power states of the device, including SDS (shallow deep sleep), LS (light sleep), + * NB (normal mode), and POWER (powered mode). The FSM also handles transitions between states and * actions to be taken upon entering or exiting each state. */ #include "PowerFSM.h" diff --git a/src/memGet.cpp b/src/memGet.cpp index 4799c7e97..0575da279 100644 --- a/src/memGet.cpp +++ b/src/memGet.cpp @@ -1,10 +1,10 @@ /** * @file memGet.cpp * @brief Implementation of MemGet class that provides functions to get memory information. - * - * This file contains the implementation of MemGet class that provides functions to get - * information about free heap, heap size, free psram and psram size. The functions are - * implemented for ESP32 and NRF52 architectures. If the platform does not have heap + * + * This file contains the implementation of MemGet class that provides functions to get + * information about free heap, heap size, free psram and psram size. The functions are + * implemented for ESP32 and NRF52 architectures. If the platform does not have heap * management function implemented, the functions return UINT32_MAX or 0. */ #include "memGet.h" @@ -60,7 +60,7 @@ uint32_t MemGet::getFreePsram() /** * @brief Returns the size of the PSRAM memory. - * + * * @return uint32_t The size of the PSRAM memory. */ uint32_t MemGet::getPsramSize() @@ -70,4 +70,4 @@ uint32_t MemGet::getPsramSize() #else return 0; #endif -} +} \ No newline at end of file diff --git a/src/xmodem.cpp b/src/xmodem.cpp index 3e4a9eb3e..852ff3453 100644 --- a/src/xmodem.cpp +++ b/src/xmodem.cpp @@ -1,17 +1,20 @@ /** * @file xmodem.cpp * @brief Implementation of XMODEM protocol for Meshtastic devices. - * - * This file contains the implementation of the XMODEM protocol for Meshtastic devices. It is based on the XMODEM implementation by Georges Menie (www.menie.org) and has been adapted for protobuf encapsulation. - * - * The XMODEM protocol is used for reliable transmission of binary data over a serial connection. This implementation supports both sending and receiving of data. - * - * The XModemAdapter class provides the main functionality for the protocol, including CRC calculation, packet handling, and control signal sending. - * + * + * This file contains the implementation of the XMODEM protocol for Meshtastic devices. It is based on the XMODEM implementation + * by Georges Menie (www.menie.org) and has been adapted for protobuf encapsulation. + * + * The XMODEM protocol is used for reliable transmission of binary data over a serial connection. This implementation supports + * both sending and receiving of data. + * + * The XModemAdapter class provides the main functionality for the protocol, including CRC calculation, packet handling, and + * control signal sending. + * * @copyright Copyright (c) 2001-2019 Georges Menie - * @author - * @author - * @date + * @author + * @author + * @date */ /*********************************************************************************************************************** * based on XMODEM implementation by Georges Menie (www.menie.org) @@ -53,7 +56,7 @@ XModemAdapter::XModemAdapter() {} /** * Calculates the CRC-16 CCITT checksum of the given buffer. - * + * * @param buffer The buffer to calculate the checksum for. * @param length The length of the buffer. * @return The calculated checksum. @@ -245,4 +248,4 @@ void XModemAdapter::handlePacket(meshtastic_XModem xmodemPacket) // Unknown control character break; } -} +} \ No newline at end of file From 26264fd9085f75219d899c5779c2a3ddcf95e6b3 Mon Sep 17 00:00:00 2001 From: Jm Casler Date: Wed, 26 Jul 2023 17:08:04 -0700 Subject: [PATCH 05/19] more fixes for trunk --- src/FSCommon.cpp | 24 ++++++++++-------- src/modules/ExternalNotificationModule.cpp | 13 +++++----- src/modules/RangeTestModule.cpp | 6 ++--- src/modules/SerialModule.cpp | 10 ++++---- src/modules/esp32/StoreForwardModule.cpp | 29 +++++++++++----------- 5 files changed, 43 insertions(+), 39 deletions(-) diff --git a/src/FSCommon.cpp b/src/FSCommon.cpp index 9b59bdadf..e7760c575 100644 --- a/src/FSCommon.cpp +++ b/src/FSCommon.cpp @@ -1,10 +1,12 @@ /** * @file FSCommon.cpp - * @brief This file contains functions for common filesystem operations such as copying, renaming, listing and deleting files and directories. - * - * The functions in this file are used to perform common filesystem operations such as copying, renaming, listing and deleting files and directories. - * These functions are used in the Meshtastic-device project to manage files and directories on the device's filesystem. - * + * @brief This file contains functions for common filesystem operations such as copying, renaming, listing and deleting files and + * directories. + * + * The functions in this file are used to perform common filesystem operations such as copying, renaming, listing and deleting + * files and directories. These functions are used in the Meshtastic-device project to manage files and directories on the + * device's filesystem. + * */ #include "FSCommon.h" #include "configuration.h" @@ -24,7 +26,7 @@ SPIClass SPI1(HSPI); /** * @brief Copies a file from one location to another. - * + * * @param from The path of the source file. * @param to The path of the destination file. * @return true if the file was successfully copied, false otherwise. @@ -60,10 +62,10 @@ bool copyFile(const char *from, const char *to) /** * Renames a file from pathFrom to pathTo. - * + * * @param pathFrom The original path of the file. * @param pathTo The new path of the file. - * + * * @return True if the file was successfully renamed, false otherwise. */ bool renameFile(const char *pathFrom, const char *pathTo) @@ -186,9 +188,9 @@ void listDir(const char *dirname, uint8_t levels, bool del = false) /** * @brief Removes a directory and all its contents. - * + * * This function recursively removes a directory and all its contents, including subdirectories and files. - * + * * @param dirname The name of the directory to remove. */ void rmDir(const char *dirname) @@ -252,4 +254,4 @@ void setupSDCard() LOG_DEBUG("Total space: %llu MB\n", SD.totalBytes() / (1024 * 1024)); LOG_DEBUG("Used space: %llu MB\n", SD.usedBytes() / (1024 * 1024)); #endif -} +} \ No newline at end of file diff --git a/src/modules/ExternalNotificationModule.cpp b/src/modules/ExternalNotificationModule.cpp index a939ee3f1..cbcf4e452 100644 --- a/src/modules/ExternalNotificationModule.cpp +++ b/src/modules/ExternalNotificationModule.cpp @@ -1,14 +1,15 @@ /** * @file ExternalNotificationModule.cpp * @brief Implementation of the ExternalNotificationModule class. - * - * This file contains the implementation of the ExternalNotificationModule class, which is responsible for handling external notifications such as vibration, buzzer, and LED lights. - * The class provides methods to turn on and off the external notification outputs and to play ringtones using PWM buzzer. - * It also includes default configurations and a runOnce() method to handle the module's behavior. - * + * + * This file contains the implementation of the ExternalNotificationModule class, which is responsible for handling external + * notifications such as vibration, buzzer, and LED lights. The class provides methods to turn on and off the external + * notification outputs and to play ringtones using PWM buzzer. It also includes default configurations and a runOnce() method to + * handle the module's behavior. + * * Documentation: * https://meshtastic.org/docs/settings/moduleconfig/external-notification - * + * * @author Jm Casler & Meshtastic Team * @date [Insert Date] */ diff --git a/src/modules/RangeTestModule.cpp b/src/modules/RangeTestModule.cpp index 705c72c68..ecf4b70c7 100644 --- a/src/modules/RangeTestModule.cpp +++ b/src/modules/RangeTestModule.cpp @@ -1,10 +1,10 @@ /** * @file RangeTestModule.cpp * @brief Implementation of the RangeTestModule class and RangeTestModuleRadio class. - * + * * As a sender, this module sends packets every n seconds with an incremented PacketID. * As a receiver, this module receives packets from multiple senders and saves them to the Filesystem. - * + * * The RangeTestModule class is an OSThread that runs the module. * The RangeTestModuleRadio class handles sending and receiving packets. */ @@ -104,7 +104,7 @@ int32_t RangeTestModule::runOnce() /** * Sends a payload to a specified destination node. - * + * * @param dest The destination node number. * @param wantReplies Whether or not to request replies from the destination node. */ diff --git a/src/modules/SerialModule.cpp b/src/modules/SerialModule.cpp index 47ca1eef6..4482aae90 100644 --- a/src/modules/SerialModule.cpp +++ b/src/modules/SerialModule.cpp @@ -88,9 +88,9 @@ SerialModuleRadio::SerialModuleRadio() : MeshModule("SerialModuleRadio") /** * @brief Checks if the serial connection is established. - * + * * @return true if the serial connection is established, false otherwise. - * + * * For the serial2 port we can't really detect if any client is on the other side, so instead just look for recent messages */ bool SerialModule::checkIsConnected() @@ -199,7 +199,7 @@ int32_t SerialModule::runOnce() /** * Allocates a new mesh packet for use as a reply to a received packet. - * + * * @return A pointer to the newly allocated mesh packet. */ meshtastic_MeshPacket *SerialModuleRadio::allocReply() @@ -211,7 +211,7 @@ meshtastic_MeshPacket *SerialModuleRadio::allocReply() /** * Sends a payload to a specified destination node. - * + * * @param dest The destination node number. * @param wantReplies Whether or not to request replies from the destination node. */ @@ -302,7 +302,7 @@ ProcessMessage SerialModuleRadio::handleReceived(const meshtastic_MeshPacket &mp /** * @brief Returns the baud rate of the serial module from the module configuration. - * + * * @return uint32_t The baud rate of the serial module. */ uint32_t SerialModule::getBaudRate() diff --git a/src/modules/esp32/StoreForwardModule.cpp b/src/modules/esp32/StoreForwardModule.cpp index bce228224..de4d4da3b 100644 --- a/src/modules/esp32/StoreForwardModule.cpp +++ b/src/modules/esp32/StoreForwardModule.cpp @@ -1,13 +1,14 @@ /** * @file StoreForwardModule.cpp * @brief Implementation of the StoreForwardModule class. - * - * This file contains the implementation of the StoreForwardModule class, which is responsible for managing the store and forward functionality of the Meshtastic device. - * The class provides methods for sending and receiving messages, as well as managing the message history queue. - * It also initializes and manages the data structures used for storing the message history. - * - * The StoreForwardModule class is used by the MeshService class to provide store and forward functionality to the Meshtastic device. - * + * + * This file contains the implementation of the StoreForwardModule class, which is responsible for managing the store and forward + * functionality of the Meshtastic device. The class provides methods for sending and receiving messages, as well as managing the + * message history queue. It also initializes and manages the data structures used for storing the message history. + * + * The StoreForwardModule class is used by the MeshService class to provide store and forward functionality to the Meshtastic + * device. + * * @author Jm Casler * @date [Insert Date] */ @@ -97,7 +98,7 @@ void StoreForwardModule::populatePSRAM() /** * Sends messages from the message history to the specified recipient. - * + * * @param msAgo The number of milliseconds ago from which to start sending messages. * @param to The recipient ID to send the messages to. */ @@ -122,7 +123,7 @@ void StoreForwardModule::historySend(uint32_t msAgo, uint32_t to) /** * Creates a new history queue with messages that were received within the specified time frame. - * + * * @param msAgo The number of milliseconds ago to start the history queue. * @param to The maximum number of messages to include in the history queue. * @return The ID of the newly created history queue. @@ -195,7 +196,7 @@ meshtastic_MeshPacket *StoreForwardModule::allocReply() /** * Sends a payload to a specified destination node using the store and forward mechanism. - * + * * @param dest The destination node number. * @param packetHistory_index The index of the packet in the packet history buffer. */ @@ -222,7 +223,7 @@ void StoreForwardModule::sendPayload(NodeNum dest, uint32_t packetHistory_index) /** * Sends a message to a specified destination node using the store and forward protocol. - * + * * @param dest The destination node number. * @param payload The message payload to be sent. */ @@ -248,7 +249,7 @@ void StoreForwardModule::sendMessage(NodeNum dest, meshtastic_StoreAndForward &p /** * Sends a store-and-forward message to the specified destination node. - * + * * @param dest The destination node number. * @param rr The store-and-forward request/response message to send. */ @@ -349,7 +350,7 @@ ProcessMessage StoreForwardModule::handleReceived(const meshtastic_MeshPacket &m /** * Handles a received protobuf message for the Store and Forward module. - * + * * @param mp The received MeshPacket to handle. * @param p A pointer to the StoreAndForward object. * @return True if the message was successfully handled, false otherwise. @@ -555,4 +556,4 @@ StoreForwardModule::StoreForwardModule() disable(); } #endif -} +} \ No newline at end of file From e0bf15b80ed98bedc5f5b61b055037b41f42d26b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thomas=20G=C3=B6ttgens?= Date: Thu, 3 Aug 2023 09:31:16 +0200 Subject: [PATCH 06/19] trunk fmt --- src/gps/RTC.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/gps/RTC.cpp b/src/gps/RTC.cpp index b2d397ed8..2bfb66e12 100644 --- a/src/gps/RTC.cpp +++ b/src/gps/RTC.cpp @@ -89,11 +89,11 @@ void readFromRTC() /** * Sets the RTC (Real-Time Clock) if the provided time is of higher quality than the current RTC time. - * + * * @param q The quality of the provided time. * @param tv A pointer to a timeval struct containing the time to potentially set the RTC to. * @return True if the RTC was set, false otherwise. - * + * * If we haven't yet set our RTC this boot, set it from a GPS derived time */ bool perhapsSetRTC(RTCQuality q, const struct timeval *tv) @@ -165,7 +165,7 @@ bool perhapsSetRTC(RTCQuality q, const struct timeval *tv) /** * Sets the RTC time if the provided time is of higher quality than the current RTC time. - * + * * @param q The quality of the provided time. * @param t The time to potentially set the RTC to. * @return True if the RTC was set to the provided time, false otherwise. From 4e54bec525a49bf45aff9e9b35555792fdc1ba48 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thomas=20G=C3=B6ttgens?= Date: Thu, 3 Aug 2023 13:58:19 +0200 Subject: [PATCH 07/19] Force small fonts on Low DPI screens, no matter what the driver default uses. Up till now we assumed large fonts on E-Paper and TFT Screens. (#2677) --- src/graphics/Screen.cpp | 15 ++++++++++----- src/graphics/images.h | 3 ++- src/modules/CannedMessageModule.cpp | 4 +++- src/modules/Telemetry/EnvironmentTelemetry.cpp | 4 +++- src/modules/esp32/AudioModule.cpp | 4 +++- variants/heltec_wireless_tracker/variant.h | 1 + 6 files changed, 22 insertions(+), 9 deletions(-) diff --git a/src/graphics/Screen.cpp b/src/graphics/Screen.cpp index fbd99d252..ce6b7d5dd 100644 --- a/src/graphics/Screen.cpp +++ b/src/graphics/Screen.cpp @@ -103,7 +103,8 @@ static uint16_t displayWidth, displayHeight; #define SCREEN_WIDTH displayWidth #define SCREEN_HEIGHT displayHeight -#if defined(USE_EINK) || defined(ILI9341_DRIVER) || defined(ST7735_CS) || defined(ST7789_CS) +#if (defined(USE_EINK) || defined(ILI9341_DRIVER) || defined(ST7735_CS) || defined(ST7789_CS)) && \ + !defined(DISPLAY_FORCE_SMALL_FONTS) // The screen is bigger so use bigger fonts #define FONT_SMALL ArialMT_Plain_16 // Height: 19 #define FONT_MEDIUM ArialMT_Plain_24 // Height: 28 @@ -493,7 +494,8 @@ static void drawNodes(OLEDDisplay *display, int16_t x, int16_t y, NodeStatus *no { char usersString[20]; snprintf(usersString, sizeof(usersString), "%d/%d", nodeStatus->getNumOnline(), nodeStatus->getNumTotal()); -#if defined(USE_EINK) || defined(ILI9341_DRIVER) || defined(ST7735_CS) || defined(ST7789_CS) +#if (defined(USE_EINK) || defined(ILI9341_DRIVER) || defined(ST7735_CS) || defined(ST7789_CS)) && \ + !defined(DISPLAY_FORCE_SMALL_FONTS) display->drawFastImage(x, y + 3, 8, 8, imgUser); #else display->drawFastImage(x, y, 8, 8, imgUser); @@ -1527,7 +1529,8 @@ void DebugInfo::drawFrame(OLEDDisplay *display, OLEDDisplayUiState *state, int16 #ifdef ARCH_ESP32 if (millis() - storeForwardModule->lastHeartbeat > (storeForwardModule->heartbeatInterval * 1200)) { // no heartbeat, overlap a bit -#if defined(USE_EINK) || defined(ILI9341_DRIVER) || defined(ST7735_CS) || defined(ST7789_CS) +#if (defined(USE_EINK) || defined(ILI9341_DRIVER) || defined(ST7735_CS) || defined(ST7789_CS)) && \ + !defined(DISPLAY_FORCE_SMALL_FONTS) display->drawFastImage(x + SCREEN_WIDTH - 14 - display->getStringWidth(ourId), y + 3 + FONT_HEIGHT_SMALL, 12, 8, imgQuestionL1); display->drawFastImage(x + SCREEN_WIDTH - 14 - display->getStringWidth(ourId), y + 11 + FONT_HEIGHT_SMALL, 12, 8, @@ -1537,7 +1540,8 @@ void DebugInfo::drawFrame(OLEDDisplay *display, OLEDDisplayUiState *state, int16 imgQuestion); #endif } else { -#if defined(USE_EINK) || defined(ILI9341_DRIVER) || defined(ST7735_CS) || defined(ST7789_CS) +#if (defined(USE_EINK) || defined(ILI9341_DRIVER) || defined(ST7735_CS) || defined(ST7789_CS)) && \ + !defined(DISPLAY_FORCE_SMALL_FONTS) display->drawFastImage(x + SCREEN_WIDTH - 18 - display->getStringWidth(ourId), y + 3 + FONT_HEIGHT_SMALL, 16, 8, imgSFL1); display->drawFastImage(x + SCREEN_WIDTH - 18 - display->getStringWidth(ourId), y + 11 + FONT_HEIGHT_SMALL, 16, 8, @@ -1549,7 +1553,8 @@ void DebugInfo::drawFrame(OLEDDisplay *display, OLEDDisplayUiState *state, int16 } #endif } else { -#if defined(USE_EINK) || defined(ILI9341_DRIVER) || defined(ST7735_CS) || defined(ST7789_CS) +#if (defined(USE_EINK) || defined(ILI9341_DRIVER) || defined(ST7735_CS) || defined(ST7789_CS)) && \ + !defined(DISPLAY_FORCE_SMALL_FONTS) display->drawFastImage(x + SCREEN_WIDTH - 14 - display->getStringWidth(ourId), y + 3 + FONT_HEIGHT_SMALL, 12, 8, imgInfoL1); display->drawFastImage(x + SCREEN_WIDTH - 14 - display->getStringWidth(ourId), y + 11 + FONT_HEIGHT_SMALL, 12, 8, diff --git a/src/graphics/images.h b/src/graphics/images.h index 46c9118b1..a1191076b 100644 --- a/src/graphics/images.h +++ b/src/graphics/images.h @@ -14,7 +14,8 @@ const uint8_t imgUser[] PROGMEM = {0x3C, 0x42, 0x99, 0xA5, 0xA5, 0x99, 0x42, 0x3 const uint8_t imgPositionEmpty[] PROGMEM = {0x20, 0x30, 0x28, 0x24, 0x42, 0xFF}; const uint8_t imgPositionSolid[] PROGMEM = {0x20, 0x30, 0x38, 0x3C, 0x7E, 0xFF}; -#if defined(USE_EINK) || defined(ILI9341_DRIVER) || defined(ST7735_CS) || defined(ST7789_CS) +#if (defined(USE_EINK) || defined(ILI9341_DRIVER) || defined(ST7735_CS) || defined(ST7789_CS)) && \ + !defined(DISPLAY_FORCE_SMALL_FONTS) const uint8_t imgQuestionL1[] PROGMEM = {0xff, 0x01, 0x01, 0x32, 0x7b, 0x49, 0x49, 0x6f, 0x26, 0x01, 0x01, 0xff}; const uint8_t imgQuestionL2[] PROGMEM = {0x0f, 0x08, 0x08, 0x08, 0x06, 0x0f, 0x0f, 0x06, 0x08, 0x08, 0x08, 0x0f}; const uint8_t imgInfoL1[] PROGMEM = {0xff, 0x01, 0x01, 0x01, 0x1e, 0x7f, 0x1e, 0x01, 0x01, 0x01, 0x01, 0xff}; diff --git a/src/modules/CannedMessageModule.cpp b/src/modules/CannedMessageModule.cpp index b788d6a06..f004348d7 100644 --- a/src/modules/CannedMessageModule.cpp +++ b/src/modules/CannedMessageModule.cpp @@ -18,7 +18,9 @@ #include "graphics/fonts/OLEDDisplayFontsUA.h" #endif -#if defined(USE_EINK) || defined(ILI9341_DRIVER) || defined(ST7735_CS) || defined(ST7789_CS) +#if (defined(USE_EINK) || defined(ILI9341_DRIVER) || defined(ST7735_CS) || defined(ST7789_CS)) && \ + !defined(DISPLAY_FORCE_SMALL_FONTS) + // The screen is bigger so use bigger fonts #define FONT_SMALL ArialMT_Plain_16 #define FONT_MEDIUM ArialMT_Plain_24 diff --git a/src/modules/Telemetry/EnvironmentTelemetry.cpp b/src/modules/Telemetry/EnvironmentTelemetry.cpp index 8a4747114..1f1a0cbf9 100644 --- a/src/modules/Telemetry/EnvironmentTelemetry.cpp +++ b/src/modules/Telemetry/EnvironmentTelemetry.cpp @@ -31,7 +31,9 @@ SHT31Sensor sht31Sensor; #define FAILED_STATE_SENSOR_READ_MULTIPLIER 10 #define DISPLAY_RECEIVEID_MEASUREMENTS_ON_SCREEN true -#ifdef USE_EINK +#if (defined(USE_EINK) || defined(ILI9341_DRIVER) || defined(ST7735_CS) || defined(ST7789_CS)) && \ + !defined(DISPLAY_FORCE_SMALL_FONTS) + // The screen is bigger so use bigger fonts #define FONT_SMALL ArialMT_Plain_16 #define FONT_MEDIUM ArialMT_Plain_24 diff --git a/src/modules/esp32/AudioModule.cpp b/src/modules/esp32/AudioModule.cpp index 4a154878d..a2e43347a 100644 --- a/src/modules/esp32/AudioModule.cpp +++ b/src/modules/esp32/AudioModule.cpp @@ -48,7 +48,9 @@ AudioModule *audioModule; #define YIELD_FROM_ISR(x) portYIELD_FROM_ISR(x) #endif -#if defined(USE_EINK) || defined(ILI9341_DRIVER) || defined(ST7735_CS) +#if (defined(USE_EINK) || defined(ILI9341_DRIVER) || defined(ST7735_CS) || defined(ST7789_CS)) && \ + !defined(DISPLAY_FORCE_SMALL_FONTS) + // The screen is bigger so use bigger fonts #define FONT_SMALL ArialMT_Plain_16 #define FONT_MEDIUM ArialMT_Plain_24 diff --git a/variants/heltec_wireless_tracker/variant.h b/variants/heltec_wireless_tracker/variant.h index 318454522..83f41ecdf 100644 --- a/variants/heltec_wireless_tracker/variant.h +++ b/variants/heltec_wireless_tracker/variant.h @@ -21,6 +21,7 @@ #define TFT_OFFSET_Y 0 #define VTFT_CTRL 46 // Heltec Tracker needs this pulled low for TFT #define SCREEN_TRANSITION_FRAMERATE 1 // fps +#define DISPLAY_FORCE_SMALL_FONTS #define VEXT_ENABLE Vext // active low, powers the oled display and the lora antenna boost #define BUTTON_PIN 0 From cfe5c7f31d44ac2ac99b00836ae6232e3889e042 Mon Sep 17 00:00:00 2001 From: Ben Meadors Date: Fri, 4 Aug 2023 06:01:01 -0500 Subject: [PATCH 08/19] Tweaking Power FSM states (#2676) * Tweaking Power FSM states * Turn bluetooth back on after serial disconnected * Remove references to deprecated mesh_sds_timeout_secs --- protobufs | 2 +- src/PowerFSM.cpp | 9 +++++++++ src/mesh/NodeDB.cpp | 2 -- src/mesh/NodeDB.h | 2 -- src/mesh/generated/meshtastic/config.pb.h | 3 ++- 5 files changed, 12 insertions(+), 6 deletions(-) diff --git a/protobufs b/protobufs index 8e7500278..c5fa71fbb 160000 --- a/protobufs +++ b/protobufs @@ -1 +1 @@ -Subproject commit 8e7500278f32a0f8096961843aad9b431916dcb0 +Subproject commit c5fa71fbb68b8d4044cb6a6d72f06257ac29dd9c diff --git a/src/PowerFSM.cpp b/src/PowerFSM.cpp index c9c863a57..6c6069365 100644 --- a/src/PowerFSM.cpp +++ b/src/PowerFSM.cpp @@ -146,7 +146,10 @@ static void nbEnter() { LOG_DEBUG("Enter state: NB\n"); screen->setOn(false); +#ifdef ARCH_ESP32 + // Only ESP32 should turn off bluetooth setBluetoothEnable(false); +#endif // FIXME - check if we already have packets for phone and immediately trigger EVENT_PACKETS_FOR_PHONE } @@ -167,6 +170,8 @@ static void serialEnter() static void serialExit() { + // Turn bluetooth back on when we leave serial stream API + setBluetoothEnable(true); screen->print("Serial disconnected\n"); } @@ -251,7 +256,11 @@ void PowerFSM_setup() // wake timer expired or a packet arrived // if we are a router node, we go to NB (no need for bluetooth) otherwise we go to DARK (so we can send message to phone) +#ifdef ARCH_ESP32 powerFSM.add_transition(&stateLS, isRouter ? &stateNB : &stateDARK, EVENT_WAKE_TIMER, NULL, "Wake timer"); +#else // Don't go into a no-bluetooth state on low power platforms + powerFSM.add_transition(&stateLS, &stateDARK, EVENT_WAKE_TIMER, NULL, "Wake timer"); +#endif // We need this transition, because we might not transition if we were waiting to enter light-sleep, because when we wake from // light sleep we _always_ transition to NB or dark and diff --git a/src/mesh/NodeDB.cpp b/src/mesh/NodeDB.cpp index 45b987780..38f4960b6 100644 --- a/src/mesh/NodeDB.cpp +++ b/src/mesh/NodeDB.cpp @@ -109,7 +109,6 @@ bool NodeDB::resetRadioConfig(bool factory_reset) config.lora.region = meshtastic_Config_LoRaConfig_RegionCode_TW; // Enter super deep sleep soon and stay there not very long - // radioConfig.preferences.mesh_sds_timeout_secs = 10; // radioConfig.preferences.sds_secs = 60; } @@ -211,7 +210,6 @@ void NodeDB::initConfigIntervals() config.position.position_broadcast_secs = default_broadcast_interval_secs; config.power.ls_secs = default_ls_secs; - config.power.mesh_sds_timeout_secs = default_mesh_sds_timeout_secs; config.power.min_wake_secs = default_min_wake_secs; config.power.sds_secs = default_sds_secs; config.power.wait_bluetooth_secs = default_wait_bluetooth_secs; diff --git a/src/mesh/NodeDB.h b/src/mesh/NodeDB.h index 9b0249dcd..0816af817 100644 --- a/src/mesh/NodeDB.h +++ b/src/mesh/NodeDB.h @@ -174,7 +174,6 @@ extern NodeDB nodeDB; # prefs.position_broadcast_secs = FIXME possibly broadcast only once an hr prefs.wait_bluetooth_secs = 1 # Don't stay in bluetooth mode - prefs.mesh_sds_timeout_secs = never # try to stay in light sleep one full day, then briefly wake and sleep again prefs.ls_secs = oneday @@ -202,7 +201,6 @@ extern NodeDB nodeDB; #define default_gps_update_interval IF_ROUTER(ONE_DAY, 2 * 60) #define default_broadcast_interval_secs IF_ROUTER(ONE_DAY / 2, 15 * 60) #define default_wait_bluetooth_secs IF_ROUTER(1, 60) -#define default_mesh_sds_timeout_secs IF_ROUTER(NODE_DELAY_FOREVER, 2 * 60 * 60) #define default_sds_secs IF_ROUTER(ONE_DAY, UINT32_MAX) // Default to forever super deep sleep #define default_ls_secs IF_ROUTER(ONE_DAY, 5 * 60) #define default_min_wake_secs 10 diff --git a/src/mesh/generated/meshtastic/config.pb.h b/src/mesh/generated/meshtastic/config.pb.h index 99314aef5..2bd1a177b 100644 --- a/src/mesh/generated/meshtastic/config.pb.h +++ b/src/mesh/generated/meshtastic/config.pb.h @@ -292,7 +292,8 @@ typedef struct _meshtastic_Config_PowerConfig { The number of seconds for to wait before turning off BLE in No Bluetooth states 0 for default of 1 minute */ uint32_t wait_bluetooth_secs; - /* Mesh Super Deep Sleep Timeout Seconds + /* Deprecated in 2.1.X + Mesh Super Deep Sleep Timeout Seconds While in Light Sleep if this value is exceeded we will lower into super deep sleep for sds_secs (default 1 year) or a button press 0 for default of two hours, MAXUINT for disabled */ From b1f6ff1280f45a27eb365ced0c6b966a354c3079 Mon Sep 17 00:00:00 2001 From: Mark Trevor Birss Date: Sat, 5 Aug 2023 17:10:00 +0200 Subject: [PATCH 09/19] Update variant.h --- variants/m5stack_coreink/variant.h | 33 ++++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) diff --git a/variants/m5stack_coreink/variant.h b/variants/m5stack_coreink/variant.h index 3abf16be7..703fce624 100644 --- a/variants/m5stack_coreink/variant.h +++ b/variants/m5stack_coreink/variant.h @@ -39,7 +39,9 @@ #undef RF95_MOSI #undef RF95_NSS #define USE_RF95 +//#define USE_SX1280 +#ifdef USE_RF95 #define RF95_SCK 18 #define RF95_MISO 34 #define RF95_MOSI 23 @@ -48,6 +50,22 @@ #define LORA_RESET 26 #define LORA_DIO1 RADIOLIB_NC #define LORA_DIO2 RADIOLIB_NC +#endif + +#ifdef USE_SX1280 +#define RF95_SCK 18 +#define RF95_MISO 34 +#define RF95_MOSI 23 +#define RF95_NSS 14 +#define LORA_RESET 26 +#define LORA_DIO1 25 +#define LORA_DIO2 13 +#define SX128X_CS RF95_NSS +#define SX128X_DIO1 LORA_DIO1 +#define SX128X_BUSY LORA_DIO2 +#define SX128X_RESET LORA_RESET +#define SX128X_MAX_POWER 13 // 10 +#endif #define USE_EINK // https://docs.m5stack.com/en/core/coreink @@ -59,3 +77,18 @@ #define PIN_EINK_RES -1 // Connected but not needed #define PIN_EINK_SCLK 18 // EPD_SCLK #define PIN_EINK_MOSI 23 // EPD_MOSI + +#define BATTERY_PIN 35 +#define ADC_CHANNEL ADC1_GPIO35_CHANNEL +// https://m5stack.oss-cn-shenzhen.aliyuncs.com/resource/docs/schematic/Core/m5paper/M5_PAPER_SCH.pdf +// https://github.com/m5stack/M5Core-Ink/blob/master/examples/Basics/FactoryTest/FactoryTest.ino#L58 +// VBAT +// | +// R83 (3K) +// + +// R86 (11K) +// | +// GND +// https://github.com/m5stack/M5Core-Ink/blob/master/examples/Basics/FactoryTest/FactoryTest.ino#L58 +#define ADC_MULTIPLIER 5 // Just a guess for now... more detailed getBatVoltage above + // https://embeddedexplorer.com/esp32-adc-esp-idf-tutorial/ From 400b71c152f65f2d456bdb6201c2c50dceca9e1f Mon Sep 17 00:00:00 2001 From: Mark Trevor Birss Date: Sat, 5 Aug 2023 17:11:11 +0200 Subject: [PATCH 10/19] Update variant.h --- variants/m5stack_coreink/variant.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/variants/m5stack_coreink/variant.h b/variants/m5stack_coreink/variant.h index 703fce624..5ec1a81a3 100644 --- a/variants/m5stack_coreink/variant.h +++ b/variants/m5stack_coreink/variant.h @@ -91,4 +91,4 @@ // GND // https://github.com/m5stack/M5Core-Ink/blob/master/examples/Basics/FactoryTest/FactoryTest.ino#L58 #define ADC_MULTIPLIER 5 // Just a guess for now... more detailed getBatVoltage above - // https://embeddedexplorer.com/esp32-adc-esp-idf-tutorial/ +// https://embeddedexplorer.com/esp32-adc-esp-idf-tutorial/ From 42039e27e74111053d50c17475be4bb75484e6a6 Mon Sep 17 00:00:00 2001 From: Neil Hao Date: Sun, 6 Aug 2023 06:28:37 -0700 Subject: [PATCH 11/19] Initialize the L76K Chip, use GPS + GLONASS + BEIDOU (#2680) * 'nano-g2-ultra' * revert overcommit * nano-g2-ultra-fmt * revert overcommit * revert overcommit * Added BEIDOU support to L76K --------- Co-authored-by: Ben Meadors --- src/gps/GPS.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/gps/GPS.cpp b/src/gps/GPS.cpp index 737ad71d2..62536505d 100644 --- a/src/gps/GPS.cpp +++ b/src/gps/GPS.cpp @@ -213,8 +213,8 @@ bool GPS::setupGPS() // _serial_gps->begin(9600); //The baud rate of 9600 has been initialized at the beginning of setupGPS, this line // is the redundant part delay(250); - // Initialize the L76K Chip, use GPS + GLONASS - _serial_gps->write("$PCAS04,5*1C\r\n"); + // Initialize the L76K Chip, use GPS + GLONASS + BEIDOU + _serial_gps->write("$PCAS04,7*1E\r\n"); delay(250); // only ask for RMC and GGA _serial_gps->write("$PCAS03,1,0,0,0,1,0,0,0,0,0,,,0,0*02\r\n"); From 568cc259af175a2fc5a0e50baa35e80f09297fe7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thomas=20G=C3=B6ttgens?= Date: Sun, 6 Aug 2023 15:18:23 +0200 Subject: [PATCH 12/19] Don't crash when no radio detected. --- src/mesh/Router.cpp | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/mesh/Router.cpp b/src/mesh/Router.cpp index e605cfc94..3010176a0 100644 --- a/src/mesh/Router.cpp +++ b/src/mesh/Router.cpp @@ -153,7 +153,11 @@ void Router::setReceivedMessage() meshtastic_QueueStatus Router::getQueueStatus() { - return iface->getQueueStatus(); + if (!iface) { + meshtastic_QueueStatus qs; + qs.res = qs.mesh_packet_id = qs.free = qs.maxlen = 0; + return qs; + } else return iface->getQueueStatus(); } ErrorCode Router::sendLocal(meshtastic_MeshPacket *p, RxSource src) From f5d323fdd322d9805eb83b7b8d7b1b68b9f5644b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thomas=20G=C3=B6ttgens?= Date: Sun, 6 Aug 2023 15:51:37 +0200 Subject: [PATCH 13/19] trunk fmt --- src/mesh/Router.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/mesh/Router.cpp b/src/mesh/Router.cpp index 3010176a0..03aa57351 100644 --- a/src/mesh/Router.cpp +++ b/src/mesh/Router.cpp @@ -157,7 +157,8 @@ meshtastic_QueueStatus Router::getQueueStatus() meshtastic_QueueStatus qs; qs.res = qs.mesh_packet_id = qs.free = qs.maxlen = 0; return qs; - } else return iface->getQueueStatus(); + } else + return iface->getQueueStatus(); } ErrorCode Router::sendLocal(meshtastic_MeshPacket *p, RxSource src) From 0aef8703b6447925ee1e78925106bfab2ed402e9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thomas=20G=C3=B6ttgens?= Date: Sun, 6 Aug 2023 15:45:47 +0200 Subject: [PATCH 14/19] - use LovyanGFX for m5stack - update some comments --- src/graphics/EInkDisplay2.h | 2 +- src/graphics/TFTDisplay.cpp | 95 ++++++++++++++++++++++++++- src/graphics/TFTDisplay.h | 2 +- variants/m5stack_core/platformio.ini | 4 +- variants/m5stack_core/variant.h | 9 ++- variants/nano-g2-ultra/platformio.ini | 4 -- variants/t-echo/platformio.ini | 3 - 7 files changed, 102 insertions(+), 17 deletions(-) diff --git a/src/graphics/EInkDisplay2.h b/src/graphics/EInkDisplay2.h index c7ae6754b..2529b1f0e 100644 --- a/src/graphics/EInkDisplay2.h +++ b/src/graphics/EInkDisplay2.h @@ -3,7 +3,7 @@ #include /** - * An adapter class that allows using the TFT_eSPI library as if it was an OLEDDisplay implementation. + * An adapter class that allows using the GxEPD2 library as if it was an OLEDDisplay implementation. * * Remaining TODO: * optimize display() to only draw changed pixels (see other OLED subclasses for examples) diff --git a/src/graphics/TFTDisplay.cpp b/src/graphics/TFTDisplay.cpp index 4c9196b2f..582a4b4f6 100644 --- a/src/graphics/TFTDisplay.cpp +++ b/src/graphics/TFTDisplay.cpp @@ -217,7 +217,96 @@ class LGFX : public lgfx::LGFX_Device static LGFX tft; -#elif defined(ST7735_CS) || defined(ILI9341_DRIVER) +#elif defined(ILI9341_DRIVER) + +#include // Graphics and font library for ILI9341 driver chip + +#if defined(ILI9341_BACKLIGHT_EN) && !defined(TFT_BL) +#define TFT_BL ILI9341_BACKLIGHT_EN +#endif + +class LGFX : public lgfx::LGFX_Device +{ + lgfx::Panel_ILI9341 _panel_instance; + lgfx::Bus_SPI _bus_instance; + lgfx::Light_PWM _light_instance; + + public: + LGFX(void) + { + { + auto cfg = _bus_instance.config(); + + // configure SPI + cfg.spi_host = ILI9341_SPI_HOST; // ESP32-S2,S3,C3 : SPI2_HOST or SPI3_HOST / ESP32 : VSPI_HOST or HSPI_HOST + cfg.spi_mode = 0; + cfg.freq_write = SPI_FREQUENCY; // SPI clock for transmission (up to 80MHz, rounded to the value obtained by dividing + // 80MHz by an integer) + cfg.freq_read = SPI_READ_FREQUENCY; // SPI clock when receiving + cfg.spi_3wire = false; // Set to true if reception is done on the MOSI pin + cfg.use_lock = true; // Set to true to use transaction locking + cfg.dma_channel = SPI_DMA_CH_AUTO; // SPI_DMA_CH_AUTO; // Set DMA channel to use (0=not use DMA / 1=1ch / 2=ch / + // SPI_DMA_CH_AUTO=auto setting) + cfg.pin_sclk = TFT_SCLK; // Set SPI SCLK pin number + cfg.pin_mosi = TFT_MOSI; // Set SPI MOSI pin number + cfg.pin_miso = TFT_MISO; // Set SPI MISO pin number (-1 = disable) + cfg.pin_dc = TFT_DC; // Set SPI DC pin number (-1 = disable) + + _bus_instance.config(cfg); // applies the set value to the bus. + _panel_instance.setBus(&_bus_instance); // set the bus on the panel. + } + + { // Set the display panel control. + auto cfg = _panel_instance.config(); // Gets a structure for display panel settings. + + cfg.pin_cs = TFT_CS; // Pin number where CS is connected (-1 = disable) + cfg.pin_rst = TFT_RST; // Pin number where RST is connected (-1 = disable) + cfg.pin_busy = TFT_BUSY; // Pin number where BUSY is connected (-1 = disable) + + // The following setting values ​​are general initial values ​​for each panel, so please comment out any + // unknown items and try them. + + cfg.panel_width = TFT_WIDTH; // actual displayable width + cfg.panel_height = TFT_HEIGHT; // actual displayable height + cfg.offset_x = TFT_OFFSET_X; // Panel offset amount in X direction + cfg.offset_y = TFT_OFFSET_Y; // Panel offset amount in Y direction + cfg.offset_rotation = 0; // Rotation direction value offset 0~7 (4~7 is upside down) + cfg.dummy_read_pixel = 8; // Number of bits for dummy read before pixel readout + cfg.dummy_read_bits = 1; // Number of bits for dummy read before non-pixel data read + cfg.readable = true; // Set to true if data can be read + cfg.invert = false; // Set to true if the light/darkness of the panel is reversed + cfg.rgb_order = false; // Set to true if the panel's red and blue are swapped + cfg.dlen_16bit = + false; // Set to true for panels that transmit data length in 16-bit units with 16-bit parallel or SPI + cfg.bus_shared = true; // If the bus is shared with the SD card, set to true (bus control with drawJpgFile etc.) + + // Set the following only when the display is shifted with a driver with a variable number of pixels, such as the + // ST7735 or ILI9163. + cfg.memory_width = TFT_WIDTH; // Maximum width supported by the driver IC + cfg.memory_height = TFT_HEIGHT; // Maximum height supported by the driver IC + _panel_instance.config(cfg); + } + + // Set the backlight control + { + auto cfg = _light_instance.config(); // Gets a structure for backlight settings. + + cfg.pin_bl = TFT_BL; // Pin number to which the backlight is connected + cfg.invert = false; // true to invert the brightness of the backlight + // cfg.freq = 44100; // PWM frequency of backlight + // cfg.pwm_channel = 1; // PWM channel number to use + + _light_instance.config(cfg); + _panel_instance.setLight(&_light_instance); // Set the backlight on the panel. + } + + setPanel(&_panel_instance); + } +}; + +static LGFX tft; + +#elif defined(ST7735_CS) #include // Graphics and font library for ILI9341 driver chip static TFT_eSPI tft = TFT_eSPI(); // Invoke library, pins defined in User_Setup.h @@ -335,9 +424,9 @@ bool TFTDisplay::connect() #endif tft.init(); -#if defined(M5STACK) || defined(T_DECK) +#if defined(T_DECK) tft.setRotation(1); // M5Stack/T-Deck have the TFT in landscape -#elif defined(T_WATCH_S3) +#elif defined(M5STACK) || defined(T_WATCH_S3) tft.setRotation(0); // T-Watch S3 has the TFT in portrait #else tft.setRotation(3); // Orient horizontal and wide underneath the silkscreen name label diff --git a/src/graphics/TFTDisplay.h b/src/graphics/TFTDisplay.h index 325765b1f..dee31acf1 100644 --- a/src/graphics/TFTDisplay.h +++ b/src/graphics/TFTDisplay.h @@ -3,7 +3,7 @@ #include /** - * An adapter class that allows using the TFT_eSPI library as if it was an OLEDDisplay implementation. + * An adapter class that allows using the LovyanGFX library as if it was an OLEDDisplay implementation. * * Remaining TODO: * optimize display() to only draw changed pixels (see other OLED subclasses for examples) diff --git a/variants/m5stack_core/platformio.ini b/variants/m5stack_core/platformio.ini index a2330922e..5ce156539 100644 --- a/variants/m5stack_core/platformio.ini +++ b/variants/m5stack_core/platformio.ini @@ -2,8 +2,6 @@ extends = esp32_base board = m5stack-core-esp32 board_level = extra -upload_port = COM8 -monitor_port = COM8 monitor_filters = esp32_exception_decoder build_src_filter = ${esp32_base.build_src_filter} @@ -28,4 +26,4 @@ lib_ignore = m5stack-core lib_deps = ${esp32_base.lib_deps} - bodmer/TFT_eSPI@^2.4.76 \ No newline at end of file + lovyan03/LovyanGFX@^1.1.7 diff --git a/variants/m5stack_core/variant.h b/variants/m5stack_core/variant.h index d9ef9ab28..22fa323d7 100644 --- a/variants/m5stack_core/variant.h +++ b/variants/m5stack_core/variant.h @@ -34,8 +34,13 @@ #define GPS_RX_PIN 16 #define GPS_TX_PIN 17 -// Define if screen should be mirrored left to right -#define SCREEN_ROTATE +#define TFT_HEIGHT 240 +#define TFT_WIDTH 320 +#define TFT_OFFSET_X 0 +#define TFT_OFFSET_Y 0 +#define TFT_BUSY -1 // LCD screens are slow, so slowdown the wipe so it looks better #define SCREEN_TRANSITION_FRAMERATE 1 // fps + +#define ILI9341_SPI_HOST VSPI_HOST // VSPI_HOST or HSPI_HOST diff --git a/variants/nano-g2-ultra/platformio.ini b/variants/nano-g2-ultra/platformio.ini index c00a9e5ac..d5e5a6137 100644 --- a/variants/nano-g2-ultra/platformio.ini +++ b/variants/nano-g2-ultra/platformio.ini @@ -4,10 +4,6 @@ extends = nrf52840_base board = nano-g2-ultra debug_tool = jlink -# add our variants files to the include and src paths -# define build flags for the TFT_eSPI library - NOTE: WE NOT LONGER USE TFT_eSPI, it was for an earlier version of the TTGO eink screens -# -DBUSY_PIN=3 -DRST_PIN=2 -DDC_PIN=28 -DCS_PIN=30 -# add -DCFG_SYSVIEW if you want to use the Segger systemview tool for OS profiling. build_flags = ${nrf52840_base.build_flags} -Ivariants/nano-g2-ultra -D NANO_G2_ULTRA -L "${platformio.libdeps_dir}/${this.__env__}/BSEC2 Software Library/src/cortex-m4/fpv4-sp-d16-hard" build_src_filter = ${nrf52_base.build_src_filter} +<../variants/nano-g2-ultra> diff --git a/variants/t-echo/platformio.ini b/variants/t-echo/platformio.ini index 2f043108c..2555032df 100644 --- a/variants/t-echo/platformio.ini +++ b/variants/t-echo/platformio.ini @@ -4,9 +4,6 @@ extends = nrf52840_base board = t-echo debug_tool = jlink -# add our variants files to the include and src paths -# define build flags for the TFT_eSPI library - NOTE: WE NOT LONGER USE TFT_eSPI, it was for an earlier version of the TTGO eink screens -# -DBUSY_PIN=3 -DRST_PIN=2 -DDC_PIN=28 -DCS_PIN=30 # add -DCFG_SYSVIEW if you want to use the Segger systemview tool for OS profiling. build_flags = ${nrf52840_base.build_flags} -Ivariants/t-echo -L "${platformio.libdeps_dir}/${this.__env__}/BSEC2 Software Library/src/cortex-m4/fpv4-sp-d16-hard" From bed2bfa0745655c041555f7bfd3fede228592788 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thomas=20G=C3=B6ttgens?= Date: Sun, 6 Aug 2023 16:03:04 +0200 Subject: [PATCH 15/19] trunk fmt --- src/graphics/TFTDisplay.cpp | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/src/graphics/TFTDisplay.cpp b/src/graphics/TFTDisplay.cpp index 582a4b4f6..186887457 100644 --- a/src/graphics/TFTDisplay.cpp +++ b/src/graphics/TFTDisplay.cpp @@ -247,10 +247,10 @@ class LGFX : public lgfx::LGFX_Device cfg.use_lock = true; // Set to true to use transaction locking cfg.dma_channel = SPI_DMA_CH_AUTO; // SPI_DMA_CH_AUTO; // Set DMA channel to use (0=not use DMA / 1=1ch / 2=ch / // SPI_DMA_CH_AUTO=auto setting) - cfg.pin_sclk = TFT_SCLK; // Set SPI SCLK pin number - cfg.pin_mosi = TFT_MOSI; // Set SPI MOSI pin number - cfg.pin_miso = TFT_MISO; // Set SPI MISO pin number (-1 = disable) - cfg.pin_dc = TFT_DC; // Set SPI DC pin number (-1 = disable) + cfg.pin_sclk = TFT_SCLK; // Set SPI SCLK pin number + cfg.pin_mosi = TFT_MOSI; // Set SPI MOSI pin number + cfg.pin_miso = TFT_MISO; // Set SPI MISO pin number (-1 = disable) + cfg.pin_dc = TFT_DC; // Set SPI DC pin number (-1 = disable) _bus_instance.config(cfg); // applies the set value to the bus. _panel_instance.setBus(&_bus_instance); // set the bus on the panel. @@ -260,7 +260,7 @@ class LGFX : public lgfx::LGFX_Device auto cfg = _panel_instance.config(); // Gets a structure for display panel settings. cfg.pin_cs = TFT_CS; // Pin number where CS is connected (-1 = disable) - cfg.pin_rst = TFT_RST; // Pin number where RST is connected (-1 = disable) + cfg.pin_rst = TFT_RST; // Pin number where RST is connected (-1 = disable) cfg.pin_busy = TFT_BUSY; // Pin number where BUSY is connected (-1 = disable) // The following setting values ​​are general initial values ​​for each panel, so please comment out any @@ -274,12 +274,12 @@ class LGFX : public lgfx::LGFX_Device cfg.dummy_read_pixel = 8; // Number of bits for dummy read before pixel readout cfg.dummy_read_bits = 1; // Number of bits for dummy read before non-pixel data read cfg.readable = true; // Set to true if data can be read - cfg.invert = false; // Set to true if the light/darkness of the panel is reversed + cfg.invert = false; // Set to true if the light/darkness of the panel is reversed cfg.rgb_order = false; // Set to true if the panel's red and blue are swapped cfg.dlen_16bit = false; // Set to true for panels that transmit data length in 16-bit units with 16-bit parallel or SPI cfg.bus_shared = true; // If the bus is shared with the SD card, set to true (bus control with drawJpgFile etc.) - + // Set the following only when the display is shifted with a driver with a variable number of pixels, such as the // ST7735 or ILI9163. cfg.memory_width = TFT_WIDTH; // Maximum width supported by the driver IC @@ -292,7 +292,7 @@ class LGFX : public lgfx::LGFX_Device auto cfg = _light_instance.config(); // Gets a structure for backlight settings. cfg.pin_bl = TFT_BL; // Pin number to which the backlight is connected - cfg.invert = false; // true to invert the brightness of the backlight + cfg.invert = false; // true to invert the brightness of the backlight // cfg.freq = 44100; // PWM frequency of backlight // cfg.pwm_channel = 1; // PWM channel number to use From 114eb0c9526c551481672539530004ea2d25dd97 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thomas=20G=C3=B6ttgens?= Date: Sun, 6 Aug 2023 16:16:13 +0200 Subject: [PATCH 16/19] enable Canned Messages on T-Deck without presets --- src/modules/CannedMessageModule.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/modules/CannedMessageModule.cpp b/src/modules/CannedMessageModule.cpp index f004348d7..3ca718e99 100644 --- a/src/modules/CannedMessageModule.cpp +++ b/src/modules/CannedMessageModule.cpp @@ -61,7 +61,8 @@ CannedMessageModule::CannedMessageModule() { if (moduleConfig.canned_message.enabled) { this->loadProtoForModule(); - if ((this->splitConfiguredMessages() <= 0) && (cardkb_found.address != CARDKB_ADDR)) { + if ((this->splitConfiguredMessages() <= 0) && (cardkb_found.address != CARDKB_ADDR) && + (cardkb_found.address != TDECK_KB_ADDR)) { LOG_INFO("CannedMessageModule: No messages are configured. Module is disabled\n"); this->runState = CANNED_MESSAGE_RUN_STATE_DISABLED; disable(); From 684cce76408e233a1270e03f8747ffadf2b428d2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thomas=20G=C3=B6ttgens?= Date: Sun, 6 Aug 2023 16:52:05 +0200 Subject: [PATCH 17/19] trunk fmt --- variants/heltec_wireless_tracker/platformio.ini | 2 +- variants/m5stack_core/platformio.ini | 2 +- variants/nano-g2-ultra/variant.h | 5 ++--- variants/t-deck/platformio.ini | 2 +- variants/t-watch-s3/platformio.ini | 2 +- 5 files changed, 6 insertions(+), 7 deletions(-) diff --git a/variants/heltec_wireless_tracker/platformio.ini b/variants/heltec_wireless_tracker/platformio.ini index 92e76a981..45be3bf98 100644 --- a/variants/heltec_wireless_tracker/platformio.ini +++ b/variants/heltec_wireless_tracker/platformio.ini @@ -8,4 +8,4 @@ build_flags = lib_deps = ${esp32s3_base.lib_deps} - lovyan03/LovyanGFX@^1.1.7 \ No newline at end of file + lovyan03/LovyanGFX@^1.1.8 \ No newline at end of file diff --git a/variants/m5stack_core/platformio.ini b/variants/m5stack_core/platformio.ini index 5ce156539..84fb9f251 100644 --- a/variants/m5stack_core/platformio.ini +++ b/variants/m5stack_core/platformio.ini @@ -26,4 +26,4 @@ lib_ignore = m5stack-core lib_deps = ${esp32_base.lib_deps} - lovyan03/LovyanGFX@^1.1.7 + lovyan03/LovyanGFX@^1.1.8 diff --git a/variants/nano-g2-ultra/variant.h b/variants/nano-g2-ultra/variant.h index da46f311d..4c1720af8 100644 --- a/variants/nano-g2-ultra/variant.h +++ b/variants/nano-g2-ultra/variant.h @@ -114,9 +114,8 @@ External serial flash W25Q16JV_IQ #define SX126X_CS (32 + 13) // FIXME - we really should define LORA_CS instead #define SX126X_DIO1 (32 + 10) // Note DIO2 is attached internally to the module to an analog switch for TX/RX switching -//#define SX1262_DIO3 \ - (0 + 21) // This is used as an *output* from the sx1262 and connected internally to power the tcxo, do not drive from the main -// CPU? +//#define SX1262_DIO3 (0 + 21) +// This is used as an *output* from the sx1262 and connected internally to power the tcxo, do not drive from the main CPU? #define SX126X_BUSY (32 + 11) #define SX126X_RESET (32 + 15) #define SX126X_E22 // DIO2 controlls an antenna switch and the TCXO voltage is controlled by DIO3 diff --git a/variants/t-deck/platformio.ini b/variants/t-deck/platformio.ini index 8344fb990..c3c508a0f 100644 --- a/variants/t-deck/platformio.ini +++ b/variants/t-deck/platformio.ini @@ -11,4 +11,4 @@ build_flags = ${esp32_base.build_flags} -Ivariants/t-deck lib_deps = ${esp32s3_base.lib_deps} - lovyan03/LovyanGFX@^1.1.7 \ No newline at end of file + lovyan03/LovyanGFX@^1.1.8 \ No newline at end of file diff --git a/variants/t-watch-s3/platformio.ini b/variants/t-watch-s3/platformio.ini index 709ea89ee..08751d463 100644 --- a/variants/t-watch-s3/platformio.ini +++ b/variants/t-watch-s3/platformio.ini @@ -12,6 +12,6 @@ build_flags = ${esp32_base.build_flags} -DPCF8563_RTC=0x51 lib_deps = ${esp32s3_base.lib_deps} - lovyan03/LovyanGFX@^1.1.7 + lovyan03/LovyanGFX@^1.1.8 lewisxhe/PCF8563_Library@1.0.1 adafruit/Adafruit DRV2605 Library@^1.2.2 \ No newline at end of file From 04bbdc6b8a25e5d4733c2a645ed9e6981346a836 Mon Sep 17 00:00:00 2001 From: Ben Meadors Date: Sun, 6 Aug 2023 10:06:08 -0500 Subject: [PATCH 18/19] Platform / dep updates (#2684) * Update nordic platform * Update sensor libs --- arch/nrf52/nrf52.ini | 2 +- platformio.ini | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/arch/nrf52/nrf52.ini b/arch/nrf52/nrf52.ini index 7f61a04c8..d1826a96a 100644 --- a/arch/nrf52/nrf52.ini +++ b/arch/nrf52/nrf52.ini @@ -1,6 +1,6 @@ [nrf52_base] ; Instead of the standard nordicnrf52 platform, we use our fork which has our added variant files -platform = platformio/nordicnrf52@^10.0.0 +platform = platformio/nordicnrf52@^10.1.0 extends = arduino_base build_type = debug ; I'm debugging with ICE a lot now diff --git a/platformio.ini b/platformio.ini index 08b00fee3..0a5029f9d 100644 --- a/platformio.ini +++ b/platformio.ini @@ -88,7 +88,7 @@ check_flags = framework = arduino lib_deps = ${env.lib_deps} - mprograms/QMC5883LCompass@^1.1.1 + mprograms/QMC5883LCompass@^1.2.0 end2endzone/NonBlockingRTTTL@^1.3.0 https://github.com/meshtastic/SparkFun_ATECCX08a_Arduino_Library.git#5cf62b36c6f30bc72a07bdb2c11fc9a22d1e31da @@ -107,8 +107,8 @@ lib_deps = [environmental_base] lib_deps = adafruit/Adafruit BusIO@^1.11.4 - adafruit/Adafruit Unified Sensor@^1.1.9 - adafruit/Adafruit BMP280 Library@^2.6.6 + adafruit/Adafruit Unified Sensor@^1.1.11 + adafruit/Adafruit BMP280 Library@^2.6.8 adafruit/Adafruit BME280 Library@^2.2.2 https://github.com/boschsensortec/Bosch-BSEC2-Library#v1.5.2400 boschsensortec/BME68x Sensor Library@^1.1.40407 @@ -117,7 +117,7 @@ lib_deps = adafruit/Adafruit INA219@^1.2.0 adafruit/Adafruit SHTC3 Library@^1.0.0 adafruit/Adafruit LPS2X@^2.0.4 - adafruit/Adafruit SHT31 Library@^2.2.0 + adafruit/Adafruit SHT31 Library@^2.2.2 adafruit/Adafruit PM25 AQI Sensor@^1.0.6 adafruit/Adafruit MPU6050@^2.2.4 adafruit/Adafruit LIS3DH@^1.2.4 From 1afe9f75bd90a71983b15fa3d653732c9a8c0977 Mon Sep 17 00:00:00 2001 From: caveman99 Date: Mon, 7 Aug 2023 17:46:03 +0000 Subject: [PATCH 19/19] [create-pull-request] automated change --- protobufs | 2 +- src/mesh/generated/meshtastic/admin.pb.h | 2 + src/mesh/generated/meshtastic/deviceonly.pb.h | 13 +- src/mesh/generated/meshtastic/mesh.pb.h | 119 +++++------------- src/mesh/generated/meshtastic/portnums.pb.h | 68 ++++++---- 5 files changed, 83 insertions(+), 121 deletions(-) diff --git a/protobufs b/protobufs index c5fa71fbb..d47300965 160000 --- a/protobufs +++ b/protobufs @@ -1 +1 @@ -Subproject commit c5fa71fbb68b8d4044cb6a6d72f06257ac29dd9c +Subproject commit d47300965904a8d55d109327568e19a2eb9a12c0 diff --git a/src/mesh/generated/meshtastic/admin.pb.h b/src/mesh/generated/meshtastic/admin.pb.h index aa39244ff..89e1fde0c 100644 --- a/src/mesh/generated/meshtastic/admin.pb.h +++ b/src/mesh/generated/meshtastic/admin.pb.h @@ -55,6 +55,8 @@ typedef enum _meshtastic_AdminMessage_ModuleConfigType { /* TODO: REPLACE */ meshtastic_AdminMessage_ModuleConfigType_REMOTEHARDWARE_CONFIG = 8, /* TODO: REPLACE */ + meshtastic_AdminMessage_ModuleConfigType_NEIGHBORINFO_CONFIG = 9, + /* TODO: REPLACE */ meshtastic_AdminMessage_ModuleConfigType_AMBIENTLIGHTING_CONFIG = 10 } meshtastic_AdminMessage_ModuleConfigType; diff --git a/src/mesh/generated/meshtastic/deviceonly.pb.h b/src/mesh/generated/meshtastic/deviceonly.pb.h index a093c9fe2..0c4b94c86 100644 --- a/src/mesh/generated/meshtastic/deviceonly.pb.h +++ b/src/mesh/generated/meshtastic/deviceonly.pb.h @@ -124,10 +124,6 @@ typedef struct _meshtastic_DeviceState { /* My owner info */ bool has_owner; meshtastic_User owner; - /* Deprecated in 2.1.x - Old node_db. See NodeInfoLite node_db_lite */ - pb_size_t node_db_count; - meshtastic_NodeInfo node_db[80]; /* Received packets saved for delivery to the phone */ pb_size_t receive_queue_count; meshtastic_MeshPacket receive_queue[1]; @@ -178,13 +174,13 @@ extern "C" { /* Initializer values for message structs */ -#define meshtastic_DeviceState_init_default {false, meshtastic_MyNodeInfo_init_default, false, meshtastic_User_init_default, 0, {meshtastic_NodeInfo_init_default, meshtastic_NodeInfo_init_default, meshtastic_NodeInfo_init_default, meshtastic_NodeInfo_init_default, meshtastic_NodeInfo_init_default, meshtastic_NodeInfo_init_default, meshtastic_NodeInfo_init_default, meshtastic_NodeInfo_init_default, meshtastic_NodeInfo_init_default, meshtastic_NodeInfo_init_default, meshtastic_NodeInfo_init_default, meshtastic_NodeInfo_init_default, meshtastic_NodeInfo_init_default, meshtastic_NodeInfo_init_default, meshtastic_NodeInfo_init_default, meshtastic_NodeInfo_init_default, meshtastic_NodeInfo_init_default, meshtastic_NodeInfo_init_default, meshtastic_NodeInfo_init_default, meshtastic_NodeInfo_init_default, meshtastic_NodeInfo_init_default, meshtastic_NodeInfo_init_default, meshtastic_NodeInfo_init_default, meshtastic_NodeInfo_init_default, meshtastic_NodeInfo_init_default, meshtastic_NodeInfo_init_default, meshtastic_NodeInfo_init_default, meshtastic_NodeInfo_init_default, meshtastic_NodeInfo_init_default, meshtastic_NodeInfo_init_default, meshtastic_NodeInfo_init_default, meshtastic_NodeInfo_init_default, meshtastic_NodeInfo_init_default, meshtastic_NodeInfo_init_default, meshtastic_NodeInfo_init_default, meshtastic_NodeInfo_init_default, meshtastic_NodeInfo_init_default, meshtastic_NodeInfo_init_default, meshtastic_NodeInfo_init_default, meshtastic_NodeInfo_init_default, meshtastic_NodeInfo_init_default, meshtastic_NodeInfo_init_default, meshtastic_NodeInfo_init_default, meshtastic_NodeInfo_init_default, meshtastic_NodeInfo_init_default, meshtastic_NodeInfo_init_default, meshtastic_NodeInfo_init_default, meshtastic_NodeInfo_init_default, meshtastic_NodeInfo_init_default, meshtastic_NodeInfo_init_default, meshtastic_NodeInfo_init_default, meshtastic_NodeInfo_init_default, meshtastic_NodeInfo_init_default, meshtastic_NodeInfo_init_default, meshtastic_NodeInfo_init_default, meshtastic_NodeInfo_init_default, meshtastic_NodeInfo_init_default, meshtastic_NodeInfo_init_default, meshtastic_NodeInfo_init_default, meshtastic_NodeInfo_init_default, meshtastic_NodeInfo_init_default, meshtastic_NodeInfo_init_default, meshtastic_NodeInfo_init_default, meshtastic_NodeInfo_init_default, meshtastic_NodeInfo_init_default, meshtastic_NodeInfo_init_default, meshtastic_NodeInfo_init_default, meshtastic_NodeInfo_init_default, meshtastic_NodeInfo_init_default, meshtastic_NodeInfo_init_default, meshtastic_NodeInfo_init_default, meshtastic_NodeInfo_init_default, meshtastic_NodeInfo_init_default, meshtastic_NodeInfo_init_default, meshtastic_NodeInfo_init_default, meshtastic_NodeInfo_init_default, meshtastic_NodeInfo_init_default, meshtastic_NodeInfo_init_default, meshtastic_NodeInfo_init_default, meshtastic_NodeInfo_init_default}, 0, {meshtastic_MeshPacket_init_default}, false, meshtastic_MeshPacket_init_default, 0, 0, 0, false, meshtastic_MeshPacket_init_default, 0, {meshtastic_NodeRemoteHardwarePin_init_default, meshtastic_NodeRemoteHardwarePin_init_default, meshtastic_NodeRemoteHardwarePin_init_default, meshtastic_NodeRemoteHardwarePin_init_default, meshtastic_NodeRemoteHardwarePin_init_default, meshtastic_NodeRemoteHardwarePin_init_default, meshtastic_NodeRemoteHardwarePin_init_default, meshtastic_NodeRemoteHardwarePin_init_default, meshtastic_NodeRemoteHardwarePin_init_default, meshtastic_NodeRemoteHardwarePin_init_default, meshtastic_NodeRemoteHardwarePin_init_default, meshtastic_NodeRemoteHardwarePin_init_default}, 0, {meshtastic_NodeInfoLite_init_default, meshtastic_NodeInfoLite_init_default, meshtastic_NodeInfoLite_init_default, meshtastic_NodeInfoLite_init_default, meshtastic_NodeInfoLite_init_default, meshtastic_NodeInfoLite_init_default, meshtastic_NodeInfoLite_init_default, meshtastic_NodeInfoLite_init_default, meshtastic_NodeInfoLite_init_default, meshtastic_NodeInfoLite_init_default, meshtastic_NodeInfoLite_init_default, meshtastic_NodeInfoLite_init_default, meshtastic_NodeInfoLite_init_default, meshtastic_NodeInfoLite_init_default, meshtastic_NodeInfoLite_init_default, meshtastic_NodeInfoLite_init_default, meshtastic_NodeInfoLite_init_default, meshtastic_NodeInfoLite_init_default, meshtastic_NodeInfoLite_init_default, meshtastic_NodeInfoLite_init_default, meshtastic_NodeInfoLite_init_default, meshtastic_NodeInfoLite_init_default, meshtastic_NodeInfoLite_init_default, meshtastic_NodeInfoLite_init_default, meshtastic_NodeInfoLite_init_default, meshtastic_NodeInfoLite_init_default, meshtastic_NodeInfoLite_init_default, meshtastic_NodeInfoLite_init_default, meshtastic_NodeInfoLite_init_default, meshtastic_NodeInfoLite_init_default, meshtastic_NodeInfoLite_init_default, meshtastic_NodeInfoLite_init_default, meshtastic_NodeInfoLite_init_default, meshtastic_NodeInfoLite_init_default, meshtastic_NodeInfoLite_init_default, meshtastic_NodeInfoLite_init_default, meshtastic_NodeInfoLite_init_default, meshtastic_NodeInfoLite_init_default, meshtastic_NodeInfoLite_init_default, meshtastic_NodeInfoLite_init_default, meshtastic_NodeInfoLite_init_default, meshtastic_NodeInfoLite_init_default, meshtastic_NodeInfoLite_init_default, meshtastic_NodeInfoLite_init_default, meshtastic_NodeInfoLite_init_default, meshtastic_NodeInfoLite_init_default, meshtastic_NodeInfoLite_init_default, meshtastic_NodeInfoLite_init_default, meshtastic_NodeInfoLite_init_default, meshtastic_NodeInfoLite_init_default, meshtastic_NodeInfoLite_init_default, meshtastic_NodeInfoLite_init_default, meshtastic_NodeInfoLite_init_default, meshtastic_NodeInfoLite_init_default, meshtastic_NodeInfoLite_init_default, meshtastic_NodeInfoLite_init_default, meshtastic_NodeInfoLite_init_default, meshtastic_NodeInfoLite_init_default, meshtastic_NodeInfoLite_init_default, meshtastic_NodeInfoLite_init_default, meshtastic_NodeInfoLite_init_default, meshtastic_NodeInfoLite_init_default, meshtastic_NodeInfoLite_init_default, meshtastic_NodeInfoLite_init_default, meshtastic_NodeInfoLite_init_default, meshtastic_NodeInfoLite_init_default, meshtastic_NodeInfoLite_init_default, meshtastic_NodeInfoLite_init_default, meshtastic_NodeInfoLite_init_default, meshtastic_NodeInfoLite_init_default, meshtastic_NodeInfoLite_init_default, meshtastic_NodeInfoLite_init_default, meshtastic_NodeInfoLite_init_default, meshtastic_NodeInfoLite_init_default, meshtastic_NodeInfoLite_init_default, meshtastic_NodeInfoLite_init_default, meshtastic_NodeInfoLite_init_default, meshtastic_NodeInfoLite_init_default, meshtastic_NodeInfoLite_init_default, meshtastic_NodeInfoLite_init_default}} +#define meshtastic_DeviceState_init_default {false, meshtastic_MyNodeInfo_init_default, false, meshtastic_User_init_default, 0, {meshtastic_MeshPacket_init_default}, false, meshtastic_MeshPacket_init_default, 0, 0, 0, false, meshtastic_MeshPacket_init_default, 0, {meshtastic_NodeRemoteHardwarePin_init_default, meshtastic_NodeRemoteHardwarePin_init_default, meshtastic_NodeRemoteHardwarePin_init_default, meshtastic_NodeRemoteHardwarePin_init_default, meshtastic_NodeRemoteHardwarePin_init_default, meshtastic_NodeRemoteHardwarePin_init_default, meshtastic_NodeRemoteHardwarePin_init_default, meshtastic_NodeRemoteHardwarePin_init_default, meshtastic_NodeRemoteHardwarePin_init_default, meshtastic_NodeRemoteHardwarePin_init_default, meshtastic_NodeRemoteHardwarePin_init_default, meshtastic_NodeRemoteHardwarePin_init_default}, 0, {meshtastic_NodeInfoLite_init_default, meshtastic_NodeInfoLite_init_default, meshtastic_NodeInfoLite_init_default, meshtastic_NodeInfoLite_init_default, meshtastic_NodeInfoLite_init_default, meshtastic_NodeInfoLite_init_default, meshtastic_NodeInfoLite_init_default, meshtastic_NodeInfoLite_init_default, meshtastic_NodeInfoLite_init_default, meshtastic_NodeInfoLite_init_default, meshtastic_NodeInfoLite_init_default, meshtastic_NodeInfoLite_init_default, meshtastic_NodeInfoLite_init_default, meshtastic_NodeInfoLite_init_default, meshtastic_NodeInfoLite_init_default, meshtastic_NodeInfoLite_init_default, meshtastic_NodeInfoLite_init_default, meshtastic_NodeInfoLite_init_default, meshtastic_NodeInfoLite_init_default, meshtastic_NodeInfoLite_init_default, meshtastic_NodeInfoLite_init_default, meshtastic_NodeInfoLite_init_default, meshtastic_NodeInfoLite_init_default, meshtastic_NodeInfoLite_init_default, meshtastic_NodeInfoLite_init_default, meshtastic_NodeInfoLite_init_default, meshtastic_NodeInfoLite_init_default, meshtastic_NodeInfoLite_init_default, meshtastic_NodeInfoLite_init_default, meshtastic_NodeInfoLite_init_default, meshtastic_NodeInfoLite_init_default, meshtastic_NodeInfoLite_init_default, meshtastic_NodeInfoLite_init_default, meshtastic_NodeInfoLite_init_default, meshtastic_NodeInfoLite_init_default, meshtastic_NodeInfoLite_init_default, meshtastic_NodeInfoLite_init_default, meshtastic_NodeInfoLite_init_default, meshtastic_NodeInfoLite_init_default, meshtastic_NodeInfoLite_init_default, meshtastic_NodeInfoLite_init_default, meshtastic_NodeInfoLite_init_default, meshtastic_NodeInfoLite_init_default, meshtastic_NodeInfoLite_init_default, meshtastic_NodeInfoLite_init_default, meshtastic_NodeInfoLite_init_default, meshtastic_NodeInfoLite_init_default, meshtastic_NodeInfoLite_init_default, meshtastic_NodeInfoLite_init_default, meshtastic_NodeInfoLite_init_default, meshtastic_NodeInfoLite_init_default, meshtastic_NodeInfoLite_init_default, meshtastic_NodeInfoLite_init_default, meshtastic_NodeInfoLite_init_default, meshtastic_NodeInfoLite_init_default, meshtastic_NodeInfoLite_init_default, meshtastic_NodeInfoLite_init_default, meshtastic_NodeInfoLite_init_default, meshtastic_NodeInfoLite_init_default, meshtastic_NodeInfoLite_init_default, meshtastic_NodeInfoLite_init_default, meshtastic_NodeInfoLite_init_default, meshtastic_NodeInfoLite_init_default, meshtastic_NodeInfoLite_init_default, meshtastic_NodeInfoLite_init_default, meshtastic_NodeInfoLite_init_default, meshtastic_NodeInfoLite_init_default, meshtastic_NodeInfoLite_init_default, meshtastic_NodeInfoLite_init_default, meshtastic_NodeInfoLite_init_default, meshtastic_NodeInfoLite_init_default, meshtastic_NodeInfoLite_init_default, meshtastic_NodeInfoLite_init_default, meshtastic_NodeInfoLite_init_default, meshtastic_NodeInfoLite_init_default, meshtastic_NodeInfoLite_init_default, meshtastic_NodeInfoLite_init_default, meshtastic_NodeInfoLite_init_default, meshtastic_NodeInfoLite_init_default, meshtastic_NodeInfoLite_init_default}} #define meshtastic_NodeInfoLite_init_default {0, false, meshtastic_User_init_default, false, meshtastic_PositionLite_init_default, 0, 0, false, meshtastic_DeviceMetrics_init_default, 0} #define meshtastic_PositionLite_init_default {0, 0, 0, 0, _meshtastic_Position_LocSource_MIN} #define meshtastic_ChannelFile_init_default {0, {meshtastic_Channel_init_default, meshtastic_Channel_init_default, meshtastic_Channel_init_default, meshtastic_Channel_init_default, meshtastic_Channel_init_default, meshtastic_Channel_init_default, meshtastic_Channel_init_default, meshtastic_Channel_init_default}, 0} #define meshtastic_OEMStore_init_default {0, 0, {0, {0}}, _meshtastic_ScreenFonts_MIN, "", {0, {0}}, false, meshtastic_LocalConfig_init_default, false, meshtastic_LocalModuleConfig_init_default} #define meshtastic_NodeRemoteHardwarePin_init_default {0, false, meshtastic_RemoteHardwarePin_init_default} -#define meshtastic_DeviceState_init_zero {false, meshtastic_MyNodeInfo_init_zero, false, meshtastic_User_init_zero, 0, {meshtastic_NodeInfo_init_zero, meshtastic_NodeInfo_init_zero, meshtastic_NodeInfo_init_zero, meshtastic_NodeInfo_init_zero, meshtastic_NodeInfo_init_zero, meshtastic_NodeInfo_init_zero, meshtastic_NodeInfo_init_zero, meshtastic_NodeInfo_init_zero, meshtastic_NodeInfo_init_zero, meshtastic_NodeInfo_init_zero, meshtastic_NodeInfo_init_zero, meshtastic_NodeInfo_init_zero, meshtastic_NodeInfo_init_zero, meshtastic_NodeInfo_init_zero, meshtastic_NodeInfo_init_zero, meshtastic_NodeInfo_init_zero, meshtastic_NodeInfo_init_zero, meshtastic_NodeInfo_init_zero, meshtastic_NodeInfo_init_zero, meshtastic_NodeInfo_init_zero, meshtastic_NodeInfo_init_zero, meshtastic_NodeInfo_init_zero, meshtastic_NodeInfo_init_zero, meshtastic_NodeInfo_init_zero, meshtastic_NodeInfo_init_zero, meshtastic_NodeInfo_init_zero, meshtastic_NodeInfo_init_zero, meshtastic_NodeInfo_init_zero, meshtastic_NodeInfo_init_zero, meshtastic_NodeInfo_init_zero, meshtastic_NodeInfo_init_zero, meshtastic_NodeInfo_init_zero, meshtastic_NodeInfo_init_zero, meshtastic_NodeInfo_init_zero, meshtastic_NodeInfo_init_zero, meshtastic_NodeInfo_init_zero, meshtastic_NodeInfo_init_zero, meshtastic_NodeInfo_init_zero, meshtastic_NodeInfo_init_zero, meshtastic_NodeInfo_init_zero, meshtastic_NodeInfo_init_zero, meshtastic_NodeInfo_init_zero, meshtastic_NodeInfo_init_zero, meshtastic_NodeInfo_init_zero, meshtastic_NodeInfo_init_zero, meshtastic_NodeInfo_init_zero, meshtastic_NodeInfo_init_zero, meshtastic_NodeInfo_init_zero, meshtastic_NodeInfo_init_zero, meshtastic_NodeInfo_init_zero, meshtastic_NodeInfo_init_zero, meshtastic_NodeInfo_init_zero, meshtastic_NodeInfo_init_zero, meshtastic_NodeInfo_init_zero, meshtastic_NodeInfo_init_zero, meshtastic_NodeInfo_init_zero, meshtastic_NodeInfo_init_zero, meshtastic_NodeInfo_init_zero, meshtastic_NodeInfo_init_zero, meshtastic_NodeInfo_init_zero, meshtastic_NodeInfo_init_zero, meshtastic_NodeInfo_init_zero, meshtastic_NodeInfo_init_zero, meshtastic_NodeInfo_init_zero, meshtastic_NodeInfo_init_zero, meshtastic_NodeInfo_init_zero, meshtastic_NodeInfo_init_zero, meshtastic_NodeInfo_init_zero, meshtastic_NodeInfo_init_zero, meshtastic_NodeInfo_init_zero, meshtastic_NodeInfo_init_zero, meshtastic_NodeInfo_init_zero, meshtastic_NodeInfo_init_zero, meshtastic_NodeInfo_init_zero, meshtastic_NodeInfo_init_zero, meshtastic_NodeInfo_init_zero, meshtastic_NodeInfo_init_zero, meshtastic_NodeInfo_init_zero, meshtastic_NodeInfo_init_zero, meshtastic_NodeInfo_init_zero}, 0, {meshtastic_MeshPacket_init_zero}, false, meshtastic_MeshPacket_init_zero, 0, 0, 0, false, meshtastic_MeshPacket_init_zero, 0, {meshtastic_NodeRemoteHardwarePin_init_zero, meshtastic_NodeRemoteHardwarePin_init_zero, meshtastic_NodeRemoteHardwarePin_init_zero, meshtastic_NodeRemoteHardwarePin_init_zero, meshtastic_NodeRemoteHardwarePin_init_zero, meshtastic_NodeRemoteHardwarePin_init_zero, meshtastic_NodeRemoteHardwarePin_init_zero, meshtastic_NodeRemoteHardwarePin_init_zero, meshtastic_NodeRemoteHardwarePin_init_zero, meshtastic_NodeRemoteHardwarePin_init_zero, meshtastic_NodeRemoteHardwarePin_init_zero, meshtastic_NodeRemoteHardwarePin_init_zero}, 0, {meshtastic_NodeInfoLite_init_zero, meshtastic_NodeInfoLite_init_zero, meshtastic_NodeInfoLite_init_zero, meshtastic_NodeInfoLite_init_zero, meshtastic_NodeInfoLite_init_zero, meshtastic_NodeInfoLite_init_zero, meshtastic_NodeInfoLite_init_zero, meshtastic_NodeInfoLite_init_zero, meshtastic_NodeInfoLite_init_zero, meshtastic_NodeInfoLite_init_zero, meshtastic_NodeInfoLite_init_zero, meshtastic_NodeInfoLite_init_zero, meshtastic_NodeInfoLite_init_zero, meshtastic_NodeInfoLite_init_zero, meshtastic_NodeInfoLite_init_zero, meshtastic_NodeInfoLite_init_zero, meshtastic_NodeInfoLite_init_zero, meshtastic_NodeInfoLite_init_zero, meshtastic_NodeInfoLite_init_zero, meshtastic_NodeInfoLite_init_zero, meshtastic_NodeInfoLite_init_zero, meshtastic_NodeInfoLite_init_zero, meshtastic_NodeInfoLite_init_zero, meshtastic_NodeInfoLite_init_zero, meshtastic_NodeInfoLite_init_zero, meshtastic_NodeInfoLite_init_zero, meshtastic_NodeInfoLite_init_zero, meshtastic_NodeInfoLite_init_zero, meshtastic_NodeInfoLite_init_zero, meshtastic_NodeInfoLite_init_zero, meshtastic_NodeInfoLite_init_zero, meshtastic_NodeInfoLite_init_zero, meshtastic_NodeInfoLite_init_zero, meshtastic_NodeInfoLite_init_zero, meshtastic_NodeInfoLite_init_zero, meshtastic_NodeInfoLite_init_zero, meshtastic_NodeInfoLite_init_zero, meshtastic_NodeInfoLite_init_zero, meshtastic_NodeInfoLite_init_zero, meshtastic_NodeInfoLite_init_zero, meshtastic_NodeInfoLite_init_zero, meshtastic_NodeInfoLite_init_zero, meshtastic_NodeInfoLite_init_zero, meshtastic_NodeInfoLite_init_zero, meshtastic_NodeInfoLite_init_zero, meshtastic_NodeInfoLite_init_zero, meshtastic_NodeInfoLite_init_zero, meshtastic_NodeInfoLite_init_zero, meshtastic_NodeInfoLite_init_zero, meshtastic_NodeInfoLite_init_zero, meshtastic_NodeInfoLite_init_zero, meshtastic_NodeInfoLite_init_zero, meshtastic_NodeInfoLite_init_zero, meshtastic_NodeInfoLite_init_zero, meshtastic_NodeInfoLite_init_zero, meshtastic_NodeInfoLite_init_zero, meshtastic_NodeInfoLite_init_zero, meshtastic_NodeInfoLite_init_zero, meshtastic_NodeInfoLite_init_zero, meshtastic_NodeInfoLite_init_zero, meshtastic_NodeInfoLite_init_zero, meshtastic_NodeInfoLite_init_zero, meshtastic_NodeInfoLite_init_zero, meshtastic_NodeInfoLite_init_zero, meshtastic_NodeInfoLite_init_zero, meshtastic_NodeInfoLite_init_zero, meshtastic_NodeInfoLite_init_zero, meshtastic_NodeInfoLite_init_zero, meshtastic_NodeInfoLite_init_zero, meshtastic_NodeInfoLite_init_zero, meshtastic_NodeInfoLite_init_zero, meshtastic_NodeInfoLite_init_zero, meshtastic_NodeInfoLite_init_zero, meshtastic_NodeInfoLite_init_zero, meshtastic_NodeInfoLite_init_zero, meshtastic_NodeInfoLite_init_zero, meshtastic_NodeInfoLite_init_zero, meshtastic_NodeInfoLite_init_zero, meshtastic_NodeInfoLite_init_zero, meshtastic_NodeInfoLite_init_zero}} +#define meshtastic_DeviceState_init_zero {false, meshtastic_MyNodeInfo_init_zero, false, meshtastic_User_init_zero, 0, {meshtastic_MeshPacket_init_zero}, false, meshtastic_MeshPacket_init_zero, 0, 0, 0, false, meshtastic_MeshPacket_init_zero, 0, {meshtastic_NodeRemoteHardwarePin_init_zero, meshtastic_NodeRemoteHardwarePin_init_zero, meshtastic_NodeRemoteHardwarePin_init_zero, meshtastic_NodeRemoteHardwarePin_init_zero, meshtastic_NodeRemoteHardwarePin_init_zero, meshtastic_NodeRemoteHardwarePin_init_zero, meshtastic_NodeRemoteHardwarePin_init_zero, meshtastic_NodeRemoteHardwarePin_init_zero, meshtastic_NodeRemoteHardwarePin_init_zero, meshtastic_NodeRemoteHardwarePin_init_zero, meshtastic_NodeRemoteHardwarePin_init_zero, meshtastic_NodeRemoteHardwarePin_init_zero}, 0, {meshtastic_NodeInfoLite_init_zero, meshtastic_NodeInfoLite_init_zero, meshtastic_NodeInfoLite_init_zero, meshtastic_NodeInfoLite_init_zero, meshtastic_NodeInfoLite_init_zero, meshtastic_NodeInfoLite_init_zero, meshtastic_NodeInfoLite_init_zero, meshtastic_NodeInfoLite_init_zero, meshtastic_NodeInfoLite_init_zero, meshtastic_NodeInfoLite_init_zero, meshtastic_NodeInfoLite_init_zero, meshtastic_NodeInfoLite_init_zero, meshtastic_NodeInfoLite_init_zero, meshtastic_NodeInfoLite_init_zero, meshtastic_NodeInfoLite_init_zero, meshtastic_NodeInfoLite_init_zero, meshtastic_NodeInfoLite_init_zero, meshtastic_NodeInfoLite_init_zero, meshtastic_NodeInfoLite_init_zero, meshtastic_NodeInfoLite_init_zero, meshtastic_NodeInfoLite_init_zero, meshtastic_NodeInfoLite_init_zero, meshtastic_NodeInfoLite_init_zero, meshtastic_NodeInfoLite_init_zero, meshtastic_NodeInfoLite_init_zero, meshtastic_NodeInfoLite_init_zero, meshtastic_NodeInfoLite_init_zero, meshtastic_NodeInfoLite_init_zero, meshtastic_NodeInfoLite_init_zero, meshtastic_NodeInfoLite_init_zero, meshtastic_NodeInfoLite_init_zero, meshtastic_NodeInfoLite_init_zero, meshtastic_NodeInfoLite_init_zero, meshtastic_NodeInfoLite_init_zero, meshtastic_NodeInfoLite_init_zero, meshtastic_NodeInfoLite_init_zero, meshtastic_NodeInfoLite_init_zero, meshtastic_NodeInfoLite_init_zero, meshtastic_NodeInfoLite_init_zero, meshtastic_NodeInfoLite_init_zero, meshtastic_NodeInfoLite_init_zero, meshtastic_NodeInfoLite_init_zero, meshtastic_NodeInfoLite_init_zero, meshtastic_NodeInfoLite_init_zero, meshtastic_NodeInfoLite_init_zero, meshtastic_NodeInfoLite_init_zero, meshtastic_NodeInfoLite_init_zero, meshtastic_NodeInfoLite_init_zero, meshtastic_NodeInfoLite_init_zero, meshtastic_NodeInfoLite_init_zero, meshtastic_NodeInfoLite_init_zero, meshtastic_NodeInfoLite_init_zero, meshtastic_NodeInfoLite_init_zero, meshtastic_NodeInfoLite_init_zero, meshtastic_NodeInfoLite_init_zero, meshtastic_NodeInfoLite_init_zero, meshtastic_NodeInfoLite_init_zero, meshtastic_NodeInfoLite_init_zero, meshtastic_NodeInfoLite_init_zero, meshtastic_NodeInfoLite_init_zero, meshtastic_NodeInfoLite_init_zero, meshtastic_NodeInfoLite_init_zero, meshtastic_NodeInfoLite_init_zero, meshtastic_NodeInfoLite_init_zero, meshtastic_NodeInfoLite_init_zero, meshtastic_NodeInfoLite_init_zero, meshtastic_NodeInfoLite_init_zero, meshtastic_NodeInfoLite_init_zero, meshtastic_NodeInfoLite_init_zero, meshtastic_NodeInfoLite_init_zero, meshtastic_NodeInfoLite_init_zero, meshtastic_NodeInfoLite_init_zero, meshtastic_NodeInfoLite_init_zero, meshtastic_NodeInfoLite_init_zero, meshtastic_NodeInfoLite_init_zero, meshtastic_NodeInfoLite_init_zero, meshtastic_NodeInfoLite_init_zero, meshtastic_NodeInfoLite_init_zero, meshtastic_NodeInfoLite_init_zero, meshtastic_NodeInfoLite_init_zero}} #define meshtastic_NodeInfoLite_init_zero {0, false, meshtastic_User_init_zero, false, meshtastic_PositionLite_init_zero, 0, 0, false, meshtastic_DeviceMetrics_init_zero, 0} #define meshtastic_PositionLite_init_zero {0, 0, 0, 0, _meshtastic_Position_LocSource_MIN} #define meshtastic_ChannelFile_init_zero {0, {meshtastic_Channel_init_zero, meshtastic_Channel_init_zero, meshtastic_Channel_init_zero, meshtastic_Channel_init_zero, meshtastic_Channel_init_zero, meshtastic_Channel_init_zero, meshtastic_Channel_init_zero, meshtastic_Channel_init_zero}, 0} @@ -218,7 +214,6 @@ extern "C" { #define meshtastic_NodeRemoteHardwarePin_pin_tag 2 #define meshtastic_DeviceState_my_node_tag 2 #define meshtastic_DeviceState_owner_tag 3 -#define meshtastic_DeviceState_node_db_tag 4 #define meshtastic_DeviceState_receive_queue_tag 5 #define meshtastic_DeviceState_rx_text_message_tag 7 #define meshtastic_DeviceState_version_tag 8 @@ -232,7 +227,6 @@ extern "C" { #define meshtastic_DeviceState_FIELDLIST(X, a) \ X(a, STATIC, OPTIONAL, MESSAGE, my_node, 2) \ X(a, STATIC, OPTIONAL, MESSAGE, owner, 3) \ -X(a, STATIC, REPEATED, MESSAGE, node_db, 4) \ X(a, STATIC, REPEATED, MESSAGE, receive_queue, 5) \ X(a, STATIC, OPTIONAL, MESSAGE, rx_text_message, 7) \ X(a, STATIC, SINGULAR, UINT32, version, 8) \ @@ -245,7 +239,6 @@ X(a, STATIC, REPEATED, MESSAGE, node_db_lite, 14) #define meshtastic_DeviceState_DEFAULT NULL #define meshtastic_DeviceState_my_node_MSGTYPE meshtastic_MyNodeInfo #define meshtastic_DeviceState_owner_MSGTYPE meshtastic_User -#define meshtastic_DeviceState_node_db_MSGTYPE meshtastic_NodeInfo #define meshtastic_DeviceState_receive_queue_MSGTYPE meshtastic_MeshPacket #define meshtastic_DeviceState_rx_text_message_MSGTYPE meshtastic_MeshPacket #define meshtastic_DeviceState_rx_waypoint_MSGTYPE meshtastic_MeshPacket @@ -320,7 +313,7 @@ extern const pb_msgdesc_t meshtastic_NodeRemoteHardwarePin_msg; /* Maximum encoded size of messages (where known) */ #define meshtastic_ChannelFile_size 638 -#define meshtastic_DeviceState_size 35056 +#define meshtastic_DeviceState_size 13774 #define meshtastic_NodeInfoLite_size 151 #define meshtastic_NodeRemoteHardwarePin_size 29 #define meshtastic_OEMStore_size 3154 diff --git a/src/mesh/generated/meshtastic/mesh.pb.h b/src/mesh/generated/meshtastic/mesh.pb.h index 7fffe9ea7..79800f3c8 100644 --- a/src/mesh/generated/meshtastic/mesh.pb.h +++ b/src/mesh/generated/meshtastic/mesh.pb.h @@ -103,10 +103,12 @@ typedef enum _meshtastic_HardwareModel { meshtastic_HardwareModel_HELTEC_WIRELESS_TRACKER = 48, /* Heltec Wireless Paper with ESP32-S3 CPU and E-Ink display */ meshtastic_HardwareModel_HELTEC_WIRELESS_PAPER = 49, - /* LilyGo T-Deck with ESP32-S3 CPU, Keyboard, and IPS display */ + /* LilyGo T-Deck with ESP32-S3 CPU, Keyboard and IPS display */ meshtastic_HardwareModel_T_DECK = 50, /* LilyGo T-Watch S3 with ESP32-S3 CPU and IPS display */ meshtastic_HardwareModel_T_WATCH_S3 = 51, + /* Bobricius Picomputer with ESP32-S3 CPU, Keyboard and IPS display */ + meshtastic_HardwareModel_PICOMPUTER_S3 = 52, /* ------------------------------------------------------------------------------------------------------------------------------------------ Reserved ID For developing private Ports. These will show up in live traffic sparsely, so we can use a high number. Keep it within 8 bits. ------------------------------------------------------------------------------------------------------------------------------------------ */ @@ -605,60 +607,12 @@ typedef struct _meshtastic_MyNodeInfo { /* Tells the phone what our node number is, default starting value is lowbyte of macaddr, but it will be fixed if that is already in use */ uint32_t my_node_num; - /* Deprecated in 2.1.x (Source from device_metadata) - Note: This flag merely means we detected a hardware GPS in our node. - Not the same as UserPreferences.location_sharing */ - bool has_gps; - /* Deprecated in 2.1.x - The maximum number of 'software' channels that can be set on this node. */ - uint32_t max_channels; - /* Deprecated in 2.1.x (Source from device_metadata) - 0.0.5 etc... */ - char firmware_version[18]; - /* An error message we'd like to report back to the mothership through analytics. - It indicates a serious bug occurred on the device, the device coped with it, - but we still want to tell the devs about the bug. - This field will be cleared after the phone reads MyNodeInfo - (i.e. it will only be reported once) - a numeric error code to go with error message, zero means no error */ - meshtastic_CriticalErrorCode error_code; - /* A numeric error address (nonzero if available) */ - uint32_t error_address; - /* The total number of errors this node has ever encountered - (well - since the last time we discarded preferences) */ - uint32_t error_count; /* The total number of reboots this node has ever encountered (well - since the last time we discarded preferences) */ uint32_t reboot_count; - /* Deprecated in 2.1.x - Calculated bitrate of the current channel (in Bytes Per Second) */ - float bitrate; - /* Deprecated in 2.1.x - How long before we consider a message abandoned and we can clear our - caches of any messages in flight Normally quite large to handle the worst case - message delivery time, 5 minutes. - Formerly called FLOOD_EXPIRE_TIME in the device code */ - uint32_t message_timeout_msec; /* The minimum app version that can talk to this device. Phone/PC apps should compare this to their build number and if too low tell the user they must update their app */ uint32_t min_app_version; - /* Deprecated in 2.1.x (Only used on device to keep track of utilization) - 24 time windows of 1hr each with the airtime transmitted out of the device per hour. */ - pb_size_t air_period_tx_count; - uint32_t air_period_tx[8]; - /* Deprecated in 2.1.x (Only used on device to keep track of utilization) - 24 time windows of 1hr each with the airtime of valid packets for your mesh. */ - pb_size_t air_period_rx_count; - uint32_t air_period_rx[8]; - /* Deprecated in 2.1.x (Source from DeviceMetadata instead) - Is the device wifi capable? */ - bool has_wifi; - /* Deprecated in 2.1.x (Source from DeviceMetrics telemetry payloads) - Utilization for the current channel, including well formed TX, RX and malformed RX (aka noise). */ - float channel_utilization; - /* Deprecated in 2.1.x (Source from DeviceMetrics telemetry payloads) - Percent of airtime for transmission used within the last hour. */ - float air_util_tx; } meshtastic_MyNodeInfo; /* Debug output from the device. @@ -729,6 +683,12 @@ typedef struct _meshtastic_Neighbor { uint32_t node_id; /* SNR of last heard message */ float snr; + /* Reception time (in secs since 1970) of last message that was last sent by this ID. + Note: this is for local storage only and will not be sent out over the mesh. */ + uint32_t last_rx_time; + /* Broadcast interval of this neighbor (in seconds). + Note: this is for local storage only and will not be sent out over the mesh. */ + uint32_t node_broadcast_interval_secs; } meshtastic_Neighbor; /* Full info on edges for a single node */ @@ -737,6 +697,8 @@ typedef struct _meshtastic_NeighborInfo { uint32_t node_id; /* Field to pass neighbor info for the next sending cycle */ uint32_t last_sent_by_id; + /* Broadcast interval of the represented node (in seconds) */ + uint32_t node_broadcast_interval_secs; /* The list of out edges from this node */ pb_size_t neighbors_count; meshtastic_Neighbor neighbors[10]; @@ -871,7 +833,6 @@ extern "C" { #define meshtastic_MeshPacket_delayed_ENUMTYPE meshtastic_MeshPacket_Delayed -#define meshtastic_MyNodeInfo_error_code_ENUMTYPE meshtastic_CriticalErrorCode #define meshtastic_LogRecord_level_ENUMTYPE meshtastic_LogRecord_Level @@ -896,14 +857,14 @@ extern "C" { #define meshtastic_MqttClientProxyMessage_init_default {"", 0, {{0, {0}}}, 0} #define meshtastic_MeshPacket_init_default {0, 0, 0, 0, {meshtastic_Data_init_default}, 0, 0, 0, 0, 0, _meshtastic_MeshPacket_Priority_MIN, 0, _meshtastic_MeshPacket_Delayed_MIN} #define meshtastic_NodeInfo_init_default {0, false, meshtastic_User_init_default, false, meshtastic_Position_init_default, 0, 0, false, meshtastic_DeviceMetrics_init_default, 0} -#define meshtastic_MyNodeInfo_init_default {0, 0, 0, "", _meshtastic_CriticalErrorCode_MIN, 0, 0, 0, 0, 0, 0, 0, {0, 0, 0, 0, 0, 0, 0, 0}, 0, {0, 0, 0, 0, 0, 0, 0, 0}, 0, 0, 0} +#define meshtastic_MyNodeInfo_init_default {0, 0, 0} #define meshtastic_LogRecord_init_default {"", 0, "", _meshtastic_LogRecord_Level_MIN} #define meshtastic_QueueStatus_init_default {0, 0, 0, 0} #define meshtastic_FromRadio_init_default {0, 0, {meshtastic_MeshPacket_init_default}} #define meshtastic_ToRadio_init_default {0, {meshtastic_MeshPacket_init_default}} #define meshtastic_Compressed_init_default {_meshtastic_PortNum_MIN, {0, {0}}} -#define meshtastic_NeighborInfo_init_default {0, 0, 0, {meshtastic_Neighbor_init_default, meshtastic_Neighbor_init_default, meshtastic_Neighbor_init_default, meshtastic_Neighbor_init_default, meshtastic_Neighbor_init_default, meshtastic_Neighbor_init_default, meshtastic_Neighbor_init_default, meshtastic_Neighbor_init_default, meshtastic_Neighbor_init_default, meshtastic_Neighbor_init_default}} -#define meshtastic_Neighbor_init_default {0, 0} +#define meshtastic_NeighborInfo_init_default {0, 0, 0, 0, {meshtastic_Neighbor_init_default, meshtastic_Neighbor_init_default, meshtastic_Neighbor_init_default, meshtastic_Neighbor_init_default, meshtastic_Neighbor_init_default, meshtastic_Neighbor_init_default, meshtastic_Neighbor_init_default, meshtastic_Neighbor_init_default, meshtastic_Neighbor_init_default, meshtastic_Neighbor_init_default}} +#define meshtastic_Neighbor_init_default {0, 0, 0, 0} #define meshtastic_DeviceMetadata_init_default {"", 0, 0, 0, 0, 0, _meshtastic_Config_DeviceConfig_Role_MIN, 0, _meshtastic_HardwareModel_MIN, 0} #define meshtastic_Position_init_zero {0, 0, 0, 0, _meshtastic_Position_LocSource_MIN, _meshtastic_Position_AltSource_MIN, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0} #define meshtastic_User_init_zero {"", "", "", {0}, _meshtastic_HardwareModel_MIN, 0} @@ -914,14 +875,14 @@ extern "C" { #define meshtastic_MqttClientProxyMessage_init_zero {"", 0, {{0, {0}}}, 0} #define meshtastic_MeshPacket_init_zero {0, 0, 0, 0, {meshtastic_Data_init_zero}, 0, 0, 0, 0, 0, _meshtastic_MeshPacket_Priority_MIN, 0, _meshtastic_MeshPacket_Delayed_MIN} #define meshtastic_NodeInfo_init_zero {0, false, meshtastic_User_init_zero, false, meshtastic_Position_init_zero, 0, 0, false, meshtastic_DeviceMetrics_init_zero, 0} -#define meshtastic_MyNodeInfo_init_zero {0, 0, 0, "", _meshtastic_CriticalErrorCode_MIN, 0, 0, 0, 0, 0, 0, 0, {0, 0, 0, 0, 0, 0, 0, 0}, 0, {0, 0, 0, 0, 0, 0, 0, 0}, 0, 0, 0} +#define meshtastic_MyNodeInfo_init_zero {0, 0, 0} #define meshtastic_LogRecord_init_zero {"", 0, "", _meshtastic_LogRecord_Level_MIN} #define meshtastic_QueueStatus_init_zero {0, 0, 0, 0} #define meshtastic_FromRadio_init_zero {0, 0, {meshtastic_MeshPacket_init_zero}} #define meshtastic_ToRadio_init_zero {0, {meshtastic_MeshPacket_init_zero}} #define meshtastic_Compressed_init_zero {_meshtastic_PortNum_MIN, {0, {0}}} -#define meshtastic_NeighborInfo_init_zero {0, 0, 0, {meshtastic_Neighbor_init_zero, meshtastic_Neighbor_init_zero, meshtastic_Neighbor_init_zero, meshtastic_Neighbor_init_zero, meshtastic_Neighbor_init_zero, meshtastic_Neighbor_init_zero, meshtastic_Neighbor_init_zero, meshtastic_Neighbor_init_zero, meshtastic_Neighbor_init_zero, meshtastic_Neighbor_init_zero}} -#define meshtastic_Neighbor_init_zero {0, 0} +#define meshtastic_NeighborInfo_init_zero {0, 0, 0, 0, {meshtastic_Neighbor_init_zero, meshtastic_Neighbor_init_zero, meshtastic_Neighbor_init_zero, meshtastic_Neighbor_init_zero, meshtastic_Neighbor_init_zero, meshtastic_Neighbor_init_zero, meshtastic_Neighbor_init_zero, meshtastic_Neighbor_init_zero, meshtastic_Neighbor_init_zero, meshtastic_Neighbor_init_zero}} +#define meshtastic_Neighbor_init_zero {0, 0, 0, 0} #define meshtastic_DeviceMetadata_init_zero {"", 0, 0, 0, 0, 0, _meshtastic_Config_DeviceConfig_Role_MIN, 0, _meshtastic_HardwareModel_MIN, 0} /* Field tags (for use in manual encoding/decoding) */ @@ -998,21 +959,8 @@ extern "C" { #define meshtastic_NodeInfo_device_metrics_tag 6 #define meshtastic_NodeInfo_channel_tag 7 #define meshtastic_MyNodeInfo_my_node_num_tag 1 -#define meshtastic_MyNodeInfo_has_gps_tag 2 -#define meshtastic_MyNodeInfo_max_channels_tag 3 -#define meshtastic_MyNodeInfo_firmware_version_tag 4 -#define meshtastic_MyNodeInfo_error_code_tag 5 -#define meshtastic_MyNodeInfo_error_address_tag 6 -#define meshtastic_MyNodeInfo_error_count_tag 7 #define meshtastic_MyNodeInfo_reboot_count_tag 8 -#define meshtastic_MyNodeInfo_bitrate_tag 9 -#define meshtastic_MyNodeInfo_message_timeout_msec_tag 10 #define meshtastic_MyNodeInfo_min_app_version_tag 11 -#define meshtastic_MyNodeInfo_air_period_tx_tag 12 -#define meshtastic_MyNodeInfo_air_period_rx_tag 13 -#define meshtastic_MyNodeInfo_has_wifi_tag 14 -#define meshtastic_MyNodeInfo_channel_utilization_tag 15 -#define meshtastic_MyNodeInfo_air_util_tx_tag 16 #define meshtastic_LogRecord_message_tag 1 #define meshtastic_LogRecord_time_tag 2 #define meshtastic_LogRecord_source_tag 3 @@ -1030,9 +978,12 @@ extern "C" { #define meshtastic_Compressed_data_tag 2 #define meshtastic_Neighbor_node_id_tag 1 #define meshtastic_Neighbor_snr_tag 2 +#define meshtastic_Neighbor_last_rx_time_tag 3 +#define meshtastic_Neighbor_node_broadcast_interval_secs_tag 4 #define meshtastic_NeighborInfo_node_id_tag 1 #define meshtastic_NeighborInfo_last_sent_by_id_tag 2 -#define meshtastic_NeighborInfo_neighbors_tag 3 +#define meshtastic_NeighborInfo_node_broadcast_interval_secs_tag 3 +#define meshtastic_NeighborInfo_neighbors_tag 4 #define meshtastic_DeviceMetadata_firmware_version_tag 1 #define meshtastic_DeviceMetadata_device_state_version_tag 2 #define meshtastic_DeviceMetadata_canShutdown_tag 3 @@ -1175,21 +1126,8 @@ X(a, STATIC, SINGULAR, UINT32, channel, 7) #define meshtastic_MyNodeInfo_FIELDLIST(X, a) \ X(a, STATIC, SINGULAR, UINT32, my_node_num, 1) \ -X(a, STATIC, SINGULAR, BOOL, has_gps, 2) \ -X(a, STATIC, SINGULAR, UINT32, max_channels, 3) \ -X(a, STATIC, SINGULAR, STRING, firmware_version, 4) \ -X(a, STATIC, SINGULAR, UENUM, error_code, 5) \ -X(a, STATIC, SINGULAR, UINT32, error_address, 6) \ -X(a, STATIC, SINGULAR, UINT32, error_count, 7) \ X(a, STATIC, SINGULAR, UINT32, reboot_count, 8) \ -X(a, STATIC, SINGULAR, FLOAT, bitrate, 9) \ -X(a, STATIC, SINGULAR, UINT32, message_timeout_msec, 10) \ -X(a, STATIC, SINGULAR, UINT32, min_app_version, 11) \ -X(a, STATIC, REPEATED, UINT32, air_period_tx, 12) \ -X(a, STATIC, REPEATED, UINT32, air_period_rx, 13) \ -X(a, STATIC, SINGULAR, BOOL, has_wifi, 14) \ -X(a, STATIC, SINGULAR, FLOAT, channel_utilization, 15) \ -X(a, STATIC, SINGULAR, FLOAT, air_util_tx, 16) +X(a, STATIC, SINGULAR, UINT32, min_app_version, 11) #define meshtastic_MyNodeInfo_CALLBACK NULL #define meshtastic_MyNodeInfo_DEFAULT NULL @@ -1259,14 +1197,17 @@ X(a, STATIC, SINGULAR, BYTES, data, 2) #define meshtastic_NeighborInfo_FIELDLIST(X, a) \ X(a, STATIC, SINGULAR, UINT32, node_id, 1) \ X(a, STATIC, SINGULAR, UINT32, last_sent_by_id, 2) \ -X(a, STATIC, REPEATED, MESSAGE, neighbors, 3) +X(a, STATIC, SINGULAR, UINT32, node_broadcast_interval_secs, 3) \ +X(a, STATIC, REPEATED, MESSAGE, neighbors, 4) #define meshtastic_NeighborInfo_CALLBACK NULL #define meshtastic_NeighborInfo_DEFAULT NULL #define meshtastic_NeighborInfo_neighbors_MSGTYPE meshtastic_Neighbor #define meshtastic_Neighbor_FIELDLIST(X, a) \ X(a, STATIC, SINGULAR, UINT32, node_id, 1) \ -X(a, STATIC, SINGULAR, FLOAT, snr, 2) +X(a, STATIC, SINGULAR, FLOAT, snr, 2) \ +X(a, STATIC, SINGULAR, FIXED32, last_rx_time, 3) \ +X(a, STATIC, SINGULAR, UINT32, node_broadcast_interval_secs, 4) #define meshtastic_Neighbor_CALLBACK NULL #define meshtastic_Neighbor_DEFAULT NULL @@ -1331,9 +1272,9 @@ extern const pb_msgdesc_t meshtastic_DeviceMetadata_msg; #define meshtastic_LogRecord_size 81 #define meshtastic_MeshPacket_size 321 #define meshtastic_MqttClientProxyMessage_size 501 -#define meshtastic_MyNodeInfo_size 179 -#define meshtastic_NeighborInfo_size 142 -#define meshtastic_Neighbor_size 11 +#define meshtastic_MyNodeInfo_size 18 +#define meshtastic_NeighborInfo_size 258 +#define meshtastic_Neighbor_size 22 #define meshtastic_NodeInfo_size 261 #define meshtastic_Position_size 137 #define meshtastic_QueueStatus_size 23 diff --git a/src/mesh/generated/meshtastic/portnums.pb.h b/src/mesh/generated/meshtastic/portnums.pb.h index 089d7b59f..44e9df70d 100644 --- a/src/mesh/generated/meshtastic/portnums.pb.h +++ b/src/mesh/generated/meshtastic/portnums.pb.h @@ -25,73 +25,99 @@ typedef enum _meshtastic_PortNum { /* Deprecated: do not use in new code (formerly called OPAQUE) A message sent from a device outside of the mesh, in a form the mesh does not understand - NOTE: This must be 0, because it is documented in IMeshService.aidl to be so */ + NOTE: This must be 0, because it is documented in IMeshService.aidl to be so + ENCODING: binary undefined */ meshtastic_PortNum_UNKNOWN_APP = 0, /* A simple UTF-8 text message, which even the little micros in the mesh can understand and show on their screen eventually in some circumstances - even signal might send messages in this form (see below) */ + even signal might send messages in this form (see below) + ENCODING: UTF-8 Plaintext (?) */ meshtastic_PortNum_TEXT_MESSAGE_APP = 1, /* Reserved for built-in GPIO/example app. - See remote_hardware.proto/HardwareMessage for details on the message sent/received to this port number */ + See remote_hardware.proto/HardwareMessage for details on the message sent/received to this port number + ENCODING: Protobuf */ meshtastic_PortNum_REMOTE_HARDWARE_APP = 2, /* The built-in position messaging app. - Payload is a [Position](/docs/developers/protobufs/api#position) message */ + Payload is a [Position](/docs/developers/protobufs/api#position) message + ENCODING: Protobuf */ meshtastic_PortNum_POSITION_APP = 3, /* The built-in user info app. - Payload is a [User](/docs/developers/protobufs/api#user) message */ + Payload is a [User](/docs/developers/protobufs/api#user) message + ENCODING: Protobuf */ meshtastic_PortNum_NODEINFO_APP = 4, /* Protocol control packets for mesh protocol use. - Payload is a [Routing](/docs/developers/protobufs/api#routing) message */ + Payload is a [Routing](/docs/developers/protobufs/api#routing) message + ENCODING: Protobuf */ meshtastic_PortNum_ROUTING_APP = 5, /* Admin control packets. - Payload is a [AdminMessage](/docs/developers/protobufs/api#adminmessage) message */ + Payload is a [AdminMessage](/docs/developers/protobufs/api#adminmessage) message + ENCODING: Protobuf */ meshtastic_PortNum_ADMIN_APP = 6, - /* Compressed TEXT_MESSAGE payloads. */ + /* Compressed TEXT_MESSAGE payloads. + ENCODING: UTF-8 Plaintext (?) with Unishox2 Compression + NOTE: The Device Firmware converts a TEXT_MESSAGE_APP to TEXT_MESSAGE_COMPRESSED_APP if the compressed + payload is shorter. There's no need for app developers to do this themselves. Also the firmware will decompress + any incoming TEXT_MESSAGE_COMPRESSED_APP payload and convert to TEXT_MESSAGE_APP. */ meshtastic_PortNum_TEXT_MESSAGE_COMPRESSED_APP = 7, /* Waypoint payloads. - Payload is a [Waypoint](/docs/developers/protobufs/api#waypoint) message */ + Payload is a [Waypoint](/docs/developers/protobufs/api#waypoint) message + ENCODING: Protobuf */ meshtastic_PortNum_WAYPOINT_APP = 8, /* Audio Payloads. - Encapsulated codec2 packets. On 2.4 GHZ Bandwidths only for now */ + Encapsulated codec2 packets. On 2.4 GHZ Bandwidths only for now + ENCODING: codec2 audio frames + NOTE: audio frames contain a 3 byte header (0xc0 0xde 0xc2) and a one byte marker for the decompressed bitrate. + This marker comes from the 'moduleConfig.audio.bitrate' enum minus one. */ meshtastic_PortNum_AUDIO_APP = 9, /* Provides a 'ping' service that replies to any packet it receives. - Also serves as a small example module. */ + Also serves as a small example module. + ENCODING: ASCII Plaintext */ meshtastic_PortNum_REPLY_APP = 32, - /* Used for the python IP tunnel feature */ + /* Used for the python IP tunnel feature + ENCODING: IP Packet. Handled by the python API, firmware ignores this one and pases on. */ meshtastic_PortNum_IP_TUNNEL_APP = 33, /* Provides a hardware serial interface to send and receive from the Meshtastic network. Connect to the RX/TX pins of a device with 38400 8N1. Packets received from the Meshtastic network is forwarded to the RX pin while sending a packet to TX will go out to the Mesh network. Maximum packet size of 240 bytes. - Module is disabled by default can be turned on by setting SERIAL_MODULE_ENABLED = 1 in SerialPlugh.cpp. */ + Module is disabled by default can be turned on by setting SERIAL_MODULE_ENABLED = 1 in SerialPlugh.cpp. + ENCODING: binary undefined */ meshtastic_PortNum_SERIAL_APP = 64, /* STORE_FORWARD_APP (Work in Progress) - Maintained by Jm Casler (MC Hamster) : jm@casler.org */ + Maintained by Jm Casler (MC Hamster) : jm@casler.org + ENCODING: Protobuf */ meshtastic_PortNum_STORE_FORWARD_APP = 65, - /* Optional port for messages for the range test module. */ + /* Optional port for messages for the range test module. + ENCODING: ASCII Plaintext */ meshtastic_PortNum_RANGE_TEST_APP = 66, /* Provides a format to send and receive telemetry data from the Meshtastic network. - Maintained by Charles Crossan (crossan007) : crossan007@gmail.com */ + Maintained by Charles Crossan (crossan007) : crossan007@gmail.com + ENCODING: Protobuf */ meshtastic_PortNum_TELEMETRY_APP = 67, /* Experimental tools for estimating node position without a GPS Maintained by Github user a-f-G-U-C (a Meshtastic contributor) - Project files at https://github.com/a-f-G-U-C/Meshtastic-ZPS */ + Project files at https://github.com/a-f-G-U-C/Meshtastic-ZPS + ENCODING: arrays of int64 fields */ meshtastic_PortNum_ZPS_APP = 68, /* Used to let multiple instances of Linux native applications communicate as if they did using their LoRa chip. Maintained by GitHub user GUVWAF. - Project files at https://github.com/GUVWAF/Meshtasticator */ + Project files at https://github.com/GUVWAF/Meshtasticator + ENCODING: Protobuf (?) */ meshtastic_PortNum_SIMULATOR_APP = 69, /* Provides a traceroute functionality to show the route a packet towards - a certain destination would take on the mesh. */ + a certain destination would take on the mesh. + ENCODING: Protobuf */ meshtastic_PortNum_TRACEROUTE_APP = 70, - /* Aggregates edge info for the network by sending out a list of each node's neighbors */ + /* Aggregates edge info for the network by sending out a list of each node's neighbors + ENCODING: Protobuf */ meshtastic_PortNum_NEIGHBORINFO_APP = 71, /* Private applications should use portnums >= 256. To simplify initial development and testing you can use "PRIVATE_APP" in your code without needing to rebuild protobuf files (via [regen-protos.sh](https://github.com/meshtastic/firmware/blob/master/bin/regen-protos.sh)) */ meshtastic_PortNum_PRIVATE_APP = 256, - /* ATAK Forwarder Module https://github.com/paulmandal/atak-forwarder */ + /* ATAK Forwarder Module https://github.com/paulmandal/atak-forwarder + ENCODING: libcotshrink */ meshtastic_PortNum_ATAK_FORWARDER = 257, /* Currently we limit port nums to no higher than this value */ meshtastic_PortNum_MAX = 511