diff --git a/src/Microhard/MicrohardHandler.cc b/src/Microhard/MicrohardHandler.cc index 61ca9aa303c8c477396512554c9886182b5b8d74..3ccc09a2025977aac16d49e4c622c27c076aa247 100644 --- a/src/Microhard/MicrohardHandler.cc +++ b/src/Microhard/MicrohardHandler.cc @@ -42,21 +42,27 @@ MicrohardHandler::close() } //----------------------------------------------------------------------------- -bool +void MicrohardHandler::_start(uint16_t port, QHostAddress addr) { close(); - _tcpSocket = new QTcpSocket(); QObject::connect(_tcpSocket, &QIODevice::readyRead, this, &MicrohardHandler::_readBytes); qCDebug(MicrohardLog) << "Connecting to" << addr; _tcpSocket->connectToHost(addr, port); - //-- TODO: This has to be removed. It's blocking the main thread. - if (!_tcpSocket->waitForConnected(1000)) { + QTimer::singleShot(1000, this, &MicrohardHandler::_testConnection); +} + +//----------------------------------------------------------------------------- +void +MicrohardHandler::_testConnection() +{ + if(_tcpSocket) { + if(_tcpSocket->state() == QAbstractSocket::ConnectedState) { + qCDebug(MicrohardLog) << "Connected"; + return; + } emit connected(0); close(); - return false; } - - return true; } diff --git a/src/Microhard/MicrohardHandler.h b/src/Microhard/MicrohardHandler.h index 98edc405250e8bd7f86737f376a1279c37792412..aa1eace60836b743f429ca508a226ed5fb6a63d3 100644 --- a/src/Microhard/MicrohardHandler.h +++ b/src/Microhard/MicrohardHandler.h @@ -29,10 +29,11 @@ public: virtual bool close (); protected: - virtual bool _start (uint16_t port, QHostAddress addr = QHostAddress::AnyIPv4); + virtual void _start (uint16_t port, QHostAddress addr = QHostAddress::AnyIPv4); protected slots: virtual void _readBytes () = 0; + virtual void _testConnection (); signals: void connected (int status); diff --git a/src/Microhard/MicrohardManager.cc b/src/Microhard/MicrohardManager.cc index f12e592bb0f271b17a96d8ed682d0487c52c7e41..90ba7f0292b784cb24f85b84892244bab5bd5b1d 100644 --- a/src/Microhard/MicrohardManager.cc +++ b/src/Microhard/MicrohardManager.cc @@ -205,7 +205,13 @@ MicrohardManager::_setEnabled() void MicrohardManager::_connectedLoc(int status) { - qCDebug(MicrohardLog) << "GND Microhard Settings Connected"; + static const char* msg = "GND Microhard Settings: "; + if(status > 0) + qCDebug(MicrohardLog) << msg << "Connected"; + else if(status < 0) + qCDebug(MicrohardLog) << msg << "Error"; + else + qCDebug(MicrohardLog) << msg << "Not Connected"; _connectedStatus = status; _locTimer.start(LONG_TIMEOUT); emit connectedChanged(); @@ -215,7 +221,13 @@ MicrohardManager::_connectedLoc(int status) void MicrohardManager::_connectedRem(int status) { - qCDebug(MicrohardLog) << "AIR Microhard Settings Connected"; + static const char* msg = "AIR Microhard Settings: "; + if(status > 0) + qCDebug(MicrohardLog) << msg << "Connected"; + else if(status < 0) + qCDebug(MicrohardLog) << msg << "Error"; + else + qCDebug(MicrohardLog) << msg << "Not Connected"; _linkConnectedStatus = status; _remTimer.start(LONG_TIMEOUT); emit linkConnectedChanged(); diff --git a/src/Microhard/MicrohardSettings.cc b/src/Microhard/MicrohardSettings.cc index b80d12c3c8618033516f6ad6cf3be617188ac4a0..f2ea0e03499d93678adaf6ab553c8201638fd1ef 100644 --- a/src/Microhard/MicrohardSettings.cc +++ b/src/Microhard/MicrohardSettings.cc @@ -27,7 +27,8 @@ MicrohardSettings::start() { qCDebug(MicrohardLog) << "Start Microhard Settings"; _loggedIn = false; - return _start(MICROHARD_SETTINGS_PORT, QHostAddress(_address)); + _start(MICROHARD_SETTINGS_PORT, QHostAddress(_address)); + return true; } //-----------------------------------------------------------------------------