From 617980d72831b26eb9ee78929e51c00aaf73c024 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?F=C3=A9lix=20MARQUET?= Date: Wed, 8 May 2024 15:10:05 +0200 Subject: [PATCH] Add SIGINT and SIGTERM handle --- .gitignore | 3 +++ main.cpp | 52 ++++++++++++++++++++++++++++++++++------------------ 2 files changed, 37 insertions(+), 18 deletions(-) create mode 100644 .gitignore diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..47b67ff --- /dev/null +++ b/.gitignore @@ -0,0 +1,3 @@ +.idea + +cmake-build-debug \ No newline at end of file diff --git a/main.cpp b/main.cpp index 09d6b72..8f50370 100644 --- a/main.cpp +++ b/main.cpp @@ -1,12 +1,22 @@ #include #include +#include +#include #include "MyClient.h" // Numéro du GPIO connecté à la tirette #define TIRETTE_GPIO 17 +std::atomic shouldStop = false; + +void signalHandler(int signum) { + shouldStop = true; +} + int main(int argc, char* argv[]) { + signal(SIGINT, signalHandler); + signal(SIGTERM, signalHandler); // Initialisation de WiringPi if (wiringPiSetupGpio() == -1) { std::cerr << "Erreur lors de l'initialisation de WiringPi." << std::endl; @@ -28,29 +38,35 @@ int main(int argc, char* argv[]) { client.setTiretteState(true); - client.start(); + try{ + client.start(); - client.sendMessage("tirette;strat;ready;1"); + client.sendMessage("tirette;strat;ready;1"); - int lastEtat = digitalRead(TIRETTE_GPIO); - // Boucle principale - while (!client.shouldStop()) { - int etat = digitalRead(TIRETTE_GPIO); + int lastEtat = digitalRead(TIRETTE_GPIO); + // Boucle principale + while (!client.shouldStop()) { + int etat = digitalRead(TIRETTE_GPIO); - if (etat == LOW) { - client.setTiretteState(true); - } else - { - client.setTiretteState(false); - if (lastEtat != etat) { - // std::cout << "LETSGO" << std::endl; - client.sendMessage("tirette;strat;set state;0"); + if (etat == LOW) { + client.setTiretteState(true); + } else + { + client.setTiretteState(false); + if (lastEtat != etat) { + // std::cout << "LETSGO" << std::endl; + client.sendMessage("tirette;strat;set state;0"); + } } - } - // Attendre un court délai avant de vérifier à nouveau - lastEtat = etat; - delay(50); + // Attendre un court délai avant de vérifier à nouveau + lastEtat = etat; + delay(50); + } + } + catch (std::exception& e){ + std::cerr << e.what() << std::endl; + return 1; } return 0;