25'ten fazla konu seçemezsiniz Konular bir harf veya rakamla başlamalı, kısa çizgiler ('-') içerebilir ve en fazla 35 karakter uzunluğunda olabilir.

87 satır
2.4 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, %s", value.seed, value.version, value.firstEntry, value.lastEntry, value.alertBatteryLevel1, value.alertBatteryLevel2, value.alertBatteryLevelClear, 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. strcpy(value.contactPhone, CONFIG_DEFAULT_CONTACT_PHONE);
  29. #endif
  30. }
  31. void write() {
  32. NOTICE_FORMAT("write", "%d, %s, %d, %d, %d, %d, %d, %s", value.seed, value.version, value.firstEntry, value.lastEntry, value.alertBatteryLevel1, value.alertBatteryLevel2, value.alertBatteryLevelClear, value.contactPhone);
  33. #if BACKUP_ENABLE_NETWORK
  34. NOTICE_FORMAT("write", "%d, %d, %s, %s", value.network.saveThreshold, value.network.lastSavedEntry, value.network.apn, value.network.url);
  35. #endif
  36. hardware::i2c::powerOn();
  37. int written = hardware::i2c::eeprom.writeBlock(CONFIG_ADDR, value);
  38. hardware::i2c::powerOff();
  39. }
  40. }
  41. void setup() {
  42. details::read();
  43. details::write();
  44. }
  45. void save() {
  46. details::write();
  47. }
  48. void reset() {
  49. VERBOSE("reset");
  50. config_t config = {
  51. CONFIG_SEED,
  52. VERSION,
  53. 0xFFFF,
  54. 0xFFFF,
  55. #if BACKUP_ENABLE_NETWORK
  56. {
  57. POSITIONS_CONFIG_NET_DEFAULT_SAVE_THRESHOLD,
  58. 0xFFFF,
  59. POSITIONS_CONFIG_NET_DEFAULT_APN,
  60. POSITIONS_CONFIG_NET_DEFAULT_URL,
  61. },
  62. CONFIG_DEFAULT_BATTERY_ALERT_LEVEL1,
  63. CONFIG_DEFAULT_BATTERY_ALERT_LEVEL2,
  64. CONFIG_DEFAULT_BATTERY_ALERT_CLEAR,
  65. CONFIG_DEFAULT_CONTACT_PHONE
  66. #endif
  67. };
  68. value = config;
  69. save();
  70. }
  71. }
  72. }