Browse Source

ArduPlane: tidy setting of sensor status flags

c415-sdk
Peter Barker 4 years ago committed by Andrew Tridgell
parent
commit
6a32afcd72
  1. 34
      ArduPlane/GCS_Plane.cpp

34
ArduPlane/GCS_Plane.cpp

@ -8,27 +8,28 @@ uint8_t GCS_Plane::sysid_this_mav() const
void GCS_Plane::update_vehicle_sensor_status_flags(void) void GCS_Plane::update_vehicle_sensor_status_flags(void)
{ {
// first what sensors/controllers we have // airspeed
const AP_Airspeed *airspeed = AP_Airspeed::get_singleton(); const AP_Airspeed *airspeed = AP_Airspeed::get_singleton();
if (airspeed && airspeed->enabled()) { if (airspeed && airspeed->enabled()) {
control_sensors_present |= MAV_SYS_STATUS_SENSOR_DIFFERENTIAL_PRESSURE; control_sensors_present |= MAV_SYS_STATUS_SENSOR_DIFFERENTIAL_PRESSURE;
} }
#if OPTFLOW == ENABLED if (airspeed && airspeed->enabled() && airspeed->use()) {
const OpticalFlow *optflow = AP::opticalflow(); control_sensors_enabled |= MAV_SYS_STATUS_SENSOR_DIFFERENTIAL_PRESSURE;
if (optflow && optflow->enabled()) { }
control_sensors_present |= MAV_SYS_STATUS_SENSOR_OPTICAL_FLOW; if (airspeed && airspeed->all_healthy()) {
control_sensors_enabled |= MAV_SYS_STATUS_SENSOR_OPTICAL_FLOW; control_sensors_health |= MAV_SYS_STATUS_SENSOR_DIFFERENTIAL_PRESSURE;
} }
#endif
// reverse thrust
if (plane.have_reverse_thrust()) { if (plane.have_reverse_thrust()) {
control_sensors_present |= MAV_SYS_STATUS_REVERSE_MOTOR; control_sensors_present |= MAV_SYS_STATUS_REVERSE_MOTOR;
} }
if (plane.have_reverse_thrust() && SRV_Channels::get_output_scaled(SRV_Channel::k_throttle) < 0) {
if (airspeed && airspeed->enabled() && airspeed->use()) { control_sensors_enabled |= MAV_SYS_STATUS_REVERSE_MOTOR;
control_sensors_enabled |= MAV_SYS_STATUS_SENSOR_DIFFERENTIAL_PRESSURE; control_sensors_health |= MAV_SYS_STATUS_REVERSE_MOTOR;
} }
// flightmode-specific
control_sensors_present |= control_sensors_present |=
MAV_SYS_STATUS_SENSOR_ANGULAR_RATE_CONTROL | MAV_SYS_STATUS_SENSOR_ANGULAR_RATE_CONTROL |
MAV_SYS_STATUS_SENSOR_ATTITUDE_STABILIZATION | MAV_SYS_STATUS_SENSOR_ATTITUDE_STABILIZATION |
@ -101,13 +102,15 @@ void GCS_Plane::update_vehicle_sensor_status_flags(void)
} }
#if OPTFLOW == ENABLED #if OPTFLOW == ENABLED
const OpticalFlow *optflow = AP::opticalflow();
if (optflow && optflow->enabled()) {
control_sensors_present |= MAV_SYS_STATUS_SENSOR_OPTICAL_FLOW;
control_sensors_enabled |= MAV_SYS_STATUS_SENSOR_OPTICAL_FLOW;
}
if (optflow && optflow->healthy()) { if (optflow && optflow->healthy()) {
control_sensors_health |= MAV_SYS_STATUS_SENSOR_OPTICAL_FLOW; control_sensors_health |= MAV_SYS_STATUS_SENSOR_OPTICAL_FLOW;
} }
#endif #endif
if (airspeed && airspeed->all_healthy()) {
control_sensors_health |= MAV_SYS_STATUS_SENSOR_DIFFERENTIAL_PRESSURE;
}
control_sensors_present |= MAV_SYS_STATUS_SENSOR_RC_RECEIVER; control_sensors_present |= MAV_SYS_STATUS_SENSOR_RC_RECEIVER;
control_sensors_enabled |= MAV_SYS_STATUS_SENSOR_RC_RECEIVER; control_sensors_enabled |= MAV_SYS_STATUS_SENSOR_RC_RECEIVER;
@ -141,9 +144,4 @@ void GCS_Plane::update_vehicle_sensor_status_flags(void)
control_sensors_health |= MAV_SYS_STATUS_SENSOR_LASER_POSITION; control_sensors_health |= MAV_SYS_STATUS_SENSOR_LASER_POSITION;
} }
} }
if (plane.have_reverse_thrust() && SRV_Channels::get_output_scaled(SRV_Channel::k_throttle) < 0) {
control_sensors_enabled |= MAV_SYS_STATUS_REVERSE_MOTOR;
control_sensors_health |= MAV_SYS_STATUS_REVERSE_MOTOR;
}
} }

Loading…
Cancel
Save