From 477e85ba565b77bee3441d993a62cd2e1a232f68 Mon Sep 17 00:00:00 2001 From: Julien Oculi Date: Tue, 25 Jun 2024 22:09:17 +0200 Subject: [PATCH] refactor(server): :recycle: move global variables into a struct --- server/commande_telephone.ino | 91 ++++++++++++++++++----------------- 1 file changed, 48 insertions(+), 43 deletions(-) diff --git a/server/commande_telephone.ino b/server/commande_telephone.ino index 403b046..a1de54f 100644 --- a/server/commande_telephone.ino +++ b/server/commande_telephone.ino @@ -23,10 +23,13 @@ const char *password = "test12345"; int delayTime = 3; // Variables de commande : -bool commandRunning = false; // Une commande doit être exécutée -bool stopCommand = false; // La commande doit être stoppée -String globalCommand; // Nom de la commande -int globalValue; // Valeur (nombre de pas à effectuer) +struct command_t +{ + bool running; // Une commande doit être exécutée + bool stopped; // La commande doit être stoppée + String name; // Nom de la commande + int value; // Valeur (nombre de pas à effectuer) +} command = {false, false}; // Création du serveur asynchrone : AsyncWebServer server(80); @@ -55,28 +58,28 @@ void setup() void loop() { // Ne rien faire si aucune commande en cours - if (!commandRunning) + if (!command.running) return; // Arrêter le robot si une commande est interrompue // ou si le nombre de pas a été effectué - if (stopCommand || globalValue <= 0) + if (command.stopped || command.value <= 0) { Serial.println("stop"); - commandRunning = false; - stopCommand = false; + command.running = false; + command.stopped = false; stopMotors(); return; } // Sinon executer la commande en cours chooseCommand(); // Appeler la fonction "chooseCommand()" - if (globalValue > 0) + if (command.value > 0) { // S'il reste des pas à effectuer alors on l'affiche et on enlève un pas - Serial.print(globalCommand); + Serial.print(command.name); Serial.print(": "); - Serial.println(globalValue); - globalValue--; + Serial.println(command.value); + command.value--; } } @@ -85,16 +88,16 @@ void serverConfig() { server.on("/get", HTTP_GET, [](AsyncWebServerRequest *request) { - String command; - float value; + String commandName; + float commandValue; // Parse request params and update command and value - parseRequestParams(request, command, value); + parseRequestParams(request, commandName, commandValue); - Serial.print(command); + Serial.print(commandName); Serial.print(": "); - Serial.println(value); - request->send(200, "text/plain", command); }); + Serial.println(commandValue); + request->send(200, "text/plain", commandName); }); } void parseRequestParams(AsyncWebServerRequest *request, String &commandName, float &commandValue) @@ -102,17 +105,17 @@ void parseRequestParams(AsyncWebServerRequest *request, String &commandName, flo // Stop here with error message if wrong command if (!request->hasParam("command")) { - command = "No command provided"; + commandName = "No command provided"; return; } // Update command from params - command = request->getParam("command")->value(); + commandName = request->getParam("command")->value(); // Update value from params and use "0" as default - value = request->hasParam("value") ? request->getParam("value")->value().toFloat() : 0; + commandValue = request->hasParam("value") ? request->getParam("value")->value().toFloat() : 0; - requestCheck(command, value); + requestCheck(commandName, commandValue); } // Fonction pour convertir une longueur en cm vers un nombre de pas moteur. @@ -130,36 +133,38 @@ int convertRotToSteps(int rotation) } // Lorsqu'une commande arrive au serveur, cette fonction permet -void requestCheck(String command, float value) +void requestCheck(String commandName, float commandValue) { - if (command == "stop") + if (commandName == "stop") { - globalCommand = "stop"; - commandRunning = true; - stopCommand = true; + command.name = "stop"; + command.running = true; + command.stopped = true; } - else if setGlobals (command, value) - ; - - if (value == 0) + else { - globalValue = 474; + setGlobals(commandName, commandValue); + } + + if (commandValue == 0) + { + command.value = 474; } } -void setGlobals(String command, float value) +void setGlobals(String commandName, float commandValue) { // Assert command before updating globals - if (command != "forward" && command != "backward" && command != "left" && command != "right") + if (commandName != "forward" && commandName != "backward" && commandName != "left" && commandName != "right") { - return + return; } // Update globals - globalCommand = command; - commandRunning = true; - stopCommand = false; - globalValue = convertLengthToSteps(value); + command.name = commandName; + command.running = true; + command.stopped = false; + command.value = convertLengthToSteps(commandValue); } void connectWiFi() @@ -173,19 +178,19 @@ void connectWiFi() void chooseCommand() { - if (globalCommand == "forward") + if (command.name == "forward") { forward(); } - else if (globalCommand == "left") + else if (command.name == "left") { left(); } - else if (globalCommand == "right") + else if (command.name == "right") { right(); } - else if (globalCommand == "backward") + else if (command.name == "backward") { backward(); }