You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
126 lines
3.5 KiB
126 lines
3.5 KiB
2 years ago
|
/**
|
||
|
* TODO file description
|
||
|
*/
|
||
|
|
||
|
#include <esp_err.h>
|
||
|
#include <nvs.h>
|
||
|
#include <esp_log.h>
|
||
|
#include <string.h>
|
||
|
#include <lwip/ip4_addr.h>
|
||
|
#include <nvs_flash.h>
|
||
|
#include "nvsconfig.h"
|
||
|
|
||
|
#define TAG_CONFIG "config"
|
||
|
|
||
|
void initialize_nvs()
|
||
|
{
|
||
|
esp_err_t rv;
|
||
|
nvs_handle_t hnvs;
|
||
|
|
||
|
char tmps[128];
|
||
|
size_t len;
|
||
|
uint8_t u8val;
|
||
|
|
||
|
|
||
|
esp_err_t err = nvs_flash_init();
|
||
|
if (err == ESP_ERR_NVS_NO_FREE_PAGES) {
|
||
|
ESP_ERROR_CHECK( nvs_flash_erase() );
|
||
|
err = nvs_flash_init();
|
||
|
}
|
||
|
ESP_ERROR_CHECK(err);
|
||
|
|
||
|
|
||
|
|
||
|
/* Wifi namespace */
|
||
|
|
||
|
ESP_ERROR_CHECK( nvs_open("wifi", NVS_READWRITE, &hnvs) );
|
||
|
|
||
|
u8val = 99;
|
||
|
rv = nvs_get_u8(hnvs, "use_dhcpc", &u8val);
|
||
|
if (rv != ESP_OK || (u8val != 0 && u8val != 1)) {
|
||
|
ESP_LOGW(TAG_CONFIG, "Invalid dhcp option - set to default");
|
||
|
u8val = 1;
|
||
|
nvs_set_u8(hnvs, "use_dhcpc", u8val);
|
||
|
}
|
||
|
ESP_LOGI(TAG_CONFIG, "wifi.use_dhcpc = %d", u8val);
|
||
|
|
||
|
len = 16;
|
||
|
tmps[0] = 0;
|
||
|
rv = nvs_get_str(hnvs, "static_ip", tmps, &len);
|
||
|
if (rv != ESP_OK || IPADDR_NONE == ipaddr_addr(tmps)) {
|
||
|
strcpy(tmps, "192.168.56.2");
|
||
|
ESP_LOGW(TAG_CONFIG, "Invalid static ip - set to default");
|
||
|
ESP_ERROR_CHECK(nvs_set_str(hnvs, "static_ip", tmps));
|
||
|
}
|
||
|
ESP_LOGI(TAG_CONFIG, "wifi.static_ip = %s", tmps);
|
||
|
|
||
|
len = 16;
|
||
|
tmps[0] = 0;
|
||
|
rv = nvs_get_str(hnvs, "static_gw", tmps, &len);
|
||
|
if (rv != ESP_OK || IPADDR_NONE == ipaddr_addr(tmps)) {
|
||
|
strcpy(tmps, "192.168.0.1");
|
||
|
ESP_LOGW(TAG_CONFIG, "Invalid static gw - set to default");
|
||
|
ESP_ERROR_CHECK(nvs_set_str(hnvs, "static_gw", tmps));
|
||
|
}
|
||
|
ESP_LOGI(TAG_CONFIG, "wifi.static_gw = %s", tmps);
|
||
|
|
||
|
len = 16;
|
||
|
tmps[0] = 0;
|
||
|
rv = nvs_get_str(hnvs, "static_mask", tmps, &len);
|
||
|
if (rv != ESP_OK || IPADDR_NONE == ipaddr_addr(tmps)) {
|
||
|
strcpy(tmps, "255.255.255.0");
|
||
|
ESP_LOGW(TAG_CONFIG, "Invalid static mask - set to default");
|
||
|
ESP_ERROR_CHECK(nvs_set_str(hnvs, "static_mask", tmps));
|
||
|
}
|
||
|
ESP_LOGI(TAG_CONFIG, "wifi.static_mask = %s", tmps);
|
||
|
|
||
|
len = 16;
|
||
|
tmps[0] = 0;
|
||
|
rv = nvs_get_str(hnvs, "static_dns1", tmps, &len);
|
||
|
if (rv != ESP_OK || IPADDR_NONE == ipaddr_addr(tmps)) {
|
||
|
strcpy(tmps, "8.8.8.8");
|
||
|
ESP_LOGW(TAG_CONFIG, "Invalid static DNS1 - set to default");
|
||
|
ESP_ERROR_CHECK(nvs_set_str(hnvs, "static_dns1", tmps));
|
||
|
}
|
||
|
ESP_LOGI(TAG_CONFIG, "wifi.static_dns1 = %s", tmps);
|
||
|
|
||
|
len = 16;
|
||
|
tmps[0] = 0;
|
||
|
rv = nvs_get_str(hnvs, "static_dns2", tmps, &len);
|
||
|
if (rv != ESP_OK) {
|
||
|
strcpy(tmps, "");
|
||
|
ESP_LOGW(TAG_CONFIG, "Invalid static DNS2 - set to empty");
|
||
|
ESP_ERROR_CHECK(nvs_set_str(hnvs, "static_dns2", tmps));
|
||
|
}
|
||
|
ESP_LOGI(TAG_CONFIG, "wifi.static_dns2 = %s", tmps);
|
||
|
|
||
|
nvs_close(hnvs);
|
||
|
|
||
|
|
||
|
/* MQTT namespace */
|
||
|
|
||
|
ESP_ERROR_CHECK( nvs_open("mqtt", NVS_READWRITE, &hnvs) );
|
||
|
|
||
|
len = 128;
|
||
|
tmps[0] = 0;
|
||
|
rv = nvs_get_str(hnvs, "broker", tmps, &len);
|
||
|
if (rv != ESP_OK) {
|
||
|
strcpy(tmps, "");
|
||
|
ESP_LOGW(TAG_CONFIG, "Invalid broker addr - set to empty");
|
||
|
ESP_ERROR_CHECK(nvs_set_str(hnvs, "broker", tmps));
|
||
|
}
|
||
|
ESP_LOGI(TAG_CONFIG, "mqtt.broker = %s", tmps);
|
||
|
|
||
|
len = 128;
|
||
|
tmps[0] = 0;
|
||
|
rv = nvs_get_str(hnvs, "topic", tmps, &len);
|
||
|
if (rv != ESP_OK || tmps[0] == 0) {
|
||
|
strcpy(tmps, "/meteo/");
|
||
|
ESP_LOGW(TAG_CONFIG, "Invalid mqtt topic - set to default");
|
||
|
ESP_ERROR_CHECK(nvs_set_str(hnvs, "topic", tmps)); // default
|
||
|
}
|
||
|
ESP_LOGI(TAG_CONFIG, "mqtt.topic = %s", tmps);
|
||
|
|
||
|
nvs_close(hnvs);
|
||
|
}
|