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.
- Correctly calling the incoming data callback.
- Automated publishing on the ESP registry.
- Early exit on reception when data callback is not set.
- Version number in
idf_component.yml
.
user_data
field is added to theastarte_device_config_t
andastarte_device_*_event_t
structs. This field can be used to pass user data to callback functions.- Utility function
astarte_err_to_name
. Can be used to obtain a string representation of any error returned from the device. - Properties retention in NVS. The values of server and device properties can now be stored permanently using the NVS drivers of ESP. Two new configuration entries have been added to the Astarte SDK menu. One enables properties persistency while the other can be used to specify a custom NVS partition where to store such properties.
- Return value of
uuid_generate_v5
andastarte_hwid_encode
functions fromvoid
toastarte_err_t
.`
- Support for ESP-IDF with versions lower than v4.4.
- Support for the old ESP-IDF GNU Make system. For help on how to migrate a project to the new
CMake
system, see the espressif documentation.
- Add support for server validation through ESP x509 Certificate Bundle.
- Add maximum JWT size to SDK configuration options.
- Add new deserialization utilities contained in
astarte_bson_deserializer.h
. - Add README section on how to use the (de)serialization utilities.
- Add the typedefines
astarte_bson_serializer_handle_t
,credential_type_t
,astarte_ptr_list_entry_t
andastarte_pairing_config_t
. - Add new
astarte_bson_serializer_new
function.
- BSON deserialization utility
astarte_bson.h
. Use the new deserialization functions contained inastarte_bson_deserializer.h
. - Direct use of the enums and structs
astarte_err_t
,astarte_byte_array_t
,astarte_bson_serializer_t
,credential_type_t
,astarte_list_head_t
,astarte_ptr_list_entry_t
andastarte_pairing_config
. - Serializer initialization function
astarte_bson_serializer_init
. Use the newastarte_bson_serializer_new
instead.
- Support for ESP IDF v3.x.
- Fixed failure in writing the private TLS key following a hard reset performed during the partition formatting procedure (Available since IDF v5.1).
- Fix crash when using an invalid client certificate.
- Fix hardware ID generation for IDF 5.0.
- Add Empty Cache support.
- Add support to ESP-IDF v5.0
- Fix a bug preventing parsing of bson files containing arrays.
- Add check that prevents sending an interface with both major and minor version set to 0
- Add support to server-owned property unset, using
unset_event_callback
.
- Functions such as
astarte_device_set_string_property
should make use ofconst char *
, instead ofchar *
.
- Allow passing an explicit realm to
astarte_device_config_t
. - Add function for generating random UUIDv4.
- Add astarte_bson_serializer_append__array functions to BSON serializer (for each supported type).
- Add astarte_device_stream__array(_with_timestamp) functions to astarte_device (for each supported type) in order to enable sending arrays to array typed datastreams.
astarte_device_add_interface
incompatible API change, the caller now has to provide a pointer to anastarte_interface_t
struct.- Make sure the device only subscribes to server owned interfaces. This avoids that published messages are sent back to the device.
- Add
astarte_device_stop
function to stop the internal MQTT client. - Add connection and disconnection callbacks called after device connection/disconnection.
astarte_device_start
now returnsastarte_err_t
to check if the device was succesfully started.
- Allow sending data to object aggregated interfaces.
- Allow using UUIDv5 to derive the hardware id.
- Add support for esp-idf 4.x build system.
- The hardware id now will use UUIDv5 by default. This means that if you were using an old version
of the SDK, this version will change the generated device id, requiring a new credentials secret.
If you need to keep the old device id, disable
Use UUIDv5 to derive the hardware ID
in the Astarte SDK settings withmake menuconfig
.
- Add device hardware id getter.
- Fix a bug preventing device reinitialization if credentials were not retrieved correctly.
- Add a function to unset a properties path.
- More detailed return error codes.
- Add wrappers to set values on properties interfaces.
- Add SDK version in
astarte.h
.
- Most functions will no longer return ASTARTE_ERR, but a more specific error. Code checking for
err == ASTARTE_ERR
will most likely need to be changed.
- Correctly interpret the document length as a 32 bit number when appending a BSON document.
- Allow passing an explicit credentials secret to the device instead of depending from the on-board agent registration.
- Add
astarte_device_is_connected
function.
- Deprecate implicit credentials initialization, the user should now call
astarte_credentials_init
in itsmain
before callingastarte_device_init
. - Improve memory footprint.
- Use ECDSA for keys instead of RSA.
- Avoid reinitializing a valid device due to connectivity errors.
- Handle client certificate expiration by requesting new credentials to Pairing API.
- Fix crash due to printing a NULL string in astarte_pairing.
- Allow setting an explicit hwid instead of using the hardware generated one.
- Add UUID library, allowing to generate a UUIDv5 to be used as hwid.
- MQTT handler was not compiling with -Werror.
- Initial SDK release, supports pairing and publish/receive of basic Astarte types.