From dc59b1c284bf412878e80a102574fde4b60ef7c1 Mon Sep 17 00:00:00 2001 From: Nicolas Schodet Date: Wed, 18 Apr 2012 01:59:15 +0200 Subject: digital/io-hub/src/guybrush: add pressure regulation --- digital/io-hub/src/guybrush/main.c | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) (limited to 'digital/io-hub/src/guybrush/main.c') 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 ('?'); -- cgit v1.2.3