feat: implement Wi-Fi provisioning and persistent configuration
This commit is contained in:
@@ -0,0 +1,45 @@
|
||||
#include <assert.h>
|
||||
#include <stdio.h>
|
||||
#include <string.h>
|
||||
|
||||
#include "maze32_config_store.h"
|
||||
#include "nvs.h"
|
||||
#include "nvs_flash.h"
|
||||
|
||||
static maze32_wifi_credentials_t credentials(const char *ssid, const char *password)
|
||||
{
|
||||
maze32_wifi_credentials_t value = {0};
|
||||
memcpy(value.ssid, ssid, strlen(ssid) + 1U);
|
||||
memcpy(value.password, password, strlen(password) + 1U);
|
||||
return value;
|
||||
}
|
||||
|
||||
int main(void)
|
||||
{
|
||||
assert(maze32_config_store_init() == ESP_OK);
|
||||
maze32_wifi_credentials_t loaded = {0};
|
||||
assert(maze32_config_store_load(&loaded) == ESP_ERR_NOT_FOUND);
|
||||
|
||||
maze32_wifi_credentials_t saved = credentials("PersistentNetwork", "safe-passphrase");
|
||||
assert(maze32_config_store_save(&saved) == ESP_OK);
|
||||
assert(nvs_flash_deinit() == ESP_OK);
|
||||
assert(maze32_config_store_init() == ESP_OK);
|
||||
assert(maze32_config_store_load(&loaded) == ESP_OK);
|
||||
assert(strcmp(loaded.ssid, saved.ssid) == 0);
|
||||
assert(strcmp(loaded.password, saved.password) == 0);
|
||||
|
||||
maze32_wifi_credentials_t invalid = credentials("PersistentNetwork", "short");
|
||||
assert(maze32_config_store_save(&invalid) == ESP_ERR_INVALID_ARG);
|
||||
memset(&loaded, 0, sizeof(loaded));
|
||||
assert(maze32_config_store_load(&loaded) == ESP_OK);
|
||||
assert(strcmp(loaded.password, saved.password) == 0);
|
||||
|
||||
fake_nvs_set_schema(MAZE32_WIFI_CONFIG_SCHEMA_VERSION + 1U);
|
||||
assert(maze32_config_store_load(&loaded) == ESP_ERR_INVALID_VERSION);
|
||||
fake_nvs_set_schema(MAZE32_WIFI_CONFIG_SCHEMA_VERSION);
|
||||
|
||||
assert(maze32_config_store_clear() == ESP_OK);
|
||||
assert(maze32_config_store_load(&loaded) == ESP_ERR_NOT_FOUND);
|
||||
puts("configuration NVS tests: PASS");
|
||||
return 0;
|
||||
}
|
||||
Reference in New Issue
Block a user