From 6d71a41e34f23fa4a43e7501c1c6f1f95789858d Mon Sep 17 00:00:00 2001
From: Eric Duminil <eric.duminil@gmail.com>
Date: Sat, 17 Apr 2021 12:20:54 +0200
Subject: [PATCH] Refactor

---
 ampel-firmware/co2_sensor.cpp      |  2 +-
 ampel-firmware/csv_writer.cpp      |  2 +-
 ampel-firmware/mqtt.cpp            |  2 +-
 ampel-firmware/sensor_commands.cpp | 18 ++++++++----------
 4 files changed, 11 insertions(+), 13 deletions(-)

diff --git a/ampel-firmware/co2_sensor.cpp b/ampel-firmware/co2_sensor.cpp
index 9c56805..3aab2c4 100644
--- a/ampel-firmware/co2_sensor.cpp
+++ b/ampel-firmware/co2_sensor.cpp
@@ -104,7 +104,7 @@ namespace sensor {
     Serial.println(config::auto_calibrate_sensor ? "ON." : "OFF.");
 
     sensor_commands::defineCallback("co2", setCO2forDebugging, " 1500 (Sets co2 level, for debugging purposes)");
-    sensor_commands::defineCallback("timer", setTimer, " 30 (Sets measurement interval)");
+    sensor_commands::defineCallback("timer", setTimer, " 30 (Sets measurement interval, in s)");
     sensor_commands::defineCallback("calibrate", calibrateSensorToSpecificPPM,
         " 600 (Starts calibration process, to given ppm)");
     sensor_commands::defineCallback("calibrate!", calibrateSensorRightNow, " 600 (Calibrates right now, to given ppm)");
diff --git a/ampel-firmware/csv_writer.cpp b/ampel-firmware/csv_writer.cpp
index a6a67d3..178739e 100644
--- a/ampel-firmware/csv_writer.cpp
+++ b/ampel-firmware/csv_writer.cpp
@@ -125,7 +125,7 @@ namespace csv_writer {
     showFilesystemContent();
     Serial.println();
 
-    sensor_commands::defineCallback("csv", setCSVinterval, " 60 (Sets CSV writing interval)");
+    sensor_commands::defineCallback("csv", setCSVinterval, " 60 (Sets CSV writing interval, in s)");
     // sensor_commands::defineCallback("format_filesystem", FS_LIB.format);
   }
 
diff --git a/ampel-firmware/mqtt.cpp b/ampel-firmware/mqtt.cpp
index ed3855e..5b95cc9 100644
--- a/ampel-firmware/mqtt.cpp
+++ b/ampel-firmware/mqtt.cpp
@@ -44,7 +44,7 @@ namespace mqtt {
     // mqttClient.setSocketTimeout(config::mqtt_timeout); //NOTE: somehow doesn't seem to have any effect on connect()
     mqttClient.setServer(config::mqtt_server, config::mqtt_port);
 
-    sensor_commands::defineCallback("mqtt", setMQTTinterval, " 60 (Sets MQTT sending interval)");
+    sensor_commands::defineCallback("mqtt", setMQTTinterval, " 60 (Sets MQTT sending interval, in s)");
   }
 
   void publish(const String &timestamp, int16_t co2, float temperature, float humidity) {
diff --git a/ampel-firmware/sensor_commands.cpp b/ampel-firmware/sensor_commands.cpp
index 85bbee5..249f8bc 100644
--- a/ampel-firmware/sensor_commands.cpp
+++ b/ampel-firmware/sensor_commands.cpp
@@ -25,11 +25,7 @@ namespace sensor_commands {
     }
   }
 
-  bool startsWith(const char *a, const char *b) {
-    return !strncmp(a, b, strlen(b));
-  }
-
-  bool parseCommand(const char *command, char *function_name, int32_t &parameter) {
+  uint8_t parseCommand(const char *command, char *function_name, int32_t &parameter) {
     char split_command[MAX_COMMAND_SIZE];
     strlcpy(split_command, command, MAX_COMMAND_SIZE);
     Serial.print(F("Received : '"));
@@ -44,21 +40,22 @@ namespace sensor_commands {
     }
     strlcpy(function_name, part1, MAX_COMMAND_SIZE);
     arg = strtok(NULL, " ");
+    uint8_t code = 0;
     if (arg) {
       char *end;
       parameter = strtol(arg, &end, 10);
       if (*end) {
         // Second argument isn't a number
-        parameter = -9999;
+        code = 2;
       }
     } else {
-      parameter = -9999;
+      // No parameter
+      code = 2;
     }
-    return 0;
+    return code;
   }
 
   void listAvailableCallbacks() {
-    Serial.println(F("Message not supported. Available commands :"));
     for (uint8_t i = 0; i < callbacks_count; i++) {
       Serial.print("  ");
       Serial.print(callbacks[i].name);
@@ -70,7 +67,7 @@ namespace sensor_commands {
 
   void run(const char *command) {
     char function_name[MAX_COMMAND_SIZE];
-    int32_t parameter;
+    int32_t parameter = 0;
     parseCommand(command, function_name, parameter);
 
     for (uint8_t i = 0; i < callbacks_count; i++) {
@@ -84,6 +81,7 @@ namespace sensor_commands {
         return;
       }
     }
+    Serial.println(F("Message not supported. Available commands :"));
     listAvailableCallbacks();
   }
 }
-- 
GitLab