main/config.c

Wed, 04 Oct 2023 11:28:49 +0200

author
Michiel Broek <mbroek@mbse.eu>
date
Wed, 04 Oct 2023 11:28:49 +0200
changeset 80
715785443a95
parent 77
15dc572a7fcb
permissions
-rw-r--r--

Version 0.3.1. Remove obsolete files from spiffs filesystem. Removed obsolete wifi stations.conf file and functions. Removed obsolete user screens.

/**
 * @file config.c
 * @brief The 'co2meter' configuration data. These are stored in the 
 *        spiffs filesystem in a flash partition.
 */

#include "config.h"

static const char *TAG = "config";

unit_t				units[3];                       ///< Pressure test units
SemaphoreHandle_t		xSemaphoreUnits = NULL;		///< Semaphore Units records
//wifiStation_t			wifiStation;



void write_units() {
    uint8_t     *dst = (uint8_t *)&units;
    FILE        *f = fopen("/spiffs/units.conf", "r+");

    if (f == NULL) {
        ESP_LOGE(TAG, "write /spiffs/units.conf failed");
        return;
    }
    size_t bytes = fwrite(dst, 1, sizeof(units), f);
    fclose(f);
    if (bytes != sizeof(units)) {
        ESP_LOGE(TAG, "/spiffs/units.conf written %d/%d bytes", bytes, sizeof(units));
    } else {
        ESP_LOGD(TAG, "/spiffs/units.conf written %d bytes", bytes);
    }
}



void read_units() {
    uint8_t     *dst = (uint8_t *)&units;
    uint8_t     mac_addr[8] = {0};
    size_t	bytes;
    FILE        *f = fopen("/spiffs/units.conf", "r");

    if (f == NULL) {
        // No units yet, create them.
	ESP_LOGE(TAG, "/spiffs/units.conf not found, create new");
	goto u_error;
    } else {
        bytes = fread(dst, 1, sizeof(units), f);
        fclose(f);
	if (bytes != sizeof(units)) {
	    ESP_LOGE(TAG, "/spiffs/units.conf read %d of %d bytes", bytes, sizeof(units));
	    goto u_error;
	}
        ESP_LOGI(TAG, "/spiffs/units.conf read %d bytes", bytes);
	for (int i = 0; i < 3; i++)
	   ESP_LOGI(TAG, "%d %s %d %4lu %3lu", i, units[i].alias, units[i].pressure_channel, units[i].pressure_voltage, units[i].pressure_zero);
    }
    return;

u_error:
    esp_efuse_mac_get_default(mac_addr);
    for (int i = 0; i < 3; i++) {
        memset(&units[i], 0, sizeof(unit_t));
        sprintf(units[i].uuid, "c0ffeeee-dead-beef-caf%d-%02x%02x%02x%02x%02x%02x", i & 3,
                        mac_addr[0], mac_addr[1], mac_addr[2], mac_addr[3], mac_addr[4], mac_addr[5]);
        sprintf(units[i].alias, "unit%d", (i + 1) & 3);
        units[i].pressure_zero = 110;
    }
    f = fopen("/spiffs/units.conf", "w+");
    bytes = fwrite(dst, 1, sizeof(units), f);
    fclose(f);
    if (bytes != sizeof(units)) {
        ESP_LOGE(TAG, "/spiffs/units.conf written %d/%d bytes", bytes, sizeof(units));
    } else {
        ESP_LOGI(TAG, "/spiffs/units.conf written %d bytes", bytes);
    }
}

mercurial