init: initial commit
This commit is contained in:
@@ -0,0 +1,98 @@
|
||||
#include "config_store.h"
|
||||
#include "esp_err.h"
|
||||
#include "nvs_flash.h"
|
||||
#include "nvs.h"
|
||||
#include "esp_log.h"
|
||||
#include <string.h>
|
||||
|
||||
#define NS "anchor_cfg"
|
||||
#define KEY_PROV "provisioned"
|
||||
#define KEY_HOST "mqtt_host"
|
||||
#define KEY_PORT "mqtt_port"
|
||||
|
||||
static const char *TAG = "config_store";
|
||||
|
||||
esp_err_t config_store_init(void)
|
||||
{
|
||||
esp_err_t err = nvs_flash_init();
|
||||
if (err == ESP_ERR_NVS_NO_FREE_PAGES || err == ESP_ERR_NVS_NEW_VERSION_FOUND) {
|
||||
ESP_LOGW(TAG, "NVS needs erase, erasing...");
|
||||
ESP_ERROR_CHECK(nvs_flash_erase());
|
||||
err = nvs_flash_init();
|
||||
}
|
||||
return err;
|
||||
}
|
||||
|
||||
bool config_store_is_provisioned(void)
|
||||
{
|
||||
nvs_handle_t h;
|
||||
if (nvs_open(NS, NVS_READONLY, &h) != ESP_OK) return false;
|
||||
uint8_t val = 0;
|
||||
nvs_get_u8(h, KEY_PROV, &val);
|
||||
nvs_close(h);
|
||||
return val == 1;
|
||||
}
|
||||
|
||||
esp_err_t config_store_set_provisioned(void)
|
||||
{
|
||||
nvs_handle_t h;
|
||||
esp_err_t err = nvs_open(NS, NVS_READWRITE, &h);
|
||||
if (err != ESP_OK) return err;
|
||||
err = nvs_set_u8(h, KEY_PROV, 1);
|
||||
if (err == ESP_OK) err = nvs_commit(h);
|
||||
nvs_close(h);
|
||||
return err;
|
||||
}
|
||||
|
||||
esp_err_t config_store_clear_provisioned(void)
|
||||
{
|
||||
nvs_handle_t h;
|
||||
esp_err_t err = nvs_open(NS, NVS_READWRITE, &h);
|
||||
if (err != ESP_OK) return err;
|
||||
nvs_erase_key(h, KEY_PROV);
|
||||
nvs_erase_key(h, KEY_HOST);
|
||||
nvs_erase_key(h, KEY_PORT);
|
||||
err = nvs_commit(h);
|
||||
nvs_close(h);
|
||||
return err;
|
||||
}
|
||||
|
||||
esp_err_t config_store_set_mqtt_override(const char *host, uint16_t port)
|
||||
{
|
||||
nvs_handle_t h;
|
||||
esp_err_t err = nvs_open(NS, NVS_READWRITE, &h);
|
||||
if (err != ESP_OK) return err;
|
||||
err = nvs_set_str(h, KEY_HOST, host);
|
||||
if (err == ESP_OK) err = nvs_set_u16(h, KEY_PORT, port);
|
||||
if (err == ESP_OK) err = nvs_commit(h);
|
||||
nvs_close(h);
|
||||
return err;
|
||||
}
|
||||
|
||||
esp_err_t config_store_get_mqtt_override(char host_out[MQTT_HOST_MAX_LEN], uint16_t *port_out)
|
||||
{
|
||||
nvs_handle_t h;
|
||||
esp_err_t err = nvs_open(NS, NVS_READONLY, &h);
|
||||
if (err != ESP_OK) return err;
|
||||
|
||||
size_t len = MQTT_HOST_MAX_LEN;
|
||||
err = nvs_get_str(h, KEY_HOST, host_out, &len);
|
||||
if (err == ESP_OK) {
|
||||
err = nvs_get_u16(h, KEY_PORT, port_out);
|
||||
}
|
||||
nvs_close(h);
|
||||
return err;
|
||||
}
|
||||
|
||||
esp_err_t config_store_get_mqtt_override_uri(char *uri_out, size_t uri_max_len)
|
||||
{
|
||||
char broker_host[MQTT_HOST_MAX_LEN] = {0};
|
||||
uint16_t broker_port;
|
||||
|
||||
bool resolved
|
||||
= (config_store_get_mqtt_override(broker_host, &broker_port) == ESP_OK);
|
||||
if(!resolved) return ESP_ERR_NVS_NOT_FOUND;
|
||||
|
||||
snprintf(uri_out, uri_max_len, "mqtt://%s:%u", broker_host, broker_port);
|
||||
return ESP_OK;
|
||||
}
|
||||
Reference in New Issue
Block a user