summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTomasz Sterna <tomek@xiaoka.com>2015-06-19 13:54:36 +0200
committerTomasz Sterna <tomek@xiaoka.com>2015-06-19 13:54:36 +0200
commit0366d22c53a9b2f78bb500f75644fe9d8c94b01a (patch)
tree232281bea890d03999ca77e478df0dd64eb61d1d
parent98aaa3a2292989f05f5c3e683e2dd4f20bb145e3 (diff)
Support HardwarePlatform dependant features
-rw-r--r--daemon/watchconnector.cpp65
-rw-r--r--daemon/watchconnector.h11
2 files changed, 51 insertions, 25 deletions
diff --git a/daemon/watchconnector.cpp b/daemon/watchconnector.cpp
index 32836c7..9993a38 100644
--- a/daemon/watchconnector.cpp
+++ b/daemon/watchconnector.cpp
@@ -71,7 +71,8 @@ bool WatchConnector::WatchVersions::isEmpty() const
WatchConnector::WatchConnector(QObject *parent) :
QObject(parent), l(metaObject()->className()),
- socket(nullptr), is_connected(false), currentPebble(0), _last_address(0)
+ socket(nullptr), is_connected(false),
+ currentPebble(0), _last_address(0), platform(HP_UNKNOWN)
{
reconnectTimer.setSingleShot(true);
QObject::connect(&reconnectTimer, SIGNAL(timeout()), SLOT(connect()));
@@ -79,19 +80,19 @@ WatchConnector::WatchConnector(QObject *parent) :
QObject::connect(&timeSyncTimer, SIGNAL(timeout()), SLOT(time()));
timeSyncTimer.setInterval(4 * 60 * 60 * 1000); // sync time every 4 hours
- firmwareMapping.insert(UNKNOWN, "unknown");
- firmwareMapping.insert(TINTIN_EV1, "ev1");
- firmwareMapping.insert(TINTIN_EV2, "ev2");
- firmwareMapping.insert(TINTIN_EV2_3, "ev2_3");
- firmwareMapping.insert(TINTIN_EV2_4, "ev2_4");
- firmwareMapping.insert(TINTIN_V1_5, "v1_5");
- firmwareMapping.insert(BIANCA, "v2_0");
- firmwareMapping.insert(SNOWY_EVT2, "snowy_evt2");
- firmwareMapping.insert(SNOWY_DVT, "snowy_dvt");
- firmwareMapping.insert(TINTIN_BB, "bigboard");
- firmwareMapping.insert(TINTIN_BB2, "bb2");
- firmwareMapping.insert(SNOWY_BB, "snowy_bb");
- firmwareMapping.insert(SNOWY_BB2, "snowy_bb2");
+ hardwareMapping.insert(HR_UNKNOWN, HWMap(HP_UNKNOWN, "unknown"));
+ hardwareMapping.insert(TINTIN_EV1, HWMap(APLITE, "ev1"));
+ hardwareMapping.insert(TINTIN_EV2, HWMap(APLITE, "ev2"));
+ hardwareMapping.insert(TINTIN_EV2_3, HWMap(APLITE, "ev2_3"));
+ hardwareMapping.insert(TINTIN_EV2_4, HWMap(APLITE, "ev2_4"));
+ hardwareMapping.insert(TINTIN_V1_5, HWMap(APLITE, "v1_5"));
+ hardwareMapping.insert(BIANCA, HWMap(APLITE, "v2_0"));
+ hardwareMapping.insert(SNOWY_EVT2, HWMap(BASALT, "snowy_evt2"));
+ hardwareMapping.insert(SNOWY_DVT, HWMap(BASALT, "snowy_dvt"));
+ hardwareMapping.insert(TINTIN_BB, HWMap(APLITE, "bigboard"));
+ hardwareMapping.insert(TINTIN_BB2, HWMap(APLITE, "bb2"));
+ hardwareMapping.insert(SNOWY_BB, HWMap(BASALT, "snowy_bb"));
+ hardwareMapping.insert(SNOWY_BB2, HWMap(BASALT, "snowy_bb2"));
setEndpointHandler(watchVERSION, [this](const QByteArray &data) {
Unpacker u(data);
@@ -103,7 +104,7 @@ WatchConnector::WatchConnector(QObject *parent) :
_versions.main.commit = u.readFixedString(8);
_versions.main.is_recovery = u.read<quint8>();
_versions.main.hw_revision = HardwareRevision(u.read<quint8>());
- _versions.main.hw_string = firmwareMapping.value(_versions.main.hw_revision);
+ _versions.main.hw_string = hardwareMapping.value(_versions.main.hw_revision).second;
_versions.main.metadata_version = u.read<quint8>();
_versions.safe.build = QDateTime::fromTime_t(u.read<quint32>());
@@ -111,7 +112,7 @@ WatchConnector::WatchConnector(QObject *parent) :
_versions.safe.commit = u.readFixedString(8);
_versions.safe.is_recovery = u.read<quint8>();
_versions.safe.hw_revision = HardwareRevision(u.read<quint8>());
- _versions.safe.hw_string = firmwareMapping.value(_versions.safe.hw_revision);
+ _versions.safe.hw_string = hardwareMapping.value(_versions.safe.hw_revision).second;
_versions.safe.metadata_version = u.read<quint8>();
_versions.bootLoaderBuild = QDateTime::fromTime_t(u.read<quint32>());
@@ -119,6 +120,8 @@ WatchConnector::WatchConnector(QObject *parent) :
_versions.serialNumber = u.readFixedString(12);
_versions.address = u.readBytes(6);
+ platform = hardwareMapping.value(_versions.safe.hw_revision).first;
+
if (u.bad()) {
qCWarning(l) << "short read while reading firmware version";
} else {
@@ -577,15 +580,31 @@ QString WatchConnector::timeStamp()
void WatchConnector::sendNotification(uint lead, QString sender, QString data, QString subject)
{
- QStringList tmp;
- tmp.append(sender);
- tmp.append(data);
- tmp.append(timeStamp());
- if (lead == leadEMAIL) tmp.append(subject);
+ switch (platform) {
+ case HP_UNKNOWN:
+ qCWarning(l) << "Tried sending notification to UNKNOWN watch platform" << lead << sender << data << subject;
+ break;
+ case APLITE: {
+ QStringList tmp;
+ tmp.append(sender);
+ tmp.append(data);
+ tmp.append(timeStamp());
+ if (lead == leadEMAIL) tmp.append(subject);
+
+ QByteArray res = buildMessageData(lead, tmp);
- QByteArray res = buildMessageData(lead, tmp);
+ sendMessage(watchNOTIFICATION, res);
+ }
+ break;
+ case BASALT: {
+ qCWarning(l) << "Tried sending notification to unsupported watch platform" << lead << sender << data << subject;
+ }
+ break;
+ default:
+ qCWarning(l) << "Tried sending notification to unsupported watch platform" << platform << ":" << lead << sender << data << subject;
+ break;
+ }
- sendMessage(watchNOTIFICATION, res);
}
void WatchConnector::sendSMSNotification(QString sender, QString data)
diff --git a/daemon/watchconnector.h b/daemon/watchconnector.h
index 1bedb4a..4369d87 100644
--- a/daemon/watchconnector.h
+++ b/daemon/watchconnector.h
@@ -152,7 +152,7 @@ public:
};
enum HardwareRevision {
- UNKNOWN = 0,
+ HR_UNKNOWN = 0,
TINTIN_EV1 = 1,
TINTIN_EV2 = 2,
TINTIN_EV2_3 = 3,
@@ -167,7 +167,13 @@ public:
SNOWY_BB = 0xFD,
SNOWY_BB2 = 0xFC
};
- QMap<HardwareRevision, QString> firmwareMapping;
+ enum HardwarePlatform {
+ HP_UNKNOWN = 0,
+ APLITE,
+ BASALT
+ };
+ typedef QPair<HardwarePlatform,QString> HWMap;
+ QMap<HardwareRevision, HWMap> hardwareMapping;
struct SoftwareVersion {
QDateTime build;
@@ -273,6 +279,7 @@ private:
int currentPebble;
quint64 _last_address;
WatchVersions _versions;
+ HardwarePlatform platform;
};
QDebug operator<< (QDebug d, const WatchConnector::SoftwareVersion &ver);