123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130 |
- #include "storage.h"
- #include <EEPROM.h>
- #define SSID_LENGTH 64
- #define PASSWORD_LENGTH 64
- #define HOSTNAME_LENGTH 32
- struct Config {
- // WIFI
- char SSID[SSID_LENGTH];
- char WifiPassword[PASSWORD_LENGTH];
- char Hostname[HOSTNAME_LENGTH];
- char OTAPassword[PASSWORD_LENGTH];
- } currentConfig;
- const size_t ConfigLength = sizeof(currentConfig);
- void ReadConfig() {
- char *c = (char *)(¤tConfig);
- for (int i=0; i<ConfigLength;i++) {
- c[i] = EEPROM.read(i);
- if (c[i] == (char)255)
- c[i] = 0;
- }
- // Pad all strings to be null terminated
- currentConfig.SSID[SSID_LENGTH-1] = 0x00;
- currentConfig.WifiPassword[PASSWORD_LENGTH-1] = 0x00;
- currentConfig.OTAPassword[PASSWORD_LENGTH-1] = 0x00;
- currentConfig.Hostname[HOSTNAME_LENGTH-1] = 0x00;
- }
- void SaveConfig() {
- currentConfig.SSID[SSID_LENGTH-1] = 0x00;
- currentConfig.WifiPassword[PASSWORD_LENGTH-1] = 0x00;
- currentConfig.OTAPassword[PASSWORD_LENGTH-1] = 0x00;
- currentConfig.Hostname[HOSTNAME_LENGTH-1] = 0x00;
- char *c = (char *)(¤tConfig);
- for (int i=0; i<ConfigLength;i++) {
- EEPROM.write(i, c[i]);
- }
- EEPROM.commit();
- }
- String GetWifiSSID() {
- return String(currentConfig.SSID);
- }
- String GetWifiPassword() {
- return String(currentConfig.WifiPassword);
- }
- String GetOTAPassword() {
- return String(currentConfig.OTAPassword);
- }
- String GetHostname() {
- return String(currentConfig.Hostname);
- }
- void SaveWifiSSID(String ssid) {
- int maxLen = SSID_LENGTH-1;
- if (ssid.length() < maxLen) {
- maxLen = ssid.length();
- }
- for (int i = 0; i < SSID_LENGTH; i++) {
- if (i < maxLen) {
- currentConfig.SSID[i] = ssid[i];
- } else {
- currentConfig.SSID[i] = 0x00;
- }
- }
- SaveConfig();
- }
- void SaveWifiPassword(String pass) {
- int maxLen = PASSWORD_LENGTH-1;
- if (pass.length() < maxLen) {
- maxLen = pass.length();
- }
- for (int i = 0; i < PASSWORD_LENGTH; i++) {
- if (i < maxLen) {
- currentConfig.WifiPassword[i] = pass[i];
- } else {
- currentConfig.WifiPassword[i] = 0x00;
- }
- }
- SaveConfig();
- }
- void SaveOTAPassword(String pass) {
- int maxLen = PASSWORD_LENGTH-1;
- if (pass.length() < maxLen) {
- maxLen = pass.length();
- }
- for (int i = 0; i < PASSWORD_LENGTH; i++) {
- if (i < maxLen) {
- currentConfig.OTAPassword[i] = pass[i];
- } else {
- currentConfig.OTAPassword[i] = 0x00;
- }
- }
- SaveConfig();
- }
- void SaveHostname(String hostname) {
- int maxLen = HOSTNAME_LENGTH-1;
- if (hostname.length() < maxLen) {
- maxLen = hostname.length();
- }
- for (int i = 0; i < HOSTNAME_LENGTH; i++) {
- if (i < maxLen) {
- currentConfig.Hostname[i] = hostname[i];
- } else {
- currentConfig.Hostname[i] = 0x00;
- }
- }
- SaveConfig();
- }
- void InitStorage() {
- EEPROM.begin(ConfigLength);
- #if 1
- SaveWifiSSID("Hyperion-2");
- SaveWifiPassword("eUrPp7xtbexWm4TEu7nDtGLRcGP9hvYo");
- SaveHostname("max80");
- SaveOTAPassword("max80");
- #endif
- ReadConfig();
- }
|