Dokit
Internal development documentation
|
The StatusServicePrivate class provides private implementation for StatusService. More...
Public Member Functions | |
StatusServicePrivate (QLowEnergyController *controller, StatusService *const q) | |
Public Member Functions inherited from AbstractPokitServicePrivate | |
AbstractPokitServicePrivate (const QBluetoothUuid &serviceUuid, QLowEnergyController *controller, AbstractPokitService *const q) | |
bool | createServiceObject () |
Creates an internal service object from the internal controller. | |
QLowEnergyCharacteristic | getCharacteristic (const QBluetoothUuid &uuid) const |
Get uuid characteristc from the underlying service. | |
bool | readCharacteristic (const QBluetoothUuid &uuid) |
Read the uuid characteristic. | |
bool | enableCharacteristicNotificatons (const QBluetoothUuid &uuid) |
Enables client (Pokit device) side notification for characteristic uuid. | |
bool | disableCharacteristicNotificatons (const QBluetoothUuid &uuid) |
Disables client (Pokit device) side notification for characteristic uuid. | |
Public Member Functions inherited from QObject | |
virtual const QMetaObject * | metaObject () const const |
QObject (QObject *parent) | |
virtual bool | event (QEvent *e) |
virtual bool | eventFilter (QObject *watched, QEvent *event) |
QString | objectName () const const |
void | setObjectName (const QString &name) |
bool | isWidgetType () const const |
bool | isWindowType () const const |
bool | signalsBlocked () const const |
bool | blockSignals (bool block) |
QThread * | thread () const const |
void | moveToThread (QThread *targetThread) |
int | startTimer (int interval, Qt::TimerType timerType) |
int | startTimer (std::chrono::milliseconds time, Qt::TimerType timerType) |
void | killTimer (int id) |
T | findChild (const QString &name, Qt::FindChildOptions options) const const |
QList< T > | findChildren (const QString &name, Qt::FindChildOptions options) const const |
QList< T > | findChildren (const QRegExp ®Exp, Qt::FindChildOptions options) const const |
QList< T > | findChildren (const QRegularExpression &re, Qt::FindChildOptions options) const const |
const QObjectList & | children () const const |
void | setParent (QObject *parent) |
void | installEventFilter (QObject *filterObj) |
void | removeEventFilter (QObject *obj) |
QMetaObject::Connection | connect (const QObject *sender, const char *signal, const char *method, Qt::ConnectionType type) const const |
bool | disconnect (const char *signal, const QObject *receiver, const char *method) const const |
bool | disconnect (const QObject *receiver, const char *method) const const |
void | dumpObjectTree () |
void | dumpObjectInfo () |
void | dumpObjectTree () const const |
void | dumpObjectInfo () const const |
bool | setProperty (const char *name, const QVariant &value) |
QVariant | property (const char *name) const const |
QList< QByteArray > | dynamicPropertyNames () const const |
void | destroyed (QObject *obj) |
void | objectNameChanged (const QString &objectName) |
QObject * | parent () const const |
bool | inherits (const char *className) const const |
void | deleteLater () |
Q_DISABLE_COPY (Class) | |
Q_DISABLE_MOVE (Class) | |
Q_DISABLE_COPY_MOVE (Class) | |
T | qobject_cast (QObject *object) |
T | qobject_cast (const QObject *object) |
T | qFindChild (const QObject *obj, const QString &name) |
QList< T > | qFindChildren (const QObject *obj, const QString &name) |
QList< T > | qFindChildren (const QObject *obj, const QRegExp ®Exp) |
Q_CLASSINFO (Name, Value) | |
Q_INTERFACES (...) | |
Q_PROPERTY (...) | |
Q_ENUMS (...) | |
Q_FLAGS (...) | |
Q_ENUM (...) | |
Q_FLAG (...) | |
Q_ENUM_NS (...) | |
Q_FLAG_NS (...) | |
Q_OBJECT Q_OBJECT | |
Q_GADGET Q_GADGET | |
Q_NAMESPACE Q_NAMESPACE | |
Q_NAMESPACE_EXPORT (EXPORT_MACRO) | |
Q_SIGNALS Q_SIGNALS | |
Q_SIGNAL Q_SIGNAL | |
Q_SLOTS Q_SLOTS | |
Q_SLOT Q_SLOT | |
Q_EMIT Q_EMIT | |
Q_INVOKABLE Q_INVOKABLE | |
Q_REVISION Q_REVISION | |
Q_SET_OBJECT_NAME (Object) | |
QT_NO_NARROWING_CONVERSIONS_IN_CONNECT QT_NO_NARROWING_CONVERSIONS_IN_CONNECT | |
Static Public Member Functions | |
static StatusService::DeviceCharacteristics | parseDeviceCharacteristics (const QByteArray &value) |
Parses the Device Characteristics value into a DeviceCharacteristics struct. | |
static StatusService::Status | parseStatus (const QByteArray &value) |
Parses the Status value into a Status struct. | |
static std::optional< StatusService::TorchStatus > | parseTorchStatus (const QByteArray &value) |
Parses the torch status value, and returns the corresponding TorchStatus. | |
static std::optional< StatusService::ButtonStatus > | parseButtonPress (const QByteArray &value) |
Parses the button press value, and returns the corresponding ButtonStatus. | |
Static Public Member Functions inherited from AbstractPokitServicePrivate | |
static | Q_LOGGING_CATEGORY (lc, "pokit.ble.service", QtInfoMsg) |
Logging category. | |
static bool | checkSize (const QString &label, const QByteArray &data, const int minSize, const int maxSize=-1, const bool failOnMax=false) |
Returns false if data is smaller than minSize, otherwise returns failOnMax if data is bigger than maxSize, otherwise returns true . | |
static QString | toHexString (const QByteArray &data, const int maxSize=20) |
Returns up to maxSize bytes of data as a human readable hexadecimal string. | |
Static Public Member Functions inherited from QObject | |
QString | tr (const char *sourceText, const char *disambiguation, int n) |
QString | trUtf8 (const char *sourceText, const char *disambiguation, int n) |
QMetaObject::Connection | connect (const QObject *sender, const char *signal, const QObject *receiver, const char *method, Qt::ConnectionType type) |
QMetaObject::Connection | connect (const QObject *sender, const QMetaMethod &signal, const QObject *receiver, const QMetaMethod &method, Qt::ConnectionType type) |
QMetaObject::Connection | connect (const QObject *sender, PointerToMemberFunction signal, const QObject *receiver, PointerToMemberFunction method, Qt::ConnectionType type) |
QMetaObject::Connection | connect (const QObject *sender, PointerToMemberFunction signal, Functor functor) |
QMetaObject::Connection | connect (const QObject *sender, PointerToMemberFunction signal, const QObject *context, Functor functor, Qt::ConnectionType type) |
bool | disconnect (const QObject *sender, const char *signal, const QObject *receiver, const char *method) |
bool | disconnect (const QObject *sender, const QMetaMethod &signal, const QObject *receiver, const QMetaMethod &method) |
bool | disconnect (const QMetaObject::Connection &connection) |
bool | disconnect (const QObject *sender, PointerToMemberFunction signal, const QObject *receiver, PointerToMemberFunction method) |
Protected Member Functions | |
void | serviceDiscovered (const QBluetoothUuid &newService) override |
Handles QLowEnergyController::serviceDiscovered events. | |
void | characteristicRead (const QLowEnergyCharacteristic &characteristic, const QByteArray &value) override |
Implements AbstractPokitServicePrivate::characteristicRead to parse value, then emit a specialised signal, for each supported characteristic. | |
void | characteristicWritten (const QLowEnergyCharacteristic &characteristic, const QByteArray &newValue) override |
Implements AbstractPokitServicePrivate::characteristicWritten to parse newValue, then emit a specialised signal, for each supported characteristic. | |
Protected Member Functions inherited from QObject | |
QObject * | sender () const const |
int | senderSignalIndex () const const |
int | receivers (const char *signal) const const |
bool | isSignalConnected (const QMetaMethod &signal) const const |
virtual void | timerEvent (QTimerEvent *event) |
virtual void | childEvent (QChildEvent *event) |
virtual void | customEvent (QEvent *event) |
virtual void | connectNotify (const QMetaMethod &signal) |
virtual void | disconnectNotify (const QMetaMethod &signal) |
Friends | |
class | TestStatusService |
Additional Inherited Members | |
Public Attributes inherited from AbstractPokitServicePrivate | |
bool | autoDiscover { true } |
Whether autodiscovery is enabled or not. | |
QLowEnergyController * | controller { nullptr } |
BLE controller to fetch the service from. | |
std::optional< PokitProduct > | pokitProduct |
The Pokit product controller is connected to. | |
QLowEnergyService * | service { nullptr } |
BLE service to read/write characteristics. | |
QBluetoothUuid | serviceUuid |
UUIDs for service. | |
Public Attributes inherited from QObject | |
typedef | QObjectList |
Protected Slots inherited from AbstractPokitServicePrivate | |
void | connected () |
Handles QLowEnergyController::connected events. | |
void | discoveryFinished () |
Handles QLowEnergyController::discoveryFinished events. | |
void | errorOccurred (const QLowEnergyService::ServiceError newError) |
Handles QLowEnergyController::errorOccurred events. | |
void | stateChanged (QLowEnergyService::ServiceState newState) |
Handles QLowEnergyController::stateChanged events. | |
virtual void | characteristicChanged (const QLowEnergyCharacteristic &characteristic, const QByteArray &newValue) |
Handles QLowEnergyService::characteristicChanged events. | |
Protected Attributes inherited from AbstractPokitServicePrivate | |
AbstractPokitService * | q_ptr |
Internal q-pointer. | |
Properties inherited from QObject | |
objectName | |
The StatusServicePrivate class provides private implementation for StatusService.
Definition at line 20 of file statusservice_p.h.
|
explicit |
Constructs a new StatusServicePrivate object with public implementation q.
Definition at line 566 of file statusservice.cpp.
|
overrideprotectedvirtual |
Implements AbstractPokitServicePrivate::characteristicRead to parse value, then emit a specialised signal, for each supported characteristic.
Reimplemented from AbstractPokitServicePrivate.
Definition at line 727 of file statusservice.cpp.
References QString::arg(), QByteArray::at(), StatusService::CharacteristicUuids::buttonPress, AbstractPokitServicePrivate::characteristicRead(), AbstractPokitServicePrivate::checkSize(), StatusService::CharacteristicUuids::deviceCharacteristics, StatusService::CharacteristicUuids::flashLed, QString::fromUtf8(), QLowEnergyCharacteristic::name(), StatusService::CharacteristicUuids::name, parseDeviceCharacteristics(), parseStatus(), QObject::Q_EMIT(), AbstractPokitServicePrivate::serviceUuid, StatusService::CharacteristicUuids::status, StatusService::CharacteristicUuids::torch, StatusService::toString(), QObject::tr(), and QLowEnergyCharacteristic::uuid().
|
overrideprotectedvirtual |
Implements AbstractPokitServicePrivate::characteristicWritten to parse newValue, then emit a specialised signal, for each supported characteristic.
Reimplemented from AbstractPokitServicePrivate.
Definition at line 784 of file statusservice.cpp.
References AbstractPokitServicePrivate::characteristicWritten(), StatusService::CharacteristicUuids::deviceCharacteristics, StatusService::CharacteristicUuids::flashLed, QLowEnergyCharacteristic::name(), StatusService::CharacteristicUuids::name, QObject::Q_EMIT(), AbstractPokitServicePrivate::serviceUuid, StatusService::CharacteristicUuids::status, StatusService::CharacteristicUuids::torch, QObject::tr(), and QLowEnergyCharacteristic::uuid().
|
static |
Parses the button press value, and returns the corresponding ButtonStatus.
0x02
. It appears that the Pokit Android app only ever looks at bytes[1]
.Definition at line 685 of file statusservice.cpp.
References QString::arg(), QByteArray::at(), AbstractPokitServicePrivate::checkSize(), StatusService::toString(), and QObject::tr().
Referenced by StatusService::buttonPress().
|
static |
Parses the Device Characteristics
value into a DeviceCharacteristics struct.
Definition at line 576 of file statusservice.cpp.
References AbstractPokitServicePrivate::checkSize(), QByteArray::constData(), QByteArray::mid(), and QObject::tr().
Referenced by characteristicRead(), and StatusService::deviceCharacteristics().
|
static |
Parses the Status
value into a Status struct.
Note, not all Pokit devices support all members in Status. Specifically, the batteryStatus member is not usually set by Pokit Meter devices, so will be an invlalid BatteryStatus enum value (255
) in that case.
Status
characteristic is 5 bytes. API 1.00 then added an additional byte for Battery Status
, for 6 bytes in total. However, Pokit Pro devices return 8 bytes here. It appears that the first of those 2 extra bytes (ie the 7th byte) is used to indicate the physical switch position, while the other extra byte (ie the 8th byte) indicates the device's current charging status. Definition at line 618 of file statusservice.cpp.
References QString::arg(), QByteArray::at(), AbstractPokitServicePrivate::checkSize(), QByteArray::constData(), StatusService::Status::deviceStatus, QByteArray::mid(), QByteArray::size(), StatusService::toString(), and QObject::tr().
Referenced by characteristicRead(), and StatusService::status().
|
static |
Parses the torch status value, and returns the corresponding TorchStatus.
Definition at line 671 of file statusservice.cpp.
References QString::arg(), QByteArray::at(), AbstractPokitServicePrivate::checkSize(), StatusService::toString(), and QObject::tr().
Referenced by StatusService::torchStatus().
|
overrideprotectedvirtual |
Handles QLowEnergyController::serviceDiscovered
events.
Here we override the base implementation to detect if we're looking at a Pokit Meter, or Pokit Pro device, as the two devices have very slightly different Status Service UUIDs.
Reimplemented from AbstractPokitServicePrivate.
Definition at line 711 of file statusservice.cpp.
References StatusService::ServiceUuids::pokitMeter, StatusService::ServiceUuids::pokitPro, AbstractPokitServicePrivate::serviceDiscovered(), AbstractPokitServicePrivate::serviceUuid, and QObject::tr().
|
friend |
Definition at line 43 of file statusservice_p.h.