summaryrefslogtreecommitdiff
path: root/esds/node.py
diff options
context:
space:
mode:
authorLoic Guegan <manzerbredes@mailbox.org>2022-09-09 13:16:42 +0200
committerLoic Guegan <manzerbredes@mailbox.org>2022-09-09 13:16:42 +0200
commitcfa677a0c678f742203aea601c6368768e5467da (patch)
treebe42cf52fc912a6ca78d334039d47cfb591e9e43 /esds/node.py
parent57f020e09d738e283520e8cfc88b4cdd1aeaa551 (diff)
Debug synchronization + add return code
Diffstat (limited to 'esds/node.py')
-rw-r--r--esds/node.py17
1 files changed, 12 insertions, 5 deletions
diff --git a/esds/node.py b/esds/node.py
index 4f16f46..12e7a13 100644
--- a/esds/node.py
+++ b/esds/node.py
@@ -1,4 +1,5 @@
import threading,importlib,queue
+from esds.rcode import RCode
class Node:
available_node_id=0
@@ -22,7 +23,7 @@ class Node:
def plugin_register(self,plugin):
self.plugins.append(plugin)
- def plugin_notify(self,reason,args,time=None):
+ def plugin_notify(self,reason,args=None,time=None):
"""
This function strives to avoid using Python specific features
"""
@@ -35,6 +36,10 @@ class Node:
p.on_send_return(args[0],args[1],args[2],args[3],args[4])
if reason == "on_communication_end":
p.on_communication_end(time,args)
+ if reason == "turn_off_return":
+ p.on_turn_off()
+ if reason == "turn_on_return":
+ p.on_turn_on()
if reason == "terminated":
p.on_terminated()
@@ -96,12 +101,14 @@ class Node:
self["request"]="turn_off"
self["state"]="call_non_blocking"
self.wait_ack(["turn_off"])
+ self.plugin_notify("turn_off_return")
def turn_on(self):
self["turned_on"]=True
self["request"]="turn_on"
self["state"]="call_non_blocking"
self.wait_ack(["turn_on"])
+ self.plugin_notify("turn_on_return")
def send(self, interface, data, datasize, dst, receiver_required=False):
if interface not in self["interfaces"]:
@@ -141,7 +148,7 @@ class Node:
self["request"]="send"
self["state"]="call_blocking"
ack=self.wait_ack(["send","timeout","send_cancel"])
- status=-1
+ status=RCode.TIMEOUT_EXPIRE
if ack[0] == "timeout":
self["request"]="send_cancel"
self["state"]="call_non_blocking"
@@ -164,7 +171,7 @@ class Node:
self.wait_ack(["receive"])
data,start_at,end_at=self["interfaces"][interface].get()
self.plugin_notify("receive_return",(interface,data,start_at,end_at))
- return (0,data)
+ return (RCode.SUCCESS,data)
def receivet(self,interface, timeout):
if interface not in self["interfaces"]:
@@ -183,14 +190,14 @@ class Node:
self.rargs=interface
self["state"]="call_blocking"
ack=self.wait_ack(["receive","timeout"])
- result=(-1,None)
+ result=(RCode.TIMEOUT_EXPIRE,None)
if ack[0] != "timeout":
self["request"]="timeout_remove"
self["state"]="call_non_blocking"
self.wait_ack(["timeout_remove"])
data,start_at,end_at=self["interfaces"][interface].get()
self.plugin_notify("receivet_return",(interface,data,start_at,end_at))
- result=(0,data)
+ result=(RCode.SUCCESS,data)
return result
def wait_ack(self, ack_types):