summaryrefslogtreecommitdiff
path: root/digital/asserv/src/asserv
diff options
context:
space:
mode:
authorNicolas Schodet2009-12-06 23:26:29 +0100
committerNicolas Schodet2009-12-06 23:26:29 +0100
commit3694cd29a04e1c97b6f1c74b467c73aeccf2aed8 (patch)
tree0a923d2e132afbee9c01c6e2e70a5d84cf28d812 /digital/asserv/src/asserv
parentebe75b61f5708017cd2793d9158ce1c69345161f (diff)
digital/{asserv,io}: limit the number of asserv state update, refs #72
Diffstat (limited to 'digital/asserv/src/asserv')
-rw-r--r--digital/asserv/src/asserv/simu.host.c16
1 files changed, 12 insertions, 4 deletions
diff --git a/digital/asserv/src/asserv/simu.host.c b/digital/asserv/src/asserv/simu.host.c
index 76a92ae1..07e441ea 100644
--- a/digital/asserv/src/asserv/simu.host.c
+++ b/digital/asserv/src/asserv/simu.host.c
@@ -87,6 +87,9 @@ double simu_counter_left_th, simu_counter_right_th;
/** Use mex. */
int simu_mex;
+/** Counter to limit the interval between information is sent. */
+int simu_send_cpt;
+
/** Initialise simulation. */
static void
simu_init (void)
@@ -94,15 +97,17 @@ simu_init (void)
int argc;
char **argv;
host_get_program_arguments (&argc, &argv);
- if (argc == 2 && strcmp (argv[0], "-m") == 0)
+ if (argc == 2 && strncmp (argv[0], "-m", 2) == 0)
{
- simu_mex = 1;
+ simu_mex = atoi (argv[0] + 2);
+ if (!simu_mex) simu_mex = 1;
+ simu_send_cpt = simu_mex;
mex_node_connect ();
argc--; argv++;
}
if (argc != 1)
{
- fprintf (stderr, "Syntax: asserv.host [-m] model\n");
+ fprintf (stderr, "Syntax: asserv.host [-m[interval]] model\n");
exit (1);
}
simu_robot = models_get (argv[0]);
@@ -404,8 +409,11 @@ timer_wait (void)
if (simu_mex)
mex_node_wait_date (mex_node_date () + 4);
simu_step ();
- if (simu_mex)
+ if (simu_mex && !--simu_send_cpt)
+ {
+ simu_send_cpt = simu_mex;
simu_send ();
+ }
}
/** Read timer value. Used for performance analysis. */