From d23d5d67bc7d78b318e81f6cd5703823a08dbbc0 Mon Sep 17 00:00:00 2001 From: Jérémy Dufour Date: Thu, 21 May 2009 03:23:43 +0200 Subject: * digital/io/src: - memorize the last moving direction. --- digital/io/src/asserv.c | 14 ++++++++++++++ digital/io/src/asserv.h | 7 +++++++ 2 files changed, 21 insertions(+) (limited to 'digital') 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 @@ -38,6 +38,11 @@ /** Scaling factor. */ 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 */ -- cgit v1.2.3