Queue in MQTT transport wait for connected

This commit is contained in:
Bogdan Pilyugin 2024-02-27 13:22:15 +02:00
parent 65b977f089
commit 2996e4175d

View File

@ -383,9 +383,12 @@ void MQTTTaskTransmit(void *pvParameter)
vTaskDelay(pdMS_TO_TICKS(300)); //wait for MQTT queue ready vTaskDelay(pdMS_TO_TICKS(300)); //wait for MQTT queue ready
while (1) while (1)
{ {
while (!mqtt[idx].is_connected)
vTaskDelay(pdMS_TO_TICKS(300));
xQueueReceive(mqtt[idx].mqtt_queue, &DSS, portMAX_DELAY); xQueueReceive(mqtt[idx].mqtt_queue, &DSS, portMAX_DELAY);
if (mqtt[idx].mqtt && mqtt[idx].is_connected) if (mqtt[idx].mqtt && mqtt[idx].is_connected)
{ {
#if MQTT_DEBUG_MODE > 1 #if MQTT_DEBUG_MODE > 1
ESP_LOGI(TAG, "MQTT client %d data send:%.*s", idx, DSS.data_length, DSS.raw_data_ptr); ESP_LOGI(TAG, "MQTT client %d data send:%.*s", idx, DSS.data_length, DSS.raw_data_ptr);
#endif #endif
@ -547,7 +550,7 @@ esp_err_t ExtendedLog(esp_log_level_t level, char *format, ...)
strcpy(buf, time); strcpy(buf, time);
strcat(buf, " "); strcat(buf, " ");
strcat(buf, data); strcat(buf, data);
MQTT_DATA_SEND_STRUCT DSS = {0}; MQTT_DATA_SEND_STRUCT DSS = { 0 };
ComposeTopic(DSS.topic, idx, "LOG", "UPLINK"); ComposeTopic(DSS.topic, idx, "LOG", "UPLINK");
DSS.raw_data_ptr = buf; DSS.raw_data_ptr = buf;
DSS.data_length = strlen(buf); DSS.data_length = strlen(buf);