All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog and this project adheres to Semantic Versioning.
- Initial MQTT implementation. Added the
astarte::device::mqttnamespace containing all MQTT-specific functionality. - New
astarte::device::mqtt::DeviceMqttclass implementing an Astarte device using the MQTT transport layer. - New
astarte::device::mqtt::Configclass for configuring an Astarte device using the MQTT transport layer. - New
astarte::device::mqtt::PairingApiclass for interacting with the Astarte pairing API. - Comprehensive set of error classes encapsulated in
std::expectedobjects. - Helper scripts to build samples on Windows platforms.
- Reorganized the SDK namespace structure. The
AstarteDeviceSdknamespace has been replaced byastarte::device. - Removed the
Astarteprefix from all classes and enums. - Renamed
AstarteDeviceGRPCintoDeviceGrpcand moved it to theastarte::device::grpcnamespace. - Renamed
AstarteStoredPropertyintoStoredProperty - Renamed
AstartePropertyIndividualintoPropertyIndividual - Renamed
AstarteDatastreamObjectintoDatastreamObject - Renamed
AstarteMessageintoMessage - Renamed
AstarteDatastreamIndividualintoDatastreamIndividual - Renamed
AstarteDeviceGRPCintoDeviceGRPC - Renamed
AstarteDeviceintoDevice - Renamed
AstarteDataintoData - Renamed
AstarteTypeintoType - Renamed
AstarteOwnershipintoOwnership - Replaced the exception system with
std::expectedreturn types. This uses the native C++ implementation where supported, falling back to a third-party dependency on older C++ versions. - Updated Astarte message hub protos to
v0.10.1. As of versionv0.10.0, protos no longer define their own CMake package. Instead, they provide CMake functions to add compiled protos to the Astarte device target. Consequently, pkg-config now yields a single package for the Astarte device instead of two distinct packages for the device and proto sources.
- All library-specific exception classes. Users should migrate to the new error reporting system.
- An integer overflow in the exponential backoff module. The bug caused the calculated reconnection delay to wrap around to a negative value, leading to zero delay connection attempts during a network outage.
- Support for the Conan package manager. Users can build the library as a conan package and import it in their Conan projects.
- Implement Astarte pairing mechanism to register a device, retrieve MQTT broker URL and retrieve and check a device certificate.
- Implement device id generation.
- Bug preventing build with the Microsoft compiler #113.
- Bug preventing build with the Microsoft compiler #113.
- API calls to fetch stored device properties in the gRPC Astarte device.
- Introduced an
AstarteDeviceMQTTclass that uses the MQTT protocol as a transport layer. - The
simplesample has been renamed togrpc_native. - The
qtsample has been renamed togrpc_qt. - Use C++20 as the minimum required library version.
- The gRPC Astarte device introspection can now be modified dynamically while the device is connected.
- Avoid using timeout to check the device connection status.
- Astarte classes can now be formatted, using the standard library's formatter by default. If it's not available, the feature uses the
fmtliblibrary fromspdlogas a fallback. To use this fallback, you must enable theASTARTE_PUBLIC_SPDLOG_DEPoption in CMake.
- Qt sample compilation errors on windows machines.
- Added
is_connectedmethod to the Astarte device. Users can evaluate through that method if the device is connected to the Astarte message hub. - All gRPC messages can be logged usign spdlog with trace level logging enabled.
- Method to add a json interface as a string directly, without reading it from a file
- Method to convert an AstarteMessage and AstarteData that returns an std::option instead of an exception
- A new Qt sample showing how to use the Astarte device library in a Qt project.
ASTARTE_PUBLIC_PROTO_DEPCMake option.AstarteDatastreamIndividual,AstartePropertyIndividualandAstarteDatastreamObject(renaming ofAstarteObject) classes, representing the different Astarte data types.get_starded.md, a step by step guide useful to try the SDK functionalities guide.
- The
AstarteDeviceis now an abstract class transport independent. Users should instantiate theAstarteDeviceGRPCclass which is the gRPC specific Astarte device class. - Astarte device poll requires a timeout parameter.
- Reference version of the Astarte message hub is v0.8.0
- Bump the Astarte message hub proto definitions to v0.8.4.
- The
USE_SYSTEM_GRPCoption has been moved to the Astarte message hub proto and prefixed withASTARTE_. - The
grpcsample has been renamed tosimple. - The value contained in an Astarte message can now be directly converted to one of:
AstarteDatastreamIndividual,AstartePropertyIndividualandAstarteDatastreamObjectusing theintomethod. - The connection procedure is now asynchrnonous. When
connectis called the device will attempt to connect untill thedisconnectfunction is called or the object is destroyed. The device will use an exponential backoff to avoid network congestion. - Enums elements are now named using a k prefix and camel case format.
base64has been fully removed as a dependency.
- Initial SDK release, supports connecting to a message hub instance and publish/receive of basic Astarte types.