// MAVLink is available under the MIT-license
module MAVLink::v23.common
import MAVLink::v23.minimal (MavAutopilot, MavState, MavType, MavModeFlagBitmask)
import MAVLink::v23.tangramcustom (MessageFrame)
import tangram::flex::helpers::v1.annotations (Length)
// Actuator configuration, used to change a setting on an actuator. Component information metadata can be
// used to know which outputs support which commands.
enum ActuatorConfiguration uint32 {
ActuatorConfigurationNone = 0;
ActuatorConfigurationBeep = 1;
ActuatorConfiguration3DModeOn = 2;
ActuatorConfiguration3DModeOff = 3;
ActuatorConfigurationSpinDirection1 = 4;
ActuatorConfigurationSpinDirection2 = 5;
}
// Actuator output function. Values greater or equal to 1000 are autopilot-specific.
enum ActuatorOutputFunction uint32 {
ActuatorOutputFunctionNone = 0;
ActuatorOutputFunctionMotor1 = 1;
ActuatorOutputFunctionMotor2 = 2;
ActuatorOutputFunctionMotor3 = 3;
ActuatorOutputFunctionMotor4 = 4;
ActuatorOutputFunctionMotor5 = 5;
ActuatorOutputFunctionMotor6 = 6;
ActuatorOutputFunctionMotor7 = 7;
ActuatorOutputFunctionMotor8 = 8;
ActuatorOutputFunctionMotor9 = 9;
ActuatorOutputFunctionMotor10 = 10;
ActuatorOutputFunctionMotor11 = 11;
ActuatorOutputFunctionMotor12 = 12;
ActuatorOutputFunctionMotor13 = 13;
ActuatorOutputFunctionMotor14 = 14;
ActuatorOutputFunctionMotor15 = 15;
ActuatorOutputFunctionMotor16 = 16;
ActuatorOutputFunctionServo1 = 33;
ActuatorOutputFunctionServo2 = 34;
ActuatorOutputFunctionServo3 = 35;
ActuatorOutputFunctionServo4 = 36;
ActuatorOutputFunctionServo5 = 37;
ActuatorOutputFunctionServo6 = 38;
ActuatorOutputFunctionServo7 = 39;
ActuatorOutputFunctionServo8 = 40;
ActuatorOutputFunctionServo9 = 41;
ActuatorOutputFunctionServo10 = 42;
ActuatorOutputFunctionServo11 = 43;
ActuatorOutputFunctionServo12 = 44;
ActuatorOutputFunctionServo13 = 45;
ActuatorOutputFunctionServo14 = 46;
ActuatorOutputFunctionServo15 = 47;
ActuatorOutputFunctionServo16 = 48;
}
// Enumeration of the ADSB altimeter types
enum AdsbAltitudeType uint8 {
AdsbAltitudeTypePressureQnh = 0;
AdsbAltitudeTypeGeometric = 1;
}
// ADSB classification for the type of vehicle emitting the transponder signal
enum AdsbEmitterType uint8 {
AdsbEmitterTypeNoInfo = 0;
AdsbEmitterTypeLight = 1;
AdsbEmitterTypeSmall = 2;
AdsbEmitterTypeLarge = 3;
AdsbEmitterTypeHighVortexLarge = 4;
AdsbEmitterTypeHeavy = 5;
AdsbEmitterTypeHighlyManuv = 6;
AdsbEmitterTypeRotocraft = 7;
AdsbEmitterTypeUnassigned = 8;
AdsbEmitterTypeGlider = 9;
AdsbEmitterTypeLighterAir = 10;
AdsbEmitterTypeParachute = 11;
AdsbEmitterTypeUltraLight = 12;
AdsbEmitterTypeUnassigned2 = 13;
AdsbEmitterTypeUav = 14;
AdsbEmitterTypeSpace = 15;
AdsbEmitterTypeUnassgined3 = 16;
AdsbEmitterTypeEmergencySurface = 17;
AdsbEmitterTypeServiceSurface = 18;
AdsbEmitterTypePointObstacle = 19;
}
// These flags indicate status such as data validity of each data source. Set = data valid
enum AdsbFlags uint16 {
AdsbFlagsValidCoords = 1;
AdsbFlagsValidAltitude = 2;
AdsbFlagsValidHeading = 4;
AdsbFlagsValidVelocity = 8;
AdsbFlagsValidCallsign = 16;
AdsbFlagsValidSquawk = 32;
AdsbFlagsSimulated = 64;
AdsbFlagsVerticalVelocityValid = 128;
AdsbFlagsBaroValid = 256;
AdsbFlagsSourceUat = 32768;
}
// These flags are used in the AIS_VESSEL.fields bitmask to indicate validity of data in the other message
// fields. When set, the data is valid.
enum AisFlags uint16 {
AisFlagsPositionAccuracy = 1;
AisFlagsValidCog = 2;
AisFlagsValidVelocity = 4;
AisFlagsHighVelocity = 8;
AisFlagsValidTurnRate = 16;
AisFlagsTurnRateSignOnly = 32;
AisFlagsValidDimensions = 64;
AisFlagsLargeBowDimension = 128;
AisFlagsLargeSternDimension = 256;
AisFlagsLargePortDimension = 512;
AisFlagsLargeStarboardDimension = 1024;
AisFlagsValidCallsign = 2048;
AisFlagsValidName = 4096;
}
// Navigational status of AIS vessel, enum duplicated from AIS standard, https://gpsd.gitlab.io/gpsd/AIVDM.html
enum AisNavStatus uint8 {
UnderWay = 0;
AisNavAnchored = 1;
AisNavUnCommanded = 2;
AisNavRestrictedManoeuverability = 3;
AisNavDraughtConstrained = 4;
AisNavMoored = 5;
AisNavAground = 6;
AisNavFishing = 7;
AisNavSailing = 8;
AisNavReservedHsc = 9;
AisNavReservedWig = 10;
AisNavReserved1 = 11;
AisNavReserved2 = 12;
AisNavReserved3 = 13;
AisNavAisSart = 14;
AisNavUnknown = 15;
}
// Type of AIS vessel, enum duplicated from AIS standard, https://gpsd.gitlab.io/gpsd/AIVDM.html
enum AisType uint8 {
AisTypeUnknown = 0;
AisTypeReserved1 = 1;
AisTypeReserved2 = 2;
AisTypeReserved3 = 3;
AisTypeReserved4 = 4;
AisTypeReserved5 = 5;
AisTypeReserved6 = 6;
AisTypeReserved7 = 7;
AisTypeReserved8 = 8;
AisTypeReserved9 = 9;
AisTypeReserved10 = 10;
AisTypeReserved11 = 11;
AisTypeReserved12 = 12;
AisTypeReserved13 = 13;
AisTypeReserved14 = 14;
AisTypeReserved15 = 15;
AisTypeReserved16 = 16;
AisTypeReserved17 = 17;
AisTypeReserved18 = 18;
AisTypeReserved19 = 19;
AisTypeWig = 20;
AisTypeWigHazardousA = 21;
AisTypeWigHazardousB = 22;
AisTypeWigHazardousC = 23;
AisTypeWigHazardousD = 24;
AisTypeWigReserved1 = 25;
AisTypeWigReserved2 = 26;
AisTypeWigReserved3 = 27;
AisTypeWigReserved4 = 28;
AisTypeWigReserved5 = 29;
AisTypeFishing = 30;
AisTypeTowing = 31;
AisTypeTowingLarge = 32;
AisTypeDredging = 33;
AisTypeDiving = 34;
AisTypeMilitary = 35;
AisTypeSailing = 36;
AisTypePleasure = 37;
AisTypeReserved20 = 38;
AisTypeReserved21 = 39;
AisTypeHsc = 40;
AisTypeHscHazardousA = 41;
AisTypeHscHazardousB = 42;
AisTypeHscHazardousC = 43;
AisTypeHscHazardousD = 44;
AisTypeHscReserved1 = 45;
AisTypeHscReserved2 = 46;
AisTypeHscReserved3 = 47;
AisTypeHscReserved4 = 48;
AisTypeHscUnknown = 49;
AisTypePilot = 50;
AisTypeSar = 51;
AisTypeTug = 52;
AisTypePortTender = 53;
AisTypeAntiPollution = 54;
AisTypeLawEnforcement = 55;
AisTypeSpareLocal1 = 56;
AisTypeSpareLocal2 = 57;
AisTypeMedicalTransport = 58;
AisTypeNonecombatant = 59;
AisTypePassenger = 60;
AisTypePassengerHazardousA = 61;
AisTypePassengerHazardousB = 62;
AisTypeAisTypePassengerHazardousC = 63;
AisTypePassengerHazardousD = 64;
AisTypePassengerReserved1 = 65;
AisTypePassengerReserved2 = 66;
AisTypePassengerReserved3 = 67;
AisTypeAisTypePassengerReserved4 = 68;
AisTypePassengerUnknown = 69;
AisTypeCargo = 70;
AisTypeCargoHazardousA = 71;
AisTypeCargoHazardousB = 72;
AisTypeCargoHazardousC = 73;
AisTypeCargoHazardousD = 74;
AisTypeCargoReserved1 = 75;
AisTypeCargoReserved2 = 76;
AisTypeCargoReserved3 = 77;
AisTypeCargoReserved4 = 78;
AisTypeCargoUnknown = 79;
AisTypeTanker = 80;
AisTypeTankerHazardousA = 81;
AisTypeTankerHazardousB = 82;
AisTypeTankerHazardousC = 83;
AisTypeTankerHazardousD = 84;
AisTypeTankerReserved1 = 85;
AisTypeTankerReserved2 = 86;
AisTypeTankerReserved3 = 87;
AisTypeTankerReserved4 = 88;
AisTypeTankerUnknown = 89;
AisTypeOther = 90;
AisTypeOtherHazardousA = 91;
AisTypeOtherHazardousB = 92;
AisTypeOtherHazardousC = 93;
AisTypeOtherHazardousD = 94;
AisTypeOtherReserved1 = 95;
AisTypeOtherReserved2 = 96;
AisTypeOtherReserved3 = 97;
AisTypeOtherReserved4 = 98;
AisTypeOtherUnknown = 99;
}
// Bitmap to indicate which dimensions should be ignored by the vehicle: a value of 0b00000000 indicates
// that none of the setpoint dimensions should be ignored.
enum AttitudeTargetTypemask uint8 {
AttitudeTargetTypemaskBodyRollRateIgnore = 1;
AttitudeTargetTypemaskBodyPitchRateIgnore = 2;
AttitudeTargetTypemaskBodyYawRateIgnore = 4;
AttitudeTargetTypemaskThrustBodySet = 32;
AttitudeTargetTypemaskThrottleIgnore = 64;
AttitudeTargetTypemaskAttitudeIgnore = 128;
}
// Enable axes that will be tuned via autotuning. Used in MAV_CMD_DO_AUTOTUNE_ENABLE.
enum AutotuneAxis uint32 {
AutotuneAxisDefault = 0;
AutotuneAxisRoll = 1;
AutotuneAxisPitch = 2;
AutotuneAxisYaw = 3;
}
// Camera capability flags (Bitmap)
enum CameraCapFlags uint32 {
CameraCapFlagsCaptureVideo = 1;
CameraCapFlagsCaptureImage = 2;
CameraCapFlagsHasModes = 4;
CameraCapFlagsCanCaptureImageInVideoMode = 8;
CameraCapFlagsCanCaptureVideoInImageMode = 16;
CameraCapFlagsHasImageSurveyMode = 32;
CameraCapFlagsHasBasicZoom = 64;
CameraCapFlagsHasBasicFocus = 128;
CameraCapFlagsHasVideoStream = 256;
CameraCapFlagsHasTrackingPoint = 512;
CameraCapFlagsHasTrackingRectangle = 1024;
CameraCapFlagsHasTrackingGeoStatus = 2048;
}
// Camera Modes.
enum CameraMode uint8 {
CameraModeImage = 0;
CameraModeVideo = 1;
CameraModeImageSurvey = 2;
}
// Camera tracking modes
enum CameraTrackingMode uint8 {
CameraTrackingModeNone = 0;
CameraTrackingModePoint = 1;
CameraTrackingModeRectangle = 2;
}
// Camera tracking status flags
enum CameraTrackingStatusFlags uint8 {
CameraTrackingStatusFlagsIdle = 0;
CameraTrackingStatusFlagsActive = 1;
CameraTrackingStatusFlagsError = 2;
}
// Camera tracking target data (shows where tracked target is within image)
enum CameraTrackingTargetData uint8 {
CameraTrackingTargetDataNone = 0;
CameraTrackingTargetDataEmbedded = 1;
CameraTrackingTargetDataRendered = 2;
CameraTrackingTargetDataInStatus = 4;
}
// Zoom types for MAV_CMD_SET_CAMERA_ZOOM
enum CameraZoomType uint32 {
ZoomTypeStep = 0;
ZoomTypeContinuous = 1;
ZoomTypeRange = 2;
ZoomTypeFocalLength = 3;
}
// Possible responses from a CELLULAR_CONFIG message.
enum CellularConfigResponse uint8 {
CellularConfigResponseAccepted = 0;
CellularConfigResponseApnError = 1;
CellularConfigResponsePinError = 2;
CellularConfigResponseRejected = 3;
CellularConfigBlockedPukRequired = 4;
}
// These flags are used to diagnose the failure state of CELLULAR_STATUS
enum CellularNetworkFailedReason uint8 {
CellularNetworkFailedReasonNone = 0;
CellularNetworkFailedReasonUnknown = 1;
CellularNetworkFailedReasonSimMissing = 2;
CellularNetworkFailedReasonSimError = 3;
}
// Cellular network radio type
enum CellularNetworkRadioType uint8 {
CellularNetworkRadioTypeNone = 0;
CellularNetworkRadioTypeGsm = 1;
CellularNetworkRadioTypeCdma = 2;
CellularNetworkRadioTypeWcdma = 3;
CellularNetworkRadioTypeLte = 4;
}
// These flags encode the cellular network status
enum CellularStatusFlag uint8 {
CellularStatusFlagUnknown = 0;
CellularStatusFlagFailed = 1;
CellularStatusFlagInitializing = 2;
CellularStatusFlagLocked = 3;
CellularStatusFlagDisabled = 4;
CellularStatusFlagDisabling = 5;
CellularStatusFlagEnabling = 6;
CellularStatusFlagEnabled = 7;
CellularStatusFlagSearching = 8;
CellularStatusFlagRegistered = 9;
CellularStatusFlagDisconnecting = 10;
CellularStatusFlagConnecting = 11;
CellularStatusFlagConnected = 12;
}
// Supported component metadata types. These are used in the "general" metadata file returned by COMPONENT_INFORMATION
// to provide information about supported metadata types. The types are not used directly in MAVLink messages.
enum CompMetadataType uint32 {
CompMetadataTypeGeneral = 0;
CompMetadataTypeParameter = 1;
CompMetadataTypeCommands = 2;
CompMetadataTypePeripherals = 3;
CompMetadataTypeEvents = 4;
CompMetadataTypeActuators = 5;
}
// Indicates the ESC connection type.
enum EscConnectionType uint8 {
EscConnectionTypePpm = 0;
EscConnectionTypeSerial = 1;
EscConnectionTypeOneshot = 2;
EscConnectionTypeI2C = 3;
EscConnectionTypeCan = 4;
EscConnectionTypeDshot = 5;
}
// Flags to report ESC failures.
enum EscFailureFlags uint16 {
EscFailureNone = 0;
EscFailureOverCurrent = 1;
EscFailureOverVoltage = 2;
EscFailureOverTemperature = 4;
EscFailureOverRpm = 8;
EscFailureInconsistentCmd = 16;
EscFailureMotorStuck = 32;
EscFailureGeneric = 64;
}
// Flags in ESTIMATOR_STATUS message
enum EstimatorStatusFlags uint16 {
EstimatorAttitude = 1;
EstimatorVelocityHoriz = 2;
EstimatorVelocityVert = 4;
EstimatorPosHorizRel = 8;
EstimatorPosHorizAbs = 16;
EstimatorPosVertAbs = 32;
EstimatorPosVertAgl = 64;
EstimatorConstPosMode = 128;
EstimatorPredPosHorizRel = 256;
EstimatorPredPosHorizAbs = 512;
EstimatorGpsGlitch = 1024;
EstimatorAccelError = 2048;
}
// List of possible failure type to inject.
enum FailureType uint32 {
FailureTypeOk = 0;
FailureTypeOff = 1;
FailureTypeStuck = 2;
FailureTypeGarbage = 3;
FailureTypeWrong = 4;
FailureTypeSlow = 5;
FailureTypeDelayed = 6;
FailureTypeIntermittent = 7;
}
// List of possible units where failures can be injected.
enum FailureUnit uint32 {
FailureUnitSensorGyro = 0;
FailureUnitSensorAccel = 1;
FailureUnitSensorMag = 2;
FailureUnitSensorBaro = 3;
FailureUnitSensorGps = 4;
FailureUnitSensorOpticalFlow = 5;
FailureUnitSensorVio = 6;
FailureUnitSensorDistanceSensor = 7;
FailureUnitSensorAirspeed = 8;
FailureUnitSystemBattery = 100;
FailureUnitSystemMotor = 101;
FailureUnitSystemServo = 102;
FailureUnitSystemAvoidance = 103;
FailureUnitSystemRcSignal = 104;
FailureUnitSystemMavlinkSignal = 105;
}
// Actions following geofence breach.
enum FenceAction uint32 {
FenceActionNone = 0;
FenceActionGuided = 1;
FenceActionReport = 2;
FenceActionGuidedThrPass = 3;
FenceActionRtl = 4;
FenceActionHold = 5;
FenceActionTerminate = 6;
FenceActionLand = 7;
}
enum FenceBreach uint8 {
FenceBreachNone = 0;
FenceBreachMinalt = 1;
FenceBreachMaxalt = 2;
FenceBreachBoundary = 3;
}
// Actions being taken to mitigate/prevent fence breach
enum FenceMitigate uint8 {
FenceMitigateUnknown = 0;
FenceMitigateNone = 1;
FenceMitigateVelLimit = 2;
}
// These values define the type of firmware release. These values indicate the first version or release of
// this type. For example the first alpha release would be 64, the second would be 65.
enum FirmwareVersionType uint32 {
FirmwareVersionTypeDev = 0;
FirmwareVersionTypeAlpha = 64;
FirmwareVersionTypeBeta = 128;
FirmwareVersionTypeRc = 192;
FirmwareVersionTypeOfficial = 255;
}
// Gimbal device (low level) capability flags (bitmap)
enum GimbalDeviceCapFlags uint16 {
GimbalDeviceCapFlagsHasRetract = 1;
GimbalDeviceCapFlagsHasNeutral = 2;
GimbalDeviceCapFlagsHasRollAxis = 4;
GimbalDeviceCapFlagsHasRollFollow = 8;
GimbalDeviceCapFlagsHasRollLock = 16;
GimbalDeviceCapFlagsHasPitchAxis = 32;
GimbalDeviceCapFlagsHasPitchFollow = 64;
GimbalDeviceCapFlagsHasPitchLock = 128;
GimbalDeviceCapFlagsHasYawAxis = 256;
GimbalDeviceCapFlagsHasYawFollow = 512;
GimbalDeviceCapFlagsHasYawLock = 1024;
GimbalDeviceCapFlagsSupportsInfiniteYaw = 2048;
}
// Gimbal device (low level) error flags (bitmap, 0 means no error)
enum GimbalDeviceErrorFlags uint32 {
GimbalDeviceErrorFlagsAtRollLimit = 1;
GimbalDeviceErrorFlagsAtPitchLimit = 2;
GimbalDeviceErrorFlagsAtYawLimit = 4;
GimbalDeviceErrorFlagsEncoderError = 8;
GimbalDeviceErrorFlagsPowerError = 16;
GimbalDeviceErrorFlagsMotorError = 32;
GimbalDeviceErrorFlagsSoftwareError = 64;
GimbalDeviceErrorFlagsCommsError = 128;
GimbalDeviceErrorFlagsCalibrationRunning = 256;
}
// Flags for gimbal device (lower level) operation.
enum GimbalDeviceFlags uint16 {
GimbalDeviceFlagsRetract = 1;
GimbalDeviceFlagsNeutral = 2;
GimbalDeviceFlagsRollLock = 4;
GimbalDeviceFlagsPitchLock = 8;
GimbalDeviceFlagsYawLock = 16;
}
// Gimbal manager high level capability flags (bitmap). The first 16 bits are identical to the GIMBAL_DEVICE_CAP_FLAGS.
// However, the gimbal manager does not need to copy the flags from the gimbal but can also enhance the capabilities
// and thus add flags.
enum GimbalManagerCapFlags uint32 {
GimbalManagerCapFlagsHasRetract = 1;
GimbalManagerCapFlagsHasNeutral = 2;
GimbalManagerCapFlagsHasRollAxis = 4;
GimbalManagerCapFlagsHasRollFollow = 8;
GimbalManagerCapFlagsHasRollLock = 16;
GimbalManagerCapFlagsHasPitchAxis = 32;
GimbalManagerCapFlagsHasPitchFollow = 64;
GimbalManagerCapFlagsHasPitchLock = 128;
GimbalManagerCapFlagsHasYawAxis = 256;
GimbalManagerCapFlagsHasYawFollow = 512;
GimbalManagerCapFlagsHasYawLock = 1024;
GimbalManagerCapFlagsSupportsInfiniteYaw = 2048;
GimbalManagerCapFlagsCanPointLocationLocal = 65536;
GimbalManagerCapFlagsCanPointLocationGlobal = 131072;
}
// Flags for high level gimbal manager operation The first 16 bits are identical to the GIMBAL_DEVICE_FLAGS.
enum GimbalManagerFlags uint32 {
GimbalManagerFlagsRetract = 1;
GimbalManagerFlagsNeutral = 2;
GimbalManagerFlagsRollLock = 4;
GimbalManagerFlagsPitchLock = 8;
GimbalManagerFlagsYawLock = 16;
}
// Type of GPS fix
enum GpsFixType uint8 {
GpsFixTypeNoGps = 0;
GpsFixTypeNoFix = 1;
GpsFixType2DFix = 2;
GpsFixType3DFix = 3;
GpsFixTypeDgps = 4;
GpsFixTypeRtkFloat = 5;
GpsFixTypeRtkFixed = 6;
GpsFixTypeStatic = 7;
GpsFixTypePpp = 8;
}
enum GpsInputIgnoreFlags uint16 {
GpsInputIgnoreFlagAlt = 1;
GpsInputIgnoreFlagHdop = 2;
GpsInputIgnoreFlagVdop = 4;
GpsInputIgnoreFlagVelHoriz = 8;
GpsInputIgnoreFlagVelVert = 16;
GpsInputIgnoreFlagSpeedAccuracy = 32;
GpsInputIgnoreFlagHorizontalAccuracy = 64;
GpsInputIgnoreFlagVerticalAccuracy = 128;
}
// Gripper actions.
enum GripperActions uint32 {
GripperActionRelease = 0;
GripperActionGrab = 1;
}
// Flags in the HIGHRES_IMU message indicate which fields have updated since the last message
enum HighresImuUpdatedFlags uint16 {
HighresImuUpdatedNone = 0;
HighresImuUpdatedXacc = 1;
HighresImuUpdatedYacc = 2;
HighresImuUpdatedZacc = 4;
HighresImuUpdatedXgyro = 8;
HighresImuUpdatedYgyro = 16;
HighresImuUpdatedZgyro = 32;
HighresImuUpdatedXmag = 64;
HighresImuUpdatedYmag = 128;
HighresImuUpdatedZmag = 256;
HighresImuUpdatedAbsPressure = 512;
HighresImuUpdatedDiffPressure = 1024;
HighresImuUpdatedPressureAlt = 2048;
HighresImuUpdatedTemperature = 4096;
HighresImuUpdatedAll = 65535;
}
// Flags in the HIL_SENSOR message indicate which fields have updated since the last message
enum HilSensorUpdatedFlags uint32 {
HilSensorUpdatedNone = 0;
HilSensorUpdatedXacc = 1;
HilSensorUpdatedYacc = 2;
HilSensorUpdatedZacc = 4;
HilSensorUpdatedXgyro = 8;
HilSensorUpdatedYgyro = 16;
HilSensorUpdatedZgyro = 32;
HilSensorUpdatedXmag = 64;
HilSensorUpdatedYmag = 128;
HilSensorUpdatedZmag = 256;
HilSensorUpdatedAbsPressure = 512;
HilSensorUpdatedDiffPressure = 1024;
HilSensorUpdatedPressureAlt = 2048;
HilSensorUpdatedTemperature = 4096;
}
// Flags to report failure cases over the high latency telemtry.
enum HlFailureFlag uint16 {
HlFailureFlagGps = 1;
HlFailureFlagDifferentialPressure = 2;
HlFailureFlagAbsolutePressure = 4;
HlFailureFlag3DAccel = 8;
HlFailureFlag3DGyro = 16;
HlFailureFlag3DMag = 32;
HlFailureFlagTerrain = 64;
HlFailureFlagBattery = 128;
HlFailureFlagRcReceiver = 256;
HlFailureFlagOffboardLink = 512;
HlFailureFlagEngine = 1024;
HlFailureFlagGeofence = 2048;
HlFailureFlagEstimator = 4096;
HlFailureFlagMission = 8192;
}
// Type of landing target
enum LandingTargetType uint8 {
LandingTargetTypeLightBeacon = 0;
LandingTargetTypeRadioBeacon = 1;
LandingTargetTypeVisionFiducial = 2;
LandingTargetTypeVisionOther = 3;
}
enum MagCalStatus uint8 {
MagCalNotStarted = 0;
MagCalWaitingToStart = 1;
MagCalRunningStepOne = 2;
MagCalRunningStepTwo = 3;
MagCalSuccess = 4;
MagCalFailed = 5;
MagCalBadOrientation = 6;
MagCalBadRadius = 7;
}
enum MavlinkDataStreamType uint8 {
MavlinkDataStreamImgJpeg = 0;
MavlinkDataStreamImgBmp = 1;
MavlinkDataStreamImgRaw8U = 2;
MavlinkDataStreamImgRaw32U = 3;
MavlinkDataStreamImgPgm = 4;
MavlinkDataStreamImgPng = 5;
}
enum MavArmAuthDeniedReason uint32 {
MavArmAuthDeniedReasonGeneric = 0;
MavArmAuthDeniedReasonNone = 1;
MavArmAuthDeniedReasonInvalidWaypoint = 2;
MavArmAuthDeniedReasonTimeout = 3;
MavArmAuthDeniedReasonAirspaceInUse = 4;
MavArmAuthDeniedReasonBadWeather = 5;
}
// Enumeration for battery charge states.
enum MavBatteryChargeState uint8 {
MavBatteryChargeStateUndefined = 0;
MavBatteryChargeStateOk = 1;
MavBatteryChargeStateLow = 2;
MavBatteryChargeStateCritical = 3;
MavBatteryChargeStateEmergency = 4;
MavBatteryChargeStateFailed = 5;
MavBatteryChargeStateUnhealthy = 6;
MavBatteryChargeStateCharging = 7;
}
// Smart battery supply status/fault flags (bitmask) for health indication. The battery must also report
// either MAV_BATTERY_CHARGE_STATE_FAILED or MAV_BATTERY_CHARGE_STATE_UNHEALTHY if any of these are set.
enum MavBatteryFault uint32 {
MavBatteryFaultDeepDischarge = 1;
MavBatteryFaultSpikes = 2;
MavBatteryFaultCellFail = 4;
MavBatteryFaultOverCurrent = 8;
MavBatteryFaultOverTemperature = 16;
MavBatteryFaultUnderTemperature = 32;
MavBatteryFaultIncompatibleVoltage = 64;
MavBatteryFaultIncompatibleFirmware = 128;
BatteryFaultIncompatibleCellsConfiguration = 256;
}
// Enumeration of battery functions
enum MavBatteryFunction uint8 {
MavBatteryFunctionUnknown = 0;
MavBatteryFunctionAll = 1;
MavBatteryFunctionPropulsion = 2;
MavBatteryFunctionAvionics = 3;
MavBatteryTypePayload = 4;
}
// Battery mode. Note, the normal operation mode (i.e. when flying) should be reported as MAV_BATTERY_MODE_UNKNOWN
// to allow message trimming in normal flight.
enum MavBatteryMode uint8 {
MavBatteryModeUnknown = 0;
MavBatteryModeAutoDischarging = 1;
MavBatteryModeHotSwap = 2;
}
// Enumeration of battery types
enum MavBatteryType uint8 {
MavBatteryTypeUnknown = 0;
MavBatteryTypeLipo = 1;
MavBatteryTypeLife = 2;
MavBatteryTypeLion = 3;
MavBatteryTypeNimh = 4;
}
// ACK / NACK / ERROR values as a result of MAV_CMDs and for mission item transmission.
enum MavCmdAck uint32 {
MavCmdAckOk = 0;
MavCmdAckErrFail = 1;
MavCmdAckErrAccessDenied = 2;
MavCmdAckErrNotSupported = 3;
MavCmdAckErrCoordinateFrameNotSupported = 4;
MavCmdAckErrCoordinatesOutOfRange = 5;
MavCmdAckErrXLatOutOfRange = 6;
MavCmdAckErrYLonOutOfRange = 7;
MavCmdAckErrZAltOutOfRange = 8;
}
// Possible actions an aircraft can take to avoid a collision.
enum MavCollisionAction uint8 {
MavCollisionActionNone = 0;
MavCollisionActionReport = 1;
MavCollisionActionAscendOrDescend = 2;
MavCollisionActionMoveHorizontally = 3;
MavCollisionActionMovePerpendicular = 4;
MavCollisionActionRtl = 5;
MavCollisionActionHover = 6;
}
// Source of information about this collision.
enum MavCollisionSrc uint8 {
MavCollisionSrcAdsb = 0;
MavCollisionSrcMavlinkGpsGlobalInt = 1;
}
// Aircraft-rated danger from this threat.
enum MavCollisionThreatLevel uint8 {
MavCollisionThreatLevelNone = 0;
MavCollisionThreatLevelLow = 1;
MavCollisionThreatLevelHigh = 2;
}
// A data stream is not a fixed set of messages, but rather a recommendation to the autopilot software. Individual
// autopilots may or may not obey the recommended messages.
enum MavDataStream uint32 {
MavDataStreamAll = 0;
MavDataStreamRawSensors = 1;
MavDataStreamExtendedStatus = 2;
MavDataStreamRcChannels = 3;
MavDataStreamRawController = 4;
MavDataStreamPosition = 6;
MavDataStreamExtra1 = 10;
MavDataStreamExtra2 = 11;
MavDataStreamExtra3 = 12;
}
// Enumeration of distance sensor types
enum MavDistanceSensor uint8 {
MavDistanceSensorLaser = 0;
MavDistanceSensorUltrasound = 1;
MavDistanceSensorInfrared = 2;
MavDistanceSensorRadar = 3;
MavDistanceSensorUnknown = 4;
}
// Bitmap of options for the MAV_CMD_DO_REPOSITION
enum MavDoRepositionFlags uint32 {
MavDoRepositionFlagsChangeMode = 1;
}
// Enumeration of estimator types
enum MavEstimatorType uint8 {
MavEstimatorTypeUnknown = 0;
MavEstimatorTypeNaive = 1;
MavEstimatorTypeVision = 2;
MavEstimatorTypeVio = 3;
MavEstimatorTypeGps = 4;
MavEstimatorTypeGpsIns = 5;
MavEstimatorTypeMocap = 6;
MavEstimatorTypeLidar = 7;
MavEstimatorTypeAutopilot = 8;
}
// Flags for CURRENT_EVENT_SEQUENCE.
enum MavEventCurrentSequenceFlags uint8 {
MavEventCurrentSequenceFlagsReset = 1;
}
// Reason for an event error response.
enum MavEventErrorReason uint8 {
MavEventErrorReasonUnavailable = 0;
}
// Co-ordinate frames used by MAVLink. Not all frames are supported by all commands, messages, or vehicles.
// Global frames use the following naming conventions: - "GLOBAL": Global co-ordinate frame with WGS84 latitude/longitude
// and altitude positive over mean sea level (MSL) by default. The following modifiers may be used with "GLOBAL":
// - "RELATIVE_ALT": Altitude is relative to the vehicle home position rather than MSL. - "TERRAIN_ALT":
// Altitude is relative to ground level rather than MSL. - "INT": Latitude/longitude (in degrees) are scaled
// by multiplying by 1E7. Local frames use the following naming conventions: - "LOCAL": Origin of local frame
// is fixed relative to earth. Unless otherwise specified this origin is the origin of the vehicle position-estimator
// ("EKF"). - "BODY": Origin of local frame travels with the vehicle. NOTE, "BODY" does NOT indicate alignment
// of frame axis with vehicle attitude. - "OFFSET": Deprecated synonym for "BODY" (origin travels with the
// vehicle). Not to be used for new frames. Some deprecated frames do not follow these conventions (e.g.
// MAV_FRAME_BODY_NED and MAV_FRAME_BODY_OFFSET_NED).
enum MavFrame uint8 {
MavFrameGlobal = 0;
MavFrameLocalNed = 1;
MavFrameMission = 2;
MavFrameGlobalRelativeAlt = 3;
MavFrameLocalEnu = 4;
MavFrameGlobalInt = 5;
MavFrameGlobalRelativeAltInt = 6;
MavFrameLocalOffsetNed = 7;
MavFrameBodyNed = 8;
MavFrameBodyOffsetNed = 9;
MavFrameGlobalTerrainAlt = 10;
MavFrameGlobalTerrainAltInt = 11;
MavFrameBodyFrd = 12;
MavFrameReserved13 = 13;
MavFrameReserved14 = 14;
MavFrameReserved15 = 15;
MavFrameReserved16 = 16;
MavFrameReserved17 = 17;
MavFrameReserved18 = 18;
MavFrameReserved19 = 19;
MavFrameLocalFrd = 20;
MavFrameLocalFlu = 21;
}
// Flags to report status/failure cases for a power generator (used in GENERATOR_STATUS). Note that FAULTS
// are conditions that cause the generator to fail. Warnings are conditions that require attention before
// the next use (they indicate the system is not operating properly).
enum MavGeneratorStatusFlag uint64 {
MavGeneratorStatusFlagOff = 1;
MavGeneratorStatusFlagReady = 2;
MavGeneratorStatusFlagGenerating = 4;
MavGeneratorStatusFlagCharging = 8;
MavGeneratorStatusFlagReducedPower = 16;
MavGeneratorStatusFlagMaxpower = 32;
MavGeneratorStatusFlagOvertempWarning = 64;
MavGeneratorStatusFlagOvertempFault = 128;
MavGeneratorStatusFlagElectronicsOvertempWarning = 256;
MavGeneratorStatusFlagElectronicsOvertempFault = 512;
MavGeneratorStatusFlagElectronicsFault = 1024;
MavGeneratorStatusFlagPowersourceFault = 2048;
MavGeneratorStatusFlagCommunicationWarning = 4096;
MavGeneratorStatusFlagCoolingWarning = 8192;
MavGeneratorStatusFlagPowerRailFault = 16384;
MavGeneratorStatusFlagOvercurrentFault = 32768;
MavGeneratorStatusFlagBatteryOverchargeCurrentFault = 65536;
MavGeneratorStatusFlagOvervoltageFault = 131072;
MavGeneratorStatusFlagBatteryUndervoltFault = 262144;
MavGeneratorStatusFlagStartInhibited = 524288;
MavGeneratorStatusFlagMaintenanceRequired = 1048576;
MavGeneratorStatusFlagWarmingUp = 2097152;
MavGeneratorStatusFlagIdle = 4194304;
}
// Actions that may be specified in MAV_CMD_OVERRIDE_GOTO to override mission execution.
enum MavGoto uint32 {
MavGotoDoHold = 0;
MavGotoDoContinue = 1;
MavGotoHoldAtCurrentPosition = 2;
MavGotoHoldAtSpecifiedPosition = 3;
}
// Enumeration of landed detector states
enum MavLandedState uint8 {
MavLandedStateUndefined = 0;
MavLandedStateOnGround = 1;
MavLandedStateInAir = 2;
MavLandedStateTakeoff = 3;
MavLandedStateLanding = 4;
}
// Result of mission operation (in a MISSION_ACK message).
enum MavMissionResult uint8 {
MavMissionAccepted = 0;
MavMissionError = 1;
MavMissionUnsupportedFrame = 2;
MavMissionUnsupported = 3;
MavMissionNoSpace = 4;
MavMissionInvalid = 5;
MavMissionInvalidParam1 = 6;
MavMissionInvalidParam2 = 7;
MavMissionInvalidParam3 = 8;
MavMissionInvalidParam4 = 9;
MavMissionInvalidParam5X = 10;
MavMissionInvalidParam6Y = 11;
MavMissionInvalidParam7 = 12;
MavMissionInvalidSequence = 13;
MavMissionDenied = 14;
MavMissionOperationCancelled = 15;
}
// Type of mission items being requested/sent in mission protocol.
enum MavMissionType uint8 {
MavMissionTypeMission = 0;
MavMissionTypeFence = 1;
MavMissionTypeRally = 2;
MavMissionTypeAll = 255;
}
// These defines are predefined OR-combined mode flags. There is no need to use values from this enum, but
// it simplifies the use of the mode flags. Note that manual input is enabled in all modes as a safety override.
enum MavMode uint8 {
MavModePreflight = 0;
MavModeStabilizeDisarmed = 80;
MavModeStabilizeArmed = 208;
MavModeManualDisarmed = 64;
MavModeManualArmed = 192;
MavModeGuidedDisarmed = 88;
MavModeGuidedArmed = 216;
MavModeAutoDisarmed = 92;
MavModeAutoArmed = 220;
MavModeTestDisarmed = 66;
MavModeTestArmed = 194;
}
// Enumeration of possible mount operation modes. This message is used by obsolete/deprecated gimbal messages.
enum MavMountMode uint32 {
MavMountModeRetract = 0;
MavMountModeNeutral = 1;
MavMountModeMavlinkTargeting = 2;
MavMountModeRcTargeting = 3;
MavMountModeGpsPoint = 4;
MavMountModeSysidTarget = 5;
MavMountModeHomeLocation = 6;
}
enum MavOdidAuthType uint8 {
MavOdidAuthTypeNone = 0;
MavOdidAuthTypeUasIdSignature = 1;
MavOdidAuthTypeOperatorIdSignature = 2;
MavOdidAuthTypeMessageSetSignature = 3;
MavOdidAuthTypeNetworkRemoteId = 4;
MavOdidAuthTypeSpecificAuthentication = 5;
}
enum MavOdidCategoryEu uint8 {
MavOdidCategoryEuUndeclared = 0;
MavOdidCategoryEuOpen = 1;
MavOdidCategoryEuSpecific = 2;
MavOdidCategoryEuCertified = 3;
}
enum MavOdidClassificationType uint8 {
MavOdidClassificationTypeUndeclared = 0;
MavOdidClassificationTypeEu = 1;
}
enum MavOdidClassEu uint8 {
MavOdidClassEuUndeclared = 0;
MavOdidClassEuClass0 = 1;
MavOdidClassEuClass1 = 2;
MavOdidClassEuClass2 = 3;
MavOdidClassEuClass3 = 4;
MavOdidClassEuClass4 = 5;
MavOdidClassEuClass5 = 6;
MavOdidClassEuClass6 = 7;
}
enum MavOdidDescType uint8 {
MavOdidDescTypeText = 0;
}
enum MavOdidHeightRef uint8 {
MavOdidHeightRefOverTakeoff = 0;
MavOdidHeightRefOverGround = 1;
}
enum MavOdidHorAcc uint8 {
MavOdidHorAccUnknown = 0;
MavOdidHorAcc10Nm = 1;
MavOdidHorAcc4Nm = 2;
MavOdidHorAcc2Nm = 3;
MavOdidHorAcc1Nm = 4;
MavOdidHorAcc05Nm = 5;
MavOdidHorAcc03Nm = 6;
MavOdidHorAcc01Nm = 7;
MavOdidHorAcc005Nm = 8;
MavOdidHorAcc30Meter = 9;
MavOdidHorAcc10Meter = 10;
MavOdidHorAcc3Meter = 11;
MavOdidHorAcc1Meter = 12;
}
enum MavOdidIdType uint8 {
MavOdidIdTypeNone = 0;
MavOdidIdTypeSerialNumber = 1;
MavOdidIdTypeCaaRegistrationId = 2;
MavOdidIdTypeUtmAssignedUuid = 3;
MavOdidIdTypeSpecificSessionId = 4;
}
enum MavOdidOperatorIdType uint8 {
MavOdidOperatorIdTypeCaa = 0;
}
enum MavOdidOperatorLocationType uint8 {
MavOdidOperatorLocationTypeTakeoff = 0;
MavOdidOperatorLocationTypeLiveGnss = 1;
MavOdidOperatorLocationTypeFixed = 2;
}
enum MavOdidSpeedAcc uint8 {
MavOdidSpeedAccUnknown = 0;
MavOdidSpeedAcc10MetersPerSecond = 1;
MavOdidSpeedAcc3MetersPerSecond = 2;
MavOdidSpeedAcc1MetersPerSecond = 3;
MavOdidSpeedAcc03MetersPerSecond = 4;
}
enum MavOdidStatus uint8 {
MavOdidStatusUndeclared = 0;
MavOdidStatusGround = 1;
MavOdidStatusAirborne = 2;
MavOdidStatusEmergency = 3;
}
enum MavOdidTimeAcc uint8 {
MavOdidTimeAccUnknown = 0;
MavOdidTimeAcc01Second = 1;
MavOdidTimeAcc02Second = 2;
MavOdidTimeAcc03Second = 3;
MavOdidTimeAcc04Second = 4;
MavOdidTimeAcc05Second = 5;
MavOdidTimeAcc06Second = 6;
MavOdidTimeAcc07Second = 7;
MavOdidTimeAcc08Second = 8;
MavOdidTimeAcc09Second = 9;
MavOdidTimeAcc10Second = 10;
MavOdidTimeAcc11Second = 11;
MavOdidTimeAcc12Second = 12;
MavOdidTimeAcc13Second = 13;
MavOdidTimeAcc14Second = 14;
MavOdidTimeAcc15Second = 15;
}
enum MavOdidUaType uint8 {
MavOdidUaTypeNone = 0;
MavOdidUaTypeAeroplane = 1;
MavOdidUaTypeHelicopterOrMultirotor = 2;
MavOdidUaTypeGyroplane = 3;
MavOdidUaTypeHybridLift = 4;
MavOdidUaTypeOrnithopter = 5;
MavOdidUaTypeGlider = 6;
MavOdidUaTypeKite = 7;
MavOdidUaTypeFreeBalloon = 8;
MavOdidUaTypeCaptiveBalloon = 9;
MavOdidUaTypeAirship = 10;
MavOdidUaTypeFreeFallParachute = 11;
MavOdidUaTypeRocket = 12;
MavOdidUaTypeTetheredPoweredAircraft = 13;
MavOdidUaTypeGroundObstacle = 14;
MavOdidUaTypeOther = 15;
}
enum MavOdidVerAcc uint8 {
MavOdidVerAccUnknown = 0;
MavOdidVerAcc150Meter = 1;
MavOdidVerAcc45Meter = 2;
MavOdidVerAcc25Meter = 3;
MavOdidVerAcc10Meter = 4;
MavOdidVerAcc3Meter = 5;
MavOdidVerAcc1Meter = 6;
}
// Specifies the datatype of a MAVLink extended parameter.
enum MavParamExtType uint8 {
MavParamExtTypeUint8 = 1;
MavParamExtTypeInt8 = 2;
MavParamExtTypeUint16 = 3;
MavParamExtTypeInt16 = 4;
MavParamExtTypeUint32 = 5;
MavParamExtTypeInt32 = 6;
MavParamExtTypeUint64 = 7;
MavParamExtTypeInt64 = 8;
MavParamExtTypeReal32 = 9;
MavParamExtTypeReal64 = 10;
MavParamExtTypeCustom = 11;
}
// Specifies the datatype of a MAVLink parameter.
enum MavParamType uint8 {
MavParamTypeUint8 = 1;
MavParamTypeInt8 = 2;
MavParamTypeUint16 = 3;
MavParamTypeInt16 = 4;
MavParamTypeUint32 = 5;
MavParamTypeInt32 = 6;
MavParamTypeUint64 = 7;
MavParamTypeInt64 = 8;
MavParamTypeReal32 = 9;
MavParamTypeReal64 = 10;
}
// Power supply status flags (bitmask)
enum MavPowerStatus uint16 {
MavPowerStatusBrickValid = 1;
MavPowerStatusServoValid = 2;
MavPowerStatusUsbConnected = 4;
MavPowerStatusPeriphOvercurrent = 8;
MavPowerStatusPeriphHipowerOvercurrent = 16;
MavPowerStatusChanged = 32;
}
// Bitmask of (optional) autopilot capabilities (64 bit). If a bit is set, the autopilot supports this capability.
enum MavProtocolCapability uint64 {
MavProtocolCapabilityMissionFloat = 1;
MavProtocolCapabilityParamFloat = 2;
MavProtocolCapabilityMissionInt = 4;
MavProtocolCapabilityCommandInt = 8;
MavProtocolCapabilityParamUnion = 16;
MavProtocolCapabilityFtp = 32;
MavProtocolCapabilitySetAttitudeTarget = 64;
MavProtocolCapabilitySetPositionTargetLocalNed = 128;
MavProtocolCapabilitySetPositionTargetGlobalInt = 256;
MavProtocolCapabilityTerrain = 512;
MavProtocolCapabilitySetActuatorTarget = 1024;
MavProtocolCapabilityFlightTermination = 2048;
MavProtocolCapabilityCompassCalibration = 4096;
MavProtocolCapabilityMavlink2 = 8192;
MavProtocolCapabilityMissionFence = 16384;
MavProtocolCapabilityMissionRally = 32768;
MavProtocolCapabilityFlightInformation = 65536;
}
// Result from a MAVLink command (MAV_CMD)
enum MavResult uint8 {
MavResultAccepted = 0;
MavResultTemporarilyRejected = 1;
MavResultDenied = 2;
MavResultUnsupported = 3;
MavResultFailed = 4;
MavResultInProgress = 5;
MavResultCancelled = 6;
}
// The ROI (region of interest) for the vehicle. This can be be used by the vehicle for camera/vehicle attitude
// alignment (see MAV_CMD_NAV_ROI).
enum MavRoi uint32 {
MavRoiNone = 0;
MavRoiWpnext = 1;
MavRoiWpindex = 2;
MavRoiLocation = 3;
MavRoiTarget = 4;
}
// Enumeration of sensor orientation, according to its rotations
enum MavSensorOrientation uint8 {
MavSensorRotationNone = 0;
MavSensorRotationYaw45 = 1;
MavSensorRotationYaw90 = 2;
MavSensorRotationYaw135 = 3;
MavSensorRotationYaw180 = 4;
MavSensorRotationYaw225 = 5;
MavSensorRotationYaw270 = 6;
MavSensorRotationYaw315 = 7;
MavSensorRotationRoll180 = 8;
MavSensorRotationRoll180Yaw45 = 9;
MavSensorRotationRoll180Yaw90 = 10;
MavSensorRotationRoll180Yaw135 = 11;
MavSensorRotationPitch180 = 12;
MavSensorRotationRoll180Yaw225 = 13;
MavSensorRotationRoll180Yaw270 = 14;
MavSensorRotationRoll180Yaw315 = 15;
MavSensorRotationRoll90 = 16;
MavSensorRotationRoll90Yaw45 = 17;
MavSensorRotationRoll90Yaw90 = 18;
MavSensorRotationRoll90Yaw135 = 19;
MavSensorRotationRoll270 = 20;
MavSensorRotationRoll270Yaw45 = 21;
MavSensorRotationRoll270Yaw90 = 22;
MavSensorRotationRoll270Yaw135 = 23;
MavSensorRotationPitch90 = 24;
MavSensorRotationPitch270 = 25;
MavSensorRotationPitch180Yaw90 = 26;
MavSensorRotationPitch180Yaw270 = 27;
MavSensorRotationRoll90Pitch90 = 28;
MavSensorRotationRoll180Pitch90 = 29;
MavSensorRotationRoll270Pitch90 = 30;
MavSensorRotationRoll90Pitch180 = 31;
MavSensorRotationRoll270Pitch180 = 32;
MavSensorRotationRoll90Pitch270 = 33;
MavSensorRotationRoll180Pitch270 = 34;
MavSensorRotationRoll270Pitch270 = 35;
MavSensorRotationRoll90Pitch180Yaw90 = 36;
MavSensorRotationRoll90Yaw270 = 37;
MavSensorRotationRoll90Pitch68Yaw293 = 38;
MavSensorRotationPitch315 = 39;
MavSensorRotationRoll90Pitch315 = 40;
MavSensorRotationCustom = 100;
}
// Indicates the severity level, generally used for status messages to indicate their relative urgency. Based
// on RFC-5424 using expanded definitions at: http://www.kiwisyslog.com/kb/info:-syslog-message-levels/.
enum MavSeverity uint8 {
MavSeverityEmergency = 0;
MavSeverityAlert = 1;
MavSeverityCritical = 2;
MavSeverityError = 3;
MavSeverityWarning = 4;
MavSeverityNotice = 5;
MavSeverityInfo = 6;
MavSeverityDebug = 7;
}
// These encode the sensors whose status is sent as part of the SYS_STATUS message.
enum MavSysStatusSensor uint32 {
MavSysStatusSensor3DGyro = 1;
MavSysStatusSensor3DAccel = 2;
MavSysStatusSensor3DMag = 4;
MavSysStatusSensorAbsolutePressure = 8;
MavSysStatusSensorDifferentialPressure = 16;
MavSysStatusSensorGps = 32;
MavSysStatusSensorOpticalFlow = 64;
MavSysStatusSensorVisionPosition = 128;
MavSysStatusSensorLaserPosition = 256;
MavSysStatusSensorExternalGroundTruth = 512;
MavSysStatusSensorAngularRateControl = 1024;
MavSysStatusSensorAttitudeStabilization = 2048;
MavSysStatusSensorYawPosition = 4096;
MavSysStatusSensorZAltitudeControl = 8192;
MavSysStatusSensorXyPositionControl = 16384;
MavSysStatusSensorMotorOutputs = 32768;
MavSysStatusSensorRcReceiver = 65536;
MavSysStatusSensor3DGyro2 = 131072;
MavSysStatusSensor3DAccel2 = 262144;
MavSysStatusSensor3DMag2 = 524288;
MavSysStatusGeofence = 1048576;
MavSysStatusAhrs = 2097152;
MavSysStatusTerrain = 4194304;
MavSysStatusReverseMotor = 8388608;
MavSysStatusLogging = 16777216;
MavSysStatusSensorBattery = 33554432;
MavSysStatusSensorProximity = 67108864;
MavSysStatusSensorSatcom = 134217728;
MavSysStatusPrearmCheck = 268435456;
MavSysStatusObstacleAvoidance = 536870912;
MavSysStatusSensorPropulsion = 1073741824;
}
// These encode the sensors whose status is sent as part of the SYS_STATUS message in the extended fields.
enum MavSysStatusSensorExtended uint32 {
MavSysStatusRecoverySystem = 1;
}
enum MavTunnelPayloadType uint16 {
MavTunnelPayloadTypeUnknown = 0;
MavTunnelPayloadTypeStorm32Reserved0 = 200;
MavTunnelPayloadTypeStorm32Reserved1 = 201;
MavTunnelPayloadTypeStorm32Reserved2 = 202;
MavTunnelPayloadTypeStorm32Reserved3 = 203;
MavTunnelPayloadTypeStorm32Reserved4 = 204;
MavTunnelPayloadTypeStorm32Reserved5 = 205;
MavTunnelPayloadTypeStorm32Reserved6 = 206;
MavTunnelPayloadTypeStorm32Reserved7 = 207;
MavTunnelPayloadTypeStorm32Reserved8 = 208;
MavTunnelPayloadTypeStorm32Reserved9 = 209;
}
// Enumeration of VTOL states
enum MavVtolState uint8 {
MavVtolStateUndefined = 0;
MavVtolStateTransitionToFw = 1;
MavVtolStateTransitionToMc = 2;
MavVtolStateMc = 3;
MavVtolStateFw = 4;
}
// Winch status flags used in WINCH_STATUS
enum MavWinchStatusFlag uint32 {
MavWinchStatusHealthy = 1;
MavWinchStatusFullyRetracted = 2;
MavWinchStatusMoving = 4;
MavWinchStatusClutchEngaged = 8;
}
// Sequence that motors are tested when using MAV_CMD_DO_MOTOR_TEST.
enum MotorTestOrder uint32 {
MotorTestOrderDefault = 0;
MotorTestOrderSequence = 1;
MotorTestOrderBoard = 2;
}
// Defines how throttle value is represented in MAV_CMD_DO_MOTOR_TEST.
enum MotorTestThrottleType uint32 {
MotorTestThrottlePercent = 0;
MotorTestThrottlePwm = 1;
MotorTestThrottlePilot = 2;
MotorTestCompassCal = 3;
}
enum NavVtolLandOptions uint32 {
NavVtolLandOptionsDefault = 0;
NavVtolLandOptionsFwDescent = 1;
NavVtolLandOptionsHoverDescent = 2;
}
// Yaw behaviour during orbit flight.
enum OrbitYawBehaviour uint32 {
OrbitYawBehaviourHoldFrontToCircleCenter = 0;
OrbitYawBehaviourHoldInitialHeading = 1;
OrbitYawBehaviourUncontrolled = 2;
OrbitYawBehaviourHoldFrontTangentToCircle = 3;
OrbitYawBehaviourRcControlled = 4;
}
// Parachute actions. Trigger release and enable/disable auto-release.
enum ParachuteAction uint32 {
ParachuteDisable = 0;
ParachuteEnable = 1;
ParachuteRelease = 2;
}
// Result from PARAM_EXT_SET message (or a PARAM_SET within a transaction).
enum ParamAck uint8 {
ParamAckAccepted = 0;
ParamAckValueUnsupported = 1;
ParamAckFailed = 2;
ParamAckInProgress = 3;
}
// Bitmap to indicate which dimensions should be ignored by the vehicle: a value of 0b0000000000000000 or
// 0b0000001000000000 indicates that none of the setpoint dimensions should be ignored. If bit 9 is set the
// floats afx afy afz should be interpreted as force instead of acceleration.
enum PositionTargetTypemask uint16 {
PositionTargetTypemaskXIgnore = 1;
PositionTargetTypemaskYIgnore = 2;
PositionTargetTypemaskZIgnore = 4;
PositionTargetTypemaskVxIgnore = 8;
PositionTargetTypemaskVyIgnore = 16;
PositionTargetTypemaskVzIgnore = 32;
PositionTargetTypemaskAxIgnore = 64;
PositionTargetTypemaskAyIgnore = 128;
PositionTargetTypemaskAzIgnore = 256;
PositionTargetTypemaskForceSet = 512;
PositionTargetTypemaskYawIgnore = 1024;
PositionTargetTypemaskYawRateIgnore = 2048;
}
// Precision land modes (used in MAV_CMD_NAV_LAND).
enum PrecisionLandMode uint32 {
PrecisionLandModeDisabled = 0;
PrecisionLandModeOpportunistic = 1;
PrecisionLandModeRequired = 2;
}
// RC type
enum RcType uint32 {
RcTypeSpektrumDsm2 = 0;
RcTypeSpektrumDsmx = 1;
}
// RTK GPS baseline coordinate system, used for RTK corrections
enum RtkBaselineCoordinateSystem uint8 {
RtkBaselineCoordinateSystemEcef = 0;
RtkBaselineCoordinateSystemNed = 1;
}
// SERIAL_CONTROL device types
enum SerialControlDev uint8 {
SerialControlDevTelem1 = 0;
SerialControlDevTelem2 = 1;
SerialControlDevGps1 = 2;
SerialControlDevGps2 = 3;
SerialControlDevShell = 10;
SerialControlSerial0 = 100;
SerialControlSerial1 = 101;
SerialControlSerial2 = 102;
SerialControlSerial3 = 103;
SerialControlSerial4 = 104;
SerialControlSerial5 = 105;
SerialControlSerial6 = 106;
SerialControlSerial7 = 107;
SerialControlSerial8 = 108;
SerialControlSerial9 = 109;
}
// SERIAL_CONTROL flags (bitmask)
enum SerialControlFlag uint8 {
SerialControlFlagReply = 1;
SerialControlFlagRespond = 2;
SerialControlFlagExclusive = 4;
SerialControlFlagBlocking = 8;
SerialControlFlagMulti = 16;
}
// Focus types for MAV_CMD_SET_CAMERA_FOCUS
enum SetFocusType uint32 {
FocusTypeStep = 0;
FocusTypeContinuous = 1;
FocusTypeRange = 2;
FocusTypeMeters = 3;
FocusTypeAuto = 4;
FocusTypeAutoSingle = 5;
FocusTypeAutoContinuous = 6;
}
// Flags to indicate the status of camera storage.
enum StorageStatus uint8 {
StorageStatusEmpty = 0;
StorageStatusUnformatted = 1;
StorageStatusReady = 2;
StorageStatusNotSupported = 3;
}
// Flags to indicate the type of storage.
enum StorageType uint8 {
StorageTypeUnknown = 0;
StorageTypeUsbStick = 1;
StorageTypeSd = 2;
StorageTypeMicrosd = 3;
StorageTypeCf = 4;
StorageTypeCfe = 5;
StorageTypeXqd = 6;
StorageTypeHd = 7;
StorageTypeOther = 254;
}
// Flags to indicate usage for a particular storage (see STORAGE_INFORMATION.storage_usage and MAV_CMD_SET_STORAGE_USAGE).
enum StorageUsageFlag uint8 {
StorageUsageFlagSet = 1;
StorageUsageFlagPhoto = 2;
StorageUsageFlagVideo = 4;
StorageUsageFlagLogs = 8;
}
// Tune formats (used for vehicle buzzer/tone generation).
enum TuneFormat uint32 {
TuneFormatQbasic11 = 1;
TuneFormatMmlModern = 2;
}
// Generalized UAVCAN node health
enum UavcanNodeHealth uint8 {
UavcanNodeHealthOk = 0;
UavcanNodeHealthWarning = 1;
UavcanNodeHealthError = 2;
UavcanNodeHealthCritical = 3;
}
// Generalized UAVCAN node mode
enum UavcanNodeMode uint8 {
UavcanNodeModeOperational = 0;
UavcanNodeModeInitialization = 1;
UavcanNodeModeMaintenance = 2;
UavcanNodeModeSoftwareUpdate = 3;
UavcanNodeModeOffline = 7;
}
// Flags for the global position report.
enum UtmDataAvailFlags uint8 {
UtmDataAvailFlagsTimeValid = 1;
UtmDataAvailFlagsUasIdAvailable = 2;
UtmDataAvailFlagsPositionAvailable = 4;
UtmDataAvailFlagsAltitudeAvailable = 8;
UtmDataAvailFlagsRelativeAltitudeAvailable = 16;
UtmDataAvailFlagsHorizontalVeloAvailable = 32;
UtmDataAvailFlagsVerticalVeloAvailable = 64;
UtmDataAvailFlagsNextWaypointAvailable = 128;
}
// Airborne status of UAS.
enum UtmFlightState uint8 {
UtmFlightStateUnknown = 1;
UtmFlightStateGround = 2;
UtmFlightStateAirborne = 3;
UtmFlightStateEmergency = 16;
UtmFlightStateNoctrl = 32;
}
// Stream status flags (Bitmap)
enum VideoStreamStatusFlags uint16 {
VideoStreamStatusFlagsRunning = 1;
VideoStreamStatusFlagsThermal = 2;
}
// Video stream types
enum VideoStreamType uint8 {
VideoStreamTypeRtsp = 0;
VideoStreamTypeRtpudp = 1;
VideoStreamTypeTcpMpeg = 2;
VideoStreamTypeMpegTsH264 = 3;
}
// Direction of VTOL transition
enum VtolTransitionHeading uint32 {
VtolTransitionHeadingVehicleDefault = 0;
VtolTransitionHeadingNextWaypoint = 1;
VtolTransitionHeadingTakeoff = 2;
VtolTransitionHeadingSpecified = 3;
VtolTransitionHeadingAny = 4;
}
// WiFi Mode.
enum WifiConfigApMode int8 {
WifiConfigApModeUndefined = 0;
WifiConfigApModeAp = 1;
WifiConfigApModeStation = 2;
WifiConfigApModeDisabled = 3;
}
// Possible responses from a WIFI_CONFIG_AP message.
enum WifiConfigApResponse int8 {
WifiConfigApResponseUndefined = 0;
WifiConfigApResponseAccepted = 1;
WifiConfigApResponseRejected = 2;
WifiConfigApResponseModeError = 3;
WifiConfigApResponseSsidError = 4;
WifiConfigApResponsePasswordError = 5;
}
// Winch actions.
enum WinchActions uint32 {
WinchRelaxed = 0;
WinchRelativeLengthControl = 1;
WinchRateControl = 2;
}
message struct ActuatorControlTarget extends MessageFrame {
// Timestamp (UNIX Epoch time or time since system boot). The receiving end can infer timestamp format (since
// 1.1.1970 or since system boot) by checking for the magnitude of the number.
TimeUsec: uint64;
// Actuator group. The "_mlx" indicates this is a multi-instance message and a MAVLink parser should use
// this field to difference between instances.
GroupMlx: uint8;
// Actuator controls. Normed to -1..+1 where 0 is neutral position. Throttle for single rotation direction
// motors is 0..1, negative range for reverse direction. Standard mapping for attitude controls (group 0):
// (index 0-7): roll, pitch, yaw, throttle, flaps, spoilers, airbrakes, landing gear. Load a pass-through
// mixer to repurpose them as generic outputs.
@Length(8)
Controls: float32[];
}
message struct ActuatorOutputStatus extends MessageFrame {
// Timestamp (since system boot).
TimeUsec: uint64;
// Active outputs
Active: uint32;
// Servo / motor output array values. Zero values indicate unused channels.
@Length(32)
Actuator: float32[];
}
message struct AdsbVehicle extends MessageFrame {
// ICAO address
IcaoAddress: uint32;
// Latitude
Lat: int32;
// Longitude
Lon: int32;
// ADSB altitude type.
AltitudeType: AdsbAltitudeType;
// Altitude(ASL)
Altitude: int32;
// Course over ground
Heading: uint16;
// The horizontal velocity
HorVelocity: uint16;
// The vertical velocity. Positive is up
VerVelocity: int16;
// The callsign, 8+null
@Length(9)
Callsign: string;
// ADSB emitter type.
EmitterType: AdsbEmitterType;
// Time since last communication in seconds
Tslc: uint8;
// Bitmap to indicate various statuses including valid data fields
Flags: AdsbFlagsBitmask;
// Squawk code
Squawk: uint16;
}
message struct Altitude extends MessageFrame {
// Timestamp (UNIX Epoch time or time since system boot). The receiving end can infer timestamp format (since
// 1.1.1970 or since system boot) by checking for the magnitude of the number.
TimeUsec: uint64;
// This altitude measure is initialized on system boot and monotonic (it is never reset, but represents the
// local altitude change). The only guarantee on this field is that it will never be reset and is consistent
// within a flight. The recommended value for this field is the uncorrected barometric altitude at boot time.
// This altitude will also drift and vary between flights.
AltitudeMonotonic: float32;
// This altitude measure is strictly above mean sea level and might be non-monotonic (it might reset on events
// like GPS lock or when a new QNH value is set). It should be the altitude to which global altitude waypoints
// are compared to. Note that it is *not* the GPS altitude, however, most GPS modules already output MSL
// by default and not the WGS84 altitude.
AltitudeAmsl: float32;
// This is the local altitude in the local coordinate frame. It is not the altitude above home, but in reference
// to the coordinate origin (0, 0, 0). It is up-positive.
AltitudeLocal: float32;
// This is the altitude above the home position. It resets on each change of the current home position.
AltitudeRelative: float32;
// This is the altitude above terrain. It might be fed by a terrain database or an altimeter. Values smaller
// than -1000 should be interpreted as unknown.
AltitudeTerrain: float32;
// This is not the altitude, but the clear space below the system according to the fused clearance estimate.
// It generally should max out at the maximum range of e.g. the laser altimeter. It is generally a moving
// target. A negative value indicates no measurement available.
BottomClearance: float32;
}
message struct Attitude extends MessageFrame {
// Timestamp (time since system boot).
TimeBootMs: uint32;
// Roll angle (-pi..+pi)
Roll: float32;
// Pitch angle (-pi..+pi)
Pitch: float32;
// Yaw angle (-pi..+pi)
Yaw: float32;
// Roll angular speed
Rollspeed: float32;
// Pitch angular speed
Pitchspeed: float32;
// Yaw angular speed
Yawspeed: float32;
}
message struct AttitudeQuaternion extends MessageFrame {
// Timestamp (time since system boot).
TimeBootMs: uint32;
// Quaternion component 1, w (1 in null-rotation)
Q1: float32;
// Quaternion component 2, x (0 in null-rotation)
Q2: float32;
// Quaternion component 3, y (0 in null-rotation)
Q3: float32;
// Quaternion component 4, z (0 in null-rotation)
Q4: float32;
// Roll angular speed
Rollspeed: float32;
// Pitch angular speed
Pitchspeed: float32;
// Yaw angular speed
Yawspeed: float32;
AttitudeQuaternion_extensions: Optional<AttitudeQuaternion_extension>;
}
struct AttitudeQuaternion_extension {
// Rotation offset by which the attitude quaternion and angular speed vector should be rotated for user display
// (quaternion with [w, x, y, z] order, zero-rotation is [1, 0, 0, 0], send [0, 0, 0, 0] if field not supported).
// This field is intended for systems in which the reference attitude may change during flight. For example,
// tailsitters VTOLs rotate their reference attitude by 90 degrees between hover mode and fixed wing mode,
// thus repr_offset_q is equal to [1, 0, 0, 0] in hover mode and equal to [0.7071, 0, 0.7071, 0] in fixed
// wing mode.
@Length(4)
ReprOffsetQ: float32[];
}
message struct AttitudeQuaternionCov extends MessageFrame {
// Timestamp (UNIX Epoch time or time since system boot). The receiving end can infer timestamp format (since
// 1.1.1970 or since system boot) by checking for the magnitude of the number.
TimeUsec: uint64;
// Quaternion components, w, x, y, z (1 0 0 0 is the null-rotation)
@Length(4)
Q: float32[];
// Roll angular speed
Rollspeed: float32;
// Pitch angular speed
Pitchspeed: float32;
// Yaw angular speed
Yawspeed: float32;
// Row-major representation of a 3x3 attitude covariance matrix (states: roll, pitch, yaw; first three entries
// are the first ROW, next three entries are the second row, etc.). If unknown, assign NaN value to first
// element in the array.
@Length(9)
Covariance: float32[];
}
message struct AttitudeTarget extends MessageFrame {
// Timestamp (time since system boot).
TimeBootMs: uint32;
// Bitmap to indicate which dimensions should be ignored by the vehicle.
TypeMask: AttitudeTargetTypemaskBitmask;
// Attitude quaternion (w, x, y, z order, zero-rotation is 1, 0, 0, 0)
@Length(4)
Q: float32[];
// Body roll rate
BodyRollRate: float32;
// Body pitch rate
BodyPitchRate: float32;
// Body yaw rate
BodyYawRate: float32;
// Collective thrust, normalized to 0 .. 1 (-1 .. 1 for vehicles capable of reverse trust)
Thrust: float32;
}
message struct AttPosMocap extends MessageFrame {
// Timestamp (UNIX Epoch time or time since system boot). The receiving end can infer timestamp format (since
// 1.1.1970 or since system boot) by checking for the magnitude of the number.
TimeUsec: uint64;
// Attitude quaternion (w, x, y, z order, zero-rotation is 1, 0, 0, 0)
@Length(4)
Q: float32[];
// X position (NED)
X: float32;
// Y position (NED)
Y: float32;
// Z position (NED)
Z: float32;
AttPosMocap_extensions: Optional<AttPosMocap_extension>;
}
struct AttPosMocap_extension {
// Row-major representation of a pose 6x6 cross-covariance matrix upper right triangle (states: x, y, z,
// roll, pitch, yaw; first six entries are the first ROW, next five entries are the second ROW, etc.). If
// unknown, assign NaN value to first element in the array.
@Length(21)
Covariance: float32[];
}
message struct AuthKey extends MessageFrame {
// key
@Length(32)
Key: string;
}
message struct AutopilotVersion extends MessageFrame {
// Bitmap of capabilities
Capabilities: MavProtocolCapabilityBitmask;
// Firmware version number
FlightSwVersion: uint32;
// Middleware version number
MiddlewareSwVersion: uint32;
// Operating system version number
OsSwVersion: uint32;
// HW / board version (last 8 bits should be silicon ID, if any). The first 16 bits of this field specify
// https://github.com/PX4/PX4-Bootloader/blob/master/board_types.txt
BoardVersion: uint32;
// Custom version field, commonly the first 8 bytes of the git hash. This is not an unique identifier, but
// should allow to identify the commit using the main version number even for very large code bases.
@Length(8)
FlightCustomVersion: uint8[];
// Custom version field, commonly the first 8 bytes of the git hash. This is not an unique identifier, but
// should allow to identify the commit using the main version number even for very large code bases.
@Length(8)
MiddlewareCustomVersion: uint8[];
// Custom version field, commonly the first 8 bytes of the git hash. This is not an unique identifier, but
// should allow to identify the commit using the main version number even for very large code bases.
@Length(8)
OsCustomVersion: uint8[];
// ID of the board vendor
VendorId: uint16;
// ID of the product
ProductId: uint16;
// UID if provided by hardware (see uid2)
Uid: uint64;
AutopilotVersion_extensions: Optional<AutopilotVersion_extension>;
}
struct AutopilotVersion_extension {
// UID if provided by hardware (supersedes the uid field. If this is non-zero, use this field, otherwise
// use uid)
@Length(18)
Uid2: uint8[];
}
message struct BatteryStatus extends MessageFrame {
// Battery ID
Id: uint8;
// Function of the battery
BatteryFunction: MavBatteryFunction;
// Type (chemistry) of the battery
Type: MavBatteryType;
// Temperature of the battery. INT16_MAX for unknown temperature.
Temperature: int16;
// Battery voltage of cells 1 to 10 (see voltages_ext for cells 11-14). Cells in this field above the valid
// cell count for this battery should have the UINT16_MAX value. If individual cell voltages are unknown
// or not measured for this battery, then the overall battery voltage should be filled in cell 0, with all
// others set to UINT16_MAX. If the voltage of the battery is greater than (UINT16_MAX - 1), then cell 0
// should be set to (UINT16_MAX - 1), and cell 1 to the remaining voltage. This can be extended to multiple
// cells if the total voltage is greater than 2 * (UINT16_MAX - 1).
@Length(10)
Voltages: uint16[];
// Battery current, -1: autopilot does not measure the current
CurrentBattery: int16;
// Consumed charge, -1: autopilot does not provide consumption estimate
CurrentConsumed: int32;
// Consumed energy, -1: autopilot does not provide energy consumption estimate
EnergyConsumed: int32;
// Remaining battery energy. Values: [0-100], -1: autopilot does not estimate the remaining battery.
BatteryRemaining: int8;
BatteryStatus_extensions: Optional<BatteryStatus_extension>;
}
struct BatteryStatus_extension {
// Remaining battery time, 0: autopilot does not provide remaining battery time estimate
TimeRemaining: int32;
// State for extent of discharge, provided by autopilot for warning or external reactions
ChargeState: MavBatteryChargeState;
// Battery voltages for cells 11 to 14. Cells above the valid cell count for this battery should have a value
// of 0, where zero indicates not supported (note, this is different than for the voltages field and allows
// empty byte truncation). If the measured value is 0 then 1 should be sent instead.
@Length(4)
VoltagesExt: uint16[];
// Battery mode. Default (0) is that battery mode reporting is not supported or battery is in normal-use
// mode.
Mode: MavBatteryMode;
// Fault/health indications. These should be set when charge_state is MAV_BATTERY_CHARGE_STATE_FAILED or
// MAV_BATTERY_CHARGE_STATE_UNHEALTHY (if not, fault reporting is not supported).
FaultBitmask: MavBatteryFaultBitmask;
}
message struct ButtonChange extends MessageFrame {
// Timestamp (time since system boot).
TimeBootMs: uint32;
// Time of last change of button state.
LastChangeMs: uint32;
// Bitmap for state of buttons.
State: uint8;
}
message struct CameraCaptureStatus extends MessageFrame {
// Timestamp (time since system boot).
TimeBootMs: uint32;
// Current status of image capturing (0: idle, 1: capture in progress, 2: interval set but idle, 3: interval
// set and capture in progress)
ImageStatus: uint8;
// Current status of video capturing (0: idle, 1: capture in progress)
VideoStatus: uint8;
// Image capture interval
ImageInterval: float32;
// Elapsed time since recording started (0: Not supported/available). A GCS should compute recording time
// and use non-zero values of this field to correct any discrepancy.
RecordingTimeMs: uint32;
// Available storage capacity.
AvailableCapacity: float32;
CameraCaptureStatus_extensions: Optional<CameraCaptureStatus_extension>;
}
struct CameraCaptureStatus_extension {
// Total number of images captured ('forever', or until reset using MAV_CMD_STORAGE_FORMAT).
ImageCount: int32;
}
message struct CameraImageCaptured extends MessageFrame {
// Timestamp (time since system boot).
TimeBootMs: uint32;
// Timestamp (time since UNIX epoch) in UTC. 0 for unknown.
TimeUtc: uint64;
// Deprecated/unused. Component IDs are used to differentiate multiple cameras.
CameraId: uint8;
// Latitude where image was taken
Lat: int32;
// Longitude where capture was taken
Lon: int32;
// Altitude (MSL) where image was taken
Alt: int32;
// Altitude above ground
RelativeAlt: int32;
// Quaternion of camera orientation (w, x, y, z order, zero-rotation is 1, 0, 0, 0)
@Length(4)
Q: float32[];
// Zero based index of this image (i.e. a new image will have index CAMERA_CAPTURE_STATUS.image count -1)
ImageIndex: int32;
// Boolean indicating success (1) or failure (0) while capturing this image.
CaptureResult: int8;
// URL of image taken. Either local storage or http://foo.jpg if camera provides an HTTP interface.
@Length(205)
FileUrl: string;
}
message struct CameraInformation extends MessageFrame {
// Timestamp (time since system boot).
TimeBootMs: uint32;
// Name of the camera vendor
@Length(32)
VendorName: uint8[];
// Name of the camera model
@Length(32)
ModelName: uint8[];
// Version of the camera firmware, encoded as: (Dev & 0xff) << 24 | (Patch & 0xff) << 16 | (Minor & 0xff)
// << 8 | (Major & 0xff)
FirmwareVersion: uint32;
// Focal length
FocalLength: float32;
// Image sensor size horizontal
SensorSizeH: float32;
// Image sensor size vertical
SensorSizeV: float32;
// Horizontal image resolution
ResolutionH: uint16;
// Vertical image resolution
ResolutionV: uint16;
// Reserved for a lens ID
LensId: uint8;
// Bitmap of camera capability flags.
Flags: CameraCapFlagsBitmask;
// Camera definition version (iteration)
CamDefinitionVersion: uint16;
// Camera definition URI (if any, otherwise only basic functions will be available). HTTP- (http://) and
// MAVLink FTP- (mavlinkftp://) formatted URIs are allowed (and both must be supported by any GCS that implements
// the Camera Protocol). The definition file may be xz compressed, which will be indicated by the file extension
// .xml.xz (a GCS that implements the protocol must support decompressing the file).
@Length(140)
CamDefinitionUri: string;
}
message struct CameraSettings extends MessageFrame {
// Timestamp (time since system boot).
TimeBootMs: uint32;
// Camera mode
ModeId: CameraMode;
CameraSettings_extensions: Optional<CameraSettings_extension>;
}
struct CameraSettings_extension {
// Current zoom level (0.0 to 100.0, NaN if not known)
Zoomlevel: float32;
// Current focus level (0.0 to 100.0, NaN if not known)
Focuslevel: float32;
}
message struct CameraTrigger extends MessageFrame {
// Timestamp for image frame (UNIX Epoch time or time since system boot). The receiving end can infer timestamp
// format (since 1.1.1970 or since system boot) by checking for the magnitude of the number.
TimeUsec: uint64;
// Image frame sequence
Seq: uint32;
}
message struct CellularConfig extends MessageFrame {
// Enable/disable LTE. 0: setting unchanged, 1: disabled, 2: enabled. Current setting when sent back as a
// response.
EnableLte: uint8;
// Enable/disable PIN on the SIM card. 0: setting unchanged, 1: disabled, 2: enabled. Current setting when
// sent back as a response.
EnablePin: uint8;
// PIN sent to the SIM card. Blank when PIN is disabled. Empty when message is sent back as a response.
@Length(16)
Pin: string;
// New PIN when changing the PIN. Blank to leave it unchanged. Empty when message is sent back as a response.
@Length(16)
NewPin: string;
// Name of the cellular APN. Blank to leave it unchanged. Current APN when sent back as a response.
@Length(32)
Apn: string;
// Required PUK code in case the user failed to authenticate 3 times with the PIN. Empty when message is
// sent back as a response.
@Length(16)
Puk: string;
// Enable/disable roaming. 0: setting unchanged, 1: disabled, 2: enabled. Current setting when sent back
// as a response.
Roaming: uint8;
// Message acceptance response (sent back to GS).
Response: CellularConfigResponse;
}
message struct CellularStatus extends MessageFrame {
// Cellular modem status
Status: CellularStatusFlag;
// Failure reason when status in in CELLUAR_STATUS_FAILED
FailureReason: CellularNetworkFailedReason;
// Cellular network radio type: gsm, cdma, lte...
Type: CellularNetworkRadioType;
// Signal quality in percent. If unknown, set to UINT8_MAX
Quality: uint8;
// Mobile country code. If unknown, set to UINT16_MAX
Mcc: uint16;
// Mobile network code. If unknown, set to UINT16_MAX
Mnc: uint16;
// Location area code. If unknown, set to 0
Lac: uint16;
}
message struct ChangeOperatorControl extends MessageFrame {
// System the GCS requests control for
TargetSystem: uint8;
// 0: request control of this MAV, 1: Release control of this MAV
ControlRequest: uint8;
// 0: key as plaintext, 1-255: future, different hashing/encryption variants. The GCS should in general use
// the safest mode possible initially and then gradually move down the encryption level if it gets a NACK
// message indicating an encryption mismatch.
Version: uint8;
// Password / Key, depending on version plaintext or encrypted. 25 or less characters, NULL terminated. The
// characters may involve A-Z, a-z, 0-9, and "!?,.-"
@Length(25)
Passkey: string;
}
message struct ChangeOperatorControlAck extends MessageFrame {
// ID of the GCS this message
GcsSystemId: uint8;
// 0: request control of this MAV, 1: Release control of this MAV
ControlRequest: uint8;
// 0: ACK, 1: NACK: Wrong passkey, 2: NACK: Unsupported passkey encryption method, 3: NACK: Already under
// control
Ack: uint8;
}
message struct Collision extends MessageFrame {
// Collision data source
Src: MavCollisionSrc;
// Unique identifier, domain based on src field
Id: uint32;
// Action that is being taken to avoid this collision
Action: MavCollisionAction;
// How concerned the aircraft is about this collision
ThreatLevel: MavCollisionThreatLevel;
// Estimated time until collision occurs
TimeToMinimumDelta: float32;
// Closest vertical distance between vehicle and object
AltitudeMinimumDelta: float32;
// Closest horizontal distance between vehicle and object
HorizontalMinimumDelta: float32;
}
message struct CommandAck extends MessageFrame {
// Command ID (of acknowledged command).
Command: MavCmd_ID;
// Result of command.
Result: MavResult;
CommandAck_extensions: Optional<CommandAck_extension>;
}
struct CommandAck_extension {
// Also used as result_param1, it can be set with an enum containing the errors reasons of why the command
// was denied, or the progress percentage when result is MAV_RESULT_IN_PROGRESS (UINT8_MAX if the progress
// is unknown).
Progress: uint8;
// Additional parameter of the result, example: which parameter of MAV_CMD_NAV_WAYPOINT caused it to be denied.
ResultParam2: int32;
// System ID of the target recipient. This is the ID of the system that sent the command for which this COMMAND_ACK
// is an acknowledgement.
TargetSystem: uint8;
// Component ID of the target recipient. This is the ID of the system that sent the command for which this
// COMMAND_ACK is an acknowledgement.
TargetComponent: uint8;
}
message struct CommandInt extends MessageFrame {
// System ID
TargetSystem: uint8;
// Component ID
TargetComponent: uint8;
// The coordinate system of the COMMAND.
Frame: MavFrame;
// The scheduled action for the mission item.
Command: MavCmd;
// Not used.
Current: uint8;
// Not used (set 0).
Autocontinue: uint8;
}
message struct CommandLong extends MessageFrame {
// System which should execute the command
TargetSystem: uint8;
// Component which should execute the command, 0 for all components
TargetComponent: uint8;
// Command ID (of command to send).
Command: MavCmd;
// 0: First transmission of this command. 1-255: Confirmation transmissions (e.g. for kill command)
Confirmation: uint8;
}
message struct ControlSystemState extends MessageFrame {
// Timestamp (UNIX Epoch time or time since system boot). The receiving end can infer timestamp format (since
// 1.1.1970 or since system boot) by checking for the magnitude of the number.
TimeUsec: uint64;
// X acceleration in body frame
XAcc: float32;
// Y acceleration in body frame
YAcc: float32;
// Z acceleration in body frame
ZAcc: float32;
// X velocity in body frame
XVel: float32;
// Y velocity in body frame
YVel: float32;
// Z velocity in body frame
ZVel: float32;
// X position in local frame
XPos: float32;
// Y position in local frame
YPos: float32;
// Z position in local frame
ZPos: float32;
// Airspeed, set to -1 if unknown
Airspeed: float32;
// Variance of body velocity estimate
@Length(3)
VelVariance: float32[];
// Variance in local position
@Length(3)
PosVariance: float32[];
// The attitude, represented as Quaternion
@Length(4)
Q: float32[];
// Angular rate in roll axis
RollRate: float32;
// Angular rate in pitch axis
PitchRate: float32;
// Angular rate in yaw axis
YawRate: float32;
}
message struct DataStream extends MessageFrame {
// The ID of the requested data stream
StreamId: uint8;
// The message rate
MessageRate: uint16;
// 1 stream is enabled, 0 stream is stopped.
OnOff: uint8;
}
message struct DataTransmissionHandshake extends MessageFrame {
// Type of requested/acknowledged data.
Type: MavlinkDataStreamType;
// total data size (set on ACK only).
Size: uint32;
// Width of a matrix or image.
Width: uint16;
// Height of a matrix or image.
Height: uint16;
// Number of packets being sent (set on ACK only).
Packets: uint16;
// Payload size per packet (normally 253 byte, see DATA field size in message ENCAPSULATED_DATA) (set on
// ACK only).
Payload: uint8;
// JPEG quality. Values: [1-100].
JpgQuality: uint8;
}
message struct Debug extends MessageFrame {
// Timestamp (time since system boot).
TimeBootMs: uint32;
// index of debug variable
Ind: uint8;
// DEBUG value
Value: float32;
}
message struct DebugFloatArray extends MessageFrame {
// Timestamp (UNIX Epoch time or time since system boot). The receiving end can infer timestamp format (since
// 1.1.1970 or since system boot) by checking for the magnitude of the number.
TimeUsec: uint64;
// Name, for human-friendly display in a Ground Control Station
@Length(10)
Name: string;
// Unique ID used to discriminate between arrays
ArrayId: uint16;
DebugFloatArray_extensions: Optional<DebugFloatArray_extension>;
}
struct DebugFloatArray_extension {
// data
@Length(58)
Data: float32[];
}
message struct DebugVect extends MessageFrame {
// Name
@Length(10)
Name: string;
// Timestamp (UNIX Epoch time or time since system boot). The receiving end can infer timestamp format (since
// 1.1.1970 or since system boot) by checking for the magnitude of the number.
TimeUsec: uint64;
// x
X: float32;
// y
Y: float32;
// z
Z: float32;
}
message struct DistanceSensor extends MessageFrame {
// Timestamp (time since system boot).
TimeBootMs: uint32;
// Minimum distance the sensor can measure
MinDistance: uint16;
// Maximum distance the sensor can measure
MaxDistance: uint16;
// Current distance reading
CurrentDistance: uint16;
// Type of distance sensor.
Type: MavDistanceSensor;
// Onboard ID of the sensor
Id: uint8;
// Direction the sensor faces. downward-facing: ROTATION_PITCH_270, upward-facing: ROTATION_PITCH_90, backward-facing:
// ROTATION_PITCH_180, forward-facing: ROTATION_NONE, left-facing: ROTATION_YAW_90, right-facing: ROTATION_YAW_270
Orientation: MavSensorOrientation;
// Measurement variance. Max standard deviation is 6cm. UINT8_MAX if unknown.
Covariance: uint8;
DistanceSensor_extensions: Optional<DistanceSensor_extension>;
}
struct DistanceSensor_extension {
// Horizontal Field of View (angle) where the distance measurement is valid and the field of view is known.
// Otherwise this is set to 0.
HorizontalFov: float32;
// Vertical Field of View (angle) where the distance measurement is valid and the field of view is known.
// Otherwise this is set to 0.
VerticalFov: float32;
// Quaternion of the sensor orientation in vehicle body frame (w, x, y, z order, zero-rotation is 1, 0, 0,
// 0). Zero-rotation is along the vehicle body x-axis. This field is required if the orientation is set to
// MAV_SENSOR_ROTATION_CUSTOM. Set it to 0 if invalid."
@Length(4)
Quaternion: float32[];
// Signal quality of the sensor. Specific to each sensor type, representing the relation of the signal strength
// with the target reflectivity, distance, size or aspect, but normalised as a percentage. 0 = unknown/unset
// signal quality, 1 = invalid signal, 100 = perfect signal.
SignalQuality: uint8;
}
message struct EfiStatus extends MessageFrame {
// EFI health status
Health: uint8;
// ECU index
EcuIndex: float32;
// RPM
Rpm: float32;
// Fuel consumed
FuelConsumed: float32;
// Fuel flow rate
FuelFlow: float32;
// Engine load
EngineLoad: float32;
// Throttle position
ThrottlePosition: float32;
// Spark dwell time
SparkDwellTime: float32;
// Barometric pressure
BarometricPressure: float32;
// Intake manifold pressure(
IntakeManifoldPressure: float32;
// Intake manifold temperature
IntakeManifoldTemperature: float32;
// Cylinder head temperature
CylinderHeadTemperature: float32;
// Ignition timing (Crank angle degrees)
IgnitionTiming: float32;
// Injection time
InjectionTime: float32;
// Exhaust gas temperature
ExhaustGasTemperature: float32;
// Output throttle
ThrottleOut: float32;
// Pressure/temperature compensation
PtCompensation: float32;
}
message struct EncapsulatedData extends MessageFrame {
// sequence number (starting with 0 on every transmission)
Seqnr: uint16;
// image data bytes
@Length(253)
Data: uint8[];
}
message struct EstimatorStatus extends MessageFrame {
// Timestamp (UNIX Epoch time or time since system boot). The receiving end can infer timestamp format (since
// 1.1.1970 or since system boot) by checking for the magnitude of the number.
TimeUsec: uint64;
// Bitmap indicating which EKF outputs are valid.
Flags: EstimatorStatusFlagsBitmask;
// Velocity innovation test ratio
VelRatio: float32;
// Horizontal position innovation test ratio
PosHorizRatio: float32;
// Vertical position innovation test ratio
PosVertRatio: float32;
// Magnetometer innovation test ratio
MagRatio: float32;
// Height above terrain innovation test ratio
HaglRatio: float32;
// True airspeed innovation test ratio
TasRatio: float32;
// Horizontal position 1-STD accuracy relative to the EKF local origin
PosHorizAccuracy: float32;
// Vertical position 1-STD accuracy relative to the EKF local origin
PosVertAccuracy: float32;
}
message struct ExtendedSysState extends MessageFrame {
// The VTOL state if applicable. Is set to MAV_VTOL_STATE_UNDEFINED if UAV is not in VTOL configuration.
VtolState: MavVtolState;
// The landed state. Is set to MAV_LANDED_STATE_UNDEFINED if landed state is unknown.
LandedState: MavLandedState;
}
message struct FenceStatus extends MessageFrame {
// Breach status (0 if currently inside fence, 1 if outside).
BreachStatus: uint8;
// Number of fence breaches.
BreachCount: uint16;
// Last breach type.
BreachType: FenceBreach;
// Time (since boot) of last breach.
BreachTime: uint32;
FenceStatus_extensions: Optional<FenceStatus_extension>;
}
struct FenceStatus_extension {
// Active action to prevent fence breach
BreachMitigation: FenceMitigate;
}
message struct FileTransferProtocol extends MessageFrame {
// Network ID (0 for broadcast)
TargetNetwork: uint8;
// System ID (0 for broadcast)
TargetSystem: uint8;
// Component ID (0 for broadcast)
TargetComponent: uint8;
// Variable length payload. The length is defined by the remaining message length when subtracting the header
// and other fields. The entire content of this block is opaque unless you understand any the encoding message_type.
// The particular encoding used can be extension specific and might not always be documented as part of the
// mavlink specification.
@Length(251)
Payload: uint8[];
}
message struct FlightInformation extends MessageFrame {
// Timestamp (time since system boot).
TimeBootMs: uint32;
// Timestamp at arming (time since UNIX epoch) in UTC, 0 for unknown
ArmingTimeUtc: uint64;
// Timestamp at takeoff (time since UNIX epoch) in UTC, 0 for unknown
TakeoffTimeUtc: uint64;
// Universally unique identifier (UUID) of flight, should correspond to name of log files
FlightUuid: uint64;
}
message struct FollowTarget extends MessageFrame {
// Timestamp (time since system boot).
Timestamp: uint64;
// bit positions for tracker reporting capabilities (POS = 0, VEL = 1, ACCEL = 2, ATT + RATES = 3)
EstCapabilities: uint8;
// Latitude (WGS84)
Lat: int32;
// Longitude (WGS84)
Lon: int32;
// Altitude (MSL)
Alt: float32;
// target velocity (0,0,0) for unknown
@Length(3)
Vel: float32[];
// linear target acceleration (0,0,0) for unknown
@Length(3)
Acc: float32[];
// (0 0 0 0 for unknown)
@Length(4)
AttitudeQ: float32[];
// (0 0 0 for unknown)
@Length(3)
Rates: float32[];
// eph epv
@Length(3)
PositionCov: float32[];
// button states or switches of a tracker device
CustomState: uint64;
}
message struct GeneratorStatus extends MessageFrame {
// Status flags.
Status: MavGeneratorStatusFlagBitmask;
// Speed of electrical generator or alternator. UINT16_MAX: field not provided.
GeneratorSpeed: uint16;
// Current into/out of battery. Positive for out. Negative for in. NaN: field not provided.
BatteryCurrent: float32;
// Current going to the UAV. If battery current not available this is the DC current from the generator.
// Positive for out. Negative for in. NaN: field not provided
LoadCurrent: float32;
// The power being generated. NaN: field not provided
PowerGenerated: float32;
// Voltage of the bus seen at the generator, or battery bus if battery bus is controlled by generator and
// at a different voltage to main bus.
BusVoltage: float32;
// The temperature of the rectifier or power converter. INT16_MAX: field not provided.
RectifierTemperature: int16;
// The target battery current. Positive for out. Negative for in. NaN: field not provided
BatCurrentSetpoint: float32;
// The temperature of the mechanical motor, fuel cell core or generator. INT16_MAX: field not provided.
GeneratorTemperature: int16;
// Seconds this generator has run since it was rebooted. UINT32_MAX: field not provided.
Runtime: uint32;
// Seconds until this generator requires maintenance. A negative value indicates maintenance is past-due.
// INT32_MAX: field not provided.
TimeUntilMaintenance: int32;
}
message struct GlobalPositionInt extends MessageFrame {
// Timestamp (time since system boot).
TimeBootMs: uint32;
// Latitude, expressed
Lat: int32;
// Longitude, expressed
Lon: int32;
// Altitude (MSL). Note that virtually all GPS modules provide both WGS84 and MSL.
Alt: int32;
// Altitude above ground
RelativeAlt: int32;
// Ground X Speed (Latitude, positive north)
Vx: int16;
// Ground Y Speed (Longitude, positive east)
Vy: int16;
// Ground Z Speed (Altitude, positive down)
Vz: int16;
// Vehicle heading (yaw angle), 0.0..359.99 degrees. If unknown, set to: UINT16_MAX
Hdg: uint16;
}
message struct GlobalPositionIntCov extends MessageFrame {
// Timestamp (UNIX Epoch time or time since system boot). The receiving end can infer timestamp format (since
// 1.1.1970 or since system boot) by checking for the magnitude of the number.
TimeUsec: uint64;
// Class id of the estimator this estimate originated from.
EstimatorType: MavEstimatorType;
// Latitude
Lat: int32;
// Longitude
Lon: int32;
// Altitude in meters above MSL
Alt: int32;
// Altitude above ground
RelativeAlt: int32;
// Ground X Speed (Latitude)
Vx: float32;
// Ground Y Speed (Longitude)
Vy: float32;
// Ground Z Speed (Altitude)
Vz: float32;
// Row-major representation of a 6x6 position and velocity 6x6 cross-covariance matrix (states: lat, lon,
// alt, vx, vy, vz; first six entries are the first ROW, next six entries are the second row, etc.). If unknown,
// assign NaN value to first element in the array.
@Length(36)
Covariance: float32[];
}
message struct GlobalVisionPositionEstimate extends MessageFrame {
// Timestamp (UNIX time or since system boot)
Usec: uint64;
// Global X position
X: float32;
// Global Y position
Y: float32;
// Global Z position
Z: float32;
// Roll angle
Roll: float32;
// Pitch angle
Pitch: float32;
// Yaw angle
Yaw: float32;
GlobalVisionPositionEstimate_extensions: Optional<GlobalVisionPositionEstimate_extension>;
}
struct GlobalVisionPositionEstimate_extension {
// Row-major representation of pose 6x6 cross-covariance matrix upper right triangle (states: x_global, y_global,
// z_global, roll, pitch, yaw; first six entries are the first ROW, next five entries are the second ROW,
// etc.). If unknown, assign NaN value to first element in the array.
@Length(21)
Covariance: float32[];
// Estimate reset counter. This should be incremented when the estimate resets in any of the dimensions (position,
// velocity, attitude, angular speed). This is designed to be used when e.g an external SLAM system detects
// a loop-closure and the estimate jumps.
ResetCounter: uint8;
}
message struct Gps2Raw extends MessageFrame {
// Timestamp (UNIX Epoch time or time since system boot). The receiving end can infer timestamp format (since
// 1.1.1970 or since system boot) by checking for the magnitude of the number.
TimeUsec: uint64;
// GPS fix type.
FixType: GpsFixType;
// Latitude (WGS84)
Lat: int32;
// Longitude (WGS84)
Lon: int32;
// Altitude (MSL). Positive for up.
Alt: int32;
// GPS HDOP horizontal dilution of position (unitless * 100). If unknown, set to: UINT16_MAX
Eph: uint16;
// GPS VDOP vertical dilution of position (unitless * 100). If unknown, set to: UINT16_MAX
Epv: uint16;
// GPS ground speed. If unknown, set to: UINT16_MAX
Vel: uint16;
// Course over ground (NOT heading, but direction of movement): 0.0..359.99 degrees. If unknown, set to:
// UINT16_MAX
Cog: uint16;
// Number of satellites visible. If unknown, set to UINT8_MAX
SatellitesVisible: uint8;
// Number of DGPS satellites
DgpsNumch: uint8;
// Age of DGPS info
DgpsAge: uint32;
Gps2Raw_extensions: Optional<Gps2Raw_extension>;
}
struct Gps2Raw_extension {
// Yaw in earth frame from north. Use 0 if this GPS does not provide yaw. Use UINT16_MAX if this GPS is configured
// to provide yaw and is currently unable to provide it. Use 36000 for north.
Yaw: uint16;
// Altitude (above WGS84, EGM96 ellipsoid). Positive for up.
AltEllipsoid: int32;
// Position uncertainty.
HAcc: uint32;
// Altitude uncertainty.
VAcc: uint32;
// Speed uncertainty.
VelAcc: uint32;
// Heading / track uncertainty
HdgAcc: uint32;
}
message struct Gps2Rtk extends MessageFrame {
// Time since boot of last baseline message received.
TimeLastBaselineMs: uint32;
// Identification of connected RTK receiver.
RtkReceiverId: uint8;
// GPS Week Number of last baseline
Wn: uint16;
// GPS Time of Week of last baseline
Tow: uint32;
// GPS-specific health report for RTK data.
RtkHealth: uint8;
// Rate of baseline messages being received by GPS
RtkRate: uint8;
// Current number of sats used for RTK calculation.
Nsats: uint8;
// Coordinate system of baseline
BaselineCoordsType: RtkBaselineCoordinateSystem;
// Current baseline in ECEF x or NED north component.
BaselineAMm: int32;
// Current baseline in ECEF y or NED east component.
BaselineBMm: int32;
// Current baseline in ECEF z or NED down component.
BaselineCMm: int32;
// Current estimate of baseline accuracy.
Accuracy: uint32;
// Current number of integer ambiguity hypotheses.
IarNumHypotheses: int32;
}
message struct GpsGlobalOrigin extends MessageFrame {
// Latitude (WGS84)
Latitude: int32;
// Longitude (WGS84)
Longitude: int32;
// Altitude (MSL). Positive for up.
Altitude: int32;
GpsGlobalOrigin_extensions: Optional<GpsGlobalOrigin_extension>;
}
struct GpsGlobalOrigin_extension {
// Timestamp (UNIX Epoch time or time since system boot). The receiving end can infer timestamp format (since
// 1.1.1970 or since system boot) by checking for the magnitude of the number.
TimeUsec: uint64;
}
message struct GpsInjectData extends MessageFrame {
// System ID
TargetSystem: uint8;
// Component ID
TargetComponent: uint8;
// Data length
Len: uint8;
// Raw data (110 is enough for 12 satellites of RTCMv2)
@Length(110)
Data: uint8[];
}
message struct GpsInput extends MessageFrame {
// Timestamp (UNIX Epoch time or time since system boot). The receiving end can infer timestamp format (since
// 1.1.1970 or since system boot) by checking for the magnitude of the number.
TimeUsec: uint64;
// ID of the GPS for multiple GPS inputs
GpsId: uint8;
// Bitmap indicating which GPS input flags fields to ignore. All other fields must be provided.
IgnoreFlags: GpsInputIgnoreFlagsBitmask;
// GPS time (from start of GPS week)
TimeWeekMs: uint32;
// GPS week number
TimeWeek: uint16;
// 0-1: no fix, 2: 2D fix, 3: 3D fix. 4: 3D with DGPS. 5: 3D with RTK
FixType: uint8;
// Latitude (WGS84)
Lat: int32;
// Longitude (WGS84)
Lon: int32;
// Altitude (MSL). Positive for up.
Alt: float32;
// GPS HDOP horizontal dilution of position (unitless). If unknown, set to: UINT16_MAX
Hdop: float32;
// GPS VDOP vertical dilution of position (unitless). If unknown, set to: UINT16_MAX
Vdop: float32;
// GPS velocity in north direction in earth-fixed NED frame
Vn: float32;
// GPS velocity in east direction in earth-fixed NED frame
Ve: float32;
// GPS velocity in down direction in earth-fixed NED frame
Vd: float32;
// GPS speed accuracy
SpeedAccuracy: float32;
// GPS horizontal accuracy
HorizAccuracy: float32;
// GPS vertical accuracy
VertAccuracy: float32;
// Number of satellites visible.
SatellitesVisible: uint8;
GpsInput_extensions: Optional<GpsInput_extension>;
}
struct GpsInput_extension {
// Yaw of vehicle relative to Earth's North, zero means not available, use 36000 for north
Yaw: uint16;
}
message struct GpsRawInt extends MessageFrame {
// Timestamp (UNIX Epoch time or time since system boot). The receiving end can infer timestamp format (since
// 1.1.1970 or since system boot) by checking for the magnitude of the number.
TimeUsec: uint64;
// GPS fix type.
FixType: GpsFixType;
// Latitude (WGS84, EGM96 ellipsoid)
Lat: int32;
// Longitude (WGS84, EGM96 ellipsoid)
Lon: int32;
// Altitude (MSL). Positive for up. Note that virtually all GPS modules provide the MSL altitude in addition
// to the WGS84 altitude.
Alt: int32;
// GPS HDOP horizontal dilution of position (unitless * 100). If unknown, set to: UINT16_MAX
Eph: uint16;
// GPS VDOP vertical dilution of position (unitless * 100). If unknown, set to: UINT16_MAX
Epv: uint16;
// GPS ground speed. If unknown, set to: UINT16_MAX
Vel: uint16;
// Course over ground (NOT heading, but direction of movement) in degrees * 100, 0.0..359.99 degrees. If
// unknown, set to: UINT16_MAX
Cog: uint16;
// Number of satellites visible. If unknown, set to UINT8_MAX
SatellitesVisible: uint8;
GpsRawInt_extensions: Optional<GpsRawInt_extension>;
}
struct GpsRawInt_extension {
// Altitude (above WGS84, EGM96 ellipsoid). Positive for up.
AltEllipsoid: int32;
// Position uncertainty.
HAcc: uint32;
// Altitude uncertainty.
VAcc: uint32;
// Speed uncertainty.
VelAcc: uint32;
// Heading / track uncertainty
HdgAcc: uint32;
// Yaw in earth frame from north. Use 0 if this GPS does not provide yaw. Use UINT16_MAX if this GPS is configured
// to provide yaw and is currently unable to provide it. Use 36000 for north.
Yaw: uint16;
}
message struct GpsRtcmData extends MessageFrame {
// LSB: 1 means message is fragmented, next 2 bits are the fragment ID, the remaining 5 bits are used for
// the sequence ID. Messages are only to be flushed to the GPS when the entire message has been reconstructed
// on the autopilot. The fragment ID specifies which order the fragments should be assembled into a buffer,
// while the sequence ID is used to detect a mismatch between different buffers. The buffer is considered
// fully reconstructed when either all 4 fragments are present, or all the fragments before the first fragment
// with a non full payload is received. This management is used to ensure that normal GPS operation doesn't
// corrupt RTCM data, and to recover from a unreliable transport delivery order.
Flags: uint8;
// data length
Len: uint8;
// RTCM message (may be fragmented)
@Length(180)
Data: uint8[];
}
message struct GpsRtk extends MessageFrame {
// Time since boot of last baseline message received.
TimeLastBaselineMs: uint32;
// Identification of connected RTK receiver.
RtkReceiverId: uint8;
// GPS Week Number of last baseline
Wn: uint16;
// GPS Time of Week of last baseline
Tow: uint32;
// GPS-specific health report for RTK data.
RtkHealth: uint8;
// Rate of baseline messages being received by GPS
RtkRate: uint8;
// Current number of sats used for RTK calculation.
Nsats: uint8;
// Coordinate system of baseline
BaselineCoordsType: RtkBaselineCoordinateSystem;
// Current baseline in ECEF x or NED north component.
BaselineAMm: int32;
// Current baseline in ECEF y or NED east component.
BaselineBMm: int32;
// Current baseline in ECEF z or NED down component.
BaselineCMm: int32;
// Current estimate of baseline accuracy.
Accuracy: uint32;
// Current number of integer ambiguity hypotheses.
IarNumHypotheses: int32;
}
message struct GpsStatus extends MessageFrame {
// Number of satellites visible
SatellitesVisible: uint8;
// Global satellite ID
@Length(20)
SatellitePrn: uint8[];
// 0: Satellite not used, 1: used for localization
@Length(20)
SatelliteUsed: uint8[];
// Elevation (0: right on top of receiver, 90: on the horizon) of satellite
@Length(20)
SatelliteElevation: uint8[];
// Direction of satellite, 0: 0 deg, 255: 360 deg.
@Length(20)
SatelliteAzimuth: uint8[];
// Signal to noise ratio of satellite
@Length(20)
SatelliteSnr: uint8[];
}
message struct HighresImu extends MessageFrame {
// Timestamp (UNIX Epoch time or time since system boot). The receiving end can infer timestamp format (since
// 1.1.1970 or since system boot) by checking for the magnitude of the number.
TimeUsec: uint64;
// X acceleration
Xacc: float32;
// Y acceleration
Yacc: float32;
// Z acceleration
Zacc: float32;
// Angular speed around X axis
Xgyro: float32;
// Angular speed around Y axis
Ygyro: float32;
// Angular speed around Z axis
Zgyro: float32;
// X Magnetic field
Xmag: float32;
// Y Magnetic field
Ymag: float32;
// Z Magnetic field
Zmag: float32;
// Absolute pressure
AbsPressure: float32;
// Differential pressure
DiffPressure: float32;
// Altitude calculated from pressure
PressureAlt: float32;
// Temperature
Temperature: float32;
// Bitmap for fields that have updated since last message
FieldsUpdated: HighresImuUpdatedFlagsBitmask;
HighresImu_extensions: Optional<HighresImu_extension>;
}
struct HighresImu_extension {
// Id. Ids are numbered from 0 and map to IMUs numbered from 1 (e.g. IMU1 will have a message with id=0)
Id: uint8;
}
message struct HighLatency extends MessageFrame {
// Bitmap of enabled system modes.
BaseMode: MavModeFlagBitmask;
// A bitfield for use for autopilot-specific flags.
CustomMode: uint32;
// The landed state. Is set to MAV_LANDED_STATE_UNDEFINED if landed state is unknown.
LandedState: MavLandedState;
// roll
Roll: int16;
// pitch
Pitch: int16;
// heading
Heading: uint16;
// throttle (percentage)
Throttle: int8;
// heading setpoint
HeadingSp: int16;
// Latitude
Latitude: int32;
// Longitude
Longitude: int32;
// Altitude above mean sea level
AltitudeAmsl: int16;
// Altitude setpoint relative to the home position
AltitudeSp: int16;
// airspeed
Airspeed: uint8;
// airspeed setpoint
AirspeedSp: uint8;
// groundspeed
Groundspeed: uint8;
// climb rate
ClimbRate: int8;
// Number of satellites visible. If unknown, set to UINT8_MAX
GpsNsat: uint8;
// GPS Fix type.
GpsFixType: GpsFixType;
// Remaining battery (percentage)
BatteryRemaining: uint8;
// Autopilot temperature (degrees C)
Temperature: int8;
// Air temperature (degrees C) from airspeed sensor
TemperatureAir: int8;
// failsafe (each bit represents a failsafe where 0=ok, 1=failsafe active (bit0:RC, bit1:batt, bit2:GPS,
// bit3:GCS, bit4:fence)
Failsafe: uint8;
// current waypoint number
WpNum: uint8;
// distance to target
WpDistance: uint16;
}
message struct HighLatency2 extends MessageFrame {
// Timestamp (milliseconds since boot or Unix epoch)
Timestamp: uint32;
// Type of the MAV (quadrotor, helicopter, etc.)
Type: MavType;
// Autopilot type / class. Use MAV_AUTOPILOT_INVALID for components that are not flight controllers.
Autopilot: MavAutopilot;
// A bitfield for use for autopilot-specific flags (2 byte version).
CustomMode: uint16;
// Latitude
Latitude: int32;
// Longitude
Longitude: int32;
// Altitude above mean sea level
Altitude: int16;
// Altitude setpoint
TargetAltitude: int16;
// Heading
Heading: uint8;
// Heading setpoint
TargetHeading: uint8;
// Distance to target waypoint or position
TargetDistance: uint16;
// Throttle
Throttle: uint8;
// Airspeed
Airspeed: uint8;
// Airspeed setpoint
AirspeedSp: uint8;
// Groundspeed
Groundspeed: uint8;
// Windspeed
Windspeed: uint8;
// Wind heading
WindHeading: uint8;
// Maximum error horizontal position since last message
Eph: uint8;
// Maximum error vertical position since last message
Epv: uint8;
// Air temperature from airspeed sensor
TemperatureAir: int8;
// Maximum climb rate magnitude since last message
ClimbRate: int8;
// Battery level (-1 if field not provided).
Battery: int8;
// Current waypoint number
WpNum: uint16;
// Bitmap of failure flags.
FailureFlags: HlFailureFlagBitmask;
// Field for custom payload.
Custom0: int8;
// Field for custom payload.
Custom1: int8;
// Field for custom payload.
Custom2: int8;
}
message struct HilActuatorControls extends MessageFrame {
// Timestamp (UNIX Epoch time or time since system boot). The receiving end can infer timestamp format (since
// 1.1.1970 or since system boot) by checking for the magnitude of the number.
TimeUsec: uint64;
// Control outputs -1 .. 1. Channel assignment depends on the simulated hardware.
@Length(16)
Controls: float32[];
// System mode. Includes arming state.
Mode: MavModeFlagBitmask;
// Flags as bitfield, 1: indicate simulation using lockstep.
Flags: uint64;
}
message struct HilControls extends MessageFrame {
// Timestamp (UNIX Epoch time or time since system boot). The receiving end can infer timestamp format (since
// 1.1.1970 or since system boot) by checking for the magnitude of the number.
TimeUsec: uint64;
// Control output -1 .. 1
RollAilerons: float32;
// Control output -1 .. 1
PitchElevator: float32;
// Control output -1 .. 1
YawRudder: float32;
// Throttle 0 .. 1
Throttle: float32;
// Aux 1, -1 .. 1
Aux1: float32;
// Aux 2, -1 .. 1
Aux2: float32;
// Aux 3, -1 .. 1
Aux3: float32;
// Aux 4, -1 .. 1
Aux4: float32;
// System mode.
Mode: MavMode;
// Navigation mode (MAV_NAV_MODE)
NavMode: uint8;
}
message struct HilGps extends MessageFrame {
// Timestamp (UNIX Epoch time or time since system boot). The receiving end can infer timestamp format (since
// 1.1.1970 or since system boot) by checking for the magnitude of the number.
TimeUsec: uint64;
// 0-1: no fix, 2: 2D fix, 3: 3D fix. Some applications will not use the value of this field unless it is
// at least two, so always correctly fill in the fix.
FixType: uint8;
// Latitude (WGS84)
Lat: int32;
// Longitude (WGS84)
Lon: int32;
// Altitude (MSL). Positive for up.
Alt: int32;
// GPS HDOP horizontal dilution of position (unitless * 100). If unknown, set to: UINT16_MAX
Eph: uint16;
// GPS VDOP vertical dilution of position (unitless * 100). If unknown, set to: UINT16_MAX
Epv: uint16;
// GPS ground speed. If unknown, set to: UINT16_MAX
Vel: uint16;
// GPS velocity in north direction in earth-fixed NED frame
Vn: int16;
// GPS velocity in east direction in earth-fixed NED frame
Ve: int16;
// GPS velocity in down direction in earth-fixed NED frame
Vd: int16;
// Course over ground (NOT heading, but direction of movement), 0.0..359.99 degrees. If unknown, set to:
// UINT16_MAX
Cog: uint16;
// Number of satellites visible. If unknown, set to UINT8_MAX
SatellitesVisible: uint8;
HilGps_extensions: Optional<HilGps_extension>;
}
struct HilGps_extension {
// GPS ID (zero indexed). Used for multiple GPS inputs
Id: uint8;
// Yaw of vehicle relative to Earth's North, zero means not available, use 36000 for north
Yaw: uint16;
}
message struct HilOpticalFlow extends MessageFrame {
// Timestamp (UNIX Epoch time or time since system boot). The receiving end can infer timestamp format (since
// 1.1.1970 or since system boot) by checking for the magnitude of the number.
TimeUsec: uint64;
// Sensor ID
SensorId: uint8;
// Integration time. Divide integrated_x and integrated_y by the integration time to obtain average flow.
// The integration time also indicates the.
IntegrationTimeUs: uint32;
// Flow in radians around X axis (Sensor RH rotation about the X axis induces a positive flow. Sensor linear
// motion along the positive Y axis induces a negative flow.)
IntegratedX: float32;
// Flow in radians around Y axis (Sensor RH rotation about the Y axis induces a positive flow. Sensor linear
// motion along the positive X axis induces a positive flow.)
IntegratedY: float32;
// RH rotation around X axis
IntegratedXgyro: float32;
// RH rotation around Y axis
IntegratedYgyro: float32;
// RH rotation around Z axis
IntegratedZgyro: float32;
// Temperature
Temperature: int16;
// Optical flow quality / confidence. 0: no valid flow, 255: maximum quality
Quality: uint8;
// Time since the distance was sampled.
TimeDeltaDistanceUs: uint32;
// Distance to the center of the flow field. Positive value (including zero): distance known. Negative value:
// Unknown distance.
Distance: float32;
}
message struct HilRcInputsRaw extends MessageFrame {
// Timestamp (UNIX Epoch time or time since system boot). The receiving end can infer timestamp format (since
// 1.1.1970 or since system boot) by checking for the magnitude of the number.
TimeUsec: uint64;
// RC channel 1 value
Chan1Raw: uint16;
// RC channel 2 value
Chan2Raw: uint16;
// RC channel 3 value
Chan3Raw: uint16;
// RC channel 4 value
Chan4Raw: uint16;
// RC channel 5 value
Chan5Raw: uint16;
// RC channel 6 value
Chan6Raw: uint16;
// RC channel 7 value
Chan7Raw: uint16;
// RC channel 8 value
Chan8Raw: uint16;
// RC channel 9 value
Chan9Raw: uint16;
// RC channel 10 value
Chan10Raw: uint16;
// RC channel 11 value
Chan11Raw: uint16;
// RC channel 12 value
Chan12Raw: uint16;
// Receive signal strength indicator in device-dependent units/scale. Values: [0-254], UINT8_MAX: invalid/unknown.
Rssi: uint8;
}
message struct HilSensor extends MessageFrame {
// Timestamp (UNIX Epoch time or time since system boot). The receiving end can infer timestamp format (since
// 1.1.1970 or since system boot) by checking for the magnitude of the number.
TimeUsec: uint64;
// X acceleration
Xacc: float32;
// Y acceleration
Yacc: float32;
// Z acceleration
Zacc: float32;
// Angular speed around X axis in body frame
Xgyro: float32;
// Angular speed around Y axis in body frame
Ygyro: float32;
// Angular speed around Z axis in body frame
Zgyro: float32;
// X Magnetic field
Xmag: float32;
// Y Magnetic field
Ymag: float32;
// Z Magnetic field
Zmag: float32;
// Absolute pressure
AbsPressure: float32;
// Differential pressure (airspeed)
DiffPressure: float32;
// Altitude calculated from pressure
PressureAlt: float32;
// Temperature
Temperature: float32;
// Bitmap for fields that have updated since last message
FieldsUpdated: HilSensorUpdatedFlagsBitmask;
HilSensor_extensions: Optional<HilSensor_extension>;
}
struct HilSensor_extension {
// Sensor ID (zero indexed). Used for multiple sensor inputs
Id: uint8;
}
message struct HilState extends MessageFrame {
// Timestamp (UNIX Epoch time or time since system boot). The receiving end can infer timestamp format (since
// 1.1.1970 or since system boot) by checking for the magnitude of the number.
TimeUsec: uint64;
// Roll angle
Roll: float32;
// Pitch angle
Pitch: float32;
// Yaw angle
Yaw: float32;
// Body frame roll / phi angular speed
Rollspeed: float32;
// Body frame pitch / theta angular speed
Pitchspeed: float32;
// Body frame yaw / psi angular speed
Yawspeed: float32;
// Latitude
Lat: int32;
// Longitude
Lon: int32;
// Altitude
Alt: int32;
// Ground X Speed (Latitude)
Vx: int16;
// Ground Y Speed (Longitude)
Vy: int16;
// Ground Z Speed (Altitude)
Vz: int16;
// X acceleration
Xacc: int16;
// Y acceleration
Yacc: int16;
// Z acceleration
Zacc: int16;
}
message struct HilStateQuaternion extends MessageFrame {
// Timestamp (UNIX Epoch time or time since system boot). The receiving end can infer timestamp format (since
// 1.1.1970 or since system boot) by checking for the magnitude of the number.
TimeUsec: uint64;
// Vehicle attitude expressed as normalized quaternion in w, x, y, z order (with 1 0 0 0 being the null-rotation)
@Length(4)
AttitudeQuaternion: float32[];
// Body frame roll / phi angular speed
Rollspeed: float32;
// Body frame pitch / theta angular speed
Pitchspeed: float32;
// Body frame yaw / psi angular speed
Yawspeed: float32;
// Latitude
Lat: int32;
// Longitude
Lon: int32;
// Altitude
Alt: int32;
// Ground X Speed (Latitude)
Vx: int16;
// Ground Y Speed (Longitude)
Vy: int16;
// Ground Z Speed (Altitude)
Vz: int16;
// Indicated airspeed
IndAirspeed: uint16;
// True airspeed
TrueAirspeed: uint16;
// X acceleration
Xacc: int16;
// Y acceleration
Yacc: int16;
// Z acceleration
Zacc: int16;
}
message struct HomePosition extends MessageFrame {
// Latitude (WGS84)
Latitude: int32;
// Longitude (WGS84)
Longitude: int32;
// Altitude (MSL). Positive for up.
Altitude: int32;
// Local X position of this position in the local coordinate frame
X: float32;
// Local Y position of this position in the local coordinate frame
Y: float32;
// Local Z position of this position in the local coordinate frame
Z: float32;
// World to surface normal and heading transformation of the takeoff position. Used to indicate the heading
// and slope of the ground
@Length(4)
Q: float32[];
// Local X position of the end of the approach vector. Multicopters should set this position based on their
// takeoff path. Grass-landing fixed wing aircraft should set it the same way as multicopters. Runway-landing
// fixed wing aircraft should set it to the opposite direction of the takeoff, assuming the takeoff happened
// from the threshold / touchdown zone.
ApproachX: float32;
// Local Y position of the end of the approach vector. Multicopters should set this position based on their
// takeoff path. Grass-landing fixed wing aircraft should set it the same way as multicopters. Runway-landing
// fixed wing aircraft should set it to the opposite direction of the takeoff, assuming the takeoff happened
// from the threshold / touchdown zone.
ApproachY: float32;
// Local Z position of the end of the approach vector. Multicopters should set this position based on their
// takeoff path. Grass-landing fixed wing aircraft should set it the same way as multicopters. Runway-landing
// fixed wing aircraft should set it to the opposite direction of the takeoff, assuming the takeoff happened
// from the threshold / touchdown zone.
ApproachZ: float32;
HomePosition_extensions: Optional<HomePosition_extension>;
}
struct HomePosition_extension {
// Timestamp (UNIX Epoch time or time since system boot). The receiving end can infer timestamp format (since
// 1.1.1970 or since system boot) by checking for the magnitude of the number.
TimeUsec: uint64;
}
message struct HygrometerSensor extends MessageFrame {
// Hygrometer ID
Id: uint8;
// Temperature
Temperature: int16;
// Humidity
Humidity: uint16;
}
message struct IsbdLinkStatus extends MessageFrame {
// Timestamp (UNIX Epoch time or time since system boot). The receiving end can infer timestamp format (since
// 1.1.1970 or since system boot) by checking for the magnitude of the number.
Timestamp: uint64;
// Timestamp of the last successful sbd session. The receiving end can infer timestamp format (since 1.1.1970
// or since system boot) by checking for the magnitude of the number.
LastHeartbeat: uint64;
// Number of failed SBD sessions.
FailedSessions: uint16;
// Number of successful SBD sessions.
SuccessfulSessions: uint16;
// Signal quality equal to the number of bars displayed on the ISU signal strength indicator. Range is 0
// to 5, where 0 indicates no signal and 5 indicates maximum signal strength.
SignalQuality: uint8;
// 1: Ring call pending, 0: No call pending.
RingPending: uint8;
// 1: Transmission session pending, 0: No transmission session pending.
TxSessionPending: uint8;
// 1: Receiving session pending, 0: No receiving session pending.
RxSessionPending: uint8;
}
message struct LandingTarget extends MessageFrame {
// Timestamp (UNIX Epoch time or time since system boot). The receiving end can infer timestamp format (since
// 1.1.1970 or since system boot) by checking for the magnitude of the number.
TimeUsec: uint64;
// The ID of the target if multiple targets are present
TargetNum: uint8;
// Coordinate frame used for following fields.
Frame: MavFrame;
// X-axis angular offset of the target from the center of the image
AngleX: float32;
// Y-axis angular offset of the target from the center of the image
AngleY: float32;
// Distance to the target from the vehicle
Distance: float32;
// Size of target along x-axis
SizeX: float32;
// Size of target along y-axis
SizeY: float32;
LandingTarget_extensions: Optional<LandingTarget_extension>;
}
struct LandingTarget_extension {
// X Position of the landing target in MAV_FRAME
X: float32;
// Y Position of the landing target in MAV_FRAME
Y: float32;
// Z Position of the landing target in MAV_FRAME
Z: float32;
// Quaternion of landing target orientation (w, x, y, z order, zero-rotation is 1, 0, 0, 0)
@Length(4)
Q: float32[];
// Type of landing target
Type: LandingTargetType;
// Boolean indicating whether the position fields (x, y, z, q, type) contain valid target position information
// (valid: 1, invalid: 0). Default is 0 (invalid).
PositionValid: uint8;
}
message struct LocalPositionNed extends MessageFrame {
// Timestamp (time since system boot).
TimeBootMs: uint32;
// X Position
X: float32;
// Y Position
Y: float32;
// Z Position
Z: float32;
// X Speed
Vx: float32;
// Y Speed
Vy: float32;
// Z Speed
Vz: float32;
}
message struct LocalPositionNedCov extends MessageFrame {
// Timestamp (UNIX Epoch time or time since system boot). The receiving end can infer timestamp format (since
// 1.1.1970 or since system boot) by checking for the magnitude of the number.
TimeUsec: uint64;
// Class id of the estimator this estimate originated from.
EstimatorType: MavEstimatorType;
// X Position
X: float32;
// Y Position
Y: float32;
// Z Position
Z: float32;
// X Speed
Vx: float32;
// Y Speed
Vy: float32;
// Z Speed
Vz: float32;
// X Acceleration
Ax: float32;
// Y Acceleration
Ay: float32;
// Z Acceleration
Az: float32;
// Row-major representation of position, velocity and acceleration 9x9 cross-covariance matrix upper right
// triangle (states: x, y, z, vx, vy, vz, ax, ay, az; first nine entries are the first ROW, next eight entries
// are the second row, etc.). If unknown, assign NaN value to first element in the array.
@Length(45)
Covariance: float32[];
}
message struct LocalPositionNedSystemGlobalOffset extends MessageFrame {
// Timestamp (time since system boot).
TimeBootMs: uint32;
// X Position
X: float32;
// Y Position
Y: float32;
// Z Position
Z: float32;
// Roll
Roll: float32;
// Pitch
Pitch: float32;
// Yaw
Yaw: float32;
}
message struct LoggingAck extends MessageFrame {
// system ID of the target
TargetSystem: uint8;
// component ID of the target
TargetComponent: uint8;
// sequence number (must match the one in LOGGING_DATA_ACKED)
Sequence: uint16;
}
message struct LoggingData extends MessageFrame {
// system ID of the target
TargetSystem: uint8;
// component ID of the target
TargetComponent: uint8;
// sequence number (can wrap)
Sequence: uint16;
// data length
Length: uint8;
// offset into data where first message starts. This can be used for recovery, when a previous message got
// lost (set to UINT8_MAX if no start exists).
FirstMessageOffset: uint8;
// logged data
@Length(249)
Data: uint8[];
}
message struct LoggingDataAcked extends MessageFrame {
// system ID of the target
TargetSystem: uint8;
// component ID of the target
TargetComponent: uint8;
// sequence number (can wrap)
Sequence: uint16;
// data length
Length: uint8;
// offset into data where first message starts. This can be used for recovery, when a previous message got
// lost (set to UINT8_MAX if no start exists).
FirstMessageOffset: uint8;
// logged data
@Length(249)
Data: uint8[];
}
message struct LogData extends MessageFrame {
// Log id (from LOG_ENTRY reply)
Id: uint16;
// Offset into the log
Ofs: uint32;
// Number of bytes (zero for end of log)
Count: uint8;
// log data
@Length(90)
Data: uint8[];
}
message struct LogEntry extends MessageFrame {
// Log id
Id: uint16;
// Total number of logs
NumLogs: uint16;
// High log number
LastLogNum: uint16;
// UTC timestamp of log since 1970, or 0 if not available
TimeUtc: uint32;
// Size of the log (may be approximate)
Size: uint32;
}
message struct LogErase extends MessageFrame {
// System ID
TargetSystem: uint8;
// Component ID
TargetComponent: uint8;
}
message struct LogRequestData extends MessageFrame {
// System ID
TargetSystem: uint8;
// Component ID
TargetComponent: uint8;
// Log id (from LOG_ENTRY reply)
Id: uint16;
// Offset into the log
Ofs: uint32;
// Number of bytes
Count: uint32;
}
message struct LogRequestEnd extends MessageFrame {
// System ID
TargetSystem: uint8;
// Component ID
TargetComponent: uint8;
}
message struct LogRequestList extends MessageFrame {
// System ID
TargetSystem: uint8;
// Component ID
TargetComponent: uint8;
// First log id (0 for first available)
Start: uint16;
// Last log id (0xffff for last available)
End: uint16;
}
message struct MagCalReport extends MessageFrame {
// Compass being calibrated.
CompassId: uint8;
// Bitmask of compasses being calibrated.
CalMask: uint8;
// Calibration Status.
CalStatus: MagCalStatus;
// 0=requires a MAV_CMD_DO_ACCEPT_MAG_CAL, 1=saved to parameters.
Autosaved: uint8;
// RMS milligauss residuals.
Fitness: float32;
// X offset.
OfsX: float32;
// Y offset.
OfsY: float32;
// Z offset.
OfsZ: float32;
// X diagonal (matrix 11).
DiagX: float32;
// Y diagonal (matrix 22).
DiagY: float32;
// Z diagonal (matrix 33).
DiagZ: float32;
// X off-diagonal (matrix 12 and 21).
OffdiagX: float32;
// Y off-diagonal (matrix 13 and 31).
OffdiagY: float32;
// Z off-diagonal (matrix 32 and 23).
OffdiagZ: float32;
MagCalReport_extensions: Optional<MagCalReport_extension>;
}
struct MagCalReport_extension {
// Confidence in orientation (higher is better).
OrientationConfidence: float32;
// orientation before calibration.
OldOrientation: MavSensorOrientation;
// orientation after calibration.
NewOrientation: MavSensorOrientation;
// field radius correction factor
ScaleFactor: float32;
}
message struct ManualControl extends MessageFrame {
// The system to be controlled.
Target: uint8;
// X-axis, normalized to the range [-1000,1000]. A value of INT16_MAX indicates that this axis is invalid.
// Generally corresponds to forward(1000)-backward(-1000) movement on a joystick and the pitch of a vehicle.
X: int16;
// Y-axis, normalized to the range [-1000,1000]. A value of INT16_MAX indicates that this axis is invalid.
// Generally corresponds to left(-1000)-right(1000) movement on a joystick and the roll of a vehicle.
Y: int16;
// Z-axis, normalized to the range [-1000,1000]. A value of INT16_MAX indicates that this axis is invalid.
// Generally corresponds to a separate slider movement with maximum being 1000 and minimum being -1000 on
// a joystick and the thrust of a vehicle. Positive values are positive thrust, negative values are negative
// thrust.
Z: int16;
// R-axis, normalized to the range [-1000,1000]. A value of INT16_MAX indicates that this axis is invalid.
// Generally corresponds to a twisting of the joystick, with counter-clockwise being 1000 and clockwise being
// -1000, and the yaw of a vehicle.
R: int16;
// A bitfield corresponding to the joystick buttons' 0-15 current state, 1 for pressed, 0 for released. The
// lowest bit corresponds to Button 1.
Buttons: uint16;
ManualControl_extensions: Optional<ManualControl_extension>;
}
struct ManualControl_extension {
// A bitfield corresponding to the joystick buttons' 16-31 current state, 1 for pressed, 0 for released.
// The lowest bit corresponds to Button 16.
Buttons2: uint16;
// Set bits to 1 to indicate which of the following extension fields contain valid data: bit 0: pitch, bit
// 1: roll.
EnabledExtensions: uint8;
// Pitch-only-axis, normalized to the range [-1000,1000]. Generally corresponds to pitch on vehicles with
// additional degrees of freedom. Valid if bit 0 of enabled_extensions field is set. Set to 0 if invalid.
S: int16;
// Roll-only-axis, normalized to the range [-1000,1000]. Generally corresponds to roll on vehicles with additional
// degrees of freedom. Valid if bit 1 of enabled_extensions field is set. Set to 0 if invalid.
T: int16;
}
message struct ManualSetpoint extends MessageFrame {
// Timestamp (time since system boot).
TimeBootMs: uint32;
// Desired roll rate
Roll: float32;
// Desired pitch rate
Pitch: float32;
// Desired yaw rate
Yaw: float32;
// Collective thrust, normalized to 0 .. 1
Thrust: float32;
// Flight mode switch position, 0.. 255
ModeSwitch: uint8;
// Override mode switch position, 0.. 255
ManualOverrideSwitch: uint8;
}
struct MavCmdActuatorTest {
// Output value: 1 means maximum positive output, 0 to center servos or minimum motor thrust (expected to
// spin), -1 for maximum negative (if not supported by the motors, i.e. motor is not reversible, smaller
// than 0 maps to NaN). And NaN maps to disarmed (stop the motors).
Value: float32;
// Timeout after which the test command expires and the output is restored to the previous value. A timeout
// has to be set for safety reasons. A timeout of 0 means to restore the previous value immediately.
Timeout: float32;
Param3: float32;
Param4: float32;
// Actuator Output function
OutputFunction: ActuatorOutputFunction;
Param6: float32;
Param7: float32;
}
struct MavCmdAirframeConfiguration {
// Landing gear ID (default: 0, -1 for all)
LandingGearId: float32;
// Landing gear position (Down: 0, Up: 1, NaN for no change)
LandingGearPosition: float32;
Param3: float32;
Param4: float32;
Param5: float32;
Param6: float32;
Param7: float32;
}
struct MavCmdArmAuthorizationRequest {
// Vehicle system id, this way ground station can request arm authorization on behalf of any vehicle
SystemId: float32;
}
abstract extensible struct MavCmdCameraStopTracking {
}
struct MavCmdCameraTrackPoint {
// Point to track x value (normalized 0..1, 0 is left, 1 is right).
PointX: float32;
// Point to track y value (normalized 0..1, 0 is top, 1 is bottom).
PointY: float32;
// Point radius (normalized 0..1, 0 is image left, 1 is image right).
Radius: float32;
}
struct MavCmdCameraTrackRectangle {
// Top left corner of rectangle x value (normalized 0..1, 0 is left, 1 is right).
TopLeftCornerX: float32;
// Top left corner of rectangle y value (normalized 0..1, 0 is top, 1 is bottom).
TopLeftCornerY: float32;
// Bottom right corner of rectangle x value (normalized 0..1, 0 is left, 1 is right).
BottomRightCornerX: float32;
// Bottom right corner of rectangle y value (normalized 0..1, 0 is top, 1 is bottom).
BottomRightCornerY: float32;
}
struct MavCmdComponentArmDisarm {
// 0: disarm, 1: arm
Arm: float32;
// 0: arm-disarm unless prevented by safety checks (i.e. when landed), 21196: force arming/disarming (e.g.
// allow arming to override preflight checks and disarming in flight)
Force: float32;
}
struct MavCmdConditionChangeAlt {
// Descent / Ascend rate.
Rate: float32;
// Empty
Param2: float32;
// Empty
Param3: float32;
// Empty
Param4: float32;
// Empty
Param5: float32;
// Empty
Param6: float32;
// Target Altitude
Altitude: float32;
}
struct MavCmdConditionDelay {
// Delay
Delay: float32;
// Empty
Param2: float32;
// Empty
Param3: float32;
// Empty
Param4: float32;
// Empty
Param5: float32;
// Empty
Param6: float32;
// Empty
Param7: float32;
}
struct MavCmdConditionDistance {
// Distance.
Distance: float32;
// Empty
Param2: float32;
// Empty
Param3: float32;
// Empty
Param4: float32;
// Empty
Param5: float32;
// Empty
Param6: float32;
// Empty
Param7: float32;
}
struct MavCmdConditionGate {
// Geometry: 0: orthogonal to path between previous and next waypoint.
Geometry: float32;
// Altitude: 0: ignore altitude
Usealtitude: float32;
// Empty
Param3: float32;
// Empty
Param4: float32;
// Latitude
Latitude: float32;
// Longitude
Longitude: float32;
// Altitude
Altitude: float32;
}
struct MavCmdConditionLast {
// Empty
Param1: float32;
// Empty
Param2: float32;
// Empty
Param3: float32;
// Empty
Param4: float32;
// Empty
Param5: float32;
// Empty
Param6: float32;
// Empty
Param7: float32;
}
struct MavCmdConditionYaw {
// target angle, 0 is north
Angle: float32;
// angular speed
AngularSpeed: float32;
// direction: -1: counter clockwise, 1: clockwise
Direction: float32;
// 0: absolute angle, 1: relative offset
Relative: float32;
// Empty
Param5: float32;
// Empty
Param6: float32;
// Empty
Param7: float32;
}
struct MavCmdConfigureActuator {
// Actuator configuration action
Configuration: ActuatorConfiguration;
Param2: float32;
Param3: float32;
Param4: float32;
// Actuator Output function
OutputFunction: ActuatorOutputFunction;
Param6: float32;
Param7: float32;
}
struct MavCmdControlHighLatency {
// Control transmission over high latency telemetry (0: stop, 1: start)
Enable: float32;
// Empty
Param2: float32;
// Empty
Param3: float32;
// Empty
Param4: float32;
// Empty
Param5: float32;
// Empty
Param6: float32;
// Empty
Param7: float32;
}
struct MavCmdDoAdsbOutIdent {
// Reserved (set to 0)
Param1: float32;
// Reserved (set to 0)
Param2: float32;
// Reserved (set to 0)
Param3: float32;
// Reserved (set to 0)
Param4: float32;
// Reserved (set to 0)
Param5: float32;
// Reserved (set to 0)
Param6: float32;
// Reserved (set to 0)
Param7: float32;
}
struct MavCmdDoAutotuneEnable {
// Enable (1: enable, 0:disable).
Enable: float32;
// Specify which axis are autotuned. 0 indicates autopilot default settings.
Axis: AutotuneAxisBitmask;
// Empty.
Param3: float32;
// Empty.
Param4: float32;
// Empty.
Param5: float32;
// Empty.
Param6: float32;
// Empty.
Param7: float32;
}
struct MavCmdDoChangeAltitude {
// Altitude.
Altitude: float32;
// Frame of new altitude.
Frame: MavFrame;
// Empty
Param3: float32;
// Empty
Param4: float32;
// Empty
Param5: float32;
// Empty
Param6: float32;
// Empty
Param7: float32;
}
struct MavCmdDoChangeSpeed {
// Speed type (0=Airspeed, 1=Ground Speed, 2=Climb Speed, 3=Descent Speed)
SpeedType: float32;
// Speed (-1 indicates no change)
Speed: float32;
// Throttle (-1 indicates no change)
Throttle: float32;
// 0: absolute, 1: relative
Relative: float32;
// Empty
Param5: float32;
// Empty
Param6: float32;
// Empty
Param7: float32;
}
struct MavCmdDoControlVideo {
// Camera ID (-1 for all)
Id: float32;
// Transmission: 0: disabled, 1: enabled compressed, 2: enabled raw
Transmission: float32;
// Transmission mode: 0: video stream, >0: single images every n seconds
Interval: float32;
// Recording: 0: disabled, 1: enabled compressed, 2: enabled raw
Recording: float32;
// Empty
Param5: float32;
// Empty
Param6: float32;
// Empty
Param7: float32;
}
struct MavCmdDoDigicamConfigure {
// Modes: P, TV, AV, M, Etc.
Mode: float32;
// Shutter speed: Divisor number for one second.
ShutterSpeed: float32;
// Aperture: F stop number.
Aperture: float32;
// ISO number e.g. 80, 100, 200, Etc.
Iso: float32;
// Exposure type enumerator.
Exposure: float32;
// Command Identity.
CommandIdentity: float32;
// Main engine cut-off time before camera trigger. (0 means no cut-off)
EngineCutOff: float32;
}
struct MavCmdDoDigicamControl {
// Session control e.g. show/hide lens
SessionControl: float32;
// Zoom's absolute position
ZoomAbsolute: float32;
// Zooming step value to offset zoom from the current position
ZoomRelative: float32;
// Focus Locking, Unlocking or Re-locking
Focus: float32;
// Shooting Command
ShootCommand: float32;
// Command Identity
CommandIdentity: float32;
// Test shot identifier. If set to 1, image will only be captured, but not counted towards internal frame
// count.
ShotId: float32;
}
struct MavCmdDoEngineControl {
// 0: Stop engine, 1:Start Engine
StartEngine: float32;
// 0: Warm start, 1:Cold start. Controls use of choke where applicable
ColdStart: float32;
// Height delay. This is for commanding engine start only after the vehicle has gained the specified height.
// Used in VTOL vehicles during takeoff to start engine after the aircraft is off the ground. Zero for no
// delay.
HeightDelay: float32;
// Empty
Param4: float32;
// Empty
Param5: float32;
// Empty
Param6: float32;
// Empty
Param7: float32;
}
struct MavCmdDoFenceEnable {
// enable? (0=disable, 1=enable, 2=disable_floor_only)
Enable: float32;
// Empty
Param2: float32;
// Empty
Param3: float32;
// Empty
Param4: float32;
// Empty
Param5: float32;
// Empty
Param6: float32;
// Empty
Param7: float32;
}
struct MavCmdDoFlighttermination {
// Flight termination activated if > 0.5
Terminate: float32;
// Empty
Param2: float32;
// Empty
Param3: float32;
// Empty
Param4: float32;
// Empty
Param5: float32;
// Empty
Param6: float32;
// Empty
Param7: float32;
}
struct MavCmdDoFollow {
// System ID (of the FOLLOW_TARGET beacon). Send 0 to disable follow-me and return to the default position
// hold mode.
SystemId: float32;
// Reserved
Param2: float32;
// Reserved
Param3: float32;
// Altitude mode: 0: Keep current altitude, 1: keep altitude difference to target, 2: go to a fixed altitude
// above home.
AltitudeMode: float32;
// Altitude above home. (used if mode=2)
Altitude: float32;
// Reserved
Param6: float32;
// Time to land in which the MAV should go to the default position hold mode after a message RX timeout.
TimeToLand: float32;
}
struct MavCmdDoFollowReposition {
// Camera q1 (where 0 is on the ray from the camera to the tracking device)
CameraQ1: float32;
// Camera q2
CameraQ2: float32;
// Camera q3
CameraQ3: float32;
// Camera q4
CameraQ4: float32;
// altitude offset from target
AltitudeOffset: float32;
// X offset from target
XOffset: float32;
// Y offset from target
YOffset: float32;
}
struct MavCmdDoGimbalManagerConfigure {
// Sysid for primary control (0: no one in control, -1: leave unchanged, -2: set itself in control (for missions
// where the own sysid is still unknown), -3: remove control if currently in control).
SysidPrimaryControl: float32;
// Compid for primary control (0: no one in control, -1: leave unchanged, -2: set itself in control (for
// missions where the own sysid is still unknown), -3: remove control if currently in control).
CompidPrimaryControl: float32;
// Sysid for secondary control (0: no one in control, -1: leave unchanged, -2: set itself in control (for
// missions where the own sysid is still unknown), -3: remove control if currently in control).
SysidSecondaryControl: float32;
// Compid for secondary control (0: no one in control, -1: leave unchanged, -2: set itself in control (for
// missions where the own sysid is still unknown), -3: remove control if currently in control).
CompidSecondaryControl: float32;
// Component ID of gimbal device to address (or 1-6 for non-MAVLink gimbal), 0 for all gimbal device components.
// Send command multiple times for more than one gimbal (but not all gimbals).
GimbalDeviceId: float32;
}
struct MavCmdDoGimbalManagerPitchyaw {
// Pitch angle (positive to pitch up, relative to vehicle for FOLLOW mode, relative to world horizon for
// LOCK mode).
PitchAngle: float32;
// Yaw angle (positive to yaw to the right, relative to vehicle for FOLLOW mode, absolute to North for LOCK
// mode).
YawAngle: float32;
// Pitch rate (positive to pitch up).
PitchRate: float32;
// Yaw rate (positive to yaw to the right).
YawRate: float32;
// Gimbal manager flags to use.
GimbalManagerFlags: GimbalManagerFlagsBitmask;
// Component ID of gimbal device to address (or 1-6 for non-MAVLink gimbal), 0 for all gimbal device components.
// Send command multiple times for more than one gimbal (but not all gimbals).
GimbalDeviceId: float32;
}
struct MavCmdDoGoAround {
// Altitude
Altitude: float32;
// Empty
Param2: float32;
// Empty
Param3: float32;
// Empty
Param4: float32;
// Empty
Param5: float32;
// Empty
Param6: float32;
// Empty
Param7: float32;
}
struct MavCmdDoGripper {
// Gripper instance number.
Instance: float32;
// Gripper action to perform.
Action: GripperActions;
// Empty
Param3: float32;
// Empty
Param4: float32;
// Empty
Param5: float32;
// Empty
Param6: float32;
// Empty
Param7: float32;
}
struct MavCmdDoGuidedLimits {
// Timeout - maximum time that external controller will be allowed to control vehicle. 0 means no timeout.
Timeout: float32;
// Altitude (MSL) min - if vehicle moves below this alt, the command will be aborted and the mission will
// continue. 0 means no lower altitude limit.
MinAltitude: float32;
// Altitude (MSL) max - if vehicle moves above this alt, the command will be aborted and the mission will
// continue. 0 means no upper altitude limit.
MaxAltitude: float32;
// Horizontal move limit - if vehicle moves more than this distance from its location at the moment the command
// was executed, the command will be aborted and the mission will continue. 0 means no horizontal move limit.
HorizMoveLimit: float32;
// Empty
Param5: float32;
// Empty
Param6: float32;
// Empty
Param7: float32;
}
struct MavCmdDoGuidedMaster {
// System ID
SystemId: float32;
// Component ID
ComponentId: float32;
// Empty
Param3: float32;
// Empty
Param4: float32;
// Empty
Param5: float32;
// Empty
Param6: float32;
// Empty
Param7: float32;
}
struct MavCmdDoInvertedFlight {
// Inverted flight. (0=normal, 1=inverted)
Inverted: float32;
// Empty
Param2: float32;
// Empty
Param3: float32;
// Empty
Param4: float32;
// Empty
Param5: float32;
// Empty
Param6: float32;
// Empty
Param7: float32;
}
struct MavCmdDoJump {
// Sequence number
Number: float32;
// Repeat count
Repeat: float32;
// Empty
Param3: float32;
// Empty
Param4: float32;
// Empty
Param5: float32;
// Empty
Param6: float32;
// Empty
Param7: float32;
}
struct MavCmdDoJumpTag {
// Target tag to jump to.
Tag: float32;
// Repeat count.
Repeat: float32;
}
struct MavCmdDoLandStart {
// Empty
Param1: float32;
// Empty
Param2: float32;
// Empty
Param3: float32;
// Empty
Param4: float32;
// Latitude
Latitude: float32;
// Longitude
Longitude: float32;
// Empty
Param7: float32;
}
struct MavCmdDoLast {
// Empty
Param1: float32;
// Empty
Param2: float32;
// Empty
Param3: float32;
// Empty
Param4: float32;
// Empty
Param5: float32;
// Empty
Param6: float32;
// Empty
Param7: float32;
}
struct MavCmdDoMotorTest {
// Motor instance number (from 1 to max number of motors on the vehicle).
Instance: float32;
// Throttle type (whether the Throttle Value in param3 is a percentage, PWM value, etc.)
ThrottleType: MotorTestThrottleType;
// Throttle value.
Throttle: float32;
// Timeout between tests that are run in sequence.
Timeout: float32;
// Motor count. Number of motors to test in sequence: 0/1=one motor, 2= two motors, etc. The Timeout (param4)
// is used between tests.
MotorCount: float32;
// Motor test order.
TestOrder: MotorTestOrder;
// Empty
Param7: float32;
}
struct MavCmdDoMountConfigure {
// Mount operation mode
Mode: MavMountMode;
// stabilize roll? (1 = yes, 0 = no)
StabilizeRoll: float32;
// stabilize pitch? (1 = yes, 0 = no)
StabilizePitch: float32;
// stabilize yaw? (1 = yes, 0 = no)
StabilizeYaw: float32;
// roll input (0 = angle body frame, 1 = angular rate, 2 = angle absolute frame)
RollInputMode: float32;
// pitch input (0 = angle body frame, 1 = angular rate, 2 = angle absolute frame)
PitchInputMode: float32;
// yaw input (0 = angle body frame, 1 = angular rate, 2 = angle absolute frame)
YawInputMode: float32;
}
struct MavCmdDoMountControl {
// pitch depending on mount mode (degrees or degrees/second depending on pitch input).
Pitch: float32;
// roll depending on mount mode (degrees or degrees/second depending on roll input).
Roll: float32;
// yaw depending on mount mode (degrees or degrees/second depending on yaw input).
Yaw: float32;
// altitude depending on mount mode.
Altitude: float32;
// latitude, set if appropriate mount mode.
Latitude: float32;
// longitude, set if appropriate mount mode.
Longitude: float32;
// Mount mode.
Mode: MavMountMode;
}
struct MavCmdDoMountControlQuat {
// quaternion param q1, w (1 in null-rotation)
Q1: float32;
// quaternion param q2, x (0 in null-rotation)
Q2: float32;
// quaternion param q3, y (0 in null-rotation)
Q3: float32;
// quaternion param q4, z (0 in null-rotation)
Q4: float32;
// Empty
Param5: float32;
// Empty
Param6: float32;
// Empty
Param7: float32;
}
struct MavCmdDoOrbit {
// Radius of the circle. Positive: orbit clockwise. Negative: orbit counter-clockwise. NaN: Use vehicle default
// radius, or current radius if already orbiting.
Radius: float32;
// Tangential Velocity. NaN: Use vehicle default velocity, or current velocity if already orbiting.
Velocity: float32;
// Yaw behavior of the vehicle.
YawBehavior: OrbitYawBehaviour;
// Orbit around the centre point for this many radians (i.e. for a three-quarter orbit set 270*Pi/180). 0:
// Orbit forever. NaN: Use vehicle default, or current value if already orbiting.
Orbits: float32;
// Center point latitude (if no MAV_FRAME specified) / X coordinate according to MAV_FRAME. INT32_MAX (or
// NaN if sent in COMMAND_LONG): Use current vehicle position, or current center if already orbiting.
Latitude_X: float32;
// Center point longitude (if no MAV_FRAME specified) / Y coordinate according to MAV_FRAME. INT32_MAX (or
// NaN if sent in COMMAND_LONG): Use current vehicle position, or current center if already orbiting.
Longitude_Y: float32;
// Center point altitude (MSL) (if no MAV_FRAME specified) / Z coordinate according to MAV_FRAME. NaN: Use
// current vehicle altitude.
Altitude_Z: float32;
}
struct MavCmdDoParachute {
// Action
Action: ParachuteAction;
// Empty
Param2: float32;
// Empty
Param3: float32;
// Empty
Param4: float32;
// Empty
Param5: float32;
// Empty
Param6: float32;
// Empty
Param7: float32;
}
struct MavCmdDoPauseContinue {
// 0: Pause current mission or reposition command, hold current position. 1: Continue mission. A VTOL capable
// vehicle should enter hover mode (multicopter and VTOL planes). A plane should loiter with the default
// loiter radius.
Continue: float32;
// Reserved
Param2: float32;
// Reserved
Param3: float32;
// Reserved
Param4: float32;
// Reserved
Param5: float32;
// Reserved
Param6: float32;
// Reserved
Param7: float32;
}
struct MavCmdDoRallyLand {
// Break altitude
Altitude: float32;
// Landing speed
Speed: float32;
// Empty
Param3: float32;
// Empty
Param4: float32;
// Empty
Param5: float32;
// Empty
Param6: float32;
// Empty
Param7: float32;
}
struct MavCmdDoRepeatRelay {
// Relay instance number.
Instance: float32;
// Cycle count.
Count: float32;
// Cycle time.
Time: float32;
// Empty
Param4: float32;
// Empty
Param5: float32;
// Empty
Param6: float32;
// Empty
Param7: float32;
}
struct MavCmdDoRepeatServo {
// Servo instance number.
Instance: float32;
// Pulse Width Modulation.
Pwm: float32;
// Cycle count.
Count: float32;
// Cycle time.
Time: float32;
// Empty
Param5: float32;
// Empty
Param6: float32;
// Empty
Param7: float32;
}
struct MavCmdDoReposition {
// Ground speed, less than 0 (-1) for default
Speed: float32;
// Bitmask of option flags.
Bitmask: MavDoRepositionFlagsBitmask;
// Reserved
Param3: float32;
// Yaw heading. NaN to use the current system yaw heading mode (e.g. yaw towards next waypoint, yaw to home,
// etc.). For planes indicates loiter direction (0: clockwise, 1: counter clockwise)
Yaw: float32;
// Latitude
Latitude: float32;
// Longitude
Longitude: float32;
// Altitude
Altitude: float32;
}
struct MavCmdDoSetActuator {
// Actuator 1 value, scaled from [-1 to 1]. NaN to ignore.
Actuator1: float32;
// Actuator 2 value, scaled from [-1 to 1]. NaN to ignore.
Actuator2: float32;
// Actuator 3 value, scaled from [-1 to 1]. NaN to ignore.
Actuator3: float32;
// Actuator 4 value, scaled from [-1 to 1]. NaN to ignore.
Actuator4: float32;
// Actuator 5 value, scaled from [-1 to 1]. NaN to ignore.
Actuator5: float32;
// Actuator 6 value, scaled from [-1 to 1]. NaN to ignore.
Actuator6: float32;
// Index of actuator set (i.e if set to 1, Actuator 1 becomes Actuator 7)
Index: float32;
}
struct MavCmdDoSetCamTriggDist {
// Camera trigger distance. 0 to stop triggering.
Distance: float32;
// Camera shutter integration time. -1 or 0 to ignore
Shutter: float32;
// Trigger camera once immediately. (0 = no trigger, 1 = trigger)
Trigger: float32;
// Empty
Param4: float32;
// Empty
Param5: float32;
// Empty
Param6: float32;
// Empty
Param7: float32;
}
struct MavCmdDoSetCamTriggInterval {
// Camera trigger cycle time. -1 or 0 to ignore.
TriggerCycle: float32;
// Camera shutter integration time. Should be less than trigger cycle time. -1 or 0 to ignore.
ShutterIntegration: float32;
// Empty
Param3: float32;
// Empty
Param4: float32;
// Empty
Param5: float32;
// Empty
Param6: float32;
// Empty
Param7: float32;
}
struct MavCmdDoSetHome {
// Use current (1=use current location, 0=use specified location)
UseCurrent: float32;
// Empty
Param2: float32;
// Empty
Param3: float32;
// Yaw angle. NaN to use default heading
Yaw: float32;
// Latitude
Latitude: float32;
// Longitude
Longitude: float32;
// Altitude
Altitude: float32;
}
struct MavCmdDoSetMissionCurrent {
// Mission sequence value to set
Number: float32;
// Empty
Param2: float32;
// Empty
Param3: float32;
// Empty
Param4: float32;
// Empty
Param5: float32;
// Empty
Param6: float32;
// Empty
Param7: float32;
}
struct MavCmdDoSetMode {
// Mode
Mode: MavMode;
// Custom mode - this is system specific, please refer to the individual autopilot specifications for details.
CustomMode: float32;
// Custom sub mode - this is system specific, please refer to the individual autopilot specifications for
// details.
CustomSubmode: float32;
// Empty
Param4: float32;
// Empty
Param5: float32;
// Empty
Param6: float32;
// Empty
Param7: float32;
}
struct MavCmdDoSetParameter {
// Parameter number
Number: float32;
// Parameter value
Value: float32;
// Empty
Param3: float32;
// Empty
Param4: float32;
// Empty
Param5: float32;
// Empty
Param6: float32;
// Empty
Param7: float32;
}
struct MavCmdDoSetRelay {
// Relay instance number.
Instance: float32;
// Setting. (1=on, 0=off, others possible depending on system hardware)
Setting: float32;
// Empty
Param3: float32;
// Empty
Param4: float32;
// Empty
Param5: float32;
// Empty
Param6: float32;
// Empty
Param7: float32;
}
struct MavCmdDoSetReverse {
// Direction (0=Forward, 1=Reverse)
Reverse: float32;
// Empty
Param2: float32;
// Empty
Param3: float32;
// Empty
Param4: float32;
// Empty
Param5: float32;
// Empty
Param6: float32;
// Empty
Param7: float32;
}
struct MavCmdDoSetRoi {
// Region of interest mode.
RoiMode: MavRoi;
// Waypoint index/ target ID (depends on param 1).
WpIndex: float32;
// Region of interest index. (allows a vehicle to manage multiple ROI's)
RoiIndex: float32;
// Empty
Param4: float32;
// MAV_ROI_WPNEXT: pitch offset from next waypoint, MAV_ROI_LOCATION: latitude
Param5: float32;
// MAV_ROI_WPNEXT: roll offset from next waypoint, MAV_ROI_LOCATION: longitude
Param6: float32;
// MAV_ROI_WPNEXT: yaw offset from next waypoint, MAV_ROI_LOCATION: altitude
Param7: float32;
}
struct MavCmdDoSetRoiLocation {
// Component ID of gimbal device to address (or 1-6 for non-MAVLink gimbal), 0 for all gimbal device components.
// Send command multiple times for more than one gimbal (but not all gimbals).
GimbalDeviceId: float32;
// Empty
Param2: float32;
// Empty
Param3: float32;
// Empty
Param4: float32;
// Latitude of ROI location
Latitude: float32;
// Longitude of ROI location
Longitude: float32;
// Altitude of ROI location
Altitude: float32;
}
struct MavCmdDoSetRoiNone {
// Component ID of gimbal device to address (or 1-6 for non-MAVLink gimbal), 0 for all gimbal device components.
// Send command multiple times for more than one gimbal (but not all gimbals).
GimbalDeviceId: float32;
// Empty
Param2: float32;
// Empty
Param3: float32;
// Empty
Param4: float32;
// Empty
Param5: float32;
// Empty
Param6: float32;
// Empty
Param7: float32;
}
struct MavCmdDoSetRoiSysid {
// System ID
SystemId: float32;
// Component ID of gimbal device to address (or 1-6 for non-MAVLink gimbal), 0 for all gimbal device components.
// Send command multiple times for more than one gimbal (but not all gimbals).
GimbalDeviceId: float32;
}
struct MavCmdDoSetRoiWpnextOffset {
// Component ID of gimbal device to address (or 1-6 for non-MAVLink gimbal), 0 for all gimbal device components.
// Send command multiple times for more than one gimbal (but not all gimbals).
GimbalDeviceId: float32;
// Empty
Param2: float32;
// Empty
Param3: float32;
// Empty
Param4: float32;
// Pitch offset from next waypoint, positive pitching up
PitchOffset: float32;
// Roll offset from next waypoint, positive rolling to the right
RollOffset: float32;
// Yaw offset from next waypoint, positive yawing to the right
YawOffset: float32;
}
struct MavCmdDoSetServo {
// Servo instance number.
Instance: float32;
// Pulse Width Modulation.
Pwm: float32;
// Empty
Param3: float32;
// Empty
Param4: float32;
// Empty
Param5: float32;
// Empty
Param6: float32;
// Empty
Param7: float32;
}
struct MavCmdDoTriggerControl {
// Trigger enable/disable (0 for disable, 1 for start), -1 to ignore
Enable: float32;
// 1 to reset the trigger sequence, -1 or 0 to ignore
Reset: float32;
// 1 to pause triggering, but without switching the camera off or retracting it. -1 to ignore
Pause: float32;
}
struct MavCmdDoVtolTransition {
// The target VTOL state. For normal transitions, only MAV_VTOL_STATE_MC and MAV_VTOL_STATE_FW can be used.
State: MavVtolState;
// Force immediate transition to the specified MAV_VTOL_STATE. 1: Force immediate, 0: normal transition.
// Can be used, for example, to trigger an emergency "Quadchute". Caution: Can be dangerous/damage vehicle,
// depending on autopilot implementation of this command.
Immediate: float32;
}
struct MavCmdDoWinch {
// Winch instance number.
Instance: float32;
// Action to perform.
Action: WinchActions;
// Length of cable to release (negative to wind).
Length: float32;
// Release rate (negative to wind).
Rate: float32;
// Empty.
Param5: float32;
// Empty.
Param6: float32;
// Empty.
Param7: float32;
}
struct MavCmdFixedMagCalYaw {
// Yaw of vehicle in earth frame.
Yaw: float32;
// CompassMask, 0 for all.
Compassmask: float32;
// Latitude.
Latitude: float32;
// Longitude.
Longitude: float32;
// Empty.
Param5: float32;
// Empty.
Param6: float32;
// Empty.
Param7: float32;
}
struct MavCmdGetHomePosition {
// Reserved
Param1: float32;
// Reserved
Param2: float32;
// Reserved
Param3: float32;
// Reserved
Param4: float32;
// Reserved
Param5: float32;
// Reserved
Param6: float32;
// Reserved
Param7: float32;
}
struct MavCmdGetMessageInterval {
// The MAVLink message ID
MessageId: float32;
}
struct MavCmdIlluminatorOnOff {
// 0: Illuminators OFF, 1: Illuminators ON
Enable: float32;
}
struct MavCmdImageStartCapture {
// Reserved (Set to 0)
Param1: float32;
// Desired elapsed time between two consecutive pictures (in seconds). Minimum values depend on hardware
// (typically greater than 2 seconds).
Interval: float32;
// Total number of images to capture. 0 to capture forever/until MAV_CMD_IMAGE_STOP_CAPTURE.
TotalImages: float32;
// Capture sequence number starting from 1. This is only valid for single-capture (param3 == 1), otherwise
// set to 0. Increment the capture ID for each capture command to prevent double captures when a command
// is re-transmitted.
SequenceNumber: float32;
Param5: float32;
Param6: float32;
Param7: float32;
}
struct MavCmdImageStopCapture {
// Reserved (Set to 0)
Param1: float32;
Param2: float32;
Param3: float32;
Param4: float32;
Param7: float32;
}
struct MavCmdInjectFailure {
// The unit which is affected by the failure.
FailureUnit: FailureUnit;
// The type how the failure manifests itself.
FailureType: FailureType;
// Instance affected by failure (0 to signal all).
Instance: float32;
}
struct MavCmdJumpTag {
// Tag.
Tag: float32;
}
struct MavCmdLoggingStart {
// Format: 0: ULog
Format: float32;
// Reserved (set to 0)
Param2: float32;
// Reserved (set to 0)
Param3: float32;
// Reserved (set to 0)
Param4: float32;
// Reserved (set to 0)
Param5: float32;
// Reserved (set to 0)
Param6: float32;
// Reserved (set to 0)
Param7: float32;
}
struct MavCmdLoggingStop {
// Reserved (set to 0)
Param1: float32;
// Reserved (set to 0)
Param2: float32;
// Reserved (set to 0)
Param3: float32;
// Reserved (set to 0)
Param4: float32;
// Reserved (set to 0)
Param5: float32;
// Reserved (set to 0)
Param6: float32;
// Reserved (set to 0)
Param7: float32;
}
struct MavCmdMissionStart {
// first_item: the first mission item to run
FirstItem: float32;
// last_item: the last mission item to run (after this item is run, the mission ends)
LastItem: float32;
}
struct MavCmdNavContinueAndChangeAlt {
// Climb or Descend (0 = Neutral, command completes when within 5m of this command's altitude, 1 = Climbing,
// command completes when at or above this command's altitude, 2 = Descending, command completes when at
// or below this command's altitude.
Action: float32;
// Empty
Param2: float32;
// Empty
Param3: float32;
// Empty
Param4: float32;
// Empty
Param5: float32;
// Empty
Param6: float32;
// Desired altitude
Altitude: float32;
}
struct MavCmdNavDelay {
// Delay (-1 to enable time-of-day fields)
Delay: float32;
// hour (24h format, UTC, -1 to ignore)
Hour: float32;
// minute (24h format, UTC, -1 to ignore)
Minute: float32;
// second (24h format, UTC, -1 to ignore)
Second: float32;
// Empty
Param5: float32;
// Empty
Param6: float32;
// Empty
Param7: float32;
}
struct MavCmdNavFenceCircleExclusion {
// Radius.
Radius: float32;
// Reserved
Param2: float32;
// Reserved
Param3: float32;
// Reserved
Param4: float32;
// Latitude
Latitude: float32;
// Longitude
Longitude: float32;
// Reserved
Param7: float32;
}
struct MavCmdNavFenceCircleInclusion {
// Radius.
Radius: float32;
// Vehicle must be inside ALL inclusion zones in a single group, vehicle must be inside at least one group
InclusionGroup: float32;
// Reserved
Param3: float32;
// Reserved
Param4: float32;
// Latitude
Latitude: float32;
// Longitude
Longitude: float32;
// Reserved
Param7: float32;
}
struct MavCmdNavFencePolygonVertexExclusion {
// Polygon vertex count
VertexCount: float32;
// Reserved
Param2: float32;
// Reserved
Param3: float32;
// Reserved
Param4: float32;
// Latitude
Latitude: float32;
// Longitude
Longitude: float32;
// Reserved
Param7: float32;
}
struct MavCmdNavFencePolygonVertexInclusion {
// Polygon vertex count
VertexCount: float32;
// Vehicle must be inside ALL inclusion zones in a single group, vehicle must be inside at least one group,
// must be the same for all points in each polygon
InclusionGroup: float32;
// Reserved
Param3: float32;
// Reserved
Param4: float32;
// Latitude
Latitude: float32;
// Longitude
Longitude: float32;
// Reserved
Param7: float32;
}
struct MavCmdNavFenceReturnPoint {
// Reserved
Param1: float32;
// Reserved
Param2: float32;
// Reserved
Param3: float32;
// Reserved
Param4: float32;
// Latitude
Latitude: float32;
// Longitude
Longitude: float32;
// Altitude
Altitude: float32;
}
struct MavCmdNavFollow {
// Following logic to use (e.g. loitering or sinusoidal following) - depends on specific autopilot implementation
Following: float32;
// Ground speed of vehicle to be followed
GroundSpeed: float32;
// Radius around waypoint. If positive loiter clockwise, else counter-clockwise
Radius: float32;
// Desired yaw angle.
Yaw: float32;
// Latitude
Latitude: float32;
// Longitude
Longitude: float32;
// Altitude
Altitude: float32;
}
struct MavCmdNavGuidedEnable {
// On / Off (> 0.5f on)
Enable: float32;
// Empty
Param2: float32;
// Empty
Param3: float32;
// Empty
Param4: float32;
// Empty
Param5: float32;
// Empty
Param6: float32;
// Empty
Param7: float32;
}
struct MavCmdNavLand {
// Minimum target altitude if landing is aborted (0 = undefined/use system default).
AbortAlt: float32;
// Precision land mode.
LandMode: PrecisionLandMode;
// Empty.
Param3: float32;
// Desired yaw angle. NaN to use the current system yaw heading mode (e.g. yaw towards next waypoint, yaw
// to home, etc.).
YawAngle: float32;
// Latitude.
Latitude: float32;
// Longitude.
Longitude: float32;
// Landing altitude (ground level in current frame).
Altitude: float32;
}
struct MavCmdNavLandLocal {
// Landing target number (if available)
Target: float32;
// Maximum accepted offset from desired landing position - computed magnitude from spherical coordinates:
// d = sqrt(x^2 + y^2 + z^2), which gives the maximum accepted distance between the desired landing position
// and the position where the vehicle is about to land
Offset: float32;
// Landing descend rate
DescendRate: float32;
// Desired yaw angle
Yaw: float32;
// Y-axis position
YPosition: float32;
// X-axis position
XPosition: float32;
// Z-axis / ground level position
ZPosition: float32;
}
struct MavCmdNavLast {
// Empty
Param1: float32;
// Empty
Param2: float32;
// Empty
Param3: float32;
// Empty
Param4: float32;
// Empty
Param5: float32;
// Empty
Param6: float32;
// Empty
Param7: float32;
}
struct MavCmdNavLoiterTime {
// Loiter time (only starts once Lat, Lon and Alt is reached).
Time: float32;
// Leave loiter circle only once heading towards the next waypoint (0 = False)
HeadingRequired: float32;
// Loiter radius around waypoint for forward-only moving vehicles (not multicopters). If positive loiter
// clockwise, else counter-clockwise.
Radius: float32;
// Loiter circle exit location and/or path to next waypoint ("xtrack") for forward-only moving vehicles (not
// multicopters). 0 for the vehicle to converge towards the center xtrack when it leaves the loiter (the
// line between the centers of the current and next waypoint), 1 to converge to the direct line between the
// location that the vehicle exits the loiter radius and the next waypoint. Otherwise the angle (in degrees)
// between the tangent of the loiter circle and the center xtrack at which the vehicle must leave the loiter
// (and converge to the center xtrack). NaN to use the current system default xtrack behaviour.
XtrackLocation: float32;
// Latitude
Latitude: float32;
// Longitude
Longitude: float32;
// Altitude
Altitude: float32;
}
struct MavCmdNavLoiterToAlt {
// Leave loiter circle only once heading towards the next waypoint (0 = False)
HeadingRequired: float32;
// Loiter radius around waypoint for forward-only moving vehicles (not multicopters). If positive loiter
// clockwise, negative counter-clockwise, 0 means no change to standard loiter.
Radius: float32;
// Empty
Param3: float32;
// Loiter circle exit location and/or path to next waypoint ("xtrack") for forward-only moving vehicles (not
// multicopters). 0 for the vehicle to converge towards the center xtrack when it leaves the loiter (the
// line between the centers of the current and next waypoint), 1 to converge to the direct line between the
// location that the vehicle exits the loiter radius and the next waypoint. Otherwise the angle (in degrees)
// between the tangent of the loiter circle and the center xtrack at which the vehicle must leave the loiter
// (and converge to the center xtrack). NaN to use the current system default xtrack behaviour.
XtrackLocation: float32;
// Latitude
Latitude: float32;
// Longitude
Longitude: float32;
// Altitude
Altitude: float32;
}
struct MavCmdNavLoiterTurns {
// Number of turns.
Turns: float32;
// Leave loiter circle only once heading towards the next waypoint (0 = False)
HeadingRequired: float32;
// Loiter radius around waypoint for forward-only moving vehicles (not multicopters). If positive loiter
// clockwise, else counter-clockwise
Radius: float32;
// Loiter circle exit location and/or path to next waypoint ("xtrack") for forward-only moving vehicles (not
// multicopters). 0 for the vehicle to converge towards the center xtrack when it leaves the loiter (the
// line between the centers of the current and next waypoint), 1 to converge to the direct line between the
// location that the vehicle exits the loiter radius and the next waypoint. Otherwise the angle (in degrees)
// between the tangent of the loiter circle and the center xtrack at which the vehicle must leave the loiter
// (and converge to the center xtrack). NaN to use the current system default xtrack behaviour.
XtrackLocation: float32;
// Latitude
Latitude: float32;
// Longitude
Longitude: float32;
// Altitude
Altitude: float32;
}
struct MavCmdNavLoiterUnlim {
// Empty
Param1: float32;
// Empty
Param2: float32;
// Loiter radius around waypoint for forward-only moving vehicles (not multicopters). If positive loiter
// clockwise, else counter-clockwise
Radius: float32;
// Desired yaw angle. NaN to use the current system yaw heading mode (e.g. yaw towards next waypoint, yaw
// to home, etc.).
Yaw: float32;
// Latitude
Latitude: float32;
// Longitude
Longitude: float32;
// Altitude
Altitude: float32;
}
struct MavCmdNavPathplanning {
// 0: Disable local obstacle avoidance / local path planning (without resetting map), 1: Enable local path
// planning, 2: Enable and reset local path planning
LocalCtrl: float32;
// 0: Disable full path planning (without resetting map), 1: Enable, 2: Enable and reset map/occupancy grid,
// 3: Enable and reset planned route, but not occupancy grid
GlobalCtrl: float32;
// Empty
Param3: float32;
// Yaw angle at goal
Yaw: float32;
// Latitude/X of goal
Latitude_X: float32;
// Longitude/Y of goal
Longitude_Y: float32;
// Altitude/Z of goal
Altitude_Z: float32;
}
struct MavCmdNavPayloadPlace {
// Maximum distance to descend.
MaxDescent: float32;
// Empty
Param2: float32;
// Empty
Param3: float32;
// Empty
Param4: float32;
// Latitude
Latitude: float32;
// Longitude
Longitude: float32;
// Altitude
Altitude: float32;
}
struct MavCmdNavRallyPoint {
// Reserved
Param1: float32;
// Reserved
Param2: float32;
// Reserved
Param3: float32;
// Reserved
Param4: float32;
// Latitude
Latitude: float32;
// Longitude
Longitude: float32;
// Altitude
Altitude: float32;
}
struct MavCmdNavReturnToLaunch {
// Empty
Param1: float32;
// Empty
Param2: float32;
// Empty
Param3: float32;
// Empty
Param4: float32;
// Empty
Param5: float32;
// Empty
Param6: float32;
// Empty
Param7: float32;
}
struct MavCmdNavRoi {
// Region of interest mode.
RoiMode: MavRoi;
// Waypoint index/ target ID. (see MAV_ROI enum)
WpIndex: float32;
// ROI index (allows a vehicle to manage multiple ROI's)
RoiIndex: float32;
// Empty
Param4: float32;
// x the location of the fixed ROI (see MAV_FRAME)
X: float32;
// y
Y: float32;
// z
Z: float32;
}
struct MavCmdNavSetYawSpeed {
// Yaw angle to adjust steering by.
Yaw: float32;
// Speed.
Speed: float32;
// Final angle. (0=absolute, 1=relative)
Angle: float32;
// Empty
Param4: float32;
// Empty
Param5: float32;
// Empty
Param6: float32;
// Empty
Param7: float32;
}
struct MavCmdNavSplineWaypoint {
// Hold time. (ignored by fixed wing, time to stay at waypoint for rotary wing)
Hold: float32;
// Empty
Param2: float32;
// Empty
Param3: float32;
// Empty
Param4: float32;
// Latitude/X of goal
Latitude_X: float32;
// Longitude/Y of goal
Longitude_Y: float32;
// Altitude/Z of goal
Altitude_Z: float32;
}
struct MavCmdNavTakeoff {
// Minimum pitch (if airspeed sensor present), desired pitch without sensor
Pitch: float32;
// Empty
Param2: float32;
// Empty
Param3: float32;
// Yaw angle (if magnetometer present), ignored without magnetometer. NaN to use the current system yaw heading
// mode (e.g. yaw towards next waypoint, yaw to home, etc.).
Yaw: float32;
// Latitude
Latitude: float32;
// Longitude
Longitude: float32;
// Altitude
Altitude: float32;
}
struct MavCmdNavTakeoffLocal {
// Minimum pitch (if airspeed sensor present), desired pitch without sensor
Pitch: float32;
// Empty
Param2: float32;
// Takeoff ascend rate
AscendRate: float32;
// Yaw angle (if magnetometer or another yaw estimation source present), ignored without one of these
Yaw: float32;
// Y-axis position
YPosition: float32;
// X-axis position
XPosition: float32;
// Z-axis position
ZPosition: float32;
}
struct MavCmdNavVtolLand {
// Landing behaviour.
LandOptions: NavVtolLandOptions;
// Empty
Param2: float32;
// Approach altitude (with the same reference as the Altitude field). NaN if unspecified.
ApproachAltitude: float32;
// Yaw angle. NaN to use the current system yaw heading mode (e.g. yaw towards next waypoint, yaw to home,
// etc.).
Yaw: float32;
// Latitude
Latitude: float32;
// Longitude
Longitude: float32;
// Altitude (ground level) relative to the current coordinate frame. NaN to use system default landing altitude
// (ignore value).
GroundAltitude: float32;
}
struct MavCmdNavVtolTakeoff {
// Empty
Param1: float32;
// Front transition heading.
TransitionHeading: VtolTransitionHeading;
// Empty
Param3: float32;
// Yaw angle. NaN to use the current system yaw heading mode (e.g. yaw towards next waypoint, yaw to home,
// etc.).
YawAngle: float32;
// Latitude
Latitude: float32;
// Longitude
Longitude: float32;
// Altitude
Altitude: float32;
}
struct MavCmdNavWaypoint {
// Hold time. (ignored by fixed wing, time to stay at waypoint for rotary wing)
Hold: float32;
// Acceptance radius (if the sphere with this radius is hit, the waypoint counts as reached)
AcceptRadius: float32;
// 0 to pass through the WP, if > 0 radius to pass by WP. Positive value for clockwise orbit, negative value
// for counter-clockwise orbit. Allows trajectory control.
PassRadius: float32;
// Desired yaw angle at waypoint (rotary wing). NaN to use the current system yaw heading mode (e.g. yaw
// towards next waypoint, yaw to home, etc.).
Yaw: float32;
// Latitude
Latitude: float32;
// Longitude
Longitude: float32;
// Altitude
Altitude: float32;
}
struct MavCmdObliqueSurvey {
// Camera trigger distance. 0 to stop triggering.
Distance: float32;
// Camera shutter integration time. 0 to ignore
Shutter: float32;
// The minimum interval in which the camera is capable of taking subsequent pictures repeatedly. 0 to ignore.
MinInterval: float32;
// Total number of roll positions at which the camera will capture photos (images captures spread evenly
// across the limits defined by param5).
Positions: float32;
// Angle limits that the camera can be rolled to left and right of center.
RollAngle: float32;
// Fixed pitch angle that the camera will hold in oblique mode if the mount is actuated in the pitch axis.
PitchAngle: float32;
// Empty
Param7: float32;
}
struct MavCmdOverrideGoto {
// MAV_GOTO_DO_HOLD: pause mission and either hold or move to specified position (depending on param2), MAV_GOTO_DO_CONTINUE:
// resume mission.
Continue: MavGoto;
// MAV_GOTO_HOLD_AT_CURRENT_POSITION: hold at current position, MAV_GOTO_HOLD_AT_SPECIFIED_POSITION: hold
// at specified position.
Position: MavGoto;
// Coordinate frame of hold point.
Frame: MavFrame;
// Desired yaw angle.
Yaw: float32;
// Latitude/X position.
Latitude_X: float32;
// Longitude/Y position.
Longitude_Y: float32;
// Altitude/Z position.
Altitude_Z: float32;
}
struct MavCmdPanoramaCreate {
// Viewing angle horizontal of the panorama (+- 0.5 the total angle)
HorizontalAngle: float32;
// Viewing angle vertical of panorama.
VerticalAngle: float32;
// Speed of the horizontal rotation.
HorizontalSpeed: float32;
// Speed of the vertical rotation.
VerticalSpeed: float32;
}
struct MavCmdPayloadControlDeploy {
// Operation mode. 0: Abort deployment, continue normal mission. 1: switch to payload deployment mode. 100:
// delete first payload deployment request. 101: delete all payload deployment requests.
OperationMode: float32;
// Reserved
Param2: float32;
// Reserved
Param3: float32;
// Reserved
Param4: float32;
// Reserved
Param5: float32;
// Reserved
Param6: float32;
// Reserved
Param7: float32;
}
struct MavCmdPayloadPrepareDeploy {
// Operation mode. 0: prepare single payload deploy (overwriting previous requests), but do not execute it.
// 1: execute payload deploy immediately (rejecting further deploy commands during execution, but allowing
// abort). 2: add payload deploy to existing deployment list.
OperationMode: float32;
// Desired approach vector in compass heading. A negative value indicates the system can define the approach
// vector at will.
ApproachVector: float32;
// Desired ground speed at release time. This can be overridden by the airframe in case it needs to meet
// minimum airspeed. A negative value indicates the system can define the ground speed at will.
GroundSpeed: float32;
// Minimum altitude clearance to the release position. A negative value indicates the system can define the
// clearance at will.
AltitudeClearance: float32;
// Latitude. Note, if used in MISSION_ITEM (deprecated) the units are degrees (unscaled)
Latitude: float32;
// Longitude. Note, if used in MISSION_ITEM (deprecated) the units are degrees (unscaled)
Longitude: float32;
// Altitude (MSL)
Altitude: float32;
}
struct MavCmdPreflightCalibration {
// 1: gyro calibration, 3: gyro temperature calibration
GyroTemperature: float32;
// 1: magnetometer calibration
Magnetometer: float32;
// 1: ground pressure calibration
GroundPressure: float32;
// 1: radio RC calibration, 2: RC trim calibration
RemoteControl: float32;
// 1: accelerometer calibration, 2: board level calibration, 3: accelerometer temperature calibration, 4:
// simple accelerometer calibration
Accelerometer: float32;
// 1: APM: compass/motor interference calibration (PX4: airspeed calibration, deprecated), 2: airspeed calibration
CompmotOrAirspeed: float32;
// 1: ESC calibration, 3: barometer temperature calibration
EscOrBaro: float32;
}
struct MavCmdPreflightRebootShutdown {
// 0: Do nothing for autopilot, 1: Reboot autopilot, 2: Shutdown autopilot, 3: Reboot autopilot and keep
// it in the bootloader until upgraded.
Autopilot: float32;
// 0: Do nothing for onboard computer, 1: Reboot onboard computer, 2: Shutdown onboard computer, 3: Reboot
// onboard computer and keep it in the bootloader until upgraded.
Companion: float32;
// 0: Do nothing for component, 1: Reboot component, 2: Shutdown component, 3: Reboot component and keep
// it in the bootloader until upgraded
ComponentAction: float32;
// MAVLink Component ID targeted in param3 (0 for all components).
ComponentId: float32;
// Reserved (set to 0)
Param5: float32;
// Reserved (set to 0)
Param6: float32;
// WIP: ID (e.g. camera ID -1 for all IDs)
Param7: float32;
}
struct MavCmdPreflightSetSensorOffsets {
// Sensor to adjust the offsets for: 0: gyros, 1: accelerometer, 2: magnetometer, 3: barometer, 4: optical
// flow, 5: second magnetometer, 6: third magnetometer
SensorType: float32;
// X axis offset (or generic dimension 1), in the sensor's raw units
XOffset: float32;
// Y axis offset (or generic dimension 2), in the sensor's raw units
YOffset: float32;
// Z axis offset (or generic dimension 3), in the sensor's raw units
ZOffset: float32;
// Generic dimension 4, in the sensor's raw units
FourthDimension: float32;
// Generic dimension 5, in the sensor's raw units
FifthDimension: float32;
// Generic dimension 6, in the sensor's raw units
SixthDimension: float32;
}
struct MavCmdPreflightStorage {
// Parameter storage: 0: READ FROM FLASH/EEPROM, 1: WRITE CURRENT TO FLASH/EEPROM, 2: Reset to defaults,
// 3: Reset sensor calibration parameter data to factory default (or firmware default if not available)
ParameterStorage: float32;
// Mission storage: 0: READ FROM FLASH/EEPROM, 1: WRITE CURRENT TO FLASH/EEPROM, 2: Reset to defaults
MissionStorage: float32;
// Onboard logging: 0: Ignore, 1: Start default rate logging, -1: Stop logging, > 1: logging rate (e.g. set
// to 1000 for 1000 Hz logging)
LoggingRate: float32;
// Reserved
Param4: float32;
// Empty
Param5: float32;
// Empty
Param6: float32;
// Empty
Param7: float32;
}
struct MavCmdPreflightUavcan {
// 1: Trigger actuator ID assignment and direction mapping. 0: Cancel command.
ActuatorId: float32;
// Reserved
Param2: float32;
// Reserved
Param3: float32;
// Reserved
Param4: float32;
// Reserved
Param5: float32;
// Reserved
Param6: float32;
// Reserved
Param7: float32;
}
struct MavCmdRequestAutopilotCapabilities {
// 1: Request autopilot version
Version: float32;
// Reserved (all remaining params)
Param2: float32;
}
struct MavCmdRequestCameraCaptureStatus {
// 0: No Action 1: Request camera capture status
CaptureStatus: float32;
// Reserved (all remaining params)
Param2: float32;
}
struct MavCmdRequestCameraImageCapture {
// Sequence number for missing CAMERA_IMAGE_CAPTURED message
Number: float32;
Param2: float32;
Param3: float32;
Param4: float32;
Param7: float32;
}
struct MavCmdRequestCameraInformation {
// 0: No action 1: Request camera capabilities
Capabilities: float32;
// Reserved (all remaining params)
Param2: float32;
}
struct MavCmdRequestCameraSettings {
// 0: No Action 1: Request camera settings
Settings: float32;
// Reserved (all remaining params)
Param2: float32;
}
struct MavCmdRequestFlightInformation {
// 1: Request flight information
FlightInformation: float32;
// Reserved (all remaining params)
Param2: float32;
}
struct MavCmdRequestMessage {
// The MAVLink message ID of the requested message.
MessageId: float32;
// Use for index ID, if required. Otherwise, the use of this parameter (if any) must be defined in the requested
// message. By default assumed not used (0).
ReqParam1: float32;
// The use of this parameter (if any), must be defined in the requested message. By default assumed not used
// (0).
ReqParam2: float32;
// The use of this parameter (if any), must be defined in the requested message. By default assumed not used
// (0).
ReqParam3: float32;
// The use of this parameter (if any), must be defined in the requested message. By default assumed not used
// (0).
ReqParam4: float32;
// The use of this parameter (if any), must be defined in the requested message. By default assumed not used
// (0).
ReqParam5: float32;
// Target address for requested message (if message has target address fields). 0: Flight-stack default,
// 1: address of requestor, 2: broadcast.
ResponseTarget: float32;
}
struct MavCmdRequestProtocolVersion {
// 1: Request supported protocol versions by all nodes on the network
Protocol: float32;
// Reserved (all remaining params)
Param2: float32;
}
struct MavCmdRequestStorageInformation {
// Storage ID (0 for all, 1 for first, 2 for second, etc.)
StorageId: float32;
// 0: No Action 1: Request storage information
Information: float32;
// Reserved (all remaining params)
Param3: float32;
}
struct MavCmdRequestVideoStreamInformation {
// Video Stream ID (0 for all streams, 1 for first, 2 for second, etc.)
StreamId: float32;
}
struct MavCmdRequestVideoStreamStatus {
// Video Stream ID (0 for all streams, 1 for first, 2 for second, etc.)
StreamId: float32;
}
struct MavCmdResetCameraSettings {
// 0: No Action 1: Reset all settings
Reset: float32;
// Reserved (all remaining params)
Param2: float32;
}
abstract extensible struct MavCmdRunPrearmChecks {
}
struct MavCmdSetCameraFocus {
// Focus type
FocusType: SetFocusType;
// Focus value
FocusValue: float32;
Param3: float32;
Param4: float32;
Param7: float32;
}
struct MavCmdSetCameraMode {
// Reserved (Set to 0)
Param1: float32;
// Camera mode
CameraMode: CameraMode;
Param3: float32;
Param4: float32;
Param7: float32;
}
struct MavCmdSetCameraZoom {
// Zoom type
ZoomType: CameraZoomType;
// Zoom value. The range of valid values depend on the zoom type.
ZoomValue: float32;
Param3: float32;
Param4: float32;
Param7: float32;
}
struct MavCmdSetGuidedSubmodeCircle {
// Radius of desired circle in CIRCLE_MODE
Radius: float32;
// User defined
Param2: float32;
// User defined
Param3: float32;
// User defined
Param4: float32;
// Target latitude of center of circle in CIRCLE_MODE
Latitude: float32;
// Target longitude of center of circle in CIRCLE_MODE
Longitude: float32;
}
abstract extensible struct MavCmdSetGuidedSubmodeStandard {
}
struct MavCmdSetMessageInterval {
// The MAVLink message ID
MessageId: float32;
// The interval between two messages. Set to -1 to disable and 0 to request default rate.
Interval: float32;
// Target address of message stream (if message has target address fields). 0: Flight-stack default (recommended),
// 1: address of requestor, 2: broadcast.
ResponseTarget: float32;
}
struct MavCmdSetStorageUsage {
// Storage ID (1 for first, 2 for second, etc.)
StorageId: float32;
// Usage flags
Usage: StorageUsageFlag;
}
struct MavCmdSpatialUser1 {
// User defined
Param1: float32;
// User defined
Param2: float32;
// User defined
Param3: float32;
// User defined
Param4: float32;
// Latitude unscaled
Latitude: float32;
// Longitude unscaled
Longitude: float32;
// Altitude (MSL)
Altitude: float32;
}
struct MavCmdSpatialUser2 {
// User defined
Param1: float32;
// User defined
Param2: float32;
// User defined
Param3: float32;
// User defined
Param4: float32;
// Latitude unscaled
Latitude: float32;
// Longitude unscaled
Longitude: float32;
// Altitude (MSL)
Altitude: float32;
}
struct MavCmdSpatialUser3 {
// User defined
Param1: float32;
// User defined
Param2: float32;
// User defined
Param3: float32;
// User defined
Param4: float32;
// Latitude unscaled
Latitude: float32;
// Longitude unscaled
Longitude: float32;
// Altitude (MSL)
Altitude: float32;
}
struct MavCmdSpatialUser4 {
// User defined
Param1: float32;
// User defined
Param2: float32;
// User defined
Param3: float32;
// User defined
Param4: float32;
// Latitude unscaled
Latitude: float32;
// Longitude unscaled
Longitude: float32;
// Altitude (MSL)
Altitude: float32;
}
struct MavCmdSpatialUser5 {
// User defined
Param1: float32;
// User defined
Param2: float32;
// User defined
Param3: float32;
// User defined
Param4: float32;
// Latitude unscaled
Latitude: float32;
// Longitude unscaled
Longitude: float32;
// Altitude (MSL)
Altitude: float32;
}
struct MavCmdStartRxPair {
// 0:Spektrum.
Spektrum: float32;
// RC type.
RcType: RcType;
}
struct MavCmdStorageFormat {
// Storage ID (1 for first, 2 for second, etc.)
StorageId: float32;
// Format storage (and reset image log). 0: No action 1: Format storage
Format: float32;
// Reset Image Log (without formatting storage medium). This will reset CAMERA_CAPTURE_STATUS.image_count
// and CAMERA_IMAGE_CAPTURED.image_index. 0: No action 1: Reset Image Log
ResetImageLog: float32;
// Reserved (all remaining params)
Param4: float32;
}
struct MavCmdUavcanGetNodeInfo {
// Reserved (set to 0)
Param1: float32;
// Reserved (set to 0)
Param2: float32;
// Reserved (set to 0)
Param3: float32;
// Reserved (set to 0)
Param4: float32;
// Reserved (set to 0)
Param5: float32;
// Reserved (set to 0)
Param6: float32;
// Reserved (set to 0)
Param7: float32;
}
struct MavCmdUser1 {
// User defined
Param1: float32;
// User defined
Param2: float32;
// User defined
Param3: float32;
// User defined
Param4: float32;
// User defined
Param5: float32;
// User defined
Param6: float32;
// User defined
Param7: float32;
}
struct MavCmdUser2 {
// User defined
Param1: float32;
// User defined
Param2: float32;
// User defined
Param3: float32;
// User defined
Param4: float32;
// User defined
Param5: float32;
// User defined
Param6: float32;
// User defined
Param7: float32;
}
struct MavCmdUser3 {
// User defined
Param1: float32;
// User defined
Param2: float32;
// User defined
Param3: float32;
// User defined
Param4: float32;
// User defined
Param5: float32;
// User defined
Param6: float32;
// User defined
Param7: float32;
}
struct MavCmdUser4 {
// User defined
Param1: float32;
// User defined
Param2: float32;
// User defined
Param3: float32;
// User defined
Param4: float32;
// User defined
Param5: float32;
// User defined
Param6: float32;
// User defined
Param7: float32;
}
struct MavCmdUser5 {
// User defined
Param1: float32;
// User defined
Param2: float32;
// User defined
Param3: float32;
// User defined
Param4: float32;
// User defined
Param5: float32;
// User defined
Param6: float32;
// User defined
Param7: float32;
}
struct MavCmdVideoStartCapture {
// Video Stream ID (0 for all streams)
StreamId: float32;
// Frequency CAMERA_CAPTURE_STATUS messages should be sent while recording (0 for no messages, otherwise
// frequency)
StatusFrequency: float32;
Param3: float32;
Param4: float32;
Param5: float32;
Param6: float32;
Param7: float32;
}
struct MavCmdVideoStartStreaming {
// Video Stream ID (0 for all streams, 1 for first, 2 for second, etc.)
StreamId: float32;
}
struct MavCmdVideoStopCapture {
// Video Stream ID (0 for all streams)
StreamId: float32;
Param2: float32;
Param3: float32;
Param4: float32;
Param5: float32;
Param6: float32;
Param7: float32;
}
struct MavCmdVideoStopStreaming {
// Video Stream ID (0 for all streams, 1 for first, 2 for second, etc.)
StreamId: float32;
}
struct MavCmdWaypointUser1 {
// User defined
Param1: float32;
// User defined
Param2: float32;
// User defined
Param3: float32;
// User defined
Param4: float32;
// Latitude unscaled
Latitude: float32;
// Longitude unscaled
Longitude: float32;
// Altitude (MSL)
Altitude: float32;
}
struct MavCmdWaypointUser2 {
// User defined
Param1: float32;
// User defined
Param2: float32;
// User defined
Param3: float32;
// User defined
Param4: float32;
// Latitude unscaled
Latitude: float32;
// Longitude unscaled
Longitude: float32;
// Altitude (MSL)
Altitude: float32;
}
struct MavCmdWaypointUser3 {
// User defined
Param1: float32;
// User defined
Param2: float32;
// User defined
Param3: float32;
// User defined
Param4: float32;
// Latitude unscaled
Latitude: float32;
// Longitude unscaled
Longitude: float32;
// Altitude (MSL)
Altitude: float32;
}
struct MavCmdWaypointUser4 {
// User defined
Param1: float32;
// User defined
Param2: float32;
// User defined
Param3: float32;
// User defined
Param4: float32;
// Latitude unscaled
Latitude: float32;
// Longitude unscaled
Longitude: float32;
// Altitude (MSL)
Altitude: float32;
}
struct MavCmdWaypointUser5 {
// User defined
Param1: float32;
// User defined
Param2: float32;
// User defined
Param3: float32;
// User defined
Param4: float32;
// Latitude unscaled
Latitude: float32;
// Longitude unscaled
Longitude: float32;
// Altitude (MSL)
Altitude: float32;
}
message struct MemoryVect extends MessageFrame {
// Starting address of the debug variables
Address: uint16;
// Version code of the type variable. 0=unknown, type ignored and assumed int16_t. 1=as below
Ver: uint8;
// Type code of the memory variables. for ver = 1: 0=16 x int16_t, 1=16 x uint16_t, 2=16 x Q15, 3=16 x 1Q14
Type: uint8;
// Memory contents at specified address
@Length(32)
Value: int8[];
}
message struct MessageInterval extends MessageFrame {
// The ID of the requested MAVLink message. v1.0 is limited to 254 messages.
MessageId: uint16;
// The interval between two messages. A value of -1 indicates this stream is disabled, 0 indicates it is
// not available, > 0 indicates the interval at which it is sent.
IntervalUs: int32;
}
message struct MissionAck extends MessageFrame {
// System ID
TargetSystem: uint8;
// Component ID
TargetComponent: uint8;
// Mission result.
Type: MavMissionResult;
MissionAck_extensions: Optional<MissionAck_extension>;
}
struct MissionAck_extension {
// Mission type.
MissionType: MavMissionType;
}
message struct MissionClearAll extends MessageFrame {
// System ID
TargetSystem: uint8;
// Component ID
TargetComponent: uint8;
MissionClearAll_extensions: Optional<MissionClearAll_extension>;
}
struct MissionClearAll_extension {
// Mission type.
MissionType: MavMissionType;
}
message struct MissionCount extends MessageFrame {
// System ID
TargetSystem: uint8;
// Component ID
TargetComponent: uint8;
// Number of mission items in the sequence
Count: uint16;
MissionCount_extensions: Optional<MissionCount_extension>;
}
struct MissionCount_extension {
// Mission type.
MissionType: MavMissionType;
}
message struct MissionCurrent extends MessageFrame {
// Sequence
Seq: uint16;
}
message struct MissionItem extends MessageFrame {
// System ID
TargetSystem: uint8;
// Component ID
TargetComponent: uint8;
// Sequence
Seq: uint16;
// The coordinate system of the waypoint.
Frame: MavFrame;
// The scheduled action for the waypoint.
Command: MavCmd;
// false:0, true:1
Current: uint8;
// Autocontinue to next waypoint
Autocontinue: uint8;
MissionItem_extensions: Optional<MissionItem_extension>;
}
struct MissionItem_extension {
// Mission type.
MissionType: MavMissionType;
}
message struct MissionItemInt extends MessageFrame {
// System ID
TargetSystem: uint8;
// Component ID
TargetComponent: uint8;
// Waypoint ID (sequence number). Starts at zero. Increases monotonically for each waypoint, no gaps in the
// sequence (0,1,2,3,4).
Seq: uint16;
// The coordinate system of the waypoint.
Frame: MavFrame;
// The scheduled action for the waypoint.
Command: MavCmd;
// false:0, true:1
Current: uint8;
// Autocontinue to next waypoint
Autocontinue: uint8;
MissionItemInt_extensions: Optional<MissionItemInt_extension>;
}
struct MissionItemInt_extension {
// Mission type.
MissionType: MavMissionType;
}
message struct MissionItemReached extends MessageFrame {
// Sequence
Seq: uint16;
}
message struct MissionRequest extends MessageFrame {
// System ID
TargetSystem: uint8;
// Component ID
TargetComponent: uint8;
// Sequence
Seq: uint16;
MissionRequest_extensions: Optional<MissionRequest_extension>;
}
struct MissionRequest_extension {
// Mission type.
MissionType: MavMissionType;
}
message struct MissionRequestInt extends MessageFrame {
// System ID
TargetSystem: uint8;
// Component ID
TargetComponent: uint8;
// Sequence
Seq: uint16;
MissionRequestInt_extensions: Optional<MissionRequestInt_extension>;
}
struct MissionRequestInt_extension {
// Mission type.
MissionType: MavMissionType;
}
message struct MissionRequestList extends MessageFrame {
// System ID
TargetSystem: uint8;
// Component ID
TargetComponent: uint8;
MissionRequestList_extensions: Optional<MissionRequestList_extension>;
}
struct MissionRequestList_extension {
// Mission type.
MissionType: MavMissionType;
}
message struct MissionRequestPartialList extends MessageFrame {
// System ID
TargetSystem: uint8;
// Component ID
TargetComponent: uint8;
// Start index
StartIndex: int16;
// End index, -1 by default (-1: send list to end). Else a valid index of the list
EndIndex: int16;
MissionRequestPartialList_extensions: Optional<MissionRequestPartialList_extension>;
}
struct MissionRequestPartialList_extension {
// Mission type.
MissionType: MavMissionType;
}
message struct MissionSetCurrent extends MessageFrame {
// System ID
TargetSystem: uint8;
// Component ID
TargetComponent: uint8;
// Sequence
Seq: uint16;
}
message struct MissionWritePartialList extends MessageFrame {
// System ID
TargetSystem: uint8;
// Component ID
TargetComponent: uint8;
// Start index. Must be smaller / equal to the largest index of the current onboard list.
StartIndex: int16;
// End index, equal or greater than start index.
EndIndex: int16;
MissionWritePartialList_extensions: Optional<MissionWritePartialList_extension>;
}
struct MissionWritePartialList_extension {
// Mission type.
MissionType: MavMissionType;
}
message struct MountOrientation extends MessageFrame {
// Timestamp (time since system boot).
TimeBootMs: uint32;
// Roll in global frame (set to NaN for invalid).
Roll: float32;
// Pitch in global frame (set to NaN for invalid).
Pitch: float32;
// Yaw relative to vehicle (set to NaN for invalid).
Yaw: float32;
MountOrientation_extensions: Optional<MountOrientation_extension>;
}
struct MountOrientation_extension {
// Yaw in absolute frame relative to Earth's North, north is 0 (set to NaN for invalid).
YawAbsolute: float32;
}
message struct NamedValueFloat extends MessageFrame {
// Timestamp (time since system boot).
TimeBootMs: uint32;
// Name of the debug variable
@Length(10)
Name: string;
// Floating point value
Value: float32;
}
message struct NamedValueInt extends MessageFrame {
// Timestamp (time since system boot).
TimeBootMs: uint32;
// Name of the debug variable
@Length(10)
Name: string;
// Signed integer value
Value: int32;
}
message struct NavControllerOutput extends MessageFrame {
// Current desired roll
NavRoll: float32;
// Current desired pitch
NavPitch: float32;
// Current desired heading
NavBearing: int16;
// Bearing to current waypoint/target
TargetBearing: int16;
// Distance to active waypoint
WpDist: uint16;
// Current altitude error
AltError: float32;
// Current airspeed error
AspdError: float32;
// Current crosstrack error on x-y plane
XtrackError: float32;
}
message struct ObstacleDistance extends MessageFrame {
// Timestamp (UNIX Epoch time or time since system boot). The receiving end can infer timestamp format (since
// 1.1.1970 or since system boot) by checking for the magnitude of the number.
TimeUsec: uint64;
// Class id of the distance sensor type.
SensorType: MavDistanceSensor;
// Distance of obstacles around the vehicle with index 0 corresponding to north + angle_offset, unless otherwise
// specified in the frame. A value of 0 is valid and means that the obstacle is practically touching the
// sensor. A value of max_distance +1 means no obstacle is present. A value of UINT16_MAX for unknown/not
// used. In a array element, one unit corresponds to 1cm.
@Length(72)
Distances: uint16[];
// Angular width in degrees of each array element. Increment direction is clockwise. This field is ignored
// if increment_f is non-zero.
Increment: uint8;
// Minimum distance the sensor can measure.
MinDistance: uint16;
// Maximum distance the sensor can measure.
MaxDistance: uint16;
ObstacleDistance_extensions: Optional<ObstacleDistance_extension>;
}
struct ObstacleDistance_extension {
// Angular width in degrees of each array element as a float. If non-zero then this value is used instead
// of the uint8_t increment field. Positive is clockwise direction, negative is counter-clockwise.
IncrementF: float32;
// Relative angle offset of the 0-index element in the distances array. Value of 0 corresponds to forward.
// Positive is clockwise direction, negative is counter-clockwise.
AngleOffset: float32;
// Coordinate frame of reference for the yaw rotation and offset of the sensor data. Defaults to MAV_FRAME_GLOBAL,
// which is north aligned. For body-mounted sensors use MAV_FRAME_BODY_FRD, which is vehicle front aligned.
Frame: MavFrame;
}
message struct Odometry extends MessageFrame {
// Timestamp (UNIX Epoch time or time since system boot). The receiving end can infer timestamp format (since
// 1.1.1970 or since system boot) by checking for the magnitude of the number.
TimeUsec: uint64;
// Coordinate frame of reference for the pose data.
FrameId: MavFrame;
// Coordinate frame of reference for the velocity in free space (twist) data.
ChildFrameId: MavFrame;
// X Position
X: float32;
// Y Position
Y: float32;
// Z Position
Z: float32;
// Quaternion components, w, x, y, z (1 0 0 0 is the null-rotation)
@Length(4)
Q: float32[];
// X linear speed
Vx: float32;
// Y linear speed
Vy: float32;
// Z linear speed
Vz: float32;
// Roll angular speed
Rollspeed: float32;
// Pitch angular speed
Pitchspeed: float32;
// Yaw angular speed
Yawspeed: float32;
// Row-major representation of a 6x6 pose cross-covariance matrix upper right triangle (states: x, y, z,
// roll, pitch, yaw; first six entries are the first ROW, next five entries are the second ROW, etc.). If
// unknown, assign NaN value to first element in the array.
@Length(21)
PoseCovariance: float32[];
// Row-major representation of a 6x6 velocity cross-covariance matrix upper right triangle (states: vx, vy,
// vz, rollspeed, pitchspeed, yawspeed; first six entries are the first ROW, next five entries are the second
// ROW, etc.). If unknown, assign NaN value to first element in the array.
@Length(21)
VelocityCovariance: float32[];
Odometry_extensions: Optional<Odometry_extension>;
}
struct Odometry_extension {
// Estimate reset counter. This should be incremented when the estimate resets in any of the dimensions (position,
// velocity, attitude, angular speed). This is designed to be used when e.g an external SLAM system detects
// a loop-closure and the estimate jumps.
ResetCounter: uint8;
// Type of estimator that is providing the odometry.
EstimatorType: MavEstimatorType;
}
message struct OpticalFlow extends MessageFrame {
// Timestamp (UNIX Epoch time or time since system boot). The receiving end can infer timestamp format (since
// 1.1.1970 or since system boot) by checking for the magnitude of the number.
TimeUsec: uint64;
// Sensor ID
SensorId: uint8;
// Flow in x-sensor direction
FlowX: int16;
// Flow in y-sensor direction
FlowY: int16;
// Flow in x-sensor direction, angular-speed compensated
FlowCompMX: float32;
// Flow in y-sensor direction, angular-speed compensated
FlowCompMY: float32;
// Optical flow quality / confidence. 0: bad, 255: maximum quality
Quality: uint8;
// Ground distance. Positive value: distance known. Negative value: Unknown distance
GroundDistance: float32;
OpticalFlow_extensions: Optional<OpticalFlow_extension>;
}
struct OpticalFlow_extension {
// Flow rate about X axis
FlowRateX: float32;
// Flow rate about Y axis
FlowRateY: float32;
}
message struct OpticalFlowRad extends MessageFrame {
// Timestamp (UNIX Epoch time or time since system boot). The receiving end can infer timestamp format (since
// 1.1.1970 or since system boot) by checking for the magnitude of the number.
TimeUsec: uint64;
// Sensor ID
SensorId: uint8;
// Integration time. Divide integrated_x and integrated_y by the integration time to obtain average flow.
// The integration time also indicates the.
IntegrationTimeUs: uint32;
// Flow around X axis (Sensor RH rotation about the X axis induces a positive flow. Sensor linear motion
// along the positive Y axis induces a negative flow.)
IntegratedX: float32;
// Flow around Y axis (Sensor RH rotation about the Y axis induces a positive flow. Sensor linear motion
// along the positive X axis induces a positive flow.)
IntegratedY: float32;
// RH rotation around X axis
IntegratedXgyro: float32;
// RH rotation around Y axis
IntegratedYgyro: float32;
// RH rotation around Z axis
IntegratedZgyro: float32;
// Temperature
Temperature: int16;
// Optical flow quality / confidence. 0: no valid flow, 255: maximum quality
Quality: uint8;
// Time since the distance was sampled.
TimeDeltaDistanceUs: uint32;
// Distance to the center of the flow field. Positive value (including zero): distance known. Negative value:
// Unknown distance.
Distance: float32;
}
message struct ParamExtAck extends MessageFrame {
// Parameter id, terminated by NULL if the length is less than 16 human-readable chars and WITHOUT null termination
// (NULL) byte if the length is exactly 16 chars - applications have to provide 16+1 bytes storage if the
// ID is stored as string
@Length(16)
ParamId: string;
// Parameter value (new value if PARAM_ACK_ACCEPTED, current value otherwise)
@Length(128)
ParamValue: string;
// Parameter type.
ParamType: MavParamExtType;
// Result code.
ParamResult: ParamAck;
}
message struct ParamExtRequestList extends MessageFrame {
// System ID
TargetSystem: uint8;
// Component ID
TargetComponent: uint8;
}
message struct ParamExtRequestRead extends MessageFrame {
// System ID
TargetSystem: uint8;
// Component ID
TargetComponent: uint8;
// Parameter id, terminated by NULL if the length is less than 16 human-readable chars and WITHOUT null termination
// (NULL) byte if the length is exactly 16 chars - applications have to provide 16+1 bytes storage if the
// ID is stored as string
@Length(16)
ParamId: string;
// Parameter index. Set to -1 to use the Parameter ID field as identifier (else param_id will be ignored)
ParamIndex: int16;
}
message struct ParamExtSet extends MessageFrame {
// System ID
TargetSystem: uint8;
// Component ID
TargetComponent: uint8;
// Parameter id, terminated by NULL if the length is less than 16 human-readable chars and WITHOUT null termination
// (NULL) byte if the length is exactly 16 chars - applications have to provide 16+1 bytes storage if the
// ID is stored as string
@Length(16)
ParamId: string;
// Parameter value
@Length(128)
ParamValue: string;
// Parameter type.
ParamType: MavParamExtType;
}
message struct ParamExtValue extends MessageFrame {
// Parameter id, terminated by NULL if the length is less than 16 human-readable chars and WITHOUT null termination
// (NULL) byte if the length is exactly 16 chars - applications have to provide 16+1 bytes storage if the
// ID is stored as string
@Length(16)
ParamId: string;
// Parameter value
@Length(128)
ParamValue: string;
// Parameter type.
ParamType: MavParamExtType;
// Total number of parameters
ParamCount: uint16;
// Index of this parameter
ParamIndex: uint16;
}
message struct ParamMapRc extends MessageFrame {
// System ID
TargetSystem: uint8;
// Component ID
TargetComponent: uint8;
// Onboard parameter id, terminated by NULL if the length is less than 16 human-readable chars and WITHOUT
// null termination (NULL) byte if the length is exactly 16 chars - applications have to provide 16+1 bytes
// storage if the ID is stored as string
@Length(16)
ParamId: string;
// Parameter index. Send -1 to use the param ID field as identifier (else the param id will be ignored),
// send -2 to disable any existing map for this rc_channel_index.
ParamIndex: int16;
// Index of parameter RC channel. Not equal to the RC channel id. Typically corresponds to a potentiometer-knob
// on the RC.
ParameterRcChannelIndex: uint8;
// Initial parameter value
ParamValue0: float32;
// Scale, maps the RC range [-1, 1] to a parameter value
Scale: float32;
// Minimum param value. The protocol does not define if this overwrites an onboard minimum value. (Depends
// on implementation)
ParamValueMin: float32;
// Maximum param value. The protocol does not define if this overwrites an onboard maximum value. (Depends
// on implementation)
ParamValueMax: float32;
}
message struct ParamRequestList extends MessageFrame {
// System ID
TargetSystem: uint8;
// Component ID
TargetComponent: uint8;
}
message struct ParamRequestRead extends MessageFrame {
// System ID
TargetSystem: uint8;
// Component ID
TargetComponent: uint8;
// Onboard parameter id, terminated by NULL if the length is less than 16 human-readable chars and WITHOUT
// null termination (NULL) byte if the length is exactly 16 chars - applications have to provide 16+1 bytes
// storage if the ID is stored as string
@Length(16)
ParamId: string;
// Parameter index. Send -1 to use the param ID field as identifier (else the param id will be ignored)
ParamIndex: int16;
}
message struct ParamSet extends MessageFrame {
// System ID
TargetSystem: uint8;
// Component ID
TargetComponent: uint8;
// Onboard parameter id, terminated by NULL if the length is less than 16 human-readable chars and WITHOUT
// null termination (NULL) byte if the length is exactly 16 chars - applications have to provide 16+1 bytes
// storage if the ID is stored as string
@Length(16)
ParamId: string;
// Onboard parameter value
ParamValue: float32;
// Onboard parameter type.
ParamType: MavParamType;
}
message struct ParamValue extends MessageFrame {
// Onboard parameter id, terminated by NULL if the length is less than 16 human-readable chars and WITHOUT
// null termination (NULL) byte if the length is exactly 16 chars - applications have to provide 16+1 bytes
// storage if the ID is stored as string
@Length(16)
ParamId: string;
// Onboard parameter value
ParamValue: float32;
// Onboard parameter type.
ParamType: MavParamType;
// Total number of onboard parameters
ParamCount: uint16;
// Index of this onboard parameter
ParamIndex: uint16;
}
message struct Ping extends MessageFrame {
// Timestamp (UNIX Epoch time or time since system boot). The receiving end can infer timestamp format (since
// 1.1.1970 or since system boot) by checking for the magnitude of the number.
TimeUsec: uint64;
// PING sequence
Seq: uint32;
// 0: request ping from all receiving systems. If greater than 0: message is a ping response and number is
// the system id of the requesting system
TargetSystem: uint8;
// 0: request ping from all receiving components. If greater than 0: message is a ping response and number
// is the component id of the requesting component.
TargetComponent: uint8;
}
message struct PlayTune extends MessageFrame {
// System ID
TargetSystem: uint8;
// Component ID
TargetComponent: uint8;
// tune in board specific format
@Length(30)
Tune: string;
PlayTune_extensions: Optional<PlayTune_extension>;
}
struct PlayTune_extension {
// tune extension (appended to tune)
@Length(200)
Tune2: string;
}
message struct PlayTuneV2 extends MessageFrame {
// System ID
TargetSystem: uint8;
// Component ID
TargetComponent: uint8;
// Tune format
Format: TuneFormatBitmask;
// Tune definition as a NULL-terminated string.
@Length(248)
Tune: string;
}
message struct PositionTargetGlobalInt extends MessageFrame {
// Timestamp (time since system boot). The rationale for the timestamp in the setpoint is to allow the system
// to compensate for the transport delay of the setpoint. This allows the system to compensate processing
// latency.
TimeBootMs: uint32;
// Valid options are: MAV_FRAME_GLOBAL_INT = 5, MAV_FRAME_GLOBAL_RELATIVE_ALT_INT = 6, MAV_FRAME_GLOBAL_TERRAIN_ALT_INT
// = 11
CoordinateFrame: MavFrame;
// Bitmap to indicate which dimensions should be ignored by the vehicle.
TypeMask: PositionTargetTypemaskBitmask;
// X Position in WGS84 frame
LatInt: int32;
// Y Position in WGS84 frame
LonInt: int32;
// Altitude (MSL, AGL or relative to home altitude, depending on frame)
Alt: float32;
// X velocity in NED frame
Vx: float32;
// Y velocity in NED frame
Vy: float32;
// Z velocity in NED frame
Vz: float32;
// X acceleration or force (if bit 10 of type_mask is set) in NED frame in meter / s^2 or N
Afx: float32;
// Y acceleration or force (if bit 10 of type_mask is set) in NED frame in meter / s^2 or N
Afy: float32;
// Z acceleration or force (if bit 10 of type_mask is set) in NED frame in meter / s^2 or N
Afz: float32;
// yaw setpoint
Yaw: float32;
// yaw rate setpoint
YawRate: float32;
}
message struct PositionTargetLocalNed extends MessageFrame {
// Timestamp (time since system boot).
TimeBootMs: uint32;
// Valid options are: MAV_FRAME_LOCAL_NED = 1, MAV_FRAME_LOCAL_OFFSET_NED = 7, MAV_FRAME_BODY_NED = 8, MAV_FRAME_BODY_OFFSET_NED
// = 9
CoordinateFrame: MavFrame;
// Bitmap to indicate which dimensions should be ignored by the vehicle.
TypeMask: PositionTargetTypemaskBitmask;
// X Position in NED frame
X: float32;
// Y Position in NED frame
Y: float32;
// Z Position in NED frame (note, altitude is negative in NED)
Z: float32;
// X velocity in NED frame
Vx: float32;
// Y velocity in NED frame
Vy: float32;
// Z velocity in NED frame
Vz: float32;
// X acceleration or force (if bit 10 of type_mask is set) in NED frame in meter / s^2 or N
Afx: float32;
// Y acceleration or force (if bit 10 of type_mask is set) in NED frame in meter / s^2 or N
Afy: float32;
// Z acceleration or force (if bit 10 of type_mask is set) in NED frame in meter / s^2 or N
Afz: float32;
// yaw setpoint
Yaw: float32;
// yaw rate setpoint
YawRate: float32;
}
message struct PowerStatus extends MessageFrame {
// 5V rail voltage.
Vcc: uint16;
// Servo rail voltage.
Vservo: uint16;
// Bitmap of power supply status flags.
Flags: MavPowerStatusBitmask;
}
message struct RadioStatus extends MessageFrame {
// Local (message sender) recieved signal strength indication in device-dependent units/scale. Values: [0-254],
// UINT8_MAX: invalid/unknown.
Rssi: uint8;
// Remote (message receiver) signal strength indication in device-dependent units/scale. Values: [0-254],
// UINT8_MAX: invalid/unknown.
Remrssi: uint8;
// Remaining free transmitter buffer space.
Txbuf: uint8;
// Local background noise level. These are device dependent RSSI values (scale as approx 2x dB on SiK radios).
// Values: [0-254], UINT8_MAX: invalid/unknown.
Noise: uint8;
// Remote background noise level. These are device dependent RSSI values (scale as approx 2x dB on SiK radios).
// Values: [0-254], UINT8_MAX: invalid/unknown.
Remnoise: uint8;
// Count of radio packet receive errors (since boot).
Rxerrors: uint16;
// Count of error corrected radio packets (since boot).
Fixed: uint16;
}
message struct RawImu extends MessageFrame {
// Timestamp (UNIX Epoch time or time since system boot). The receiving end can infer timestamp format (since
// 1.1.1970 or since system boot) by checking for the magnitude of the number.
TimeUsec: uint64;
// X acceleration (raw)
Xacc: int16;
// Y acceleration (raw)
Yacc: int16;
// Z acceleration (raw)
Zacc: int16;
// Angular speed around X axis (raw)
Xgyro: int16;
// Angular speed around Y axis (raw)
Ygyro: int16;
// Angular speed around Z axis (raw)
Zgyro: int16;
// X Magnetic field (raw)
Xmag: int16;
// Y Magnetic field (raw)
Ymag: int16;
// Z Magnetic field (raw)
Zmag: int16;
RawImu_extensions: Optional<RawImu_extension>;
}
struct RawImu_extension {
// Id. Ids are numbered from 0 and map to IMUs numbered from 1 (e.g. IMU1 will have a message with id=0)
Id: uint8;
// Temperature, 0: IMU does not provide temperature values. If the IMU is at 0C it must send 1 (0.01C).
Temperature: int16;
}
message struct RawPressure extends MessageFrame {
// Timestamp (UNIX Epoch time or time since system boot). The receiving end can infer timestamp format (since
// 1.1.1970 or since system boot) by checking for the magnitude of the number.
TimeUsec: uint64;
// Absolute pressure (raw)
PressAbs: int16;
// Differential pressure 1 (raw, 0 if nonexistent)
PressDiff1: int16;
// Differential pressure 2 (raw, 0 if nonexistent)
PressDiff2: int16;
// Raw Temperature measurement (raw)
Temperature: int16;
}
message struct RawRpm extends MessageFrame {
// Index of this RPM sensor (0-indexed)
Index: uint8;
// Indicated rate
Frequency: float32;
}
message struct RcChannels extends MessageFrame {
// Timestamp (time since system boot).
TimeBootMs: uint32;
// Total number of RC channels being received. This can be larger than 18, indicating that more channels
// are available but not given in this message. This value should be 0 when no RC channels are available.
Chancount: uint8;
// RC channel 1 value.
Chan1Raw: uint16;
// RC channel 2 value.
Chan2Raw: uint16;
// RC channel 3 value.
Chan3Raw: uint16;
// RC channel 4 value.
Chan4Raw: uint16;
// RC channel 5 value.
Chan5Raw: uint16;
// RC channel 6 value.
Chan6Raw: uint16;
// RC channel 7 value.
Chan7Raw: uint16;
// RC channel 8 value.
Chan8Raw: uint16;
// RC channel 9 value.
Chan9Raw: uint16;
// RC channel 10 value.
Chan10Raw: uint16;
// RC channel 11 value.
Chan11Raw: uint16;
// RC channel 12 value.
Chan12Raw: uint16;
// RC channel 13 value.
Chan13Raw: uint16;
// RC channel 14 value.
Chan14Raw: uint16;
// RC channel 15 value.
Chan15Raw: uint16;
// RC channel 16 value.
Chan16Raw: uint16;
// RC channel 17 value.
Chan17Raw: uint16;
// RC channel 18 value.
Chan18Raw: uint16;
// Receive signal strength indicator in device-dependent units/scale. Values: [0-254], UINT8_MAX: invalid/unknown.
Rssi: uint8;
}
message struct RcChannelsOverride extends MessageFrame {
// System ID
TargetSystem: uint8;
// Component ID
TargetComponent: uint8;
// RC channel 1 value. A value of UINT16_MAX means to ignore this field. A value of 0 means to release this
// channel back to the RC radio.
Chan1Raw: uint16;
// RC channel 2 value. A value of UINT16_MAX means to ignore this field. A value of 0 means to release this
// channel back to the RC radio.
Chan2Raw: uint16;
// RC channel 3 value. A value of UINT16_MAX means to ignore this field. A value of 0 means to release this
// channel back to the RC radio.
Chan3Raw: uint16;
// RC channel 4 value. A value of UINT16_MAX means to ignore this field. A value of 0 means to release this
// channel back to the RC radio.
Chan4Raw: uint16;
// RC channel 5 value. A value of UINT16_MAX means to ignore this field. A value of 0 means to release this
// channel back to the RC radio.
Chan5Raw: uint16;
// RC channel 6 value. A value of UINT16_MAX means to ignore this field. A value of 0 means to release this
// channel back to the RC radio.
Chan6Raw: uint16;
// RC channel 7 value. A value of UINT16_MAX means to ignore this field. A value of 0 means to release this
// channel back to the RC radio.
Chan7Raw: uint16;
// RC channel 8 value. A value of UINT16_MAX means to ignore this field. A value of 0 means to release this
// channel back to the RC radio.
Chan8Raw: uint16;
RcChannelsOverride_extensions: Optional<RcChannelsOverride_extension>;
}
struct RcChannelsOverride_extension {
// RC channel 9 value. A value of 0 or UINT16_MAX means to ignore this field. A value of UINT16_MAX-1 means
// to release this channel back to the RC radio.
Chan9Raw: uint16;
// RC channel 10 value. A value of 0 or UINT16_MAX means to ignore this field. A value of UINT16_MAX-1 means
// to release this channel back to the RC radio.
Chan10Raw: uint16;
// RC channel 11 value. A value of 0 or UINT16_MAX means to ignore this field. A value of UINT16_MAX-1 means
// to release this channel back to the RC radio.
Chan11Raw: uint16;
// RC channel 12 value. A value of 0 or UINT16_MAX means to ignore this field. A value of UINT16_MAX-1 means
// to release this channel back to the RC radio.
Chan12Raw: uint16;
// RC channel 13 value. A value of 0 or UINT16_MAX means to ignore this field. A value of UINT16_MAX-1 means
// to release this channel back to the RC radio.
Chan13Raw: uint16;
// RC channel 14 value. A value of 0 or UINT16_MAX means to ignore this field. A value of UINT16_MAX-1 means
// to release this channel back to the RC radio.
Chan14Raw: uint16;
// RC channel 15 value. A value of 0 or UINT16_MAX means to ignore this field. A value of UINT16_MAX-1 means
// to release this channel back to the RC radio.
Chan15Raw: uint16;
// RC channel 16 value. A value of 0 or UINT16_MAX means to ignore this field. A value of UINT16_MAX-1 means
// to release this channel back to the RC radio.
Chan16Raw: uint16;
// RC channel 17 value. A value of 0 or UINT16_MAX means to ignore this field. A value of UINT16_MAX-1 means
// to release this channel back to the RC radio.
Chan17Raw: uint16;
// RC channel 18 value. A value of 0 or UINT16_MAX means to ignore this field. A value of UINT16_MAX-1 means
// to release this channel back to the RC radio.
Chan18Raw: uint16;
}
message struct RcChannelsRaw extends MessageFrame {
// Timestamp (time since system boot).
TimeBootMs: uint32;
// Servo output port (set of 8 outputs = 1 port). Flight stacks running on Pixhawk should use: 0 = MAIN,
// 1 = AUX.
Port: uint8;
// RC channel 1 value.
Chan1Raw: uint16;
// RC channel 2 value.
Chan2Raw: uint16;
// RC channel 3 value.
Chan3Raw: uint16;
// RC channel 4 value.
Chan4Raw: uint16;
// RC channel 5 value.
Chan5Raw: uint16;
// RC channel 6 value.
Chan6Raw: uint16;
// RC channel 7 value.
Chan7Raw: uint16;
// RC channel 8 value.
Chan8Raw: uint16;
// Receive signal strength indicator in device-dependent units/scale. Values: [0-254], UINT8_MAX: invalid/unknown.
Rssi: uint8;
}
message struct RcChannelsScaled extends MessageFrame {
// Timestamp (time since system boot).
TimeBootMs: uint32;
// Servo output port (set of 8 outputs = 1 port). Flight stacks running on Pixhawk should use: 0 = MAIN,
// 1 = AUX.
Port: uint8;
// RC channel 1 value scaled.
Chan1Scaled: int16;
// RC channel 2 value scaled.
Chan2Scaled: int16;
// RC channel 3 value scaled.
Chan3Scaled: int16;
// RC channel 4 value scaled.
Chan4Scaled: int16;
// RC channel 5 value scaled.
Chan5Scaled: int16;
// RC channel 6 value scaled.
Chan6Scaled: int16;
// RC channel 7 value scaled.
Chan7Scaled: int16;
// RC channel 8 value scaled.
Chan8Scaled: int16;
// Receive signal strength indicator in device-dependent units/scale. Values: [0-254], UINT8_MAX: invalid/unknown.
Rssi: uint8;
}
message struct RequestDataStream extends MessageFrame {
// The target requested to send the message stream.
TargetSystem: uint8;
// The target requested to send the message stream.
TargetComponent: uint8;
// The ID of the requested data stream
ReqStreamId: uint8;
// The requested message rate
ReqMessageRate: uint16;
// 1 to start sending, 0 to stop sending.
StartStop: uint8;
}
message struct ResourceRequest extends MessageFrame {
// Request ID. This ID should be re-used when sending back URI contents
RequestId: uint8;
// The type of requested URI. 0 = a file via URL. 1 = a UAVCAN binary
UriType: uint8;
// The requested unique resource identifier (URI). It is not necessarily a straight domain name (depends
// on the URI type enum)
@Length(120)
Uri: uint8[];
// The way the autopilot wants to receive the URI. 0 = MAVLink FTP. 1 = binary stream.
TransferType: uint8;
// The storage path the autopilot wants the URI to be stored in. Will only be valid if the transfer_type
// has a storage associated (e.g. MAVLink FTP).
@Length(120)
Storage: uint8[];
}
message struct SafetyAllowedArea extends MessageFrame {
// Coordinate frame. Can be either global, GPS, right-handed with Z axis up or local, right handed, Z axis
// down.
Frame: MavFrame;
// x position 1 / Latitude 1
P1X: float32;
// y position 1 / Longitude 1
P1Y: float32;
// z position 1 / Altitude 1
P1Z: float32;
// x position 2 / Latitude 2
P2X: float32;
// y position 2 / Longitude 2
P2Y: float32;
// z position 2 / Altitude 2
P2Z: float32;
}
message struct SafetySetAllowedArea extends MessageFrame {
// System ID
TargetSystem: uint8;
// Component ID
TargetComponent: uint8;
// Coordinate frame. Can be either global, GPS, right-handed with Z axis up or local, right handed, Z axis
// down.
Frame: MavFrame;
// x position 1 / Latitude 1
P1X: float32;
// y position 1 / Longitude 1
P1Y: float32;
// z position 1 / Altitude 1
P1Z: float32;
// x position 2 / Latitude 2
P2X: float32;
// y position 2 / Longitude 2
P2Y: float32;
// z position 2 / Altitude 2
P2Z: float32;
}
message struct ScaledImu extends MessageFrame {
// Timestamp (time since system boot).
TimeBootMs: uint32;
// X acceleration
Xacc: int16;
// Y acceleration
Yacc: int16;
// Z acceleration
Zacc: int16;
// Angular speed around X axis
Xgyro: int16;
// Angular speed around Y axis
Ygyro: int16;
// Angular speed around Z axis
Zgyro: int16;
// X Magnetic field
Xmag: int16;
// Y Magnetic field
Ymag: int16;
// Z Magnetic field
Zmag: int16;
ScaledImu_extensions: Optional<ScaledImu_extension>;
}
struct ScaledImu_extension {
// Temperature, 0: IMU does not provide temperature values. If the IMU is at 0C it must send 1 (0.01C).
Temperature: int16;
}
message struct ScaledImu2 extends MessageFrame {
// Timestamp (time since system boot).
TimeBootMs: uint32;
// X acceleration
Xacc: int16;
// Y acceleration
Yacc: int16;
// Z acceleration
Zacc: int16;
// Angular speed around X axis
Xgyro: int16;
// Angular speed around Y axis
Ygyro: int16;
// Angular speed around Z axis
Zgyro: int16;
// X Magnetic field
Xmag: int16;
// Y Magnetic field
Ymag: int16;
// Z Magnetic field
Zmag: int16;
ScaledImu2_extensions: Optional<ScaledImu2_extension>;
}
struct ScaledImu2_extension {
// Temperature, 0: IMU does not provide temperature values. If the IMU is at 0C it must send 1 (0.01C).
Temperature: int16;
}
message struct ScaledImu3 extends MessageFrame {
// Timestamp (time since system boot).
TimeBootMs: uint32;
// X acceleration
Xacc: int16;
// Y acceleration
Yacc: int16;
// Z acceleration
Zacc: int16;
// Angular speed around X axis
Xgyro: int16;
// Angular speed around Y axis
Ygyro: int16;
// Angular speed around Z axis
Zgyro: int16;
// X Magnetic field
Xmag: int16;
// Y Magnetic field
Ymag: int16;
// Z Magnetic field
Zmag: int16;
ScaledImu3_extensions: Optional<ScaledImu3_extension>;
}
struct ScaledImu3_extension {
// Temperature, 0: IMU does not provide temperature values. If the IMU is at 0C it must send 1 (0.01C).
Temperature: int16;
}
message struct ScaledPressure extends MessageFrame {
// Timestamp (time since system boot).
TimeBootMs: uint32;
// Absolute pressure
PressAbs: float32;
// Differential pressure 1
PressDiff: float32;
// Absolute pressure temperature
Temperature: int16;
ScaledPressure_extensions: Optional<ScaledPressure_extension>;
}
struct ScaledPressure_extension {
// Differential pressure temperature (0, if not available). Report values of 0 (or 1) as 1 cdegC.
TemperaturePressDiff: int16;
}
message struct ScaledPressure2 extends MessageFrame {
// Timestamp (time since system boot).
TimeBootMs: uint32;
// Absolute pressure
PressAbs: float32;
// Differential pressure
PressDiff: float32;
// Absolute pressure temperature
Temperature: int16;
ScaledPressure2_extensions: Optional<ScaledPressure2_extension>;
}
struct ScaledPressure2_extension {
// Differential pressure temperature (0, if not available). Report values of 0 (or 1) as 1 cdegC.
TemperaturePressDiff: int16;
}
message struct ScaledPressure3 extends MessageFrame {
// Timestamp (time since system boot).
TimeBootMs: uint32;
// Absolute pressure
PressAbs: float32;
// Differential pressure
PressDiff: float32;
// Absolute pressure temperature
Temperature: int16;
ScaledPressure3_extensions: Optional<ScaledPressure3_extension>;
}
struct ScaledPressure3_extension {
// Differential pressure temperature (0, if not available). Report values of 0 (or 1) as 1 cdegC.
TemperaturePressDiff: int16;
}
message struct SerialControl extends MessageFrame {
// Serial control device type.
Device: SerialControlDev;
// Bitmap of serial control flags.
Flags: SerialControlFlagBitmask;
// Timeout for reply data
Timeout: uint16;
// Baudrate of transfer. Zero means no change.
Baudrate: uint32;
// how many bytes in this transfer
Count: uint8;
// serial data
@Length(70)
Data: uint8[];
SerialControl_extensions: Optional<SerialControl_extension>;
}
struct SerialControl_extension {
// System ID
TargetSystem: uint8;
// Component ID
TargetComponent: uint8;
}
message struct ServoOutputRaw extends MessageFrame {
// Timestamp (UNIX Epoch time or time since system boot). The receiving end can infer timestamp format (since
// 1.1.1970 or since system boot) by checking for the magnitude of the number.
TimeUsec: uint32;
// Servo output port (set of 8 outputs = 1 port). Flight stacks running on Pixhawk should use: 0 = MAIN,
// 1 = AUX.
Port: uint8;
// Servo output 1 value
Servo1Raw: uint16;
// Servo output 2 value
Servo2Raw: uint16;
// Servo output 3 value
Servo3Raw: uint16;
// Servo output 4 value
Servo4Raw: uint16;
// Servo output 5 value
Servo5Raw: uint16;
// Servo output 6 value
Servo6Raw: uint16;
// Servo output 7 value
Servo7Raw: uint16;
// Servo output 8 value
Servo8Raw: uint16;
ServoOutputRaw_extensions: Optional<ServoOutputRaw_extension>;
}
struct ServoOutputRaw_extension {
// Servo output 9 value
Servo9Raw: uint16;
// Servo output 10 value
Servo10Raw: uint16;
// Servo output 11 value
Servo11Raw: uint16;
// Servo output 12 value
Servo12Raw: uint16;
// Servo output 13 value
Servo13Raw: uint16;
// Servo output 14 value
Servo14Raw: uint16;
// Servo output 15 value
Servo15Raw: uint16;
// Servo output 16 value
Servo16Raw: uint16;
}
message struct SetupSigning extends MessageFrame {
// system id of the target
TargetSystem: uint8;
// component ID of the target
TargetComponent: uint8;
// signing key
@Length(32)
SecretKey: uint8[];
// initial timestamp
InitialTimestamp: uint64;
}
message struct SetActuatorControlTarget extends MessageFrame {
// Timestamp (UNIX Epoch time or time since system boot). The receiving end can infer timestamp format (since
// 1.1.1970 or since system boot) by checking for the magnitude of the number.
TimeUsec: uint64;
// Actuator group. The "_mlx" indicates this is a multi-instance message and a MAVLink parser should use
// this field to difference between instances.
GroupMlx: uint8;
// System ID
TargetSystem: uint8;
// Component ID
TargetComponent: uint8;
// Actuator controls. Normed to -1..+1 where 0 is neutral position. Throttle for single rotation direction
// motors is 0..1, negative range for reverse direction. Standard mapping for attitude controls (group 0):
// (index 0-7): roll, pitch, yaw, throttle, flaps, spoilers, airbrakes, landing gear. Load a pass-through
// mixer to repurpose them as generic outputs.
@Length(8)
Controls: float32[];
}
message struct SetAttitudeTarget extends MessageFrame {
// Timestamp (time since system boot).
TimeBootMs: uint32;
// System ID
TargetSystem: uint8;
// Component ID
TargetComponent: uint8;
// Bitmap to indicate which dimensions should be ignored by the vehicle.
TypeMask: AttitudeTargetTypemaskBitmask;
// Attitude quaternion (w, x, y, z order, zero-rotation is 1, 0, 0, 0)
@Length(4)
Q: float32[];
// Body roll rate
BodyRollRate: float32;
// Body pitch rate
BodyPitchRate: float32;
// Body yaw rate
BodyYawRate: float32;
// Collective thrust, normalized to 0 .. 1 (-1 .. 1 for vehicles capable of reverse trust)
Thrust: float32;
SetAttitudeTarget_extensions: Optional<SetAttitudeTarget_extension>;
}
struct SetAttitudeTarget_extension {
// 3D thrust setpoint in the body NED frame, normalized to -1 .. 1
@Length(3)
ThrustBody: float32[];
}
message struct SetGpsGlobalOrigin extends MessageFrame {
// System ID
TargetSystem: uint8;
// Latitude (WGS84)
Latitude: int32;
// Longitude (WGS84)
Longitude: int32;
// Altitude (MSL). Positive for up.
Altitude: int32;
SetGpsGlobalOrigin_extensions: Optional<SetGpsGlobalOrigin_extension>;
}
struct SetGpsGlobalOrigin_extension {
// Timestamp (UNIX Epoch time or time since system boot). The receiving end can infer timestamp format (since
// 1.1.1970 or since system boot) by checking for the magnitude of the number.
TimeUsec: uint64;
}
message struct SetHomePosition extends MessageFrame {
// System ID.
TargetSystem: uint8;
// Latitude (WGS84)
Latitude: int32;
// Longitude (WGS84)
Longitude: int32;
// Altitude (MSL). Positive for up.
Altitude: int32;
// Local X position of this position in the local coordinate frame
X: float32;
// Local Y position of this position in the local coordinate frame
Y: float32;
// Local Z position of this position in the local coordinate frame
Z: float32;
// World to surface normal and heading transformation of the takeoff position. Used to indicate the heading
// and slope of the ground
@Length(4)
Q: float32[];
// Local X position of the end of the approach vector. Multicopters should set this position based on their
// takeoff path. Grass-landing fixed wing aircraft should set it the same way as multicopters. Runway-landing
// fixed wing aircraft should set it to the opposite direction of the takeoff, assuming the takeoff happened
// from the threshold / touchdown zone.
ApproachX: float32;
// Local Y position of the end of the approach vector. Multicopters should set this position based on their
// takeoff path. Grass-landing fixed wing aircraft should set it the same way as multicopters. Runway-landing
// fixed wing aircraft should set it to the opposite direction of the takeoff, assuming the takeoff happened
// from the threshold / touchdown zone.
ApproachY: float32;
// Local Z position of the end of the approach vector. Multicopters should set this position based on their
// takeoff path. Grass-landing fixed wing aircraft should set it the same way as multicopters. Runway-landing
// fixed wing aircraft should set it to the opposite direction of the takeoff, assuming the takeoff happened
// from the threshold / touchdown zone.
ApproachZ: float32;
SetHomePosition_extensions: Optional<SetHomePosition_extension>;
}
struct SetHomePosition_extension {
// Timestamp (UNIX Epoch time or time since system boot). The receiving end can infer timestamp format (since
// 1.1.1970 or since system boot) by checking for the magnitude of the number.
TimeUsec: uint64;
}
message struct SetMode extends MessageFrame {
// The system setting the mode
TargetSystem: uint8;
// The new base mode.
BaseMode: MavMode;
// The new autopilot-specific mode. This field can be ignored by an autopilot.
CustomMode: uint32;
}
message struct SetPositionTargetGlobalInt extends MessageFrame {
// Timestamp (time since system boot). The rationale for the timestamp in the setpoint is to allow the system
// to compensate for the transport delay of the setpoint. This allows the system to compensate processing
// latency.
TimeBootMs: uint32;
// System ID
TargetSystem: uint8;
// Component ID
TargetComponent: uint8;
// Valid options are: MAV_FRAME_GLOBAL_INT = 5, MAV_FRAME_GLOBAL_RELATIVE_ALT_INT = 6, MAV_FRAME_GLOBAL_TERRAIN_ALT_INT
// = 11
CoordinateFrame: MavFrame;
// Bitmap to indicate which dimensions should be ignored by the vehicle.
TypeMask: PositionTargetTypemaskBitmask;
// X Position in WGS84 frame
LatInt: int32;
// Y Position in WGS84 frame
LonInt: int32;
// Altitude (MSL, Relative to home, or AGL - depending on frame)
Alt: float32;
// X velocity in NED frame
Vx: float32;
// Y velocity in NED frame
Vy: float32;
// Z velocity in NED frame
Vz: float32;
// X acceleration or force (if bit 10 of type_mask is set) in NED frame in meter / s^2 or N
Afx: float32;
// Y acceleration or force (if bit 10 of type_mask is set) in NED frame in meter / s^2 or N
Afy: float32;
// Z acceleration or force (if bit 10 of type_mask is set) in NED frame in meter / s^2 or N
Afz: float32;
// yaw setpoint
Yaw: float32;
// yaw rate setpoint
YawRate: float32;
}
message struct SetPositionTargetLocalNed extends MessageFrame {
// Timestamp (time since system boot).
TimeBootMs: uint32;
// System ID
TargetSystem: uint8;
// Component ID
TargetComponent: uint8;
// Valid options are: MAV_FRAME_LOCAL_NED = 1, MAV_FRAME_LOCAL_OFFSET_NED = 7, MAV_FRAME_BODY_NED = 8, MAV_FRAME_BODY_OFFSET_NED
// = 9
CoordinateFrame: MavFrame;
// Bitmap to indicate which dimensions should be ignored by the vehicle.
TypeMask: PositionTargetTypemaskBitmask;
// X Position in NED frame
X: float32;
// Y Position in NED frame
Y: float32;
// Z Position in NED frame (note, altitude is negative in NED)
Z: float32;
// X velocity in NED frame
Vx: float32;
// Y velocity in NED frame
Vy: float32;
// Z velocity in NED frame
Vz: float32;
// X acceleration or force (if bit 10 of type_mask is set) in NED frame in meter / s^2 or N
Afx: float32;
// Y acceleration or force (if bit 10 of type_mask is set) in NED frame in meter / s^2 or N
Afy: float32;
// Z acceleration or force (if bit 10 of type_mask is set) in NED frame in meter / s^2 or N
Afz: float32;
// yaw setpoint
Yaw: float32;
// yaw rate setpoint
YawRate: float32;
}
message struct SimState extends MessageFrame {
// True attitude quaternion component 1, w (1 in null-rotation)
Q1: float32;
// True attitude quaternion component 2, x (0 in null-rotation)
Q2: float32;
// True attitude quaternion component 3, y (0 in null-rotation)
Q3: float32;
// True attitude quaternion component 4, z (0 in null-rotation)
Q4: float32;
// Attitude roll expressed as Euler angles, not recommended except for human-readable outputs
Roll: float32;
// Attitude pitch expressed as Euler angles, not recommended except for human-readable outputs
Pitch: float32;
// Attitude yaw expressed as Euler angles, not recommended except for human-readable outputs
Yaw: float32;
// X acceleration
Xacc: float32;
// Y acceleration
Yacc: float32;
// Z acceleration
Zacc: float32;
// Angular speed around X axis
Xgyro: float32;
// Angular speed around Y axis
Ygyro: float32;
// Angular speed around Z axis
Zgyro: float32;
// Latitude
Lat: float32;
// Longitude
Lon: float32;
// Altitude
Alt: float32;
// Horizontal position standard deviation
StdDevHorz: float32;
// Vertical position standard deviation
StdDevVert: float32;
// True velocity in north direction in earth-fixed NED frame
Vn: float32;
// True velocity in east direction in earth-fixed NED frame
Ve: float32;
// True velocity in down direction in earth-fixed NED frame
Vd: float32;
}
message struct SmartBatteryInfo extends MessageFrame {
// Battery ID
Id: uint8;
// Function of the battery
BatteryFunction: MavBatteryFunction;
// Type (chemistry) of the battery
Type: MavBatteryType;
// Capacity when full according to manufacturer, -1: field not provided.
CapacityFullSpecification: int32;
// Capacity when full (accounting for battery degradation), -1: field not provided.
CapacityFull: int32;
// Charge/discharge cycle count. UINT16_MAX: field not provided.
CycleCount: uint16;
// Serial number in ASCII characters, 0 terminated. All 0: field not provided.
@Length(16)
SerialNumber: string;
// Static device name in ASCII characters, 0 terminated. All 0: field not provided. Encode as manufacturer
// name then product name separated using an underscore.
@Length(50)
DeviceName: string;
// Battery weight. 0: field not provided.
Weight: uint16;
// Minimum per-cell voltage when discharging. If not supplied set to UINT16_MAX value.
DischargeMinimumVoltage: uint16;
// Minimum per-cell voltage when charging. If not supplied set to UINT16_MAX value.
ChargingMinimumVoltage: uint16;
// Minimum per-cell voltage when resting. If not supplied set to UINT16_MAX value.
RestingMinimumVoltage: uint16;
SmartBatteryInfo_extensions: Optional<SmartBatteryInfo_extension>;
}
struct SmartBatteryInfo_extension {
// Maximum per-cell voltage when charged. 0: field not provided.
ChargingMaximumVoltage: uint16;
// Number of battery cells in series. 0: field not provided.
CellsInSeries: uint8;
// Maximum pack discharge current. 0: field not provided.
DischargeMaximumCurrent: uint32;
// Maximum pack discharge burst current. 0: field not provided.
DischargeMaximumBurstCurrent: uint32;
// Manufacture date (DD/MM/YYYY) in ASCII characters, 0 terminated. All 0: field not provided.
@Length(11)
ManufactureDate: string;
}
message struct Statustext extends MessageFrame {
// Severity of status. Relies on the definitions within RFC-5424.
Severity: MavSeverity;
// Status text message, without null termination character
@Length(50)
Text: string;
Statustext_extensions: Optional<Statustext_extension>;
}
struct Statustext_extension {
// Unique (opaque) identifier for this statustext message. May be used to reassemble a logical long-statustext
// message from a sequence of chunks. A value of zero indicates this is the only chunk in the sequence and
// the message can be emitted immediately.
Id: uint16;
// This chunk's sequence number; indexing is from zero. Any null character in the text field is taken to
// mean this was the last chunk.
ChunkSeq: uint8;
}
message struct StorageInformation extends MessageFrame {
// Timestamp (time since system boot).
TimeBootMs: uint32;
// Storage ID (1 for first, 2 for second, etc.)
StorageId: uint8;
// Number of storage devices
StorageCount: uint8;
// Status of storage
Status: StorageStatus;
// Total capacity. If storage is not ready (STORAGE_STATUS_READY) value will be ignored.
TotalCapacity: float32;
// Used capacity. If storage is not ready (STORAGE_STATUS_READY) value will be ignored.
UsedCapacity: float32;
// Available storage capacity. If storage is not ready (STORAGE_STATUS_READY) value will be ignored.
AvailableCapacity: float32;
// Read speed.
ReadSpeed: float32;
// Write speed.
WriteSpeed: float32;
StorageInformation_extensions: Optional<StorageInformation_extension>;
}
struct StorageInformation_extension {
// Type of storage
Type: StorageType;
// Textual storage name to be used in UI (microSD 1, Internal Memory, etc.) This is a NULL terminated string.
// If it is exactly 32 characters long, add a terminating NULL. If this string is empty, the generic type
// is shown to the user.
@Length(32)
Name: string;
// Flags indicating whether this instance is preferred storage for photos, videos, etc. Note: Implementations
// should initially set the flags on the system-default storage id used for saving media (if possible/supported).
// This setting can then be overridden using MAV_CMD_SET_STORAGE_USAGE. If the media usage flags are not
// set, a GCS may assume storage ID 1 is the default storage for all media types.
StorageUsage: StorageUsageFlag;
}
message struct SupportedTunes extends MessageFrame {
// System ID
TargetSystem: uint8;
// Component ID
TargetComponent: uint8;
// Bitfield of supported tune formats.
Format: TuneFormatBitmask;
}
message struct SystemTime extends MessageFrame {
// Timestamp (UNIX epoch time).
TimeUnixUsec: uint64;
// Timestamp (time since system boot).
TimeBootMs: uint32;
}
message struct SysStatus extends MessageFrame {
// Bitmap showing which onboard controllers and sensors are present. Value of 0: not present. Value of 1:
// present.
OnboardControlSensorsPresent: MavSysStatusSensorBitmask;
// Bitmap showing which onboard controllers and sensors are enabled: Value of 0: not enabled. Value of 1:
// enabled.
OnboardControlSensorsEnabled: MavSysStatusSensorBitmask;
// Bitmap showing which onboard controllers and sensors have an error (or are operational). Value of 0: error.
// Value of 1: healthy.
OnboardControlSensorsHealth: MavSysStatusSensorBitmask;
// Maximum usage in percent of the mainloop time. Values: [0-1000] - should always be below 1000
Load: uint16;
// Battery voltage, UINT16_MAX: Voltage not sent by autopilot
VoltageBattery: uint16;
// Battery current, -1: Current not sent by autopilot
CurrentBattery: int16;
// Battery energy remaining, -1: Battery remaining energy not sent by autopilot
BatteryRemaining: int8;
// Communication drop rate, (UART, I2C, SPI, CAN), dropped packets on all links (packets that were corrupted
// on reception on the MAV)
DropRateComm: uint16;
// Communication errors (UART, I2C, SPI, CAN), dropped packets on all links (packets that were corrupted
// on reception on the MAV)
ErrorsComm: uint16;
// Autopilot-specific errors
ErrorsCount1: uint16;
// Autopilot-specific errors
ErrorsCount2: uint16;
// Autopilot-specific errors
ErrorsCount3: uint16;
// Autopilot-specific errors
ErrorsCount4: uint16;
SysStatus_extensions: Optional<SysStatus_extension>;
}
struct SysStatus_extension {
// Bitmap showing which onboard controllers and sensors are present. Value of 0: not present. Value of 1:
// present.
OnboardControlSensorsPresentExtended: MavSysStatusSensorExtendedBitmask;
// Bitmap showing which onboard controllers and sensors are enabled: Value of 0: not enabled. Value of 1:
// enabled.
OnboardControlSensorsEnabledExtended: MavSysStatusSensorExtendedBitmask;
// Bitmap showing which onboard controllers and sensors have an error (or are operational). Value of 0: error.
// Value of 1: healthy.
OnboardControlSensorsHealthExtended: MavSysStatusSensorExtendedBitmask;
}
message struct TerrainCheck extends MessageFrame {
// Latitude
Lat: int32;
// Longitude
Lon: int32;
}
message struct TerrainData extends MessageFrame {
// Latitude of SW corner of first grid
Lat: int32;
// Longitude of SW corner of first grid
Lon: int32;
// Grid spacing
GridSpacing: uint16;
// bit within the terrain request mask
Gridbit: uint8;
// Terrain data MSL
@Length(16)
Data: int16[];
}
message struct TerrainReport extends MessageFrame {
// Latitude
Lat: int32;
// Longitude
Lon: int32;
// grid spacing (zero if terrain at this location unavailable)
Spacing: uint16;
// Terrain height MSL
TerrainHeight: float32;
// Current vehicle height above lat/lon terrain height
CurrentHeight: float32;
// Number of 4x4 terrain blocks waiting to be received or read from disk
Pending: uint16;
// Number of 4x4 terrain blocks in memory
Loaded: uint16;
}
message struct TerrainRequest extends MessageFrame {
// Latitude of SW corner of first grid
Lat: int32;
// Longitude of SW corner of first grid
Lon: int32;
// Grid spacing
GridSpacing: uint16;
// Bitmask of requested 4x4 grids (row major 8x7 array of grids, 56 bits)
Mask: uint64;
}
message struct Timesync extends MessageFrame {
// Time sync timestamp 1
Tc1: int64;
// Time sync timestamp 2
Ts1: int64;
}
message struct TrajectoryRepresentationBezier extends MessageFrame {
// Timestamp (UNIX Epoch time or time since system boot). The receiving end can infer timestamp format (since
// 1.1.1970 or since system boot) by checking for the magnitude of the number.
TimeUsec: uint64;
// Number of valid control points (up-to 5 points are possible)
ValidPoints: uint8;
// X-coordinate of bezier control points. Set to NaN if not being used
@Length(5)
PosX: float32[];
// Y-coordinate of bezier control points. Set to NaN if not being used
@Length(5)
PosY: float32[];
// Z-coordinate of bezier control points. Set to NaN if not being used
@Length(5)
PosZ: float32[];
// Bezier time horizon. Set to NaN if velocity/acceleration should not be incorporated
@Length(5)
Delta: float32[];
// Yaw. Set to NaN for unchanged
@Length(5)
PosYaw: float32[];
}
message struct TrajectoryRepresentationWaypoints extends MessageFrame {
// Timestamp (UNIX Epoch time or time since system boot). The receiving end can infer timestamp format (since
// 1.1.1970 or since system boot) by checking for the magnitude of the number.
TimeUsec: uint64;
// Number of valid points (up-to 5 waypoints are possible)
ValidPoints: uint8;
// X-coordinate of waypoint, set to NaN if not being used
@Length(5)
PosX: float32[];
// Y-coordinate of waypoint, set to NaN if not being used
@Length(5)
PosY: float32[];
// Z-coordinate of waypoint, set to NaN if not being used
@Length(5)
PosZ: float32[];
// X-velocity of waypoint, set to NaN if not being used
@Length(5)
VelX: float32[];
// Y-velocity of waypoint, set to NaN if not being used
@Length(5)
VelY: float32[];
// Z-velocity of waypoint, set to NaN if not being used
@Length(5)
VelZ: float32[];
// X-acceleration of waypoint, set to NaN if not being used
@Length(5)
AccX: float32[];
// Y-acceleration of waypoint, set to NaN if not being used
@Length(5)
AccY: float32[];
// Z-acceleration of waypoint, set to NaN if not being used
@Length(5)
AccZ: float32[];
// Yaw angle, set to NaN if not being used
@Length(5)
PosYaw: float32[];
// Yaw rate, set to NaN if not being used
@Length(5)
VelYaw: float32[];
// MAV_CMD command id of waypoint, set to UINT16_MAX if not being used.
Command: MavCmd_ID;
}
message struct Tunnel extends MessageFrame {
// System ID (can be 0 for broadcast, but this is discouraged)
TargetSystem: uint8;
// Component ID (can be 0 for broadcast, but this is discouraged)
TargetComponent: uint8;
// A code that identifies the content of the payload (0 for unknown, which is the default). If this code
// is less than 32768, it is a 'registered' payload type and the corresponding code should be added to the
// MAV_TUNNEL_PAYLOAD_TYPE enum. Software creators can register blocks of types as needed. Codes greater
// than 32767 are considered local experiments and should not be checked in to any widely distributed codebase.
PayloadType: MavTunnelPayloadType;
// Length of the data transported in payload
PayloadLength: uint8;
// Variable length payload. The payload length is defined by payload_length. The entire content of this block
// is opaque unless you understand the encoding specified by payload_type.
@Length(128)
Payload: uint8[];
}
message struct UavcanNodeInfo extends MessageFrame {
// Timestamp (UNIX Epoch time or time since system boot). The receiving end can infer timestamp format (since
// 1.1.1970 or since system boot) by checking for the magnitude of the number.
TimeUsec: uint64;
// Time since the start-up of the node.
UptimeSec: uint32;
// Node name string. For example, "sapog.px4.io".
@Length(80)
Name: string;
// Hardware major version number.
HwVersionMajor: uint8;
// Hardware minor version number.
HwVersionMinor: uint8;
// Hardware unique 128-bit ID.
@Length(16)
HwUniqueId: uint8[];
// Software major version number.
SwVersionMajor: uint8;
// Software minor version number.
SwVersionMinor: uint8;
// Version control system (VCS) revision identifier (e.g. git short commit hash). 0 if unknown.
SwVcsCommit: uint32;
}
message struct UavcanNodeStatus extends MessageFrame {
// Timestamp (UNIX Epoch time or time since system boot). The receiving end can infer timestamp format (since
// 1.1.1970 or since system boot) by checking for the magnitude of the number.
TimeUsec: uint64;
// Time since the start-up of the node.
UptimeSec: uint32;
// Generalized node health status.
Health: UavcanNodeHealth;
// Generalized operating mode.
Mode: UavcanNodeMode;
// Not used currently.
SubMode: uint8;
// Vendor-specific status information.
VendorSpecificStatusCode: uint16;
}
message struct UtmGlobalPosition extends MessageFrame {
// Time of applicability of position (microseconds since UNIX epoch).
Time: uint64;
// Unique UAS ID.
@Length(18)
UasId: uint8[];
// Latitude (WGS84)
Lat: int32;
// Longitude (WGS84)
Lon: int32;
// Altitude (WGS84)
Alt: int32;
// Altitude above ground
RelativeAlt: int32;
// Ground X speed (latitude, positive north)
Vx: int16;
// Ground Y speed (longitude, positive east)
Vy: int16;
// Ground Z speed (altitude, positive down)
Vz: int16;
// Horizontal position uncertainty (standard deviation)
HAcc: uint16;
// Altitude uncertainty (standard deviation)
VAcc: uint16;
// Speed uncertainty (standard deviation)
VelAcc: uint16;
// Next waypoint, latitude (WGS84)
NextLat: int32;
// Next waypoint, longitude (WGS84)
NextLon: int32;
// Next waypoint, altitude (WGS84)
NextAlt: int32;
// Time until next update. Set to 0 if unknown or in data driven mode.
UpdateRate: uint16;
// Flight state
FlightState: UtmFlightState;
// Bitwise OR combination of the data available flags.
Flags: UtmDataAvailFlagsBitmask;
}
message struct V2Extension extends MessageFrame {
// Network ID (0 for broadcast)
TargetNetwork: uint8;
// System ID (0 for broadcast)
TargetSystem: uint8;
// Component ID (0 for broadcast)
TargetComponent: uint8;
// A code that identifies the software component that understands this message (analogous to USB device classes
// or mime type strings). If this code is less than 32768, it is considered a 'registered' protocol extension
// and the corresponding entry should be added to https://github.com/mavlink/mavlink/definition_files/extension_message_ids.xml.
// Software creators can register blocks of message IDs as needed (useful for GCS specific metadata, etc...).
// Message_types greater than 32767 are considered local experiments and should not be checked in to any
// widely distributed codebase.
MessageType: uint16;
// Variable length payload. The length must be encoded in the payload as part of the message_type protocol,
// e.g. by including the length as payload data, or by terminating the payload data with a non-zero marker.
// This is required in order to reconstruct zero-terminated payloads that are (or otherwise would be) trimmed
// by MAVLink 2 empty-byte truncation. The entire content of the payload block is opaque unless you understand
// the encoding message_type. The particular encoding used can be extension specific and might not always
// be documented as part of the MAVLink specification.
@Length(249)
Payload: uint8[];
}
message struct VfrHud extends MessageFrame {
// Vehicle speed in form appropriate for vehicle type. For standard aircraft this is typically calibrated
// airspeed (CAS) or indicated airspeed (IAS) - either of which can be used by a pilot to estimate stall
// speed.
Airspeed: float32;
// Current ground speed.
Groundspeed: float32;
// Current heading in compass units (0-360, 0=north).
Heading: int16;
// Current throttle setting (0 to 100).
Throttle: uint16;
// Current altitude (MSL).
Alt: float32;
// Current climb rate.
Climb: float32;
}
message struct Vibration extends MessageFrame {
// Timestamp (UNIX Epoch time or time since system boot). The receiving end can infer timestamp format (since
// 1.1.1970 or since system boot) by checking for the magnitude of the number.
TimeUsec: uint64;
// Vibration levels on X-axis
VibrationX: float32;
// Vibration levels on Y-axis
VibrationY: float32;
// Vibration levels on Z-axis
VibrationZ: float32;
// first accelerometer clipping count
Clipping0: uint32;
// second accelerometer clipping count
Clipping1: uint32;
// third accelerometer clipping count
Clipping2: uint32;
}
message struct ViconPositionEstimate extends MessageFrame {
// Timestamp (UNIX time or time since system boot)
Usec: uint64;
// Global X position
X: float32;
// Global Y position
Y: float32;
// Global Z position
Z: float32;
// Roll angle
Roll: float32;
// Pitch angle
Pitch: float32;
// Yaw angle
Yaw: float32;
ViconPositionEstimate_extensions: Optional<ViconPositionEstimate_extension>;
}
struct ViconPositionEstimate_extension {
// Row-major representation of 6x6 pose cross-covariance matrix upper right triangle (states: x, y, z, roll,
// pitch, yaw; first six entries are the first ROW, next five entries are the second ROW, etc.). If unknown,
// assign NaN value to first element in the array.
@Length(21)
Covariance: float32[];
}
message struct VideoStreamInformation extends MessageFrame {
// Video Stream ID (1 for first, 2 for second, etc.)
StreamId: uint8;
// Number of streams available.
Count: uint8;
// Type of stream.
Type: VideoStreamType;
// Bitmap of stream status flags.
Flags: VideoStreamStatusFlagsBitmask;
// Frame rate.
Framerate: float32;
// Horizontal resolution.
ResolutionH: uint16;
// Vertical resolution.
ResolutionV: uint16;
// Bit rate.
RateBit: uint32;
// Video image rotation clockwise.
Rotation: uint16;
// Horizontal Field of view.
Hfov: uint16;
// Stream name.
@Length(32)
Name: string;
// Video stream URI (TCP or RTSP URI ground station should connect to) or port number (UDP port ground station
// should listen to).
@Length(160)
Uri: string;
}
message struct VideoStreamStatus extends MessageFrame {
// Video Stream ID (1 for first, 2 for second, etc.)
StreamId: uint8;
// Bitmap of stream status flags
Flags: VideoStreamStatusFlagsBitmask;
// Frame rate
Framerate: float32;
// Horizontal resolution
ResolutionH: uint16;
// Vertical resolution
ResolutionV: uint16;
// Bit rate
RateBit: uint32;
// Video image rotation clockwise
Rotation: uint16;
// Horizontal Field of view
Hfov: uint16;
}
message struct VisionPositionEstimate extends MessageFrame {
// Timestamp (UNIX time or time since system boot)
Usec: uint64;
// Local X position
X: float32;
// Local Y position
Y: float32;
// Local Z position
Z: float32;
// Roll angle
Roll: float32;
// Pitch angle
Pitch: float32;
// Yaw angle
Yaw: float32;
VisionPositionEstimate_extensions: Optional<VisionPositionEstimate_extension>;
}
struct VisionPositionEstimate_extension {
// Row-major representation of pose 6x6 cross-covariance matrix upper right triangle (states: x, y, z, roll,
// pitch, yaw; first six entries are the first ROW, next five entries are the second ROW, etc.). If unknown,
// assign NaN value to first element in the array.
@Length(21)
Covariance: float32[];
// Estimate reset counter. This should be incremented when the estimate resets in any of the dimensions (position,
// velocity, attitude, angular speed). This is designed to be used when e.g an external SLAM system detects
// a loop-closure and the estimate jumps.
ResetCounter: uint8;
}
message struct VisionSpeedEstimate extends MessageFrame {
// Timestamp (UNIX time or time since system boot)
Usec: uint64;
// Global X speed
X: float32;
// Global Y speed
Y: float32;
// Global Z speed
Z: float32;
VisionSpeedEstimate_extensions: Optional<VisionSpeedEstimate_extension>;
}
struct VisionSpeedEstimate_extension {
// Row-major representation of 3x3 linear velocity covariance matrix (states: vx, vy, vz; 1st three entries
// - 1st row, etc.). If unknown, assign NaN value to first element in the array.
@Length(9)
Covariance: float32[];
// Estimate reset counter. This should be incremented when the estimate resets in any of the dimensions (position,
// velocity, attitude, angular speed). This is designed to be used when e.g an external SLAM system detects
// a loop-closure and the estimate jumps.
ResetCounter: uint8;
}
message struct WheelDistance extends MessageFrame {
// Timestamp (synced to UNIX time or since system boot).
TimeUsec: uint64;
// Number of wheels reported.
Count: uint8;
// Distance reported by individual wheel encoders. Forward rotations increase values, reverse rotations decrease
// them. Not all wheels will necessarily have wheel encoders; the mapping of encoders to wheel positions
// must be agreed/understood by the endpoints.
@Length(16)
Distance: float64[];
}
message struct WifiConfigAp extends MessageFrame {
// Name of Wi-Fi network (SSID). Blank to leave it unchanged when setting. Current SSID when sent back as
// a response.
@Length(32)
Ssid: string;
// Password. Blank for an open AP. MD5 hash when message is sent back as a response.
@Length(64)
Password: string;
WifiConfigAp_extensions: Optional<WifiConfigAp_extension>;
}
struct WifiConfigAp_extension {
// WiFi Mode.
Mode: WifiConfigApMode;
// Message acceptance response (sent back to GS).
Response: WifiConfigApResponse;
}
message struct WinchStatus extends MessageFrame {
// Timestamp (synced to UNIX time or since system boot).
TimeUsec: uint64;
// Length of line released. NaN if unknown
LineLength: float32;
// Speed line is being released or retracted. Positive values if being released, negative values if being
// retracted, NaN if unknown
Speed: float32;
// Tension on the line. NaN if unknown
Tension: float32;
// Voltage of the battery supplying the winch. NaN if unknown
Voltage: float32;
// Current draw from the winch. NaN if unknown
Current: float32;
// Temperature of the motor. INT16_MAX if unknown
Temperature: int16;
// Status flags
Status: MavWinchStatusFlagBitmask;
}
message struct WindCov extends MessageFrame {
// Timestamp (UNIX Epoch time or time since system boot). The receiving end can infer timestamp format (since
// 1.1.1970 or since system boot) by checking for the magnitude of the number.
TimeUsec: uint64;
// Wind in X (NED) direction
WindX: float32;
// Wind in Y (NED) direction
WindY: float32;
// Wind in Z (NED) direction
WindZ: float32;
// Variability of the wind in XY. RMS of a 1 Hz lowpassed wind estimate.
VarHoriz: float32;
// Variability of the wind in Z. RMS of a 1 Hz lowpassed wind estimate.
VarVert: float32;
// Altitude (MSL) that this measurement was taken at
WindAlt: float32;
// Horizontal speed 1-STD accuracy
HorizAccuracy: float32;
// Vertical speed 1-STD accuracy
VertAccuracy: float32;
}
message variant MavCmd {
MavCmdNavWaypoint(MavCmdNavWaypoint);
MavCmdNavLoiterUnlim(MavCmdNavLoiterUnlim);
MavCmdNavLoiterTurns(MavCmdNavLoiterTurns);
MavCmdNavLoiterTime(MavCmdNavLoiterTime);
MavCmdNavReturnToLaunch(MavCmdNavReturnToLaunch);
MavCmdNavLand(MavCmdNavLand);
MavCmdNavTakeoff(MavCmdNavTakeoff);
MavCmdNavLandLocal(MavCmdNavLandLocal);
MavCmdNavTakeoffLocal(MavCmdNavTakeoffLocal);
MavCmdNavFollow(MavCmdNavFollow);
MavCmdNavContinueAndChangeAlt(MavCmdNavContinueAndChangeAlt);
MavCmdNavLoiterToAlt(MavCmdNavLoiterToAlt);
MavCmdDoFollow(MavCmdDoFollow);
MavCmdDoFollowReposition(MavCmdDoFollowReposition);
MavCmdDoOrbit(MavCmdDoOrbit);
MavCmdNavRoi(MavCmdNavRoi);
MavCmdNavPathplanning(MavCmdNavPathplanning);
MavCmdNavSplineWaypoint(MavCmdNavSplineWaypoint);
MavCmdNavVtolTakeoff(MavCmdNavVtolTakeoff);
MavCmdNavVtolLand(MavCmdNavVtolLand);
MavCmdNavGuidedEnable(MavCmdNavGuidedEnable);
MavCmdNavDelay(MavCmdNavDelay);
MavCmdNavPayloadPlace(MavCmdNavPayloadPlace);
MavCmdNavLast(MavCmdNavLast);
MavCmdConditionDelay(MavCmdConditionDelay);
MavCmdConditionChangeAlt(MavCmdConditionChangeAlt);
MavCmdConditionDistance(MavCmdConditionDistance);
MavCmdConditionYaw(MavCmdConditionYaw);
MavCmdConditionLast(MavCmdConditionLast);
MavCmdDoSetMode(MavCmdDoSetMode);
MavCmdDoJump(MavCmdDoJump);
MavCmdDoChangeSpeed(MavCmdDoChangeSpeed);
MavCmdDoSetHome(MavCmdDoSetHome);
MavCmdDoSetParameter(MavCmdDoSetParameter);
MavCmdDoSetRelay(MavCmdDoSetRelay);
MavCmdDoRepeatRelay(MavCmdDoRepeatRelay);
MavCmdDoSetServo(MavCmdDoSetServo);
MavCmdDoRepeatServo(MavCmdDoRepeatServo);
MavCmdDoFlighttermination(MavCmdDoFlighttermination);
MavCmdDoChangeAltitude(MavCmdDoChangeAltitude);
MavCmdDoSetActuator(MavCmdDoSetActuator);
MavCmdDoLandStart(MavCmdDoLandStart);
MavCmdDoRallyLand(MavCmdDoRallyLand);
MavCmdDoGoAround(MavCmdDoGoAround);
MavCmdDoReposition(MavCmdDoReposition);
MavCmdDoPauseContinue(MavCmdDoPauseContinue);
MavCmdDoSetReverse(MavCmdDoSetReverse);
MavCmdDoSetRoiLocation(MavCmdDoSetRoiLocation);
MavCmdDoSetRoiWpnextOffset(MavCmdDoSetRoiWpnextOffset);
MavCmdDoSetRoiNone(MavCmdDoSetRoiNone);
MavCmdDoSetRoiSysid(MavCmdDoSetRoiSysid);
MavCmdDoControlVideo(MavCmdDoControlVideo);
MavCmdDoSetRoi(MavCmdDoSetRoi);
MavCmdDoDigicamConfigure(MavCmdDoDigicamConfigure);
MavCmdDoDigicamControl(MavCmdDoDigicamControl);
MavCmdDoMountConfigure(MavCmdDoMountConfigure);
MavCmdDoMountControl(MavCmdDoMountControl);
MavCmdDoSetCamTriggDist(MavCmdDoSetCamTriggDist);
MavCmdDoFenceEnable(MavCmdDoFenceEnable);
MavCmdDoParachute(MavCmdDoParachute);
MavCmdDoMotorTest(MavCmdDoMotorTest);
MavCmdDoInvertedFlight(MavCmdDoInvertedFlight);
MavCmdDoGripper(MavCmdDoGripper);
MavCmdDoAutotuneEnable(MavCmdDoAutotuneEnable);
MavCmdNavSetYawSpeed(MavCmdNavSetYawSpeed);
MavCmdDoSetCamTriggInterval(MavCmdDoSetCamTriggInterval);
MavCmdDoMountControlQuat(MavCmdDoMountControlQuat);
MavCmdDoGuidedMaster(MavCmdDoGuidedMaster);
MavCmdDoGuidedLimits(MavCmdDoGuidedLimits);
MavCmdDoEngineControl(MavCmdDoEngineControl);
MavCmdDoSetMissionCurrent(MavCmdDoSetMissionCurrent);
MavCmdDoLast(MavCmdDoLast);
MavCmdPreflightCalibration(MavCmdPreflightCalibration);
MavCmdPreflightSetSensorOffsets(MavCmdPreflightSetSensorOffsets);
MavCmdPreflightUavcan(MavCmdPreflightUavcan);
MavCmdPreflightStorage(MavCmdPreflightStorage);
MavCmdPreflightRebootShutdown(MavCmdPreflightRebootShutdown);
MavCmdOverrideGoto(MavCmdOverrideGoto);
MavCmdObliqueSurvey(MavCmdObliqueSurvey);
MavCmdMissionStart(MavCmdMissionStart);
MavCmdActuatorTest(MavCmdActuatorTest);
MavCmdConfigureActuator(MavCmdConfigureActuator);
MavCmdComponentArmDisarm(MavCmdComponentArmDisarm);
MavCmdRunPrearmChecks(MavCmdRunPrearmChecks);
MavCmdIlluminatorOnOff(MavCmdIlluminatorOnOff);
MavCmdGetHomePosition(MavCmdGetHomePosition);
MavCmdInjectFailure(MavCmdInjectFailure);
MavCmdStartRxPair(MavCmdStartRxPair);
MavCmdGetMessageInterval(MavCmdGetMessageInterval);
MavCmdSetMessageInterval(MavCmdSetMessageInterval);
MavCmdRequestMessage(MavCmdRequestMessage);
MavCmdRequestProtocolVersion(MavCmdRequestProtocolVersion);
MavCmdRequestAutopilotCapabilities(MavCmdRequestAutopilotCapabilities);
MavCmdRequestCameraInformation(MavCmdRequestCameraInformation);
MavCmdRequestCameraSettings(MavCmdRequestCameraSettings);
MavCmdRequestStorageInformation(MavCmdRequestStorageInformation);
MavCmdStorageFormat(MavCmdStorageFormat);
MavCmdRequestCameraCaptureStatus(MavCmdRequestCameraCaptureStatus);
MavCmdRequestFlightInformation(MavCmdRequestFlightInformation);
MavCmdResetCameraSettings(MavCmdResetCameraSettings);
MavCmdSetCameraMode(MavCmdSetCameraMode);
MavCmdSetCameraZoom(MavCmdSetCameraZoom);
MavCmdSetCameraFocus(MavCmdSetCameraFocus);
MavCmdSetStorageUsage(MavCmdSetStorageUsage);
MavCmdJumpTag(MavCmdJumpTag);
MavCmdDoJumpTag(MavCmdDoJumpTag);
MavCmdDoGimbalManagerPitchyaw(MavCmdDoGimbalManagerPitchyaw);
MavCmdDoGimbalManagerConfigure(MavCmdDoGimbalManagerConfigure);
MavCmdImageStartCapture(MavCmdImageStartCapture);
MavCmdImageStopCapture(MavCmdImageStopCapture);
MavCmdRequestCameraImageCapture(MavCmdRequestCameraImageCapture);
MavCmdDoTriggerControl(MavCmdDoTriggerControl);
MavCmdCameraTrackPoint(MavCmdCameraTrackPoint);
MavCmdCameraTrackRectangle(MavCmdCameraTrackRectangle);
MavCmdCameraStopTracking(MavCmdCameraStopTracking);
MavCmdVideoStartCapture(MavCmdVideoStartCapture);
MavCmdVideoStopCapture(MavCmdVideoStopCapture);
MavCmdVideoStartStreaming(MavCmdVideoStartStreaming);
MavCmdVideoStopStreaming(MavCmdVideoStopStreaming);
MavCmdRequestVideoStreamInformation(MavCmdRequestVideoStreamInformation);
MavCmdRequestVideoStreamStatus(MavCmdRequestVideoStreamStatus);
MavCmdLoggingStart(MavCmdLoggingStart);
MavCmdLoggingStop(MavCmdLoggingStop);
MavCmdAirframeConfiguration(MavCmdAirframeConfiguration);
MavCmdControlHighLatency(MavCmdControlHighLatency);
MavCmdPanoramaCreate(MavCmdPanoramaCreate);
MavCmdDoVtolTransition(MavCmdDoVtolTransition);
MavCmdArmAuthorizationRequest(MavCmdArmAuthorizationRequest);
MavCmdSetGuidedSubmodeStandard(MavCmdSetGuidedSubmodeStandard);
MavCmdSetGuidedSubmodeCircle(MavCmdSetGuidedSubmodeCircle);
MavCmdConditionGate(MavCmdConditionGate);
MavCmdNavFenceReturnPoint(MavCmdNavFenceReturnPoint);
MavCmdNavFencePolygonVertexInclusion(MavCmdNavFencePolygonVertexInclusion);
MavCmdNavFencePolygonVertexExclusion(MavCmdNavFencePolygonVertexExclusion);
MavCmdNavFenceCircleInclusion(MavCmdNavFenceCircleInclusion);
MavCmdNavFenceCircleExclusion(MavCmdNavFenceCircleExclusion);
MavCmdNavRallyPoint(MavCmdNavRallyPoint);
MavCmdUavcanGetNodeInfo(MavCmdUavcanGetNodeInfo);
MavCmdDoAdsbOutIdent(MavCmdDoAdsbOutIdent);
MavCmdPayloadPrepareDeploy(MavCmdPayloadPrepareDeploy);
MavCmdPayloadControlDeploy(MavCmdPayloadControlDeploy);
MavCmdFixedMagCalYaw(MavCmdFixedMagCalYaw);
MavCmdDoWinch(MavCmdDoWinch);
MavCmdWaypointUser1(MavCmdWaypointUser1);
MavCmdWaypointUser2(MavCmdWaypointUser2);
MavCmdWaypointUser3(MavCmdWaypointUser3);
MavCmdWaypointUser4(MavCmdWaypointUser4);
MavCmdWaypointUser5(MavCmdWaypointUser5);
MavCmdSpatialUser1(MavCmdSpatialUser1);
MavCmdSpatialUser2(MavCmdSpatialUser2);
MavCmdSpatialUser3(MavCmdSpatialUser3);
MavCmdSpatialUser4(MavCmdSpatialUser4);
MavCmdSpatialUser5(MavCmdSpatialUser5);
MavCmdUser1(MavCmdUser1);
MavCmdUser2(MavCmdUser2);
MavCmdUser3(MavCmdUser3);
MavCmdUser4(MavCmdUser4);
MavCmdUser5(MavCmdUser5);
}
enum MavCmd_ID uint16 {
MavCmdNavWaypoint = 16;
MavCmdNavLoiterUnlim = 17;
MavCmdNavLoiterTurns = 18;
MavCmdNavLoiterTime = 19;
MavCmdNavReturnToLaunch = 20;
MavCmdNavLand = 21;
MavCmdNavTakeoff = 22;
MavCmdNavLandLocal = 23;
MavCmdNavTakeoffLocal = 24;
MavCmdNavFollow = 25;
MavCmdNavContinueAndChangeAlt = 30;
MavCmdNavLoiterToAlt = 31;
MavCmdDoFollow = 32;
MavCmdDoFollowReposition = 33;
MavCmdDoOrbit = 34;
MavCmdNavRoi = 80;
MavCmdNavPathplanning = 81;
MavCmdNavSplineWaypoint = 82;
MavCmdNavVtolTakeoff = 84;
MavCmdNavVtolLand = 85;
MavCmdNavGuidedEnable = 92;
MavCmdNavDelay = 93;
MavCmdNavPayloadPlace = 94;
MavCmdNavLast = 95;
MavCmdConditionDelay = 112;
MavCmdConditionChangeAlt = 113;
MavCmdConditionDistance = 114;
MavCmdConditionYaw = 115;
MavCmdConditionLast = 159;
MavCmdDoSetMode = 176;
MavCmdDoJump = 177;
MavCmdDoChangeSpeed = 178;
MavCmdDoSetHome = 179;
MavCmdDoSetParameter = 180;
MavCmdDoSetRelay = 181;
MavCmdDoRepeatRelay = 182;
MavCmdDoSetServo = 183;
MavCmdDoRepeatServo = 184;
MavCmdDoFlighttermination = 185;
MavCmdDoChangeAltitude = 186;
MavCmdDoSetActuator = 187;
MavCmdDoLandStart = 189;
MavCmdDoRallyLand = 190;
MavCmdDoGoAround = 191;
MavCmdDoReposition = 192;
MavCmdDoPauseContinue = 193;
MavCmdDoSetReverse = 194;
MavCmdDoSetRoiLocation = 195;
MavCmdDoSetRoiWpnextOffset = 196;
MavCmdDoSetRoiNone = 197;
MavCmdDoSetRoiSysid = 198;
MavCmdDoControlVideo = 200;
MavCmdDoSetRoi = 201;
MavCmdDoDigicamConfigure = 202;
MavCmdDoDigicamControl = 203;
MavCmdDoMountConfigure = 204;
MavCmdDoMountControl = 205;
MavCmdDoSetCamTriggDist = 206;
MavCmdDoFenceEnable = 207;
MavCmdDoParachute = 208;
MavCmdDoMotorTest = 209;
MavCmdDoInvertedFlight = 210;
MavCmdDoGripper = 211;
MavCmdDoAutotuneEnable = 212;
MavCmdNavSetYawSpeed = 213;
MavCmdDoSetCamTriggInterval = 214;
MavCmdDoMountControlQuat = 220;
MavCmdDoGuidedMaster = 221;
MavCmdDoGuidedLimits = 222;
MavCmdDoEngineControl = 223;
MavCmdDoSetMissionCurrent = 224;
MavCmdDoLast = 240;
MavCmdPreflightCalibration = 241;
MavCmdPreflightSetSensorOffsets = 242;
MavCmdPreflightUavcan = 243;
MavCmdPreflightStorage = 245;
MavCmdPreflightRebootShutdown = 246;
MavCmdOverrideGoto = 252;
MavCmdObliqueSurvey = 260;
MavCmdMissionStart = 300;
MavCmdActuatorTest = 310;
MavCmdConfigureActuator = 311;
MavCmdComponentArmDisarm = 400;
MavCmdRunPrearmChecks = 401;
MavCmdIlluminatorOnOff = 405;
MavCmdGetHomePosition = 410;
MavCmdInjectFailure = 420;
MavCmdStartRxPair = 500;
MavCmdGetMessageInterval = 510;
MavCmdSetMessageInterval = 511;
MavCmdRequestMessage = 512;
MavCmdRequestProtocolVersion = 519;
MavCmdRequestAutopilotCapabilities = 520;
MavCmdRequestCameraInformation = 521;
MavCmdRequestCameraSettings = 522;
MavCmdRequestStorageInformation = 525;
MavCmdStorageFormat = 526;
MavCmdRequestCameraCaptureStatus = 527;
MavCmdRequestFlightInformation = 528;
MavCmdResetCameraSettings = 529;
MavCmdSetCameraMode = 530;
MavCmdSetCameraZoom = 531;
MavCmdSetCameraFocus = 532;
MavCmdSetStorageUsage = 533;
MavCmdJumpTag = 600;
MavCmdDoJumpTag = 601;
MavCmdDoGimbalManagerPitchyaw = 1000;
MavCmdDoGimbalManagerConfigure = 1001;
MavCmdImageStartCapture = 2000;
MavCmdImageStopCapture = 2001;
MavCmdRequestCameraImageCapture = 2002;
MavCmdDoTriggerControl = 2003;
MavCmdCameraTrackPoint = 2004;
MavCmdCameraTrackRectangle = 2005;
MavCmdCameraStopTracking = 2010;
MavCmdVideoStartCapture = 2500;
MavCmdVideoStopCapture = 2501;
MavCmdVideoStartStreaming = 2502;
MavCmdVideoStopStreaming = 2503;
MavCmdRequestVideoStreamInformation = 2504;
MavCmdRequestVideoStreamStatus = 2505;
MavCmdLoggingStart = 2510;
MavCmdLoggingStop = 2511;
MavCmdAirframeConfiguration = 2520;
MavCmdControlHighLatency = 2600;
MavCmdPanoramaCreate = 2800;
MavCmdDoVtolTransition = 3000;
MavCmdArmAuthorizationRequest = 3001;
MavCmdSetGuidedSubmodeStandard = 4000;
MavCmdSetGuidedSubmodeCircle = 4001;
MavCmdConditionGate = 4501;
MavCmdNavFenceReturnPoint = 5000;
MavCmdNavFencePolygonVertexInclusion = 5001;
MavCmdNavFencePolygonVertexExclusion = 5002;
MavCmdNavFenceCircleInclusion = 5003;
MavCmdNavFenceCircleExclusion = 5004;
MavCmdNavRallyPoint = 5100;
MavCmdUavcanGetNodeInfo = 5200;
MavCmdDoAdsbOutIdent = 10001;
MavCmdPayloadPrepareDeploy = 30001;
MavCmdPayloadControlDeploy = 30002;
MavCmdFixedMagCalYaw = 42006;
MavCmdDoWinch = 42600;
MavCmdWaypointUser1 = 31000;
MavCmdWaypointUser2 = 31001;
MavCmdWaypointUser3 = 31002;
MavCmdWaypointUser4 = 31003;
MavCmdWaypointUser5 = 31004;
MavCmdSpatialUser1 = 31005;
MavCmdSpatialUser2 = 31006;
MavCmdSpatialUser3 = 31007;
MavCmdSpatialUser4 = 31008;
MavCmdSpatialUser5 = 31009;
MavCmdUser1 = 31010;
MavCmdUser2 = 31011;
MavCmdUser3 = 31012;
MavCmdUser4 = 31013;
MavCmdUser5 = 31014;
}
struct AdsbFlagsBitmask {
AdsbFlagsBitmaskFieldSet: AdsbFlags[];
}
struct AisFlagsBitmask {
AisFlagsBitmaskFieldSet: AisFlags[];
}
struct AttitudeTargetTypemaskBitmask {
AttitudeTargetTypemaskBitmaskFieldSet: AttitudeTargetTypemask[];
}
struct AutotuneAxisBitmask {
AutotuneAxisBitmaskFieldSet: AutotuneAxis[];
}
struct CameraCapFlagsBitmask {
CameraCapFlagsBitmaskFieldSet: CameraCapFlags[];
}
struct CameraTrackingTargetDataBitmask {
CameraTrackingTargetDataBitmaskFieldSet: CameraTrackingTargetData[];
}
struct EscFailureFlagsBitmask {
EscFailureFlagsBitmaskFieldSet: EscFailureFlags[];
}
struct EstimatorStatusFlagsBitmask {
EstimatorStatusFlagsBitmaskFieldSet: EstimatorStatusFlags[];
}
struct GimbalDeviceCapFlagsBitmask {
GimbalDeviceCapFlagsBitmaskFieldSet: GimbalDeviceCapFlags[];
}
struct GimbalDeviceErrorFlagsBitmask {
GimbalDeviceErrorFlagsBitmaskFieldSet: GimbalDeviceErrorFlags[];
}
struct GimbalDeviceFlagsBitmask {
GimbalDeviceFlagsBitmaskFieldSet: GimbalDeviceFlags[];
}
struct GimbalManagerCapFlagsBitmask {
GimbalManagerCapFlagsBitmaskFieldSet: GimbalManagerCapFlags[];
}
struct GimbalManagerFlagsBitmask {
GimbalManagerFlagsBitmaskFieldSet: GimbalManagerFlags[];
}
struct GpsInputIgnoreFlagsBitmask {
GpsInputIgnoreFlagsBitmaskFieldSet: GpsInputIgnoreFlags[];
}
struct HighresImuUpdatedFlagsBitmask {
HighresImuUpdatedFlagsBitmaskFieldSet: HighresImuUpdatedFlags[];
}
struct HilSensorUpdatedFlagsBitmask {
HilSensorUpdatedFlagsBitmaskFieldSet: HilSensorUpdatedFlags[];
}
struct HlFailureFlagBitmask {
HlFailureFlagBitmaskFieldSet: HlFailureFlag[];
}
struct MavBatteryFaultBitmask {
MavBatteryFaultBitmaskFieldSet: MavBatteryFault[];
}
struct MavDoRepositionFlagsBitmask {
MavDoRepositionFlagsBitmaskFieldSet: MavDoRepositionFlags[];
}
struct MavEventCurrentSequenceFlagsBitmask {
MavEventCurrentSequenceFlagsBitmaskFieldSet: MavEventCurrentSequenceFlags[];
}
struct MavGeneratorStatusFlagBitmask {
MavGeneratorStatusFlagBitmaskFieldSet: MavGeneratorStatusFlag[];
}
struct MavPowerStatusBitmask {
MavPowerStatusBitmaskFieldSet: MavPowerStatus[];
}
struct MavProtocolCapabilityBitmask {
MavProtocolCapabilityBitmaskFieldSet: MavProtocolCapability[];
}
struct MavSysStatusSensorBitmask {
MavSysStatusSensorBitmaskFieldSet: MavSysStatusSensor[];
}
struct MavSysStatusSensorExtendedBitmask {
MavSysStatusSensorExtendedBitmaskFieldSet: MavSysStatusSensorExtended[];
}
struct MavWinchStatusFlagBitmask {
MavWinchStatusFlagBitmaskFieldSet: MavWinchStatusFlag[];
}
struct PositionTargetTypemaskBitmask {
PositionTargetTypemaskBitmaskFieldSet: PositionTargetTypemask[];
}
struct SerialControlFlagBitmask {
SerialControlFlagBitmaskFieldSet: SerialControlFlag[];
}
struct TuneFormatBitmask {
TuneFormatBitmaskFieldSet: TuneFormat[];
}
struct UtmDataAvailFlagsBitmask {
UtmDataAvailFlagsBitmaskFieldSet: UtmDataAvailFlags[];
}
struct VideoStreamStatusFlagsBitmask {
VideoStreamStatusFlagsBitmaskFieldSet: VideoStreamStatusFlags[];
}