summaryrefslogtreecommitdiff
path: root/digital/io-hub/src/robospierre/simu.host.c
diff options
context:
space:
mode:
Diffstat (limited to 'digital/io-hub/src/robospierre/simu.host.c')
-rw-r--r--digital/io-hub/src/robospierre/simu.host.c15
1 files changed, 15 insertions, 0 deletions
diff --git a/digital/io-hub/src/robospierre/simu.host.c b/digital/io-hub/src/robospierre/simu.host.c
index f7a43eea..7ca7364b 100644
--- a/digital/io-hub/src/robospierre/simu.host.c
+++ b/digital/io-hub/src/robospierre/simu.host.c
@@ -34,6 +34,9 @@
/** AVR registers. */
uint8_t PORTA, DDRA, PINA, PINE, PINF;
+/** Message types. */
+uint8_t simu_mex_pos_report;
+
static void
simu_adc_handle (void *user, mex_msg_t *msg)
{
@@ -52,6 +55,7 @@ simu_init (void)
mex_instance = host_get_instance ("io-hub0", 0);
uint8_t mtype = mex_node_reservef ("%s:adc", mex_instance);
mex_node_register (mtype, simu_adc_handle, 0);
+ simu_mex_pos_report = mex_node_reservef ("%s:pos-report", mex_instance);
}
/** Make a simulation step. */
@@ -74,3 +78,14 @@ timer_wait (void)
return 0;
}
+void
+simu_send_pos_report (vect_t *pos, uint8_t pos_nb, uint8_t id)
+{
+ mex_msg_t *m;
+ m = mex_msg_new (simu_mex_pos_report);
+ mex_msg_push (m, "b", id);
+ for (; pos_nb; pos++, pos_nb--)
+ mex_msg_push (m, "hh", pos->x, pos->y);
+ mex_node_send (m);
+}
+