Changelog¶
What changed in each release of the driver. Entries marked BREAKING need source changes in code that used the affected API.
[Unreleased]¶
Breaking¶
- BREAKING:
EnsureInitialized()andChangeAddress()fail when variant detection is inconclusive (the bus did not answer the read after the 0x4F probe). They used to succeed withChipVariant::Unknown. They now returnfalsewithError::I2CReadFail, and the next call probes again. Pass the variant to the constructor to skip the probe. - BREAKING: mask-form calls reject a mask of 0:
SetMultipleDirections(),SetMultipleOutputs(),SetMultiplePolarities()andEnableMultipleInputLatches()returnfalsewithError::InvalidMaskand send nothing. They used to read and rewrite both port registers and returntrue. - BREAKING:
InitFromConfig()under ESP-IDF now applies the menuconfig values. The component sources the rootKconfigand the driver includessdkconfig.h; projects that relied on the header defaults while Kconfig was ignored get theirsdkconfigvalues instead (the Kconfig defaults equal the header defaults). A bool set tonnow reads as 0 instead of the header'sdefault yvalue.
Added¶
ReadPin(pin, level): returns whether the read worked and writes the level separately, so a failed read no longer looks like a low pin.ReadPin(pin)is unchanged.examples/esp32/components/hf_pcal95555/Kconfig, soidf.py menuconfigshows the driver options.- Host unit tests (
-DHF_PCAL95555_BUILD_TESTS=ON) against a register model of the PCA9555 and PCAL9555A, and a CI workflow that runs them with GCC and Clang. - Host tests for Kconfig handling, inconclusive detection,
ReadPin(pin, level), empty masks, independent driver objects, and a CTest that installs the driver and builds afind_package()consumer.
Deprecated¶
- The global-scope names
Pcal95555Reg,GPIODir,Polarity,DriveStrength,OutputMode,InterruptEdge,InterruptStateandError: the types are now in namespacepcal95555and the global names are aliases, to be removed in the next major version. DefineHF_PCAL95555_NO_GLOBAL_ALIASESto drop them now. CtrlPin::RSTN: neither the PCA9555 nor the PCAL9555A has a reset pin.
Fixed¶
- Driver objects of one port type shared function-local static transfer buffers, so two chips used from two tasks could read each other's register values. Each object now has its own transfer byte.
cmake --installdid not installsrc/pcal95555.ipp, so an installedpcal95555.hppdid not compile, and the exported target washf::hf_pcal95555instead ofhf::pcal95555.
Changed¶
- Documentation moved to the HardFOC MkDocs platform: new page set (quickstart, hardware, architecture, PCA9555
and PCAL9555A, interrupts, API guide, porting, testing), code snippets compiled by the host build from
tests/docs/, Doxygen under/api/, versioned with mike. The Jekyll site files and the doxygen-awesome submodule are gone. updateBit()insrc/pcal95555.ippisstatic inline, so including the header no longer warns about an unused internal function.
1.0.0 (version in the build settings; not tagged)¶
- PCA9555 and PCAL9555A support with variant auto-detection, single-pin, mask and list APIs, Agile I/O, interrupt callbacks, address control and the ESP32-S3 examples.