Skip to content

Release v0.5.0

Choose a tag to compare

@lewisxhe lewisxhe released this 22 Sep 09:14
· 17 commits to master since this release

SensorLib v0.5.0 is a major pre-1.0 release that introduces a complete PMIC subsystem, unified device interfaces, build-time driver selection, and a reorganized driver and example structure.

Important

This release contains API and header layout changes. Projects upgrading from v0.4.x should review the v0.5 migration guide.

Highlights

  • Added PMIC and charger support for AXP192, AXP202, AXP2101, AXP517, BQ25896, and SY6970.
  • Added AXP517 BC1.2, Type-C/TCPC, interrupt handling, and USB-PD sink voltage negotiation.
  • Added PAW-A350 finger navigation, CST3240 touch, and QMC6309H support.
  • Added common PMIC, IMU, battery gauge, and BMA4XX interfaces.
  • Added build-time driver exclusion for ESP-IDF, Arduino, and PlatformIO.
  • Reorganized drivers into category and vendor directories.
  • Reorganized more than 150 examples using category-based lowercase paths.
  • Added generated Doxygen API documentation and improved CI workflows.

Power Management

The new PMIC subsystem provides common interfaces for:

  • Charger configuration and status
  • ADC measurements
  • GPIO and regulator channels
  • Interrupt handling
  • Power button and LED control
  • Timer and watchdog functions
  • BC1.2 detection
  • Type-C and USB-PD negotiation

AXP517 includes an interrupt-driven USB-PD sink negotiator for requesting fixed PDO voltages.

Sensor Improvements

  • QMI8658 now has a unified implementation based on the expanded ImuBase API.
  • BMM150 now uses the common magnetometer interface.
  • BMA4XX capability handling and motion detection were moved into the common base implementation.
  • BQ27220 and AXP2602 now implement the new GaugeBase interface.
  • Touch drivers now use the richer getTouchPoints() API.

Breaking Changes

  • SensorDrv.hpp and the top-level SensorBMM150.hpp were removed.
  • Use category or vendor headers such as ImuDrv.hpp, MagnetometerDrv.hpp, AccelerometerDrv.hpp, PmicXPowers.hpp, and TouchDrvGoodix.hpp.
  • Most legacy top-level headers remain available as deprecated compatibility wrappers.
  • The legacy QMI8658 API is deprecated.
  • ImuBase gained new pure virtual methods and a unified isDataReady() API.
  • USEING_I2C_LEGACY was renamed to SENSORLIB_USE_I2C_LEGACY.
  • SensorLib-provided global bit and byte macros were replaced by type-safe helpers in the sensorlib namespace.
  • DevicesPins.h is no longer included automatically by SensorLib.h.
  • Raw Bosch *.fw files are no longer bundled. Generated firmware headers remain available.
  • Example paths have changed.

See the migration guide for detailed mappings and code examples.

Fixes

  • Fixed BMA423 any-motion and no-motion configuration.
  • Fixed CST3240 point reads and invalid CST92xx touch reporting.
  • Fixed QMC6309 self-test and initialization.
  • Fixed ESP-IDF I2C initialization behavior.
  • Fixed Arduino STM32 GPIO compatibility.
  • Fixed XL9555 probing.
  • Fixed AXP2101 charge-current steps and interrupt clearing compatibility.
  • Fixed AXP517 TCPC initialization, PD alerts, and return values.
  • Improved BHI260 error propagation.

Documentation and Packaging

  • Added a permanent project changelog.
  • Added a dedicated v0.5 migration guide.
  • Added Doxygen documentation deployment.
  • Prevented generated ESP-IDF build files from entering PlatformIO packages.
  • Updated package metadata and supported-device keywords.

Full Changelog: v0.4.1...v0.5.0