diff --git a/IOB-PI/readParallela.py b/IOB-PI/readParallela.py index e1bcf06..f496d11 100644 --- a/IOB-PI/readParallela.py +++ b/IOB-PI/readParallela.py @@ -17,7 +17,7 @@ # - (2.6.0) Aggiunto gestione Redis x code salvate ogni minuto e ricaricate all'avvio 2025.04.17 # - (2.6.1) Cleanup generale vecchia queue post test vari # - (2.6.2) Fix in global di to_retry in send_coda per evitare problemi -# - (3.0.0) Fix in global di to_retry in send_coda per evitare problemi +# - (3.0.0) Prima versione code-assisted: riformulazione e ottimizzazione globale programma import time @@ -125,6 +125,9 @@ class ReadParallelaIOB: self.MAX_COUNTER_FILTER = config.getint('filter', 'MAX_COUNTER_FILTER') def setup_logging(self): + """ + Configures the logging system. + """ logging.basicConfig( level=logging.DEBUG, format='%(asctime)s %(name)-8s %(levelname)-8s %(message)s', @@ -137,6 +140,9 @@ class ReadParallelaIOB: self.logPro = logging.getLogger('program') def setup_gpio(self): + """ + Initializes the GPIO pins for input. + """ if GPIO is None: self.logPro.error("GPIO library not found. Are you on a Raspberry Pi?") sys.exit(1) @@ -151,13 +157,22 @@ class ReadParallelaIOB: sys.exit(1) def rqEnqueue(self, item): + """ + Adds an item to the Redis queue. + """ self.CodaR.rpush(self.queue_name, item) def rqDequeue(self): + """ + Removes and returns an item from the Redis queue. + """ item = self.CodaR.lpop(self.queue_name) return item.decode('utf-8') if item else None def rqLen(self): + """ + Returns the current length of the Redis queue. + """ return self.CodaR.llen(self.queue_name) def readParallelaFiltrata(self): @@ -302,6 +317,12 @@ class ReadParallelaIOB: self.timer_busy = False def run(self): + """ + Starts the main execution loop: + 1. Initializes GPIO. + 2. Spawns a background daemon thread to empty the Redis queue. + 3. Enters a loop to sample GPIO inputs, apply filters/blinking, and queue changes. + """ self.setup_gpio() # Start background thread for queue emptying @@ -348,6 +369,7 @@ class ReadParallelaIOB: self.to_long = self.TIMEOUTLONG except KeyboardInterrupt: + self.logPro.info("Keyboard interrupt received. Exiting...") break except Exception as e: self.logPro.error(f"Main loop error: {e}")