summaryrefslogtreecommitdiffhomepage
path: root/digital/asserv/src/asserv/main.c
diff options
context:
space:
mode:
Diffstat (limited to 'digital/asserv/src/asserv/main.c')
-rw-r--r--digital/asserv/src/asserv/main.c23
1 files changed, 18 insertions, 5 deletions
diff --git a/digital/asserv/src/asserv/main.c b/digital/asserv/src/asserv/main.c
index 0a746149..f0813fba 100644
--- a/digital/asserv/src/asserv/main.c
+++ b/digital/asserv/src/asserv/main.c
@@ -361,14 +361,27 @@ proto_callback (uint8_t cmd, uint8_t size, uint8_t *args)
v8_to_v32 (args[4], args[5], args[6], args[7]),
args[8]);
break;
- case c ('x', 5):
+ case c ('x', 3):
/* Go to angle.
- * - d: a, f8.24.
+ * - d: a, f0.16.
* - b: sequence number. */
- if (args[4] == state_main.sequence)
+ if (args[2] == state_main.sequence)
+ break;
+ traj_goto_angle_start (v8_to_v32 (0, args[0], args[1], 0),
+ args[2]);
+ break;
+ case c ('x', 11):
+ /* Go to position, then angle.
+ * - d: x, f24.8.
+ * - d: y, f24.8.
+ * - w: a, f0.16.
+ * - b: sequence number. */
+ if (args[10] == state_main.sequence)
break;
- traj_goto_angle_start (v8_to_v32 (args[0], args[1], args[2], args[3]),
- args[4]);
+ traj_goto_xya_start (v8_to_v32 (args[0], args[1], args[2], args[3]),
+ v8_to_v32 (args[4], args[5], args[6], args[7]),
+ v8_to_v32 (0, args[8], args[9], 0),
+ args[10]);
break;
case c ('a', 2):
/* Set both acknoledge.