18#ifndef NIMBLE_CPP_REMOTE_SERVICE_H_
19#define NIMBLE_CPP_REMOTE_SERVICE_H_
21#include "syscfg/syscfg.h"
22#if CONFIG_BT_NIMBLE_ENABLED && MYNEWT_VAL(BLE_ROLE_CENTRAL)
24# include "NimBLEAttribute.h"
27class NimBLERemoteCharacteristic;
34class NimBLERemoteService :
public NimBLEAttribute {
36 NimBLERemoteCharacteristic* getCharacteristic(
const char* uuid)
const;
37 NimBLERemoteCharacteristic* getCharacteristic(
const NimBLEUUID& uuid)
const;
38 void deleteCharacteristics()
const;
39 size_t deleteCharacteristic(
const NimBLEUUID& uuid)
const;
40 NimBLEClient* getClient(
void)
const;
43 std::string toString(
void)
const;
44 uint16_t getStartHandle()
const {
return getHandle(); }
45 uint16_t getEndHandle()
const {
return m_endHandle; }
47 const std::vector<NimBLERemoteCharacteristic*>& getCharacteristics(
bool refresh =
false)
const;
48 std::vector<NimBLERemoteCharacteristic*>::iterator begin()
const;
49 std::vector<NimBLERemoteCharacteristic*>::iterator end()
const;
52 friend class NimBLEClient;
54 NimBLERemoteService(NimBLEClient* pClient,
const struct ble_gatt_svc* service);
55 ~NimBLERemoteService();
56 bool retrieveCharacteristics(
const NimBLEUUID* uuidFilter =
nullptr)
const;
57 static int characteristicDiscCB(uint16_t conn_handle,
58 const struct ble_gatt_error* error,
59 const struct ble_gatt_chr* chr,
62 mutable std::vector<NimBLERemoteCharacteristic*> m_vChars{};
63 NimBLEClient* m_pClient{
nullptr};
64 uint16_t m_endHandle{0};
A specialized container class to hold BLE attribute values.
Definition NimBLEAttValue.h:72
A model of a BLE UUID.
Definition NimBLEUUID.h:41