18#ifndef NIMBLE_CPP_SERVICE_H_
19#define NIMBLE_CPP_SERVICE_H_
21#include "syscfg/syscfg.h"
22#if CONFIG_BT_NIMBLE_ENABLED && MYNEWT_VAL(BLE_ROLE_PERIPHERAL)
26# include "NimBLEAttribute.h"
27# include "NimBLEServer.h"
28# include "NimBLECharacteristic.h"
34class NimBLEService :
public NimBLELocalAttribute {
36 NimBLEService(
const char* uuid);
40 NimBLEServer* getServer()
const;
41 std::string toString()
const;
43 bool isStarted()
const;
49 __attribute__((deprecated(
"NimBLEService::start() has no effect. "
50 "Services are started when the server is started.")))
51 bool start() {
return true; }
53 NimBLECharacteristic* createCharacteristic(
const char* uuid,
54 uint32_t properties = NIMBLE_PROPERTY::READ | NIMBLE_PROPERTY::WRITE,
55 uint16_t max_len = BLE_ATT_ATTR_MAX_LEN);
57 NimBLECharacteristic* createCharacteristic(
const NimBLEUUID& uuid,
58 uint32_t properties = NIMBLE_PROPERTY::READ | NIMBLE_PROPERTY::WRITE,
59 uint16_t max_len = BLE_ATT_ATTR_MAX_LEN);
60 void addCharacteristic(NimBLECharacteristic* pCharacteristic);
61 void removeCharacteristic(NimBLECharacteristic* pCharacteristic,
bool deleteChr =
false);
62 NimBLECharacteristic* getCharacteristic(
const char* uuid, uint16_t instanceId = 0)
const;
63 NimBLECharacteristic* getCharacteristic(
const NimBLEUUID& uuid, uint16_t instanceId = 0)
const;
64 NimBLECharacteristic* getCharacteristicByHandle(uint16_t handle)
const;
66 const std::vector<NimBLECharacteristic*>& getCharacteristics()
const;
67 std::vector<NimBLECharacteristic*> getCharacteristics(
const char* uuid)
const;
68 std::vector<NimBLECharacteristic*> getCharacteristics(
const NimBLEUUID& uuid)
const;
71 friend class NimBLEServer;
72 bool start_internal();
73 void clearServiceDefinitions();
75 std::vector<NimBLECharacteristic*> m_vChars{};
79 ble_gatt_svc_def m_pSvcDef[2]{};
A model of a BLE UUID.
Definition NimBLEUUID.h:41