#ifndef METAWATCH_H #define METAWATCH_H #include #include QT_USE_NAMESPACE_BLUETOOTH #include "metawatchtransport.h" #include "widgetinfo.h" class MetaWatch : public QObject { Q_OBJECT Q_ENUMS(MessageTypes WatchProperty UiStyle) Q_FLAGS(WatchProperties) public: explicit MetaWatch(const QString &btAddr, QObject *parent = 0); enum MessageTypes { MessageGetDeviceType = 0x01, MessageGetDeviceTypeResponse = 0x02, MessageSetRealTimeClock = 0x26, MessageWatchPropertyOperation = 0x30, MessageModeChangeIndication = 0x33, MessageUpdateLcdDisplay = 0x43, MessageGetBatteryStatus = 0x56, MessageReadBatteryStatusResponse = 0x57, MessageSetWidgetList = 0xA1, MessageSetupAccelerometer = 0xE1, MessageAccelerometerDataResponse = 0xE0, // Messages from the propietary BT stack MessageConnectionChange = 0xB9, MessageIntervalChanged = 0xBB }; enum DeviceType { DeviceMetaWatchDigitalGen1 = 2, DeviceMetaWatchDigitalGen2 = 5 }; enum WatchProperty { WatchPropertyHourFormat12h = 0, WatchPropertyHourFormat24h = 1, WatchPropertyDateFormatMMDD = 0 << 1, WatchPropertyDateFormatDDMM = 1 << 1, WatchPropertyShowSeconds = 1 << 2, WatchPropertyShowSeparationLines = 1 << 3, WatchPropertyAutobacklight = 1 << 4, WatchPropertyOperationRead = 0 << 7, WatchPropertyOperationWrite = 1 << 7 }; Q_DECLARE_FLAGS(WatchProperties, WatchProperty) enum UiStyle { UiGen1 = 0, UiGen2 = 1 }; static QList availableClocks(); void setDateTime(const QDateTime &dt); void configure(WatchProperties props); void updateDeviceType(); void updateBatteryStatus(); void updateLcdDisplay(); // TODO: More overloads void updateWidgetList(const QList& widgets); signals: void connected(); void disconnected(); void deviceType(DeviceType type); void batteryStatus(bool charging, int charge); public slots: void connectDevice(); void disconnectDevice(); private: static int clockUrlToClockId(const QUrl &url); private slots: void handleTransportMessage(quint8 type, quint8 options, const QByteArray &payload); private: MetaWatchTransport *_transport; }; #endif // METAWATCH_H