My Project
 All Classes Functions Variables Pages
BLEAdvertisedDevice.h
1 /*
2  * BLEAdvertisedDevice.h
3  *
4  * Created on: Jul 3, 2017
5  * Author: kolban
6  */
7 
8 #ifndef COMPONENTS_CPP_UTILS_BLEADVERTISEDDEVICE_H_
9 #define COMPONENTS_CPP_UTILS_BLEADVERTISEDDEVICE_H_
10 #include "sdkconfig.h"
11 #if defined(CONFIG_BT_ENABLED)
12 #include <esp_gattc_api.h>
13 
14 #include <map>
15 
16 #include "BLEAddress.h"
17 #include "BLEScan.h"
18 #include "BLEUUID.h"
19 
20 
21 class BLEScan;
28 class BLEAdvertisedDevice {
29 public:
30  BLEAdvertisedDevice();
31 
32  BLEAddress getAddress();
33  uint16_t getAppearance();
34  std::string getManufacturerData();
35  std::string getName();
36  int getRSSI();
37  BLEScan* getScan();
38  std::string getServiceData();
39  BLEUUID getServiceDataUUID();
40  BLEUUID getServiceUUID();
41  int8_t getTXPower();
42  uint8_t* getPayload();
43  size_t getPayloadLength();
44  esp_ble_addr_type_t getAddressType();
45  void setAddressType(esp_ble_addr_type_t type);
46 
47 
48  bool isAdvertisingService(BLEUUID uuid);
49  bool haveAppearance();
50  bool haveManufacturerData();
51  bool haveName();
52  bool haveRSSI();
53  bool haveServiceData();
54  bool haveServiceUUID();
55  bool haveTXPower();
56 
57  std::string toString();
58 
59 private:
60  friend class BLEScan;
61 
62  void parseAdvertisement(uint8_t* payload, size_t total_len=62);
63  void setAddress(BLEAddress address);
64  void setAdFlag(uint8_t adFlag);
65  void setAdvertizementResult(uint8_t* payload);
66  void setAppearance(uint16_t appearance);
67  void setManufacturerData(std::string manufacturerData);
68  void setName(std::string name);
69  void setRSSI(int rssi);
70  void setScan(BLEScan* pScan);
71  void setServiceData(std::string data);
72  void setServiceDataUUID(BLEUUID uuid);
73  void setServiceUUID(const char* serviceUUID);
74  void setServiceUUID(BLEUUID serviceUUID);
75  void setTXPower(int8_t txPower);
76 
77  bool m_haveAppearance;
78  bool m_haveManufacturerData;
79  bool m_haveName;
80  bool m_haveRSSI;
81  bool m_haveServiceData;
82  bool m_haveServiceUUID;
83  bool m_haveTXPower;
84 
85 
86  BLEAddress m_address = BLEAddress((uint8_t*)"\0\0\0\0\0\0");
87  uint8_t m_adFlag;
88  uint16_t m_appearance;
89  int m_deviceType;
90  std::string m_manufacturerData;
91  std::string m_name;
92  BLEScan* m_pScan;
93  int m_rssi;
94  std::vector<BLEUUID> m_serviceUUIDs;
95  int8_t m_txPower;
96  std::string m_serviceData;
97  BLEUUID m_serviceDataUUID;
98  uint8_t* m_payload;
99  size_t m_payloadLength = 0;
100  esp_ble_addr_type_t m_addressType;
101 };
102 
110 class BLEAdvertisedDeviceCallbacks {
111 public:
112  virtual ~BLEAdvertisedDeviceCallbacks() {}
119  virtual void onResult(BLEAdvertisedDevice advertisedDevice) = 0;
120 };
121 
122 #endif /* CONFIG_BT_ENABLED */
123 #endif /* COMPONENTS_CPP_UTILS_BLEADVERTISEDDEVICE_H_ */