mirror of
https://github.com/h2zero/esp-nimble-cpp.git
synced 2024-11-23 21:50:55 +01:00
e3ee082dd7
This is a specialized container class to hold BLE attribute values. - Removes the use of std::string previously used to store the values. - Allows for setting/getting/notifying values from std::string, std::vector<uint8_t>, Arduino String, const char*, and uint8_t buffers. - Has operators retrieve the value as std::string, Arduino String, std::vector<uint8_t>, uint8_t* or char pointers. - Includes iterators and subscript/random access operator. - Introduces a max length parameter to the creation of server characteristics/descriptors to limit the size of the memory footprint. - Nearly Seamless integration with existing code. - Adds a config option to enable/disable timestamp storage when the value is updated. - Adds a config option to specify the initial size of the value container if not specified in the constructor.
87 lines
2.6 KiB
C++
87 lines
2.6 KiB
C++
/*
|
|
* NimBLEService.h
|
|
*
|
|
* Created: on March 2, 2020
|
|
* Author H2zero
|
|
*
|
|
* Originally:
|
|
*
|
|
* BLEService.h
|
|
*
|
|
* Created on: Mar 25, 2017
|
|
* Author: kolban
|
|
*/
|
|
|
|
#ifndef MAIN_NIMBLESERVICE_H_
|
|
#define MAIN_NIMBLESERVICE_H_
|
|
|
|
#include "nimconfig.h"
|
|
#if defined(CONFIG_BT_ENABLED) && defined(CONFIG_BT_NIMBLE_ROLE_PERIPHERAL)
|
|
|
|
#include "NimBLEServer.h"
|
|
#include "NimBLECharacteristic.h"
|
|
#include "NimBLEUUID.h"
|
|
|
|
|
|
class NimBLEServer;
|
|
class NimBLECharacteristic;
|
|
|
|
|
|
/**
|
|
* @brief The model of a %BLE service.
|
|
*
|
|
*/
|
|
class NimBLEService {
|
|
public:
|
|
|
|
NimBLEService(const char* uuid);
|
|
NimBLEService(const NimBLEUUID &uuid);
|
|
~NimBLEService();
|
|
|
|
NimBLEServer* getServer();
|
|
|
|
NimBLEUUID getUUID();
|
|
uint16_t getHandle();
|
|
std::string toString();
|
|
void dump();
|
|
|
|
bool start();
|
|
|
|
NimBLECharacteristic* createCharacteristic(const char* uuid,
|
|
uint32_t properties =
|
|
NIMBLE_PROPERTY::READ |
|
|
NIMBLE_PROPERTY::WRITE,
|
|
uint16_t max_len = BLE_ATT_ATTR_MAX_LEN);
|
|
|
|
NimBLECharacteristic* createCharacteristic(const NimBLEUUID &uuid,
|
|
uint32_t properties =
|
|
NIMBLE_PROPERTY::READ |
|
|
NIMBLE_PROPERTY::WRITE,
|
|
uint16_t max_len = BLE_ATT_ATTR_MAX_LEN);
|
|
|
|
void addCharacteristic(NimBLECharacteristic* pCharacteristic);
|
|
void removeCharacteristic(NimBLECharacteristic* pCharacteristic, bool deleteChr = false);
|
|
NimBLECharacteristic* getCharacteristic(const char* uuid, uint16_t instanceId = 0);
|
|
NimBLECharacteristic* getCharacteristic(const NimBLEUUID &uuid, uint16_t instanceId = 0);
|
|
NimBLECharacteristic* getCharacteristicByHandle(uint16_t handle);
|
|
|
|
std::vector<NimBLECharacteristic*> getCharacteristics();
|
|
std::vector<NimBLECharacteristic*> getCharacteristics(const char* uuid);
|
|
std::vector<NimBLECharacteristic*> getCharacteristics(const NimBLEUUID &uuid);
|
|
|
|
|
|
private:
|
|
|
|
friend class NimBLEServer;
|
|
friend class NimBLEDevice;
|
|
|
|
uint16_t m_handle;
|
|
NimBLEUUID m_uuid;
|
|
ble_gatt_svc_def* m_pSvcDef;
|
|
uint8_t m_removed;
|
|
std::vector<NimBLECharacteristic*> m_chrVec;
|
|
|
|
}; // NimBLEService
|
|
|
|
#endif /* CONFIG_BT_ENABLED && CONFIG_BT_NIMBLE_ROLE_PERIPHERAL */
|
|
#endif /* MAIN_NIMBLESERVICE_H_ */
|