esp-nimble-cpp  1.4.0
NimBLEService.h
1 /*
2  * NimBLEService.h
3  *
4  * Created: on March 2, 2020
5  * Author H2zero
6  *
7  * Originally:
8  *
9  * BLEService.h
10  *
11  * Created on: Mar 25, 2017
12  * Author: kolban
13  */
14 
15 #ifndef MAIN_NIMBLESERVICE_H_
16 #define MAIN_NIMBLESERVICE_H_
17 
18 #include "nimconfig.h"
19 #if defined(CONFIG_BT_ENABLED) && defined(CONFIG_BT_NIMBLE_ROLE_PERIPHERAL)
20 
21 #include "NimBLEServer.h"
22 #include "NimBLECharacteristic.h"
23 #include "NimBLEUUID.h"
24 
25 
26 class NimBLEServer;
28 
29 
35 public:
36 
37  NimBLEService(const char* uuid);
38  NimBLEService(const NimBLEUUID &uuid);
39  ~NimBLEService();
40 
42 
44  uint16_t getHandle();
45  std::string toString();
46  void dump();
47 
48  bool start();
49 
51  uint32_t properties =
52  NIMBLE_PROPERTY::READ |
53  NIMBLE_PROPERTY::WRITE,
54  uint16_t max_len = BLE_ATT_ATTR_MAX_LEN);
55 
57  uint32_t properties =
58  NIMBLE_PROPERTY::READ |
59  NIMBLE_PROPERTY::WRITE,
60  uint16_t max_len = BLE_ATT_ATTR_MAX_LEN);
61 
62  void addCharacteristic(NimBLECharacteristic* pCharacteristic);
63  void removeCharacteristic(NimBLECharacteristic* pCharacteristic, bool deleteChr = false);
64  NimBLECharacteristic* getCharacteristic(const char* uuid, uint16_t instanceId = 0);
65  NimBLECharacteristic* getCharacteristic(const NimBLEUUID &uuid, uint16_t instanceId = 0);
67 
68  std::vector<NimBLECharacteristic*> getCharacteristics();
69  std::vector<NimBLECharacteristic*> getCharacteristics(const char* uuid);
70  std::vector<NimBLECharacteristic*> getCharacteristics(const NimBLEUUID &uuid);
71 
72 
73 private:
74 
75  friend class NimBLEServer;
76  friend class NimBLEDevice;
77 
78  uint16_t m_handle;
79  NimBLEUUID m_uuid;
80  ble_gatt_svc_def* m_pSvcDef;
81  uint8_t m_removed;
82  std::vector<NimBLECharacteristic*> m_chrVec;
83 
84 }; // NimBLEService
85 
86 #endif /* CONFIG_BT_ENABLED && CONFIG_BT_NIMBLE_ROLE_PERIPHERAL */
87 #endif /* MAIN_NIMBLESERVICE_H_ */
The model of a BLE Characteristic.
Definition: NimBLECharacteristic.h:63
A model of a BLE Device from which all the BLE roles are created.
Definition: NimBLEDevice.h:96
The model of a BLE server.
Definition: NimBLEServer.h:46
The model of a BLE service.
Definition: NimBLEService.h:34
std::string toString()
Return a string representation of this service. A service is defined by:
Definition: NimBLEService.cpp:417
NimBLECharacteristic * getCharacteristic(const char *uuid, uint16_t instanceId=0)
Get a pointer to the characteristic object with the specified UUID.
Definition: NimBLEService.cpp:346
NimBLECharacteristic * getCharacteristicByHandle(uint16_t handle)
Get a pointer to the characteristic object with the specified handle.
Definition: NimBLEService.cpp:374
NimBLECharacteristic * createCharacteristic(const char *uuid, uint32_t properties=NIMBLE_PROPERTY::READ|NIMBLE_PROPERTY::WRITE, uint16_t max_len=BLE_ATT_ATTR_MAX_LEN)
Create a new BLE Characteristic associated with this service.
Definition: NimBLEService.cpp:262
NimBLEService(const char *uuid)
Construct an instance of the NimBLEService.
Definition: NimBLEService.cpp:36
void dump()
Dump details of this BLE GATT service.
Definition: NimBLEService.cpp:77
uint16_t getHandle()
Get the handle associated with this service.
Definition: NimBLEService.cpp:250
std::vector< NimBLECharacteristic * > getCharacteristics()
Definition: NimBLEService.cpp:386
NimBLEUUID getUUID()
Get the UUID of the service.
Definition: NimBLEService.cpp:101
bool start()
Builds the database of characteristics/descriptors for the service and registers it with the NimBLE s...
Definition: NimBLEService.cpp:111
NimBLEServer * getServer()
Get the BLE server associated with this service.
Definition: NimBLEService.cpp:431
void addCharacteristic(NimBLECharacteristic *pCharacteristic)
Add a characteristic to the service.
Definition: NimBLEService.cpp:291
void removeCharacteristic(NimBLECharacteristic *pCharacteristic, bool deleteChr=false)
Remove a characteristic from the service.
Definition: NimBLEService.cpp:317
A model of a BLE UUID.
Definition: NimBLEUUID.h:37