The Internet of Things on AWS – Official Blog

Announcing AWS IoT Device SDK for Embedded-C 202011.00

Introduction

AWS IoT Device SDK for Embedded-C (C-SDK) 202011.00 is now generally available. C-SDK is a collection of open source libraries written in C under the MIT license that makes it faster to securely connect embedded IoT devices to AWS IoT Core. This release improves several underlying libraries including coreMQTT, AWS IoT Device Shadow, and AWS IoT Jobs. It also adds new libraries including coreHTTP, and AWS IoT Device Defender needed for embedded and IoT applications.

Refactored and optimized IoT connectivity, security, and AWS-specific libraries

This release includes refactored coreMQTT, coreHTTP, coreJSON, AWS IoT Device Shadow, AWS IoT Device Defender, and AWS IoT Jobs libraries for optimized memory usage and modularity, making them easier for use in resource-constrained devices. These libraries have gone through code quality checks (e.g. MISRA-C compliance, Coverity static analysis), and validation of memory safety with the C Bounded Model Checker (CBMC) automated reasoning tool. For more information on the libraries, you can read the README file.

You can find a summary of each library in the following list.

  • coreMQTT: The MQTT library provides a lightweight publish/subscribe (or PubSub) messaging protocol that runs on top of TCP/IP. This library is often used in Machine to Machine (M2M) and IoT use cases. The coreMQTT library implements a subset of the MQTT 3.1.1 protocol standard. It provides a menu of composable functions so that you can choose a combination that fits your needs. It has no dependencies on any additional libraries other than the standard C library. Finally, it includes an optional user-implemented platform time function.
  • coreHTTP: The HTTPS Client library provides a lightweight HTTP client request and response messaging protocol that runs on top of TCP/IP. This library is often used in web applications. The coreHTTP library is compliant with HTTP 1.1 standard, and is designed for embedded platforms. It has no dependencies on any additional libraries other than the standard C library and http-parser.
  • coreJSON: JSON (JavaScript Object Notation) is a lightweight data-interchange format. This format is easy for humans to read and write and for machines to parse and generate. The coreJSON library is a JSON parser that adheres to the ECMA-404 JSON standard. It is suitable for low memory footprint embedded devices.
  • AWS IoT Device Shadow: This library is a client library for interacting with the AWS IoT Device Shadow service. It has no dependencies on any additional libraries other than the standard C library, and therefore, can be used with any MQTT client library.
  • AWS IoT Device Defender: This library is a client library for interacting with the AWS IoT Device Defender service. This library has no dependencies on any additional libraries other than the standard C library, and therefore, can be used with any MQTT client library.
  • AWS IoT Jobs: This library is a client library for interacting with the AWS IoT Jobs service. This library has no dependencies on any additional libraries other than the standard C library, and therefore, can be used with any MQTT client library.

C-SDK date-based versioning

Like our previous C-SDK release (C-SDK 202009.00), this release continues to follow date-based versioning in place of semantic versioning. This date-based versioning follows the format YYYYMM.NN:

  • Y represents the year (e.g. 2020).
  • M represents the month (e.g. Oct).
  • N represents the release order within the designated month (00 being the first release in Oct).

For example, a second release in November 2020 would be 202011.01.

Each C-SDK library retains its semantic versioning, in which the version number itself (X.Y.Z) shows if the release is a major, minor, or point release. Semantic versioning on an individual library can help you assess the scope and impact of a new release on your application.

How this release affects you

The libraries in this release contain modified APIs that may affect your existing applications (Documentation and API References). To allow your build scripts to use the updated libraries, you may need to update any existing applications based on previous versions of C-SDK. You can find detailed information about migrating your application to the new release in the C-SDK Migration Guide.

Conclusion

This post reviews the updated features and versioning for the newly released C-SDK 202011.00. C-SDK is a collection of MIT licensed open source libraries that make it faster to securely connect embedded IoT devices to AWS IoT Core. This release provides improvements to several underlying libraries including MQTT, HTTPs, AWS IoT Device Shadow, and AWS IoT Jobs, and adds new libraries including coreHTTP, and AWS IoT Device Defender needed for embedded and IoT applications. You can learn more about using C-SDK here.