Embedded C SDK 是支持自带网络 (BYON) 方法的受限设备的 SDK。 IoT 开发人员可以自由选择使用 MQTT 客户端、TLS 和套接字来创建设备解决方案。 以下设计决策使此 SDK 成为构建受限设备的解决方案的理想方式。
- 我们的 SDK 的客户可编译我们的源代码以及他们自己的源代码。
- 我们以 C99 编程语言为目标,并使用 gcc、clang 和 MS Visual C 编译器进行测试。
- 由于抽象很少,因此代码易于理解和调试。
- 我们的 SDK 不会进行分配。 客户必须在他们希望的位置(全局内存、堆、堆栈等)分配我们的数据结构,然后将所分配结构的地址传递到我们的函数中,以便初始化它们和执行各种操作。
- 与我们的其他语言 SDK 不同,许多操作(例如编写策略的 HTTP 管道)是在源代码中完成的,而不是运行时。 这种优化可减少代码大小,改进执行速度和锁定行为,从而减少运行时出现 bug 的几率。
- 我们支持不带操作系统的微控制器、使用实时操作系统的微控制器(如 Azure RTOS)、Linux 和 Windows。 客户可以实现自定义平台层,以在自定义设备上使用我们的 SDK。 我们会提供一些平台层,并鼓励社区提交平台层来增加现成的受支持平台。
注意
我们在适用于 Azure RTOS 和 FreeRTOS 的 Azure IoT Embedded C SDK 上构建了额外的中间件库。 如果使用其中任一平台,我们强烈建议使用这些中间件库。
在此处查看这些库:
体系结构
如前所述,Azure IoT Embedded C SDK 使用“自带网络”方法。 这意味着,你可以选择 MQTT、TLS 和 TCP/IP 堆栈,并将它们与 Azure IoT Embedded C SDK 一起使用。 此 SDK 的实用工具有助于 Azure IoT MQTT 功能更易于使用。 它提供多种功能,例如分析入站主题、提供身份验证详细信息以及创建订阅主题(以及其他功能)。
如图中所示,由于没有网络依赖项,Azure IoT Embedded C SDK 应该与应用程序代码一起使用,而不是在应用程序代码之上使用。 通过它可以最自由地选择你的解决方案所需的组件,无论是对于卸载的硬件 MQTT 或 TLS 还是任何其他自定义网络堆栈。
后续步骤
我们有几个示例可以帮助你入门。 有关可用示例,请参阅以下链接。