Skip to main content

Drivers

A driver is what knows one device. A board file names a driver on a device; a pipeline then reads that device as a source or writes to it through an outlet.

There are 11 drivers in the tree. A device's driver: value is the directory name below, and the crate it resolves to is that name plus -driver.

Sensor drivers

These produce values a pipeline can tap.

DriverReads overPublishesExtra pins
ads1115I2Cain0 (f32, V), ain1 (f32, V), ain2 (f32, V), ain3 (f32, V)-
bme280I2Ctemperature (f32, °C), pressure (f32, hPa), humidity (f32, %RH)-
bmp180I2Ctemperature (f32, °C), pressure (f32, hPa)-
ccs811I2Ceco2 (f32, ppm), tvoc (f32, ppb)nint
sim-sourceI2Cvalue (f32)-
spi-loopbackSPIecho_ok (f32), counter (f32)-
veml7700I2Clux (f32, lux)-
wsen-itdsI2Caccel_x (f32, g), accel_y (f32, g), accel_z (f32, g)-

Output drivers

These consume a command written to an outlet.

DriverCommandModePinsReports back
gpio-output-feedbackDigitalStatedigitalout, feedbackcontact
gpio-outputDigitalStatedigitaloutnothing
pwm-outputPwmDutypwmoutnothing

Each driver in detail

ads1115

Texas Instruments ADS1115 16-bit 4-channel ADC over I2C. Reads all four single-ended channels (AIN0-AIN3) and reports voltages.

Requires - bus: I2C

Publishes

NameTypeUnit
ain0f32V
ain1f32V
ain2f32V
ain3f32V

Configuration

FieldWhere it is setTypeDefault
i2c_addrboard fileu872
fs_mvpipelineFullScaleMv2048
data_ratepipelineDataRateSps128
sample_interval_mspipelineu641000

bme280

Bosch BME280 environmental sensor — temperature, pressure, and humidity over I2C.

Requires - bus: I2C

Publishes

NameTypeUnit
temperaturef32°C
pressuref32hPa
humidityf32%RH

Configuration

FieldWhere it is setTypeDefault
i2c_addrboard fileu8118
osrs_tpipelineOversamplingX1
osrs_ppipelineOversamplingX1
osrs_hpipelineOversamplingX1
filterpipelineFilterOff
t_sbpipelineStandbyMs0_5
sample_interval_mspipelineu641000

bmp180

Bosch BMP180 temperature and barometric pressure sensor over I2C.

Requires - bus: I2C

Publishes

NameTypeUnit
temperaturef32°C
pressuref32hPa

Configuration

FieldWhere it is setTypeDefault
i2c_addrboard fileu8119
osspipelineOversamplingSingle
sample_interval_mspipelineu641000

ccs811

ScioSense CCS811 indoor air quality sensor over I2C. Reports equivalent CO2 (eCO2) and total volatile organic compounds (TVOC).

Requires - bus: I2C; pins: nint

Publishes

NameTypeUnit
eco2f32ppm
tvocf32ppb

Configuration

FieldWhere it is setTypeDefault
i2c_addrboard fileu890
meas_modepipelineMeasModeEvery1s
sample_interval_mspipelineu6410000

gpio-output-feedback

Hybrid digital output with intrinsic feedback: drives a relay/output on the out pin (consuming a DigitalState Outlet) AND reads the device's real state from a separate feedback input pin (e.g. a relay's auxiliary contact). The status comes only from the real pin read — never inferred from the command write (SDS A1 / OUT-09).

Requires - pins: out, feedback

Publishes

NameTypeUnit
contactbool-

Accepts - DigitalState in digital mode

Configuration

FieldWhere it is setTypeDefault
active_lowboard fileboolfalse
min_switch_interval_msboard fileu640
feedback_active_lowboard fileboolfalse

gpio-output

Digital on/off GPIO output (relay, LED, valve, …). Consumes a DigitalState Outlet and drives a single GPIO high/low, honouring active-low wiring.

Requires - pins: out

Accepts - DigitalState in digital mode

Configuration

FieldWhere it is setTypeDefault
active_lowboard fileboolfalse
min_switch_interval_msboard fileu640

pwm-output

PWM duty-cycle output (fan, pump, dimmable LED, …). Consumes a PwmDuty Outlet (a 0.0–1.0 duty fraction) and drives a PWM channel. The driver clamps to its configured range as a non-negotiable floor.

Requires - pins: out

Accepts - PwmDuty in pwm mode

Configuration

FieldWhere it is setTypeDefault
min_dutyboard filef320.0
max_dutyboard filef321.0
min_update_interval_msboard fileu640

sim-source

Synthetic deterministic source for hardware-in-the-loop tests. Satisfies the driver contract but ignores the bus and emits a bounded sawtooth ramp, so the dataplane HIL suite can assert on exact tap values, moving-average output, and threshold-trigger alarms without any physical sensor.

Requires - bus: I2C

Publishes

NameTypeUnit
valuef32-

Configuration

FieldWhere it is setTypeDefault
startpipelinef320.0
steppipelinef321.0
maxpipelinef32100.0
sample_interval_mspipelineu64500

spi-loopback

SPI loopback test source. Each sample full-duplex-transfers an incrementing byte pattern and reports whether the echo matched: with MOSI wired to MISO it proves the whole SPI path (bus, mode, clock, chip-select) on real hardware; without the jumper it reads 0. Not a sensor — the SPI counterpart of sim-source for bring-up and HIL tests.

Requires - bus: SPI

Publishes

NameTypeUnit
echo_okf32-
counterf32-

Configuration

FieldWhere it is setTypeDefault
transfer_lenpipelineu88

veml7700

Vishay VEML7700 ambient light sensor over I2C.

Requires - bus: I2C

Publishes

NameTypeUnit
luxf32lux

Configuration

FieldWhere it is setTypeDefault
i2c_addrboard fileu816
gainpipelineGainX1
integration_timepipelineIntegrationTimeMs100
sample_interval_mspipelineu641000

wsen-itds

Würth Elektronik WSEN-ITDS 3-axis MEMS accelerometer over I2C.

Requires - bus: I2C

Publishes

NameTypeUnit
accel_xf32g
accel_yf32g
accel_zf32g

Configuration

FieldWhere it is setTypeDefault
i2c_addrboard fileu824
full_scale_gpipelineFullScaleG2
odrpipelineOdrHz100
power_modepipelinePowerModeNormal
sample_interval_mspipelineu64100
Cookie Policy