TuyaOS
结构体 | 类型定义 | 函数
mqtt_client.h 文件参考

TUYA MQTT service 更多...

#include "tuya_cloud_types.h"
#include "tuya_svc_netmgr.h"
mqtt_client.h 的引用(Include)关系图:
此图展示该文件直接或间接的被哪些文件引用了:

浏览源代码.

结构体

struct  mqtt_config
 定义了mqtt client创建需要的配置 更多...
 

类型定义

typedef VOID(* MQ_CONN_DENY_CB) (IN BYTE_T deny_times)
 MQTT client is not permited to connect to broker 更多...
 
typedef VOID(* MQ_CONNED_CB) (VOID)
 MQTT client is connected to broker
 
typedef VOID(* MQ_DATA_RECV_CB) (IN BYTE_T *data, IN UINT_T len)
 MQTT msg is recved from broker 更多...
 
typedef VOID(* MQ_DISCONN_CB) (VOID)
 MQTT client is disconnected to broker
 
typedef PVOID_T MQ_HANDLE
 
typedef VOID(* MQ_MSG_RECV_CB) (IN CONST CHAR_T *topic, IN BYTE_T *data, IN UINT_T len)
 Callback when specific MQTT msg recv 更多...
 
typedef INT_T(* MQ_PERMIT_CONN_CB) (VOID)
 Check permission when connect to broker 更多...
 
typedef 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. 更多...
 
typedef VOID(* MQ_UPDATE_AUTH_CB) (VOID)
 Update authentication of MQTT client
 
typedef struct mqtt_config mqtt_config_t
 定义了mqtt client创建需要的配置
 
typedef struct mqtt_configp_mqtt_config_t
 

函数

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 更多...
 
int create_mqtt_handle_ext (IN p_mqtt_config_t p_mqtt_config, OUT MQ_HANDLE *hand)
 创建mqtt client handle 更多...
 
BOOL_T get_mqtt_conn_stat (IN CONST MQ_HANDLE hand)
 Whether MQTT client is connected to broker or not 更多...
 
VOID mq_disconnect (IN CONST MQ_HANDLE hand)
 Disconnect MQTT client from broker, will re-connect later 更多...
 
OPERATE_RET mqtt_book_additional_topic (IN CONST MQ_HANDLE hand, IN CONST CHAR_T *topic)
 Subcribe an addition topic 更多...
 
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_client_quit (IN CONST MQ_HANDLE hand)
 Disconnect MQTT client from broker, delete MQTT client thread 更多...
 
OPERATE_RET mqtt_client_start (IN CONST MQ_HANDLE hand, IN CONST CHAR_T *name)
 Connect to broker, MQTT client thread is created 更多...
 
VOID mqtt_close (IN CONST MQ_HANDLE hand)
 Close MQTT client socket fd, will re-connect later 更多...
 
INT_T mqtt_get_alive_time_s (IN CONST MQ_HANDLE hand)
 Retrieve MQTT PING interval 更多...
 
OPERATE_RET mqtt_get_connection_linkage (IN CONST MQ_HANDLE hand, netmgr_linkage_t **linkage)
 Get current linakge for mqtt connection 更多...
 
INT_T mqtt_get_socket_fd (IN CONST MQ_HANDLE hand)
 Retrieve MQTT client socket fd 更多...
 
UINT_T mqtt_get_socket_ip (IN CONST MQ_HANDLE hand)
 Get MQTT client's IP 更多...
 
OPERATE_RET mqtt_keep_alive (IN CONST MQ_HANDLE hand)
 Send MQTT PING msg immediately 更多...
 
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 更多...
 
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 更多...
 
OPERATE_RET mqtt_set_alive_time_s (IN CONST USHORT_T time)
 Set the default MQTT keep alive time 更多...
 
OPERATE_RET mqtt_set_connection_linkage (IN CONST MQ_HANDLE hand, netmgr_linkage_t *linkage)
 Set customized linakge for mqtt connection 更多...
 
int mqtt_set_url (IN MQ_HANDLE *hand, IN char *url)
 设置mqtt的uri 更多...
 
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 更多...
 
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 更多...
 
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 更多...
 
VOID release_mqtt_hand (IN CONST MQ_HANDLE hand)
 Release MQTT client 更多...
 

详细描述

TUYA MQTT service

Wrapper of MQTT request and response

版本
0.1
日期
2017-04-11
版本
0.1
日期
2015-05-26

类型定义说明

◆ MQ_CONN_DENY_CB

typedef VOID(* MQ_CONN_DENY_CB) (IN BYTE_T deny_times)

MQTT client is not permited to connect to broker

参数
[in]deny_timesHow many times this MQTT client is denied by broker

◆ MQ_DATA_RECV_CB

typedef VOID(* MQ_DATA_RECV_CB) (IN BYTE_T *data, IN UINT_T len)

MQTT msg is recved from broker

参数
[in]dataBuffer of msg
[in]lenLength os msg

◆ MQ_MSG_RECV_CB

typedef VOID(* MQ_MSG_RECV_CB) (IN CONST CHAR_T *topic, IN BYTE_T *data, IN UINT_T len)

Callback when specific MQTT msg recv

参数
[in]topicTopic that msg is recved from
[in]dataBuffer of msg content
[in]lenLength of msg content
返回
OPRT_OK on success. Others on error, please refer to tuya_error_code.h

◆ MQ_PERMIT_CONN_CB

typedef INT_T(* MQ_PERMIT_CONN_CB) (VOID)

Check permission when connect to broker

返回
1: permit to connect mqtt 0: not permit to connect mqtt, and reconnect after a random delay -1: not permit to connect mqtt, and reconnect after a short delay

◆ MQ_PUB_ASYNC_IFM_CB

typedef 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.

参数
[in]op_retOPRT_OK on success. Others on error, please refer to tuya_error_code.h
[in]prv_dataPrivate data

函数说明

◆ create_mqtt_hand()

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

参数
[in]domain_tblDomains of MQTT broker
[in]domain_numCount of domains
[in]serv_portPort of MQTT broker
[in]enable_tlsTLS is enabled or not
[in]mqc_ifCredentials of MQTT client
[in]s_aliveMQTT hearbeat interval(unit sec), 0 will use the default timeout(60)
[in]recv_cbCallback when msg recved from broker
[in]wakeup_domain_tblDomains of MQTT lowpower broker
[in]wakeup_domain_numCount of lowpower domains
[in]wakeup_serv_portPort of lowpower broker
[out]handHandler of MQTT client
返回
OPRT_OK on success. Others on error, please refer to tuya_error_code.h

◆ create_mqtt_handle_ext()

int create_mqtt_handle_ext ( IN p_mqtt_config_t  p_mqtt_config,
OUT MQ_HANDLE *  hand 
)

创建mqtt client handle

参数
[in]mqtt_configmqtt配置,详见mqtt_config_t定义
[out]hand创建的mqtt handle
注解
: 作用同create_mqtt_hand,精简汇聚了mqtt的参数到mqtt_config_t
返回
OPERATE_RET: OPRT_OK成功,其它请参照tuya error code描述文档

◆ get_mqtt_conn_stat()

BOOL_T get_mqtt_conn_stat ( IN CONST MQ_HANDLE  hand)

Whether MQTT client is connected to broker or not

参数
[in]handHandler of MQTT client
返回
TRUE indicates connected to MQTT broker, FALSE indicates disconnected to MQTT broker

◆ mq_disconnect()

VOID mq_disconnect ( IN CONST MQ_HANDLE  hand)

Disconnect MQTT client from broker, will re-connect later

参数
[in]handHandler of MQTT client

◆ mqtt_book_additional_topic()

OPERATE_RET mqtt_book_additional_topic ( IN CONST MQ_HANDLE  hand,
IN CONST CHAR_T *  topic 
)

Subcribe an addition topic

参数
[in]handHandler of MQTT client
[in]topicTopic to subscribe
返回
OPRT_OK on success. Others on error, please refer to tuya_error_code.h

◆ mqtt_book_wakeup_topic()

OPERATE_RET mqtt_book_wakeup_topic ( IN CONST MQ_HANDLE  hand,
IN CONST CHAR_T *  wakeup_topic 
)

Subcribe a wakeup topic for lowpower device

参数
[in]handHandler of MQTT client
[in]wakeup_topicTopic to subscribe
返回
OPRT_OK on success. Others on error, please refer to tuya_error_code.h

◆ mqtt_client_quit()

OPERATE_RET mqtt_client_quit ( IN CONST MQ_HANDLE  hand)

Disconnect MQTT client from broker, delete MQTT client thread

参数
[in]handHandler of MQTT client
返回
OPRT_OK on success. Others on error, please refer to tuya_error_code.h

◆ mqtt_client_start()

OPERATE_RET mqtt_client_start ( IN CONST MQ_HANDLE  hand,
IN CONST CHAR_T *  name 
)

Connect to broker, MQTT client thread is created

参数
[in]handHandler of MQTT client
[in]nameName of MQTT thread
返回
OPRT_OK on success. Others on error, please refer to tuya_error_code.h

◆ mqtt_close()

VOID mqtt_close ( IN CONST MQ_HANDLE  hand)

Close MQTT client socket fd, will re-connect later

参数
[in]handHandler of MQTT client

◆ mqtt_get_alive_time_s()

INT_T mqtt_get_alive_time_s ( IN CONST MQ_HANDLE  hand)

Retrieve MQTT PING interval

参数
[in]handHandler of MQTT client
返回
MQTT PING interval(unit sec) on success, -1 on error.

◆ mqtt_get_connection_linkage()

OPERATE_RET mqtt_get_connection_linkage ( IN CONST MQ_HANDLE  hand,
netmgr_linkage_t **  linkage 
)

Get current linakge for mqtt connection

参数
[in]linkageCurrent linkage
返回
OPRT_OK on success. Others on error, please refer to tuya_error_code.h

◆ mqtt_get_socket_fd()

INT_T mqtt_get_socket_fd ( IN CONST MQ_HANDLE  hand)

Retrieve MQTT client socket fd

参数
[in]handHandler of MQTT client
返回
MQTT client socket fd on success, -1 on error.

◆ mqtt_get_socket_ip()

UINT_T mqtt_get_socket_ip ( IN CONST MQ_HANDLE  hand)

Get MQTT client's IP

返回
UNW_IP_ADDR_T format

◆ mqtt_keep_alive()

OPERATE_RET mqtt_keep_alive ( IN CONST MQ_HANDLE  hand)

Send MQTT PING msg immediately

参数
[in]handHandler of MQTT client
返回
OPRT_OK on success. Others on error, please refer to tuya_error_code.h

◆ mqtt_publish_async()

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

参数
[in]handHandler of MQTT client
[in]topicTopic that the msg will be published
[in]qosQOS level
[in]dataBuffer of msg content
[in]lenLength of msg content
[in]to_lmtTimeout(unit sec) of QOS-1 ACK, 0 for the default value(3)
[in]cbCallback when the msg is published and ACK is recved or timeout
[in]prv_dataPrivate data
注解
if(0 == qos) then to_lmt cb prv_data useless, if(1 == qos) then need wait respond, other qos not support.
返回
OPRT_OK on success. Others on error, please refer to tuya_error_code.h

◆ mqtt_register_cb()

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

参数
[in]handHandler of MQTT client
[in]conn_cbHander when MQTT client is connected to broker
[in]dis_conn_cbHander when MQTT client is disconnected to broker
[in]conn_deny_cbHander when MQTT client is not permited to connect to broker
[in]permit_conn_cbHander to check permission when connect to broker
[in]update_auth_cbHander to update authentication
返回
OPRT_OK on success. Others on error, please refer to tuya_error_code.h

◆ mqtt_restart()

VOID mqtt_restart ( IN CONST MQ_HANDLE  hand)

Restart MQTT client

参数
[in]handHandler of MQTT client

◆ mqtt_set_alive_time_s()

OPERATE_RET mqtt_set_alive_time_s ( IN CONST USHORT_T  time)

Set the default MQTT keep alive time

参数
[in]timekeep alive time in milliseconds
返回
OPRT_OK on success. Others on error, please refer to tuya_error_code.h

◆ mqtt_set_connection_linkage()

OPERATE_RET mqtt_set_connection_linkage ( IN CONST MQ_HANDLE  hand,
netmgr_linkage_t linkage 
)

Set customized linakge for mqtt connection

参数
[in]linkageCustomized linkage
返回
OPRT_OK on success. Others on error, please refer to tuya_error_code.h

◆ mqtt_set_url()

int mqtt_set_url ( IN MQ_HANDLE *  hand,
IN char *  url 
)

设置mqtt的uri

参数
[in]mqtt_configmqtt配置,详见mqtt_config_t定义
注解
: mqtt连接断开后,可能会更新mqtt的uri,此时需要重新设置uri
返回
OPERATE_RET: OPRT_OK成功,其它请参照tuya error code描述文档

◆ mqtt_subscribe_multi_topics()

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

参数
[in]handHandler of MQTT client
[in]topicsArray of topics to subscribe
[in]cntCount of topics to subscribe
[in]msg_cbCallback when MQTT msgs recv. If msg_cb is NULL, msgs will transfer to default recv_cb of MQTT client
返回
OPRT_OK on success. Others on error, please refer to tuya_error_code.h

◆ mqtt_unsubscribe_multi_topics()

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

参数
[in]handHandler of MQTT client
[in]topicsArray of topics to unsubscribe
[in]cntCount of topics to unsubscribe
返回
OPRT_OK on success. Others on error, please refer to tuya_error_code.h

◆ mqtt_update_auth()

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

参数
[in]handHandler of MQTT client
[in]p_usernameUsername to connect to broker
[in]p_passwdPassword to connect to broker
返回
OPRT_OK on success. Others on error, please refer to tuya_error_code.h

◆ release_mqtt_hand()

VOID release_mqtt_hand ( IN CONST MQ_HANDLE  hand)

Release MQTT client

参数
[in]handHandler of MQTT client
注解
MQTT client shall be closed before this API invoked