summaryrefslogtreecommitdiff
path: root/daemon
diff options
context:
space:
mode:
Diffstat (limited to 'daemon')
-rw-r--r--daemon/manager.h3
-rw-r--r--daemon/watchconnector.cpp40
-rw-r--r--daemon/watchconnector.h6
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;