Преглед на файлове

add setting for auto restart

Chris Mullins преди 8 години
родител
ревизия
eb5eba2a33
променени са 2 файла, в които са добавени 23 реда и са изтрити 1 реда
  1. 8 0
      lib/Settings/Settings.cpp
  2. 15 1
      lib/Settings/Settings.h

+ 8 - 0
lib/Settings/Settings.cpp

@@ -35,6 +35,10 @@ void Settings::deserialize(Settings& settings, JsonObject& parsedSettings) {
       settings.httpRepeatFactor = parsedSettings["http_repeat_factor"];
     }
     
+    if (parsedSettings.containsKey("auto_restart_period")) {
+      settings.httpRepeatFactor = parsedSettings["auto_restart_period"];
+    }
+    
     JsonArray& arr = parsedSettings["device_ids"];
     settings.updateDeviceIds(arr);
     
@@ -97,6 +101,9 @@ void Settings::patch(JsonObject& parsedSettings) {
     if (parsedSettings.containsKey("http_repeat_factor")) {
       this->httpRepeatFactor = parsedSettings["http_repeat_factor"];
     }
+    if (parsedSettings.containsKey("auto_restart_period")) {
+      this->httpRepeatFactor = parsedSettings["auto_restart_period"];
+    }
     if (parsedSettings.containsKey("device_ids")) {
       JsonArray& arr = parsedSettings["device_ids"];
       updateDeviceIds(arr);
@@ -148,6 +155,7 @@ void Settings::serialize(Stream& stream, const bool prettyPrint) {
   root["csn_pin"] = this->csnPin;
   root["packet_repeats"] = this->packetRepeats;
   root["http_repeat_factor"] = this->httpRepeatFactor;
+  root["auto_restart_period"] = this->autoRestartPeriod;
   
   if (this->deviceIds) {
     JsonArray& arr = jsonBuffer.createArray();

+ 15 - 1
lib/Settings/Settings.h

@@ -22,6 +22,8 @@
 #define MILIGHT_GITHUB_REPO "esp8266_milight_hub"
 #define MILIGHT_REPO_WEB_PATH "/data/web/index.html"
 
+#define MINIMUM_RESTART_PERIOD 30
+
 class GatewayConfig {
 public:
   GatewayConfig(uint16_t deviceId, uint16_t port, uint8_t protocolVersion) 
@@ -48,7 +50,8 @@ public:
     numDeviceIds(0),
     numGatewayConfigs(0),
     packetRepeats(10),
-    httpRepeatFactor(5)
+    httpRepeatFactor(5),
+    _autoRestartPeriod(0)
   { }
   
   ~Settings() {
@@ -60,6 +63,14 @@ public:
   bool hasAuthSettings() {
     return adminUsername.length() > 0 && adminPassword.length() > 0;
   }
+  
+  bool isAutoRestartEnabled() {
+    return _autoRestartPeriod > 0;
+  }
+  
+  size_t getAutoRestartPeriod() {
+    return _autoRestartPeriod == 0 ? 0 : min(_autoRestartPeriod, MINIMUM_RESTART_PERIOD);
+  }
 
   static void deserialize(Settings& settings, String json);
   static void deserialize(Settings& settings, JsonObject& json);
@@ -82,6 +93,9 @@ public:
   size_t numDeviceIds;
   size_t packetRepeats;
   size_t httpRepeatFactor;
+  
+protected:
+  size_t _autoRestartPeriod;
 };
 
 #endif