/** * TODO file description */ #include #include #include #include #include #include #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); }