#include <EEPROMWearLevel.h>
#define DEBUG_LOG
#define EEPROM_LAYOUT_VERSION 3
#define AMOUNT_OF_INDEXES 3
#define Armed_VAR1 0
#define Caller_VAR2 1
#define Timers_VAR3 2
char Array[25];
char ArrayCopy1[25];
char ArrayCopy2[25];
uint8_t WireSensorTimer[5];
struct VARIABLES {
uint16_t number;
char name[20];
};
VARIABLES Variables;
VARIABLES VariablesCopy;
struct CALLER {
char Caller[14];
};
CALLER Approved = {"+420603430012"};
CALLER CopyApproved;
char ApprovedCaller[14] = "+420603430012";
char ApprovedCallerCopy[14];
bool Armed = false;
bool ArmedRestored;
const uint8_t MaxRFsensors PROGMEM = 4;
uint8_t RFsensors = 3;
const uint8_t RFsensorNameLenght PROGMEM = 18;
struct RFSENSOR {
uint32_t code;
char name[RFsensorNameLenght];
uint8_t timer;
};
RFSENSOR RFsensor[MaxRFsensors];
// RFSENSOR RFsensorCopy[MaxRFsensors];
// uint8_t TimerCopy[MaxRFsensors];
void setup() {
Serial.begin(115200);
EEPROMwl.begin(EEPROM_LAYOUT_VERSION, AMOUNT_OF_INDEXES);
// strcpy_P(Approved.Caller, PSTR("+420603439988"));
Serial.print("Approved.Caller variable: ");
Serial.println(Approved.Caller);
strcpy(RFsensor[0].name, "Ovladac A");
RFsensor[0].code = 15625;
RFsensor[0].timer = 200;
strcpy(RFsensor[1].name, "Ovladac B");
RFsensor[1].code = 32589;
RFsensor[1].timer = 50;
strcpy(RFsensor[2].name, "Cidlo 1");
RFsensor[2].code = 568897;
RFsensor[2].timer = 2;
WireSensorTimer[0] = 190;
WireSensorTimer[1] = 164;
WireSensorTimer[2] = 45;
WireSensorTimer[3] = 12;
WireSensorTimer[4] = 0;
BackupTimers();
EEPROMwl.put(Armed_VAR1, Armed);
EEPROMwl.put(Caller_VAR2, Approved);
Serial.print("Armed variable: ");
Serial.println(Armed);
delay(600);
RestoreTimers();
EEPROMwl.get(Armed_VAR1, ArmedRestored);
EEPROMwl.get(Caller_VAR2, CopyApproved);
// strcpy(ApprovedCallerCopy, EEPROMwl.read(Caller_VAR2));
// Serial.print("ApprovedCallerCopy variable via print: ");
// Serial.print(EEPROMwl.read(Caller_VAR2));
// Serial.print(EEPROMwl.read(Caller_VAR2));
// Serial.println(EEPROMwl.read(Caller_VAR2));
Serial.print("Approved restored variable: ");
Serial.println(CopyApproved.Caller);
Serial.print("Armed restored variable: ");
Serial.println(ArmedRestored);
}
void loop() {
}
void BackupTimers() {
struct COPY {
uint8_t timer[5 + MaxRFsensors];
};
COPY TimersCopy;
Serial.print("Timers:");
for (uint8_t i = 0; i < 5; i++) {
TimersCopy.timer[i] = WireSensorTimer[i];
Serial.print(" ");
Serial.print(TimersCopy.timer[i]);
}
for (uint8_t i = 5; i < RFsensors + 5; i++) {
TimersCopy.timer[i] = RFsensor[i - 5].timer;
Serial.print(" ");
Serial.print(TimersCopy.timer[i]);
}
Serial.println(".");
EEPROMwl.put(Timers_VAR3, TimersCopy);
}
void RestoreTimers() {
struct COPY {
uint8_t timer[5 + MaxRFsensors];
};
COPY TimersCopy = {};
EEPROMwl.get(Timers_VAR3, TimersCopy);
Serial.print("Timers copy:");
for (uint8_t i = 0; i < 5; i++) {
WireSensorTimer[i] = TimersCopy.timer[i];
Serial.print(" ");
Serial.print(WireSensorTimer[i]);
}
for (uint8_t i = 0; i < RFsensors; i++) {
RFsensor[i].timer = TimersCopy.timer[i + 5];
Serial.print(" ");
Serial.print(RFsensor[i].timer);
}
Serial.println(".");
}