adafruit / adafruit/Adafruit_Wippersnapper_Arduino
v2 I2C: several drivers expose no/partial custom settings (implement-every-candidate gaps)
- Dominant language
- C++
- Stars
- 54
- Forks
- 56
- Avg merge
- 2d 12h
- Merged PRs (30d)
- 11
Description
While HIL-testing v2 I2C driver custom settings over protomq (after fixing online reading-publish, #939), the settings dispatch + reject-contract were confirmed working — but several drivers wire **none or only some** of the settings their hardware/Adafruit library already support. Filing for completeness per the "expose every documented candidate setting" convention. Each entry lists what's implemented vs. library methods that exist but aren't surfaced.
### No custom settings at all
- **SCD30** (`drvScd30`) — 0 setters. Library supports: measurement interval (2–1800 s), forced recalibration (400–2000 ppm), temperature offset, altitude compensation, automatic self-calibration enable/disable, ambient-pressure compensation.
- **STCC4** (`drvStcc4`, backported #933) — 0 setters. Library supports: ambient-pressure compensation, RHT compensation, forced recalibration, ASC enable/disable, single-shot vs. continuous mode.
- **SGP41** (`drvSgp41`, backported #933) — 0 setters. Candidates (flagged by an in-code TODO): temperature/RH compensation for the gas-index algorithm, conditioning duration, sampling interval, heater on/off.
- **SGP30** (`drvSgp30`, backported #933) — 0 setters. Candidates: baseline calibration (`setIAQBaseline`/`getIAQBaseline`), humidity compensation (`setHumidity`).
### Partial
- **ENS160** (`drvEns160`) — only `mode`. Missing temperature & relative-humidity **compensation inputs**, which the hardware supports (noted in the driver's own header comment).
- **BME280** (`drvBme280`) — only `sea_level_pressure`. Missing temp/pressure/humidity **oversampling**, **IIR filter**, **standby**, and **mode** — all already implemented by the sibling `drvBmp280` / `drvBme680`.
### Not gaps (for the record)
- **PMSA003I** (`drvPm25`) — read-only sensor, no configurable parameters. Correct as-is.
- **MAX44009** (`drvMax44009`) — auto-ranging; no user gain. Mode + integration_time are exposed.
---
Found during HIL settings verification on a QT Py ESP32-S3 N4R2; related to the v1→v2 driver backport (#933) and its settings (#337). Happy to follow up with a PR wiring these.
Contributor guide
No contributing guide indexed for this repository
Research direction
Locate the drvScd30, drvStcc4, drvSgp41, drvSgp30, drvEns160, and drvBme280 implementations and compare their settings with the supported Adafruit library methods listed in the issue. Start by reading the sibling drvBmp280 and drvBme680 settings, then verify the existing settings dispatch and reject contract. Done means every documented candidate setting is exposed for the applicable drivers without changing the read-only exceptions.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- arduino, cpp
- Domain
- embedded-iot
- Issue type
- Feature
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Quiet
- Clarity
- Mostly clear
- Newbie friendliness
- 55/100