88 lines
2.2 KiB
C
88 lines
2.2 KiB
C
//
|
|
// Created by shinys on 25. 7. 10.
|
|
//
|
|
|
|
#include "nconfig.h"
|
|
|
|
#include "nvs_flash.h"
|
|
#include "esp_err.h"
|
|
|
|
static nvs_handle_t handle;
|
|
|
|
const static char *keys[NCONFIG_TYPE_MAX] = {
|
|
[WIFI_SSID] = "wifi_ssid",
|
|
[WIFI_PASSWORD] = "wifi_pw",
|
|
[WIFI_MODE] = "wifi_mode",
|
|
[AP_SSID] = "ap_ssid",
|
|
[AP_PASSWORD] = "ap_pw",
|
|
[NETIF_HOSTNAME] = "hostname",
|
|
[NETIF_IP] = "ip",
|
|
[NETIF_GATEWAY] = "gw",
|
|
[NETIF_SUBNET] = "sn",
|
|
[NETIF_DNS1] = "dns1",
|
|
[NETIF_DNS2] = "dns2",
|
|
[NETIF_TYPE] = "dhcp",
|
|
[UART_BAUD_RATE] = "baudrate",
|
|
};
|
|
|
|
struct default_value {
|
|
enum nconfig_type type;
|
|
const char *value;
|
|
};
|
|
|
|
struct default_value const default_values[] = {
|
|
{WIFI_SSID, "HK_BOB_24G"},
|
|
{WIFI_PASSWORD, ""},
|
|
{NETIF_TYPE, "dhcp"},
|
|
{NETIF_HOSTNAME, "powermate"},
|
|
{UART_BAUD_RATE, "1500000"},
|
|
{NETIF_DNS1, "8.8.8.8"},
|
|
{NETIF_DNS2, "8.8.4.4"},
|
|
{WIFI_MODE, "apsta"},
|
|
{AP_SSID, "odroid-pm"},
|
|
{AP_PASSWORD, "powermate"},
|
|
};
|
|
|
|
esp_err_t init_nconfig()
|
|
{
|
|
esp_err_t ret = nvs_open(NCONFIG_NVS_NAMESPACE, NVS_READWRITE, &handle);
|
|
if (ret != ESP_OK) return ret;
|
|
|
|
for (int i = 0; i < sizeof(default_values) / sizeof(default_values[0]); ++i) {
|
|
// check key is not exist or value is null
|
|
size_t len = 0;
|
|
nconfig_get_str_len(default_values[i].type, &len);
|
|
if (len <= 1) // nconfig_get_str_len return err or value is '\0'
|
|
{
|
|
if (nconfig_write(default_values[i].type, default_values[i].value) != ESP_OK) // if nconfig write fail, system panic
|
|
return ESP_FAIL;
|
|
}
|
|
}
|
|
|
|
return ESP_OK;
|
|
}
|
|
|
|
esp_err_t nconfig_write(enum nconfig_type type, const char* data)
|
|
{
|
|
return nvs_set_str(handle, keys[type], data);
|
|
}
|
|
|
|
esp_err_t nconfig_delete(enum nconfig_type type)
|
|
{
|
|
return nvs_erase_key(handle, keys[type]);
|
|
}
|
|
|
|
esp_err_t nconfig_get_str_len(enum nconfig_type type, size_t *len)
|
|
{
|
|
return nvs_get_str(handle, keys[type], NULL, len);
|
|
}
|
|
|
|
esp_err_t nconfig_read(enum nconfig_type type, char* data, size_t len)
|
|
{
|
|
return nvs_get_str(handle, keys[type], data, &len);
|
|
}
|
|
|
|
esp_err_t nconfig_read_bool(enum nconfig_type type, char* data, size_t len)
|
|
{
|
|
return nvs_get_str(handle, keys[type], data, &len);
|
|
} |