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.
- Use a pool for the SQLite connections instead of thread local variables #489
- Mark object messages as sent in stored messages [#495]
#495.
- Allow serializing and deserializing the
Sizeenum. #483
- Avoid panicking when modifying the capacity for volatile retention memory #478.
- Introduce
webpkifeature to use Mozilla webpki root certificates rather than the native ones #396. - Implement PropertyAccess using the Astarte MessageHub #399
- Add the AstarteObject struct for Object Datastream #430.
- Allow setting the sqlite database size #455.
- Implement Display for the AstarteData #462
- Allow setting the maximum number of items for the retention #463.
- Bump MSRV to 1.78.0 #395.
- Update MessageHub proto definition to be compatible with the Astarte MessageHub v0.8 #429
- Rename the AstarteAggregate derive macro to IntoAstarteObject #430.
- Remove the AstarteAggregate trait in favor of the AstarteObject #430.
- Change the send_object client methods to receive an AstarteObject argument #430.
- Return the timestamp received from the Astarte MessageHub #439
- Create a
Doublestruct to make sure theAstarteData::Doubleis always a valid float. #459 - Rename
AstarteTypeintoAstarteData. #460
- Update documentation, examples and readme. #461
- Box the GrpcError::Status code since the object is too big to return on the stack #466
- Use a default CryptoProvider when defining a Tls configuration #425.
- Update
rumqttcandrustlsdependencies #423 - Drop
opensslas a dependency and deprecate the feature #423
- Fix a bug in the MQTT connection that will wait for the keep-alive timeout before connecting #403
- On reconnection send only device properties that are currently in the introspection #413
- Update
rumqttcto fix a bug in the MQTT unsubscribe #403
- Bump
rustlsand related dependencies to version0.23#403
- Send purge device properties when
session_presentis fault #390
- Generate the certificate using
rcgenfromrustls. #384
- Update the Dynamic Introspection to support adding or removing interfaces from a MessageHub Node #330
- Implement the retention stored for the
SqliteStoreand the volatile with an in memory structure. #363
- Use Empty type rather than Node to detach a Node #340.
- Handle the new return type of the Attach rpc,
MessageHubEvent, which can either be an error or an Astarte message #362 - Retrieve the Node ID information from the grpc metadata also for the Attach rpc #372.
- Improve the rendering of the documentation on docs.rs, showing all the features and which one needs to be activated for a specific item.
- Derive
Clonefor the MQTTCredentialenum #369
- Purge property deletes only the server property #342
- Correct the interfaces iterator logic to send the correct device introspection #334
- Introduce Node ID into gRPC metadata.
- Add one or more interfaces at once with
extend_interfaces#293 - Add a method
unsetto unset a property #296 - Return values for the
DynamicIntrospectionto check if/which interface where added/removed #326
- Rename the enum
AggregationintoValue#296 - Move the
AstarteType::Unsetto theValue::Unsetfor the astarte event #296 - Separate the
AstarteDeviceSdkintoDeviceClientandDeviceConnection#311
- Delete all interface's properties, using the correct mapping, when an interface is removed #313
- Handle Unset from gRPC correctly
- Add semver-check for release
- Property reliability as Unique
MqttConfignow receivesInto<String>instead of&str- Bump MSRV to 1.72.0.
- Expose the MQTT connection timeout option.
- Handle MQTT connection errors by trying to reconnect.
- Make the reconnection attempt wait with an exponential back-off.
- Trait
PropAccessto access the stored properties from theAstarteDeviceSdk. - Trait
FromEventto convert a generic object aggregate into a Rust struct. - Implementation of the connection over GRPC to the message hub.
- Return a channel for the events when creating a device SDK.
- Make handle event loop block to handle the events.
- Create a shareable struct (
Arc) of theAstarteDeviceSdkto not clone the device id and realm. - Make the
DynErrortrait bound shareable across threads. - Added ownership field to the
StoredPropstruct. - The
PropertyStore::store_propnow receives theStoredPropstruct. - Improve the errors with more contexts.
- Remove the deprecated and unused Errors.
- Pass
AsRef<Path>for paths instead of&str.
- Allow escaped character in the
Interfacedescription and documentation.
- Check if an interface exists and the type is the same of the value passed/received when sending or receiving data from Astarte.
- Unset of property send empty buffer instead of document with null value.
- Deserialize mixed integer BSON arrays from Astarte to the type specified in the interface (longinteger and integer)
- Added a warning to the
AstarteDeviceSdk::get_propertymethod to use thePropAccesstrait instead
- Support for different case conventions on
AstarteAggregatederive macro (#126). - Add support to store properties in volatile memory using
MemoryStoreif no database is provided. - Make
AstarteDeviceSdkgeneric over the storage type. - Provide type aliases for
AstarteDeviceSdkwithMemoryStoreandSqliteStore.
- Expose
pairing::PairingErrorto public visibility. - Bump
MSRVto 1.66.1. - The
AstartDeviceSdknow requires an ownedAstarteOptionsinstance. - Rename the main error in
Errorand give the other errors more specific names. - Mark all errors as
#[non_exhaustive]. - Renamed the
AstarteSqliteDatabaseintoSqliteStore. - Added a new
AstarteTypefor a genericEmptyArray.
- Solve a panic when deserializing an empty BSON array.
- Lock version of flate2 to support rust v1.59.
- Initial Astarte Device SDK release.