implemented disconnected callback

This commit is contained in:
Tijn Kooijmans
2017-07-23 21:28:23 +02:00
parent f4fd2864ee
commit 65d91f3908
2 changed files with 10 additions and 4 deletions

View File

@@ -44,8 +44,7 @@ typedef struct mqtt_settings {
mqtt_write_callback write_cb; mqtt_write_callback write_cb;
mqtt_event_callback connected_cb; mqtt_event_callback connected_cb;
mqtt_event_callback disconnected_cb; // unused mqtt_event_callback disconnected_cb;
mqtt_event_callback reconnect_cb; // unused
mqtt_event_callback subscribe_cb; mqtt_event_callback subscribe_cb;
mqtt_event_callback publish_cb; mqtt_event_callback publish_cb;

11
mqtt.c
View File

@@ -498,8 +498,12 @@ void mqtt_task(void *pvParameters)
mqtt_info("Connected to server %s:%d", client->settings->host, client->settings->port); mqtt_info("Connected to server %s:%d", client->settings->host, client->settings->port);
if (!mqtt_connect(client)) { if (!mqtt_connect(client)) {
client->settings->disconnect_cb(client); client->settings->disconnect_cb(client);
if (client->settings->disconnected_cb) {
client->settings->disconnected_cb(client, NULL);
}
continue; continue;
//return;
} }
mqtt_info("Connected to MQTT broker, create sending thread before call connected callback"); 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); 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); mqtt_start_receive_schedule(client);
client->settings->disconnect_cb(client); client->settings->disconnect_cb(client);
if (client->settings->disconnected_cb) {
client->settings->disconnected_cb(client, NULL);
}
vTaskDelete(xMqttSendingTask); vTaskDelete(xMqttSendingTask);
vTaskDelay(1000 / portTICK_RATE_MS); vTaskDelay(1000 / portTICK_RATE_MS);
} }
mqtt_destroy(client); mqtt_destroy(client);
} }
mqtt_client *mqtt_start(mqtt_settings *settings) mqtt_client *mqtt_start(mqtt_settings *settings)