main/iotbalkon.c

changeset 12
bb72d448e282
parent 9
1659bd3c7a2b
child 14
2a9f67ecbc72
--- a/main/iotbalkon.c	Mon Apr 03 11:08:09 2023 +0200
+++ b/main/iotbalkon.c	Mon Apr 03 16:07:34 2023 +0200
@@ -19,6 +19,7 @@
 
 static TaskHandle_t			xTaskBMP280 = NULL;
 static TaskHandle_t			xTaskINA219 = NULL;
+static TaskHandle_t			xTaskAPDS9930 = NULL;
 static TaskHandle_t			xTaskMQTT = NULL;
 static TaskHandle_t			xTaskWifi = NULL;
 static TaskHandle_t			xTaskOUT = NULL;
@@ -55,6 +56,9 @@
 extern ina219_t				ina219_b_dev;
 extern ina219_t				ina219_s_dev;
 extern INA219_State			*ina219_state;
+extern SemaphoreHandle_t		xSemaphoreAPDS9930;
+extern apds9930_t			apds9930_dev;
+extern APDS9930_State			*apds9930_state;
 extern SemaphoreHandle_t		xSemaphoreWiFi;
 extern WIFI_State			*wifi_state;			///< WiFi state
 
@@ -272,6 +276,16 @@
 
 
 
+void getLightValues() {
+
+    request_apds9930();
+
+    while (! ready_apds9930()) {
+        vTaskDelay(10 / portTICK_PERIOD_MS);
+    }
+}
+
+
 void app_main(void)
 {
     uint64_t	totalTime, gTimeInMillis;
@@ -345,6 +359,7 @@
     memset(&bmp280_dev, 0, sizeof(bmp280_t));
     memset(&ina219_b_dev, 0, sizeof(ina219_t));
     memset(&ina219_s_dev, 0, sizeof(ina219_t));
+    memset(&apds9930_dev, 0, sizeof(i2c_dev_t));
 
     i2c_dev_t dev = { 0 };
     dev.cfg.sda_io_num = CONFIG_I2C_MASTER_SDA;
@@ -354,6 +369,9 @@
     dev.addr = 0x39;
     if (i2c_dev_probe(&dev, I2C_DEV_WRITE) == 0) {
         ESP_LOGI(TAG, "Found ADPS-9930");
+	ESP_ERROR_CHECK(apds9930_init_desc(&apds9930_dev, 0x39, 0, CONFIG_I2C_MASTER_SDA, CONFIG_I2C_MASTER_SCL));
+	ESP_ERROR_CHECK(apds9930_init(&apds9930_dev));
+	ESP_LOGI(TAG, "Found APDS-9930 id: 0x%02x", apds9930_dev.id);
     }
     dev.addr = 0x40;
     if (i2c_dev_probe(&dev, I2C_DEV_WRITE) == 0) {
@@ -386,15 +404,17 @@
      */
     xSemaphoreBMP280 = xSemaphoreCreateMutex();
     xSemaphoreINA219 = xSemaphoreCreateMutex();
+    xSemaphoreAPDS9930 = xSemaphoreCreateMutex();
 
 
-    xTaskCreate(&task_bmp280,  "task_bmp280",      2560, NULL, 8, &xTaskBMP280);
-    xTaskCreate(&task_ina219,  "task_ina219",      2560, NULL, 8, &xTaskINA219);
-    xTaskCreate(&task_out,     "task_out",         2560, NULL, 9, &xTaskOUT);
+    xTaskCreate(&task_bmp280,   "task_bmp280",      2560, NULL, 8, &xTaskBMP280);
+    xTaskCreate(&task_ina219,   "task_ina219",      2560, NULL, 8, &xTaskINA219);
+    xTaskCreate(&task_apds9930, "task_apds9930",    2560, NULL, 8, &xTaskAPDS9930);
+    xTaskCreate(&task_out,      "task_out",         2560, NULL, 9, &xTaskOUT);
     // esp_log_level_set("MQTT_CLIENT", ESP_LOG_ERROR);
-    xTaskCreate(&task_mqtt,    "task_mqtt",        4096, NULL, 5, &xTaskMQTT);
+    xTaskCreate(&task_mqtt,     "task_mqtt",        4096, NULL, 5, &xTaskMQTT);
     // esp_log_level_set("wifi", ESP_LOG_ERROR);
-    xTaskCreate(&task_wifi,    "task_wifi",        4096, NULL, 3, &xTaskWifi);
+    xTaskCreate(&task_wifi,     "task_wifi",        4096, NULL, 3, &xTaskWifi);
 
     vTaskDelay(10 / portTICK_PERIOD_MS);
 
@@ -414,7 +434,7 @@
 
 	switch (State) {
 	    case State_Init:		getTempBaro();
-					// getLightValues();
+					getLightValues();
 					getVoltsCurrent();
 					State = State_Connect;
 					DisCounter = 0;
@@ -587,7 +607,7 @@
 					gTimeNext = millis() + ST_INTERVAL;
 					if (loopno >= ST_LOOPS) {
 					    ESP_LOGI(TAG, "Enough loops, do connect");
-        				//    getLightValues();
+        				    getLightValues();
 					    State = State_Connect;
 					    DisCounter = 0;
 					    request_WiFi(true);

mercurial