From 4d89714a05aeb17126d206e6003bf922a37966ab Mon Sep 17 00:00:00 2001 From: Nicolas Schodet Date: Sun, 22 May 2011 22:03:17 +0200 Subject: digital/io-hub: add door/clamp command --- digital/io-hub/src/robospierre/clamp.c | 19 +++++++++++++++++++ digital/io-hub/src/robospierre/clamp.h | 4 ++++ digital/io-hub/src/robospierre/main.c | 6 ++++++ 3 files changed, 29 insertions(+) (limited to 'digital') diff --git a/digital/io-hub/src/robospierre/clamp.c b/digital/io-hub/src/robospierre/clamp.c index 0172d891..b32549d2 100644 --- a/digital/io-hub/src/robospierre/clamp.c +++ b/digital/io-hub/src/robospierre/clamp.c @@ -221,6 +221,25 @@ clamp_drop_clear (void) FSM_HANDLE (AI, clamp_drop_clear); } +void +clamp_door (uint8_t pos, uint8_t open) +{ + if (pos == 0xff) + { + if (open) + pwm_set_timed (BOT_PWM_CLAMP, BOT_PWM_CLAMP_OPEN); + else + pwm_set_timed (BOT_PWM_CLAMP, BOT_PWM_CLAMP_CLOSE); + } + else if (clamp_slot_door[pos] != 0xff) + { + if (open) + pwm_set_timed (clamp_slot_door[pos], BOT_PWM_DOOR_OPEN); + else + pwm_set_timed (clamp_slot_door[pos], BOT_PWM_DOOR_CLOSE (pos)); + } +} + uint8_t clamp_handle_event (void) { diff --git a/digital/io-hub/src/robospierre/clamp.h b/digital/io-hub/src/robospierre/clamp.h index 7471ceac..231c3a84 100644 --- a/digital/io-hub/src/robospierre/clamp.h +++ b/digital/io-hub/src/robospierre/clamp.h @@ -81,6 +81,10 @@ clamp_drop (uint8_t drop_direction); void clamp_drop_clear (void); +/** Open/close door (pos = slot) or clamp (pos = 0xff). */ +void +clamp_door (uint8_t pos, uint8_t open); + /** Examine sensors to generate new events, return non zero if an event was * generated. */ uint8_t diff --git a/digital/io-hub/src/robospierre/main.c b/digital/io-hub/src/robospierre/main.c index 7d962f47..4e75a92e 100644 --- a/digital/io-hub/src/robospierre/main.c +++ b/digital/io-hub/src/robospierre/main.c @@ -253,6 +253,12 @@ proto_callback (uint8_t cmd, uint8_t size, uint8_t *args) else clamp_drop (args[0]); break; + case c ('d', 2): + /* Open or close door or clamp. + * - 1b: pos, or 0xff for clamp. + * - 1b: non zero to open. */ + clamp_door (args[0], args[1]); + break; /* Stats commands. * - b: interval between stats. */ case c ('A', 1): -- cgit v1.2.3