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/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; } diff --git a/mqtt_client.c b/mqtt_client.c index a32b130..74ceb9f 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);