#ifndef ESP32_STORAGE_HPP #define ESP32_STORAGE_HPP #ifdef ESP32 #include "Preferences.h" #include "SPIFFS.h" #elif defined(ESP8266) #include "EEPROM.h" #endif #include "Utils.hpp" namespace fw { class Storage { private: #ifdef ESP32 Preferences memory; #elif defined(ESP8266) // Storage per firewall rule is 42 Byte // Space for 15 Rules is 630 Byte // plus 10 byte for settings const uint16_t eeprom_size = 640; const uint8_t security_number = 93; const uint16_t eeprom_settings_head = 0; const uint16_t eeprom_amout_of_rules_head = eeprom_settings_head + 1; const uint16_t eeprom_rules_head = 10; #endif void setup_eeprom(); uint16_t eeprom_rule_position(uint8_t); protected: uint8_t retrieve_settings_value(const char *); void store_settings_value(const char *, const uint8_t); firewall_rule_t *retrieve_firewall_rule(const uint8_t); void store_all_firewall_rules(firewall_rule_t *); void store_firewall_rule(firewall_rule_t *); public: Storage(); ~Storage(); }; } #endif