5#include <QtCore/QCoreApplication>
6#include <QtNetwork/QTcpSocket>
15 const bool timedOut = deadline.hasExpired();
20 timedOut ? QCoreApplication::translate(
"GPSTransport",
"Receiver connection timed out") : socket.
errorString()};
28 , _host(std::move(host))
39 const QDeadlineTimer connectDeadline(CONNECT_TIMEOUT);
40 _socket = std::make_unique<QTcpSocket>();
42 _socket->connectToHost(_host, _port);
43 if (
waitForDevice([
this]() {
return _socket->state() == QAbstractSocket::ConnectedState; }, connectDeadline)) {
47 qCWarning(TCPGPSTransportLog) <<
"Failed to connect to GPS receiver" << _host << _port
48 << _socket->errorString();
50 return socketOpenFailure(*
this, *_socket, connectDeadline);
55 return !_socket || _socket->state() == QAbstractSocket::UnconnectedState;
#define QGC_LOGGING_CATEGORY(name, categoryStr)
bool waitForDevice(const std::function< bool()> &ready, QDeadlineTimer deadline)
static constexpr qint64 READ_BUFFER_BYTES
void retire() override
Retires the connection after a failed write that accepted bytes; by default closes the device.
GPSOpenResult open() override
QIODevice * device() const override
The open device, or null before open().
std::chrono::milliseconds configurationWriteTimeout() const override
~TCPGPSTransport() override
bool fatalError() const override
TCPGPSTransport(QString host, quint16 port, GPSCancelToken cancelToken)