summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-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);