mqttclient version 1.0.2 released...
This commit is contained in:
@@ -2,7 +2,7 @@
|
|||||||
* @Author: jiejie
|
* @Author: jiejie
|
||||||
* @Github: https://github.com/jiejieTop
|
* @Github: https://github.com/jiejieTop
|
||||||
* @Date: 2019-12-15 00:42:16
|
* @Date: 2019-12-15 00:42:16
|
||||||
* @LastEditTime: 2020-03-21 16:49:07
|
* @LastEditTime: 2020-04-25 18:59:08
|
||||||
* @Description: the code belongs to jiejie, please keep the author information and source code according to the license.
|
* @Description: the code belongs to jiejie, please keep the author information and source code according to the license.
|
||||||
*/
|
*/
|
||||||
#ifndef _ERROR_H_
|
#ifndef _ERROR_H_
|
||||||
@@ -10,12 +10,12 @@
|
|||||||
|
|
||||||
typedef enum mqtt_error {
|
typedef enum mqtt_error {
|
||||||
MQTT_SSL_CERT_ERROR = -0x001C, /* cetr parse failed */
|
MQTT_SSL_CERT_ERROR = -0x001C, /* cetr parse failed */
|
||||||
MQTT_SOCKET_FAILED = -0x001B, /* socket fd failed */
|
MQTT_SOCKET_FAILED_ERROR = -0x001B, /* socket fd failed */
|
||||||
MQTT_SOCKET_UNKNOWN_HOST = -0x001A, /* socket unknown host ip or domain */
|
MQTT_SOCKET_UNKNOWN_HOST_ERROR = -0x001A, /* socket unknown host ip or domain */
|
||||||
MQTT_SET_PUBLISH_DUP_FAILED = -0x0019, /* mqtt publish packet set udp bit failed */
|
MQTT_SET_PUBLISH_DUP_FAILED_ERROR = -0x0019, /* mqtt publish packet set udp bit failed */
|
||||||
MQTT_CLEAN_SESSION_ERROR = -0x0018, /* mqtt clean session error */
|
MQTT_CLEAN_SESSION_ERROR = -0x0018, /* mqtt clean session error */
|
||||||
MQTT_ACK_NODE_IS_EXIST = -0x0017, /* mqtt ack list is exist ack node */
|
MQTT_ACK_NODE_IS_EXIST_ERROR = -0x0017, /* mqtt ack list is exist ack node */
|
||||||
MQTT_ACK_HANDLER_NUM_TOO_MUCH = -0x0016, /* mqtt ack handler number is too much */
|
MQTT_ACK_HANDLER_NUM_TOO_MUCH_ERROR = -0x0016, /* mqtt ack handler number is too much */
|
||||||
MQTT_RESUBSCRIBE_ERROR = -0x0015, /* mqtt resubscribe error */
|
MQTT_RESUBSCRIBE_ERROR = -0x0015, /* mqtt resubscribe error */
|
||||||
MQTT_SUBSCRIBE_ERROR = -0x0014, /* mqtt subscribe error */
|
MQTT_SUBSCRIBE_ERROR = -0x0014, /* mqtt subscribe error */
|
||||||
MQTT_SEND_PACKET_ERROR = -0x0013, /* mqtt send a packet */
|
MQTT_SEND_PACKET_ERROR = -0x0013, /* mqtt send a packet */
|
||||||
|
@@ -2,7 +2,7 @@
|
|||||||
* @Author: jiejie
|
* @Author: jiejie
|
||||||
* @Github: https://github.com/jiejieTop
|
* @Github: https://github.com/jiejieTop
|
||||||
* @Date: 2019-12-09 21:31:25
|
* @Date: 2019-12-09 21:31:25
|
||||||
* @LastEditTime: 2020-04-23 15:12:36
|
* @LastEditTime: 2020-04-25 18:58:14
|
||||||
* @Description: the code belongs to jiejie, please keep the author information and source code according to the license.
|
* @Description: the code belongs to jiejie, please keep the author information and source code according to the license.
|
||||||
*/
|
*/
|
||||||
#include "mqttclient.h"
|
#include "mqttclient.h"
|
||||||
@@ -48,12 +48,12 @@ static int mqtt_set_publish_dup(mqtt_client_t* c, unsigned char dup)
|
|||||||
MQTTHeader header = {0};
|
MQTTHeader header = {0};
|
||||||
|
|
||||||
if (NULL == c->write_buf)
|
if (NULL == c->write_buf)
|
||||||
RETURN_ERROR(MQTT_SET_PUBLISH_DUP_FAILED);
|
RETURN_ERROR(MQTT_SET_PUBLISH_DUP_FAILED_ERROR);
|
||||||
|
|
||||||
header.byte = readChar(&read_data); /* read header */
|
header.byte = readChar(&read_data); /* read header */
|
||||||
|
|
||||||
if (header.bits.type != PUBLISH)
|
if (header.bits.type != PUBLISH)
|
||||||
RETURN_ERROR(MQTT_SET_PUBLISH_DUP_FAILED);
|
RETURN_ERROR(MQTT_SET_PUBLISH_DUP_FAILED_ERROR);
|
||||||
|
|
||||||
header.bits.dup = dup;
|
header.bits.dup = dup;
|
||||||
writeChar(&write_data, header.byte); /* write header */
|
writeChar(&write_data, header.byte); /* write header */
|
||||||
@@ -382,7 +382,7 @@ static int mqtt_ack_list_record(mqtt_client_t* c, int type, unsigned short packe
|
|||||||
|
|
||||||
/* Determine if the node already exists */
|
/* Determine if the node already exists */
|
||||||
if (mqtt_ack_list_node_is_exist(c, type, packet_id))
|
if (mqtt_ack_list_node_is_exist(c, type, packet_id))
|
||||||
RETURN_ERROR(MQTT_ACK_NODE_IS_EXIST);
|
RETURN_ERROR(MQTT_ACK_NODE_IS_EXIST_ERROR);
|
||||||
|
|
||||||
/* create a ack handler node */
|
/* create a ack handler node */
|
||||||
ack_handler = mqtt_ack_handler_create(c, type, packet_id, payload_len, handler);
|
ack_handler = mqtt_ack_handler_create(c, type, packet_id, payload_len, handler);
|
||||||
@@ -552,7 +552,7 @@ static int mqtt_try_resubscribe(mqtt_client_t* c)
|
|||||||
msg_handler = LIST_ENTRY(curr, message_handlers_t, list);
|
msg_handler = LIST_ENTRY(curr, message_handlers_t, list);
|
||||||
|
|
||||||
/* resubscribe topic */
|
/* resubscribe topic */
|
||||||
if ((rc = mqtt_subscribe(c, msg_handler->topic_filter, msg_handler->qos, msg_handler->handler)) == MQTT_ACK_HANDLER_NUM_TOO_MUCH)
|
if ((rc = mqtt_subscribe(c, msg_handler->topic_filter, msg_handler->qos, msg_handler->handler)) == MQTT_ACK_HANDLER_NUM_TOO_MUCH_ERROR)
|
||||||
LOG_W("%s:%d %s()... mqtt ack handler num too much ...", __FILE__, __LINE__, __FUNCTION__);
|
LOG_W("%s:%d %s()... mqtt ack handler num too much ...", __FILE__, __LINE__, __FUNCTION__);
|
||||||
|
|
||||||
}
|
}
|
||||||
@@ -571,7 +571,7 @@ static int mqtt_try_do_reconnect(mqtt_client_t* c)
|
|||||||
rc = mqtt_try_resubscribe(c); /* resubscribe */
|
rc = mqtt_try_resubscribe(c); /* resubscribe */
|
||||||
}
|
}
|
||||||
|
|
||||||
LOG_I("%s:%d %s()... mqtt try connect result is %#x", __FILE__, __LINE__, __FUNCTION__, rc);
|
LOG_I("%s:%d %s()... mqtt try connect result is -0x%04x", __FILE__, __LINE__, __FUNCTION__, -rc);
|
||||||
|
|
||||||
RETURN_ERROR(rc);
|
RETURN_ERROR(rc);
|
||||||
}
|
}
|
||||||
@@ -751,7 +751,7 @@ static int mqtt_publish_packet_handle(mqtt_client_t *c, platform_timer_t *timer)
|
|||||||
mqtt_deliver_message(c, &topic_name, &msg);
|
mqtt_deliver_message(c, &topic_name, &msg);
|
||||||
else {
|
else {
|
||||||
/* record the received of a qos2 message and only processes it when the qos2 message is received for the first time */
|
/* record the received of a qos2 message and only processes it when the qos2 message is received for the first time */
|
||||||
if ((rc = mqtt_ack_list_record(c, PUBREL, msg.id, len, NULL)) != MQTT_ACK_NODE_IS_EXIST)
|
if ((rc = mqtt_ack_list_record(c, PUBREL, msg.id, len, NULL)) != MQTT_ACK_NODE_IS_EXIST_ERROR)
|
||||||
mqtt_deliver_message(c, &topic_name, &msg);
|
mqtt_deliver_message(c, &topic_name, &msg);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1269,9 +1269,9 @@ int mqtt_publish(mqtt_client_t* c, const char* topic_filter, mqtt_message_t* msg
|
|||||||
|
|
||||||
platform_mutex_lock(&c->write_lock);
|
platform_mutex_lock(&c->write_lock);
|
||||||
|
|
||||||
if (msg->qos != QOS0) {
|
if (QOS0 != msg->qos) {
|
||||||
if (mqtt_ack_handler_is_maximum(c)) {
|
if (mqtt_ack_handler_is_maximum(c)) {
|
||||||
rc = MQTT_ACK_HANDLER_NUM_TOO_MUCH; /* the recorded ack handler has reached the maximum */
|
rc = MQTT_ACK_HANDLER_NUM_TOO_MUCH_ERROR; /* the recorded ack handler has reached the maximum */
|
||||||
goto exit;
|
goto exit;
|
||||||
}
|
}
|
||||||
msg->id = mqtt_get_next_packet_id(c);
|
msg->id = mqtt_get_next_packet_id(c);
|
||||||
@@ -1302,6 +1302,13 @@ int mqtt_publish(mqtt_client_t* c, const char* topic_filter, mqtt_message_t* msg
|
|||||||
exit:
|
exit:
|
||||||
platform_mutex_unlock(&c->write_lock);
|
platform_mutex_unlock(&c->write_lock);
|
||||||
|
|
||||||
|
if ((MQTT_ACK_HANDLER_NUM_TOO_MUCH_ERROR == rc) || (MQTT_MEM_NOT_ENOUGH_ERROR == rc)) {
|
||||||
|
LOG_W("%s:%d %s()... there is not enough memory space to record...", __FILE__, __LINE__, __FUNCTION__);
|
||||||
|
|
||||||
|
/* record too much retransmitted data, may be disconnected, need to reconnect */
|
||||||
|
mqtt_set_client_state(c, CLIENT_STATE_DISCONNECTED);
|
||||||
|
}
|
||||||
|
|
||||||
RETURN_ERROR(rc);
|
RETURN_ERROR(rc);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -2,14 +2,14 @@
|
|||||||
* @Author: jiejie
|
* @Author: jiejie
|
||||||
* @Github: https://github.com/jiejieTop
|
* @Github: https://github.com/jiejieTop
|
||||||
* @Date: 2020-01-10 23:45:59
|
* @Date: 2020-01-10 23:45:59
|
||||||
* @LastEditTime : 2020-01-13 02:48:53
|
* @LastEditTime: 2020-04-25 18:59:28
|
||||||
* @Description: the code belongs to jiejie, please keep the author information and source code according to the license.
|
* @Description: the code belongs to jiejie, please keep the author information and source code according to the license.
|
||||||
*/
|
*/
|
||||||
#include "platform_net_socket.h"
|
#include "platform_net_socket.h"
|
||||||
|
|
||||||
int platform_net_socket_connect(const char *host, const char *port, int proto)
|
int platform_net_socket_connect(const char *host, const char *port, int proto)
|
||||||
{
|
{
|
||||||
int fd, ret = MQTT_SOCKET_UNKNOWN_HOST;
|
int fd, ret = MQTT_SOCKET_UNKNOWN_HOST_ERROR;
|
||||||
#ifdef MQTT_NETSOCKET_USE_AT
|
#ifdef MQTT_NETSOCKET_USE_AT
|
||||||
|
|
||||||
fd = tos_sal_module_connect(host, port, TOS_SAL_PROTO_TCP);
|
fd = tos_sal_module_connect(host, port, TOS_SAL_PROTO_TCP);
|
||||||
@@ -36,7 +36,7 @@ int platform_net_socket_connect(const char *host, const char *port, int proto)
|
|||||||
for (cur = addr_list; cur != NULL; cur = cur->ai_next) {
|
for (cur = addr_list; cur != NULL; cur = cur->ai_next) {
|
||||||
fd = socket(cur->ai_family, cur->ai_socktype, cur->ai_protocol);
|
fd = socket(cur->ai_family, cur->ai_socktype, cur->ai_protocol);
|
||||||
if (fd < 0) {
|
if (fd < 0) {
|
||||||
ret = MQTT_SOCKET_FAILED;
|
ret = MQTT_SOCKET_FAILED_ERROR;
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user