Libertas Cluster Library
Libertas Cluster Library is a software library for IoT firmware development on Micro-controller Units (MCU).
The main purpose of Libertas Cluster Library is to simplify MCU firmware development drastically.
Libertas Cluster Library adopts the same data model as the Matter standard.
Design Goals
Our design goal is “one size fits all.”
- CPU architecture and Operating System agonistic
- Underlying communication protocol agnostic, although we need to have a slightly different library for each different protocol
- Adopts the same data model as the Matter standard
- Supports Libertas Thing-App engine transparently
Features
1. Managing Application Level Transactions
IoT application-level transactions shall be a message-based, request-response model.
Note the underlying communication channel is never reliable. The messages may be lost, thus requiring a retry; messages may arrive duplicated or out of order, and the peer may be temporarily or permanently unavailable.
- Outgoing Requests
- API to generate request (command, attribute)
- Automatic sending requests to each binding peer
- Automatic message sequence number management for each binding peer
- Response callback and error callback generation for each binding peer
- Automatic timeout retry and retry failure
- Duplicate response filtering (ignore)
- Incoming Requests
- Incoming request callback
- Duplicate request detection
- API to generate a response to a peer
- Even a duplicated request is required to generate a response because the original response may be lost
2. Managing Data Model
- Standard attributes data model
- Automatic attribute commands encoding/decoding
- Special API callbacks for attributes that allow the developer to only deal with attribute data instead of the attribute commands
3. Managing Threading Model
The base firmware main thread and the Thing-App thread are two different threads.
- Synchronization and data integration between threads.
4. Transparent Libertas Thing-App Support
Libertas Cluster Library is designed to work seamlessly with Libertas Thing-App engine. With the Thing-App engine, a device is no longer a simple device or sensor. It can host sophisticated Thing-App code and interconnect and interact with other devices/sensors directly.
Thing-App support is completely transparent to firmware developers. Developers only need to declare a macro to enable the Thing-App support. Deploying a Thing-App to run on a device results from an end-user action. And it shall “just work” in a way that is both CPU safe and memory safe on the host device without extra coding from the firmware developers.