main/task_mqtt.c

changeset 15
64028e178ff1
parent 12
bb72d448e282
child 18
12506716211c
equal deleted inserted replaced
14:2a9f67ecbc72 15:64028e178ff1
45 extern uint8_t Relay2; 45 extern uint8_t Relay2;
46 extern uint8_t Dimmer3; 46 extern uint8_t Dimmer3;
47 extern uint8_t Dimmer4; 47 extern uint8_t Dimmer4;
48 48
49 49
50 void connect_mqtt(bool state) 50 void request_mqtt(bool state)
51 { 51 {
52 if (state) 52 if (state) {
53 xEventGroupSetBits(xEventGroupMQTT, TASK_MQTT_CONNECT); 53 if (xEventGroupGetBits(xEventGroupMQTT) & TASK_MQTT_CONNECTED) {
54 else 54 ESP_LOGW(TAG, "request_mqtt(true) but already connected");
55 xEventGroupSetBits(xEventGroupMQTT, TASK_MQTT_DISCONNECT); 55 } else {
56 xEventGroupSetBits(xEventGroupMQTT, TASK_MQTT_CONNECT);
57 }
58 } else {
59 if (xEventGroupGetBits(xEventGroupMQTT) & TASK_MQTT_DISCONNECT) {
60 ESP_LOGW(TAG, "request_mqtt(false) already in progress");
61 } else if (! (xEventGroupGetBits(xEventGroupMQTT) & TASK_MQTT_CONNECTED)) {
62 ESP_LOGW(TAG, "request_mqtt(false) but already disconnected");
63 } else {
64 xEventGroupSetBits(xEventGroupMQTT, TASK_MQTT_DISCONNECT);
65 }
66 }
56 } 67 }
57 68
58 69
59 70
60 bool ready_mqtt(void) 71 bool ready_mqtt(void)
444 ESP_LOGE(TAG, "Result %s", esp_err_to_name(err)); 455 ESP_LOGE(TAG, "Result %s", esp_err_to_name(err));
445 } 456 }
446 xEventGroupClearBits(xEventGroupMQTT, TASK_MQTT_CONNECT); 457 xEventGroupClearBits(xEventGroupMQTT, TASK_MQTT_CONNECT);
447 458
448 } else if (uxBits & TASK_MQTT_DISCONNECT) { 459 } else if (uxBits & TASK_MQTT_DISCONNECT) {
449 ESP_LOGI(TAG, "Request MQTT disconnect"); 460 ESP_LOGI(TAG, "Request MQTT disconnect start");
450 /* 461 /*
451 * Unsubscribe if connected 462 * Unsubscribe if connected
452 */ 463 */
453 if (ready_mqtt()) { 464 if (ready_mqtt()) {
454 char *topic = topic_base(); 465 char *topic = topic_base();
477 ESP_LOGE(TAG, "Result %s", esp_err_to_name(err)); 488 ESP_LOGE(TAG, "Result %s", esp_err_to_name(err));
478 } else { 489 } else {
479 ESP_LOGI(TAG, "stopped"); 490 ESP_LOGI(TAG, "stopped");
480 } 491 }
481 492
493 xEventGroupClearBits(xEventGroupMQTT, TASK_MQTT_CONNECTED);
494 xEventGroupSetBits(xEventGroupMQTT, TASK_MQTT_DISCONNECTED);
482 xEventGroupClearBits(xEventGroupMQTT, TASK_MQTT_DISCONNECT); 495 xEventGroupClearBits(xEventGroupMQTT, TASK_MQTT_DISCONNECT);
496 ESP_LOGI(TAG, "Request MQTT disconnect done");
483 } 497 }
484 } 498 }
485 } 499 }
486 500

mercurial