#include #include #include "freertos/FreeRTOS.h" #include "freertos/task.h" #include "freertos/queue.h" #include "driver/uart.h" #include "esp_log.h" #include "esp_mac.h" #include "esp_debug_helpers.h" #include "nvs_flash.h" #include "esp_vfs_dev.h" #include "configulator.h" #include "main.h" #include "console.h" #include "ble.h" #include "user_button.h" #include "pumps.h" static const char *TAG = "BARBACK"; uint8_t mac[6]; nvs_handle_t config_handle = {}; void app_main(void) { esp_err_t err = nvs_flash_init(); if (err == ESP_ERR_NVS_NO_FREE_PAGES || err == ESP_ERR_NVS_NEW_VERSION_FOUND) { ESP_ERROR_CHECK(nvs_flash_erase()); err = nvs_flash_init(); } ESP_ERROR_CHECK( err ); err = nvs_open("config", NVS_READWRITE, &config_handle); if (err != ESP_OK) { printf("Error (%s) opening NVS handle!\n", esp_err_to_name(err)); } else { ESP_LOGI(TAG, "config_handle: %d", (int)config_handle); } esp_efuse_mac_get_default((uint8_t*)&mac); ESP_LOGI(TAG, "MAC: [%02X:%02X:%02X:%02X:%02X:%02X]", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]); char *name = malloc(strlen(TAG) + 4); sprintf(name, "%s-%02X", TAG, mac[5]); uint8_t tank_levels[] = { 100, 100, 100, 100 }; cfglr_handle_t cfglr_handle = { .namespace = "configulator", .backend = CFGLR_BACKEND_NVS(), .elements = { CFGLR_ELEMENT_U8("armed", 1, CFGLR_SIGNALER_IDF_EVENT()), CFGLR_ELEMENT_U8("monitor", 0, CFGLR_SIGNALER_IDF_EVENT()), CFGLR_ELEMENT_U8("pour_button", 21, CFGLR_SIGNALER_IDF_EVENT()), CFGLR_ELEMENT_STR("device_name", 32, name, CFGLR_SIGNALER_IDF_EVENT()), CFGLR_ELEMENT_BIN("tank_levels", 4, tank_levels, 4, CFGLR_SIGNALER_IDF_EVENT()), CFGLR_ELEMENT_BIN("pump_pins", 4, pump_gpio_map, 4, CFGLR_SIGNALER_IDF_EVENT()), { NULL }, }, }; uint8_t ret = cfglr_init(&cfglr_handle); vTaskDelay(1000 / portTICK_PERIOD_MS); user_button_init(); pumps_init(); ble_init(name); xTaskCreate(console_task, "console", 4048, NULL, tskIDLE_PRIORITY + 3, NULL); while(1) { vTaskDelay(1000 / portTICK_PERIOD_MS); } }