From 65d91f3908a826c6d8832c88ba7ef739ed1adc67 Mon Sep 17 00:00:00 2001 From: Tijn Kooijmans Date: Sun, 23 Jul 2017 21:28:23 +0200 Subject: [PATCH] implemented disconnected callback --- include/mqtt.h | 3 +-- mqtt.c | 11 +++++++++-- 2 files changed, 10 insertions(+), 4 deletions(-) diff --git a/include/mqtt.h b/include/mqtt.h index d4bc2da..0c88cde 100644 --- a/include/mqtt.h +++ b/include/mqtt.h @@ -44,8 +44,7 @@ typedef struct mqtt_settings { mqtt_write_callback write_cb; mqtt_event_callback connected_cb; - mqtt_event_callback disconnected_cb; // unused - mqtt_event_callback reconnect_cb; // unused + mqtt_event_callback disconnected_cb; mqtt_event_callback subscribe_cb; mqtt_event_callback publish_cb; diff --git a/mqtt.c b/mqtt.c index 9523a88..f87d64f 100644 --- a/mqtt.c +++ b/mqtt.c @@ -498,8 +498,12 @@ void mqtt_task(void *pvParameters) mqtt_info("Connected to server %s:%d", client->settings->host, client->settings->port); if (!mqtt_connect(client)) { client->settings->disconnect_cb(client); + + if (client->settings->disconnected_cb) { + client->settings->disconnected_cb(client, NULL); + } + continue; - //return; } mqtt_info("Connected to MQTT broker, create sending thread before call connected callback"); xTaskCreate(&mqtt_sending_task, "mqtt_sending_task", 2048, client, CONFIG_MQTT_PRIORITY + 1, &xMqttSendingTask); @@ -511,13 +515,16 @@ void mqtt_task(void *pvParameters) mqtt_start_receive_schedule(client); client->settings->disconnect_cb(client); + if (client->settings->disconnected_cb) { + client->settings->disconnected_cb(client, NULL); + } + vTaskDelete(xMqttSendingTask); vTaskDelay(1000 / portTICK_RATE_MS); } mqtt_destroy(client); - } mqtt_client *mqtt_start(mqtt_settings *settings)