Topuino_Hardware/src/UserData.cpp

87 lines
1.7 KiB
C++
Raw Normal View History

2022-07-02 13:04:34 +08:00
#include "UserData.h"
2021-08-29 22:14:08 +08:00
#include <EEPROM.h>
#define MAX_USER_DATA_SIZE 0x200
2022-06-27 20:43:02 +08:00
#define WIFI_INFO_VALID_MAGIC 0xaa
2021-08-29 22:14:08 +08:00
2022-06-27 20:43:02 +08:00
#define WIFI_INFO_VALID_OFFSET 0x00
#define WIFI_SSID_VALID 0x20
#define WIFI_PASSWORD_OFFSET 0x40
2021-08-29 22:14:08 +08:00
2022-06-27 20:43:02 +08:00
#define RUN_MODE_OFFSET 0x60
2021-08-29 22:14:08 +08:00
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);
}
2022-06-27 20:43:02 +08:00
void UserData::EraseAllData()
2021-08-29 22:14:08 +08:00
{
2022-06-27 20:43:02 +08:00
EEPROM.write(WIFI_INFO_VALID_OFFSET, 0x00);
EEPROM.commit();
}
RunMode UserData::GetRunMode()
{
mode = EEPROM.read(RUN_MODE_OFFSET);
return (RunMode)mode;
2021-08-29 22:14:08 +08:00
}
2022-06-27 20:43:02 +08:00
void UserData::SetRunMode(RunMode mode)
2021-08-29 22:14:08 +08:00
{
2022-06-27 20:43:02 +08:00
EEPROM.write(RUN_MODE_OFFSET, (byte)mode);
2021-08-29 22:14:08 +08:00
EEPROM.commit();
}
2022-06-27 20:43:02 +08:00
bool UserData::WifiInfoValid()
{
byte validation = EEPROM.read(WIFI_INFO_VALID_OFFSET);
return validation == WIFI_INFO_VALID_MAGIC;
}
void UserData::ConfirmWifiData()
2021-08-29 22:14:08 +08:00
{
2022-06-27 20:43:02 +08:00
EEPROM.write(WIFI_INFO_VALID_OFFSET, WIFI_INFO_VALID_MAGIC);
2021-08-29 22:14:08 +08:00
EEPROM.commit();
}
String UserData::GetWifiSsid()
{
2022-06-27 20:43:02 +08:00
return ReadEepromString(WIFI_SSID_VALID);
2021-08-29 22:14:08 +08:00
}
void UserData::SetWifiSsid(String ssid)
{
2022-06-27 20:43:02 +08:00
return WriteEepromString(ssid, WIFI_SSID_VALID);
2021-08-29 22:14:08 +08:00
}
String UserData::GetWifiPasswd()
{
2022-06-27 20:43:02 +08:00
return ReadEepromString(WIFI_PASSWORD_OFFSET);
2021-08-29 22:14:08 +08:00
}
void UserData::SetWifiPasswd(String password)
{
2022-06-27 20:43:02 +08:00
return WriteEepromString(password, WIFI_PASSWORD_OFFSET);
2021-08-29 22:14:08 +08:00
}