refactor(server): ♻️ move global variables into a struct
This commit is contained in:
parent
9b055207d6
commit
477e85ba56
|
@ -23,10 +23,13 @@ const char *password = "test12345";
|
||||||
int delayTime = 3;
|
int delayTime = 3;
|
||||||
|
|
||||||
// Variables de commande :
|
// Variables de commande :
|
||||||
bool commandRunning = false; // Une commande doit être exécutée
|
struct command_t
|
||||||
bool stopCommand = false; // La commande doit être stoppée
|
{
|
||||||
String globalCommand; // Nom de la commande
|
bool running; // Une commande doit être exécutée
|
||||||
int globalValue; // Valeur (nombre de pas à effectuer)
|
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 :
|
// Création du serveur asynchrone :
|
||||||
AsyncWebServer server(80);
|
AsyncWebServer server(80);
|
||||||
|
@ -55,28 +58,28 @@ void setup()
|
||||||
void loop()
|
void loop()
|
||||||
{
|
{
|
||||||
// Ne rien faire si aucune commande en cours
|
// Ne rien faire si aucune commande en cours
|
||||||
if (!commandRunning)
|
if (!command.running)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
// Arrêter le robot si une commande est interrompue
|
// Arrêter le robot si une commande est interrompue
|
||||||
// ou si le nombre de pas a été effectué
|
// ou si le nombre de pas a été effectué
|
||||||
if (stopCommand || globalValue <= 0)
|
if (command.stopped || command.value <= 0)
|
||||||
{
|
{
|
||||||
Serial.println("stop");
|
Serial.println("stop");
|
||||||
commandRunning = false;
|
command.running = false;
|
||||||
stopCommand = false;
|
command.stopped = false;
|
||||||
stopMotors();
|
stopMotors();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Sinon executer la commande en cours
|
// Sinon executer la commande en cours
|
||||||
chooseCommand(); // Appeler la fonction "chooseCommand()"
|
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
|
{ // 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.print(": ");
|
||||||
Serial.println(globalValue);
|
Serial.println(command.value);
|
||||||
globalValue--;
|
command.value--;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -85,16 +88,16 @@ void serverConfig()
|
||||||
{
|
{
|
||||||
server.on("/get", HTTP_GET, [](AsyncWebServerRequest *request)
|
server.on("/get", HTTP_GET, [](AsyncWebServerRequest *request)
|
||||||
{
|
{
|
||||||
String command;
|
String commandName;
|
||||||
float value;
|
float commandValue;
|
||||||
|
|
||||||
// Parse request params and update command and value
|
// 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.print(": ");
|
||||||
Serial.println(value);
|
Serial.println(commandValue);
|
||||||
request->send(200, "text/plain", command); });
|
request->send(200, "text/plain", commandName); });
|
||||||
}
|
}
|
||||||
|
|
||||||
void parseRequestParams(AsyncWebServerRequest *request, String &commandName, float &commandValue)
|
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
|
// Stop here with error message if wrong command
|
||||||
if (!request->hasParam("command"))
|
if (!request->hasParam("command"))
|
||||||
{
|
{
|
||||||
command = "No command provided";
|
commandName = "No command provided";
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Update command from params
|
// Update command from params
|
||||||
command = request->getParam("command")->value();
|
commandName = request->getParam("command")->value();
|
||||||
|
|
||||||
// Update value from params and use "0" as default
|
// 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.
|
// 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
|
// 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";
|
command.name = "stop";
|
||||||
commandRunning = true;
|
command.running = true;
|
||||||
stopCommand = true;
|
command.stopped = true;
|
||||||
}
|
}
|
||||||
else if setGlobals (command, value)
|
else
|
||||||
;
|
|
||||||
|
|
||||||
if (value == 0)
|
|
||||||
{
|
{
|
||||||
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
|
// 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
|
// Update globals
|
||||||
globalCommand = command;
|
command.name = commandName;
|
||||||
commandRunning = true;
|
command.running = true;
|
||||||
stopCommand = false;
|
command.stopped = false;
|
||||||
globalValue = convertLengthToSteps(value);
|
command.value = convertLengthToSteps(commandValue);
|
||||||
}
|
}
|
||||||
|
|
||||||
void connectWiFi()
|
void connectWiFi()
|
||||||
|
@ -173,19 +178,19 @@ void connectWiFi()
|
||||||
|
|
||||||
void chooseCommand()
|
void chooseCommand()
|
||||||
{
|
{
|
||||||
if (globalCommand == "forward")
|
if (command.name == "forward")
|
||||||
{
|
{
|
||||||
forward();
|
forward();
|
||||||
}
|
}
|
||||||
else if (globalCommand == "left")
|
else if (command.name == "left")
|
||||||
{
|
{
|
||||||
left();
|
left();
|
||||||
}
|
}
|
||||||
else if (globalCommand == "right")
|
else if (command.name == "right")
|
||||||
{
|
{
|
||||||
right();
|
right();
|
||||||
}
|
}
|
||||||
else if (globalCommand == "backward")
|
else if (command.name == "backward")
|
||||||
{
|
{
|
||||||
backward();
|
backward();
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue