Skip to content
Snippets Groups Projects
Commit 948bd323 authored by jkerdreu's avatar jkerdreu
Browse files

new rx_handler API .. no more Engine subclassing :)

git-svn-id: https://redmine.imt-atlantique.fr/svn/xaal/code/Python/trunk@1403 b32b6428-25c9-4566-ad07-03861ab6144f
parent e1fee281
No related branches found
No related tags found
No related merge requests found
...@@ -8,21 +8,25 @@ switchID = '68653832-c675-11e4-bef3-cfe5e8fb62d4' ...@@ -8,21 +8,25 @@ switchID = '68653832-c675-11e4-bef3-cfe5e8fb62d4'
pboxID = '17025fb4-d3b9-11e4-a83c-71b97dd42f00' pboxID = '17025fb4-d3b9-11e4-a83c-71b97dd42f00'
class Engine(xAAL.core.Engine):
class SimpleAutomataTest(xAAL.devices.Device):
def __init__(self,eng):
ID = xAAL.tools.get_random_uuid()
xAAL.devices.Device.__init__(self,"automata.basic",ID)
self.eng = eng
self.mf = eng.get_message_factory()
def drive(self,devID,action,body=None): def drive(self,devID,action,body=None):
mf = self.get_message_factory() msg = self.mf.build_msg(dev=None,targets=[devID,],msgtype='request',action=action,body=body)
msg = mf.build_msg(dev=None,targets=[devID,],msgtype='request',action=action,body=body) self.eng.queue_tx(msg)
self.queue_tx(msg)
def alert(self,devID,state): def alert(self,devID,state):
body = {'title':'xAAL test automata','msg':'Lamp is %s' % state } body = {'title':'xAAL test automata','msg':'Lamp is %s' % state }
mf = self.get_message_factory() msg = self.mf.build_msg(dev=None,targets=[devID,],msgtype='request',action='notify',body=body)
msg = mf.build_msg(dev=None,targets=[devID,],msgtype='request',action='notify',body=body) self.eng.queue_tx(msg)
self.queue_tx(msg)
def handle_request(self,msg): def receive_msg(self,msg):
if (msg.get_source() == switchID) and (msg.get_action() == 'attributesChange'): if (msg.get_source() == switchID) and (msg.get_action() == 'attributesChange'):
state = msg.body['position'] state = msg.body['position']
if state : if state :
...@@ -30,10 +34,16 @@ class Engine(xAAL.core.Engine): ...@@ -30,10 +34,16 @@ class Engine(xAAL.core.Engine):
self.alert(pboxID,'on') self.alert(pboxID,'on')
else: else:
self.drive(lampID,'off') self.drive(lampID,'off')
else:
self.eng.handle_request(msg)
if __name__ == '__main__': if __name__ == '__main__':
engine = Engine() engine = xAAL.core.Engine()
auto = SimpleAutomataTest(engine)
engine.register_devices([auto,])
engine.set_rx_msg_handler(auto.receive_msg)
try: try:
engine.run() engine.run()
except KeyboardInterrupt: except KeyboardInterrupt:
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment