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)