No puede seleccionar más de 25 temas Los temas deben comenzar con una letra o número, pueden incluir guiones ('-') y pueden tener hasta 35 caracteres de largo.

59 líneas
1.1 KiB

  1. #include "Config.h"
  2. #include "Debug.h"
  3. #include "Hardware.h"
  4. #define LOGGER_NAME "Config"
  5. namespace config {
  6. namespace main {
  7. Config value;
  8. namespace details {
  9. void read() {
  10. VERBOSE("read");
  11. hardware::i2c::powerOn();
  12. hardware::i2c::eeprom.readBlock(CONFIG_ADDR, value);
  13. if (!String(CONFIG_SEED).equals(value.seed)) reset();
  14. hardware::i2c::powerOff();
  15. }
  16. void write() {
  17. VERBOSE_FORMAT("write", "%s, %s, %s, %d, %d", value.seed, value.version, value.apn, value.firstEntry, value.lastEntry);
  18. hardware::i2c::powerOn();
  19. int written = hardware::i2c::eeprom.writeBlock(CONFIG_ADDR, value);
  20. hardware::i2c::powerOff();
  21. }
  22. }
  23. Config get() {
  24. if (value.seed[0] == '\0') details::read();
  25. VERBOSE_FORMAT("get", "%s, %s, %s, %d, %d", value.seed, value.version, value.apn, value.firstEntry, value.lastEntry);
  26. return value;
  27. }
  28. void set(const Config config) {
  29. value = config;
  30. details::write();
  31. }
  32. void reset() {
  33. VERBOSE("reset");
  34. Config config = {
  35. CONFIG_SEED,
  36. VERSION,
  37. "Vodafone", //TODO : read from SD
  38. 0xFFFF,
  39. 0xFFFF,
  40. };
  41. value = config;
  42. details::write();
  43. }
  44. }
  45. }