9 :
QGCState(QStringLiteral(
"SendMavlinkMessageState"), parent)
10 , _encoder(std::move(encoder))
11 , _retryCount(retryCount)
13 connect(
this, &QState::entered,
this, &SendMavlinkMessageState::_sendMessage);
18void SendMavlinkMessageState::_sendMessage()
20 if (++_runCount > _retryCount + 1 ) {
21 qCDebug(QGCStateMachineLog) <<
"Exceeded maximum retries" <<
stateName();
27 qCDebug(QGCStateMachineLog) <<
"No MAVLink message encoder configured" <<
stateName();
34 qCWarning(QGCStateMachineLog) <<
"No active link available to send MAVLink message" <<
stateName();
43 const uint8_t channel = sharedLink->mavlinkChannel();
45 _encoder(systemId, channel, &message);
46 if (!
vehicle()->sendMessageOnLinkThreadSafe(sharedLink.get(), message)) {
47 qCWarning(QGCStateMachineLog) <<
"Failed to send MAVLink message" <<
stateName();
std::shared_ptr< LinkInterface > SharedLinkInterfacePtr
struct __mavlink_message mavlink_message_t
static int getComponentId()
Get the component id of this application.
static MAVLinkProtocol * instance()
int getSystemId() const
Get the system id of this application.
QString stateName() const
Vehicle * vehicle() const
SendMavlinkMessageState(QState *parent, MessageEncoder encoder, int retryCount)
std::function< void(uint8_t systemId, uint8_t channel, mavlink_message_t *message)> MessageEncoder
WeakLinkInterfacePtr primaryLink() const
VehicleLinkManager * vehicleLinkManager()