summaryrefslogtreecommitdiffhomepage
path: root/digital/io-hub/tools
diff options
context:
space:
mode:
authorNicolas Schodet2012-03-26 00:56:16 +0200
committerNicolas Schodet2012-03-26 00:56:16 +0200
commit0443ae6a587e083db400c25e52c9a2fff3d1a582 (patch)
tree6e8be6b5829ea2623643031fada10419478b9429 /digital/io-hub/tools
parent264e127ab49c0eef728ba28fe2c61e6b75249944 (diff)
digital/io-hub: add support for several robots
Diffstat (limited to 'digital/io-hub/tools')
-rw-r--r--digital/io-hub/tools/io_hub/__init__.py2
-rw-r--r--digital/io-hub/tools/io_hub/io_hub.py19
-rw-r--r--digital/io-hub/tools/io_hub/mex.py24
3 files changed, 26 insertions, 19 deletions
diff --git a/digital/io-hub/tools/io_hub/__init__.py b/digital/io-hub/tools/io_hub/__init__.py
index e84cb000..f46d072f 100644
--- a/digital/io-hub/tools/io_hub/__init__.py
+++ b/digital/io-hub/tools/io_hub/__init__.py
@@ -1,2 +1,2 @@
-from io_hub import Proto
+from io_hub import *
from mex import Mex
diff --git a/digital/io-hub/tools/io_hub/io_hub.py b/digital/io-hub/tools/io_hub/io_hub.py
index 06d237e9..bf038cf2 100644
--- a/digital/io-hub/tools/io_hub/io_hub.py
+++ b/digital/io-hub/tools/io_hub/io_hub.py
@@ -23,6 +23,8 @@
# }}}
import proto, time
+__all__ = [ 'Proto', 'ProtoRobospierre' ]
+
class Proto:
def __init__ (self, file, time = time.time, **param):
@@ -47,6 +49,16 @@ class Proto:
def goto (self, x, y, backward):
self.proto.send ('m', 'hhB', x, y, backward)
+ def close (self):
+ self.reset ()
+ self.proto.wait (lambda: True)
+ self.proto.file.close ()
+
+ def fileno (self):
+ return self.proto.fileno ()
+
+class ProtoRobospierre (Proto):
+
def clamp_move (self, pos):
self.proto.send ('c', 'B', pos)
@@ -69,11 +81,4 @@ class Proto:
def clamp_openclose (self, open_):
self.proto.send ('d', 'BB', 0xff, (0, 1)[open_])
- def close (self):
- self.reset ()
- self.proto.wait (lambda: True)
- self.proto.file.close ()
-
- def fileno (self):
- return self.proto.fileno ()
diff --git a/digital/io-hub/tools/io_hub/mex.py b/digital/io-hub/tools/io_hub/mex.py
index 9b72ccde..a86a5b2d 100644
--- a/digital/io-hub/tools/io_hub/mex.py
+++ b/digital/io-hub/tools/io_hub/mex.py
@@ -28,10 +28,8 @@ import simu.mex.msg
ADC_NB = 8
-PWM_NB = 6
PWM_VALUE_MAX = 1024
-CONTACT_NB = 10
CONTACT_INIT = 0xffffffff
class Mex:
@@ -200,16 +198,20 @@ class Mex:
self.pos[id] = p
self.notify ()
- def __init__ (self, node, instance = 'io-hub0'):
+ def __init__ (self, node, instance = 'io-hub0',
+ pwm_nb = 0, contact_nb = 0, codebar = False):
self.adc = tuple (self.ADC (node, instance, i) for i in range (0, ADC_NB))
- self.pwm = tuple (self.PWM () for i in range (0, PWM_NB))
- self.__pwm_pack = self.PWM.Pack (node, instance, self.pwm)
- self.__contact_pack = self.Contact.Pack (node, instance)
- self.contact = tuple (self.Contact (self.__contact_pack, i)
- for i in range (CONTACT_NB))
- self.__codebar_pack = self.Codebar.Pack (node, instance)
- self.codebar = tuple (self.Codebar (self.__codebar_pack, i)
- for i in (0, 1))
+ if pwm_nb:
+ self.pwm = tuple (self.PWM () for i in range (0, pwm_nb))
+ self.__pwm_pack = self.PWM.Pack (node, instance, self.pwm)
+ if contact_nb:
+ self.__contact_pack = self.Contact.Pack (node, instance)
+ self.contact = tuple (self.Contact (self.__contact_pack, i)
+ for i in range (contact_nb))
+ if codebar:
+ self.__codebar_pack = self.Codebar.Pack (node, instance)
+ self.codebar = tuple (self.Codebar (self.__codebar_pack, i)
+ for i in (0, 1))
self.path = self.Path (node, instance)
self.pos_report = self.PosReport (node, instance)