選択できるのは25トピックまでです。 トピックは、先頭が英数字で、英数字とダッシュ('-')を使用した35文字以内のものにしてください。

53 行
1.1 KiB

  1. #include "Config.h"
  2. #include "Debug.h"
  3. #include "Hardware.h"
  4. #define LOGGER_NAME "Config"
  5. namespace config {
  6. Config value;
  7. void format() {
  8. VERBOSE("format");
  9. hardware::i2c::eepromPowerOn();
  10. for (int i = 0; i < 1024; i++)
  11. {
  12. hardware::i2c::eeprom.write(i, 0);
  13. }
  14. hardware::i2c::eepromPowerOff();
  15. }
  16. void write() {
  17. VERBOSE_FORMAT("write", "%s, %s, %d, %d", value.seed, value.version, value.firstEntry, value.lastEntry);
  18. hardware::i2c::eepromPowerOn();
  19. int written = hardware::i2c::eeprom.writeBlock(CONFIG_ADDR, value);
  20. hardware::i2c::eepromPowerOff();
  21. }
  22. void reset() {
  23. VERBOSE("reset");
  24. Config config = {
  25. CONFIG_SEED,
  26. VERSION,
  27. 0xFFFF,
  28. 0xFFFF
  29. };
  30. value = config;
  31. //format();
  32. write();
  33. VERBOSE_FORMAT("reset", "value : %s, %s, %d, %d", value.seed, value.version, value.firstEntry, value.lastEntry);
  34. }
  35. void read() {
  36. hardware::i2c::eepromPowerOn();
  37. hardware::i2c::eeprom.readBlock(CONFIG_ADDR, value);
  38. if (!String(CONFIG_SEED).equals(value.seed)) reset();
  39. hardware::i2c::eepromPowerOff();
  40. VERBOSE_FORMAT("read", "%s, %s, %d, %d", value.seed, value.version, value.firstEntry, value.lastEntry);
  41. }
  42. }