Mapuino_Hardware/src/user_data.cpp

86 lines
1.6 KiB
C++

#include "user_data.h"
#include <EEPROM.h>
#define MAX_USER_DATA_SIZE 0x200
#define VALIDATION_MAGIC 0xaa
#define GENERAL_FEILD_SIZE 0x20
#define VALIDATION_OFFSET 0x00
#define SSID_OFFSET 0x20
#define PASSWORD_OFFSET 0x40
#define UUID_OFFSET 0x60
UserData::UserData()
{
EEPROM.begin(MAX_USER_DATA_SIZE);
}
String UserData::ReadEepromString(uint32_t offset)
{
String result;
char readByte;
for (uint32_t addr = offset; (readByte = EEPROM.read(addr)) != '\0'; addr++) {
result += readByte;
}
return result;
}
void UserData::WriteEepromString(String data, uint32_t offset)
{
for (uint32_t i = 0; i < data.length(); i++) {
EEPROM.write(i + offset, data[i]);
}
EEPROM.write(data.length() + offset, 0x00);
}
bool UserData::UserDataValid()
{
byte validation = EEPROM.read(VALIDATION_OFFSET);
return validation == VALIDATION_MAGIC;
}
void UserData::ConfirmData()
{
EEPROM.write(VALIDATION_OFFSET, VALIDATION_MAGIC);
EEPROM.commit();
}
void UserData::EraseData()
{
EEPROM.write(VALIDATION_OFFSET, 0x00);
EEPROM.commit();
}
String UserData::GetWifiSsid()
{
return ReadEepromString(SSID_OFFSET);
}
void UserData::SetWifiSsid(String ssid)
{
return WriteEepromString(ssid, SSID_OFFSET);
}
String UserData::GetWifiPasswd()
{
return ReadEepromString(PASSWORD_OFFSET);
}
void UserData::SetWifiPasswd(String password)
{
return WriteEepromString(password, PASSWORD_OFFSET);
}
String UserData::GetDeviceUuid()
{
return ReadEepromString(UUID_OFFSET);
}
void UserData::SetDeviceUuid(String uuid)
{
return WriteEepromString(uuid, UUID_OFFSET);
}