QGroundControl
Ground Control Station for MAVLink Drones
Loading...
Searching...
No Matches
GPSTransport.cc
Go to the documentation of this file.
1#include "GPSTransport.h"
2
3#include <algorithm>
4#include <utility>
5
7
8QGC_LOGGING_CATEGORY(GPSTransportLog, "GPS.Transport.GPSTransport")
9
11 : _cancelToken(std::move(cancelToken))
12{
13 qCDebug(GPSTransportLog) << this;
14}
15
17{
18 qCDebug(GPSTransportLog) << this;
19}
20
21GPSWriteResult GPSTransport::write(QByteArrayView bytes, QDeadlineTimer deadline)
22{
23 if (isCancelled()) {
25 }
26 if (bytes.isEmpty()) {
28 }
29 if (deadline.hasExpired()) {
31 }
32 const QDeadlineTimer cap(configurationWriteTimeout(), Qt::PreciseTimer);
33 return writeData(bytes, (std::min) (deadline, cap));
34}
35
36std::chrono::milliseconds GPSTransport::configurationWriteTimeout() const
37{
38 return std::chrono::milliseconds(500);
39}
40
41bool GPSTransport::setBaudrate(unsigned baudrate)
42{
43 return !isCancelled() && !fatalError() && fixedBaudrate() != 0 && baudrate == fixedBaudrate();
44}
#define QGC_LOGGING_CATEGORY(name, categoryStr)
virtual bool fatalError() const =0
GPSWriteResult write(QByteArrayView bytes, QDeadlineTimer deadline)
virtual ~GPSTransport()
virtual bool setBaudrate(unsigned baudrate)
bool isCancelled() const
virtual GPSWriteResult writeData(QByteArrayView bytes, QDeadlineTimer deadline)=0
Receives non-empty bytes and an unexpired, capped deadline that implementations must honor.
virtual std::chrono::milliseconds configurationWriteTimeout() const
virtual unsigned fixedBaudrate() const
Nonzero when the link cannot follow baud-rate changes (for example, a serial bridge).