The command protocol wraps MAV_CMD values into reliable request/response transactions. The GCS packs the command into a COMMAND_LONG (or COMMAND_INT for lat/lon targets) and waits for a COMMAND_ACK from the target.
text
Command flow ────────────────────────────────────────── GCS Autopilot │── COMMAND_LONG ─────────→│ │ (MAV_CMD, param1..7) │ │ │ │←── COMMAND_ACK ──────────│ │ (result, progress) │
COMMAND_INT (#75) carries param5 and param6 as int32 (for lat/lon in 1e7 degrees) instead of float, giving centimeter-level precision. Use it for any command that targets a geographic position.
COMMAND_ACK result codes
0 ACCEPTED · 1 TEMPORARILY_REJECTED · 2 DENIED · 3 UNSUPPORTED · 4 FAILED · 5 IN_PROGRESS (with progress %) · 6 CANCELLED. Always implement retry with back-off for IN_PROGRESS and timeout for missing ACKs.