GpsDriver decodes a position-fix stream from a u-blox, NMEA, RTK or vendor-specific receiver into GpsFix samples. Drivers for RTK receivers also accept RTCM correction payloads.
The interface
NotImplementedError (Python) or return DriverError::NotSupported (Rust) from inject_rtcm. Never drop corrections silently.
The Rust trait uses an associated Session type and returns a SampleStream<GpsFix> (a boxed async stream) from fix_iterator:
GpsFix and GpsCapabilities carry the same fields in both languages.
Capabilities
Fix samples
fix_type follows the common convention: 0 no fix, 2 2D, 3 3D, 4 DGPS, 5 RTK float, 6 RTK fixed. horizontal_accuracy_m, vertical_accuracy_m, course_deg and metadata are optional.
Opening the driver from your plugin
Your plugin callsdiscover(), open() and consumes fix_iterator itself, and calls inject_rtcm with corrections it receives. The pattern is on Driver layer. A serial or USB-CDC receiver needs hardware.uart. inject_rtcm writes over the link the driver already opened, so it needs no extra capability.
Next steps
Driver layer
The shared contract and the manifest table.
Hardware testing
Test with a mock serial backend.
ESC driver
The next driver kind.