main/co2meter.c

changeset 24
64078aa15512
parent 23
58a328e91881
child 26
8a3696620c0a
--- a/main/co2meter.c	Thu Nov 07 15:09:51 2019 +0100
+++ b/main/co2meter.c	Thu Nov 07 22:58:48 2019 +0100
@@ -155,7 +155,7 @@
     xSemaphoreADC = xSemaphoreCreateMutex();
     xSemaphoreUnits = xSemaphoreCreateMutex();
 
-    xTaskCreate(&task_user,    "task_user",     2048, NULL,10, &xTaskUser);
+    xTaskCreate(&task_user,    "task_user",     3072, NULL,10, &xTaskUser);
     xTaskCreate(&task_ds18b20, "task_ds18b20",  2560, NULL, 8, &xTaskDS18B20);
     xTaskCreate(&task_adc,     "task_adc",      2560, NULL, 8, &xTaskADC);
     esp_log_level_set("wifi", ESP_LOG_ERROR);
@@ -211,14 +211,15 @@
 			}
 
 			/* Copy measured data and calculate results */
-			if (xSemaphoreTake(xSemaphoreUnits, 25) == pdTRUE) {
-			    for (int i = 0; i < 3; i++) {
+			for (int i = 0; i < 3; i++) {
+			    if (xSemaphoreTake(xSemaphoreUnits, 25) == pdTRUE) {
 			    	units[i].temperature = temp;
 			    	units[i].temperature_state = state;
 				units[i].alarm = 0;
 				if (state)
 				    units[i].alarm |= ALARM_SYS_TEMPERATURE & ALARM_UNIT_TEMPERATURE;
 			    	strncpy(units[i].temperature_rom_code, rom_code, 17);
+
 			    	if (xSemaphoreTake(xSemaphoreADC, 10) == pdTRUE) {
 				    units[i].pressure_state = adc_state->Pressure[i].error;
 				    units[i].pressure_channel = adc_state->Pressure[i].channel;
@@ -236,15 +237,20 @@
 // Setup tijd max 2 mS
 				    xSemaphoreGive(xSemaphoreADC);
 			    	} else {
-				    ESP_LOGE(TAG, "ML1_MQTT_CONNECT ADC lock error");
+				    ESP_LOGE(TAG, "ML1_MQTT_CONNECT ADC[%d] lock error", i);
 				}
-			    }
+				xSemaphoreGive(xSemaphoreUnits);
+			    } else {
+                            	ESP_LOGE(TAG, "ML1_MQTT_CONNECT units[%d] lock error", i);
+                            }
+			}
+			if (xSemaphoreTake(xSemaphoreUnits, 25) == pdTRUE) {
 			    write_units();
 			    xSemaphoreGive(xSemaphoreUnits);
-			    user_refresh();
 			} else {
-			    ESP_LOGE(TAG, "ML1_MQTT_CONNECT units lock error");
+			    ESP_LOGE(TAG, "ML1_MQTT_CONNECT write_units lock error");
 			}
+			user_refresh();
 		    }
 		    break;
 

mercurial