Fixed up MQTT connection code, made connection window hook up setup
debugging to the console if it is enabled.
This commit is contained in:
+114
-9
@@ -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);
|
||||
|
||||
QSslConfiguration sslConfig = QSslConfiguration::defaultConfiguration();
|
||||
mqttClient = new QMQTT::Client(host, port, sslConfig);
|
||||
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