diff --git a/src/modules/commander/Commander.cpp b/src/modules/commander/Commander.cpp index bf1d82ea73..944a84637b 100644 --- a/src/modules/commander/Commander.cpp +++ b/src/modules/commander/Commander.cpp @@ -280,7 +280,14 @@ int Commander::custom_command(int argc, char *argv[]) } if (!strcmp(argv[0], "disarm")) { - send_vehicle_command(vehicle_command_s::VEHICLE_CMD_COMPONENT_ARM_DISARM, 0.f, 0.f); + float param2 = 0.f; + + // 21196: force arming/disarming (e.g. allow arming to override preflight checks and disarming in flight) + if (argc > 1 && !strcmp(argv[1], "-f")) { + param2 = 21196.f; + } + + send_vehicle_command(vehicle_command_s::VEHICLE_CMD_COMPONENT_ARM_DISARM, 0.f, param2); return 0; } @@ -4208,6 +4215,7 @@ The commander module contains the state machine for mode switching and failsafe PRINT_MODULE_USAGE_COMMAND("arm"); PRINT_MODULE_USAGE_PARAM_FLAG('f', "Force arming (do not run preflight checks)", true); PRINT_MODULE_USAGE_COMMAND("disarm"); + PRINT_MODULE_USAGE_PARAM_FLAG('f', "Force disarming (disarm in air)", true); PRINT_MODULE_USAGE_COMMAND("takeoff"); PRINT_MODULE_USAGE_COMMAND("land"); PRINT_MODULE_USAGE_COMMAND_DESCR("transition", "VTOL transition");