AP_RangeFinder: tidy alert sending

This commit is contained in:
Peter Barker 2025-01-02 10:16:39 +11:00 committed by Andrew Tridgell
parent 95f4b326a4
commit 2d57944280

View File

@ -111,23 +111,26 @@ bool AP_RangeFinder_Ainstein_LR_D1::get_reading(float &reading_m)
#if AP_RANGEFINDER_AINSTEIN_LR_D1_SHOW_MALFUNCTIONS #if AP_RANGEFINDER_AINSTEIN_LR_D1_SHOW_MALFUNCTIONS
void AP_RangeFinder_Ainstein_LR_D1::report_malfunction(const uint8_t _malfunction_alert_, const uint8_t _malfunction_alert_prev_) void AP_RangeFinder_Ainstein_LR_D1::report_malfunction(const uint8_t _malfunction_alert_, const uint8_t _malfunction_alert_prev_)
{ {
// _malfunction_alert_ _malfunction_alert_prev_ static const struct {
// 0 0 : not message MalfunctionAlert bit;
// 1 0 : message const char *name;
// 0 1 : not message } alerts[] {
// 1 1 : not message { MalfunctionAlert::Temperature, "Temperature" },
const uint8_t alert = _malfunction_alert_ & (_malfunction_alert_ ^ _malfunction_alert_prev_); { MalfunctionAlert::Voltage, "Voltage" },
if (alert & static_cast<uint8_t>(MalfunctionAlert::Temperature)) { { MalfunctionAlert::IFSignalSaturation, "IF signal saturation" },
GCS_SEND_TEXT(MAV_SEVERITY_WARNING, "RangeFinder: Temperature alert"); { MalfunctionAlert::AltitudeReading, "Attitude reading overflow" },
};
for (const auto &alert : alerts) {
if ((_malfunction_alert_ & uint8_t(alert.bit)) == 0) {
// alert not current
continue;
} }
if (alert & static_cast<uint8_t>(MalfunctionAlert::Voltage)) { if ((_malfunction_alert_prev_ & uint8_t(alert.bit)) != 0) {
GCS_SEND_TEXT(MAV_SEVERITY_WARNING, "RangeFinder: Voltage alert"); // alert is not new
continue;
} }
if (alert & static_cast<uint8_t>(MalfunctionAlert::IFSignalSaturation)) { GCS_SEND_TEXT(MAV_SEVERITY_WARNING, "RangeFinder: %s alert", alert.name);
GCS_SEND_TEXT(MAV_SEVERITY_WARNING, "RangeFinder: IF signal saturation alert");
}
if (alert & static_cast<uint8_t>(MalfunctionAlert::AltitudeReading)) {
GCS_SEND_TEXT(MAV_SEVERITY_WARNING, "RangeFinder: Altitude reading overflow alert");
} }
} }
#endif // AP_RANGEFINDER_AINSTEIN_LR_D1_SHOW_MALFUNCTIONS #endif // AP_RANGEFINDER_AINSTEIN_LR_D1_SHOW_MALFUNCTIONS