Link Kit C-SDK  4.1.0
函数 | 变量
aiot_mqtt_api.c 文件参考

MQTT模块实现, 其中包含了连接到物联网平台和收发数据的API接口 更多...

#include "core_mqtt.h"
aiot_mqtt_api.c 的引用(Include)关系图:

函数

static int32_t _core_mqtt_sysdep_return (int32_t sysdep_code, int32_t core_code)
 
static int32_t _core_mqtt_5_feature_is_enabled (core_mqtt_handle_t *mqtt_handle)
 
static void _core_mqtt_event_notify_process_handler (core_mqtt_handle_t *mqtt_handle, aiot_mqtt_event_t *event, core_mqtt_event_t *core_event)
 
static void _core_mqtt_event_notify (core_mqtt_handle_t *mqtt_handle, aiot_mqtt_event_type_t type)
 
static void _core_mqtt_connect_event_notify (core_mqtt_handle_t *mqtt_handle)
 
static void _core_mqtt_disconnect_event_notify (core_mqtt_handle_t *mqtt_handle, aiot_mqtt_disconnect_event_type_t disconnect)
 
static void _core_mqtt_exec_inc (core_mqtt_handle_t *mqtt_handle)
 
static void _core_mqtt_exec_dec (core_mqtt_handle_t *mqtt_handle)
 
static void _core_mqtt_sign_clean (core_mqtt_handle_t *mqtt_handle)
 
static int32_t _core_mqtt_handlerlist_insert (core_mqtt_handle_t *mqtt_handle, core_mqtt_sub_node_t *sub_node, aiot_mqtt_recv_handler_t handler, void *userdata)
 
static int32_t _core_mqtt_sublist_insert (core_mqtt_handle_t *mqtt_handle, core_mqtt_buff_t *topic, aiot_mqtt_recv_handler_t handler, void *userdata)
 
static int32_t _core_mqtt_topic_alias_list_insert (core_mqtt_handle_t *mqtt_handle, core_mqtt_buff_t *topic, uint16_t topic_alias, struct core_list_head *list)
 
static void _core_mqtt_topic_alias_list_remove_all (core_mqtt_handle_t *mqtt_handle)
 
static void _core_mqtt_sublist_handlerlist_destroy (core_mqtt_handle_t *mqtt_handle, struct core_list_head *list)
 
static void _core_mqtt_sublist_remove (core_mqtt_handle_t *mqtt_handle, core_mqtt_buff_t *topic)
 
static void _core_mqtt_sublist_remove_handler (core_mqtt_handle_t *mqtt_handle, core_mqtt_buff_t *topic, aiot_mqtt_recv_handler_t handler)
 
static void _core_mqtt_sublist_destroy (core_mqtt_handle_t *mqtt_handle)
 
static int32_t _core_mqtt_topic_is_valid (char *topic, uint32_t len)
 
static int32_t _core_mqtt_append_topic_map (core_mqtt_handle_t *mqtt_handle, aiot_mqtt_topic_map_t *map)
 
static int32_t _core_mqtt_remove_topic_map (core_mqtt_handle_t *mqtt_handle, aiot_mqtt_topic_map_t *map)
 
static void _core_mqtt_set_utf8_encoded_str (uint8_t *input, uint16_t input_len, uint8_t *output)
 
int32_t _write_variable (uint32_t input, uint8_t *output)
 
int32_t _read_variable (uint8_t *input, uint32_t *output)
 
static int32_t _core_mqtt_conn_pkt (core_mqtt_handle_t *mqtt_handle, uint8_t **pkt, uint32_t *pkt_len, will_message_t *will_message, mqtt_properties_t *conn_prop)
 
static int32_t _core_mqtt_update_connack_props (core_mqtt_handle_t *mqtt_handle, mqtt_properties_t *props)
 
static int32_t _core_mqtt_connack_handle (core_mqtt_handle_t *mqtt_handle, uint8_t *connack, uint32_t remain_len)
 
static int32_t _core_mqtt_read (core_mqtt_handle_t *mqtt_handle, uint8_t *buffer, uint32_t len, uint32_t timeout_ms)
 
static int32_t _core_mqtt_write (core_mqtt_handle_t *mqtt_handle, uint8_t *buffer, uint32_t len, uint32_t timeout_ms)
 
static void _core_mqtt_connect_diag (core_mqtt_handle_t *mqtt_handle, uint8_t flag)
 
static void _core_mqtt_heartbeat_diag (core_mqtt_handle_t *mqtt_handle, uint8_t flag)
 
static int32_t _core_mqtt_read_remainlen (core_mqtt_handle_t *mqtt_handle, uint32_t *remainlen)
 
static int32_t _core_mqtt_add_extend_clientid (core_mqtt_handle_t *channel_handle, char **dst_clientid, char *extend)
 
static int32_t _core_mqtt_add_netstats_extend (core_mqtt_handle_t *mqtt_handle, char **dst_clientid)
 
static int32_t _core_mqtt_connect (core_mqtt_handle_t *mqtt_handle, will_message_t *will_message, mqtt_properties_t *conn_prop)
 
static int32_t _core_mqtt_disconnect (core_mqtt_handle_t *mqtt_handle)
 
static uint16_t _core_mqtt_packet_id (core_mqtt_handle_t *mqtt_handle)
 
static int32_t _core_mqtt_publist_insert (core_mqtt_handle_t *mqtt_handle, uint8_t *packet, uint32_t len, uint16_t packet_id)
 
static void _core_mqtt_publist_remove (core_mqtt_handle_t *mqtt_handle, uint16_t packet_id)
 
static void _core_mqtt_publist_destroy (core_mqtt_handle_t *mqtt_handle)
 
static int32_t _core_mqtt_subunsub (core_mqtt_handle_t *mqtt_handle, char *topic, uint16_t topic_len, sub_options_t *opts, uint8_t pkt_type, mqtt_properties_t *general_property)
 
static int32_t _core_mqtt_heartbeat (core_mqtt_handle_t *mqtt_handle)
 
static int32_t _core_mqtt_repub (core_mqtt_handle_t *mqtt_handle)
 
static int32_t _core_mqtt_process_datalist_insert (core_mqtt_handle_t *mqtt_handle, core_mqtt_process_data_t *process_data)
 
static void _core_mqtt_process_datalist_remove (core_mqtt_handle_t *mqtt_handle, core_mqtt_process_data_t *process_data)
 
static void _core_mqtt_process_datalist_destroy (core_mqtt_handle_t *mqtt_handle)
 
static int32_t _core_mqtt_append_process_data (core_mqtt_handle_t *mqtt_handle, core_mqtt_process_data_t *process_data)
 
static int32_t _core_mqtt_remove_process_data (core_mqtt_handle_t *mqtt_handle, core_mqtt_process_data_t *process_data)
 
static void _core_mqtt_process_data_process (core_mqtt_handle_t *mqtt_handle, core_mqtt_event_t *core_event)
 
static int32_t _core_mqtt_reconnect (core_mqtt_handle_t *mqtt_handle)
 
static int32_t _core_mqtt_read_remainbytes (core_mqtt_handle_t *mqtt_handle, uint32_t remainlen, uint8_t **output)
 
static int32_t _core_mqtt_pingresp_handler (core_mqtt_handle_t *mqtt_handle, uint8_t *input, uint32_t len)
 
static int32_t _core_mqtt_puback_send (core_mqtt_handle_t *mqtt_handle, uint16_t packet_id)
 
int32_t _core_mqtt_topic_compare (char *topic, uint32_t topic_len, char *cmp_topic, uint32_t cmp_topic_len)
 
static void _core_mqtt_handlerlist_append (core_mqtt_handle_t *mqtt_handle, struct core_list_head *dest, struct core_list_head *src, uint8_t *found)
 
static void _core_mqtt_handlerlist_destroy (core_mqtt_handle_t *mqtt_handle, struct core_list_head *list)
 
uint8_t _core_mqtt_process_topic_alias (core_mqtt_handle_t *mqtt_handle, uint16_t topic_alias, uint32_t topic_len, char *topic, core_mqtt_topic_alias_node_t *alias_node)
 
static void _core_mqtt_call_user_handler (core_mqtt_handle_t *mqtt_handle, core_mqtt_msg_t msg, uint8_t qos, mqtt_properties_t *pub_prop)
 
static int32_t _core_mqtt_pub_handler (core_mqtt_handle_t *mqtt_handle, uint8_t *input, uint32_t len, uint8_t qos, uint32_t remain_len)
 
void _core_mqtt_flow_control_inc (core_mqtt_handle_t *mqtt_handle)
 
static int32_t _core_mqtt_puback_handler (core_mqtt_handle_t *mqtt_handle, uint8_t *input, uint32_t len)
 
static int32_t _core_mqtt_server_disconnect_handler (core_mqtt_handle_t *mqtt_handle, uint8_t *input, uint32_t len)
 
static void _core_mqtt_subunsuback_handler (core_mqtt_handle_t *mqtt_handle, uint8_t *input, uint32_t len, uint8_t packet_type)
 
int32_t core_mqtt_setopt (void *handle, core_mqtt_option_t option, void *data)
 
void * aiot_mqtt_init (void)
 初始化mqtt实例并设置默认参数 更多...
 
int32_t aiot_mqtt_setopt (void *handle, aiot_mqtt_option_t option, void *data)
 设置mqtt参数 更多...
 
int32_t aiot_mqtt_deinit (void **handle)
 释放mqtt实例句柄的资源 更多...
 
static int32_t _mqtt_connect_with_prop (void *handle, will_message_t *will_message, mqtt_properties_t *connect_property)
 
int32_t aiot_mqtt_connect (void *handle)
 与MQTT服务器建立连接 更多...
 
int32_t aiot_mqtt_disconnect (void *handle)
 与MQTT服务器断开连接 更多...
 
int32_t aiot_mqtt_heartbeat (void *handle)
 发送MQTT PINGREQ报文, 用于维持心跳 更多...
 
int32_t aiot_mqtt_process (void *handle)
 此函数用于处理定时心跳发送和qos1消息的重传逻辑 更多...
 
static int32_t _core_mqtt_tx_topic_alias_process (core_mqtt_handle_t *mqtt_handle, core_mqtt_buff_t *topic, uint16_t *alias_id_prt)
 
static int32_t _core_mqtt_check_flow_control (core_mqtt_handle_t *mqtt_handle, uint8_t qos)
 
static void _core_mqtt_check_flow_dec (core_mqtt_handle_t *mqtt_handle)
 
static int32_t _core_mqtt_check_tx_payload_len (uint32_t pkt_len, core_mqtt_handle_t *mqtt_handle)
 
static int32_t _core_mqtt_pub (void *handle, core_mqtt_buff_t *topic, core_mqtt_buff_t *payload, uint8_t qos, uint8_t retain, mqtt_properties_t *pub_prop)
 
int32_t _core_mqtt_disconnect_with_prop (void *handle, uint8_t reason_code, mqtt_properties_t *discon_property)
 
int32_t aiot_mqtt_disconnect_v5 (void *handle, uint8_t reason_code, mqtt_properties_t *discon_property)
 与MQTT服务器断开连接 以MQTT 5.0协议的方式接入, 支持5.0的特性. 在调用这个接口前, 需要确保已经通过AIOT_MQTTOPT_VERSION的方式, 设置过版本号为AIOT_MQTT_VERSION_5_0 更多...
 
static int32_t _core_mqtt_pub_params_check (void *handle, char *topic, uint8_t *payload, uint32_t payload_len, uint8_t qos, uint8_t retain)
 
int32_t _core_mqtt_append_rid (core_mqtt_handle_t *mqtt_handle, char *topic, char **new_topic)
 
int32_t _core_mqtt_compress (core_mqtt_handle_t *mqtt_handle, char *topic, uint8_t *payload, uint32_t payload_len, core_mqtt_msg_t *msg)
 
int32_t _mqtt_pub_with_prop (void *handle, char *topic, uint8_t *payload, uint32_t payload_len, uint8_t qos, uint8_t retain, mqtt_properties_t *pub_prop)
 
int32_t aiot_mqtt_pub (void *handle, char *topic, uint8_t *payload, uint32_t payload_len, uint8_t qos)
 发送一条PUBLISH报文到MQTT服务器, QoS为0, 用于发布指定的消息 更多...
 
static int32_t _core_mqtt_sub (void *handle, core_mqtt_buff_t *topic, aiot_mqtt_recv_handler_t handler, sub_options_t *opts, void *userdata, mqtt_properties_t *sub_prop)
 
static int32_t _mqtt_sub_with_prop (void *handle, char *topic, aiot_mqtt_recv_handler_t handler, sub_options_t *opts, void *userdata, mqtt_properties_t *sub_prop)
 
int32_t aiot_mqtt_sub (void *handle, char *topic, aiot_mqtt_recv_handler_t handler, uint8_t qos, void *userdata)
 发送一条mqtt SUBSCRIBE报文到MQTT服务器, 用于订阅指定的topic 更多...
 
static int32_t _core_mqtt_unsub (void *handle, core_mqtt_buff_t *topic, mqtt_properties_t *unsub_prop)
 
static int32_t _mqtt_unsub (void *handle, char *topic, mqtt_properties_t *unsub_prop)
 
int32_t aiot_mqtt_unsub (void *handle, char *topic)
 发送一条mqtt UNSUBSCRIBE报文到MQTT服务器, 用于取消订阅指定的topic 更多...
 
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 更多...
 
int32_t aiot_mqtt_recv (void *handle)
 尝试从网络上接收MQTT报文 更多...
 
char * core_mqtt_get_product_key (void *handle)
 
char * core_mqtt_get_device_name (void *handle)
 
uint16_t core_mqtt_get_port (void *handle)
 
int32_t core_mqtt_get_nwkstats (void *handle, core_mqtt_nwkstats_info_t *nwk_stats_info)
 
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 更多...
 
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 更多...
 
int32_t _core_will_message_check (will_message_t *will_message)
 
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_MQTTOPT_VERSION的方式, 设置过版本号为AIOT_MQTT_VERSION_5_0 更多...
 

变量

static int32_t last_failed_error_code = 0
 

详细描述

MQTT模块实现, 其中包含了连接到物联网平台和收发数据的API接口

日期
2019-12-27

函数说明

static int32_t _core_mqtt_sysdep_return ( int32_t  sysdep_code,
int32_t  core_code 
)
static
static int32_t _core_mqtt_5_feature_is_enabled ( core_mqtt_handle_t *  mqtt_handle)
static
static void _core_mqtt_event_notify_process_handler ( core_mqtt_handle_t *  mqtt_handle,
aiot_mqtt_event_t event,
core_mqtt_event_t *  core_event 
)
static
static void _core_mqtt_event_notify ( core_mqtt_handle_t *  mqtt_handle,
aiot_mqtt_event_type_t  type 
)
static

函数调用图:

static void _core_mqtt_connect_event_notify ( core_mqtt_handle_t *  mqtt_handle)
static

函数调用图:

static void _core_mqtt_disconnect_event_notify ( core_mqtt_handle_t *  mqtt_handle,
aiot_mqtt_disconnect_event_type_t  disconnect 
)
static

函数调用图:

static void _core_mqtt_exec_inc ( core_mqtt_handle_t *  mqtt_handle)
static
static void _core_mqtt_exec_dec ( core_mqtt_handle_t *  mqtt_handle)
static
static void _core_mqtt_sign_clean ( core_mqtt_handle_t *  mqtt_handle)
static
static int32_t _core_mqtt_handlerlist_insert ( core_mqtt_handle_t *  mqtt_handle,
core_mqtt_sub_node_t *  sub_node,
aiot_mqtt_recv_handler_t  handler,
void *  userdata 
)
static
static int32_t _core_mqtt_sublist_insert ( core_mqtt_handle_t *  mqtt_handle,
core_mqtt_buff_t *  topic,
aiot_mqtt_recv_handler_t  handler,
void *  userdata 
)
static

函数调用图:

static int32_t _core_mqtt_topic_alias_list_insert ( core_mqtt_handle_t *  mqtt_handle,
core_mqtt_buff_t *  topic,
uint16_t  topic_alias,
struct core_list_head *  list 
)
static
static void _core_mqtt_topic_alias_list_remove_all ( core_mqtt_handle_t *  mqtt_handle)
static
static void _core_mqtt_sublist_handlerlist_destroy ( core_mqtt_handle_t *  mqtt_handle,
struct core_list_head *  list 
)
static
static void _core_mqtt_sublist_remove ( core_mqtt_handle_t *  mqtt_handle,
core_mqtt_buff_t *  topic 
)
static

函数调用图:

static void _core_mqtt_sublist_remove_handler ( core_mqtt_handle_t *  mqtt_handle,
core_mqtt_buff_t *  topic,
aiot_mqtt_recv_handler_t  handler 
)
static
static void _core_mqtt_sublist_destroy ( core_mqtt_handle_t *  mqtt_handle)
static

函数调用图:

static int32_t _core_mqtt_topic_is_valid ( char *  topic,
uint32_t  len 
)
static
static int32_t _core_mqtt_append_topic_map ( core_mqtt_handle_t *  mqtt_handle,
aiot_mqtt_topic_map_t map 
)
static

函数调用图:

static int32_t _core_mqtt_remove_topic_map ( core_mqtt_handle_t *  mqtt_handle,
aiot_mqtt_topic_map_t map 
)
static

函数调用图:

static void _core_mqtt_set_utf8_encoded_str ( uint8_t *  input,
uint16_t  input_len,
uint8_t *  output 
)
static
int32_t _write_variable ( uint32_t  input,
uint8_t *  output 
)
int32_t _read_variable ( uint8_t *  input,
uint32_t *  output 
)
static int32_t _core_mqtt_conn_pkt ( core_mqtt_handle_t *  mqtt_handle,
uint8_t **  pkt,
uint32_t *  pkt_len,
will_message_t will_message,
mqtt_properties_t conn_prop 
)
static

函数调用图:

static int32_t _core_mqtt_update_connack_props ( core_mqtt_handle_t *  mqtt_handle,
mqtt_properties_t props 
)
static

函数调用图:

static int32_t _core_mqtt_connack_handle ( core_mqtt_handle_t *  mqtt_handle,
uint8_t *  connack,
uint32_t  remain_len 
)
static

函数调用图:

static int32_t _core_mqtt_read ( core_mqtt_handle_t *  mqtt_handle,
uint8_t *  buffer,
uint32_t  len,
uint32_t  timeout_ms 
)
static

函数调用图:

static int32_t _core_mqtt_write ( core_mqtt_handle_t *  mqtt_handle,
uint8_t *  buffer,
uint32_t  len,
uint32_t  timeout_ms 
)
static

函数调用图:

static void _core_mqtt_connect_diag ( core_mqtt_handle_t *  mqtt_handle,
uint8_t  flag 
)
static
static void _core_mqtt_heartbeat_diag ( core_mqtt_handle_t *  mqtt_handle,
uint8_t  flag 
)
static

函数调用图:

static int32_t _core_mqtt_read_remainlen ( core_mqtt_handle_t *  mqtt_handle,
uint32_t *  remainlen 
)
static

函数调用图:

static int32_t _core_mqtt_add_extend_clientid ( core_mqtt_handle_t *  channel_handle,
char **  dst_clientid,
char *  extend 
)
static
static int32_t _core_mqtt_add_netstats_extend ( core_mqtt_handle_t *  mqtt_handle,
char **  dst_clientid 
)
static

函数调用图:

static int32_t _core_mqtt_connect ( core_mqtt_handle_t *  mqtt_handle,
will_message_t will_message,
mqtt_properties_t conn_prop 
)
static

函数调用图:

static int32_t _core_mqtt_disconnect ( core_mqtt_handle_t *  mqtt_handle)
static

函数调用图:

static uint16_t _core_mqtt_packet_id ( core_mqtt_handle_t *  mqtt_handle)
static
static int32_t _core_mqtt_publist_insert ( core_mqtt_handle_t *  mqtt_handle,
uint8_t *  packet,
uint32_t  len,
uint16_t  packet_id 
)
static
static void _core_mqtt_publist_remove ( core_mqtt_handle_t *  mqtt_handle,
uint16_t  packet_id 
)
static
static void _core_mqtt_publist_destroy ( core_mqtt_handle_t *  mqtt_handle)
static
static int32_t _core_mqtt_subunsub ( core_mqtt_handle_t *  mqtt_handle,
char *  topic,
uint16_t  topic_len,
sub_options_t opts,
uint8_t  pkt_type,
mqtt_properties_t general_property 
)
static

函数调用图:

static int32_t _core_mqtt_heartbeat ( core_mqtt_handle_t *  mqtt_handle)
static

函数调用图:

static int32_t _core_mqtt_repub ( core_mqtt_handle_t *  mqtt_handle)
static

函数调用图:

static int32_t _core_mqtt_process_datalist_insert ( core_mqtt_handle_t *  mqtt_handle,
core_mqtt_process_data_t *  process_data 
)
static
static void _core_mqtt_process_datalist_remove ( core_mqtt_handle_t *  mqtt_handle,
core_mqtt_process_data_t *  process_data 
)
static
static void _core_mqtt_process_datalist_destroy ( core_mqtt_handle_t *  mqtt_handle)
static
static int32_t _core_mqtt_append_process_data ( core_mqtt_handle_t *  mqtt_handle,
core_mqtt_process_data_t *  process_data 
)
static

函数调用图:

static int32_t _core_mqtt_remove_process_data ( core_mqtt_handle_t *  mqtt_handle,
core_mqtt_process_data_t *  process_data 
)
static

函数调用图:

static void _core_mqtt_process_data_process ( core_mqtt_handle_t *  mqtt_handle,
core_mqtt_event_t *  core_event 
)
static
static int32_t _core_mqtt_reconnect ( core_mqtt_handle_t *  mqtt_handle)
static

函数调用图:

static int32_t _core_mqtt_read_remainbytes ( core_mqtt_handle_t *  mqtt_handle,
uint32_t  remainlen,
uint8_t **  output 
)
static

函数调用图:

static int32_t _core_mqtt_pingresp_handler ( core_mqtt_handle_t *  mqtt_handle,
uint8_t *  input,
uint32_t  len 
)
static

函数调用图:

static int32_t _core_mqtt_puback_send ( core_mqtt_handle_t *  mqtt_handle,
uint16_t  packet_id 
)
static

函数调用图:

int32_t _core_mqtt_topic_compare ( char *  topic,
uint32_t  topic_len,
char *  cmp_topic,
uint32_t  cmp_topic_len 
)
static void _core_mqtt_handlerlist_append ( core_mqtt_handle_t *  mqtt_handle,
struct core_list_head *  dest,
struct core_list_head *  src,
uint8_t *  found 
)
static
static void _core_mqtt_handlerlist_destroy ( core_mqtt_handle_t *  mqtt_handle,
struct core_list_head *  list 
)
static
uint8_t _core_mqtt_process_topic_alias ( core_mqtt_handle_t *  mqtt_handle,
uint16_t  topic_alias,
uint32_t  topic_len,
char *  topic,
core_mqtt_topic_alias_node_t *  alias_node 
)

函数调用图:

static void _core_mqtt_call_user_handler ( core_mqtt_handle_t *  mqtt_handle,
core_mqtt_msg_t  msg,
uint8_t  qos,
mqtt_properties_t pub_prop 
)
static

函数调用图:

static int32_t _core_mqtt_pub_handler ( core_mqtt_handle_t *  mqtt_handle,
uint8_t *  input,
uint32_t  len,
uint8_t  qos,
uint32_t  remain_len 
)
static

函数调用图:

void _core_mqtt_flow_control_inc ( core_mqtt_handle_t *  mqtt_handle)

函数调用图:

static int32_t _core_mqtt_puback_handler ( core_mqtt_handle_t *  mqtt_handle,
uint8_t *  input,
uint32_t  len 
)
static

函数调用图:

static int32_t _core_mqtt_server_disconnect_handler ( core_mqtt_handle_t *  mqtt_handle,
uint8_t *  input,
uint32_t  len 
)
static

函数调用图:

static void _core_mqtt_subunsuback_handler ( core_mqtt_handle_t *  mqtt_handle,
uint8_t *  input,
uint32_t  len,
uint8_t  packet_type 
)
static

函数调用图:

int32_t core_mqtt_setopt ( void *  handle,
core_mqtt_option_t  option,
void *  data 
)

函数调用图:

void* aiot_mqtt_init ( void  )

初始化mqtt实例并设置默认参数

返回
void*
返回值
非NULLMQTT实例句柄
NULL初始化失败, 一般是内存分配失败导致

函数调用图:

int32_t aiot_mqtt_setopt ( void *  handle,
aiot_mqtt_option_t  option,
void *  data 
)

设置mqtt参数

下面列出常用的配置选项, 至少需要配置以下选项才可使用MQTT的基本功能

其余配置选项均设有默认值, 可按业务需要进行调整

  • AIOT_MQTTOPT_HOST: 配置连接的阿里云MQTT站点地址
  • AIOT_MQTTOPT_PORT: 配置连接的阿里云MQTT站点端口号
  • AIOT_MQTTOPT_PRODUCT_KEY: 配置设备的 productKey
  • AIOT_MQTTOPT_DEVICE_NAME: 配置设备的 deviceName
  • AIOT_MQTTOPT_DEVICE_SECRET: 配置设备的 deviceSecret
  • AIOT_MQTTOPT_NETWORK_CRED: 配置建立MQTT连接时的安全凭据
  • AIOT_MQTTOPT_RECV_HANDLER: 配置默认的数据接收回调函数
  • AIOT_MQTTOPT_EVENT_HANDLER: 配置MQTT事件通知回调函数
参数
[in]handlemqtt句柄
[in]option配置选项, 更多信息请参考aiot_mqtt_option_t
[in]data配置选项数据, 更多信息请参考aiot_mqtt_option_t
返回
int32_t
返回值
<STATE_SUCCESS参数设置失败, 更多信息请参考aiot_state_api.h
>=STATE_SUCCESS参数设置成功

函数调用图:

int32_t aiot_mqtt_deinit ( void **  handle)

释放mqtt实例句柄的资源

参数
[in]handle指向mqtt实例句柄的指针
返回
int32_t
返回值
<STATE_SUCCESS执行失败, 更多信息请参考aiot_state_api.h
>=STATE_SUCCESS执行成功

函数调用图:

static int32_t _mqtt_connect_with_prop ( void *  handle,
will_message_t will_message,
mqtt_properties_t connect_property 
)
static

函数调用图:

int32_t aiot_mqtt_connect ( void *  handle)

与MQTT服务器建立连接

使用aiot_mqtt_setopt 配置的mqtt连接参数连接mqtt服务器, 使用的建联参数按如下顺序选择

  1. 若配置了以下选项, 直接用配置的连接参数连接 AIOT_MQTTOPT_HOST 选项指定的任意MQTT服务器
  2. 若配置了以下选项, 则强制以阿里云平台的签名算法计算连接参数作为MQTT的用户名/密码, 连接阿里云平台
参数
[in]handleMQTT实例句柄
返回
int32_t
返回值
<STATE_SUCCESS执行失败, 更多信息请参考aiot_state_api.h
>=STATE_SUCCESS执行成功
注解

当配置AIOT_MQTTOPT_USERNAME , AIOT_MQTTOPT_PASSWORDAIOT_MQTTOPT_CLIENTID 配置自定义连接凭据时,

此函数会忽略AIOT_MQTTOPT_PRODUCT_KEY , AIOT_MQTTOPT_DEVICE_NAMEAIOT_MQTTOPT_DEVICE_SECRET,

直接使用自定义凭据连接指定的MQTT服务器

函数调用图:

int32_t aiot_mqtt_disconnect ( void *  handle)

与MQTT服务器断开连接

向MQTT服务器发送MQTT DISCONNECT报文, 然后断开网络连接

如果需要再次与MQTT服务器建立连接, 调用aiot_mqtt_connect 即可

参数
[in]handleMQTT实例句柄
返回
int32_t
返回值
<STATE_SUCCESS执行失败, 更多信息请参考aiot_state_api.h
>=STATE_SUCCESS执行成功

函数调用图:

int32_t aiot_mqtt_heartbeat ( void *  handle)

发送MQTT PINGREQ报文, 用于维持心跳

aiot_mqtt_process 包含了定时发送心跳的机制, 如果有特殊需要的话, 可以使用此函数直接发送心跳报文

参数
[in]handleMQTT实例句柄
返回
int32_t
返回值
<STATE_SUCCESS执行失败, 更多信息请参考aiot_state_api.h
>=STATE_SUCCESS执行成功

函数调用图:

int32_t aiot_mqtt_process ( void *  handle)

此函数用于处理定时心跳发送和qos1消息的重传逻辑

  1. 发送心跳至mqtt broker以维护mqtt连接, 心跳发送间隔由AIOT_MQTTOPT_HEARTBEAT_INTERVAL_MS 配置项控制
  2. 如果一条qos1的mqtt PUBLISH报文在AIOT_MQTTOPT_REPUB_TIMEOUT_MS 时间内没有收到mqtt PUBACK应答报文, 该函数会重发此消息, 直到成功为止
参数
[in]handleMQTT实例句柄
返回
int32_t
返回值
<STATE_SUCCESS执行失败, 更多信息请参考aiot_state_api.h
>=STATE_SUCCESS执行成功
注解

该函数为非阻塞, 需要间歇性被调用, 调用间隔应当小于AIOT_MQTTOPT_HEARTBEAT_INTERVAL_MSAIOT_MQTTOPT_REPUB_TIMEOUT_MS 时间内没有收到mqtt的最小值,

以确保心跳发送和QoS1消息的重传逻辑正常工作

函数调用图:

static int32_t _core_mqtt_tx_topic_alias_process ( core_mqtt_handle_t *  mqtt_handle,
core_mqtt_buff_t *  topic,
uint16_t *  alias_id_prt 
)
static

函数调用图:

static int32_t _core_mqtt_check_flow_control ( core_mqtt_handle_t *  mqtt_handle,
uint8_t  qos 
)
static
static void _core_mqtt_check_flow_dec ( core_mqtt_handle_t *  mqtt_handle)
static

函数调用图:

static int32_t _core_mqtt_check_tx_payload_len ( uint32_t  pkt_len,
core_mqtt_handle_t *  mqtt_handle 
)
static

函数调用图:

static int32_t _core_mqtt_pub ( void *  handle,
core_mqtt_buff_t *  topic,
core_mqtt_buff_t *  payload,
uint8_t  qos,
uint8_t  retain,
mqtt_properties_t pub_prop 
)
static

函数调用图:

int32_t _core_mqtt_disconnect_with_prop ( void *  handle,
uint8_t  reason_code,
mqtt_properties_t discon_property 
)

函数调用图:

int32_t aiot_mqtt_disconnect_v5 ( void *  handle,
uint8_t  reason_code,
mqtt_properties_t disconn_property 
)

与MQTT服务器断开连接 以MQTT 5.0协议的方式接入, 支持5.0的特性. 在调用这个接口前, 需要确保已经通过AIOT_MQTTOPT_VERSION的方式, 设置过版本号为AIOT_MQTT_VERSION_5_0

向MQTT服务器发送MQTT DISCONNECT报文, 然后断开网络连接

如果需要再次与MQTT服务器建立连接, 调用aiot_mqtt_connect 即可

参数
[in]handleMQTT实例句柄
[in]reason_code指定MQTT DISCONNECT的原因
[in]disconn_property指定MQTT DISCONNECT报文的属性
返回
int32_t
返回值
STATE_MQTT_INVALID_PROTOCOL_VERSIONmqtt协议的版本号不对, 没有通过AIOT_MQTTOPT_VERSION将版本号将设置为5.0
<STATE_SUCCESS执行失败, 更多信息请参考aiot_state_api.h
>=STATE_SUCCESS执行成功

函数调用图:

static int32_t _core_mqtt_pub_params_check ( void *  handle,
char *  topic,
uint8_t *  payload,
uint32_t  payload_len,
uint8_t  qos,
uint8_t  retain 
)
static
int32_t _core_mqtt_append_rid ( core_mqtt_handle_t *  mqtt_handle,
char *  topic,
char **  new_topic 
)
int32_t _core_mqtt_compress ( core_mqtt_handle_t *  mqtt_handle,
char *  topic,
uint8_t *  payload,
uint32_t  payload_len,
core_mqtt_msg_t *  msg 
)
int32_t _mqtt_pub_with_prop ( void *  handle,
char *  topic,
uint8_t *  payload,
uint32_t  payload_len,
uint8_t  qos,
uint8_t  retain,
mqtt_properties_t pub_prop 
)

函数调用图:

int32_t aiot_mqtt_pub ( void *  handle,
char *  topic,
uint8_t *  payload,
uint32_t  payload_len,
uint8_t  qos 
)

发送一条PUBLISH报文到MQTT服务器, QoS为0, 用于发布指定的消息

参数
[in]handleMQTT实例句柄
[in]topic指定MQTT PUBLISH报文的topic
[in]payload指定MQTT PUBLISH报文的payload
[in]payload_len指定MQTT PUBLISH报文的payload_len
[in]qos指定mqtt的qos值, 仅支持qos0和qos1
返回
int32_t
返回值
<STATE_SUCCESS执行失败, 更多信息请参考aiot_state_api.h
>=STATE_SUCCESS执行成功

函数调用图:

static int32_t _core_mqtt_sub ( void *  handle,
core_mqtt_buff_t *  topic,
aiot_mqtt_recv_handler_t  handler,
sub_options_t opts,
void *  userdata,
mqtt_properties_t sub_prop 
)
static

函数调用图:

static int32_t _mqtt_sub_with_prop ( void *  handle,
char *  topic,
aiot_mqtt_recv_handler_t  handler,
sub_options_t opts,
void *  userdata,
mqtt_properties_t sub_prop 
)
static

函数调用图:

int32_t aiot_mqtt_sub ( void *  handle,
char *  topic,
aiot_mqtt_recv_handler_t  handler,
uint8_t  qos,
void *  userdata 
)

发送一条mqtt SUBSCRIBE报文到MQTT服务器, 用于订阅指定的topic

参数
[in]handleMQTT实例句柄
[in]topic指定MQTT SUBSCRIBE报文的topic
[in]handler与topic对应的MQTT PUBLISH报文回调函数, 当有消息发布到topic时, 该回调函数被调用 若handler为NULL传入, 则SDK调用AIOT_MQTTOPT_RECV_HANDLER 配置的回调函数 若多次调用aiot_mqtt_sub()并对同一topic指定不同的handler, 有消息到达时不同handler都会被调用到
[in]qos指定topic期望mqtt服务器支持的最大qos值, 仅支持qos0和qos1
[in]userdata可让SDK代为保存的用户上下文, 当回调函数被调用时, 此上下文会通过handler传回给用户 若未指定该上下文, 那么通过AIOT_MQTTOPT_USERDATA 配置的上下文会通过handler传回给用户
返回
int32_t
返回值
<STATE_SUCCESS执行失败, 更多信息请参考aiot_state_api.h
>=STATE_SUCCESS执行成功

函数调用图:

static int32_t _core_mqtt_unsub ( void *  handle,
core_mqtt_buff_t *  topic,
mqtt_properties_t unsub_prop 
)
static

函数调用图:

static int32_t _mqtt_unsub ( void *  handle,
char *  topic,
mqtt_properties_t unsub_prop 
)
static

函数调用图:

int32_t aiot_mqtt_unsub ( void *  handle,
char *  topic 
)

发送一条mqtt UNSUBSCRIBE报文到MQTT服务器, 用于取消订阅指定的topic

参数
[in]handleMQTT实例句柄
[in]topic指定MQTT UNSUBSCRIBE报文的topic
返回
int32_t
返回值
<STATE_SUCCESS执行失败, 更多信息请参考aiot_state_api.h
>=STATE_SUCCESS执行成功

函数调用图:

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

参数
[in]handleMQTT实例句柄
[in]topic指定MQTT UNSUBSCRIBE报文的topic
[in]unsub_prop指定MQTT UNSUBSCRIBE报文的属性
返回
int32_t
返回值
STATE_MQTT_INVALID_PROTOCOL_VERSIONmqtt协议的版本号不对, 没有通过AIOT_MQTTOPT_VERSION将版本号将设置为5.0
<STATE_SUCCESS执行失败, 更多信息请参考aiot_state_api.h
>=STATE_SUCCESS执行成功

函数调用图:

int32_t aiot_mqtt_recv ( void *  handle)

尝试从网络上接收MQTT报文

除了从网络上接收MQTT报文之外, 本函数也包含了重连机制

  1. 当MQTT心跳丢失超过AIOT_MQTTOPT_HEARTBEAT_MAX_LOST 配置的次数时, 触发重连机制
  2. 当SDK检测到网络断开时, 触发重连机制
参数
[in]handle
返回值
STATE_SYS_DEPEND_NWK_READ_LESSDATA执行成功, 此时网络上暂无可以收取的MQTT报文
>=STATE_SUCCESS执行成功
其他返回值执行失败, 更多信息请参考aiot_state_api.h
注解

当网络连接正常并且aiot_mqtt_deinit 未被调用时, 该函数为阻塞, 需要持续被调用

  1. 当网络连接断开时, 该函数会立即返回, 此时返回值为STATE_SYS_DEPEND_NWK_CLOSED
  2. aiot_mqtt_deinit 被调用时, 该函数会立即返回, 此时返回值为STATE_USER_INPUT_EXEC_DISABLED

函数调用图:

char* core_mqtt_get_product_key ( void *  handle)
char* core_mqtt_get_device_name ( void *  handle)
uint16_t core_mqtt_get_port ( void *  handle)
int32_t core_mqtt_get_nwkstats ( void *  handle,
core_mqtt_nwkstats_info_t *  nwk_stats_info 
)
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

参数
[in]handleMQTT实例句柄
[in]topic指定MQTT PUBLISH报文的topic
[in]payload指定MQTT PUBLISH报文的payload
[in]payload_len指定MQTT PUBLISH报文的payload_len
[in]qos指定mqtt的qos值, 仅支持qos0和qos1
[in]retain指定是否为保留消息
[in]pub_prop指定MQTT PUB报文的属性
返回
int32_t
返回值
STATE_MQTT_INVALID_PROTOCOL_VERSIONmqtt协议的版本号不对, 没有通过AIOT_MQTTOPT_VERSION将版本号将设置为5.0
<STATE_SUCCESS执行失败, 更多信息请参考aiot_state_api.h
>=STATE_SUCCESS执行成功

函数调用图:

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

参数
[in]handleMQTT实例句柄
[in]topic指定MQTT SUBSCRIBE报文的topic
[in]opts订阅选项
[in]handler与topic对应的MQTT PUBLISH报文回调函数, 当有消息发布到topic时, 该回调函数被调用 若handler为NULL传入, 则SDK调用AIOT_MQTTOPT_RECV_HANDLER 配置的回调函数 若多次调用aiot_mqtt_sub()并对同一topic指定不同的handler, 有消息到达时不同handler都会被调用到
[in]userdata可让SDK代为保存的用户上下文, 当回调函数被调用时, 此上下文会通过handler传回给用户 若未指定该上下文, 那么通过AIOT_MQTTOPT_USERDATA 配置的上下文会通过handler传回给用户
[in]sub_prop指定MQTT SUBSCRIBE报文的属性
返回
int32_t
返回值
STATE_MQTT_INVALID_PROTOCOL_VERSIONmqtt协议的版本号不对, 没有通过AIOT_MQTTOPT_VERSION将版本号将设置为5.0
<STATE_SUCCESS执行失败, 更多信息请参考aiot_state_api.h
>=STATE_SUCCESS执行成功

函数调用图:

int32_t _core_will_message_check ( will_message_t will_message)
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_MQTTOPT_VERSION的方式, 设置过版本号为AIOT_MQTT_VERSION_5_0

使用aiot_mqtt_setopt 配置的mqtt连接参数连接mqtt服务器, 使用的建联参数按如下顺序选择

  1. 若配置了以下选项, 直接用配置的连接参数连接 AIOT_MQTTOPT_HOST 选项指定的任意MQTT服务器
  2. 若配置了以下选项, 则强制以阿里云平台的签名算法计算连接参数作为MQTT的用户名/密码, 连接阿里云平台
参数
[in]handleMQTT实例句柄
[in]will_messageMQTT建连报文的遗嘱消息,若不存在,设置为NULL
[in]conn_prop指定MQTT CONNECT报文的属性
返回
int32_t
返回值
STATE_MQTT_INVALID_PROTOCOL_VERSIONmqtt协议的版本号不对, 没有通过AIOT_MQTTOPT_VERSION将版本号将设置为5.0
<STATE_SUCCESS执行失败, 更多信息请参考aiot_state_api.h
>=STATE_SUCCESS执行成功
注解

当配置AIOT_MQTTOPT_USERNAME , AIOT_MQTTOPT_PASSWORDAIOT_MQTTOPT_CLIENTID 配置自定义连接凭据时,

此函数会忽略AIOT_MQTTOPT_PRODUCT_KEY , AIOT_MQTTOPT_DEVICE_NAMEAIOT_MQTTOPT_DEVICE_SECRET,

直接使用自定义凭据连接指定的MQTT服务器

函数调用图:

变量说明

int32_t last_failed_error_code = 0
static