14 _bandwidthTimer.start();
25 _calculateBandwith(data.size());
30 static constexpr qsizetype maxMessageLength = MAVLINK_MSG_GPS_RTCM_DATA_FIELD_DATA_LEN;
31 if (data.size() < maxMessageLength) {
32 gpsRtcmData.len = data.size();
33 gpsRtcmData.flags = (_sequenceId & 0x1FU) << 3;
34 (void) memcpy(&gpsRtcmData.data, data.data(), data.size());
35 _sendMessageToVehicle(gpsRtcmData);
37 uint8_t fragmentId = 0;
39 while (start < data.size()) {
40 gpsRtcmData.flags = 0x01U;
41 gpsRtcmData.flags |= fragmentId++ << 1;
42 gpsRtcmData.flags |= (_sequenceId & 0x1FU) << 3;
44 const qsizetype length = std::min(data.size() - start, maxMessageLength);
45 gpsRtcmData.len = length;
47 (void) memcpy(gpsRtcmData.data, data.constData() + start, length);
48 _sendMessageToVehicle(gpsRtcmData);
60 for (qsizetype i = 0; i < vehicles->
count(); i++) {
61 Vehicle*
const vehicle = qobject_cast<Vehicle*>(vehicles->
get(i));
65 (void) mavlink_msg_gps_rtcm_data_encode_chan(
68 sharedLink->mavlinkChannel(),
77void RTCMMavlink::_calculateBandwith(qsizetype bytes)
79 if (!_bandwidthTimer.isValid()) {
83 _bandwidthByteCounter += bytes;
85 const qint64 elapsed = _bandwidthTimer.elapsed();
87 qCDebug(RTCMMavlinkLog) << QStringLiteral(
"RTCM bandwidth: %1 kB/s").arg(((_bandwidthByteCounter / elapsed) * 1000.f) / 1024.f);
88 (void) _bandwidthTimer.restart();
89 _bandwidthByteCounter = 0;
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
static int getComponentId()
Get the component id of this application.
static MAVLinkProtocol * instance()
int getSystemId() const
Get the system id of this application.
int count() const override final
void RTCMDataUpdate(QByteArrayView data)
WeakLinkInterfacePtr primaryLink() const
VehicleLinkManager * vehicleLinkManager()
bool sendMessageOnLinkThreadSafe(LinkInterface *link, mavlink_message_t message)