diff options
Diffstat (limited to 'daemon')
| -rw-r--r-- | daemon/manager.cpp | 1 | ||||
| -rw-r--r-- | daemon/manager.h | 3 | ||||
| -rw-r--r-- | daemon/watchconnector.cpp | 25 | ||||
| -rw-r--r-- | daemon/watchconnector.h | 5 |
4 files changed, 34 insertions, 0 deletions
diff --git a/daemon/manager.cpp b/daemon/manager.cpp index 9ba90be..ca3830f 100644 --- a/daemon/manager.cpp +++ b/daemon/manager.cpp @@ -70,6 +70,7 @@ Manager::Manager(Settings *settings, QObject *parent) : connect(dbus, &DBusConnector::pebbleChanged, proxy, &PebbledProxy::NameChanged); connect(dbus, &DBusConnector::pebbleChanged, proxy, &PebbledProxy::AddressChanged); connect(watch, &WatchConnector::connectedChanged, proxy, &PebbledProxy::ConnectedChanged); + connect(watch, &WatchConnector::versionsChanged, proxy, &PebbledProxy::InfoChanged); connect(bank, &BankManager::slotsChanged, proxy, &PebbledProxy::AppSlotsChanged); connect(apps, &AppManager::appsChanged, proxy, &PebbledProxy::AllAppsChanged); diff --git a/daemon/manager.h b/daemon/manager.h index 9a4ed0f..9825339 100644 --- a/daemon/manager.h +++ b/daemon/manager.h @@ -107,6 +107,7 @@ class PebbledProxy : public QObject, protected QDBusContext Q_PROPERTY(QString Name READ Name NOTIFY NameChanged) Q_PROPERTY(QString Address READ Address NOTIFY AddressChanged) + Q_PROPERTY(QVariantMap Info READ Info NOTIFY InfoChanged) Q_PROPERTY(bool Connected READ Connected NOTIFY ConnectedChanged) Q_PROPERTY(QString AppUuid READ AppUuid NOTIFY AppUuidChanged) Q_PROPERTY(QStringList AppSlots READ AppSlots NOTIFY AppSlotsChanged) @@ -121,6 +122,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().toMap(); } inline bool Connected() const { return manager()->watch->isConnected(); } inline QString AppUuid() const { return manager()->currentAppUuid.toString(); } @@ -147,6 +149,7 @@ public slots: signals: void NameChanged(); void AddressChanged(); + void InfoChanged(); void ConnectedChanged(); void AppUuidChanged(); void AppSlotsChanged(); diff --git a/daemon/watchconnector.cpp b/daemon/watchconnector.cpp index f992847..ec9bc20 100644 --- a/daemon/watchconnector.cpp +++ b/daemon/watchconnector.cpp @@ -28,6 +28,29 @@ QDebug operator<< (QDebug d, const WatchConnector::WatchVersions &ver) { return d; } +QVariantMap WatchConnector::SoftwareVersion::toMap() +{ + QVariantMap map; + map.insert("version", this->version); + map.insert("build", this->build.toTime_t()); + map.insert("commit", this->commit); + map.insert("hardware", this->hw_string); + map.insert("metadata", this->metadata_version); + map.insert("recovery", this->is_recovery); + return map; +} + +QVariantMap WatchConnector::WatchVersions::toMap() +{ + 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()); + return map; +} + WatchConnector::WatchConnector(QObject *parent) : QObject(parent), l(metaObject()->className()), socket(nullptr), is_connected(false) { @@ -72,6 +95,8 @@ WatchConnector::WatchConnector(QObject *parent) : if (u.bad()) { qCWarning(l) << "short read while reading firmware version"; + } else { + emit versionsChanged(); } qCDebug(l) << "hardware information:" << _versions; diff --git a/daemon/watchconnector.h b/daemon/watchconnector.h index 400908c..7ee9bc8 100644 --- a/daemon/watchconnector.h +++ b/daemon/watchconnector.h @@ -197,6 +197,8 @@ public: HardwareRevision hw_revision; QString hw_string; quint8 metadata_version; + + QVariantMap toMap(); }; struct WatchVersions { @@ -206,6 +208,8 @@ public: QString hardwareRevision; QString serialNumber; QByteArray address; + + QVariantMap toMap(); }; typedef QMap<int, QVariant> Dict; @@ -233,6 +237,7 @@ public: signals: void nameChanged(); + void versionsChanged(); void connectedChanged(); public slots: |
