Settings.h 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596
  1. #include <Arduino.h>
  2. #include <StringStream.h>
  3. #include <ArduinoJson.h>
  4. #ifndef _SETTINGS_H_INCLUDED
  5. #define _SETTINGS_H_INCLUDED
  6. #define QUOTE(x) #x
  7. #ifndef FIRMWARE_VARIANT
  8. #define FIRMWARE_VARIANT unknown
  9. #endif
  10. #ifndef MILIGHT_HUB_VERSION
  11. #define MILIGHT_HUB_VERSION unknown
  12. #endif
  13. #define SETTINGS_FILE "/config.json"
  14. #define SETTINGS_TERMINATOR '\0'
  15. #define WEB_INDEX_FILENAME "/web/index.html"
  16. #define MILIGHT_GITHUB_USER "sidoh"
  17. #define MILIGHT_GITHUB_REPO "esp8266_milight_hub"
  18. #define MILIGHT_REPO_WEB_PATH "/data/web/index.html"
  19. #define MINIMUM_RESTART_PERIOD 1
  20. class GatewayConfig {
  21. public:
  22. GatewayConfig(uint16_t deviceId, uint16_t port, uint8_t protocolVersion)
  23. : deviceId(deviceId),
  24. port(port),
  25. protocolVersion(protocolVersion)
  26. { }
  27. const uint16_t deviceId;
  28. const uint16_t port;
  29. const uint8_t protocolVersion;
  30. };
  31. class Settings {
  32. public:
  33. Settings() :
  34. adminUsername(""),
  35. adminPassword(""),
  36. // CE and CSN pins from nrf24l01
  37. cePin(D0),
  38. csnPin(D8),
  39. deviceIds(NULL),
  40. gatewayConfigs(NULL),
  41. numDeviceIds(0),
  42. numGatewayConfigs(0),
  43. packetRepeats(10),
  44. httpRepeatFactor(5),
  45. _autoRestartPeriod(0)
  46. { }
  47. ~Settings() {
  48. if (deviceIds) {
  49. delete deviceIds;
  50. }
  51. }
  52. bool hasAuthSettings();
  53. bool isAutoRestartEnabled();
  54. size_t getAutoRestartPeriod();
  55. static void deserialize(Settings& settings, String json);
  56. static void deserialize(Settings& settings, JsonObject& json);
  57. static void load(Settings& settings);
  58. void save();
  59. String toJson(const bool prettyPrint = true);
  60. void serialize(Stream& stream, const bool prettyPrint = false);
  61. void updateDeviceIds(JsonArray& arr);
  62. void updateGatewayConfigs(JsonArray& arr);
  63. void patch(JsonObject& obj);
  64. String adminUsername;
  65. String adminPassword;
  66. uint8_t cePin;
  67. uint8_t csnPin;
  68. uint16_t *deviceIds;
  69. GatewayConfig **gatewayConfigs;
  70. size_t numGatewayConfigs;
  71. size_t numDeviceIds;
  72. size_t packetRepeats;
  73. size_t httpRepeatFactor;
  74. protected:
  75. size_t _autoRestartPeriod;
  76. };
  77. #endif