diff options
Diffstat (limited to 'daemon/watchconnector.cpp')
| -rw-r--r-- | daemon/watchconnector.cpp | 128 |
1 files changed, 66 insertions, 62 deletions
diff --git a/daemon/watchconnector.cpp b/daemon/watchconnector.cpp index 48fd52f..0ce0607 100644 --- a/daemon/watchconnector.cpp +++ b/daemon/watchconnector.cpp @@ -1,6 +1,7 @@ #include "watchconnector.h" #include <QTimer> #include <QDateTime> +#include <QMetaEnum> using namespace watch; @@ -76,51 +77,11 @@ void WatchConnector::handleWatch(const QString &name, const QString &address) socket->connectToService(QBluetoothAddress(address), 1); } -QString WatchConnector::decodeEndpoint(unsigned int val) +QString WatchConnector::decodeEndpoint(uint val) { - //FIXME: Create a map of these values - switch(val) { - case watchTIME: - return "TIME"; - case watchVERSION: - return "VERSION"; - case watchPHONE_VERSION: - return "PHONE_VERSION"; - case watchSYSTEM_MESSAGE: - return "SYSTEM_MESSAGE"; - case watchMUSIC_CONTROL: - return "MUSIC_CONTROL"; - case watchPHONE_CONTROL: - return "PHONE_CONTROL"; - case watchAPPLICATION_MESSAGE: - return "APP_MSG"; - case watchLAUNCHER: - return "LAUNCHER"; - case watchLOGS: - return "LOGS"; - case watchPING: - return "PING"; - case watchLOG_DUMP: - return "DUMP"; - case watchRESET: - return "RESET"; - case watchAPP: - return "APP"; - case watchAPP_LOGS: - return "APP_LOGS"; - case watchNOTIFICATION: - return "NOTIFICATION"; - case watchRESOURCE: - return "RESOURCE"; - case watchAPP_MANAGER: - return "APP_MANAG"; - case watchSCREENSHOT: - return "SCREENSHOT"; - case watchPUTBYTES: - return "PUTBYTES"; - default: - return "Unknown: "+ QString::number(val); - } + QMetaEnum Endpoints = staticMetaObject.enumerator(staticMetaObject.indexOfEnumerator("Endpoints")); + const char *endpoint = Endpoints.valueToKey(val); + return endpoint ? QString(endpoint) : QString("watchUNKNOWN_%1").arg(val); } void WatchConnector::decodeMsg(QByteArray data) @@ -136,13 +97,8 @@ void WatchConnector::decodeMsg(QByteArray data) logger()->debug() << "Length:" << datalen << " Endpoint:" << decodeEndpoint(endpoint); logger()->debug() << "Data:" << data.mid(index).toHex(); - if (endpoint == watchPHONE_CONTROL) { - if (data.length() >= 5) { - if (data.at(4) == callHANGUP) { - emit hangup(); - } - } - } + + emit messageDecoded(endpoint, datalen, data); } void WatchConnector::onReadSocket() @@ -199,7 +155,7 @@ void WatchConnector::sendData(const QByteArray &data) socket->write(data); } -void WatchConnector::sendMessage(unsigned int endpoint, QByteArray data) +void WatchConnector::sendMessage(uint endpoint, QByteArray data) { logger()->debug() << "Sending message"; QByteArray msg; @@ -229,7 +185,7 @@ void WatchConnector::buildData(QByteArray &res, QStringList data) } } -QByteArray WatchConnector::buildMessageData(unsigned int lead, QStringList data) +QByteArray WatchConnector::buildMessageData(uint lead, QStringList data) { QByteArray res; res.append(lead & 0xFF); @@ -238,7 +194,43 @@ QByteArray WatchConnector::buildMessageData(unsigned int lead, QStringList data) return res; } -void WatchConnector::ping(unsigned int val) +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(uint val) { QByteArray res; res.append((char)0); @@ -256,13 +248,13 @@ QString WatchConnector::timeStamp() return QString::number(QDateTime::currentMSecsSinceEpoch()); } -void WatchConnector::sendNotification(unsigned int lead, QString sender, QString data, QString subject) +void WatchConnector::sendNotification(uint lead, QString sender, QString data, QString subject) { QStringList tmp; tmp.append(sender); tmp.append(data); tmp.append(timeStamp()); - if (lead == 0) tmp.append(subject); + if (lead == leadEMAIL) tmp.append(subject); QByteArray res = buildMessageData(lead, tmp); @@ -271,15 +263,27 @@ void WatchConnector::sendNotification(unsigned int lead, QString sender, QString void WatchConnector::sendSMSNotification(QString sender, QString data) { - sendNotification(1, sender, data, ""); + sendNotification(leadSMS, sender, data, ""); } void WatchConnector::sendEmailNotification(QString sender, QString data, QString subject) { - sendNotification(0, sender, data, subject); + sendNotification(leadEMAIL, sender, data, subject); +} + +void WatchConnector::sendMusicNowPlaying(QString track, QString album, QString artist) +{ + QStringList tmp; + tmp.append(track.left(30)); + tmp.append(album.left(30)); + tmp.append(artist.left(30)); + + QByteArray res = buildMessageData(leadNOW_PLAYING_DATA, tmp); + + sendMessage(watchMUSIC_CONTROL, res); } -void WatchConnector::phoneControl(char act, unsigned int cookie, QStringList datas) +void WatchConnector::phoneControl(char act, uint cookie, QStringList datas) { QByteArray head; head.append((char)act); @@ -292,7 +296,7 @@ void WatchConnector::phoneControl(char act, unsigned int cookie, QStringList dat sendMessage(watchPHONE_CONTROL, head); } -void WatchConnector::ring(QString number, QString name, bool incoming, unsigned int cookie) +void WatchConnector::ring(QString number, QString name, bool incoming, uint cookie) { QStringList tmp; tmp.append(number); @@ -306,12 +310,12 @@ void WatchConnector::ring(QString number, QString name, bool incoming, unsigned phoneControl(act, cookie, tmp); } -void WatchConnector::startPhoneCall(unsigned int cookie) +void WatchConnector::startPhoneCall(uint cookie) { phoneControl(callSTART, cookie, QStringList()); } -void WatchConnector::endPhoneCall(unsigned int cookie) +void WatchConnector::endPhoneCall(uint cookie) { phoneControl(callEND, cookie, QStringList()); } |
