Skip to content

liblightmodbus v3.0

Latest
Compare
Choose a tag to compare
@Jacajack Jacajack released this 30 Aug 22:52
· 11 commits to master since this release
e7be88b

GitHub Build Status Coveralls branch Donate

The biggest and the most important release so far. Majority of the source code has been rewritten from scratch. The library is header-only now, which makes it much easier to compile on different exotic platforms. Although features included in this release break backwards compatibility with v2.0 and require changes to be made in user code, upgrading to v3.0 is highly recommended due to the number of improvements.

Changes:

  • The library is header-only now. The old build system based on CMake is no longer necessary.
  • Very significantly reduced binary size (~16kB (v2.0), -> ~7.3kB (v3.0))
  • Significantly improved code structure, maintainability and performance
  • Alignment safety no longer relies on compiler attributes (__attribute__((packed)) is 'broken' on XC16 compilers)
  • Replaced inttypes.h with stdint.h
  • All register operations are now done through register callback functions.
  • All data is received with a data callback on master side now.
  • Added support for Modbus TCP
  • Added setters/getters for ModbusMaster and ModbusSlave structure members
  • Added support for custom allocators. This mechanism can be used to replace old LIGHTMODBUS_STATICMEM*
  • Added a new CMake config which allows liblightmodbus to be used a CMake package
  • Added a (very) experimental C++ API
  • Added a ModbusBuffer type for holding and managing allocated frames
  • Added some debug utilities
  • Created a separate repository for ESP-IDF component files
  • Integrated with GitHub actions
  • Removed the examine addon
  • Improved error handling
  • Types are now consistently named with PascalCase
  • Renamed many functions and type names
  • Dropped support for Launchpad
  • Prettier docs, thanks to https://github.com/jothepro/doxygen-awesome-css

Docs for this release: https://jacajack.github.io/liblightmodbus/index.html
Information about porting code from v2.0 to v3.0: https://jacajack.github.io/liblightmodbus/porting.html