Browse Source

Add a timer in between low battery warning messages.

QGC4.4
Gus Grubba 5 years ago
parent
commit
1952275992
  1. 14
      src/Vehicle/Vehicle.cc
  2. 3
      src/Vehicle/Vehicle.h

14
src/Vehicle/Vehicle.cc

@ -300,6 +300,7 @@ Vehicle::Vehicle(LinkInterface* link,
// Start csv logger // Start csv logger
connect(&_csvLogTimer, &QTimer::timeout, this, &Vehicle::_writeCsvLine); connect(&_csvLogTimer, &QTimer::timeout, this, &Vehicle::_writeCsvLine);
_csvLogTimer.start(1000); _csvLogTimer.start(1000);
_lastBatteryAnnouncement.start();
} }
// Disconnected Vehicle for offline editing // Disconnected Vehicle for offline editing
@ -1550,12 +1551,16 @@ void Vehicle::_handleSysStatus(mavlink_message_t& message)
} }
_battery1FactGroup.percentRemaining()->setRawValue(sysStatus.battery_remaining); _battery1FactGroup.percentRemaining()->setRawValue(sysStatus.battery_remaining);
//-- Low battery warning
if (sysStatus.battery_remaining > 0) { if (sysStatus.battery_remaining > 0) {
if (sysStatus.battery_remaining < _settingsManager->appSettings()->batteryPercentRemainingAnnounce()->rawValue().toInt() && int warnThreshold = _settingsManager->appSettings()->batteryPercentRemainingAnnounce()->rawValue().toInt();
sysStatus.battery_remaining < _lastAnnouncedLowBatteryPercent) { if (sysStatus.battery_remaining < warnThreshold &&
sysStatus.battery_remaining < _lastAnnouncedLowBatteryPercent &&
_lastBatteryAnnouncement.elapsed() > (sysStatus.battery_remaining < warnThreshold * 0.5 ? 15000 : 30000)) {
_say(tr("%1 low battery: %2 percent remaining").arg(_vehicleIdSpeech()).arg(sysStatus.battery_remaining)); _say(tr("%1 low battery: %2 percent remaining").arg(_vehicleIdSpeech()).arg(sysStatus.battery_remaining));
_lastBatteryAnnouncement.start();
_lastAnnouncedLowBatteryPercent = sysStatus.battery_remaining;
} }
_lastAnnouncedLowBatteryPercent = sysStatus.battery_remaining;
} }
if (_onboardControlSensorsPresent != sysStatus.onboard_control_sensors_present) { if (_onboardControlSensorsPresent != sysStatus.onboard_control_sensors_present) {
@ -1656,12 +1661,13 @@ void Vehicle::_updateArmed(bool armed)
if (_armed != armed) { if (_armed != armed) {
_armed = armed; _armed = armed;
emit armedChanged(_armed); emit armedChanged(_armed);
// We are transitioning to the armed state, begin tracking trajectory points for the map // We are transitioning to the armed state, begin tracking trajectory points for the map
if (_armed) { if (_armed) {
_trajectoryPoints->start(); _trajectoryPoints->start();
_flightTimerStart(); _flightTimerStart();
_clearCameraTriggerPoints(); _clearCameraTriggerPoints();
// Reset battery warning
_lastAnnouncedLowBatteryPercent = 100;
} else { } else {
_trajectoryPoints->stop(); _trajectoryPoints->stop();
_flightTimerStop(); _flightTimerStop();

3
src/Vehicle/Vehicle.h

@ -1507,7 +1507,8 @@ private:
QString _gitHash; QString _gitHash;
quint64 _uid; quint64 _uid;
int _lastAnnouncedLowBatteryPercent; QTime _lastBatteryAnnouncement;
int _lastAnnouncedLowBatteryPercent;
SharedLinkInterfacePointer _priorityLink; // We always keep a reference to the priority link to manage shutdown ordering SharedLinkInterfacePointer _priorityLink; // We always keep a reference to the priority link to manage shutdown ordering
bool _priorityLinkCommanded; bool _priorityLinkCommanded;

Loading…
Cancel
Save