From c80a21848b513864031dc250c9b6d9e98f7d3566 Mon Sep 17 00:00:00 2001 From: Vincent BENOIT Date: Tue, 3 Jan 2023 17:01:08 +0100 Subject: [PATCH] correction bug + ajout d'une action sur demande de fermeture de l'appli --- kineintercom/intercom.py | 54 ++++++++++++++++++++++++++++++++-------- 1 file changed, 43 insertions(+), 11 deletions(-) diff --git a/kineintercom/intercom.py b/kineintercom/intercom.py index 0ec1cbb..53c44a7 100644 --- a/kineintercom/intercom.py +++ b/kineintercom/intercom.py @@ -568,6 +568,7 @@ def listener(sock, logger): global FLAG_CONF_UPDATE global FLAG_HORAIRE_UPDATE global FLAG_TH_CLOSE + global FLAG_SHUTDOWN flag = True logger.debug("Démarrage du serveur de communication avec le backend du configurateur") while not FLAG_TH_CLOSE: @@ -600,6 +601,9 @@ def listener(sock, logger): elif data.decode('utf-8').startswith('ALIVE?'): clientsocket.sendall(b"ALIVE\n") data = b'' + elif data.decode('utf-8').startswith('SHUTDOWN'): + FLAG_SHUTDOWN = True + data = b'' elif len(data) == 0: # deconnexion du client logger.debug("deconnexion du client ...") @@ -670,7 +674,7 @@ def setup_module(): while True: try: GPIO.output(7, GPIO.LOW) - time.sleep(2) + time.sleep(3) GPIO.output(7, GPIO.HIGH) except ValueError as e: return False @@ -798,6 +802,7 @@ GSM_MODULE_INIT_STATE = False FLAG_CONF_UPDATE = False FLAG_HORAIRE_UPDATE = False FLAG_TH_CLOSE = False +FLAG_SHUTDOWN = False def main(): ''' main function @@ -822,6 +827,7 @@ def main(): global FLAG_CONF_UPDATE global FLAG_HORAIRE_UPDATE global FLAG_TH_CLOSE + global FLAG_SHUTDOWN # Configuration loader config = get_conf(logger) @@ -896,7 +902,6 @@ def main(): # Si le module GSM doit être allumé et qu'il est éteint, on l'allume if not GSM_MODULE_STATE: logger.info("Allumage du module GSM HAT ...") - init_module() if not setup_module(): logger.error("Erreur de configuration des GPIOs de la board") ser.close() @@ -938,16 +943,34 @@ def main(): else: # Si le module GSM doit être éteint et qu'il est allumé, on l'eteint if GSM_MODULE_STATE: + idx = 0 logger.debug("Fermeture du module GSM HAT ...") - init_module() - if not setup_module(): - logger.error("Erreur de configuration des GPIOs de la board") - ser.close() - sys.exit(1) - else: - GSM_MODULE_STATE = False - GSM_MODULE_INIT_STATE = False - GSM_MODULE_SIM_STATE = False + while idx < 5: + if not setup_module(): + logger.error("Erreur de configuration des GPIOs de la board") + ser.close() + sys.exit(1) + else: + jdx = 0 + while jdx < 5: + # send AT command to test the connection + ret, _ = send_at_cmd(cmd='AT', timeout=0.5, serObj=ser, logger=logger) + if ret == 2: + logger.error("Erreur d'envoie de la commande AT") + ser.close() + sys.exit(1) + elif ret == 1: + logger.info("Pas de réponse du module GSM HAT") + idx = 6 + break + else: + logger.warning("Module GSM HAT allumé .. ({}/5)".format(jdx + 1)) + jdx += 1 + time.sleep(1) + + GSM_MODULE_STATE = False + GSM_MODULE_INIT_STATE = False + GSM_MODULE_SIM_STATE = False server_addr = "/tmp/uds_socket" # Make sure the socket does not already exist @@ -980,6 +1003,15 @@ def main(): out = '' try: while True: + # drapeau de fermeture de l'appli + if FLAG_SHUTDOWN: + # on ferme le module si il est ouvert + if GSM_MODULE_STATE: + if not setup_module(): + logger.error("Erreur de configuration des GPIOs de la board") + + raise KeyboardInterrupt + # Drapeau de mise à jour de la configuration, par le configurateur via le serveur (socket) if FLAG_CONF_UPDATE: logger.info("Configuration doit être rechargée ...")