summaryrefslogtreecommitdiffhomepage
path: root/digital/asserv/src/asserv/main.c
diff options
context:
space:
mode:
authorNicolas Schodet2011-05-19 23:24:08 +0200
committerNicolas Schodet2011-05-19 23:29:49 +0200
commitf753bc39682f980feb49b7ff1bb9e9594f986e6b (patch)
treeedda6060cfd233985c4804d054f712163c182837 /digital/asserv/src/asserv/main.c
parent453c275fb70db0bdd7258c3bedbd8897fa0b35cc (diff)
digital/asserv: add push the wall traj mode, closes #167
Diffstat (limited to 'digital/asserv/src/asserv/main.c')
-rw-r--r--digital/asserv/src/asserv/main.c21
1 files changed, 21 insertions, 0 deletions
diff --git a/digital/asserv/src/asserv/main.c b/digital/asserv/src/asserv/main.c
index 2d53e2fa..677fea84 100644
--- a/digital/asserv/src/asserv/main.c
+++ b/digital/asserv/src/asserv/main.c
@@ -400,6 +400,27 @@ proto_callback (uint8_t cmd, uint8_t size, uint8_t *args)
break;
traj_ftw_start_center (args[0], args[1], args[2]);
break;
+ case c ('f', 12):
+ /* Push the wall.
+ * - b: 0: forward, 1: backward.
+ * - d: init_x, f24.8.
+ * - d: init_y, f24.8.
+ * - w: init_a, f0.16.
+ * - b: sequence number. */
+ {
+ if (args[11] == state_main.sequence)
+ break;
+ int32_t angle;
+ if (args[9] == 0xff && args[10] == 0xff)
+ angle = -1;
+ else
+ angle = v8_to_v32 (0, args[9], args[10], 0);
+ traj_ptw_start (args[0],
+ v8_to_v32 (args[1], args[2], args[3], args[4]),
+ v8_to_v32 (args[5], args[6], args[7], args[8]),
+ angle, args[11]);
+ }
+ break;
case c ('F', 1):
/* Go to the dispenser.
* - b: sequence number. */