diff options
| author | Tomasz Sterna <tomek@xiaoka.com> | 2014-07-12 23:10:16 +0200 |
|---|---|---|
| committer | Tomasz Sterna <tomek@xiaoka.com> | 2014-07-12 23:10:16 +0200 |
| commit | 8420e383b5f01d2775c6e845868b7b1cebf1263a (patch) | |
| tree | 5ff2187aef856572224b0835cef779e07d7d9ab6 | |
| parent | 84e775d768f0675ee733132b3762db647f1409ac (diff) | |
| parent | e677fac063d89907b80d1eec3b58f3234e9c5276 (diff) | |
Merge pull request #6 from smurfy/phone_version
Adding support for PHONE_VERSION endpoint.
| -rw-r--r-- | daemon/watchconnector.cpp | 40 | ||||
| -rw-r--r-- | daemon/watchconnector.h | 24 |
2 files changed, 64 insertions, 0 deletions
diff --git a/daemon/watchconnector.cpp b/daemon/watchconnector.cpp index 088384d..b1b9587 100644 --- a/daemon/watchconnector.cpp +++ b/daemon/watchconnector.cpp @@ -136,12 +136,16 @@ void WatchConnector::decodeMsg(QByteArray data) logger()->debug() << "Length:" << datalen << " Endpoint:" << decodeEndpoint(endpoint); logger()->debug() << "Data:" << data.mid(index).toHex(); + + //TODO: move the handling to a seperate method/class if (endpoint == watchPHONE_CONTROL) { if (data.length() >= 5) { if (data.at(4) == callHANGUP) { emit hangup(); } } + } else if (endpoint == watchPHONE_VERSION) { + this->sendPhoneVersion(); } } @@ -237,6 +241,42 @@ QByteArray WatchConnector::buildMessageData(unsigned int lead, QStringList data) return res; } +void WatchConnector::sendPhoneVersion() +{ + unsigned int sessionCap = sessionCapGAMMA_RAY; + unsigned int remoteCap = remoteCapTELEPHONY | remoteCapSMS | osANDROID; + 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 + + sendMessage(watchPHONE_VERSION, res); +} + void WatchConnector::ping(unsigned int val) { QByteArray res; diff --git a/daemon/watchconnector.h b/daemon/watchconnector.h index 36d0936..39e898a 100644 --- a/daemon/watchconnector.h +++ b/daemon/watchconnector.h @@ -85,6 +85,29 @@ public: callSTART = 8, callEND = 9 }; + enum { + sessionCapGAMMA_RAY = 0x80000000 + }; + enum { + remoteCapTELEPHONY = 16, + remoteCapSMS = 32, + remoteCapGPS = 64, + remoteCapBTLE = 128, + remoteCapCAMERA_REAR = 256, + remoteCapACCEL = 512, + remoteCapGYRO = 1024, + remoteCapCOMPASS = 2048 + }; + enum { + osUNKNOWN = 0, + osIOS = 1, + osANDROID = 2, + osOSX = 3, + osLINUX = 4, + osWINDOWS = 5 + }; + + explicit WatchConnector(QObject *parent = 0); virtual ~WatchConnector(); bool isConnected() const { return is_connected; } @@ -106,6 +129,7 @@ public slots: void sendNotification(unsigned int lead, QString sender, QString data, QString subject); void sendSMSNotification(QString sender, QString data); void sendEmailNotification(QString sender, QString data, QString subject); + void sendPhoneVersion(); void buildData(QByteArray &res, QStringList data); QByteArray buildMessageData(unsigned int lead, QStringList data); |
