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;
45 NimBLECharacteristic* createCharacteristic(
const char* uuid,
46 uint32_t properties = NIMBLE_PROPERTY::READ | NIMBLE_PROPERTY::WRITE,
47 uint16_t max_len = BLE_ATT_ATTR_MAX_LEN);
49 NimBLECharacteristic* createCharacteristic(
const NimBLEUUID& uuid,
50 uint32_t properties = NIMBLE_PROPERTY::READ | NIMBLE_PROPERTY::WRITE,
51 uint16_t max_len = BLE_ATT_ATTR_MAX_LEN);
52 void addCharacteristic(NimBLECharacteristic* pCharacteristic);
53 void removeCharacteristic(NimBLECharacteristic* pCharacteristic,
bool deleteChr =
false);
54 NimBLECharacteristic* getCharacteristic(
const char* uuid, uint16_t instanceId = 0)
const;
55 NimBLECharacteristic* getCharacteristic(
const NimBLEUUID& uuid, uint16_t instanceId = 0)
const;
56 NimBLECharacteristic* getCharacteristicByHandle(uint16_t handle)
const;
58 const std::vector<NimBLECharacteristic*>& getCharacteristics()
const;
59 std::vector<NimBLECharacteristic*> getCharacteristics(
const char* uuid)
const;
60 std::vector<NimBLECharacteristic*> getCharacteristics(
const NimBLEUUID& uuid)
const;
63 friend class NimBLEServer;
65 std::vector<NimBLECharacteristic*> m_vChars{};
69 ble_gatt_svc_def m_pSvcDef[2]{};
A model of a BLE UUID.
Definition NimBLEUUID.h:41