15 #ifndef MAIN_NIMBLESERVER_H_
16 #define MAIN_NIMBLESERVER_H_
19 #if defined(CONFIG_BT_ENABLED) && defined(CONFIG_BT_NIMBLE_ROLE_PERIPHERAL)
21 #define NIMBLE_ATT_REMOVE_HIDE 1
22 #define NIMBLE_ATT_REMOVE_DELETE 2
24 #define onMtuChanged onMTUChange
26 #include "NimBLEUtils.h"
27 #include "NimBLEAddress.h"
28 #if CONFIG_BT_NIMBLE_EXT_ADV
29 #include "NimBLEExtAdvertising.h"
31 #include "NimBLEAdvertising.h"
33 #include "NimBLEService.h"
34 #include "NimBLESecurity.h"
35 #include "NimBLEConnInfo.h"
54 bool deleteCallbacks =
true);
55 #if CONFIG_BT_NIMBLE_EXT_ADV
71 uint8_t reason = BLE_ERR_REM_USER_CONN_TERM);
73 uint16_t minInterval, uint16_t maxInterval,
74 uint16_t latency, uint16_t timeout);
75 void setDataLen(uint16_t conn_handle, uint16_t tx_octets);
81 #if !CONFIG_BT_NIMBLE_EXT_ADV || defined(_DOXYGEN_)
92 #if CONFIG_BT_NIMBLE_EXT_ADV
94 friend class NimBLEExtAdvertisementData;
98 #if !CONFIG_BT_NIMBLE_EXT_ADV
99 bool m_advertiseOnDisconnect;
103 bool m_deleteCallbacks;
105 std::vector<uint16_t> m_connectedPeersVec;
109 std::vector<NimBLEService*> m_svcVec;
110 std::vector<NimBLECharacteristic*> m_notifyChrVec;
112 static int handleGapEvent(
struct ble_gap_event *event,
void *arg);
113 void serviceChanged();
115 bool setIndicateWait(uint16_t conn_handle);
116 void clearIndicateWait(uint16_t conn_handle);
165 virtual void onMTUChange(uint16_t MTU, ble_gap_conn_desc* desc);
A BLE device address.
Definition: NimBLEAddress.h:39
Perform and manage BLE advertising.
Definition: NimBLEAdvertising.h:87
The model of a BLE Characteristic.
Definition: NimBLECharacteristic.h:63
Connection information.
Definition: NimBLEConnInfo.h:9
A model of a BLE Device from which all the BLE roles are created.
Definition: NimBLEDevice.h:96
Extended advertising class.
Definition: NimBLEExtAdvertising.h:92
Callbacks associated with the operation of a BLE server.
Definition: NimBLEServer.h:123
virtual void onDisconnect(NimBLEServer *pServer)
Handle a client disconnection. This is called when a client disconnects.
Definition: NimBLEServer.cpp:887
virtual bool onConfirmPIN(uint32_t pin)
Called when using numeric comparision for pairing.
Definition: NimBLEServer.cpp:916
virtual void onAuthenticationComplete(ble_gap_conn_desc *desc)
Called when the pairing procedure is complete.
Definition: NimBLEServer.cpp:913
virtual void onConnect(NimBLEServer *pServer)
Handle a client connection. This is called when a client connects.
Definition: NimBLEServer.cpp:877
virtual void onMTUChange(uint16_t MTU, ble_gap_conn_desc *desc)
Called when the connection MTU changes.
Definition: NimBLEServer.cpp:895
virtual uint32_t onPassKeyRequest()
Called when a client requests a passkey for pairing.
Definition: NimBLEServer.cpp:899
The model of a BLE server.
Definition: NimBLEServer.h:46
void removeService(NimBLEService *service, bool deleteSvc=false)
Remove a service from the server.
Definition: NimBLEServer.cpp:653
void setDataLen(uint16_t conn_handle, uint16_t tx_octets)
Request an update of the data packet length.
Definition: NimBLEServer.cpp:839
NimBLEService * getServiceByHandle(uint16_t handle)
Get a BLE Service by its handle.
Definition: NimBLEServer.cpp:135
NimBLEConnInfo getPeerInfo(size_t index)
Get the connection information of a connected peer by vector index.
Definition: NimBLEServer.cpp:287
void setCallbacks(NimBLEServerCallbacks *pCallbacks, bool deleteCallbacks=true)
Set the server callbacks.
Definition: NimBLEServer.cpp:625
int disconnect(uint16_t connID, uint8_t reason=BLE_ERR_REM_USER_CONN_TERM)
Disconnect the specified client with optional reason.
Definition: NimBLEServer.cpp:242
void advertiseOnDisconnect(bool)
Set the server to automatically start advertising when a client disconnects.
Definition: NimBLEServer.cpp:261
void addService(NimBLEService *service)
Adds a service which was either already created but removed from availability, or created and later a...
Definition: NimBLEServer.cpp:691
bool stopAdvertising()
Stop advertising.
Definition: NimBLEServer.cpp:787
NimBLEService * getServiceByUUID(const char *uuid, uint16_t instanceId=0)
Get a BLE Service by its UUID.
Definition: NimBLEServer.cpp:106
bool startAdvertising(uint8_t inst_id, int duration=0, int max_events=0)
Start advertising.
Definition: NimBLEServer.cpp:753
size_t getConnectedCount()
Return the number of connected clients.
Definition: NimBLEServer.cpp:270
void updateConnParams(uint16_t conn_handle, uint16_t minInterval, uint16_t maxInterval, uint16_t latency, uint16_t timeout)
Request an Update the connection parameters:
Definition: NimBLEServer.cpp:810
uint16_t getPeerMTU(uint16_t conn_id)
Get the MTU of the client.
Definition: NimBLEServer.cpp:796
NimBLEService * createService(const char *uuid)
Create a BLE Service.
Definition: NimBLEServer.cpp:72
NimBLEExtAdvertising * getAdvertising()
Retrieve the advertising object that can be used to advertise the existence of the server.
Definition: NimBLEServer.cpp:150
std::vector< uint16_t > getPeerDevices()
Get the vector of the connected client ID's.
Definition: NimBLEServer.cpp:278
NimBLEConnInfo getPeerIDInfo(uint16_t id)
Get the connection information of a connected peer by connection ID.
Definition: NimBLEServer.cpp:320
void start()
Start the GATT server. Required to be called after setup of all services and characteristics / descri...
Definition: NimBLEServer.cpp:181
The model of a BLE service.
Definition: NimBLEService.h:34
A model of a BLE UUID.
Definition: NimBLEUUID.h:37
#define CONFIG_BT_NIMBLE_MAX_CONNECTIONS
Un-comment to change the number of simultaneous connections (esp controller max is 9)
Definition: nimconfig.h:40