From f78d43b5767db1ef7e39c871202851fc5d5360c9 Mon Sep 17 00:00:00 2001 From: Nicolas Schodet Date: Fri, 4 May 2012 02:24:26 +0200 Subject: digital/io-hub/src/guybrush: first unload implementation --- digital/io-hub/src/guybrush/strat.c | 23 +++++++++++++++++++++-- 1 file changed, 21 insertions(+), 2 deletions(-) (limited to 'digital/io-hub/src/guybrush/strat.c') diff --git a/digital/io-hub/src/guybrush/strat.c b/digital/io-hub/src/guybrush/strat.c index fa1908e5..6ed38d01 100644 --- a/digital/io-hub/src/guybrush/strat.c +++ b/digital/io-hub/src/guybrush/strat.c @@ -79,6 +79,8 @@ struct strat_t uint8_t last_decision; /** Place of last decision. */ uint8_t last_place; + /** Robot content estimation. */ + uint8_t load; /** Places information. */ struct strat_place_dyn_t place[STRAT_PLACE_NB]; }; @@ -97,6 +99,13 @@ uint8_t strat_decision (vect_t *pos) { uint8_t i; + if (strat.load > 1) + { + strat.last_decision = STRAT_DECISION_UNLOAD; + pos->x = PG_X (BOT_SIZE_RADIUS + 30); + pos->y = PG_Y (PG_LENGTH / 2); + return strat.last_decision; + } for (i = 0; i < STRAT_PLACE_NB; i++) { if (strat.place[i].valid) @@ -114,7 +123,17 @@ strat_decision (vect_t *pos) void strat_success (void) { - assert (strat.last_decision != (uint8_t) -1); - strat.place[strat.last_place].valid = 0; + switch (strat.last_decision) + { + case STRAT_DECISION_TOTEM: + strat.place[strat.last_place].valid = 0; + strat.load++; + break; + case STRAT_DECISION_UNLOAD: + strat.load = 0; + break; + default: + assert (0); + } } -- cgit v1.2.3