8 : _messageIntervalCb(messageIntervalCb)
20 static constexpr int requestedRate =
static_cast<int>(1000000.0 / 100.0);
23 _nextDesiredRates = QList<DesiredStreamRate>{{
24 {MAVLINK_MSG_ID_ATTITUDE_QUATERNION, requestedRate},
25 {MAVLINK_MSG_ID_ATTITUDE_TARGET, requestedRate},
29 setNextState(State::Configuring);
34 static constexpr int requestedRate =
static_cast<int>(1000000.0 / 100.0);
35 _nextDesiredRates = QList<DesiredStreamRate>{{
36 {MAVLINK_MSG_ID_LOCAL_POSITION_NED, requestedRate},
37 {MAVLINK_MSG_ID_POSITION_TARGET_LOCAL_NED, requestedRate},
39 setNextState(State::Configuring);
44 static constexpr int requestedRate =
static_cast<int>(1000000.0 / 100.0);
45 _nextDesiredRates = QList<DesiredStreamRate>{{
46 {MAVLINK_MSG_ID_NAV_CONTROLLER_OUTPUT, requestedRate},
47 {MAVLINK_MSG_ID_VFR_HUD, requestedRate},
49 setNextState(State::Configuring);
55 case State::Configuring:
58 case State::RestoringDefaults:
66void MAVLinkStreamConfig::setNextState(State state)
69 if (_state == State::Idle) {
71 _state = State::RestoringDefaults;
76void MAVLinkStreamConfig::nextDesiredRate()
78 if (_nextState != State::Idle) {
79 _desiredRates.clear();
80 _state = State::RestoringDefaults;
85 if (_desiredRates.empty()) {
90 const DesiredStreamRate &rate = _desiredRates.last();
91 _changedIds.push_back(rate.messageId);
92 _messageIntervalCb(rate.messageId, rate.rate);
93 _desiredRates.pop_back();
98 setNextState(State::RestoringDefaults);
101void MAVLinkStreamConfig::restoreNextDefault()
103 if (_changedIds.empty()) {
105 switch (_nextState) {
106 case State::Configuring:
108 _desiredRates = _nextDesiredRates;
109 _nextDesiredRates.clear();
110 _nextState = State::Idle;
113 case State::RestoringDefaults:
115 _nextState = State::Idle;
116 _state = State::Idle;
122 const int id = _changedIds.last();
123 _messageIntervalCb(
id, 0);
124 _changedIds.pop_back();
#define QGC_LOGGING_CATEGORY(name, categoryStr)
void gotSetMessageIntervalAck()
void setHighRateAltAirspeed()
void setHighRateRateAndAttitude()
void setHighRateVelAndPos()
std::function< void(int messageId, int rate)> SetMessageIntervalCb