diff --git a/include/config.h b/include/config.h new file mode 100644 index 0000000..89ab5fc --- /dev/null +++ b/include/config.h @@ -0,0 +1,30 @@ +#include +#include + +#define EEPROM_SIZE 64 + +class Config { +public: + + typedef struct { + char wifiSSID[16]; + char wifiPass[16]; + } Data; + + Config() {}; + + void init(); + + void load(); + + void save(); + void save(Data&); + + void setSSID(String); + void setWifiPass(String); + + const Data& data(); + +private: + Data _data; +}; \ No newline at end of file diff --git a/src/config.cpp b/src/config.cpp new file mode 100644 index 0000000..48e0fc4 --- /dev/null +++ b/src/config.cpp @@ -0,0 +1,48 @@ +#include "config.h" + +void Config::init() +{ + EEPROM.begin(EEPROM_SIZE); +} + +void Config::setSSID(String ssid) +{ + strcpy(_data.wifiSSID, ssid.c_str()); +}; + +void Config::setWifiPass(String pass) +{ + strcpy(_data.wifiPass, pass.c_str()); +}; + +void Config::load() +{ + byte* pBuff = (byte*)(const void*)&_data; + for (size_t i = 0; i < sizeof(_data); ++i) + { + *pBuff++ = EEPROM.read(i); + } + Serial.println("EEPROM Loaded"); +}; + +void Config::save() +{ + const byte* pBuff = (const byte*)(const void*)&_data; + for (size_t i = 0; i < sizeof(_data); ++i) + { + EEPROM.write(i, *pBuff++); + } + EEPROM.commit(); + Serial.println("EEPROM Saved"); +}; + +void Config::save(Config::Data& data) +{ + _data = data; + save(); +} + +const Config::Data& Config::data() +{ + return _data; +} \ No newline at end of file diff --git a/src/main.cpp b/src/main.cpp index 0d7c505..935e8ef 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -1,11 +1,13 @@ #include #include "body.h" +#include "config.h" Body body = Body::instance(); +Config config; + void servoTest() { -// Drive each PWM in a 'wave' for (uint8_t legnum = 0; legnum < body.legs.size(); legnum++) { body.legs[legnum].setPos(Leg::Hipp, 90); @@ -17,19 +19,30 @@ void setup() { Serial.begin(9600); body.init(); + config.init(); delay(250); servoTest(); + config.load(); + Serial.printf("SSID: %s\n", config.data().wifiSSID); + Serial.printf("pass: %s\n", config.data().wifiPass); + + // Only to save as a test + /* + config.setSSID("testSSID"); + config.setWifiPass("testPass"); + config.save(); + */ } void loop() { - Serial.println("Hejsan"); + Serial.print("."); sleep(1); static uint8_t d = 0; - if (d < 10) + if (d < 2) { for (long angle = 0; angle < 180*5; angle++) {