From 8bd85832161c03184e1794698b554ca4e6e60b22 Mon Sep 17 00:00:00 2001 From: Riccardo Binetti Date: Thu, 4 Oct 2018 15:49:50 +0200 Subject: [PATCH 1/2] Add mqtt_get_connect_session_present --- lib/include/mqtt_msg.h | 1 + 1 file changed, 1 insertion(+) diff --git a/lib/include/mqtt_msg.h b/lib/include/mqtt_msg.h index fd04cd0..049c738 100644 --- a/lib/include/mqtt_msg.h +++ b/lib/include/mqtt_msg.h @@ -102,6 +102,7 @@ typedef struct mqtt_connect_info static inline int mqtt_get_type(uint8_t* buffer) { return (buffer[0] & 0xf0) >> 4; } +static inline int mqtt_get_connect_session_present(uint8_t* buffer) { return buffer[2] & 0x01; } static inline int mqtt_get_connect_return_code(uint8_t* buffer) { return buffer[3]; } static inline int mqtt_get_dup(uint8_t* buffer) { return (buffer[0] & 0x08) >> 3; } static inline int mqtt_get_qos(uint8_t* buffer) { return (buffer[0] & 0x06) >> 1; } From 4db99182202334ce7493001a6625e69107881abe Mon Sep 17 00:00:00 2001 From: Riccardo Binetti Date: Thu, 4 Oct 2018 16:06:17 +0200 Subject: [PATCH 2/2] mqtt_client: add session_present field to mqtt_event Populate it using the CONNACK packet --- include/mqtt_client.h | 1 + mqtt_client.c | 1 + 2 files changed, 2 insertions(+) diff --git a/include/mqtt_client.h b/include/mqtt_client.h index 45fcbe7..6e8d23c 100755 --- a/include/mqtt_client.h +++ b/include/mqtt_client.h @@ -52,6 +52,7 @@ typedef struct { char *topic; /*!< Topic asociated with this event */ int topic_len; /*!< Length of the topic for this event asociated with this event */ int msg_id; /*!< MQTT messaged id of message */ + int session_present; /*!< MQTT session_present flag for connection event */ } esp_mqtt_event_t; typedef esp_mqtt_event_t* esp_mqtt_event_handle_t; diff --git a/mqtt_client.c b/mqtt_client.c index d513d6b..0ad20c1 100644 --- a/mqtt_client.c +++ b/mqtt_client.c @@ -699,6 +699,7 @@ static void esp_mqtt_task(void *pv) break; } client->event.event_id = MQTT_EVENT_CONNECTED; + client->event.session_present = mqtt_get_connect_session_present(client->mqtt_state.in_buffer); client->state = MQTT_STATE_CONNECTED; esp_mqtt_dispatch_event(client);