-
Notifications
You must be signed in to change notification settings - Fork 181
/
Copy pathBLEDevice.h
109 lines (83 loc) · 4.71 KB
/
BLEDevice.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
// Copyright (c) Sandeep Mistry. All rights reserved.
// Licensed under the MIT license. See LICENSE file in the project root for full license information.
#ifndef _BLE_DEVICE_H_
#define _BLE_DEVICE_H_
#include "BLEBondStore.h"
#include "BLECharacteristic.h"
#include "BLELocalAttribute.h"
#include "BLERemoteAttribute.h"
#include "BLERemoteCharacteristic.h"
#include "BLERemoteService.h"
struct BLEEirData
{
unsigned char length;
unsigned char type;
unsigned char data[BLE_EIR_DATA_MAX_VALUE_LENGTH];
};
class BLEDevice;
class BLEDeviceEventListener
{
public:
virtual void BLEDeviceConnected(BLEDevice& /*device*/, const unsigned char* /*address*/) { }
virtual void BLEDeviceDisconnected(BLEDevice& /*device*/) { }
virtual void BLEDeviceBonded(BLEDevice& /*device*/) { }
virtual void BLEDeviceRemoteServicesDiscovered(BLEDevice& /*device*/) { }
virtual void BLEDeviceCharacteristicValueChanged(BLEDevice& /*device*/, BLECharacteristic& /*characteristic*/, const unsigned char* /*value*/, unsigned char /*valueLength*/) { }
virtual void BLEDeviceCharacteristicSubscribedChanged(BLEDevice& /*device*/, BLECharacteristic& /*characteristic*/, bool /*subscribed*/) { }
virtual void BLEDeviceRemoteCharacteristicValueChanged(BLEDevice& /*device*/, BLERemoteCharacteristic& /*characteristic*/, const unsigned char* /*value*/, unsigned char /*valueLength*/) { }
virtual void BLEDeviceAddressReceived(BLEDevice& /*device*/, const unsigned char* /*address*/) { }
virtual void BLEDeviceTemperatureReceived(BLEDevice& /*device*/, float /*temperature*/) { }
virtual void BLEDeviceBatteryLevelReceived(BLEDevice& /*device*/, float /*batteryLevel*/) { }
};
class BLEDevice
{
friend class BLEPeripheral;
protected:
BLEDevice();
virtual ~BLEDevice();
void setEventListener(BLEDeviceEventListener* eventListener);
void setAdvertisingInterval(unsigned short advertisingInterval);
void setConnectionInterval(unsigned short minimumConnectionInterval, unsigned short maximumConnectionInterval);
void setConnectable(bool connectable);
void setBondStore(BLEBondStore& bondStore);
virtual void begin(unsigned char /*advertisementDataSize*/,
BLEEirData * /*advertisementData*/,
unsigned char /*scanDataSize*/,
BLEEirData * /*scanData*/,
BLELocalAttribute** /*localAttributes*/,
unsigned char /*numLocalAttributes*/,
BLERemoteAttribute** /*remoteAttributes*/,
unsigned char /*numRemoteAttributes*/) { }
virtual void updateAdvertisementData(unsigned char /*advertisementDataSize*/,
BLEEirData * /*advertisementData*/,
unsigned char /*scanDataSize*/,
BLEEirData * /*scanData*/) { }
virtual void poll() { }
virtual void end() { }
virtual bool setTxPower(int /*txPower*/) { return false; }
virtual void startAdvertising() { }
virtual void disconnect() { }
virtual bool updateCharacteristicValue(BLECharacteristic& /*characteristic*/) { return false; }
virtual bool broadcastCharacteristic(BLECharacteristic& /*characteristic*/) { return false; }
virtual bool canNotifyCharacteristic(BLECharacteristic& /*characteristic*/) { return false; }
virtual bool canIndicateCharacteristic(BLECharacteristic& /*characteristic*/) { return false; }
virtual bool canReadRemoteCharacteristic(BLERemoteCharacteristic& /*characteristic*/) { return false; }
virtual bool readRemoteCharacteristic(BLERemoteCharacteristic& /*characteristic*/) { return false; }
virtual bool canWriteRemoteCharacteristic(BLERemoteCharacteristic& /*characteristic*/) { return false; }
virtual bool writeRemoteCharacteristic(BLERemoteCharacteristic& /*characteristic*/, const unsigned char /*value*/[], unsigned char /*length*/) { return false; }
virtual bool canSubscribeRemoteCharacteristic(BLERemoteCharacteristic& /*characteristic*/) { return false; }
virtual bool subscribeRemoteCharacteristic(BLERemoteCharacteristic& /*characteristic*/) { return false; }
virtual bool canUnsubscribeRemoteCharacteristic(BLERemoteCharacteristic& /*characteristic*/) { return false; }
virtual bool unsubcribeRemoteCharacteristic(BLERemoteCharacteristic& /*characteristic*/) { return false; }
virtual void requestAddress() { }
virtual void requestTemperature() { }
virtual void requestBatteryLevel() { }
protected:
unsigned short _advertisingInterval;
unsigned short _minimumConnectionInterval;
unsigned short _maximumConnectionInterval;
bool _connectable;
BLEBondStore* _bondStore;
BLEDeviceEventListener* _eventListener;
};
#endif