summaryrefslogtreecommitdiff
path: root/digital
diff options
context:
space:
mode:
authorJérémy Dufour2009-05-21 03:23:43 +0200
committerJérémy Dufour2009-05-21 03:23:43 +0200
commitd23d5d67bc7d78b318e81f6cd5703823a08dbbc0 (patch)
tree17d9711a3d1162f0d06c3f36e6711f36e85bd87b /digital
parent65ff8015425b71b9eea5a2756086d8d40974068e (diff)
* digital/io/src:
- memorize the last moving direction.
Diffstat (limited to 'digital')
-rw-r--r--digital/io/src/asserv.c14
-rw-r--r--digital/io/src/asserv.h7
2 files changed, 21 insertions, 0 deletions
diff --git a/digital/io/src/asserv.c b/digital/io/src/asserv.c
index 913ba412..60e008d3 100644
--- a/digital/io/src/asserv.c
+++ b/digital/io/src/asserv.c
@@ -39,6 +39,11 @@
uint32_t asserv_scale;
/**
+ * Last moving direction.
+ */
+uint8_t asserv_last_moving_direction = 0;
+
+/**
* @defgroup AsservPrivate Asserv module private variables and functions
* declarations and definitions
* @{
@@ -276,6 +281,10 @@ asserv_update_status (void)
asserv_status.position.a = v8_to_v16 (status_buffer[9], status_buffer[10]);
asserv_status.arm_position = v8_to_v16 (status_buffer[11], status_buffer[12]);
asserv_status.elevator_position = v8_to_v16 (status_buffer[13], status_buffer[14]);
+ /* Update moving direction. */
+ if (asserv_get_moving_direction () != 0)
+ asserv_last_moving_direction = asserv_get_moving_direction ();
+
if (trace_asserv_twi_seq == asserv_status.seq)
{
/* Next ack. */
@@ -718,3 +727,8 @@ asserv_elevator_zero_position (void)
asserv_twi_send_command ('C', 1);
}
+uint8_t
+asserv_get_last_moving_direction (void)
+{
+ return asserv_last_moving_direction;
+}
diff --git a/digital/io/src/asserv.h b/digital/io/src/asserv.h
index 09fb88f4..253ef0a5 100644
--- a/digital/io/src/asserv.h
+++ b/digital/io/src/asserv.h
@@ -382,4 +382,11 @@ asserv_arm_zero_position (void);
void
asserv_elevator_zero_position (void);
+/**
+ * Get the last moving direction of the bot.
+ * @return 1 is forward, 0 is backward.
+ */
+uint8_t
+asserv_get_last_moving_direction (void);
+
#endif /* asserv_h */