Beta fixes (#10728)

* Wipe message Store on factory reset

* Check for destination 0 in a new message, and convert to broadcast

* Make sure CHARGE_LED_state gets turned off, to avoid stuck LEDs

* Take the spiLock in MessageStore when clearing messages

* Trunk

* Add thinknode M5 voltage curve

* Fix the oops
This commit is contained in:
Jonathan Bennett
2026-06-17 13:29:20 -05:00
parent 2291b672c4
commit 7424631a27
5 changed files with 26 additions and 3 deletions
+1
View File
@@ -354,6 +354,7 @@ void MessageStore::clearAllMessages()
resetMessagePool(); resetMessagePool();
#ifdef FSCom #ifdef FSCom
concurrency::LockGuard guard(spiLock);
SafeFile f(filename.c_str(), false); SafeFile f(filename.c_str(), false);
uint8_t count = 0; uint8_t count = 0;
f.write(&count, 1); // write "0 messages" f.write(&count, 1); // write "0 messages"
+4
View File
@@ -9,6 +9,7 @@
#include "FSCommon.h" #include "FSCommon.h"
#include "MeshRadio.h" #include "MeshRadio.h"
#include "MeshService.h" #include "MeshService.h"
#include "MessageStore.h"
#include "NodeDB.h" #include "NodeDB.h"
#include "PacketHistory.h" #include "PacketHistory.h"
#include "PowerFSM.h" #include "PowerFSM.h"
@@ -727,6 +728,9 @@ bool NodeDB::factoryReset(bool eraseBleBonds)
if (transmitHistory) { if (transmitHistory) {
transmitHistory->clear(); transmitHistory->clear();
} }
#if HAS_SCREEN
messageStore.clearAllMessages();
#endif
// second, install default state (this will deal with the duplicate mac address issue) // second, install default state (this will deal with the duplicate mac address issue)
installDefaultNodeDatabase(); installDefaultNodeDatabase();
installDefaultDeviceState(); installDefaultDeviceState();
+10 -2
View File
@@ -84,7 +84,11 @@ void CannedMessageModule::LaunchWithDestination(NodeNum newDest, uint8_t newChan
// Do NOT override explicit broadcast replies // Do NOT override explicit broadcast replies
// Only reuse lastDest in LaunchRepeatDestination() // Only reuse lastDest in LaunchRepeatDestination()
dest = newDest; if (newDest == 0) {
dest = NODENUM_BROADCAST;
} else {
dest = newDest;
}
channel = newChannel; channel = newChannel;
lastDest = dest; lastDest = dest;
@@ -124,7 +128,11 @@ void CannedMessageModule::LaunchFreetextWithDestination(NodeNum newDest, uint8_t
// Do NOT override explicit broadcast replies // Do NOT override explicit broadcast replies
// Only reuse lastDest in LaunchRepeatDestination() // Only reuse lastDest in LaunchRepeatDestination()
dest = newDest; if (newDest == 0) {
dest = NODENUM_BROADCAST;
} else {
dest = newDest;
}
channel = newChannel; channel = newChannel;
lastDest = dest; lastDest = dest;
+8
View File
@@ -131,6 +131,12 @@ int32_t StatusLEDModule::runOnce()
CHARGE_LED_state = LED_STATE_OFF; CHARGE_LED_state = LED_STATE_OFF;
} }
} }
} else {
#if defined(LED_HEARTBEAT)
// If we are using the heartbeat, as in the Thinknode M4, we need to explicitly turn off the charge LED
// This probably implies that in the future we need to stop re-using this bool for multiple purposes.
CHARGE_LED_state = LED_STATE_OFF;
#endif
} }
// If we want a LED to be dedicated to the simple hearbeat, we can use that instead of the charge LED // If we want a LED to be dedicated to the simple hearbeat, we can use that instead of the charge LED
#if defined(LED_HEARTBEAT) #if defined(LED_HEARTBEAT)
@@ -158,6 +164,7 @@ int32_t StatusLEDModule::runOnce()
} }
} }
#endif #endif
#ifdef LED_PAIRING
if (!config.bluetooth.enabled || PAIRING_LED_starttime + 30 * 1000 < millis() || doing_fast_blink) { if (!config.bluetooth.enabled || PAIRING_LED_starttime + 30 * 1000 < millis() || doing_fast_blink) {
PAIRING_LED_state = LED_STATE_OFF; PAIRING_LED_state = LED_STATE_OFF;
} else if (ble_state == unpaired) { } else if (ble_state == unpaired) {
@@ -172,6 +179,7 @@ int32_t StatusLEDModule::runOnce()
} else { } else {
PAIRING_LED_state = LED_STATE_ON; PAIRING_LED_state = LED_STATE_ON;
} }
#endif
// Override if disabled in config // Override if disabled in config
if (config.device.led_heartbeat_disabled) { if (config.device.led_heartbeat_disabled) {
@@ -18,7 +18,9 @@
#define BATTERY_PIN 8 #define BATTERY_PIN 8
#define ADC_CHANNEL ADC_CHANNEL_7 #define ADC_CHANNEL ADC_CHANNEL_7
#define ADC_MULTIPLIER 2.0 // 2.0 + 10% for correction of display undervoltage. #define ADC_MULTIPLIER 2.0
#define OCV_ARRAY 4180, 4050, 3990, 3890, 3800, 3720, 3630, 3530, 3420, 3300, 3100
#define PIN_BUZZER 9 #define PIN_BUZZER 9