EscDriver reads per-motor telemetry from electronic speed controllers as a stream of EscTelemetry samples. DShot telemetry, KISS and BLHeli32 protocols share this interface.
ESC drivers are read-only by design. Motor setpoints flow through the flight controller, not through the agent.
The interface
Candidates
Unlike the other kinds,EscCandidate has a required motor_count field:
Capabilities
Telemetry samples
0.0 for a value the protocol does not carry, and set the matching has_* flag to False in EscCapabilities so your GCS half knows to hide it.
Opening the driver from your plugin
Your plugin callsdiscover(), open() and consumes telemetry_iterator itself, then publishes the samples with ctx.telemetry.extend. The pattern is on Driver layer. A direct telemetry wire needs hardware.uart; telemetry carried in the MAVLink stream needs mavlink.read.
Next steps
Driver layer
The shared contract and the manifest table.
Hardware testing
Test with a mock serial backend.
Payload actuator driver
The next driver kind.