-
released this
2026-08-30 20:04:40 +03:00 | 4 commits to main since this releaseFixes a failure to connect to the detector, and three causes of misidentification found on real samples.
Connection
WiFi and the Bluetooth stack were contending for heap. The startup update check brought WiFi up while BLE was connecting, and the station was never shut down again, producing BLE_INIT: Malloc failed, truncated spectrum transfers and a flood of GATT errors.
- WiFi work now suspends the BLE link and resumes it afterwards. This is lossless: the detector accumulates internally throughout.
- The suspend is acknowledged rather than assumed after a fixed delay, since a spectrum read is a blocking round trip of up to 4 seconds.
- Bluedroid is torn down rather than only the client, returning around 51 KB. Without that, TLS could not allocate.
- WiFi is powered down after every check or install, and on leaving Settings.
- The BLEClient is now freed. Arduino-ESP32 allocates it and never deletes it, leaking about 4.15 KB per connect along with its discovered service tree.
Identification
Real uranium ore reported BACKGROUND while Bi-214 stood at 92 percent with four matched lines.
- A decay-chain member that is conclusive on its own now establishes the chain, instead of a second member always being required.
- Lines below 110 keV can no longer identify a nuclide that also emits above it. That region is unmodelled X-ray fluorescence and backscatter, and it was generating phantom Ba-133.
- The region-of-interest fallback now applies the same competitive assignment as peak matching, which it had been silently undoing.
- RESET latches until the link is available instead of being discarded.
Verified on hardware
Uranium ore identified as URANIUM ORE in 17 seconds with the U-238 chain at 100 percent. A thorium source identified as THORIUM with the Th-232 chain at 99 percent and the uranium chain at 0. Four update checks during a live measurement with heap flat to within 60 bytes.
Downloads