3#include <QtCore/QByteArray>
4#include <QtCore/QThread>
17 qCDebug(RTCMMavlinkLog) <<
this;
22 qCDebug(RTCMMavlinkLog) <<
this;
29 qCDebug(RTCMMavlinkLog) << QStringLiteral(
"RTCM bandwidth: %1 kB/s").arg(_rateTracker.
kBps(), 0,
'f', 3);
35 static constexpr qsizetype maxMessageLength = MAVLINK_MSG_GPS_RTCM_DATA_FIELD_DATA_LEN;
36 if (data.size() < maxMessageLength) {
37 gpsRtcmData.len = data.size();
38 gpsRtcmData.flags = (_sequenceId & 0x1FU) << 3;
39 (void) memcpy(&gpsRtcmData.data, data.data(), data.size());
40 _sendMessageToVehicle(gpsRtcmData);
42 uint8_t fragmentId = 0;
44 while (start < data.size()) {
45 gpsRtcmData.flags = 0x01U;
46 gpsRtcmData.flags |= fragmentId++ << 1;
47 gpsRtcmData.flags |= (_sequenceId & 0x1FU) << 3;
49 const qsizetype length = std::min(data.size() - start, maxMessageLength);
50 gpsRtcmData.len = length;
52 (void) memcpy(gpsRtcmData.data, data.constData() + start, length);
53 _sendMessageToVehicle(gpsRtcmData);
64 constexpr int kMessageLengths[] = {30, 170, 240};
65 const QByteArray payload(kMessageLengths[2],
'\0');
66 while (!requestStop) {
67 for (
const int length : kMessageLengths) {
78 for (qsizetype i = 0; i < vehicles->
count(); i++) {
79 Vehicle*
const vehicle = qobject_cast<Vehicle*>(vehicles->
get(i));
88 sharedLink->mavlinkChannel(), &message, &data);
std::shared_ptr< LinkInterface > SharedLinkInterfacePtr
struct __mavlink_message mavlink_message_t
#define QGC_LOGGING_CATEGORY(name, categoryStr)
struct __mavlink_gps_rtcm_data_t mavlink_gps_rtcm_data_t
double kBps() const
Current data rate in KB/s.
void recordBytes(qsizetype bytes)
Record incoming/outgoing bytes. Call whenever data passes through.
static int getComponentId()
static MAVLinkProtocol * instance()
static MultiVehicleManager * instance()
QmlObjectListModel * vehicles() const
Q_INVOKABLE QObject * get(int index)
int count() const override final
void RTCMDataUpdate(QByteArrayView data)
void sendSimulatedData(const std::atomic_bool &requestStop)
WeakLinkInterfacePtr primaryLink() const
VehicleLinkManager * vehicleLinkManager()
bool sendMessageOnLinkThreadSafe(LinkInterface *link, mavlink_message_t message)