summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--minion/src/gymnasiearbete.cpp35
-rw-r--r--minion/src/util.cpp6
-rw-r--r--minion/src/util.hpp2
3 files changed, 31 insertions, 12 deletions
diff --git a/minion/src/gymnasiearbete.cpp b/minion/src/gymnasiearbete.cpp
index fada1e2..401722c 100644
--- a/minion/src/gymnasiearbete.cpp
+++ b/minion/src/gymnasiearbete.cpp
@@ -2,6 +2,7 @@
#include "http/response_status.hpp"
#include "secrets.hpp"
#include "temperature.hpp"
+#include "util.hpp"
#include "wifi_module.hpp"
#include <Arduino.h>
@@ -17,7 +18,7 @@ constexpr auto NETWORK_MODULE_TX_PIN = 11U;
constexpr auto TEMPERATURE_SENSOR_PIN = 9U;
-constexpr auto SECOND_IN_MILLIS = 1000U;
+constexpr auto MILLIS_IN_SECOND = 1000U;
constexpr auto RESPONSE_DATA_MAX_LENGTH = 64U;
@@ -25,6 +26,8 @@ auto wifi_module = WiFiModule({ NETWORK_MODULE_RX_PIN, NETWORK_MODULE_TX_PIN });
auto temperature_sensor = TemperatureSensor(TEMPERATURE_SENSOR_PIN);
+auto last_sent_response_time = 0UL;
+
void setup()
{
Serial.begin(BAUDRATE);
@@ -36,7 +39,7 @@ void setup()
wifi_module.reset();
- delay(SECOND_IN_MILLIS);
+ delay(MILLIS_IN_SECOND);
auto wifi_module_connected = wifi_module.test();
@@ -45,14 +48,12 @@ void setup()
if (!wifi_module_connected)
{
- while (true)
- {
- }
+ util::quit();
}
wifi_module.set_echo_enabled(false);
- delay(SECOND_IN_MILLIS);
+ delay(MILLIS_IN_SECOND);
const auto wifi_connect_success =
wifi_module.connect_to_wifi(WIFI_SSID, WIFI_PASSWORD);
@@ -64,9 +65,14 @@ void setup()
Serial.print(WIFI_SSID);
Serial.println("'");
+ if (!wifi_connect_success)
+ {
+ util::quit();
+ }
+
wifi_module.set_wifi_mode(WifiMode::Station);
- delay(SECOND_IN_MILLIS * 3U);
+ delay(MILLIS_IN_SECOND * 3U);
char local_ip[MAX_NETWORK_MODULE_RESPONSE_LENGTH] = "";
@@ -75,13 +81,18 @@ void setup()
wifi_module.set_multiple_connections_enabled(true);
- delay(SECOND_IN_MILLIS);
+ delay(MILLIS_IN_SECOND);
wifi_module.create_tcp_server(HTTP_PORT);
}
void loop()
{
+ // Wait until a second has passed since the last sent response
+ while ((last_sent_response_time + MILLIS_IN_SECOND) > millis())
+ {
+ }
+
auto request = wifi_module.read_incoming_request();
auto connection = request.connection();
@@ -124,8 +135,6 @@ void loop()
wifi_module.close_connection(connection);
- delay(SECOND_IN_MILLIS);
-
return;
}
@@ -144,9 +153,11 @@ void loop()
if (!send_response_ok)
{
Serial.println("Failed to send response");
+ wifi_module.close_connection(connection);
+ return;
}
- wifi_module.close_connection(connection);
+ last_sent_response_time = millis();
- delay(SECOND_IN_MILLIS);
+ wifi_module.close_connection(connection);
}
diff --git a/minion/src/util.cpp b/minion/src/util.cpp
index 540a20c..15cf840 100644
--- a/minion/src/util.cpp
+++ b/minion/src/util.cpp
@@ -37,4 +37,10 @@ auto streq(const char *str_one, const char *str_two) noexcept -> bool
return strcmp(str_one, str_two) == 0;
}
+void quit() noexcept
+{
+ while (true)
+ ;
+}
+
} // namespace util
diff --git a/minion/src/util.hpp b/minion/src/util.hpp
index 4cc3967..0dbb03f 100644
--- a/minion/src/util.hpp
+++ b/minion/src/util.hpp
@@ -36,4 +36,6 @@ void substr(const char *str, const char *end, char *dest) noexcept;
*/
auto streq(const char *str_one, const char *str_two) noexcept -> bool;
+void quit() noexcept;
+
} // namespace util