diff --git a/apps/tools/xaal/tools/dumper.py b/apps/tools/xaal/tools/dumper.py index ee555320541d7c3c81889ed017b097c5adc758a8..d1b21038c2408aba6a6769d9138098ac7ecab0cf 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 6f5509e3abb3ddce40d4dab0f277a15bbeb13fa3..1225b5aa1c45ee45b3c7908b3ed5e90ea9ba9f6d 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 5c6a69630014d7a2910f4409bdeac9ef7b6a0481..6a7080abfc100e74b16e1a7074b4be61c891cc65 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 9e75f0bb3139495b7b872f49d9aaacc09187b997..face687c852386dc588423edf41e6b34bfb86809 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 0c091d87d33e6c11da2d975fee95655bf2c6f75c..b7f0725c8be38927df266704adef482087d3a727 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 cd80bd41e57f80efd6c792758d240b357d7d14e6..94c70e381e99d935b4997dbf3f5d905331de5cf3 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 e756d3aa38fbc46159689a3ce2eb70c91f654750..c9a92eac67a31076ebdef89c1a077fa814f41775 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 e399166d88e5096487867d8fddd8eb55713a14c5..b106c09d9946f4228e1d90eea4cfc29bd7f313e9 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 c778097ac05b02d018a3ee7d5a6e17f9504744c7..2705800bbf35af116fcc613e11021e7f5ae35c6f 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 488b4d7f85bafe8587a2f12ececaf75689f0e89d..b91c36bc1bcfa4e881d215d335dd00160f134866 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 9d9abbe3f2674ab917824694cb291d1878a6e0bc..b526e6542b38bf42f0affc370e5ccc815cc15fe8 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 aa5b53deed4de098ee11965741295e8645a75769..cc39b6fb0cac13fdf4f606a26f8d96c8331a8201 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()