Link Kit C-SDK  4.0.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 
50 typedef enum {
55 
60 
65 
70 
75 
80 
86 
87 
96 typedef enum {
100 
108 typedef struct {
109  uint16_t len;
110  uint8_t *value;
111 } len_value_t;
112 
121 typedef struct {
125 
126 /* MQTT服务端支持的最大的用户属性的数目. */
127 #define USER_PROPERTY_MAX (20)
128 
132 typedef struct {
133  uint8_t max_qos;
134  uint16_t topic_alias_max;
136  uint32_t max_packet_size;
143 
147 typedef struct {
149  uint16_t topic_alias;
155 
163 typedef struct {
164  uint16_t topic_alias_max; /* topic 别名最大数量 */
166  user_property_t *user_property[USER_PROPERTY_MAX]; /* 用户属性 */
168 
177 typedef struct {
179  user_property_t *user_property[USER_PROPERTY_MAX]; /* 用户属性 */
181 
190 typedef struct {
193 
202 typedef struct {
205 
206 
207 typedef struct {
211  aiot_mqtt_recv_type_t type;
215  union {
219  struct {
220  uint8_t qos;
221  char *topic;
222  uint16_t topic_len;
223  uint8_t *payload;
224  uint32_t payload_len;
225  pub_property_t *pub_prop; /* pub报文中的属性. MQTT 5.0 特性*/
226  } pub;
230  struct {
231  int32_t res;
232  uint8_t max_qos;
233  uint16_t packet_id;
234  } sub_ack;
238  struct {
239  uint16_t packet_id;
240  } unsub_ack;
244  struct {
245  uint16_t packet_id;
246  } pub_ack;
247 
251  struct {
252  uint8_t reason_code;
253  connack_property_t prop; /* 建连回复报文中的属性. MQTT 5.0 特性 */
254  } con_ack;
255 
259  struct {
260  uint8_t reason_code;
261  } server_disconnect;
262 
263  } data;
265 
275 typedef void (*aiot_mqtt_recv_handler_t)(void *handle, const aiot_mqtt_recv_t *packet, void *userdata);
276 
280 typedef enum {
294 
295 typedef enum {
305 
309 typedef struct {
314  aiot_mqtt_event_type_t type;
318  union {
322  aiot_mqtt_disconnect_event_type_t disconnect;
323  } data;
325 
334 typedef void (*aiot_mqtt_event_handler_t)(void *handle, const aiot_mqtt_event_t *event, void *userdata);
335 
344 typedef struct {
345  char *topic;
347  void *userdata;
349 
367 typedef enum {
400 
415 
424 
433 
442 
455 
464 
473 
482 
491 
506 
519 
538 
550 
559 
568 
577 
586 
595 
604 
616 
629 
642 
651 
660 
669 
680 
693 
706 
719 
732 
735 
744 void *aiot_mqtt_init(void);
745 
780 int32_t aiot_mqtt_setopt(void *handle, aiot_mqtt_option_t option, void *data);
781 
792 int32_t aiot_mqtt_deinit(void **handle);
793 
827 int32_t aiot_mqtt_connect(void *handle);
828 
844 int32_t aiot_mqtt_disconnect(void *handle);
845 
859 int32_t aiot_mqtt_heartbeat(void *handle);
860 
882 int32_t aiot_mqtt_process(void *handle);
883 
897 int32_t aiot_mqtt_pub(void *handle, char *topic, uint8_t *payload, uint32_t payload_len, uint8_t qos);
898 
915 int32_t aiot_mqtt_sub(void *handle, char *topic, aiot_mqtt_recv_handler_t handler, uint8_t qos, void *userdata);
916 
927 int32_t aiot_mqtt_unsub(void *handle, char *topic);
928 
958 int32_t aiot_mqtt_recv(void *handle);
959 
995 int32_t aiot_mqtt_connect_with_prop(void *handle, conn_property_t *conn_prop);
996 
1014 int32_t aiot_mqtt_pub_with_prop(void *handle, char *topic, uint8_t *payload, uint32_t payload_len, uint8_t qos,
1015  pub_property_t *pub_prop);
1016 
1037 int32_t aiot_mqtt_disconnect_with_prop(void *handle, uint8_t reason_code, disconn_property_t *disconn_property);
1038 
1060 int32_t aiot_mqtt_sub_with_prop(void *handle, char *topic, aiot_mqtt_recv_handler_t handler, uint8_t qos,
1061  void *userdata, sub_property_t *sub_prop);
1062 
1077 int32_t aiot_mqtt_unsub_with_prop(void *handle, char *topic, unsub_property_t *unsub_prop);
1078 
1079 #if defined(__cplusplus)
1080 }
1081 #endif
1082 
1083 #endif
1084 
int32_t aiot_mqtt_connect(void *handle)
与MQTT服务器建立连接
Definition: aiot_mqtt_api.c:2801
设备的product key, 可从阿里云物联网平台控制台获取
Definition: aiot_mqtt_api.h:423
uint8_t * assigned_clientid
Definition: aiot_mqtt_api.h:135
uint32_t max_packet_size
Definition: aiot_mqtt_api.h:136
int32_t aiot_mqtt_recv(void *handle)
尝试从网络上接收MQTT报文
Definition: aiot_mqtt_api.c:3565
uint16_t packet_id
Definition: aiot_mqtt_api.h:233
uint8_t qos
Definition: aiot_mqtt_api.h:220
uint32_t message_expire_interval
Definition: aiot_mqtt_api.h:148
char * topic
Definition: aiot_mqtt_api.h:221
设备的device name, 可从阿里云物联网平台控制台获取
Definition: aiot_mqtt_api.h:432
使用自定义连接凭据连接mqtt服务器时, 凭据的clientid
Definition: aiot_mqtt_api.h:490
设备连接阿里云物联网平台时的安全模式, 使用标准的tcp或tls时无需配置
Definition: aiot_mqtt_api.h:463
uint16_t topic_alias_max
Definition: aiot_mqtt_api.h:134
uint8_t * payload
Definition: aiot_mqtt_api.h:223
len_value_t key
Definition: aiot_mqtt_api.h:122
int32_t aiot_mqtt_setopt(void *handle, aiot_mqtt_option_t option, void *data)
设置mqtt参数
Definition: aiot_mqtt_api.c:2479
aiot_mqtt_recv_handler_t handler
Definition: aiot_mqtt_api.h:346
void(* aiot_mqtt_recv_handler_t)(void *handle, const aiot_mqtt_recv_t *packet, void *userdata)
MQTT报文接收回调函数原型
Definition: aiot_mqtt_api.h:275
pub_property_t * pub_prop
Definition: aiot_mqtt_api.h:225
#define USER_PROPERTY_MAX
Definition: aiot_mqtt_api.h:127
当MQTT实例断开网络连接后重连成功时, 触发此事件
Definition: aiot_mqtt_api.h:288
int32_t aiot_mqtt_connect_with_prop(void *handle, conn_property_t *conn_prop)
与MQTT服务器建立连接. 以MQTT 5.0协议的方式接入, 支持5.0的特性. 在调用这个接口前, 需要确保已经通过AIOT...
Definition: aiot_mqtt_api.c:2806
当MQTT实例断开网络连接时, 触发此事件
Definition: aiot_mqtt_api.h:292
MQTT 服务器的端口号
Definition: aiot_mqtt_api.h:414
aiot_mqtt_recv_type_t type
MQTT报文类型, 更多信息请参考aiot_mqtt_recv_type_t.
Definition: aiot_mqtt_api.h:211
len_value_t value
Definition: aiot_mqtt_api.h:123
int32_t res
Definition: aiot_mqtt_api.h:231
len_value_t correlation_data
Definition: aiot_mqtt_api.h:151
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:3463
在publish消息的topic上附加请求ID字符串, 用于全链路日志追踪
Definition: aiot_mqtt_api.h:679
设置MQTT 协议的版本号
Definition: aiot_mqtt_api.h:705
aiot_mqtt_recv_type_t
MQTT报文类型
Definition: aiot_mqtt_api.h:50
使用 aiot_mqtt_setopt 配置 AIOT_MQTTOPT_APPEND_TOPIC_MAP 时的数据
Definition: aiot_mqtt_api.h:344
uint8_t max_qos
Definition: aiot_mqtt_api.h:133
QoS1消息重发间隔
Definition: aiot_mqtt_api.h:615
uint8_t shared_subscription_available
Definition: aiot_mqtt_api.h:140
int32_t aiot_mqtt_heartbeat(void *handle)
发送MQTT PINGREQ报文, 用于维持心跳
Definition: aiot_mqtt_api.c:2861
设备连接阿里云物联网平台时的扩展clientid
Definition: aiot_mqtt_api.h:454
MQTT 5.0协议中, 上行的disconnect报文中的属性.
Definition: aiot_mqtt_api.h:177
从MQTT服务器收取的数据从此默认回调函数进行通知
Definition: aiot_mqtt_api.h:641
aiot_mqtt_event_type_t type
MQTT内部事件类型. 更多信息请参考aiot_mqtt_event_type_t.
Definition: aiot_mqtt_api.h:314
MQTT CONACK报文
Definition: aiot_mqtt_api.h:79
aiot_mqtt_event_type_t
MQTT内部事件类型
Definition: aiot_mqtt_api.h:280
Definition: aiot_mqtt_api.h:207
MQTT发送数据时, 在协议栈花费的最长时间
Definition: aiot_mqtt_api.h:594
设备的device secret, 可从阿里云物联网平台控制台获取
Definition: aiot_mqtt_api.h:441
uint16_t topic_len
Definition: aiot_mqtt_api.h:222
MQTT 服务器的域名地址或者ip地址
Definition: aiot_mqtt_api.h:399
配置MQTT PINGREQ报文发送时间间隔. (心跳发送间隔)
Definition: aiot_mqtt_api.h:558
MQTT实例网络连接由于网络故障而断开
Definition: aiot_mqtt_api.h:299
Definition: aiot_mqtt_api.h:733
int32_t aiot_mqtt_disconnect(void *handle)
与MQTT服务器断开连接
Definition: aiot_mqtt_api.c:2825
uint16_t server_receive_max
Definition: aiot_mqtt_api.h:137
当MQTT实例第一次连接网络成功时, 触发此事件
Definition: aiot_mqtt_api.h:284
MQTT建联时, 网络使用的安全凭据
Definition: aiot_mqtt_api.h:537
使用自定义连接凭据连接mqtt服务器时, 凭据的password
Definition: aiot_mqtt_api.h:481
MQTT 5.0协议中用户属性
Definition: aiot_mqtt_api.h:121
int32_t aiot_mqtt_pub_with_prop(void *handle, char *topic, uint8_t *payload, uint32_t payload_len, uint8_t qos, pub_property_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:3377
MQTT实例网络连接由于心跳丢失超过指定次数(AIOT_MQTTOPT_HEARTBEAT_MAX_LOST )而断开
Definition: aiot_mqtt_api.h:303
MQTT SERVER DISCONNECT报文
Definition: aiot_mqtt_api.h:84
int32_t aiot_mqtt_process(void *handle)
此函数用于处理定时心跳发送和qos1消息的重传逻辑
Definition: aiot_mqtt_api.c:2872
aiot_mqtt_disconnect_event_type_t
Definition: aiot_mqtt_api.h:295
MQTT PINGRESP报文
Definition: aiot_mqtt_api.h:59
uint16_t topic_alias_max
Definition: aiot_mqtt_api.h:164
配置MQTT PINGRESP报文允许连续丢失的最大次数, 当超过这个次数时, 触发重连机制
Definition: aiot_mqtt_api.h:567
MQTT 5.0特性. 设置是否要使能assigned clentid功能
Definition: aiot_mqtt_api.h:718
MQTT客户端内部发生的事件会从此回调函数进行通知, 如上线/断线/重新上线
Definition: aiot_mqtt_api.h:650
Definition: aiot_mqtt_api.h:97
可在MQTT建立连接之前配置MQTT topic与其对应的回调函数
Definition: aiot_mqtt_api.h:659
MQTT内部事件
Definition: aiot_mqtt_api.h:309
uint8_t * value
Definition: aiot_mqtt_api.h:110
void * aiot_mqtt_init(void)
初始化mqtt实例并设置默认参数
Definition: aiot_mqtt_api.c:2415
uint16_t len
Definition: aiot_mqtt_api.h:109
MQTT PUBACK报文
Definition: aiot_mqtt_api.h:74
打开/关闭MQTT重连机制
Definition: aiot_mqtt_api.h:576
connack_property_t prop
Definition: aiot_mqtt_api.h:253
aiot_mqtt_disconnect_event_type_t disconnect
MQTT连接断开时, 具体的断开原因
Definition: aiot_mqtt_api.h:322
MQTT 5.0协议中, 上行的connect报文中的属性.
Definition: aiot_mqtt_api.h:163
MQTT建联时, 建立网络连接的超时时间
Definition: aiot_mqtt_api.h:549
Definition: aiot_mqtt_api.h:98
uint8_t subscription_identifier_available
Definition: aiot_mqtt_api.h:139
len_value_t * reason_string
Definition: aiot_mqtt_api.h:178
uint8_t reason_code
Definition: aiot_mqtt_api.h:252
使用自定义连接凭据连接mqtt服务器时, 凭据的username
Definition: aiot_mqtt_api.h:472
当由于心跳丢失或者网络断开触发重连机制时, 尝试重连的时间间隔
Definition: aiot_mqtt_api.h:585
len_value_t response_topic
Definition: aiot_mqtt_api.h:150
char * topic
Definition: aiot_mqtt_api.h:345
取消之前建立的MQTT topic与其回调函数的对应关系
Definition: aiot_mqtt_api.h:668
value-length 结构体.
Definition: aiot_mqtt_api.h:108
MQTT 5.0特性. 设置是否要使能设备端流控功能
Definition: aiot_mqtt_api.h:731
MQTT PUBLISH报文
Definition: aiot_mqtt_api.h:54
uint16_t client_receive_max
Definition: aiot_mqtt_api.h:165
MQTT SUBACK报文
Definition: aiot_mqtt_api.h:64
aiot_mqtt_option_t
aiot_mqtt_setopt 函数的option参数. 对于下文每一个选项中的数据类型, 指的是aiot_mqtt_setopt 中的data参...
Definition: aiot_mqtt_api.h:367
MQTT 5.0协议中, 下行的conack报文conack中的属性
Definition: aiot_mqtt_api.h:132
MQTT 5.0协议中, 上行的subscribe报文中的属性.
Definition: aiot_mqtt_api.h:202
MQTT UNSUB报文
Definition: aiot_mqtt_api.h:69
uint16_t topic_alias
Definition: aiot_mqtt_api.h:149
uint8_t wildcard_subscription_available
Definition: aiot_mqtt_api.h:138
uint32_t subscription_identifier
Definition: aiot_mqtt_api.h:152
MQTT建联时, CONNECT报文中的clean session参数
Definition: aiot_mqtt_api.h:518
int32_t aiot_mqtt_deinit(void **handle)
释放mqtt实例句柄的资源
Definition: aiot_mqtt_api.c:2661
aiot_mqtt_protocol_version
MQTT协议版本
Definition: aiot_mqtt_api.h:96
int32_t aiot_mqtt_unsub_with_prop(void *handle, char *topic, unsub_property_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:3550
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:3391
void(* aiot_mqtt_event_handler_t)(void *handle, const aiot_mqtt_event_t *event, void *userdata)
MQTT事件回调函数
Definition: aiot_mqtt_api.h:334
MQTT 5.0协议中, 上行的subscribe报文中的属性.
Definition: aiot_mqtt_api.h:190
uint8_t max_qos
Definition: aiot_mqtt_api.h:232
MQTT建联时, CONNECT报文中的心跳间隔参数
Definition: aiot_mqtt_api.h:505
MQTT接收数据时, 在协议栈花费的最长时间
Definition: aiot_mqtt_api.h:603
int32_t aiot_mqtt_unsub(void *handle, char *topic)
发送一条mqtt UNSUBSCRIBE报文到MQTT服务器, 用于取消订阅指定的topic
Definition: aiot_mqtt_api.c:3545
MQTT 5.0协议中, 上行和下行pub报文中的属性.
Definition: aiot_mqtt_api.h:147
销毁MQTT实例时, 等待其他api执行完毕的时间
Definition: aiot_mqtt_api.h:628
int32_t aiot_mqtt_sub_with_prop(void *handle, char *topic, aiot_mqtt_recv_handler_t handler, uint8_t qos, void *userdata, sub_property_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:3468
用户需要SDK暂存的上下文
Definition: aiot_mqtt_api.h:692
int32_t aiot_mqtt_disconnect_with_prop(void *handle, uint8_t reason_code, disconn_property_t *disconn_property)
与MQTT服务器断开连接 以MQTT 5.0协议的方式接入, 支持5.0的特性. 在调用这个接口前, 需要确保已经通过AIOT_...
Definition: aiot_mqtt_api.c:3266
void * userdata
Definition: aiot_mqtt_api.h:347
uint32_t payload_len
Definition: aiot_mqtt_api.h:224