Fixed up MQTT connection code, made connection window hook up setup
debugging to the console if it is enabled.
This commit is contained in:
@@ -254,7 +254,11 @@ void ConnectionWindow::handleNewConn()
|
||||
newPort = thisDialog->getPortName();
|
||||
newDriver = thisDialog->getDriverName();
|
||||
conn = create(newType, newPort, newDriver);
|
||||
if (conn) connModel->add(conn);
|
||||
if (conn)
|
||||
{
|
||||
connModel->add(conn);
|
||||
ui->tableConnections->setCurrentIndex(connModel->index(connModel->rowCount() - 1, 1));
|
||||
}
|
||||
}
|
||||
delete thisDialog;
|
||||
}
|
||||
@@ -423,6 +427,9 @@ void ConnectionWindow::currentRowChanged(const QModelIndex ¤t, const QMode
|
||||
CANConnection* conn_p = connModel->getAtIdx(selIdx);
|
||||
if(!conn_p) return;
|
||||
|
||||
//because this might have already been setup during the initial setup so tear that one down and then create the normal one.
|
||||
//disconnect(conn_p, SIGNAL(debugOutput(QString)), 0, 0);
|
||||
|
||||
numBuses = conn_p->getNumBuses();
|
||||
int numB = ui->tabBuses->count();
|
||||
for (int i = 0; i < numB; i++) ui->tabBuses->removeTab(0);
|
||||
@@ -475,7 +482,11 @@ CANConnection* ConnectionWindow::create(CANCon::type pTye, QString pPortName, QS
|
||||
/* connect signal */
|
||||
connect(conn_p, SIGNAL(status(CANConStatus)),
|
||||
this, SLOT(connectionStatus(CANConStatus)));
|
||||
|
||||
if (ui->ckEnableConsole->isChecked())
|
||||
{
|
||||
//set up the debug console to operate if we've selected it. Doing so here allows debugging right away during set up
|
||||
connect(conn_p, SIGNAL(debugOutput(QString)), this, SLOT(getDebugText(QString)));
|
||||
}
|
||||
/*TODO add return value and checks */
|
||||
conn_p->start();
|
||||
}
|
||||
|
||||
+112
-7
@@ -12,6 +12,7 @@ MQTT_BUS::MQTT_BUS(QString topicName) :
|
||||
CANConnection(topicName, "mqtt_client", CANCon::MQTT, 1, 4000, true),
|
||||
mTimer(this) /*NB: set this as parent of timer to manage it from working thread */
|
||||
{
|
||||
|
||||
sendDebug("MQTT_BUS()");
|
||||
|
||||
crypto = new SimpleCrypt(Q_UINT64_C(0xdeadbeefface6285));
|
||||
@@ -44,20 +45,32 @@ void MQTT_BUS::piStarted()
|
||||
QSettings settings;
|
||||
QString userName = settings.value("Remote/User", "Anonymous").toString();
|
||||
QString host = settings.value("Remote/Host", "api.savvycan.com").toString();
|
||||
int port = settings.value("Remote/Port", 8333).toInt();
|
||||
int port = settings.value("Remote/Port", 8883).toInt();
|
||||
QByteArray encPass = settings.value("Remote/Pass", "").toByteArray();
|
||||
QByteArray password = crypto->decryptToByteArray(encPass);
|
||||
QByteArray password;
|
||||
if (encPass.length() > 0)
|
||||
password = crypto->decryptToByteArray(encPass);
|
||||
|
||||
if (port == 8883)
|
||||
{
|
||||
QSslConfiguration sslConfig = QSslConfiguration::defaultConfiguration();
|
||||
mqttClient = new QMQTT::Client(host, port, sslConfig);
|
||||
}
|
||||
else
|
||||
{
|
||||
QHostAddress hAddr = QHostInfo::fromName(host).addresses()[0];
|
||||
sendDebug("IP Address of Host: " + hAddr.toString());
|
||||
mqttClient = new QMQTT::Client(hAddr, port);
|
||||
}
|
||||
|
||||
connect(mqttClient, &QMQTT::Client::connected, this, &MQTT_BUS::clientConnected);
|
||||
connect(mqttClient, &QMQTT::Client::error, this, &MQTT_BUS::clientErrored);
|
||||
|
||||
//qDebug() << "User: " << userName << " Pass: " << password;
|
||||
mqttClient->setClientId(genRandomClientID());
|
||||
mqttClient->setUsername(userName);
|
||||
mqttClient->setPassword(password);
|
||||
if (userName.length() > 0) mqttClient->setUsername(userName);
|
||||
if (password.length() > 0) mqttClient->setPassword(password);
|
||||
sendDebug("Attempting to connect to MQTT.");
|
||||
mqttClient->connectToHost();
|
||||
}
|
||||
|
||||
@@ -67,7 +80,7 @@ QString MQTT_BUS::genRandomClientID()
|
||||
{
|
||||
QString output;
|
||||
output.reserve(12);
|
||||
QRandomGenerator gen;
|
||||
QRandomGenerator gen = QRandomGenerator::securelySeeded();
|
||||
for (int i = 0; i < 12; i++)
|
||||
{
|
||||
int val = gen.bounded(0, 62);
|
||||
@@ -81,7 +94,99 @@ QString MQTT_BUS::genRandomClientID()
|
||||
|
||||
void MQTT_BUS::clientErrored(const QMQTT::ClientError error)
|
||||
{
|
||||
qDebug() << QString::number(error);
|
||||
switch (error)
|
||||
{
|
||||
case QMQTT::UnknownError:
|
||||
sendDebug("MQTT Unknown Error");
|
||||
break;
|
||||
case QMQTT::SocketConnectionRefusedError:
|
||||
sendDebug("MQTT Connection Refused");
|
||||
break;
|
||||
case QMQTT::SocketRemoteHostClosedError:
|
||||
sendDebug("MQTT Remote Host Closed The Connection");
|
||||
break;
|
||||
case QMQTT::SocketHostNotFoundError:
|
||||
sendDebug("MQTT Remote Host Not Found");
|
||||
break;
|
||||
case QMQTT::SocketAccessError:
|
||||
sendDebug("MQTT Socket Access Error");
|
||||
break;
|
||||
case QMQTT::SocketResourceError:
|
||||
sendDebug("MQTT Resource Error");
|
||||
break;
|
||||
case QMQTT::SocketTimeoutError:
|
||||
sendDebug("MQTT Timeout Error");
|
||||
break;
|
||||
case QMQTT::SocketDatagramTooLargeError:
|
||||
sendDebug("MQTT Datagram too large");
|
||||
break;
|
||||
case QMQTT::SocketNetworkError:
|
||||
sendDebug("MQTT Network Error");
|
||||
break;
|
||||
case QMQTT::SocketAddressInUseError:
|
||||
sendDebug("MQTT Address In Use ERROR");
|
||||
break;
|
||||
case QMQTT::SocketAddressNotAvailableError:
|
||||
sendDebug("MQTT Address Not Available");
|
||||
break;
|
||||
case QMQTT::SocketUnsupportedSocketOperationError:
|
||||
sendDebug("MQTT Unsupported Operation");
|
||||
break;
|
||||
case QMQTT::SocketUnfinishedSocketOperationError:
|
||||
sendDebug("MQTT Unfinished Socket Operation");
|
||||
break;
|
||||
case QMQTT::SocketProxyAuthenticationRequiredError:
|
||||
sendDebug("MQTT Proxy Auth Required");
|
||||
break;
|
||||
case QMQTT::SocketSslHandshakeFailedError:
|
||||
sendDebug("MQTT SSL Handshake Failure");
|
||||
break;
|
||||
case QMQTT::SocketProxyConnectionRefusedError:
|
||||
sendDebug("MQTT Proxy Connection Refused");
|
||||
break;
|
||||
case QMQTT::SocketProxyConnectionClosedError:
|
||||
sendDebug("MQTT Proxy Connection Closed");
|
||||
break;
|
||||
case QMQTT::SocketProxyConnectionTimeoutError:
|
||||
sendDebug("MQTT Proxy Connection Timeout");
|
||||
break;
|
||||
case QMQTT::SocketProxyNotFoundError:
|
||||
sendDebug("MQTT Proxy Not Found");
|
||||
break;
|
||||
case QMQTT::SocketProxyProtocolError:
|
||||
sendDebug("MQTT Proxy Protocol Error");
|
||||
break;
|
||||
case QMQTT::SocketOperationError:
|
||||
sendDebug("MQTT Socket Operation Error");
|
||||
break;
|
||||
case QMQTT::SocketSslInternalError:
|
||||
sendDebug("MQTT SSL Internal Error");
|
||||
break;
|
||||
case QMQTT::SocketSslInvalidUserDataError:
|
||||
sendDebug("MQTT SSL Invalid User Data");
|
||||
break;
|
||||
case QMQTT::SocketTemporaryError:
|
||||
sendDebug("MQTT Temporary Error");
|
||||
break;
|
||||
case QMQTT::MqttUnacceptableProtocolVersionError:
|
||||
sendDebug("MQTT Unaccepted Protocol Version");
|
||||
break;
|
||||
case QMQTT::MqttIdentifierRejectedError:
|
||||
sendDebug("MQTT Identifier Rejected");
|
||||
break;
|
||||
case QMQTT::MqttServerUnavailableError:
|
||||
sendDebug("MQTT Server Unavailable");
|
||||
break;
|
||||
case QMQTT::MqttBadUserNameOrPasswordError:
|
||||
sendDebug("MQTT Bad Access Credentials");
|
||||
break;
|
||||
case QMQTT::MqttNotAuthorizedError:
|
||||
sendDebug("MQTT Not Authorized");
|
||||
break;
|
||||
case QMQTT::MqttNoPingResponse:
|
||||
sendDebug("MQTT No PING Response");
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
void MQTT_BUS::piSuspend(bool pSuspend)
|
||||
@@ -209,7 +314,7 @@ void MQTT_BUS::clientMessageReceived(const QMQTT::Message& message)
|
||||
|
||||
void MQTT_BUS::clientConnected()
|
||||
{
|
||||
sendDebug("Connecting to MQTT Broker!");
|
||||
sendDebug("Connected to MQTT Broker!");
|
||||
|
||||
mqttClient->subscribe(topicName + "/+", 0); //subscribe to all sub topics to grab the frames.
|
||||
connect(mqttClient, &QMQTT::Client::received, this, &MQTT_BUS::clientMessageReceived);
|
||||
|
||||
Reference in New Issue
Block a user