diff options
| author | Tomasz Sterna <tomek@xiaoka.com> | 2015-04-17 14:06:50 +0200 |
|---|---|---|
| committer | Tomasz Sterna <tomek@xiaoka.com> | 2015-04-17 14:06:50 +0200 |
| commit | 453e9ea4ea8d56ad84c2329cb95f1dfed279be95 (patch) | |
| tree | 0987f90f3c9d0302dcc7dde7d1854af38f04f419 /daemon | |
| parent | e059c47ff2986c329d075f6f5fbedbf19cff430d (diff) | |
Better watch versions handling
Didn't react on firmware version change.
Diffstat (limited to 'daemon')
| -rw-r--r-- | daemon/manager.h | 3 | ||||
| -rw-r--r-- | daemon/watchconnector.cpp | 40 | ||||
| -rw-r--r-- | daemon/watchconnector.h | 6 |
3 files changed, 27 insertions, 22 deletions
diff --git a/daemon/manager.h b/daemon/manager.h index d04b730..de01dbb 100644 --- a/daemon/manager.h +++ b/daemon/manager.h @@ -124,8 +124,7 @@ public: inline QString Name() const { return pebble()["Name"].toString(); } inline QString Address() const { return pebble()["Address"].toString(); } - inline QVariantMap Info() const { return manager()->watch->versions().serialNumber.isEmpty() - ? QVariantMap() : manager()->watch->versions().toMap(); } + inline QVariantMap Info() const { return manager()->watch->versions().toMap(); } inline bool Connected() const { return manager()->watch->isConnected(); } inline QString AppUuid() const { return manager()->currentAppUuid.toString(); } diff --git a/daemon/watchconnector.cpp b/daemon/watchconnector.cpp index 54048de..8d1dbac 100644 --- a/daemon/watchconnector.cpp +++ b/daemon/watchconnector.cpp @@ -28,7 +28,7 @@ QDebug operator<< (QDebug d, const WatchConnector::WatchVersions &ver) { return d; } -QVariantMap WatchConnector::SoftwareVersion::toMap() +QVariantMap WatchConnector::SoftwareVersion::toMap() const { QVariantMap map; map.insert("version", this->version); @@ -40,16 +40,28 @@ QVariantMap WatchConnector::SoftwareVersion::toMap() return map; } -QVariantMap WatchConnector::WatchVersions::toMap() +QVariantMap WatchConnector::WatchVersions::toMap() const { QVariantMap map; - map.insert("bootloader", this->bootLoaderBuild.toTime_t()); - map.insert("serial", this->serialNumber); - map.insert("address", this->address.toHex()); - map.insertMulti("firmware", this->main.toMap()); - map.insertMulti("firmware", this->safe.toMap()); + if (!isEmpty()) { + map.insert("bootloader", this->bootLoaderBuild.toTime_t()); + map.insert("serial", this->serialNumber); + map.insert("address", this->address.toHex()); + map.insertMulti("firmware", this->main.toMap()); + map.insertMulti("firmware", this->safe.toMap()); + } return map; } +void WatchConnector::WatchVersions::clear() +{ + serialNumber.clear(); + address.clear(); +} + +bool WatchConnector::WatchVersions::isEmpty() const +{ + return serialNumber.isEmpty() || address.isEmpty(); +} WatchConnector::WatchConnector(QObject *parent) : QObject(parent), l(metaObject()->className()), socket(nullptr), is_connected(false) @@ -151,15 +163,9 @@ void WatchConnector::handleWatch(const QString &name, const QString &address) socket->deleteLater(); } - bool emit_name = (_last_name != name); _last_name = name; _last_address = address; - if (emit_name) emit nameChanged(); - - if (emit_name) { - // If we've changed names, don't reuse cached serial number! - _versions.serialNumber.clear(); - } + _versions.clear(); qCDebug(l) << "Creating socket"; socket = new QBluetoothSocket(QBluetoothServiceInfo::RfcommProtocol); @@ -293,11 +299,9 @@ void WatchConnector::onConnected() qCDebug(l) << "Found" << writeData.length() << "bytes in write buffer - resending"; sendData(writeData); } - if (_versions.serialNumber.isEmpty()) { - // Ask for version information from the watch - sendMessage(watchVERSION, QByteArray(1, 0)); - } + sendMessage(watchVERSION, QByteArray(1, 0)); emit connectedChanged(); + if (name() != _last_name) emit nameChanged(); } } diff --git a/daemon/watchconnector.h b/daemon/watchconnector.h index 8d78356..18f5fba 100644 --- a/daemon/watchconnector.h +++ b/daemon/watchconnector.h @@ -169,7 +169,7 @@ public: QString hw_string; quint8 metadata_version; - QVariantMap toMap(); + QVariantMap toMap() const; }; struct WatchVersions { @@ -180,7 +180,9 @@ public: QString serialNumber; QByteArray address; - QVariantMap toMap(); + QVariantMap toMap() const; + void clear(); + bool isEmpty() const; }; typedef QMap<int, QVariant> Dict; |
