Changelog ========= This page tracks changes between CosmicSDK releases. .. contents:: :local: v1.2.3 ------ - **New Features** - Added SDK version API: a static ``getVersion()`` method on ``CosmicSDK`` and ``CosmicAsyncSDK``, plus a C-API counterpart, along with compile-time macros (``COSMICSDK_VERSION_MAJOR``, ``COSMICSDK_VERSION_MINOR``, ``COSMICSDK_VERSION_PATCH``, ``COSMICSDK_VERSION_STRING``) for runtime and compile-time version checking. - Added a WebAssembly (WASM) build target using wasi-sdk, exposing an async C API (~44 exports wrapping ``CosmicAsyncSDK``) with a lightweight JavaScript host runtime (~430 lines). Includes a ``connectWasm()`` path that bypasses HIDAPI enumeration for WASM environments and guards ``std::thread`` usage behind ``#ifndef __wasm__``. - **Bug Fixes** - Fixed a missing bounds check in ``i2cScanBus`` that could cause a buffer overread when the device response payload was smaller than expected. - Fixed subaddress byte-order (endianness) in I2C and I3C transfers to correctly serialize the sub-address in big-endian order. - **Documentation** - Added known-issue documentation for I2C scan bus timeout behavior, covering both the synchronous ``CosmicSDK`` and the ``CosmicAsyncSDK`` API paths, across both the API reference documentation and the FAQ section. - Added a FAQ entry on Pull-up resistor requirements for I2C communication. v1.2.2 ------ - **Linux Packaging & Permissions** - Added a user-facing Linux helper script `install_udev_rules.sh` for installing CosmicSDK udev permissions from delivered packages. - Updated Linux packaging to include `scripts/install_udev_rules.sh` and `udev/65-binho-hid.rules` in release artifacts. - Updated Linux installation/build docs to use the packaged user-facing script. - **Bug Fixes** - Revert the inclusion of only public headers in the `include` folder. v1.2.1 ------ - **Language Bindings & Examples** - Added a new Java reference integration layer wrapping the C API. - Added complete Java examples for `system`, `i2c`, `i3c` (basic/ccc/daa/hdr-ddr/hj-ibi), `spi`, `uart`, and `gpio`. - **Bug Fixes** - Fixed the inclusion of the static HTML documentation on the `docs` folder of deliverable artifacts. - Fixed the inclusion of only public headers in the `include` folder. - Fixed the Python binding SyntaxError in `i2c_scan_bus`. v1.2.0 ------ - **New Features** - Added full I3C support for Supernova across C++, C API, and Async API, including: controller configuration, bus initialization/reset, SDR and HDR-DDR transfers, target table management, and target configuration. - Added broad I3C CCC coverage, including GET/SET operations such as PID/BCR/DCR/STATUS/CAPS, ENEC/DISEC, RSTACT, SETDASA/SETAASA/SETNEWDA, ENTDAA, RSTDAA, MRL, and MWL. - Added SPI API support (controller init, parameter configuration, and transfer APIs). - Added UART API support enhancements (init and parameter configuration updates). - Added GPIO API support enhancements, including digital read/write and interrupt configuration/disable. - Added protocol-specific voltage configuration helpers for I2C, I3C, SPI, UART, and GPIO. - Added notification callback support and shared notification structures across C/C++ APIs. - Added I2C bus scanning support in examples and documentation. - **Language Bindings & Examples** - Refactored Python integration examples into a structured binding-style layout. - Added complete Python protocol examples for `system`, `i2c`, `i3c` (basic/ccc/daa/hdr-ddr/hj-ibi), `spi`, `uart`, and `gpio`. - Added a new C# reference integration layer wrapping the C API. - Added complete C# examples for `system`, `i2c`, `i3c` (basic/ccc/daa/hdr-ddr/hj-ibi), `spi`, `uart`, and `gpio`. - Reorganized example folders and naming for consistency (for example `i3c/basic_api` to `i3c/basic`). - Added new blocking C and C++ examples for I2C, I3C, SPI, UART, GPIO, and system APIs. - **API & Naming Updates** - Refined API naming consistency across C/C++ layers (including normalized `I3c` naming in C API symbols and camelCase alignment in I2C C API functions). - Standardized parameter naming in transfer APIs (`inData` / `outData`) and aligned several data-length types to `uint16_t`. - Updated I3C transfer options/event handling to use flag or mask-based interfaces in relevant APIs. - Added output length reporting for read APIs, including I3C SDR read and I3C HDR-DDR read paths. - **Build, Platform, and CI** - Improved Linux build and CI support (including Ubuntu arm64 coverage and Linux dependency handling). - Updated macOS GitHub Actions runners to current labels to keep Intel and Apple Silicon CI builds supported. - Added support scripts and rules for Linux device access setup (`udev` flow). - Improved docs build behavior so documentation generation is optional when tools are unavailable. - **Documentation** - Introduced a significantly expanded user-facing documentation set with Sphinx + Doxygen integration. - Added protocol guides, API references, constants/structures/result-code references, FAQ content, and improved examples documentation. - Improved onboarding/build documentation and README guidance. - **Bug Fixes** - Fixed transaction ID rollover handling in blocking APIs. - Fixed read-length handling issues in selected I3C paths. - Fixed a cross-platform build issue (reported on Windows MinGW and Ubuntu) in the C API implementation of `I3cGetDeviceTable`. - Fixed several build and merge regressions introduced during 1.2.0 development. - Fixed multiple documentation rendering/formatting issues. v1.1.0 ------ - **General Improvements** - Add support for connecting to a specific USB host adapter by its serial number. v1.0.0 ------ - Initial public release of CosmicSDK. - C++ synchronous API (`CosmicSDK.hpp`). - C++ asynchronous API (`CosmicAsyncSDK.hpp`). - C API (`CosmicSDK_API_c.h`). - I2C only support for Supernova and Pulsar devices.