- ClockFloorRTC on all boards: persisted monotonic send-timestamp floor (touchPrefs v32), garbage-set rejection, trusted-backstep cap; Join no-reply watchdog + server clock skew warning from the LOGIN_OK timestamp prefix (issue #89 follow-up) - BLE repeats-heard: own-echo RX-log frames pass to BLE one-shot; the #46/#54 congestion skip stays for everything else (issue #94) - Mirror app-sent channel messages on-device (was Tanmatsu-only from birth) - Chat delete: persist the ring purge; mesh-channel drop prefers the pinned slot - Deep SD history (5000-msg ring) + date separators; chat-list rows restyled compact - Popup unification: popupClose() + k_popup_registry drive dismiss/count/swipe-block - Thread/channel sheet as one-screen 2-col grid (contact-sheet layout) - Keypad nav: strip LVGL SCROLL_ON_FOCUS from collected widgets (About-page jump); update dot no longer focusable; verchk waits for an IP + retries with backoff - Tanmatsu: FIRMWARE_RELEASE_TAG from git describe (drop the hand-bumped hardcode) Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
30 lines
1.2 KiB
C++
30 lines
1.2 KiB
C++
#include <Arduino.h>
|
|
#include "target.h"
|
|
#include <helpers/ArduinoHelpers.h> // StdRNG lives here (there is no StdRNG.h)
|
|
#include <TanmatsuDisplay.h>
|
|
#include <helpers/SensorManager.h>
|
|
|
|
TanmatsuBoard board;
|
|
TanmatsuLoraRadio radio_driver; // the coprocessor LoRa bridge (no RadioLib Module)
|
|
DISPLAY_CLASS display; // global LVGL flush target + boot/shutdown DisplayDriver
|
|
SensorManager sensors; // base (no telemetry yet); EnvironmentSensorManager later
|
|
|
|
ESP32RTCClock fallback_clock;
|
|
ClockFloorRTC rtc_clock(fallback_clock);
|
|
|
|
bool radio_init() {
|
|
fallback_clock.begin();
|
|
// TODO(device): if the Tanmatsu exposes a hardware RTC over I2C, do
|
|
// rtc_clock.begin(Wire) + Wire.begin(<sda>,<scl>) here like the S3 boards.
|
|
return radio_driver.init(); // lora_init_remote() + push PHY config
|
|
}
|
|
|
|
mesh::LocalIdentity radio_new_identity() {
|
|
// S3 boards seed from RadioLib radio noise (RadioNoiseListener). The remote LoRa
|
|
// has no equivalent, so seed a fresh identity from the same StdRNG the app uses,
|
|
// keyed off getRngSeed() (esp_random ^ instantaneous RSSI noise).
|
|
StdRNG rng;
|
|
rng.begin(radio_driver.getRngSeed());
|
|
return mesh::LocalIdentity(&rng);
|
|
}
|