From c655f3f8ab63d19414271265379a2c3c26741792 Mon Sep 17 00:00:00 2001
From: Armin Co <armin.co@hs-bochum.de>
Date: Sun, 4 Oct 2020 17:29:56 +0200
Subject: [PATCH] Slow down simulation and sending.

---
 src/smart_grid/SmartGridModell.cpp | 16 ++++++++++------
 src/smg_server.cpp                 |  3 ++-
 2 files changed, 12 insertions(+), 7 deletions(-)

diff --git a/src/smart_grid/SmartGridModell.cpp b/src/smart_grid/SmartGridModell.cpp
index 89697a1..0eae7bf 100644
--- a/src/smart_grid/SmartGridModell.cpp
+++ b/src/smart_grid/SmartGridModell.cpp
@@ -58,14 +58,18 @@ void SmartGridModell::default_state_fancy()
 
 void SmartGridModell::update_windmill_speed(uint8_t speed)
 {
-    constexpr uint8_t min_motor_speed {35};
-    if (speed >= min_motor_speed)
+    constexpr uint8_t min_motor_speed {40};
+    if (speed == 0)
     {
-        set_output_pin(Pin::WindmillMotor, speed);
+        set_output_pin(Pin::WindmillMotor, 0);
     }
-    else if (speed == 0)
+    else if (speed > 180)
     {
-        set_output_pin(Pin::WindmillMotor, 0);
+        set_output_pin(Pin::WindmillMotor, 140);
+    }
+    else if (speed <= min_motor_speed)
+    {
+        set_output_pin(Pin::WindmillMotor, speed);
     }
     else
     {
@@ -115,7 +119,7 @@ void SmartGridModell::set_output_pin(Pin pin, uint8_t value)
     bool succ = m_modell.send(static_cast<uint8_t>(pin), value);
     spdlog::debug("Send: {} {}, success: {}", pin, value, succ);
     using namespace std;
-    this_thread::sleep_for(chrono::milliseconds(12));
+    this_thread::sleep_for(chrono::milliseconds(14));
 }
 
 void SmartGridModell::set_house_color(House number, uint8_t red, uint8_t green)
diff --git a/src/smg_server.cpp b/src/smg_server.cpp
index 7d5af53..f7dfec4 100644
--- a/src/smg_server.cpp
+++ b/src/smg_server.cpp
@@ -65,7 +65,8 @@ void run_sim()
                 sim_state = SimState::Do;
                 break;
             case SimState::Do:
-                std::this_thread::sleep_for(std::chrono::milliseconds(50));
+                // limit speed of simulation
+                std::this_thread::sleep_for(std::chrono::milliseconds(500));
                 if (sim_state_do(day) == true)
                 {
                     sim_state = SimState::Exit;
-- 
GitLab