summaryrefslogtreecommitdiffhomepage
path: root/digital
diff options
context:
space:
mode:
authorNicolas Schodet2013-04-07 01:37:29 +0200
committerNicolas Schodet2013-04-07 15:57:24 +0200
commit7bab8a86d4b36871c133207c8d2d677525714e50 (patch)
tree4085176c3328f96344a0b29dbcd4843d56a205e4 /digital
parentc58213184b835602210229ede670c854c35959d5 (diff)
digital/io-hub/src/common-cc: add follow asserv mode
Diffstat (limited to 'digital')
-rw-r--r--digital/io-hub/src/common-cc/asserv.cc19
-rw-r--r--digital/io-hub/src/common-cc/asserv.hh4
2 files changed, 23 insertions, 0 deletions
diff --git a/digital/io-hub/src/common-cc/asserv.cc b/digital/io-hub/src/common-cc/asserv.cc
index c216678f..505c2a6a 100644
--- a/digital/io-hub/src/common-cc/asserv.cc
+++ b/digital/io-hub/src/common-cc/asserv.cc
@@ -163,6 +163,25 @@ Asserv::push_wall (DirectionConsign direction_consign, int init_x, int init_y,
}
void
+Asserv::follow (DirectionConsign direction_consign)
+{
+ uint8_t buf[] = { 'o',
+ direction_consign,
+ };
+ send (buf, sizeof (buf));
+}
+
+void
+Asserv::follow_update (int16_t consign)
+{
+ uint8_t buf[] = {
+ ucoo::bytes_unpack (consign, 1),
+ ucoo::bytes_unpack (consign, 0),
+ };
+ send (buf, sizeof (buf), I2cQueue::TRANSIENT);
+}
+
+void
Asserv::set_speed (uint16_t linear_hi, uint16_t angular_hi, uint16_t
linear_lo, uint16_t angular_lo)
{
diff --git a/digital/io-hub/src/common-cc/asserv.hh b/digital/io-hub/src/common-cc/asserv.hh
index 09f364f4..ea6f5ec4 100644
--- a/digital/io-hub/src/common-cc/asserv.hh
+++ b/digital/io-hub/src/common-cc/asserv.hh
@@ -79,6 +79,10 @@ class Asserv : public I2cQueue::Slave
/// unchanged.
void push_wall (DirectionConsign direction_consign,
int init_x, int init_y, int16_t init_a);
+ /// Follow external consign.
+ void follow (DirectionConsign direction_consign);
+ /// Update external consign.
+ void follow_update (int16_t consign);
/// Set movement speeds.
void set_speed (uint16_t linear_hi, uint16_t angular_hi,
uint16_t linear_lo, uint16_t angular_lo);