summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--digital/ai/tools/robospierre.py2
-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
-rw-r--r--host/simu/robots/robospierre/link/bag.py3
5 files changed, 29 insertions, 21 deletions
diff --git a/digital/ai/tools/robospierre.py b/digital/ai/tools/robospierre.py
index 0d258b34..3b63f7ce 100644
--- a/digital/ai/tools/robospierre.py
+++ b/digital/ai/tools/robospierre.py
@@ -41,7 +41,7 @@ class Robot:
asserv.init.host['robospierre'])
self.mimot = proto (mimot.Proto, mimot_cmd,
mimot.init.host['robospierre'])
- self.io = proto (io_hub.Proto, io_hub_cmd,
+ self.io = proto (io_hub.ProtoRobospierre, io_hub_cmd,
io_hub.init.host['robospierre'])
self.protos = (self.asserv, self.mimot, self.io)
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)
diff --git a/host/simu/robots/robospierre/link/bag.py b/host/simu/robots/robospierre/link/bag.py
index e3368d55..0f8a87cd 100644
--- a/host/simu/robots/robospierre/link/bag.py
+++ b/host/simu/robots/robospierre/link/bag.py
@@ -30,6 +30,7 @@ class Bag:
def __init__ (self, node, instance = 'robot0'):
self.asserv = asserv.mex.Mex (node, '%s:asserv0' % instance)
- self.io_hub = io_hub.mex.Mex (node, '%s:io0' % instance)
+ self.io_hub = io_hub.mex.Mex (node, '%s:io0' % instance,
+ pwm_nb = 6, contact_nb = 10, codebar = True)
self.mimot = mimot.mex.Mex (node, '%s:mimot0' % instance)