Skip to content

SDK使用

shockcao edited this page Nov 29, 2017 · 14 revisions

设备端SDK的使用

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

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

SDK编译产物说明

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编译开关说明

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

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_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日志用于其它输出方式

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 客户端目前是否已连接

设备影子接口

序号 函数名 说明
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 注册当前设备的设备属性
Clone this wiki locally