TuyaOS
mqtt_client.h
浏览该文件的文档.
1
10#ifndef _MQTT_CLIENT_H
11#define _MQTT_CLIENT_H
12
13#ifdef __cplusplus
14 extern "C" {
15#endif
16
17#include "tuya_cloud_types.h"
18#include "tuya_svc_netmgr.h"
19
20typedef PVOID_T MQ_HANDLE; //Definition of MQTT client handler
21
28typedef VOID (*MQ_DATA_RECV_CB)(IN BYTE_T *data,IN UINT_T len);
29
33typedef struct {
37 CHAR_T *client_id;
39 CHAR_T *user_name;
41 CHAR_T *passwd;
43
61OPERATE_RET create_mqtt_hand(IN CONST CHAR_T **domain_tbl,
62 IN CONST BYTE_T domain_num,
63 IN CONST USHORT_T serv_port,
64 IN CONST BOOL_T enable_tls,
65 IN CONST MQ_CLIENT_IF_S *mqc_if,
66 IN CONST USHORT_T s_alive,
67 IN CONST MQ_DATA_RECV_CB recv_cb,
68 IN CONST CHAR_T **wakeup_domain_tbl,
69 IN CONST BYTE_T wakeup_domain_num,
70 IN CONST USHORT_T wakeup_serv_port,
71 OUT MQ_HANDLE *hand);
75typedef struct mqtt_config {
76 /*
77 mqtt支持的scheme:
78 mqtt -> tcp
79 mqtts -> tls
80 wss -> websocket over tls
81 */
82 char* url;/*带有scheme的mqtt url,比如:mqtts://iot.com; wss://iot.com*/
83 int port; //mqtt boker port
84 const char* cert_pem;
85 size_t cert_len;
86 /*兼容老接口的参数*/
87 const char* client_id; //mqtt client id
88 const char* username;// mqtt username
89 const char* password;// mqtt password
90
91 MQ_DATA_RECV_CB recv_cb;//data
92 char** domain_tbl;
93 uint8_t domain_num;
94 uint16_t server_port;
95 const char** wakeup_domain_tbl;
96 uint8_t wakeup_domain_num;
97 uint16_t wakeup_serv_port;
98 char* subscribe_topic;
99 uint16_t s_alive_time_s;
100 bool enable_tls;
113int create_mqtt_handle_ext(IN p_mqtt_config_t p_mqtt_config, OUT MQ_HANDLE*hand);
114
115
126int mqtt_set_url(IN MQ_HANDLE*hand, IN char* url);
127
137OPERATE_RET mqtt_update_auth(IN CONST MQ_HANDLE hand, IN CONST CHAR_T *p_username, IN CONST CHAR_T *p_passwd);
138
142typedef VOID (*MQ_CONNED_CB)(VOID);
146typedef VOID (*MQ_DISCONN_CB)(VOID);
152typedef VOID (*MQ_CONN_DENY_CB)(IN BYTE_T deny_times);
156typedef VOID (*MQ_UPDATE_AUTH_CB)(VOID);
157
165typedef INT_T (*MQ_PERMIT_CONN_CB)(VOID);
166
179OPERATE_RET mqtt_register_cb(IN CONST MQ_HANDLE hand,
180 IN CONST MQ_CONNED_CB conn_cb,
181 IN CONST MQ_DISCONN_CB dis_conn_cb,
182 IN CONST MQ_CONN_DENY_CB conn_deny_cb,
183 IN CONST MQ_PERMIT_CONN_CB permit_conn_cb,
184 IN CONST MQ_UPDATE_AUTH_CB update_auth_cb);
185
194OPERATE_RET mqtt_client_start(IN CONST MQ_HANDLE hand,IN CONST CHAR_T *name);
195
201VOID mqtt_restart(IN CONST MQ_HANDLE hand);
202
210OPERATE_RET mqtt_client_quit(IN CONST MQ_HANDLE hand);
211
220BOOL_T get_mqtt_conn_stat(IN CONST MQ_HANDLE hand);
221
227VOID mq_disconnect(IN CONST MQ_HANDLE hand);
228
236VOID release_mqtt_hand(IN CONST MQ_HANDLE hand);
237
243VOID mqtt_close(IN CONST MQ_HANDLE hand);
244
250UINT_T mqtt_get_socket_ip(IN CONST MQ_HANDLE hand);
251
258typedef VOID (*MQ_PUB_ASYNC_IFM_CB)(IN CONST OPERATE_RET op_ret,IN CONST VOID *prv_data);
259
277OPERATE_RET mqtt_publish_async(IN CONST MQ_HANDLE hand,IN CONST CHAR_T *topic,IN CONST BYTE_T qos,
278 IN CONST BYTE_T *data,IN CONST INT_T len,IN CONST UINT_T to_lmt,
279 IN CONST MQ_PUB_ASYNC_IFM_CB cb,IN VOID *prv_data);
280
288INT_T mqtt_get_socket_fd(IN CONST MQ_HANDLE hand);
289
297INT_T mqtt_get_alive_time_s(IN CONST MQ_HANDLE hand);
298
307OPERATE_RET mqtt_book_wakeup_topic(IN CONST MQ_HANDLE hand,IN CONST CHAR_T *wakeup_topic);
308
317OPERATE_RET mqtt_book_additional_topic(IN CONST MQ_HANDLE hand, IN CONST CHAR_T *topic);
318
326OPERATE_RET mqtt_keep_alive(IN CONST MQ_HANDLE hand);
327
337typedef VOID (*MQ_MSG_RECV_CB)(IN CONST CHAR_T *topic, IN BYTE_T *data,IN UINT_T len);
338
350OPERATE_RET mqtt_subscribe_multi_topics(IN CONST MQ_HANDLE hand, IN CONST CHAR_T *topics[],
351 IN CONST BYTE_T cnt, MQ_MSG_RECV_CB msg_cb, BOOL_T auto_resub);
352
362OPERATE_RET mqtt_unsubscribe_multi_topics(IN CONST MQ_HANDLE hand, IN CONST CHAR_T *topics[], IN CONST BYTE_T cnt);
363
371OPERATE_RET mqtt_set_alive_time_s(IN CONST USHORT_T time);
372
380OPERATE_RET mqtt_set_connection_linkage(IN CONST MQ_HANDLE hand, netmgr_linkage_t *linkage);
381
389OPERATE_RET mqtt_get_connection_linkage(IN CONST MQ_HANDLE hand, netmgr_linkage_t **linkage);
390
391#ifdef __cplusplus
392}
393#endif
394
395#endif
BOOL_T get_mqtt_conn_stat(IN CONST MQ_HANDLE hand)
Whether MQTT client is connected to broker or not
OPERATE_RET mqtt_subscribe_multi_topics(IN CONST MQ_HANDLE hand, IN CONST CHAR_T *topics[], IN CONST BYTE_T cnt, MQ_MSG_RECV_CB msg_cb, BOOL_T auto_resub)
Subcribe multiple topics within one MQTT request
VOID mq_disconnect(IN CONST MQ_HANDLE hand)
Disconnect MQTT client from broker, will re-connect later
OPERATE_RET mqtt_register_cb(IN CONST MQ_HANDLE hand, IN CONST MQ_CONNED_CB conn_cb, IN CONST MQ_DISCONN_CB dis_conn_cb, IN CONST MQ_CONN_DENY_CB conn_deny_cb, IN CONST MQ_PERMIT_CONN_CB permit_conn_cb, IN CONST MQ_UPDATE_AUTH_CB update_auth_cb)
Register event handers of MQTT client
VOID mqtt_restart(IN CONST MQ_HANDLE hand)
Restart MQTT client
VOID(* MQ_CONNED_CB)(VOID)
MQTT client is connected to broker
Definition: mqtt_client.h:142
VOID(* MQ_MSG_RECV_CB)(IN CONST CHAR_T *topic, IN BYTE_T *data, IN UINT_T len)
Callback when specific MQTT msg recv
Definition: mqtt_client.h:337
INT_T mqtt_get_socket_fd(IN CONST MQ_HANDLE hand)
Retrieve MQTT client socket fd
int create_mqtt_handle_ext(IN p_mqtt_config_t p_mqtt_config, OUT MQ_HANDLE *hand)
创建mqtt client handle
OPERATE_RET mqtt_book_additional_topic(IN CONST MQ_HANDLE hand, IN CONST CHAR_T *topic)
Subcribe an addition topic
OPERATE_RET mqtt_set_alive_time_s(IN CONST USHORT_T time)
Set the default MQTT keep alive time
int mqtt_set_url(IN MQ_HANDLE *hand, IN char *url)
设置mqtt的uri
OPERATE_RET mqtt_unsubscribe_multi_topics(IN CONST MQ_HANDLE hand, IN CONST CHAR_T *topics[], IN CONST BYTE_T cnt)
Unsubcribe multiple topics within one MQTT request
VOID mqtt_close(IN CONST MQ_HANDLE hand)
Close MQTT client socket fd, will re-connect later
struct mqtt_config mqtt_config_t
定义了mqtt client创建需要的配置
VOID(* MQ_PUB_ASYNC_IFM_CB)(IN CONST OPERATE_RET op_ret, IN CONST VOID *prv_data)
Async callback that indicates mqtt_publish_async success or not.
Definition: mqtt_client.h:258
VOID(* MQ_CONN_DENY_CB)(IN BYTE_T deny_times)
MQTT client is not permited to connect to broker
Definition: mqtt_client.h:152
VOID(* MQ_DISCONN_CB)(VOID)
MQTT client is disconnected to broker
Definition: mqtt_client.h:146
INT_T mqtt_get_alive_time_s(IN CONST MQ_HANDLE hand)
Retrieve MQTT PING interval
OPERATE_RET mqtt_update_auth(IN CONST MQ_HANDLE hand, IN CONST CHAR_T *p_username, IN CONST CHAR_T *p_passwd)
Update crenditials of MQTT client
OPERATE_RET mqtt_book_wakeup_topic(IN CONST MQ_HANDLE hand, IN CONST CHAR_T *wakeup_topic)
Subcribe a wakeup topic for lowpower device
OPERATE_RET mqtt_set_connection_linkage(IN CONST MQ_HANDLE hand, netmgr_linkage_t *linkage)
Set customized linakge for mqtt connection
UINT_T mqtt_get_socket_ip(IN CONST MQ_HANDLE hand)
Get MQTT client's IP
VOID(* MQ_DATA_RECV_CB)(IN BYTE_T *data, IN UINT_T len)
MQTT msg is recved from broker
Definition: mqtt_client.h:28
VOID(* MQ_UPDATE_AUTH_CB)(VOID)
Update authentication of MQTT client
Definition: mqtt_client.h:156
VOID release_mqtt_hand(IN CONST MQ_HANDLE hand)
Release MQTT client
OPERATE_RET mqtt_client_quit(IN CONST MQ_HANDLE hand)
Disconnect MQTT client from broker, delete MQTT client thread
OPERATE_RET mqtt_keep_alive(IN CONST MQ_HANDLE hand)
Send MQTT PING msg immediately
OPERATE_RET mqtt_get_connection_linkage(IN CONST MQ_HANDLE hand, netmgr_linkage_t **linkage)
Get current linakge for mqtt connection
OPERATE_RET mqtt_client_start(IN CONST MQ_HANDLE hand, IN CONST CHAR_T *name)
Connect to broker, MQTT client thread is created
OPERATE_RET mqtt_publish_async(IN CONST MQ_HANDLE hand, IN CONST CHAR_T *topic, IN CONST BYTE_T qos, IN CONST BYTE_T *data, IN CONST INT_T len, IN CONST UINT_T to_lmt, IN CONST MQ_PUB_ASYNC_IFM_CB cb, IN VOID *prv_data)
Publish a msg to the specific MQTT topic with QOS level and timeout handler
INT_T(* MQ_PERMIT_CONN_CB)(VOID)
Check permission when connect to broker
Definition: mqtt_client.h:165
OPERATE_RET create_mqtt_hand(IN CONST CHAR_T **domain_tbl, IN CONST BYTE_T domain_num, IN CONST USHORT_T serv_port, IN CONST BOOL_T enable_tls, IN CONST MQ_CLIENT_IF_S *mqc_if, IN CONST USHORT_T s_alive, IN CONST MQ_DATA_RECV_CB recv_cb, IN CONST CHAR_T **wakeup_domain_tbl, IN CONST BYTE_T wakeup_domain_num, IN CONST USHORT_T wakeup_serv_port, OUT MQ_HANDLE *hand)
Create MQTT client instance
Definition of MQTT client's credentials
Definition: mqtt_client.h:33
CHAR_T * subcribe_topic
Definition: mqtt_client.h:35
CHAR_T * passwd
Definition: mqtt_client.h:41
CHAR_T * user_name
Definition: mqtt_client.h:39
CHAR_T * client_id
Definition: mqtt_client.h:37
定义了mqtt client创建需要的配置
Definition: mqtt_client.h:75
size_t cert_len
Definition: mqtt_client.h:85
const char * cert_pem
Definition: mqtt_client.h:84
Definition: tuya_svc_netmgr_linkage.h:53
TUYA network manager service