summaryrefslogtreecommitdiff
path: root/gatoperipheral_p.h
diff options
context:
space:
mode:
Diffstat (limited to 'gatoperipheral_p.h')
-rw-r--r--gatoperipheral_p.h71
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