barback32/main/main.c
Morgan 'ARR\!' Allen f81cb38f5a baseline CONFIGULATOR
2024-12-05 19:49:54 -08:00

77 lines
2.1 KiB
C

#include <stdio.h>
#include <string.h>
#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);
}
}