summaryrefslogtreecommitdiff
path: root/daemon/watchconnector.h
diff options
context:
space:
mode:
authorTomasz Sterna <tomek@xiaoka.com>2015-01-03 16:38:02 +0100
committerTomasz Sterna <tomek@xiaoka.com>2015-01-03 19:07:48 +0100
commit4e7da1944f5fa75a0739c0757d40a8102f045365 (patch)
tree5f3fe179256536e4135eb4d5031a1d754af5e26c /daemon/watchconnector.h
parent4150005566bec7827ce1cdd759a2397d47eba583 (diff)
parente6ec758b364fcaf9fda35e56740c3fcd7e8fe25e (diff)
Merge remote-tracking branch 'javispedro/js-testing'
Conflicts: daemon/daemon.pro daemon/dbusconnector.cpp daemon/manager.cpp daemon/watchcommands.cpp daemon/watchcommands.h daemon/watchconnector.cpp daemon/watchconnector.h log4qt-debug.conf log4qt-release.conf rpm/pebble.spec rpm/pebble.yaml
Diffstat (limited to 'daemon/watchconnector.h')
-rw-r--r--daemon/watchconnector.h94
1 files changed, 74 insertions, 20 deletions
diff --git a/daemon/watchconnector.h b/daemon/watchconnector.h
index fa8d18b..6c28e88 100644
--- a/daemon/watchconnector.h
+++ b/daemon/watchconnector.h
@@ -30,6 +30,7 @@
#ifndef WATCHCONNECTOR_H
#define WATCHCONNECTOR_H
+#include <functional>
#include <QObject>
#include <QPointer>
#include <QStringList>
@@ -39,21 +40,18 @@
#include <QBluetoothServiceInfo>
#include <QLoggingCategory>
-namespace watch
-{
-
class WatchConnector : public QObject
{
Q_OBJECT
QLoggingCategory l;
- Q_ENUMS(Endpoints)
+ Q_ENUMS(Endpoint)
Q_PROPERTY(QString name READ name NOTIFY nameChanged)
Q_PROPERTY(QString connected READ isConnected NOTIFY connectedChanged)
public:
- enum Endpoints {
+ enum Endpoint {
watchTIME = 11,
watchVERSION = 16,
watchPHONE_VERSION = 17,
@@ -73,6 +71,8 @@ public:
watchAPP_MANAGER = 6000,
watchDATA_LOGGING = 6778,
watchSCREENSHOT = 8000,
+ watchFILE_MANAGER = 8181,
+ watchCORE_DUMP = 9000,
watchPUTBYTES = 48879
};
enum {
@@ -94,8 +94,7 @@ public:
musicPREVIOUS = 5,
musicVOLUME_UP = 6,
musicVOLUME_DOWN = 7,
- musicGET_NOW_PLAYING = 8,
- musicSEND_NOW_PLAYING = 9
+ musicGET_NOW_PLAYING = 8
};
enum SystemMessage {
systemFIRMWARE_AVAILABLE = 0,
@@ -107,6 +106,28 @@ public:
systemBLUETOOTH_START_DISCOVERABLE = 6,
systemBLUETOOTH_END_DISCOVERABLE = 7
};
+ enum AppManager {
+ appmgrGET_APPBANK_STATUS = 1,
+ appmgrREMOVE_APP = 2,
+ appmgrREFRESH_APP = 3,
+ appmgrGET_APPBANK_UUIDS = 5
+ };
+ enum AppMessage {
+ appmsgPUSH = 1,
+ appmsgREQUEST = 2,
+ appmsgACK = 0xFF,
+ appmsgNACK = 0x7F
+ };
+ enum DataLogMessage {
+ datalogOPEN = 1,
+ datalogDATA = 2,
+ datalogCLOSE = 3,
+ datalogTIMEOUT = 7
+ };
+ enum {
+ launcherSTARTED = 1,
+ launcherSTOPPED = 0
+ };
enum {
leadEMAIL = 0,
leadSMS = 1,
@@ -135,27 +156,59 @@ public:
osLINUX = 4,
osWINDOWS = 5
};
+ enum UploadType {
+ uploadFIRMWARE = 1,
+ uploadRECOVERY = 2,
+ uploadSYS_RESOURCES = 3,
+ uploadRESOURCES = 4,
+ uploadBINARY = 5,
+ uploadFILE = 6,
+ uploadWORKER = 7
+ };
+ enum PutBytesCommand {
+ putbytesINIT = 1,
+ putbytesSEND = 2,
+ putbytesCOMMIT = 3,
+ putbytesABORT = 4,
+ putbytesCOMPLETE = 5
+ };
+ typedef QMap<int, QVariant> Dict;
+ enum DictItemType {
+ typeBYTES,
+ typeSTRING,
+ typeUINT,
+ typeINT
+ };
+
+ typedef std::function<bool(const QByteArray &)> EndpointHandlerFunc;
explicit WatchConnector(QObject *parent = 0);
virtual ~WatchConnector();
- bool isConnected() const { return is_connected; }
- QString name() const { return socket != nullptr ? socket->peerName() : ""; }
- QString timeStamp();
- QString decodeEndpoint(uint val);
+ inline bool isConnected() const { return is_connected; }
+ inline QString name() const { return socket != nullptr ? socket->peerName() : ""; }
+ inline QString serialNumber() const { return _serialNumber; }
+
+ void setEndpointHandler(uint endpoint, const EndpointHandlerFunc &func);
+ void clearEndpointHandler(uint endpoint);
+
+ static QString timeStamp();
+ static QString decodeEndpoint(uint val);
signals:
- void messageReceived(QString peer, QString msg);
- void messageDecoded(uint endpoint, QByteArray data);
void nameChanged();
void connectedChanged();
public slots:
- void sendData(const QByteArray &data);
- void sendMessage(uint endpoint, QByteArray data);
+ void deviceConnect(const QString &name, const QString &address);
+ void disconnect();
+ void reconnect();
+
+ void sendMessage(uint endpoint, const QByteArray &data, const EndpointHandlerFunc &callback = EndpointHandlerFunc());
void ping(uint val);
void time();
+
void sendNotification(uint lead, QString sender, QString data, QString subject);
void sendSMSNotification(QString sender, QString data);
void sendEmailNotification(QString sender, QString data, QString subject);
@@ -172,8 +225,7 @@ public slots:
void startPhoneCall(uint cookie=0);
void endPhoneCall(uint cookie=0);
- void deviceConnect(const QString &name, const QString &address);
- void disconnect();
+private slots:
void deviceDiscovered(const QBluetoothDeviceInfo&);
void handleWatch(const QString &name, const QString &address);
void onReadSocket();
@@ -181,18 +233,20 @@ public slots:
void onConnected();
void onDisconnected();
void onError(QBluetoothSocket::SocketError error);
- void reconnect();
private:
- void decodeMsg(QByteArray data);
+ void sendData(const QByteArray &data);
+ bool dispatchMessage(uint endpoint, const QByteArray &data);
QPointer<QBluetoothSocket> socket;
+ QHash<uint, QList<EndpointHandlerFunc>> tmpHandlers;
+ QHash<uint, EndpointHandlerFunc> handlers;
bool is_connected;
QByteArray writeData;
QTimer reconnectTimer;
QString _last_name;
QString _last_address;
+ QString _serialNumber;
};
-}
#endif // WATCHCONNECTOR_H