summaryrefslogtreecommitdiff
path: root/saltoqd/toqconnection.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'saltoqd/toqconnection.cpp')
-rw-r--r--saltoqd/toqconnection.cpp36
1 files changed, 18 insertions, 18 deletions
diff --git a/saltoqd/toqconnection.cpp b/saltoqd/toqconnection.cpp
index 564b7d2..9468aa8 100644
--- a/saltoqd/toqconnection.cpp
+++ b/saltoqd/toqconnection.cpp
@@ -51,12 +51,7 @@ quint32 ToqConnection::checksum(QIODevice *dev)
return crc;
}
-bool ToqConnection::isConnected() const
-{
- return _socket && _socket->state() == QBluetoothSocket::ConnectedState;
-}
-
-quint16 ToqConnection::nextTransactionId()
+quint16 ToqConnection::newTransactionId()
{
if (_lastTransactionId >= 0xFFFA) {
// The last transaction ids (as well as 0) seem to be reserved
@@ -133,7 +128,7 @@ void ToqConnection::tryConnect()
qDebug() << "Connecting to" << _address.toString();
- _socket->connectToService(_address, 1, QIODevice::ReadWrite);
+ _socket->connectToService(_address, 1);
}
void ToqConnection::handleSocketConnected()
@@ -142,23 +137,27 @@ void ToqConnection::handleSocketConnected()
Q_ASSERT(_socket);
_reconnectTimer->stop();
emit connected();
+ emit connectedChanged();
}
void ToqConnection::handleSocketDisconnected()
{
- qDebug() << "Disconnected";
- Q_ASSERT(_socket);
- _socket->deleteLater();
- _socket = 0;
- _reconnectTimer->start();
- emit disconnected();
+ if (_socket) {
+ qDebug() << "Disconnected";
+ _socket->deleteLater();
+ _socket = 0;
+ _reconnectTimer->start();
+ emit disconnected();
+ emit connectedChanged();
+ }
}
void ToqConnection::handleSocketError(QBluetoothSocket::SocketError error)
{
- Q_ASSERT(_socket);
- qWarning() << error << _socket->errorString();
- _socket->disconnectFromService();
+ if (_socket) {
+ qWarning() << error << _socket->errorString();
+ _socket->disconnectFromService();
+ }
}
void ToqConnection::handleSocketData()
@@ -188,7 +187,8 @@ void ToqConnection::handleSocketData()
// We can now safely remove the message from the input buffer,
// as we know the entire message is in the input buffer.
QByteArray data = _socket->read(HEADER_LENGTH + message_length - 4);
- emit messageReceived(unpackMessage(data));
+ Message msg = unpackMessage(data);
+ if (msg.transactionId > _lastTransactionId) _lastTransactionId = msg.transactionId;
+ emit messageReceived(msg);
}
}
-