# Changelog ## [1.0.0] - Massive Update ### Breaking Changes — Complete Restructure of original The driver has been redesigned as a **managed sensor service**. Instead of manually triggering reads and handling callbacks, the driver now polls automatically and stores values internally. You just call getter functions when you need data. - **New handle-based API:** `hdc1080_init()` now returns an opaque `hdc1080_handle_t`. - **No more manual reads:** Removed `hdc1080_read()` — polling is automatic. - **No more callbacks:** The driver manages its own timer callbacks internally. - **New getter functions:** `hdc1080_get_temperature()`, `hdc1080_get_humidity()`, `hdc1080_get_dewpoint()`, `hdc1080_get_svp()`, `hdc1080_get_vpd()`. - **Status byte pattern:** `hdc1080_get_status()`, `hdc1080_get_error_text()`, `hdc1080_clear_error()`. - **Optional I2C management:** Driver can set up the I2C bus via Kconfig (`CONFIG_HDC1080_MANAGE_I2C`). - **Kconfig for everything:** I2C pins, port, frequency, poll rate, conversion time — all configurable via menuconfig. ### Added - `hdc1080_get_readings()` — get temp + humidity + status in one call. - `hdc1080_get_dewpoint()` — pre-computed dew point. - `hdc1080_get_svp()` — pre-computed saturation vapor pressure (kPa). - `hdc1080_get_vpd()` — pre-computed vapor pressure deficit (kPa). - `hdc1080_get_status()` — check sensor health. - `hdc1080_get_error_text()` — human-readable error descriptions. - `hdc1080_clear_error()` — acknowledge errors and resume polling. - `hdc1080_status_t` enum with specific error codes. - Internal periodic polling via esp_timer. - Two-mutex design: data store mutex + I2C access mutex. - Menuconfig: `CONFIG_HDC1080_MANAGE_I2C`, `CONFIG_HDC1080_I2C_SCL/SDA/PORT/FREQ_HZ`, `CONFIG_HDC1080_POLL_RATE_MS`. - Error-pause pattern: polling stops on error until user acknowledges. - Derived values computed once per poll cycle (not on every getter call). ### Removed - `hdc1080_read()` — replaced by automatic polling. - `hdc1080_get_config()` — sensor config is set at init time. - `hdc1080_cb_t` callback type — no longer needed. - `hdc1080_config_io_t` struct — replaced by `hdc1080_init_config_t`. - Example `Kconfig.projbuild` — all config moved to component Kconfig. ### Migration from v1.x 1. Replace `hdc1080_init(&io_cfg, sensor_cfg)` with `hdc1080_init(&config, &handle)`. 2. Remove your callback function — the driver handles reads internally. 3. Remove `hdc1080_read()` calls — polling is automatic. 4. Use `hdc1080_get_temperature(handle, &val)` etc. to read values. 5. Check `hdc1080_get_status()` for errors instead of callback status param. 6. Call `hdc1080_clear_error()` to acknowledge errors. 7. Configure I2C pins/polling in menuconfig instead of code. ### Added - Thread safety via FreeRTOS mutex. - Kconfig for conversion time. - Component registry metadata fields. ### Breaking Changes - Migrated from legacy `driver/i2c.h` to `driver/i2c_master.h`. - Complete API rename and restructure from v0.2.x. ## [0.2.2] - Fixed a bug with deps. ## [0.2.0] - Initial managed component release.