Browse Source

actuators: increase motor spin timeout to 3s when assigning motors

So that ESC's can initialize. Note that some are faster than others and 1s
is enough in some cases.
QGC4.4
Beat Küng 3 years ago
parent
commit
5496f81cdb
  1. 4
      src/Vehicle/Actuators/MotorAssignment.cc
  2. 3
      src/Vehicle/Actuators/MotorAssignment.h

4
src/Vehicle/Actuators/MotorAssignment.cc

@ -17,7 +17,7 @@ @@ -17,7 +17,7 @@
MotorAssignment::MotorAssignment(QObject* parent, Vehicle* vehicle, QmlObjectListModel* actuators)
: QObject(parent), _vehicle(vehicle), _actuators(actuators)
{
_spinTimer.setInterval(1000);
_spinTimer.setInterval(_spinTimeoutDefaultSec);
_spinTimer.setSingleShot(true);
connect(&_spinTimer, &QTimer::timeout, this, &MotorAssignment::spinTimeout);
}
@ -141,6 +141,7 @@ void MotorAssignment::start() @@ -141,6 +141,7 @@ void MotorAssignment::start()
}
_state = State::Running;
emit activeChanged();
_spinTimer.setInterval(_assignMotors ? _spinTimeoutHighSec : _spinTimeoutDefaultSec);
_spinTimer.start();
}
@ -169,6 +170,7 @@ void MotorAssignment::selectMotor(int motorIndex) @@ -169,6 +170,7 @@ void MotorAssignment::selectMotor(int motorIndex)
emit activeChanged();
} else {
// spin the next motor after some time
_spinTimer.setInterval(_spinTimeoutDefaultSec);
_spinTimer.start();
}
}

3
src/Vehicle/Actuators/MotorAssignment.h

@ -59,6 +59,9 @@ private slots: @@ -59,6 +59,9 @@ private slots:
void spinTimeout();
private:
static constexpr int _spinTimeoutDefaultSec = 1000;
static constexpr int _spinTimeoutHighSec = 3000; ///< wait a bit longer after assigning motors, so ESCs can initialize
static void ackHandlerEntry(void* resultHandlerData, int compId, MAV_RESULT commandResult, uint8_t progress,
Vehicle::MavCmdResultFailureCode_t failureCode);
void ackHandler(MAV_RESULT commandResult, Vehicle::MavCmdResultFailureCode_t failureCode);

Loading…
Cancel
Save