v0.3.0 — 1-Wire/DS18B20 hardening + refocused examples
Vendors and hardens the 1-Wire / DS18B20 driver, and replaces the monolithic kitchen-sink examples with focused per-topic bins plus an LVGL example. Breaking: the DS18B20 driver and module are renamed.
Highlights
driver::onewire— async 1-Wire bus master over the RMT peripheral, vendored in-tree (drops the externalesp-hal-rmt-onewiregit dependency that blocked publishing and lagged esp-hal). Public API:OneWire,Address,Search,crc8; newsearch-masksfeature gates the masked ROM search.- DS18B20 correctness — reads now wait for
Convert Tto complete (no stale 85 °C power-up value), read and CRC-8-validate the full 9-byte scratchpad, and CRC-check ROM addresses during enumeration. A CRC-bad or dropped sensor is warned and omitted (its address stays cached and is retried) instead of aborting the read. - DS18B20 performance — enumerate the bus once and cache ROM addresses (no hot-plug assumed); subsequent reads address each sensor by
Match ROMrather than re-running the full ROM search every cycle. AddsDs18b20Driver::rescan(). - Examples refocused — the kitchen-sink
main.rs/ble.rsdemos are split into focused per-topic bins (display,i2c_scan,m5go,wifi_sta,coex) for both boards behind a sharedexamples/commoncrate, plus a new oxivgl (LVGL) display example.
Breaking
driver::ds16b20→driver::ds18b20;Ds16b20Driver→Ds18b20Driver(the sensor is the DS18B20; "16" was a typo).Addressis nowdriver::onewire::Address; itsDisplay/LowerHexrender byte-wise, family-code first and zero-padded.onewire::Error,SearchError, andds18b20::Errorare reworked ontothiserror_no_stdwith#[from]sources.
Hardware-verified
- Fire27 (ESP32): 2× DS18B20 on Port B /
G26read correctly across cycles; a bus disconnect degrades gracefully — per-sensorwarn+ omit, addresses retained, no hang or crash. - oxivgl example renders on Fire27.
Notes
- First crates.io release. The library now depends on stock crates.io
esp-hal 1.1.0/esp-radio 0.18.0(no git deps), so it can be consumed directly (m5stack-core = "0.3.0"); verified to build against stock deps in isolation. Local and example builds are redirected to the emobotics esp-hal fork (ESP32 SPI/DMA patches the examples need) via a rev-pinned[patch.crates-io], whichcargo publishignores.