summaryrefslogtreecommitdiffhomepage
path: root/digital
diff options
context:
space:
mode:
authorNicolas Schodet2011-03-30 22:12:22 +0200
committerNicolas Schodet2011-03-30 23:52:36 +0200
commita663069b33a6ed5344187dcd1ab48022a681ae1b (patch)
tree0a89ad459cea95d9d5f971c3b93692cefeaf0806 /digital
parent915ee1c2d7244733726e71126cb7d38bffbf55fa (diff)
digital/asserv: use message type registry, refs #157
Diffstat (limited to 'digital')
-rw-r--r--digital/asserv/src/asserv/simu.host.c18
-rw-r--r--digital/asserv/tools/asserv/mex.py24
2 files changed, 24 insertions, 18 deletions
diff --git a/digital/asserv/src/asserv/simu.host.c b/digital/asserv/src/asserv/simu.host.c
index 019f8864..10cef711 100644
--- a/digital/asserv/src/asserv/simu.host.c
+++ b/digital/asserv/src/asserv/simu.host.c
@@ -87,6 +87,11 @@ double simu_counter_left_th, simu_counter_right_th;
/** Use mex. */
int simu_mex;
+/** Mex message types. */
+uint8_t simu_mex_position;
+uint8_t simu_mex_pwm;
+uint8_t simu_mex_aux;
+
/** Counter to limit the interval between information is sent. */
int simu_send_cpt;
@@ -96,14 +101,19 @@ simu_init (void)
{
int argc;
char **argv;
+ const char *mex_instance;
host_get_program_arguments (&argc, &argv);
if (argc == 2 && strncmp (argv[0], "-m", 2) == 0)
{
simu_mex = atoi (argv[0] + 2);
+ argc--; argv++;
if (!simu_mex) simu_mex = 1;
simu_send_cpt = simu_mex;
mex_node_connect ();
- argc--; argv++;
+ mex_instance = host_get_instance ("asserv0", 0);
+ simu_mex_position = mex_node_reservef ("%s:position", mex_instance);
+ simu_mex_pwm = mex_node_reservef ("%s:pwm", mex_instance);
+ simu_mex_aux = mex_node_reservef ("%s:aux", mex_instance);
}
if (argc != 1)
{
@@ -383,7 +393,7 @@ simu_send (void)
|| simu_pos_y_to_send != simu_pos_y_sent
|| simu_pos_a_to_send != simu_pos_a_sent)
{
- m = mex_msg_new (0xa0);
+ m = mex_msg_new (simu_mex_position);
mex_msg_push (m, "hhl", simu_pos_x_to_send, simu_pos_y_to_send,
simu_pos_a_to_send);
mex_node_send (m);
@@ -397,7 +407,7 @@ simu_send (void)
|| pwm_left_sent == pwm_left.cur
|| pwm_right_sent == pwm_right.cur)
{
- m = mex_msg_new (0xa1);
+ m = mex_msg_new (simu_mex_pwm);
mex_msg_push (m, "hh", pwm_left.cur, pwm_right.cur);
for (i = 0; i < AC_ASSERV_AUX_NB; i++)
mex_msg_push (m, "h", pwm_aux[i].cur);
@@ -418,7 +428,7 @@ simu_send (void)
}
if (first || simu_aux_model_changed)
{
- m = mex_msg_new (0xa8);
+ m = mex_msg_new (simu_mex_aux);
for (i = 0; i < AC_ASSERV_AUX_NB; i++)
{
if (simu_robot->aux_motor[i])
diff --git a/digital/asserv/tools/asserv/mex.py b/digital/asserv/tools/asserv/mex.py
index 6257fb0d..059a29ce 100644
--- a/digital/asserv/tools/asserv/mex.py
+++ b/digital/asserv/tools/asserv/mex.py
@@ -25,10 +25,6 @@
from utils.observable import Observable
-ID_POSITION = 0xa0
-ID_PWM = 0xa1
-ID_AUX = 0xa8
-
class Mex:
"""Handle communications with simulated asserv."""
@@ -40,11 +36,11 @@ class Mex:
"""
- def __init__ (self, node):
+ def __init__ (self, node, instance):
Observable.__init__ (self)
self.pos = None
self.angle = None
- node.register (ID_POSITION, self.__handle)
+ node.register (instance + ':position', self.__handle)
def __handle (self, msg):
x, y, a = msg.pop ('hhl')
@@ -59,10 +55,10 @@ class Mex:
"""
- def __init__ (self, node):
+ def __init__ (self, node, instance):
Observable.__init__ (self)
self.pwm = None
- node.register (ID_PWM, self.__handle)
+ node.register (instance + ':pwm', self.__handle)
def __handle (self, msg):
self.pwm = msg.pop ('hhhh')
@@ -82,9 +78,9 @@ class Mex:
class Pack:
"""Handle reception of several Aux for one message."""
- def __init__ (self, node, list):
+ def __init__ (self, node, instance, list):
self.__list = list
- node.register (ID_AUX, self.__handle)
+ node.register (instance + ':aux', self.__handle)
def __handle (self, msg):
angles = msg.pop ('%dl' % len (self.__list))
@@ -92,9 +88,9 @@ class Mex:
aux.angle = float (angle) / 1024
aux.notify ()
- def __init__ (self, node):
- self.position = self.Position (node)
- self.pwm = self.PWM (node)
+ def __init__ (self, node, instance = 'asserv0'):
+ self.position = self.Position (node, instance)
+ self.pwm = self.PWM (node, instance)
self.aux = (self.Aux (), self.Aux ())
- self.__aux_pack = self.Aux.Pack (node, self.aux)
+ self.__aux_pack = self.Aux.Pack (node, instance, self.aux)