diff options
Diffstat (limited to 'gatoperipheral_p.h')
-rw-r--r-- | gatoperipheral_p.h | 71 |
1 files changed, 71 insertions, 0 deletions
diff --git a/gatoperipheral_p.h b/gatoperipheral_p.h new file mode 100644 index 0000000..895270e --- /dev/null +++ b/gatoperipheral_p.h @@ -0,0 +1,71 @@ +#ifndef GATOPERIPHERAL_P_H +#define GATOPERIPHERAL_P_H + +#include "gatoperipheral.h" +#include "gatoservice.h" +#include "gatocharacteristic.h" +#include "gatodescriptor.h" +#include "gatoatt.h" + +class GatoPeripheralPrivate : public QObject +{ + Q_OBJECT + + Q_DECLARE_PUBLIC(GatoPeripheral) + +public: + GatoPeripheralPrivate(GatoPeripheral *parent); + ~GatoPeripheralPrivate(); + + GatoPeripheral *q_ptr; + GatoAddress addr; + QString name; + QSet<GatoUUID> service_uuids; + QMap<GatoHandle, GatoService> services; + + bool complete_name : 1; + bool complete_services : 1; + + /** Maps attribute handles to service handles. */ + QMap<GatoHandle, GatoHandle> characteristic_to_service; + QMap<GatoHandle, GatoHandle> value_to_characteristic; + QMap<GatoHandle, GatoHandle> descriptor_to_characteristic; + + GatoAtt *att; + QMap<uint, GatoUUID> pending_primary_reqs; + QMap<uint, GatoHandle> pending_characteristic_reqs; + QMap<uint, GatoHandle> pending_characteristic_read_reqs; + QMap<uint, GatoHandle> pending_descriptor_reqs; + QMap<uint, GatoHandle> pending_descriptor_read_reqs; + + QMap<GatoHandle, bool> pending_set_notify; + + void parseEIRFlags(quint8 data[], int len); + void parseEIRUUIDs(int size, bool complete, quint8 data[], int len); + void parseName(bool complete, quint8 data[], int len); + + static GatoCharacteristic parseCharacteristicValue(const QByteArray &ba); + + static QByteArray genClientCharConfiguration(bool notification, bool indication); + + void clearServices(); + void clearServiceCharacteristics(GatoService *service); + void clearCharacteristicDescriptors(GatoCharacteristic *characteristic); + + void finishSetNotifyOperations(const GatoCharacteristic &characteristic); + +public slots: + void handleAttConnected(); + void handleAttDisconnected(); + void handleAttAttributeUpdated(GatoHandle handle, const QByteArray &value, bool confirmed); + void handlePrimary(uint req, const QList<GatoAtt::AttributeGroupData>& list); + void handlePrimaryForService(uint req, const QList<GatoAtt::HandleInformation>& list); + void handleCharacteristic(uint req, const QList<GatoAtt::AttributeData> &list); + void handleDescriptors(uint req, const QList<GatoAtt::InformationData> &list); + void handleCharacteristicRead(uint req, const QByteArray &value); + void handleDescriptorRead(uint req, const QByteArray &value); + void handleCharacteristicWrite(uint req, bool ok); + void handleDescriptorWrite(uint req, bool ok); +}; + +#endif // GATOPERIPHERAL_P_H |