add wifi_cfg NVS credential storage
This commit is contained in:
parent
9c7a656feb
commit
fc869309dc
|
|
@ -0,0 +1,118 @@
|
||||||
|
#include "wifi_cfg.h"
|
||||||
|
#include <string.h>
|
||||||
|
#include <stdio.h>
|
||||||
|
#include "nvs_flash.h"
|
||||||
|
#include "nvs.h"
|
||||||
|
|
||||||
|
#define NVS_NS "wifi_prov"
|
||||||
|
#define KEY_STA_SSID "sta_ssid"
|
||||||
|
#define KEY_STA_PASS "sta_pass"
|
||||||
|
#define KEY_AP_SSID "ap_ssid"
|
||||||
|
#define KEY_AP_PASS "ap_pass"
|
||||||
|
|
||||||
|
#define DEFAULT_AP_SSID "EIS4"
|
||||||
|
#define DEFAULT_AP_PASS "eis4data"
|
||||||
|
|
||||||
|
static char sta_ssid[WIFI_CFG_SSID_MAX];
|
||||||
|
static char sta_pass[WIFI_CFG_PASS_MAX];
|
||||||
|
static char ap_ssid[WIFI_CFG_SSID_MAX];
|
||||||
|
static char ap_pass[WIFI_CFG_PASS_MAX];
|
||||||
|
|
||||||
|
esp_err_t wifi_cfg_init(void)
|
||||||
|
{
|
||||||
|
memset(sta_ssid, 0, sizeof(sta_ssid));
|
||||||
|
memset(sta_pass, 0, sizeof(sta_pass));
|
||||||
|
strncpy(ap_ssid, DEFAULT_AP_SSID, sizeof(ap_ssid) - 1);
|
||||||
|
strncpy(ap_pass, DEFAULT_AP_PASS, sizeof(ap_pass) - 1);
|
||||||
|
|
||||||
|
nvs_handle_t h;
|
||||||
|
esp_err_t err = nvs_open(NVS_NS, NVS_READONLY, &h);
|
||||||
|
if (err == ESP_ERR_NVS_NOT_FOUND)
|
||||||
|
return ESP_OK;
|
||||||
|
if (err != ESP_OK)
|
||||||
|
return err;
|
||||||
|
|
||||||
|
size_t len;
|
||||||
|
|
||||||
|
len = sizeof(sta_ssid);
|
||||||
|
nvs_get_str(h, KEY_STA_SSID, sta_ssid, &len);
|
||||||
|
len = sizeof(sta_pass);
|
||||||
|
nvs_get_str(h, KEY_STA_PASS, sta_pass, &len);
|
||||||
|
|
||||||
|
len = sizeof(ap_ssid);
|
||||||
|
if (nvs_get_str(h, KEY_AP_SSID, ap_ssid, &len) != ESP_OK) {
|
||||||
|
strncpy(ap_ssid, DEFAULT_AP_SSID, sizeof(ap_ssid) - 1);
|
||||||
|
}
|
||||||
|
len = sizeof(ap_pass);
|
||||||
|
if (nvs_get_str(h, KEY_AP_PASS, ap_pass, &len) != ESP_OK) {
|
||||||
|
strncpy(ap_pass, DEFAULT_AP_PASS, sizeof(ap_pass) - 1);
|
||||||
|
}
|
||||||
|
|
||||||
|
nvs_close(h);
|
||||||
|
|
||||||
|
if (sta_ssid[0])
|
||||||
|
printf("WiFi cfg: STA \"%s\"\n", sta_ssid);
|
||||||
|
printf("WiFi cfg: AP \"%s\"\n", ap_ssid);
|
||||||
|
return ESP_OK;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool wifi_cfg_has_sta(void)
|
||||||
|
{
|
||||||
|
return sta_ssid[0] != '\0';
|
||||||
|
}
|
||||||
|
|
||||||
|
esp_err_t wifi_cfg_get_sta(char *ssid, size_t ssid_sz, char *pass, size_t pass_sz)
|
||||||
|
{
|
||||||
|
if (!sta_ssid[0])
|
||||||
|
return ESP_ERR_NOT_FOUND;
|
||||||
|
strncpy(ssid, sta_ssid, ssid_sz - 1);
|
||||||
|
ssid[ssid_sz - 1] = '\0';
|
||||||
|
strncpy(pass, sta_pass, pass_sz - 1);
|
||||||
|
pass[pass_sz - 1] = '\0';
|
||||||
|
return ESP_OK;
|
||||||
|
}
|
||||||
|
|
||||||
|
esp_err_t wifi_cfg_set_sta(const char *ssid, const char *pass)
|
||||||
|
{
|
||||||
|
nvs_handle_t h;
|
||||||
|
esp_err_t err = nvs_open(NVS_NS, NVS_READWRITE, &h);
|
||||||
|
if (err != ESP_OK) return err;
|
||||||
|
|
||||||
|
nvs_set_str(h, KEY_STA_SSID, ssid);
|
||||||
|
nvs_set_str(h, KEY_STA_PASS, pass);
|
||||||
|
nvs_commit(h);
|
||||||
|
nvs_close(h);
|
||||||
|
|
||||||
|
strncpy(sta_ssid, ssid, sizeof(sta_ssid) - 1);
|
||||||
|
sta_ssid[sizeof(sta_ssid) - 1] = '\0';
|
||||||
|
strncpy(sta_pass, pass, sizeof(sta_pass) - 1);
|
||||||
|
sta_pass[sizeof(sta_pass) - 1] = '\0';
|
||||||
|
return ESP_OK;
|
||||||
|
}
|
||||||
|
|
||||||
|
esp_err_t wifi_cfg_get_ap(char *ssid, size_t ssid_sz, char *pass, size_t pass_sz)
|
||||||
|
{
|
||||||
|
strncpy(ssid, ap_ssid, ssid_sz - 1);
|
||||||
|
ssid[ssid_sz - 1] = '\0';
|
||||||
|
strncpy(pass, ap_pass, pass_sz - 1);
|
||||||
|
pass[pass_sz - 1] = '\0';
|
||||||
|
return ESP_OK;
|
||||||
|
}
|
||||||
|
|
||||||
|
esp_err_t wifi_cfg_set_ap(const char *ssid, const char *pass)
|
||||||
|
{
|
||||||
|
nvs_handle_t h;
|
||||||
|
esp_err_t err = nvs_open(NVS_NS, NVS_READWRITE, &h);
|
||||||
|
if (err != ESP_OK) return err;
|
||||||
|
|
||||||
|
nvs_set_str(h, KEY_AP_SSID, ssid);
|
||||||
|
nvs_set_str(h, KEY_AP_PASS, pass);
|
||||||
|
nvs_commit(h);
|
||||||
|
nvs_close(h);
|
||||||
|
|
||||||
|
strncpy(ap_ssid, ssid, sizeof(ap_ssid) - 1);
|
||||||
|
ap_ssid[sizeof(ap_ssid) - 1] = '\0';
|
||||||
|
strncpy(ap_pass, pass, sizeof(ap_pass) - 1);
|
||||||
|
ap_pass[sizeof(ap_pass) - 1] = '\0';
|
||||||
|
return ESP_OK;
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,18 @@
|
||||||
|
#ifndef WIFI_CFG_H
|
||||||
|
#define WIFI_CFG_H
|
||||||
|
|
||||||
|
#include <stdbool.h>
|
||||||
|
#include <stddef.h>
|
||||||
|
#include "esp_err.h"
|
||||||
|
|
||||||
|
#define WIFI_CFG_SSID_MAX 33
|
||||||
|
#define WIFI_CFG_PASS_MAX 65
|
||||||
|
|
||||||
|
esp_err_t wifi_cfg_init(void);
|
||||||
|
bool wifi_cfg_has_sta(void);
|
||||||
|
esp_err_t wifi_cfg_get_sta(char *ssid, size_t ssid_sz, char *pass, size_t pass_sz);
|
||||||
|
esp_err_t wifi_cfg_set_sta(const char *ssid, const char *pass);
|
||||||
|
esp_err_t wifi_cfg_get_ap(char *ssid, size_t ssid_sz, char *pass, size_t pass_sz);
|
||||||
|
esp_err_t wifi_cfg_set_ap(const char *ssid, const char *pass);
|
||||||
|
|
||||||
|
#endif
|
||||||
Loading…
Reference in New Issue