NimBLE-Arduino 1.4.2
Loading...
Searching...
No Matches
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
26class NimBLEServer;
28
29
35public:
36
37 NimBLEService(const char* uuid);
38 NimBLEService(const NimBLEUUID &uuid);
40
42
44 uint16_t getHandle();
45 std::string toString();
46 void dump();
47 bool isStarted() { return m_pSvcDef != nullptr; }
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
73private:
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:419
NimBLECharacteristic * getCharacteristic(const char *uuid, uint16_t instanceId=0)
Get a pointer to the characteristic object with the specified UUID.
Definition: NimBLEService.cpp:348
NimBLECharacteristic * getCharacteristicByHandle(uint16_t handle)
Get a pointer to the characteristic object with the specified handle.
Definition: NimBLEService.cpp:376
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:264
void dump()
Dump details of this BLE GATT service.
Definition: NimBLEService.cpp:76
uint16_t getHandle()
Get the handle associated with this service.
Definition: NimBLEService.cpp:249
std::vector< NimBLECharacteristic * > getCharacteristics()
Definition: NimBLEService.cpp:388
NimBLEUUID getUUID()
Get the UUID of the service.
Definition: NimBLEService.cpp:100
bool start()
Builds the database of characteristics/descriptors for the service and registers it with the NimBLE s...
Definition: NimBLEService.cpp:110
NimBLEServer * getServer()
Get the BLE server associated with this service.
Definition: NimBLEService.cpp:433
void addCharacteristic(NimBLECharacteristic *pCharacteristic)
Add a characteristic to the service.
Definition: NimBLEService.cpp:293
void removeCharacteristic(NimBLECharacteristic *pCharacteristic, bool deleteChr=false)
Remove a characteristic from the service.
Definition: NimBLEService.cpp:319
A model of a BLE UUID.
Definition: NimBLEUUID.h:37