From 3a9cb5ee438f1cef6193ae3a00764cb29f5ecf0e Mon Sep 17 00:00:00 2001
From: jkerdreu <jkerdreu@b32b6428-25c9-4566-ad07-03861ab6144f>
Date: Wed, 20 Oct 2021 12:52:47 +0000
Subject: [PATCH] Cleanup before merging Aio

git-svn-id: https://redmine.imt-atlantique.fr/svn/xaal/code/Python/branches/0.7@2715 b32b6428-25c9-4566-ad07-03861ab6144f
---
 apps/tools/xaal/tools/dumper.py      |  5 +++--
 apps/tools/xaal/tools/info.py        |  2 +-
 apps/tools/xaal/tools/isalive.py     |  4 ++--
 apps/tools/xaal/tools/log.py         |  2 +-
 apps/tools/xaal/tools/tail.py        |  2 +-
 apps/tools/xaal/tools/uuidgen.py     |  2 +-
 libs/lib/xaal/lib/core.py            | 21 +++++++++++++--------
 libs/monitor/xaal/monitor/monitor.py |  2 +-
 scripts/alarm.py                     |  2 +-
 scripts/btn_relay.py                 |  2 +-
 scripts/btn_relay_labo.py            |  2 +-
 scripts/ensibs_btn.py                |  2 +-
 12 files changed, 27 insertions(+), 21 deletions(-)

diff --git a/apps/tools/xaal/tools/dumper.py b/apps/tools/xaal/tools/dumper.py
index ee555320..d1b21038 100644
--- a/apps/tools/xaal/tools/dumper.py
+++ b/apps/tools/xaal/tools/dumper.py
@@ -18,7 +18,8 @@
 #
 
 
-from xaal.lib import Engine,helpers
+#from xaal.lib import Engine,helpers
+from xaal.aiolib import Engine,helpers
 
 helpers.setup_console_logger()
 helpers.set_console_title("xaal-dumper")
@@ -29,7 +30,7 @@ def display(msg):
 def main():
     try:
         eng = Engine()
-        eng.add_rx_handler(display)
+        eng.subscribe(display)
         eng.run()
     except KeyboardInterrupt:
         print("Bye Bye")
diff --git a/apps/tools/xaal/tools/info.py b/apps/tools/xaal/tools/info.py
index 6f5509e3..1225b5aa 100644
--- a/apps/tools/xaal/tools/info.py
+++ b/apps/tools/xaal/tools/info.py
@@ -39,7 +39,7 @@ class InfoDumper:
         dev.vendor_id = "IHSEV"
         dev.product_id = "xAAL InfoDumper"
         self.eng.add_device(dev)
-        self.eng.add_rx_handler(self.parse_answer)
+        self.eng.subscribe(self.parse_answer)
         print(f"xAAL Info dumper [{addr}]")
         self.dev = dev
 
diff --git a/apps/tools/xaal/tools/isalive.py b/apps/tools/xaal/tools/isalive.py
index 5c6a6963..6a7080ab 100644
--- a/apps/tools/xaal/tools/isalive.py
+++ b/apps/tools/xaal/tools/isalive.py
@@ -33,7 +33,7 @@ class Scanner:
         # new fake device
         self.dev = Device("cli.experimental",tools.get_random_uuid())
         self.eng.add_device(self.dev)
-        self.eng.add_rx_handler(self.parse_answer)
+        self.eng.subscribe(self.parse_answer)
 
     def query(self,dev_type):
         if not tools.is_valid_dev_type(dev_type):
@@ -54,7 +54,7 @@ class Scanner:
         t0 = time.time()
         while 1:
             self.eng.loop()
-            if time.time() > (t0 + 1):
+            if time.time() > (t0 + 2):
                 break
 
     def parse_answer(self,msg):
diff --git a/apps/tools/xaal/tools/log.py b/apps/tools/xaal/tools/log.py
index 9e75f0bb..face687c 100644
--- a/apps/tools/xaal/tools/log.py
+++ b/apps/tools/xaal/tools/log.py
@@ -15,7 +15,7 @@ def print_evt(msg):
 def main():
     try:
         eng = Engine()
-        eng.add_rx_handler(print_evt)
+        eng.subscribe(print_evt)
         eng.run()
     except KeyboardInterrupt:
         print("ByeBye..")
diff --git a/apps/tools/xaal/tools/tail.py b/apps/tools/xaal/tools/tail.py
index 0c091d87..b7f0725c 100644
--- a/apps/tools/xaal/tools/tail.py
+++ b/apps/tools/xaal/tools/tail.py
@@ -80,7 +80,7 @@ def main():
         level = int(sys.argv[1])
 
         eng = Engine()
-        eng.add_rx_handler(display)
+        eng.subscribe(display)
 
         eng.start()
         term('@@')
diff --git a/apps/tools/xaal/tools/uuidgen.py b/apps/tools/xaal/tools/uuidgen.py
index cd80bd41..94c70e38 100644
--- a/apps/tools/xaal/tools/uuidgen.py
+++ b/apps/tools/xaal/tools/uuidgen.py
@@ -1,4 +1,4 @@
-from xaal.lib import tools,config
+from xaal.lib import tools
 import sys
 
 
diff --git a/libs/lib/xaal/lib/core.py b/libs/lib/xaal/lib/core.py
index e756d3aa..c9a92eac 100644
--- a/libs/lib/xaal/lib/core.py
+++ b/libs/lib/xaal/lib/core.py
@@ -28,16 +28,21 @@ from . import config
 import time
 import inspect
 import collections
+from enum import Enum
 
 import logging
 logger = logging.getLogger(__name__)
 
+class EngineState(Enum):
+    start = 0
+    run  = 1
+    halt   = 2
+
 class Engine(object):
 
     def __init__(self,address=config.address,port=config.port,hops=config.hops,key=config.key):
         self.devices = []                        # list of devices / use (un)register_devices()
-        self.started = False                     # engine started or not
-        self.running = False                     # engine is running or not
+        self.state = EngineState.halt
         self.timers = []                         # functions to call periodic
         self.__last_timer = 0                    # last timer check
         self.subscribers =[self.handle_request]  # message receive workflow
@@ -319,21 +324,21 @@ class Engine(object):
 
     def start(self):
         """Start the core engine: send queue alive msg"""
-        if self.started:
+        if self.state in [EngineState.start,EngineState.run]:
             return
         self.network.connect()
         for dev in self.devices:
             self.send_alive(dev)
             dev.update_alive()
-        self.started = True
+        self.state = EngineState.start
 
     def stop(self):
-        self.running = False
+        self.state = EngineState.halt
 
     def run(self):
         self.start()
-        self.running = True
-        while self.running:
+        self.state = EngineState.run
+        while self.state == EngineState.run:
             self.loop()
 
 
@@ -341,7 +346,7 @@ def filter_msg_for_devices(msg, devices):
     """loop throught the devices, to find which are
     expected w/ the msg
 
-    - Filter on devTypes for isAlive request.
+    - Filter on dev_types for is_alive request.
     - Filter on device address
     """
     results = []
diff --git a/libs/monitor/xaal/monitor/monitor.py b/libs/monitor/xaal/monitor/monitor.py
index e399166d..b106c09d 100644
--- a/libs/monitor/xaal/monitor/monitor.py
+++ b/libs/monitor/xaal/monitor/monitor.py
@@ -212,7 +212,7 @@ class Monitor:
         self.devices = Devices()
         self.filter = filter_func
         self.subscribers = []
-        self.engine.add_rx_handler(self.on_receive_msg)
+        self.engine.subscribe(self.on_receive_msg)
         # only send isAlive message every 2 expirations
         self.send_isalive()
         self.engine.add_timer(self.refresh_alives,REFRESH_TIMER)
diff --git a/scripts/alarm.py b/scripts/alarm.py
index c778097a..2705800b 100644
--- a/scripts/alarm.py
+++ b/scripts/alarm.py
@@ -111,7 +111,7 @@ def main():
     dev.new_attribute('state')
     engine = Engine()
     engine.add_device(dev)
-    engine.add_rx_handler(handle_msg)
+    engine.subscribe(handle_msg)
     engine.add_timer(update,1)
     engine.run()
 
diff --git a/scripts/btn_relay.py b/scripts/btn_relay.py
index 488b4d7f..b91c36bc 100644
--- a/scripts/btn_relay.py
+++ b/scripts/btn_relay.py
@@ -68,7 +68,7 @@ def main():
     dev.info = '%s@%s' % (PKG_NAME,platform.node())
     engine = Engine()
     engine.add_device(dev)
-    engine.add_rx_handler(handle_msg)
+    engine.subscribe(handle_msg)
     engine.run()
 
 if __name__ == '__main__':
diff --git a/scripts/btn_relay_labo.py b/scripts/btn_relay_labo.py
index 9d9abbe3..b526e654 100644
--- a/scripts/btn_relay_labo.py
+++ b/scripts/btn_relay_labo.py
@@ -146,7 +146,7 @@ def main():
     dev.info = '%s@%s' % (PKG_NAME,platform.node())
     engine = Engine()
     engine.add_device(dev)
-    engine.add_rx_handler(handle_msg)
+    engine.subscribe(handle_msg)
     mon = Monitor(dev)
     engine.run()
 
diff --git a/scripts/ensibs_btn.py b/scripts/ensibs_btn.py
index aa5b53de..cc39b6fb 100644
--- a/scripts/ensibs_btn.py
+++ b/scripts/ensibs_btn.py
@@ -160,7 +160,7 @@ def main():
     dev.info = '%s@%s' % (PKG_NAME,platform.node())
     engine = Engine()
     engine.add_device(dev)
-    engine.add_rx_handler(handle_msg)
+    engine.subscribe(handle_msg)
     mon = Monitor(dev)
     engine.run()
 
-- 
GitLab