17 #define State_GoSleep 7 |
17 #define State_GoSleep 7 |
18 |
18 |
19 |
19 |
20 static TaskHandle_t xTaskBMP280 = NULL; |
20 static TaskHandle_t xTaskBMP280 = NULL; |
21 static TaskHandle_t xTaskINA219 = NULL; |
21 static TaskHandle_t xTaskINA219 = NULL; |
|
22 static TaskHandle_t xTaskAPDS9930 = NULL; |
22 static TaskHandle_t xTaskMQTT = NULL; |
23 static TaskHandle_t xTaskMQTT = NULL; |
23 static TaskHandle_t xTaskWifi = NULL; |
24 static TaskHandle_t xTaskWifi = NULL; |
24 static TaskHandle_t xTaskOUT = NULL; |
25 static TaskHandle_t xTaskOUT = NULL; |
25 |
26 |
26 #define MAX_LOOPS 32 |
27 #define MAX_LOOPS 32 |
53 extern bmp280_t bmp280_dev; |
54 extern bmp280_t bmp280_dev; |
54 extern SemaphoreHandle_t xSemaphoreINA219; |
55 extern SemaphoreHandle_t xSemaphoreINA219; |
55 extern ina219_t ina219_b_dev; |
56 extern ina219_t ina219_b_dev; |
56 extern ina219_t ina219_s_dev; |
57 extern ina219_t ina219_s_dev; |
57 extern INA219_State *ina219_state; |
58 extern INA219_State *ina219_state; |
|
59 extern SemaphoreHandle_t xSemaphoreAPDS9930; |
|
60 extern apds9930_t apds9930_dev; |
|
61 extern APDS9930_State *apds9930_state; |
58 extern SemaphoreHandle_t xSemaphoreWiFi; |
62 extern SemaphoreHandle_t xSemaphoreWiFi; |
59 extern WIFI_State *wifi_state; ///< WiFi state |
63 extern WIFI_State *wifi_state; ///< WiFi state |
60 |
64 |
61 uint32_t Alarm = 0; |
65 uint32_t Alarm = 0; |
62 |
66 |
343 |
357 |
344 bmp280_init_default_params(&bmp280_params); |
358 bmp280_init_default_params(&bmp280_params); |
345 memset(&bmp280_dev, 0, sizeof(bmp280_t)); |
359 memset(&bmp280_dev, 0, sizeof(bmp280_t)); |
346 memset(&ina219_b_dev, 0, sizeof(ina219_t)); |
360 memset(&ina219_b_dev, 0, sizeof(ina219_t)); |
347 memset(&ina219_s_dev, 0, sizeof(ina219_t)); |
361 memset(&ina219_s_dev, 0, sizeof(ina219_t)); |
|
362 memset(&apds9930_dev, 0, sizeof(i2c_dev_t)); |
348 |
363 |
349 i2c_dev_t dev = { 0 }; |
364 i2c_dev_t dev = { 0 }; |
350 dev.cfg.sda_io_num = CONFIG_I2C_MASTER_SDA; |
365 dev.cfg.sda_io_num = CONFIG_I2C_MASTER_SDA; |
351 dev.cfg.scl_io_num = CONFIG_I2C_MASTER_SCL; |
366 dev.cfg.scl_io_num = CONFIG_I2C_MASTER_SCL; |
352 dev.cfg.master.clk_speed = 1000000; |
367 dev.cfg.master.clk_speed = 1000000; |
353 |
368 |
354 dev.addr = 0x39; |
369 dev.addr = 0x39; |
355 if (i2c_dev_probe(&dev, I2C_DEV_WRITE) == 0) { |
370 if (i2c_dev_probe(&dev, I2C_DEV_WRITE) == 0) { |
356 ESP_LOGI(TAG, "Found ADPS-9930"); |
371 ESP_LOGI(TAG, "Found ADPS-9930"); |
|
372 ESP_ERROR_CHECK(apds9930_init_desc(&apds9930_dev, 0x39, 0, CONFIG_I2C_MASTER_SDA, CONFIG_I2C_MASTER_SCL)); |
|
373 ESP_ERROR_CHECK(apds9930_init(&apds9930_dev)); |
|
374 ESP_LOGI(TAG, "Found APDS-9930 id: 0x%02x", apds9930_dev.id); |
357 } |
375 } |
358 dev.addr = 0x40; |
376 dev.addr = 0x40; |
359 if (i2c_dev_probe(&dev, I2C_DEV_WRITE) == 0) { |
377 if (i2c_dev_probe(&dev, I2C_DEV_WRITE) == 0) { |
360 ESP_ERROR_CHECK(ina219_init_desc(&ina219_b_dev, 0x40, 0, CONFIG_I2C_MASTER_SDA, CONFIG_I2C_MASTER_SCL)); |
378 ESP_ERROR_CHECK(ina219_init_desc(&ina219_b_dev, 0x40, 0, CONFIG_I2C_MASTER_SDA, CONFIG_I2C_MASTER_SCL)); |
361 ESP_ERROR_CHECK(ina219_init(&ina219_b_dev)); |
379 ESP_ERROR_CHECK(ina219_init(&ina219_b_dev)); |
384 /* |
402 /* |
385 * Create FreeRTOS tasks |
403 * Create FreeRTOS tasks |
386 */ |
404 */ |
387 xSemaphoreBMP280 = xSemaphoreCreateMutex(); |
405 xSemaphoreBMP280 = xSemaphoreCreateMutex(); |
388 xSemaphoreINA219 = xSemaphoreCreateMutex(); |
406 xSemaphoreINA219 = xSemaphoreCreateMutex(); |
389 |
407 xSemaphoreAPDS9930 = xSemaphoreCreateMutex(); |
390 |
408 |
391 xTaskCreate(&task_bmp280, "task_bmp280", 2560, NULL, 8, &xTaskBMP280); |
409 |
392 xTaskCreate(&task_ina219, "task_ina219", 2560, NULL, 8, &xTaskINA219); |
410 xTaskCreate(&task_bmp280, "task_bmp280", 2560, NULL, 8, &xTaskBMP280); |
393 xTaskCreate(&task_out, "task_out", 2560, NULL, 9, &xTaskOUT); |
411 xTaskCreate(&task_ina219, "task_ina219", 2560, NULL, 8, &xTaskINA219); |
|
412 xTaskCreate(&task_apds9930, "task_apds9930", 2560, NULL, 8, &xTaskAPDS9930); |
|
413 xTaskCreate(&task_out, "task_out", 2560, NULL, 9, &xTaskOUT); |
394 // esp_log_level_set("MQTT_CLIENT", ESP_LOG_ERROR); |
414 // esp_log_level_set("MQTT_CLIENT", ESP_LOG_ERROR); |
395 xTaskCreate(&task_mqtt, "task_mqtt", 4096, NULL, 5, &xTaskMQTT); |
415 xTaskCreate(&task_mqtt, "task_mqtt", 4096, NULL, 5, &xTaskMQTT); |
396 // esp_log_level_set("wifi", ESP_LOG_ERROR); |
416 // esp_log_level_set("wifi", ESP_LOG_ERROR); |
397 xTaskCreate(&task_wifi, "task_wifi", 4096, NULL, 3, &xTaskWifi); |
417 xTaskCreate(&task_wifi, "task_wifi", 4096, NULL, 3, &xTaskWifi); |
398 |
418 |
399 vTaskDelay(10 / portTICK_PERIOD_MS); |
419 vTaskDelay(10 / portTICK_PERIOD_MS); |
400 |
420 |
401 /* |
421 /* |
402 * Main application loop. |
422 * Main application loop. |