# Changelog
All notable changes to this project are documented in this file.
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
## [0.0.1] - 2026-08-22
### Added
### Added
- `vl6180x_config_t.minimal_init`: when `true`, the AN4545-compatible
initialization extras are skipped (clearing `SYSTEM__FRESH_OUT_OF_RESET`,
configuring the range/ALS new-sample-ready interrupt status and setting the
default inter-measurement periods). The default (`false`) applies the full
AN4545 init that a genuine VL6180X needs; set to `true` for devices that
misbehave with it (e.g. some VL6180-family clones).
- Initial production version of the VL6180X driver.
- Dual I2C transport in a single source file:
- native ESP-IDF I2C master driver (`vl6180x_create()`);
- ESP-IoT-Solution `i2c_bus` transport (`vl6180x_create_i2c_bus()`) behind
`CONFIG_VL6180X_USE_I2C_BUS`.
- Device identification via MODEL_ID (0xB4) and firmware boot-up wait at
creation.
- Single-shot and continuous ranging with range status / error code, raw
range and signal rate reads.
- Ambient light sensing in lux (VL6180X), with configurable gain, integration
period and lux resolution.
- Range and ALS interrupt configuration and status.
- Offset and crosstalk calibration.
- Runtime I2C address change with transport device-handle recreation.
- Host-side register-encoding unit tests (`tests/register_encoding`).
- Native and `i2c_bus` examples.
### Fixed
- Multi-byte register writes now use the MSB-first byte order required by the
datasheet (crosstalk compensation rate, ALS integration period).
- Inter-measurement period is clamped after the wider-type computation, so
periods above 2540 ms no longer wrap in the 8-bit register code.
- Continuous range/ALS stop now toggles the startstop bit (0x03) instead of
writing 0x00, which did not halt the running operation. Stop is idempotent
(tracked per sensor).
- A missing firmware bootup bit is now a warning instead of a hard init
failure: some VL6180-family devices never assert it. MODEL_ID validation
remains the init gate.
- SYSTEM__FRESH_OUT_OF_RESET is no longer cleared at init (the ST API only
reads it); clearing it hung ranging on some devices.
- Error accumulation via bitwise OR replaced with early-return handling.