From 3694cd29a04e1c97b6f1c74b467c73aeccf2aed8 Mon Sep 17 00:00:00 2001 From: Nicolas Schodet Date: Sun, 6 Dec 2009 23:26:29 +0100 Subject: digital/{asserv,io}: limit the number of asserv state update, refs #72 --- digital/asserv/src/asserv/simu.host.c | 16 ++++++++++++---- digital/io/tools/test_simu_aquajim.py | 2 +- digital/io/tools/test_simu_control.py | 2 +- 3 files changed, 14 insertions(+), 6 deletions(-) (limited to 'digital') 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. */ diff --git a/digital/io/tools/test_simu_aquajim.py b/digital/io/tools/test_simu_aquajim.py index ea0136d0..44953a42 100644 --- a/digital/io/tools/test_simu_aquajim.py +++ b/digital/io/tools/test_simu_aquajim.py @@ -121,6 +121,6 @@ class TestSimu (InterNode): self.obstacle.notify () if __name__ == '__main__': - app = TestSimu (('../../asserv/src/asserv/asserv.host', '-m', 'aquajim'), + app = TestSimu (('../../asserv/src/asserv/asserv.host', '-m9', 'aquajim'), ('../src/io.host')) app.mainloop () diff --git a/digital/io/tools/test_simu_control.py b/digital/io/tools/test_simu_control.py index 1316a2c5..a3c5fd49 100644 --- a/digital/io/tools/test_simu_control.py +++ b/digital/io/tools/test_simu_control.py @@ -88,6 +88,6 @@ class TestSimuControl (TestSimu): pass if __name__ == '__main__': - app = TestSimuControl (('../../asserv/src/asserv/asserv.host', '-m', + app = TestSimuControl (('../../asserv/src/asserv/asserv.host', '-m9', 'aquajim'), ('../src/io.host')) app.mainloop () -- cgit v1.2.3