EEPROM configuration

This commit is contained in:
Philip Johansson 2020-04-04 16:10:27 +02:00
parent f6e543ebb2
commit e48cbc986a
3 changed files with 94 additions and 3 deletions

30
include/config.h Normal file
View File

@ -0,0 +1,30 @@
#include <Arduino.h>
#include <EEPROM.h>
#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;
};

48
src/config.cpp Normal file
View File

@ -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;
}

View File

@ -1,11 +1,13 @@
#include <Arduino.h>
#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++)
{