Download the file
  1. #ifndef CONFIG_ITEM_H
  2. #define CONFIG_ITEM_H
  3.  
  4. #include <EEPROM.h>
  5. #include <inttypes.h>
  6.  
  7. class ConfigValue {
  8. public:
  9. virtual uint16_t get_value() = 0;
  10. };
  11.  
  12. class ConfigItem: public ConfigValue {
  13. public:
  14. ConfigItem(uint16_t bytes) {
  15. eeprom_address = eeprom_alloc(bytes);
  16. }
  17.  
  18. virtual void next() = 0;
  19. virtual void previous() = 0;
  20.  
  21. protected:
  22. static uint16_t eeprom_alloc(uint16_t bytes) {
  23. uint16_t tmp = next_free_eeprom_address;
  24. next_free_eeprom_address += bytes;
  25. return tmp;
  26. }
  27.  
  28. uint16_t eeprom_address;
  29.  
  30. private:
  31. static uint16_t next_free_eeprom_address;
  32.  
  33. };
  34.  
  35. #endif
  36. // vim:ft=arduino
  37.