From bafc0ad776ac0bb8ca6af0d235a4cd14d8523fef Mon Sep 17 00:00:00 2001 From: x29a <0.x29a.0@gmail.com> Date: Wed, 5 Jul 2017 08:44:48 +0200 Subject: [PATCH] fix answer for phoneversion. watch now does not keep on asking. thanks to jolla implementation --- BBPebbleLib/Pebble.cpp | 43 ++++++++++++++++++++++++++++++++---------- 1 file changed, 33 insertions(+), 10 deletions(-) diff --git a/BBPebbleLib/Pebble.cpp b/BBPebbleLib/Pebble.cpp index c3026ea..e1a7259 100644 --- a/BBPebbleLib/Pebble.cpp +++ b/BBPebbleLib/Pebble.cpp @@ -67,17 +67,40 @@ void Pebble::onDataReceived(QBluetoothSocket &bt_socket) void Pebble::onDataReadFinished(quint16 endPoint, const QByteArray &payload){ //PhoneVersion is received immediatly after connecting to Pebble. We must respond to it first. - if(!pebbleReady && endPoint == Enums::Endpoint::PhoneVersion){ - QByteArray payloadToSend; - QDataStream dataStream(&payloadToSend, QIODevice::WriteOnly); - dataStream << (quint8)PEBBLE_CLIENT_VERSION << (quint8)0xFF << (quint8)0xFF << (quint8)0xFF << (quint8)0xFF; - dataStream << (quint32) Enums::Session::GAMMA_RAY; - dataStream << (quint32) (Enums::Client::SMS | Enums::Client::TELEPHONY | Enums::Client::ANDROID); - - sendDataToPebble(Enums::Endpoint::PhoneVersion, payloadToSend); + if(!pebbleReady && endPoint == Enums::Endpoint::PhoneVersion) { + unsigned int sessionCap = Enums::Session::GAMMA_RAY; + unsigned int remoteCap = Enums::Client::TELEPHONY | Enums::Client::SMS | Enums::Client::ANDROID; + QByteArray res; + + //Prefix + res.append(0x01); + res.append(0xff); + res.append(0xff); + res.append(0xff); + res.append(0xff); + + //Session Capabilities + res.append((char)((sessionCap >> 24) & 0xff)); + res.append((char)((sessionCap >> 16) & 0xff)); + res.append((char)((sessionCap >> 8) & 0xff)); + res.append((char)(sessionCap & 0xff)); + + //Remote Capabilities + res.append((char)((remoteCap >> 24) & 0xff)); + res.append((char)((remoteCap >> 16) & 0xff)); + res.append((char)((remoteCap >> 8) & 0xff)); + res.append((char)(remoteCap & 0xff)); + + //Version Magic + res.append((char)0x02); + + //Append Version + res.append((char)0x02); //Major + res.append((char)0x00); //Minor + res.append((char)0x00); //Bugfix + + sendDataToPebble(Enums::Endpoint::PhoneVersion, res); pebbleReady = true; - qDebug() << "Phone version asked, just replied. But does it really work?"; - } }