Skip to content

SDK使用

shockcao edited this page Jan 12, 2018 · 14 revisions

设备端SDK的使用

对设备端SDK的使用分为如下几步:

  • 修改编译配置进行编译, 详见设备端SDK的编译页面
  • 获取编译好的SDK, 如成功存放在output/release/lib/*.a
  • libiot_sdk.a libiot_platform.a libmbedcrypto.a libmbedtls.a libmbedtls.a等配合output/release/include/目录下的头文件, 加入您自己的工程使用

SDK编译产物说明

output/release/
+-- bin
+-- include
|   +-- exports
|   |   +-- qcloud_iot_export_coap.h
|   |   +-- qcloud_iot_export_err.h
|   |   +-- qcloud_iot_export_log.h
|   |   +-- qcloud_iot_export_mqtt.h
|   |   +-- qcloud_iot_export_shadow.h
|   +-- qcloud_iot_export.h
|   +-- qcloud_iot_import.h
+-- lib
|   +-- libiot_sdk.a
|   +-- libiot_platform.a
|   +-- libmbedcrypto.a
|   +-- libmbedtls.a
|   +-- libmbedx509.a
+-- unittest

概要说明如下:

文件 说明
include/qcloud_iot_import.h 这个头文件中列出为 SDK 适配新硬件平台时, 需要实现的平台抽象层函数, 以 HAL_*() 的方式命名; 编写平台抽象层实现时, 包含此头文件即可
include/qcloud_iot_export.h 这个头文件中列出 SDK 能提供的所有用户级别 API, 以 IOT_*() 的方式命名, 也就是供用户调用编写业务应用程序的函数
include/exports/qcloud_iot_export_*.h 这组头文件按功能模块分列各模块提供的用户级别 API, 例如 qcloud_iot_export_mqtt.h 中定义了 MQTT 的通信接口 可直接忽略该文件
lib/*.a 编译出的 iotsdk iot 平台 sdk,mbedtls 相关库用于加密通信
unittest 单元测试的可执行文件

SDK编译开关说明

SDK顶层目录的make.settings文件, 列出了对功能进行裁剪时可以选择打开或者关闭的开关, 可以说明如下:

FEATURE_MQTT_COMM_ENABLED   	    = y
FEATURE_COAP_COMM_ENABLED   	    = y
FEATURE_SDKTESTS_ENABLED            = n
FEATURE_MQTT_RMDUP_MSG_ENABLED      = n
选项 含义
FEATURE_MQTT_COMM_ENABLED 是否使用 MQTT 通道功能的总开关,当前不得关闭
FEATURE_COAP_COMM_ENABLED 是否使用 CoAP 通道功能的总开关,当前不得关闭
FEATURE_SDKTESTS_ENABLED 是否编译测试代码
FEATURE_MQTT_RMDUP_MSG_ENABLED 是否启用 MQTT 消息去重功能

通过编辑make.settings文件, 把不需要的功能模块关闭, 可以减小最终编译出libiot_sdk.a库文件的大小, 以节省嵌入式设备上的资源 例如只需要 MQTT 通道, 不需要 CoAP通道, 可以将默认的make.settings修改如下:

FEATURE_MQTT_COMM_ENABLED   	= y
FEATURE_COAP_COMM_ENABLED   	= n

SDK API说明

API列表

src/sdk-impl$ grep -o "IOT_[A-Z][_a-zA-Z]*[^_]\> *(" qcloud_iot_export.h exports/*.h|sed 's!.*:\(.*\)(!\1!'|cat -n
                          
     1	IOT_COAP_Construct
     2	IOT_COAP_Destroy
     3	IOT_COAP_Yield
     4	IOT_COAP_SendMessage
     5	IOT_COAP_GetMessageId
     6	IOT_COAP_GetMessagePayload
     7	IOT_COAP_GetMessageCode

     8	IOT_Log_Set_Level
     9	IOT_Log_Get_Level
    10	IOT_Log_Set_MessageHandler

    11	IOT_MQTT_Construct
    12	IOT_MQTT_Destroy
    13	IOT_MQTT_Yield
    14	IOT_MQTT_Publish
    15	IOT_MQTT_Subscribe
    16	IOT_MQTT_Unsubscribe
    17	IOT_MQTT_IsConnected
    18	IOT_MQTT_JSON_GetAction

    19	IOT_Shadow_Construct
    20	IOT_Shadow_Publish
    21	IOT_Shadow_Subscribe
    22	IOT_Shadow_Unsubscribe
    23	IOT_Shadow_IsConnected
    24	IOT_Shadow_Destroy
    25	IOT_Shadow_Yield
    26	IOT_Shadow_Update
    27	IOT_Shadow_Update_Sync
    28	IOT_Shadow_Get
    29	IOT_Shadow_Get_Sync
    30	IOT_Shadow_Register_Property
    31	IOT_Shadow_UnRegister_Property
    32	IOT_Shadow_JSON_ConstructReport
    33	IOT_Shadow_JSON_ConstructReportAndDesireAllNull
    34	IOT_Shadow_JSON_ConstructDesireAllNull

日志接口

序号 函数名 说明
1 IOT_Log_Set_Level 设置打印的日志等级
2 IOT_Log_Get_Level 返回日志输出的等级
3 IOT_Log_Set_MessageHandler 设置日志回调函数,接管 SDK 日志用于其它输出方式

MQTT 接口

序号 函数名 说明
1 IOT_MQTT_Construct 构造 MQTTClient 并完成 MQTT 连接
2 IOT_MQTT_Destroy 关闭 MQTT 连接并销毁 MQTTClient
3 IOT_MQTT_Yield 在当前线程为底层 MQTT 客户端让出一定 CPU 执行时间
4 IOT_MQTT_Publish 发布 MQTT 消息
5 IOT_MQTT_Subscribe 订阅 MQTT 主题
6 IOT_MQTT_Unsubscribe 取消订阅 MQTT 主题
7 IOT_MQTT_IsConnected 客户端目前是否已连接
8 IOT_MQTT_JSON_GetAction 从 JSON 文档中解析出 action 字段

设备影子接口

序号 函数名 说明
1 IOT_Shadow_Construct 构造 ShadowClient
2 IOT_Shadow_Destroy 关闭 Shadow 连接并销毁 ShadowClient
3 IOT_Shadow_Yield 在当前线程为底层 Shadow 客户端让出一定 CPU 执行时间
4 IOT_Shadow_IsConnected 客户端目前是否已连接
5 IOT_Shadow_Publish 发布 MQTT 消息
6 IOT_Shadow_Subscribe 订阅 MQTT 主题
7 IOT_Shadow_Unsubscribe 取消订阅 MQTT 主题
8 IOT_Shadow_Update 异步方式更新设备影子文档
9 IOT_Shadow_Update_Sync 同步步方式更新设备影子文档
10 IOT_Shadow_Get 异步方式获取设备影子文档
11 IOT_Shadow_Get_Sync 同步方式获取设备影子文档
12 IOT_Shadow_Register_Property 注册当前设备的设备属性
13 IOT_Shadow_JSON_ConstructReport 在JSON文档中添加 reported 字段
13 IOT_Shadow_JSON_ConstructReportAndDesireAllNull 在JSON文档中添加 reported 字段,同时清空 desired 字段赋值为 null
13 IOT_Shadow_JSON_ConstructDesireAllNull 在JSON文档中将 desired 字段赋值为 null

CoAP 接口

序号 函数名 说明
1 IOT_COAP_Construct 构造 CoAPClient 并完成 CoAP 连接
2 IOT_COAP_Destroy 关闭 CoAP 连接并销毁 CoAPClient
3 IOT_COAP_Yield 在当前线程为底层 CoAP 客户端让出一定 CPU 执行时间
4 IOT_COAP_SendMessage 发布 CoAP 消息
5 IOT_COAP_GetMessageId 获取 CoAP Response 消息 msgId
6 IOT_COAP_GetMessagePayload 获取 CoAP Response 消息内容
7 IOT_COAP_GetMessageCode 获取 CoAP Response 消息错误码
Clone this wiki locally