agrobot_base/Firmware/Modulos/EepromService.h

89 lines
2.3 KiB
C
Raw Permalink Normal View History

#include "SerialService.h"
#include <EEPROM.h>
#ifndef EepromService
#define EepromService
#define WIFI_SSID_ADDR 0 // Endereço inicial para o SSID na EEPROM
#define WIFI_PASS_ADDR 32 // Endereço inicial para a senha na EEPROM
#define MAX_SSID_LEN 32 // Tamanho máximo do SSID
#define MAX_PASS_LEN 32 // Tamanho máximo da senha
#define MOD_ID_ADDR 500
const int EEPROM_SIZE = 512;
void saveWiFiCredentials(const char* ssid, const char* password) {
EEPROM.begin(EEPROM_SIZE);
for (int i = 0; i < MAX_SSID_LEN; i++) {
EEPROM.write(WIFI_SSID_ADDR + i, ssid[i]);
}
for (int i = 0; i < MAX_PASS_LEN; i++) {
EEPROM.write(WIFI_PASS_ADDR + i, password[i]);
}
EEPROM.commit();
PrintTela("Credenciais salvas.");
}
void loadWiFiCredentials(char* ssid, char* password) {
EEPROM.begin(EEPROM_SIZE);
for (int i = 0; i < MAX_SSID_LEN; i++) {
ssid[i] = EEPROM.read(WIFI_SSID_ADDR + i);
}
ssid[MAX_SSID_LEN - 1] = '\0';
for (int i = 0; i < MAX_PASS_LEN; i++) {
password[i] = EEPROM.read(WIFI_PASS_ADDR + i);
}
password[MAX_PASS_LEN - 1] = '\0';
}
// Função para salvar a configuração no EEPROM
void salvarConfiguracaoEEPROM(const String& configuracao, int addr) {
EEPROM.begin(EEPROM_SIZE); // Inicializa o EEPROM
for (int i = 0; i < configuracao.length(); i++) {
EEPROM.write(addr + i, configuracao[i]);
}
EEPROM.write(addr + configuracao.length(), '\0'); // Adiciona terminador nulo
EEPROM.commit();
PrintTela("Configuração salva no EEPROM: " + configuracao);
}
// Função para carregar a configuração do EEPROM
String carregarConfiguracaoEEPROM(int addr) {
EEPROM.begin(EEPROM_SIZE);
String configuracao;
char ch;
for (int i = addr; (ch = EEPROM.read(i)) != '\0' && i < EEPROM_SIZE; i++) {
configuracao += ch;
}
PrintTela("Configuração carregada do EEPROM: " + configuracao);
return configuracao;
}
void limparEEPROM() {
EEPROM.begin(EEPROM_SIZE); // Inicializa o EEPROM
// Limpa todos os bytes na EEPROM
for (int i = 0; i < EEPROM_SIZE; i++) {
EEPROM.write(i, 0); // Escreve 0 em cada posição
}
EEPROM.commit(); // Salva as alterações
EEPROM.end(); // Encerra a sessão de EEPROM
PrintTela("EEPROM limpa. Todas as configurações foram resetadas.");
}
#endif