AWS IoT Embedded C Device SDK
|
This repository is moving to a new branching system. The master branch will now contain bug fixes/features that have been minimally tested to ensure nothing major is broken. The release branch will contain new releases for the SDK that have been tested thoroughly on all supported platforms. Please ensure that you are tracking the release branch for all production work.
This change will allow us to push out bug fixes quickly and avoid having situations where issues stay open for a very long time.
The AWS IoT device SDK for embedded C is a collection of C source files which can be used in embedded applications to securely connect to the AWS IoT platform. It includes transport clients MQTT, TLS implementations and examples for their use. It also supports AWS IoT specific features such as Thing Shadow. It is distributed in source form and intended to be built into customer firmware along with application code, other libraries and RTOS. For additional information about porting the Device SDK for embedded C onto additional platforms please refer to the PortingGuide.
The Device SDK simplifies access to the Pub/Sub functionality of the AWS IoT broker via MQTT and provide APIs to interact with Thing Shadows. The SDK has been tested to work with the AWS IoT platform to ensure best interoperability of a device with the AWS IoT platform.
The Device SDK provides functionality to create and maintain a mutually authenticated TLS connection over which it runs MQTT. This connection is used for any further publish operations and allow for subscribing to MQTT topics which will call a configurable callback function when these topics are received.
The Device SDK implements the specific protocol for Thing Shadows to retrieve, update and delete Thing Shadows adhering to the protocol that is implemented to ensure correct versioning and support for client tokens. It abstracts the necessary MQTT topic subscriptions by automatically subscribing to and unsubscribing from the reserved topics as needed for each API call. Inbound state change requests are automatically signalled via a configurable callback.
The embedded C SDK was specifically designed for resource constrained devices (running on micro-controllers and RTOS).
Primary aspects are:
For more information on the Architecture of the SDK refer here
Beginning with Release v2.2.0 of the SDK, AWS collects usage metrics indicating which language and version of the SDK is being used. This allows us to prioritize our resources towards addressing issues faster in SDKs that see the most and is an important data point. However, we do understand that not all customers would want to report this data by default. In that case, the sending of usage metrics can be easily disabled by the user by setting the DISABLE_METRICS
flag to true in the aws_iot_config.h
for each application.
Ensure you understand the AWS IoT platform and create the necessary certificates and policies. For more information on the AWS IoT platform please visit the AWS IoT developer guide.
In order to quickly get started with the AWS IoT platform, we have ported the SDK for POSIX type Operating Systems like Ubuntu, OS X and RHEL. The SDK is configured for the mbedTLS library and can be built out of the box with GCC using make utility. You'll need to download mbedTLS from the official ARMmbed repository. We recommend that you pick the latest version in order to have up-to-date security fixes.
This section explains the individual steps to retrieve the necessary files and be able to build your first application using the AWS IoT device SDK for embedded C.
Steps:
certs
- TLS certificates directorydocs
- SDK API and file documentation. This folder is not present on GitHub. You can access the documentation hereexternal_libs
- The mbedTLS and jsmn source filesinclude
- The AWS IoT SDK header filesplatform
- Platform specific files for timer, TLS and threading layerssamples
- The sample applicationssrc
- The AWS IoT SDK source filestests
- Contains tests for verifying that the SDK is functioning as expected. More information can be found https://github.com/aws/aws-iot-device-sdk-embedded-c/blob/master/tests/README.md "here"Also, for a guided example on getting started with the Thing Shadow, visit the AWS IoT Console's Interactive Guide.
As Embedded devices run on different Real Time Operating Systems and TCP/IP stacks, it is one of the important design goals for the Device SDK to keep it portable. Please refer to the https://github.com/aws/aws-iot-device-sdk-embedded-C/blob/master/PortingGuide.md "porting guide" to get more information on how to make this SDK run on your devices (i.e. micro-controllers).
The 2.x branch makes several changes to the SDK. This section provides information on what changes will be required in the client application for migrating from v1.x to 2.x.
include
folder. These need to be added to the makefile as include directoriessrc
folder. These need to be added to the makefile as one of the source directoriesplatform/threading
folder only needs to be added if multi-threading is required, and the _ENABLE_THREAD_SUPPORT_
macro is defined in configYou can find more information on how to use the new APIs in the Readme file for samples that can be found https://github.com/aws/aws-iot-device-sdk-embedded-c/blob/master/samples/README.md "here"
If you have any technical questions about AWS IoT Device SDK, use the AWS IoT forum. For any other questions on AWS IoT, contact AWS Support.
Connecting to the AWS IoT MQTT platform
Subscribe to a topic
Update Thing Shadow from a device