299 struct sensorInfo_s {
304 static const sensorInfo_s rgSensorInfo[] = {
305 { MAV_SYS_STATUS_SENSOR_3D_GYRO, QT_TRANSLATE_NOOP(
"MAVLink SYS_STATUS_SENSOR value",
"Gyro") },
306 { MAV_SYS_STATUS_SENSOR_3D_ACCEL, QT_TRANSLATE_NOOP(
"MAVLink SYS_STATUS_SENSOR value",
"Accelerometer") },
307 { MAV_SYS_STATUS_SENSOR_3D_MAG, QT_TRANSLATE_NOOP(
"MAVLink SYS_STATUS_SENSOR value",
"Magnetometer") },
308 { MAV_SYS_STATUS_SENSOR_ABSOLUTE_PRESSURE, QT_TRANSLATE_NOOP(
"MAVLink SYS_STATUS_SENSOR value",
"Absolute pressure") },
309 { MAV_SYS_STATUS_SENSOR_DIFFERENTIAL_PRESSURE, QT_TRANSLATE_NOOP(
"MAVLink SYS_STATUS_SENSOR value",
"Differential pressure") },
310 { MAV_SYS_STATUS_SENSOR_GPS, QT_TRANSLATE_NOOP(
"MAVLink SYS_STATUS_SENSOR value",
"GPS") },
311 { MAV_SYS_STATUS_SENSOR_OPTICAL_FLOW, QT_TRANSLATE_NOOP(
"MAVLink SYS_STATUS_SENSOR value",
"Optical flow") },
312 { MAV_SYS_STATUS_SENSOR_VISION_POSITION, QT_TRANSLATE_NOOP(
"MAVLink SYS_STATUS_SENSOR value",
"Computer vision position") },
313 { MAV_SYS_STATUS_SENSOR_LASER_POSITION, QT_TRANSLATE_NOOP(
"MAVLink SYS_STATUS_SENSOR value",
"Laser based position") },
314 { MAV_SYS_STATUS_SENSOR_EXTERNAL_GROUND_TRUTH, QT_TRANSLATE_NOOP(
"MAVLink SYS_STATUS_SENSOR value",
"External ground truth") },
315 { MAV_SYS_STATUS_SENSOR_ANGULAR_RATE_CONTROL, QT_TRANSLATE_NOOP(
"MAVLink SYS_STATUS_SENSOR value",
"Angular rate control") },
316 { MAV_SYS_STATUS_SENSOR_ATTITUDE_STABILIZATION, QT_TRANSLATE_NOOP(
"MAVLink SYS_STATUS_SENSOR value",
"Attitude stabilization") },
317 { MAV_SYS_STATUS_SENSOR_YAW_POSITION, QT_TRANSLATE_NOOP(
"MAVLink SYS_STATUS_SENSOR value",
"Yaw position") },
318 { MAV_SYS_STATUS_SENSOR_Z_ALTITUDE_CONTROL, QT_TRANSLATE_NOOP(
"MAVLink SYS_STATUS_SENSOR value",
"Z/altitude control") },
319 { MAV_SYS_STATUS_SENSOR_XY_POSITION_CONTROL, QT_TRANSLATE_NOOP(
"MAVLink SYS_STATUS_SENSOR value",
"X/Y position control") },
320 { MAV_SYS_STATUS_SENSOR_MOTOR_OUTPUTS, QT_TRANSLATE_NOOP(
"MAVLink SYS_STATUS_SENSOR value",
"Motor outputs / control") },
321 { MAV_SYS_STATUS_SENSOR_RC_RECEIVER, QT_TRANSLATE_NOOP(
"MAVLink SYS_STATUS_SENSOR value",
"RC receiver") },
322 { MAV_SYS_STATUS_SENSOR_3D_GYRO2, QT_TRANSLATE_NOOP(
"MAVLink SYS_STATUS_SENSOR value",
"Gyro 2") },
323 { MAV_SYS_STATUS_SENSOR_3D_ACCEL2, QT_TRANSLATE_NOOP(
"MAVLink SYS_STATUS_SENSOR value",
"Accelerometer 2") },
324 { MAV_SYS_STATUS_SENSOR_3D_MAG2, QT_TRANSLATE_NOOP(
"MAVLink SYS_STATUS_SENSOR value",
"Magnetometer 2") },
325 { MAV_SYS_STATUS_GEOFENCE, QT_TRANSLATE_NOOP(
"MAVLink SYS_STATUS_SENSOR value",
"GeoFence") },
326 { MAV_SYS_STATUS_AHRS, QT_TRANSLATE_NOOP(
"MAVLink SYS_STATUS_SENSOR value",
"AHRS") },
327 { MAV_SYS_STATUS_TERRAIN, QT_TRANSLATE_NOOP(
"MAVLink SYS_STATUS_SENSOR value",
"Terrain") },
328 { MAV_SYS_STATUS_REVERSE_MOTOR, QT_TRANSLATE_NOOP(
"MAVLink SYS_STATUS_SENSOR value",
"Motors reversed") },
329 { MAV_SYS_STATUS_LOGGING, QT_TRANSLATE_NOOP(
"MAVLink SYS_STATUS_SENSOR value",
"Logging") },
330 { MAV_SYS_STATUS_SENSOR_BATTERY, QT_TRANSLATE_NOOP(
"MAVLink SYS_STATUS_SENSOR value",
"Battery") },
331 { MAV_SYS_STATUS_SENSOR_PROXIMITY, QT_TRANSLATE_NOOP(
"MAVLink SYS_STATUS_SENSOR value",
"Proximity") },
332 { MAV_SYS_STATUS_SENSOR_SATCOM, QT_TRANSLATE_NOOP(
"MAVLink SYS_STATUS_SENSOR value",
"Satellite Communication") },
333 { MAV_SYS_STATUS_PREARM_CHECK, QT_TRANSLATE_NOOP(
"MAVLink SYS_STATUS_SENSOR value",
"Pre-Arm Check") },
334 { MAV_SYS_STATUS_OBSTACLE_AVOIDANCE, QT_TRANSLATE_NOOP(
"MAVLink SYS_STATUS_SENSOR value",
"Avoidance/collision prevention") },
335 { MAV_SYS_STATUS_SENSOR_PROPULSION, QT_TRANSLATE_NOOP(
"MAVLink SYS_STATUS_SENSOR value",
"Propulsion") }
338 for (
size_t i=0; i<
sizeof(rgSensorInfo)/
sizeof(sensorInfo_s); i++) {
339 const sensorInfo_s* pSensorInfo = &rgSensorInfo[i];
340 if (sysStatusSensor == pSensorInfo->bit) {
341 return pSensorInfo->sensorName;
345 qWarning() <<
"QGCMAVLink::mavSysStatusSensorToString: Unknown sensor" << sysStatusSensor;
347 return QT_TRANSLATE_NOOP(
"MAVLink unknown SYS_STATUS_SENSOR value",
"Unknown sensor");
351 static const QMap<int, QString> typeNames = {
352 { MAV_TYPE_GENERIC, tr(
"Generic micro air vehicle" )},
353 { MAV_TYPE_FIXED_WING, tr(
"Fixed wing aircraft")},
354 { MAV_TYPE_QUADROTOR, tr(
"Quadrotor")},
355 { MAV_TYPE_COAXIAL, tr(
"Coaxial helicopter")},
356 { MAV_TYPE_HELICOPTER, tr(
"Normal helicopter with tail rotor.")},
357 { MAV_TYPE_ANTENNA_TRACKER, tr(
"Ground installation")},
358 { MAV_TYPE_GCS, tr(
"Operator control unit / ground control station")},
359 { MAV_TYPE_AIRSHIP, tr(
"Airship, controlled")},
360 { MAV_TYPE_FREE_BALLOON, tr(
"Free balloon, uncontrolled")},
361 { MAV_TYPE_ROCKET, tr(
"Rocket")},
362 { MAV_TYPE_GROUND_ROVER, tr(
"Ground rover")},
363 { MAV_TYPE_SURFACE_BOAT, tr(
"Surface vessel, boat, ship")},
364 { MAV_TYPE_SUBMARINE, tr(
"Submarine")},
365 { MAV_TYPE_SPACECRAFT_ORBITER, tr(
"Spacecraft, orbiter")},
366 { MAV_TYPE_HEXAROTOR, tr(
"Hexarotor")},
367 { MAV_TYPE_OCTOROTOR, tr(
"Octorotor")},
368 { MAV_TYPE_TRICOPTER, tr(
"trirotor")},
369 { MAV_TYPE_FLAPPING_WING, tr(
"Flapping wing")},
370 { MAV_TYPE_KITE, tr(
"Kite")},
371 { MAV_TYPE_ONBOARD_CONTROLLER, tr(
"Onboard companion controller")},
372 { MAV_TYPE_VTOL_TAILSITTER_DUOROTOR, tr(
"Two-rotor VTOL using control surfaces in vertical operation in addition. Tailsitter")},
373 { MAV_TYPE_VTOL_TAILSITTER_QUADROTOR, tr(
"Quad-rotor VTOL using a V-shaped quad config in vertical operation. Tailsitter")},
374 { MAV_TYPE_VTOL_TILTROTOR, tr(
"Tiltrotor VTOL")},
375 { MAV_TYPE_VTOL_FIXEDROTOR, tr(
"VTOL Fixedrotor")},
376 { MAV_TYPE_VTOL_TAILSITTER, tr(
"VTOL Tailsitter")},
377 { MAV_TYPE_VTOL_TILTWING, tr(
"VTOL Tiltwing")},
378 { MAV_TYPE_VTOL_RESERVED5, tr(
"VTOL reserved 5")},
379 { MAV_TYPE_GIMBAL, tr(
"Onboard gimbal")},
380 { MAV_TYPE_ADSB, tr(
"Onboard ADSB peripheral")},
383 return typeNames.value(mavType,
"MAV_TYPE_UNKNOWN");
485 struct failure2Sensor_s {
486 HL_FAILURE_FLAG failureBit;
487 MAV_SYS_STATUS_SENSOR sensorBit;
490 static constexpr const failure2Sensor_s rgFailure2Sensor[] = {
491 { HL_FAILURE_FLAG_GPS, MAV_SYS_STATUS_SENSOR_GPS },
492 { HL_FAILURE_FLAG_DIFFERENTIAL_PRESSURE, MAV_SYS_STATUS_SENSOR_DIFFERENTIAL_PRESSURE },
493 { HL_FAILURE_FLAG_ABSOLUTE_PRESSURE, MAV_SYS_STATUS_SENSOR_ABSOLUTE_PRESSURE },
494 { HL_FAILURE_FLAG_3D_ACCEL, MAV_SYS_STATUS_SENSOR_3D_ACCEL },
495 { HL_FAILURE_FLAG_3D_GYRO, MAV_SYS_STATUS_SENSOR_3D_GYRO },
496 { HL_FAILURE_FLAG_3D_MAG, MAV_SYS_STATUS_SENSOR_3D_MAG },
500 uint32_t onboardControlSensorsEnabled = 0;
501 for (
size_t i=0; i<
sizeof(rgFailure2Sensor)/
sizeof(failure2Sensor_s); i++) {
502 const failure2Sensor_s* pFailure2Sensor = &rgFailure2Sensor[i];
503 if (highLatency2.failure_flags & pFailure2Sensor->failureBit) {
505 onboardControlSensorsEnabled |= pFailure2Sensor->sensorBit;
509 return onboardControlSensorsEnabled;