diff --git a/src/comm/OpalLink.cc b/src/comm/OpalLink.cc index 19eb6ed30e4d43ff11ad7dd458331306b1476887..c74343a047804907139022d8d40646076e15dbdd 100644 --- a/src/comm/OpalLink.cc +++ b/src/comm/OpalLink.cc @@ -1,6 +1,6 @@ #include "OpalLink.h" -OpalLink::OpalLink() +OpalLink::OpalLink() : connectState(false) { // Set unique ID and add link to the list of links @@ -26,6 +26,7 @@ void OpalLink::setName(QString name) } bool OpalLink::isConnected() { + //qDebug() << "OpalLink::isConnected:: connectState: " << connectState; return connectState; } @@ -81,8 +82,28 @@ bool OpalLink::isFullDuplex() bool OpalLink::connect() { short modelState; - OpalConnect(101, true, &modelState); - return true; + + /// \todo allow configuration of instid in window + if (OpalConnect(101, false, &modelState) == EOK) + { + connectState = true; + } + else + { + connectState = false; + setLastErrorMsg(); + QMessageBox msgBox; + msgBox.setIcon(QMessageBox::Critical); + msgBox.setText(lastErrorMsg); + msgBox.exec(); + } + + emit connected(connectState); + if (connectState) + { + emit connected(); + } + return connectState; } bool OpalLink::disconnect() @@ -90,6 +111,15 @@ bool OpalLink::disconnect() return false; } +void OpalLink::setLastErrorMsg() +{ + char buf[512]; + unsigned short len; + OpalGetLastErrMsg(buf, sizeof(buf), &len); + lastErrorMsg.clear(); + lastErrorMsg.append(buf); +} + qint64 OpalLink::bytesAvailable() { return 0; diff --git a/src/comm/OpalLink.h b/src/comm/OpalLink.h index 560d5c14974dc44e9b2054d7a83d2a290db08918..47dd1c21c56b3121b8d28b5d8f24d46e114dd5f8 100644 --- a/src/comm/OpalLink.h +++ b/src/comm/OpalLink.h @@ -8,6 +8,8 @@ */ #include +#include +#include #include "LinkInterface.h" #include "LinkManager.h" @@ -73,6 +75,8 @@ protected: quint64 connectionStartTime; QMutex statisticsMutex; + QString lastErrorMsg; + void setLastErrorMsg(); void setName(QString name); };