diff options
Diffstat (limited to 'esds/node.py')
| -rw-r--r-- | esds/node.py | 17 |
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): |
