Link Kit C-SDK  4.1.0
aiot_mqtt_api.h
浏览该文件的文档.
1 
34 #ifndef _AIOT_MQTT_API_H_
35 #define _AIOT_MQTT_API_H_
36 
37 #if defined(__cplusplus)
38 extern "C" {
39 #endif
40 
41 #include <stdint.h>
42 #include "aiot_mqtt_props_api.h"
43 
51 typedef enum {
56 
61 
66 
71 
76 
81 
87 
88 
97 typedef enum {
101 
102 /* MQTT服务端支持的最大的用户属性的数目. */
103 #define USER_PROPERTY_MAX (20)
104 
105 typedef struct {
109  aiot_mqtt_recv_type_t type;
113  union {
117  struct {
118  uint8_t qos;
119  char *topic;
120  uint16_t topic_len;
121  uint8_t *payload;
122  uint32_t payload_len;
124  } pub;
128  struct {
129  int32_t res;
130  uint8_t max_qos;
131  uint16_t packet_id;
132  mqtt_properties_t *props;
133  } sub_ack;
137  struct {
138  uint16_t packet_id;
139  mqtt_properties_t *props;
140  } unsub_ack;
144  struct {
145  uint16_t packet_id;
146  mqtt_properties_t *props;
147  } pub_ack;
148 
152  struct {
153  uint8_t reason_code;
154  mqtt_properties_t *props;
155  } con_ack;
156 
160  struct {
161  uint8_t reason_code;
162  mqtt_properties_t *props;
163  } server_disconnect;
164 
165  } data;
167 
177 typedef void (*aiot_mqtt_recv_handler_t)(void *handle, const aiot_mqtt_recv_t *packet, void *userdata);
178 
182 typedef enum {
196 
197 typedef enum {
207 
211 typedef struct {
216  aiot_mqtt_event_type_t type;
220  union {
224  aiot_mqtt_disconnect_event_type_t disconnect;
225  } data;
227 
236 typedef void (*aiot_mqtt_event_handler_t)(void *handle, const aiot_mqtt_event_t *event, void *userdata);
237 
246 typedef struct {
247  char *topic;
249  void *userdata;
251 
269 typedef enum {
302 
317 
326 
335 
344 
357 
366 
375 
384 
393 
408 
421 
440 
452 
461 
470 
479 
488 
497 
506 
518 
531 
544 
553 
562 
571 
582 
595 
607 
620 
633 
646 
649 
658 void *aiot_mqtt_init(void);
659 
694 int32_t aiot_mqtt_setopt(void *handle, aiot_mqtt_option_t option, void *data);
695 
706 int32_t aiot_mqtt_deinit(void **handle);
707 
741 int32_t aiot_mqtt_connect(void *handle);
742 
758 int32_t aiot_mqtt_disconnect(void *handle);
759 
773 int32_t aiot_mqtt_heartbeat(void *handle);
774 
796 int32_t aiot_mqtt_process(void *handle);
797 
811 int32_t aiot_mqtt_pub(void *handle, char *topic, uint8_t *payload, uint32_t payload_len, uint8_t qos);
812 
829 int32_t aiot_mqtt_sub(void *handle, char *topic, aiot_mqtt_recv_handler_t handler, uint8_t qos, void *userdata);
830 
841 int32_t aiot_mqtt_unsub(void *handle, char *topic);
842 
872 int32_t aiot_mqtt_recv(void *handle);
873 
877 typedef struct {
881  char *topic;
885  uint8_t *payload;
889  uint32_t payload_len;
893  uint8_t qos;
897  uint8_t retain;
903 
940 int32_t aiot_mqtt_connect_v5(void *handle, will_message_t *will_message, mqtt_properties_t *conn_prop);
941 
960 int32_t aiot_mqtt_pub_v5(void *handle, char *topic, uint8_t *payload, uint32_t payload_len, uint8_t qos,
961  uint8_t retain, mqtt_properties_t *pub_prop);
962 
983 int32_t aiot_mqtt_disconnect_v5(void *handle, uint8_t reason_code, mqtt_properties_t *disconn_property);
984 
988 typedef struct {
1004  uint8_t no_local;
1008  uint8_t qos;
1009 } sub_options_t;
1010 
1032 int32_t aiot_mqtt_sub_v5(void *handle, char *topic, sub_options_t *opts, aiot_mqtt_recv_handler_t handler,
1033  void *userdata, mqtt_properties_t *sub_prop);
1034 
1049 int32_t aiot_mqtt_unsub_v5(void *handle, char *topic, mqtt_properties_t *unsub_prop);
1050 
1051 #if defined(__cplusplus)
1052 }
1053 #endif
1054 
1055 #endif
1056 
int32_t aiot_mqtt_connect(void *handle)
与MQTT服务器建立连接
Definition: aiot_mqtt_api.c:2376
设备的product key, 可从阿里云物联网平台控制台获取
Definition: aiot_mqtt_api.h:325
int32_t aiot_mqtt_recv(void *handle)
尝试从网络上接收MQTT报文
Definition: aiot_mqtt_api.c:3088
uint16_t packet_id
Definition: aiot_mqtt_api.h:131
uint8_t * payload
遗嘱消息的payload
Definition: aiot_mqtt_api.h:885
int32_t aiot_mqtt_disconnect_v5(void *handle, uint8_t reason_code, mqtt_properties_t *disconn_property)
与MQTT服务器断开连接 以MQTT 5.0协议的方式接入, 支持5.0的特性. 在调用这个接口前, 需要确保已经通过AIOT_...
Definition: aiot_mqtt_api.c:2753
uint8_t qos
Definition: aiot_mqtt_api.h:118
char * topic
Definition: aiot_mqtt_api.h:119
设备的device name, 可从阿里云物联网平台控制台获取
Definition: aiot_mqtt_api.h:334
使用自定义连接凭据连接mqtt服务器时, 凭据的clientid
Definition: aiot_mqtt_api.h:392
设备连接阿里云物联网平台时的安全模式, 使用标准的tcp或tls时无需配置
Definition: aiot_mqtt_api.h:365
uint8_t * payload
Definition: aiot_mqtt_api.h:121
int32_t aiot_mqtt_setopt(void *handle, aiot_mqtt_option_t option, void *data)
设置mqtt参数
Definition: aiot_mqtt_api.c:2050
aiot_mqtt_recv_handler_t handler
Definition: aiot_mqtt_api.h:248
void(* aiot_mqtt_recv_handler_t)(void *handle, const aiot_mqtt_recv_t *packet, void *userdata)
MQTT报文接收回调函数原型
Definition: aiot_mqtt_api.h:177
uint8_t qos
遗嘱消息被发布时的qos等级
Definition: aiot_mqtt_api.h:893
int32_t aiot_mqtt_sub_v5(void *handle, char *topic, sub_options_t *opts, aiot_mqtt_recv_handler_t handler, void *userdata, mqtt_properties_t *sub_prop)
发送一条mqtt SUBSCRIBE报文到MQTT服务器, 用于订阅指定的topic 以MQTT 5.0协议的方式接入, 支持5.0的特性. 在调用这个接口前, 需要确保已经通过AIOT_MQTTOPT_VERSION的方式, 设置过版本号为AIOT_MQTT_VERSION_5_0
Definition: aiot_mqtt_api.c:3325
uint8_t retain_handling
保留消息选项
Definition: aiot_mqtt_api.h:996
uint32_t payload_len
遗嘱消息的payload长度
Definition: aiot_mqtt_api.h:889
当MQTT实例断开网络连接后重连成功时, 触发此事件
Definition: aiot_mqtt_api.h:190
当MQTT实例断开网络连接时, 触发此事件
Definition: aiot_mqtt_api.h:194
MQTT 服务器的端口号
Definition: aiot_mqtt_api.h:316
aiot_mqtt_recv_type_t type
MQTT报文类型, 更多信息请参考aiot_mqtt_recv_type_t.
Definition: aiot_mqtt_api.h:109
int32_t res
Definition: aiot_mqtt_api.h:129
int32_t aiot_mqtt_sub(void *handle, char *topic, aiot_mqtt_recv_handler_t handler, uint8_t qos, void *userdata)
发送一条mqtt SUBSCRIBE报文到MQTT服务器, 用于订阅指定的topic
Definition: aiot_mqtt_api.c:3005
在publish消息的topic上附加请求ID字符串, 用于全链路日志追踪
Definition: aiot_mqtt_api.h:581
设置MQTT 协议的版本号
Definition: aiot_mqtt_api.h:619
aiot_mqtt_recv_type_t
MQTT报文类型
Definition: aiot_mqtt_api.h:51
使用 aiot_mqtt_setopt 配置 AIOT_MQTTOPT_APPEND_TOPIC_MAP 时的数据
Definition: aiot_mqtt_api.h:246
QoS1消息重发间隔
Definition: aiot_mqtt_api.h:517
int32_t aiot_mqtt_heartbeat(void *handle)
发送MQTT PINGREQ报文, 用于维持心跳
Definition: aiot_mqtt_api.c:2417
设备连接阿里云物联网平台时的扩展clientid
Definition: aiot_mqtt_api.h:356
SDK缓存的QOS 1消息的数量的最大值
Definition: aiot_mqtt_api.h:606
uint8_t retain
遗嘱消息是否为保留消息
Definition: aiot_mqtt_api.h:897
从MQTT服务器收取的数据从此默认回调函数进行通知
Definition: aiot_mqtt_api.h:543
aiot_mqtt_event_type_t type
MQTT内部事件类型. 更多信息请参考aiot_mqtt_event_type_t.
Definition: aiot_mqtt_api.h:216
MQTT CONACK报文
Definition: aiot_mqtt_api.h:80
aiot_mqtt_event_type_t
MQTT内部事件类型
Definition: aiot_mqtt_api.h:182
uint8_t qos
Qos级别,取值0/1.
Definition: aiot_mqtt_api.h:1008
int32_t aiot_mqtt_connect_v5(void *handle, will_message_t *will_message, mqtt_properties_t *conn_prop)
与MQTT服务器建立连接. 以MQTT 5.0协议的方式接入, 支持5.0的特性. 在调用这个接口前, 需要确保已经通过AIOT...
Definition: aiot_mqtt_api.c:3366
Definition: aiot_mqtt_api.h:105
MQTT发送数据时, 在协议栈花费的最长时间
Definition: aiot_mqtt_api.h:496
设备的device secret, 可从阿里云物联网平台控制台获取
Definition: aiot_mqtt_api.h:343
uint16_t topic_len
Definition: aiot_mqtt_api.h:120
MQTT 服务器的域名地址或者ip地址
Definition: aiot_mqtt_api.h:301
配置MQTT PINGREQ报文发送时间间隔. (心跳发送间隔)
Definition: aiot_mqtt_api.h:460
MQTT实例网络连接由于网络故障而断开
Definition: aiot_mqtt_api.h:201
Definition: aiot_mqtt_api.h:647
int32_t aiot_mqtt_disconnect(void *handle)
与MQTT服务器断开连接
Definition: aiot_mqtt_api.c:2381
当MQTT实例第一次连接网络成功时, 触发此事件
Definition: aiot_mqtt_api.h:186
MQTT建联时, 网络使用的安全凭据
Definition: aiot_mqtt_api.h:439
使用自定义连接凭据连接mqtt服务器时, 凭据的password
Definition: aiot_mqtt_api.h:383
MQTT实例网络连接由于心跳丢失超过指定次数(AIOT_MQTTOPT_HEARTBEAT_MAX_LOST )而断开
Definition: aiot_mqtt_api.h:205
MQTT SERVER DISCONNECT报文
Definition: aiot_mqtt_api.h:85
int32_t aiot_mqtt_process(void *handle)
此函数用于处理定时心跳发送和qos1消息的重传逻辑
Definition: aiot_mqtt_api.c:2428
aiot_mqtt_disconnect_event_type_t
Definition: aiot_mqtt_api.h:197
MQTT PINGRESP报文
Definition: aiot_mqtt_api.h:60
int32_t aiot_mqtt_pub_v5(void *handle, char *topic, uint8_t *payload, uint32_t payload_len, uint8_t qos, uint8_t retain, mqtt_properties_t *pub_prop)
发送一条PUBLISH报文到MQTT服务器, QoS为0, 用于发布指定的消息 以MQTT 5.0协议的方式接入, 支持5.0的特性. 在调用这个接口前, 需要确保已经通过AIOT_MQTTOPT_VERSION的方式, 设置过版本号为AIOT_MQTT_VERSION_5_0
Definition: aiot_mqtt_api.c:3311
配置MQTT PINGRESP报文允许连续丢失的最大次数, 当超过这个次数时, 触发重连机制
Definition: aiot_mqtt_api.h:469
MQTT 5.0特性. 设置是否要使能assigned clentid功能
Definition: aiot_mqtt_api.h:632
MQTT客户端内部发生的事件会从此回调函数进行通知, 如上线/断线/重新上线
Definition: aiot_mqtt_api.h:552
Definition: aiot_mqtt_api.h:98
可在MQTT建立连接之前配置MQTT topic与其对应的回调函数
Definition: aiot_mqtt_api.h:561
MQTT内部事件
Definition: aiot_mqtt_api.h:211
void * aiot_mqtt_init(void)
初始化mqtt实例并设置默认参数
Definition: aiot_mqtt_api.c:1985
MQTT PUBACK报文
Definition: aiot_mqtt_api.h:75
打开/关闭MQTT重连机制
Definition: aiot_mqtt_api.h:478
mqtt_prop模块头文件, 提供mqtt 5.0用户属性管理的能力
aiot_mqtt_disconnect_event_type_t disconnect
MQTT连接断开时, 具体的断开原因
Definition: aiot_mqtt_api.h:224
MQTT建联时, 建立网络连接的超时时间
Definition: aiot_mqtt_api.h:451
int32_t aiot_mqtt_unsub_v5(void *handle, char *topic, mqtt_properties_t *unsub_prop)
发送一条mqtt UNSUBSCRIBE报文到MQTT服务器, 用于取消订阅指定的topic 以MQTT 5.0协议的方式接入, 支持5.0的特性. 在调用这个接口前, 需要确保已经通过AIOT_MQTTOPT_VERSION的方式, 设置过版本号为AIOT_MQTT_VERSION_5_0
Definition: aiot_mqtt_api.c:3073
订阅选项
Definition: aiot_mqtt_api.h:988
Definition: aiot_mqtt_api.h:99
uint8_t reason_code
Definition: aiot_mqtt_api.h:153
使用自定义连接凭据连接mqtt服务器时, 凭据的username
Definition: aiot_mqtt_api.h:374
当由于心跳丢失或者网络断开触发重连机制时, 尝试重连的时间间隔
Definition: aiot_mqtt_api.h:487
char * topic
遗嘱消息的topic
Definition: aiot_mqtt_api.h:881
char * topic
Definition: aiot_mqtt_api.h:247
取消之前建立的MQTT topic与其回调函数的对应关系
Definition: aiot_mqtt_api.h:570
Definition: aiot_mqtt_props_api.h:95
MQTT 5.0特性. 设置是否要使能设备端流控功能
Definition: aiot_mqtt_api.h:645
MQTT PUBLISH报文
Definition: aiot_mqtt_api.h:55
MQTT SUBACK报文
Definition: aiot_mqtt_api.h:65
aiot_mqtt_option_t
aiot_mqtt_setopt 函数的option参数. 对于下文每一个选项中的数据类型, 指的是aiot_mqtt_setopt 中的data参...
Definition: aiot_mqtt_api.h:269
MQTT UNSUB报文
Definition: aiot_mqtt_api.h:70
MQTT建联时, CONNECT报文中的clean session参数
Definition: aiot_mqtt_api.h:420
int32_t aiot_mqtt_deinit(void **handle)
释放mqtt实例句柄的资源
Definition: aiot_mqtt_api.c:2236
aiot_mqtt_protocol_version
MQTT协议版本
Definition: aiot_mqtt_api.h:97
int32_t aiot_mqtt_pub(void *handle, char *topic, uint8_t *payload, uint32_t payload_len, uint8_t qos)
发送一条PUBLISH报文到MQTT服务器, QoS为0, 用于发布指定的消息
Definition: aiot_mqtt_api.c:2933
void(* aiot_mqtt_event_handler_t)(void *handle, const aiot_mqtt_event_t *event, void *userdata)
MQTT事件回调函数
Definition: aiot_mqtt_api.h:236
uint8_t max_qos
Definition: aiot_mqtt_api.h:130
MQTT建联时, CONNECT报文中的心跳间隔参数
Definition: aiot_mqtt_api.h:407
uint8_t retain_as_publish
云端pub时是否开启保留消息标记:[0]不携带保留标记 [1]携带保留标记
Definition: aiot_mqtt_api.h:1000
mqtt_properties_t * props
遗嘱消息携带的属性
Definition: aiot_mqtt_api.h:901
MQTT接收数据时, 在协议栈花费的最长时间
Definition: aiot_mqtt_api.h:505
int32_t aiot_mqtt_unsub(void *handle, char *topic)
发送一条mqtt UNSUBSCRIBE报文到MQTT服务器, 用于取消订阅指定的topic
Definition: aiot_mqtt_api.c:3068
mqtt_properties_t * props
Definition: aiot_mqtt_api.h:123
销毁MQTT实例时, 等待其他api执行完毕的时间
Definition: aiot_mqtt_api.h:530
uint8_t no_local
订阅非本地发布消息:[0]不启用 [1]启用
Definition: aiot_mqtt_api.h:1004
用户需要SDK暂存的上下文
Definition: aiot_mqtt_api.h:594
void * userdata
Definition: aiot_mqtt_api.h:249
uint32_t payload_len
Definition: aiot_mqtt_api.h:122
遗嘱消息
Definition: aiot_mqtt_api.h:877