main/iotbalkon.c

changeset 1
1c9894662795
parent 0
f8b0268c8d0a
child 3
e5d91caa6ab4
--- a/main/iotbalkon.c	Sun Mar 26 22:22:45 2023 +0200
+++ b/main/iotbalkon.c	Mon Mar 27 22:13:21 2023 +0200
@@ -1,16 +1,76 @@
-
+/**
+ * @file iotbalkon.c
+ * @brief iotbalkon project.
+ */
 
-#include <stdio.h>
-#include "freertos/FreeRTOS.h"
-#include "freertos/task.h"
-#include "driver/gpio.h"
-#include "esp_log.h"
-
-
+#include "config.h"
 
 static const char *TAG = "iotbalkon";
 
+
+static TaskHandle_t			xTaskBMP280 = NULL;
+
+extern BMP280_State			*bmp280_state;			///< I2C state
+extern SemaphoreHandle_t		xSemaphoreBMP280;		///< I2C lock semaphore
+extern bmp280_params_t			bmp280_params;
+extern bmp280_t				bmp280_dev;
+
+
 void app_main(void)
 {
-    ESP_LOGI(TAG, "Starting");
+#ifdef CONFIG_CODE_PRODUCTION
+    ESP_LOGI(TAG, "Starting production");
+#endif
+#ifdef CONFIG_CODE_TESTING
+    ESP_LOGI(TAG, "Starting testing");
+#endif
+
+    ESP_ERROR_CHECK(i2cdev_init());
+
+    bmp280_init_default_params(&bmp280_params);
+    memset(&bmp280_dev, 0, sizeof(bmp280_t));
+
+    i2c_dev_t dev = { 0 };
+    dev.cfg.sda_io_num = CONFIG_I2C_MASTER_SDA;
+    dev.cfg.scl_io_num = CONFIG_I2C_MASTER_SCL;
+    dev.cfg.master.clk_speed = 1000000;
+
+    dev.addr = 0x39;
+    if (i2c_dev_probe(&dev, I2C_DEV_WRITE) == 0) {
+        ESP_LOGI(TAG, "Found ADPS-9930");
+    }
+    dev.addr = 0x40;
+    if (i2c_dev_probe(&dev, I2C_DEV_WRITE) == 0) {
+	ESP_LOGI(TAG, "Found INA219 Battery");
+    }
+    dev.addr = 0x41;
+    if (i2c_dev_probe(&dev, I2C_DEV_WRITE) == 0) {
+        ESP_LOGI(TAG, "Found INA219 Solar");
+    }
+    dev.addr = 0x76;
+    if (i2c_dev_probe(&dev, I2C_DEV_WRITE) == 0) {
+	ESP_ERROR_CHECK(bmp280_init_desc(&bmp280_dev, BMP280_I2C_ADDRESS_0, 0, CONFIG_I2C_MASTER_SDA, CONFIG_I2C_MASTER_SCL));
+	ESP_ERROR_CHECK(bmp280_init(&bmp280_dev, &bmp280_params));
+	ESP_LOGI(TAG, "Found BMP280 @ 0x76 id: 0x%02x", bmp280_dev.id);
+    }
+    dev.addr = 0x77;
+    if (i2c_dev_probe(&dev, I2C_DEV_WRITE) == 0) {
+        ESP_LOGI(TAG, "Found BMP280 @ 0x77");
+    }
+
+    /*
+     * Create FreeRTOS tasks
+     */
+    xSemaphoreBMP280 = xSemaphoreCreateMutex();
+
+    xTaskCreate(&task_bmp280,     "task_bmp280",      2560, NULL, 8, &xTaskBMP280);
+
+    /*
+     * Main application loop.
+     */
+    while (1) {
+	request_bmp280();
+        vTaskDelay(2000 / portTICK_PERIOD_MS);
+    }
+    // Not reached.
 }

mercurial