summaryrefslogtreecommitdiff
path: root/digital/io/src
diff options
context:
space:
mode:
authorNicolas Schodet2010-05-14 03:56:22 +0200
committerNicolas Schodet2010-05-14 03:56:22 +0200
commit0a16f1d46ae8169a9342098a45f0878d57481297 (patch)
treeb46c4486d812352d45e2f65970d376cacf1b5b13 /digital/io/src
parentdf32c7a59f59166a22eff4f2a76ec6244c64d721 (diff)
digital/io/src: change collect criterions
Diffstat (limited to 'digital/io/src')
-rw-r--r--digital/io/src/ai_top_cb.c5
-rw-r--r--digital/io/src/top.c11
2 files changed, 10 insertions, 6 deletions
diff --git a/digital/io/src/ai_top_cb.c b/digital/io/src/ai_top_cb.c
index d37ad972..e42ac4b1 100644
--- a/digital/io/src/ai_top_cb.c
+++ b/digital/io/src/ai_top_cb.c
@@ -34,11 +34,6 @@
#include "asserv.h"
#include "loader.h"
-/**
- * Time limit.
- */
-#define TOP_TIME_LIMIT 25000
-
/*
* IDLE =start=>
* => WAIT_INIT_TO_FINISH
diff --git a/digital/io/src/top.c b/digital/io/src/top.c
index 61d0e085..6f7fd8db 100644
--- a/digital/io/src/top.c
+++ b/digital/io/src/top.c
@@ -29,8 +29,14 @@
#include "asserv.h"
#include "loader.h"
#include "move.h"
+#include "chrono.h"
#include "playground.h"
+/** Maximum elements to load before unloading. */
+#define TOP_LOADER_MAX 3
+/** Time to reserve for unloading at end of round. */
+#define TOP_TIME_LIMIT_MS 20000ll
+
void
top_init (void)
{
@@ -39,7 +45,10 @@ top_init (void)
uint8_t
top_collect (uint8_t force)
{
- if (loader_elements < 3 || force)
+ if ((loader_elements < TOP_LOADER_MAX
+ && (loader_elements == 0
+ || chrono_remaining_time () > TOP_TIME_LIMIT_MS))
+ || force)
{
position_t robot_position;
asserv_get_position (&robot_position);