mirror of
https://github.com/torlando-tech/pyxis.git
synced 2026-08-14 06:39:54 +00:00
f9e959f38e6d5a6bf13b438e0949ed2af80324fe
Fixes the StoreProhibited panics surfaced by hardware boot of fd2d3de:
StoreProhibited @ Bytes::assign (offset 0x1c on a null _data shared_ptr)
← Ed25519PublicKey ctor
← Ed25519PrivateKey::public_key()
← Link::Link(Destination&) at Link.cpp:79
Vanilla upstream microReticulum @ 0.3.0 Link's all-defaults ctor goes
through load_private_key() which dereferences _prv (a shared_ptr that's
still null on a freshly-default-constructed Link). Fork's Link probably
guarded against this; upstream doesn't. The explicit
Type::NoneConstructor branch (Link.h:153) leaves _object null and is
safe for default-init of pool/pre-allocated members.
Two sites needed the same fix:
- lib/microreticulum-shim/LXMF/LXMRouter.h DirectLinkSlot::link
(the fork's pre-allocated DIRECT-delivery link pool)
- lib/tdeck_ui/UI/LXMF/UIManager.h UIManager::_call_link
(the LXST call link state)
Both: `RNS::Link link;` -> `RNS::Link link{RNS::Type::NONE};`.
🎉 First successful runtime of pyxis on top of upstream + fixes:
- Heap 131KB free post-boot (vs ~45KB on pre-graft, then panic)
- Min low-water 119KB — never got tight
- Display flushing, no panic, no reboot loop
- Reset reason: PANIC (4) on prior runs is replaced by clean run
- microStore SPIFFSFileSystem mount works
- Identity loads from NVS with same hash as pre-graft (b5f09f9a833f4ef8)
- LoRa init, AutoInterface init, Transport::start() all succeed
- MessageStore loads 4 conversations from /lxmf
- LXMRouter constructs cleanly
- PropagationNodeManager initializes
Caveats for runtime test (per pyxis_microReticulum_graft_spike_findings):
- BLE + TCP + Transport mode currently disabled in user settings
(was needed to get a stable enough OTA window during initial flash —
can re-enable once we confirm pyxis-fixes-on-0.3.0 doesn't introduce
a BLE/TCP-specific WDT)
- Resource-form inbound LXMF dispatch is no-op'd
(static_resource_concluded_callback)
- Some UI stat fields disabled (LoRa RSSI, BLE peer count)
Pyxis
An LXMF and LXST client firmware for T-Deck, built on a highly modified fork of microReticulum
Very much WIP, don't expect stability :)
Features
Reticulum transport over:
- RNode-compatible LoRa
- AutoInterface (local wifi)
- TCP Client
- BLE Interface (barely working if at all)
Other features:
- GPS-synced time
- One really annoying beep when you get a new message (user toggle)
- View the announce stream
- Choose a propagation node (and sync with it) (fixed in v0.2.1)
- Set auto announce timer
- Light up keyboard (user toggle)
Will crash in about 5 minutes of normal use (sorry)I had 5d uptime on v0.2.0 with BLE disabled- Make LXST voice calls (codec2 only, quality sounds horrible coming out the other end in Columba, needs work)
Why "Pyxis"
Pyxis, latin for "compass," is a constellation in the southern sky depicting a mariner's compass. Small but essential, the compass ensures every message finds its destination - even when the path is uncertain.
Languages
C++
46.8%
C
41.8%
Python
9.8%
mupad
0.9%
JavaScript
0.6%