Stop every axis on a bare 'gimbal stop'

This commit is contained in:
pgdalmeida 2026-09-28 12:41:11 +02:00
parent 93f47bd142
commit 8cf3b3b9e9
Signed by: pedro.almeida
GPG Key ID: D4A6C394DF13F1D7
2 changed files with 6 additions and 2 deletions

View File

@ -2200,6 +2200,10 @@ struct Application::Impl {
std::string fw = sub; std::string fw = sub;
for (char& ch : fw) ch = static_cast<char>(std::toupper((unsigned char)ch)); for (char& ch : fw) ch = static_cast<char>(std::toupper((unsigned char)ch));
for (size_t i = 2; i < tok.size(); ++i) fw += " " + tok[i]; for (size_t i = 2; i < tok.size(); ++i) fw += " " + tok[i];
// A bare `gimbal stop` means every axis. The firmware wants the axis
// named, and answered a bare STOP with "ERR missing argument" - so the
// one command that has to work, did nothing.
if (sub == "stop" && tok.size() == 2) fw = "STOP ALL";
motor->sendCommand(fw); motor->sendCommand(fw);
} else { } else {
LOG_WARN << "unknown gimbal subcommand: " << sub; LOG_WARN << "unknown gimbal subcommand: " << sub;

View File

@ -95,8 +95,8 @@ const std::vector<HelpSection>& helpCatalog() {
"Run the endstop-finding home sequence (both axes, or one).", { "Run the endstop-finding home sequence (both axes, or one).", {
"Example: gimbal home / gimbal home y"}}, "Example: gimbal home / gimbal home y"}},
{"gimbal stop [y|p|all]", {"gimbal stop [y|p|all]",
"Stop motion immediately.", { "Stop motion immediately; bare, every axis. The axis holds where it stops.", {
"To cancel a running procedure use 'cancel' (or Esc, or x):", "To cancel a running procedure use 'cancel' (or Esc, or m):",
"the whole 'gimbal' family is ignored while one is in progress."}}, "the whole 'gimbal' family is ignored while one is in progress."}},
{"gimbal speed <y|p> <vel>", {"gimbal speed <y|p> <vel>",
"Set the max slew speed (counts/s) for an axis.", {}}, "Set the max slew speed (counts/s) for an axis.", {}},