adafruit / adafruit/Adafruit_Wippersnapper_Arduino

v2 I2C: several drivers expose no/partial custom settings (implement-every-candidate gaps)

Open
#940 0 comments 0 reactions 0 assignees View on GitHub
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

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.