Nelze vybrat více než 25 témat Téma musí začínat písmenem nebo číslem, může obsahovat pomlčky („-“) a může být dlouhé až 35 znaků.

89 řádky
2.5 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_t value;
  8. namespace details {
  9. void read() {
  10. VERBOSE("read");
  11. hardware::i2c::powerOn();
  12. hardware::i2c::eeprom.readBlock(CONFIG_ADDR, value);
  13. if (CONFIG_SEED != value.seed) reset(); //todo : reset network if seed for network is not right
  14. hardware::i2c::powerOff();
  15. NOTICE_FORMAT("read", "%d, %s, %d, %d, %d, %d, %d, %d, %s", value.seed, value.version, value.firstEntry, value.lastEntry, value.alertBatteryLevel1, value.alertBatteryLevel2, value.alertBatteryLevelClear, value.activeAlerts, value.contactPhone);
  16. #if BACKUP_ENABLE_NETWORK
  17. NOTICE_FORMAT("read", "%d, %d, %s, %s", value.network.saveThreshold, value.network.lastSavedEntry, value.network.apn, value.network.url);
  18. //networkConfig_t c = {
  19. // POSITIONS_CONFIG_NET_DEFAULT_SAVE_THRESHOLD,
  20. // 0xFFFF,
  21. // POSITIONS_CONFIG_NET_DEFAULT_APN,
  22. // POSITIONS_CONFIG_NET_DEFAULT_URL,
  23. //};
  24. //value.network = c;
  25. value.alertBatteryLevel1 = CONFIG_DEFAULT_BATTERY_ALERT_LEVEL1;
  26. value.alertBatteryLevel2 = CONFIG_DEFAULT_BATTERY_ALERT_LEVEL2;
  27. value.alertBatteryLevelClear = CONFIG_DEFAULT_BATTERY_ALERT_CLEAR;
  28. value.activeAlerts = 0;
  29. strcpy(value.contactPhone, CONFIG_DEFAULT_CONTACT_PHONE);
  30. #endif
  31. }
  32. void write() {
  33. NOTICE_FORMAT("write", "%d, %s, %d, %d, %d, %d, %d, %d, %s", value.seed, value.version, value.firstEntry, value.lastEntry, value.activeAlerts, value.alertBatteryLevel1, value.alertBatteryLevel2, value.alertBatteryLevelClear, value.activeAlerts, value.contactPhone);
  34. #if BACKUP_ENABLE_NETWORK
  35. NOTICE_FORMAT("write", "%d, %d, %s, %s", value.network.saveThreshold, value.network.lastSavedEntry, value.network.apn, value.network.url);
  36. #endif
  37. hardware::i2c::powerOn();
  38. int written = hardware::i2c::eeprom.writeBlock(CONFIG_ADDR, value);
  39. hardware::i2c::powerOff();
  40. }
  41. }
  42. void setup() {
  43. details::read();
  44. details::write();
  45. }
  46. void save() {
  47. details::write();
  48. }
  49. void reset() {
  50. VERBOSE("reset");
  51. config_t config = {
  52. CONFIG_SEED,
  53. VERSION,
  54. 0xFFFF,
  55. 0xFFFF,
  56. #if BACKUP_ENABLE_NETWORK
  57. {
  58. POSITIONS_CONFIG_NET_DEFAULT_SAVE_THRESHOLD,
  59. 0xFFFF,
  60. POSITIONS_CONFIG_NET_DEFAULT_APN,
  61. POSITIONS_CONFIG_NET_DEFAULT_URL,
  62. },
  63. CONFIG_DEFAULT_BATTERY_ALERT_LEVEL1,
  64. CONFIG_DEFAULT_BATTERY_ALERT_LEVEL2,
  65. CONFIG_DEFAULT_BATTERY_ALERT_CLEAR,
  66. 0,
  67. CONFIG_DEFAULT_CONTACT_PHONE
  68. #endif
  69. };
  70. value = config;
  71. save();
  72. }
  73. }
  74. }