summaryrefslogtreecommitdiff
path: root/digital/io-hub/src/guybrush/main.c
diff options
context:
space:
mode:
authorNicolas Schodet2012-04-18 01:59:15 +0200
committerNicolas Schodet2012-05-01 10:11:37 +0200
commitdc59b1c284bf412878e80a102574fde4b60ef7c1 (patch)
treeccb2dc4b07baa738b829eb94ea684f446ccb44fc /digital/io-hub/src/guybrush/main.c
parent929dab13061cfe82cce6125dfb4adb40c3ef6639 (diff)
digital/io-hub/src/guybrush: add pressure regulation
Diffstat (limited to 'digital/io-hub/src/guybrush/main.c')
-rw-r--r--digital/io-hub/src/guybrush/main.c19
1 files changed, 19 insertions, 0 deletions
diff --git a/digital/io-hub/src/guybrush/main.c b/digital/io-hub/src/guybrush/main.c
index c7ef204a..f2d8d4e7 100644
--- a/digital/io-hub/src/guybrush/main.c
+++ b/digital/io-hub/src/guybrush/main.c
@@ -42,6 +42,7 @@
#include "contact.h"
#include "output.h"
#include "radar.h"
+#include "pressure.h"
#define FSM_NAME AI
#include "fsm.h"
@@ -79,6 +80,9 @@ static uint8_t main_stats_contact_, main_stats_contact_cpt_;
/** US sensors stats counters. */
static uint8_t main_stats_usdist_, main_stats_usdist_cpt_;
+/** Pressure stats counters. */
+static uint8_t main_stats_pressure_, main_stats_pressure_cpt_;
+
/** Main initialisation. */
static void
main_init (void)
@@ -186,6 +190,7 @@ main_loop (void)
move_obstacles_update ();
simu_send_pos_report (main_obstacles_pos, main_obstacles_nb, 0);
}
+ pressure_update ();
/* Update AI modules. */
path_decay ();
/* Only manage events if slaves are synchronised. */
@@ -213,6 +218,11 @@ main_loop (void)
usdist_mm[3]);
main_stats_usdist_cpt_ = main_stats_usdist_;
}
+ if (main_stats_pressure_ && !--main_stats_pressure_cpt_)
+ {
+ proto_send1w ('F', pressure_get ());
+ main_stats_pressure_cpt_ = main_stats_pressure_;
+ }
}
}
@@ -267,6 +277,11 @@ proto_callback (uint8_t cmd, uint8_t size, uint8_t *args)
}
}
break;
+ case c ('f', 2):
+ /* Set low pressure threshold.
+ * 1w: sensor value, 1024 is full scale. */
+ pressure_set (v8_to_v16 (args[0], args[1]));
+ break;
/* Stats commands.
* - b: interval between stats. */
case c ('A', 1):
@@ -281,6 +296,10 @@ proto_callback (uint8_t cmd, uint8_t size, uint8_t *args)
/* US sensors stats. */
main_stats_usdist_ = main_stats_usdist_cpt_ = args[0];
break;
+ case c ('F', 1):
+ /* Pressure stats. */
+ main_stats_pressure_ = main_stats_pressure_cpt_ = args[0];
+ break;
default:
/* Unknown commands */
proto_send0 ('?');