summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTomasz Sterna <tomek@xiaoka.com>2014-07-12 23:10:16 +0200
committerTomasz Sterna <tomek@xiaoka.com>2014-07-12 23:10:16 +0200
commit8420e383b5f01d2775c6e845868b7b1cebf1263a (patch)
tree5ff2187aef856572224b0835cef779e07d7d9ab6
parent84e775d768f0675ee733132b3762db647f1409ac (diff)
parente677fac063d89907b80d1eec3b58f3234e9c5276 (diff)
Merge pull request #6 from smurfy/phone_version
Adding support for PHONE_VERSION endpoint.
-rw-r--r--daemon/watchconnector.cpp40
-rw-r--r--daemon/watchconnector.h24
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);