-
Notifications
You must be signed in to change notification settings - Fork 75
SDK使用
shockcao edited this page Nov 29, 2017
·
14 revisions
对设备端SDK的使用分为如下几步:
- 修改编译配置进行编译, 详见设备端SDK的编译页面
- 获取编译好的SDK, 如成功存放在
output/release/lib/*.a - 将
libiot_sdk.a libiot_platform.a等配合output/release/include/目录下的头文件, 加入您自己的工程使用
output/release/
+-- bin
+-- include
| +-- exports
| | +-- 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
+-- src
+-- makefile
+-- mqtt-example.c
概要说明如下:
| 文件 | 说明 |
|---|---|
| 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/lib*.a | 编译出的iotsdk iot平台sdk(由硬件抽象层编译得来),mbedtls相关库用于加密通信 |
| src/makefile | 示例用makefile, 演示得到lib/lib*.a之后, 如何在SDK之外链接它使用起来 |
SDK顶层目录的make.settings文件, 列出了对功能进行裁剪时可以选择打开或者关闭的开关, 可以说明如下:
FEATURE_MQTT_COMM_ENABLED = y
FEATURE_ASYMC_ENCRYPT_ENABLED = y
| 选项 | 含义 |
|---|---|
| FEATURE_MQTT_COMM_ENABLED | 是否使用MQTT通道功能的总开关,当前不得关闭 |
| FEATURE_ASYMC_ENCRYPT_ENABLED | 是否使用非对称加密功能的开关 |
通过编辑make.settings文件, 把不需要的功能模块关闭, 可以减小最终编译出libiot_sdk.a库文件的大小, 以节省嵌入式设备上的资源
例如只需要以对称加密的方式连接, 不需要非对称功能, 可以将默认的make.settings修改如下:
FEATURE_MQTT_COMM_ENABLED = y
FEATURE_ASYMC_ENCRYPT_ENABLED = n
src/sdk-impl$ grep -o "IOT_[A-Z][_a-zA-Z]*[^_]\> *(" qcloud_iot_export.h exports/*.h|sed 's!.*:\(.*\)(!\1!'|cat -n
1 IOT_MQTT_KEEP_ALIVE_INTERNAL
2 IOT_MQTT_COMMAND_TIMEOUT
3 IOT_TLS_HANDSHAKE_TIMEOUT
4 IOT_MQTT_TX_BUF_LEN
5 IOT_MQTT_RX_BUF_LEN
6 IOT_Log_Set_Level
7 IOT_Log_Get_Level
8 IOT_Log_Set_MessageHandler
9 IOT_FUNC_EXIT_RC
10 IOT_FUNC_EXIT_RC
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_IsConnected
21 IOT_Shadow_Destroy
22 IOT_Shadow_Yield
23 IOT_Shadow_Update
24 IOT_Shadow_Get
25 IOT_Shadow_Delete
26 IOT_Shadow_Register_Update_Documents
27 IOT_Shadow_Register_Property
28 IOT_Shadow_JSON_ConstructReport
29 IOT_Shadow_JSON_ConstructDesireAllNull
30 IOT_Shadow_Discard_Old_Delta
31 IOT_Shadow_Get_Document_Version
| 序号 | 函数名 | 说明 |
|---|---|---|
| 1 | IOT_Log_Set_Level | 设置打印的日志等级 |
| 2 | IOT_Log_Get_Level | 返回日志输出的等级 |
| 2 | IOT_Log_Set_MessageHandler | 设置日志回调函数,接管SDK日志用于其它输出方式 |
| 序号 | 函数名 | 说明 |
|---|---|---|
| 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 | 客户端目前是否已连接 |
| 序号 | 函数名 | 说明 |
|---|---|---|
| 1 | IOT_Shadow_Construct | 构造 ShadowClient |
| 2 | IOT_Shadow_Destroy | 关闭 Shadow 连接并销毁 ShadowClient |
| 3 | IOT_Shadow_Yield | 在当前线程为底层 Shadow 客户端让出一定CPU执行时间 |
| 4 | IOT_Shadow_Update | 更新设备影子文档 |
| 5 | IOT_Shadow_Get | 获取设备影子文档 |
| 6 | IOT_Shadow_Delete | 删除设备影子文档 |
| 7 | IOT_Shadow_Register_Property | 注册当前设备的设备属性 |
Maintainer: Cao Shao Kun shockcao@tencent.com