EscDriver reads per-motor telemetry from electronic speed
controllers and surfaces it as a stream of EscTelemetry samples.
DShot-telemetry, KISS, and BLHeli32 protocols all share this
interface.
ESC drivers are read-only by design. Setpoint commands flow
through the FC over MAVLink, not through the agent.
The interface
Writing the agent half in Rust? The trait equivalent is
ados_sdk::drivers::EscDriver (re-exported from the drivers
module of the ados-sdk crate). It carries the same five methods
(discover, open, close, capabilities, telemetry_iterator)
over an async-trait, with EscCandidate, EscCapabilities, and
EscTelemetry as the matching types. The Python EscSession base
class becomes a Session associated type the host treats as an
opaque token. Set runtime: rust in the manifest and the host
treats the driver the same way it treats the Python one.Capabilities
Telemetry samples
current_a is 0.0 when the protocol does not carry it. For a bank
with no thermistor, report temp_c=0.0 and set has_temperature=False
in EscCapabilities so the GCS hides the column.
Manifest permissions
See also
- Driver layer for the contract.