forked from h2zero/esp-nimble-cpp
Refactor client connection establishment and client deletion.
* Removes the connection established flag as it should not be necessary. * Deleting the client instance from the `onDisconnect` callback is now supported. * `NimBLEDevice::deleteClient` no longer blocks tasks * Adds a new `Config` struct to `NimBLEClient` to efficiently set single bit config settings. * Adds `NimBLEClient::setSelfDelete` that takes the bool parameters `deleteOnDisconnect` and `deleteOnConnectFail` This will configure the client to delete itself when disconnected or the connection attempt fails. * Adds `NimBLEClient::setConfig` and `NimBLEClient::getConfig` which takes or returns a `NimBLEClient::Config` object respectively. * Reword `BLE_HS_EAPP` error string to be more accurate.
This commit is contained in:
+15
-5
@@ -51,7 +51,8 @@ class NimBLEClient {
|
||||
bool connect(const NimBLEAddress& address, bool deleteAttributes = true, bool asyncConnect = false, bool exchangeMTU = true);
|
||||
bool connect(bool deleteAttributes = true, bool asyncConnect = false, bool exchangeMTU = true);
|
||||
bool disconnect(uint8_t reason = BLE_ERR_REM_USER_CONN_TERM);
|
||||
bool cancelConnect();
|
||||
bool cancelConnect() const;
|
||||
void setSelfDelete(bool deleteOnDisconnect, bool deleteOnConnectFail);
|
||||
NimBLEAddress getPeerAddress() const;
|
||||
bool setPeerAddress(const NimBLEAddress& address);
|
||||
int getRssi() const;
|
||||
@@ -95,6 +96,17 @@ class NimBLEClient {
|
||||
void setConnectPhy(uint8_t mask);
|
||||
# endif
|
||||
|
||||
struct Config {
|
||||
uint8_t deleteCallbacks : 1; // Delete the callback object when the client is deleted.
|
||||
uint8_t deleteOnDisconnect : 1; // Delete the client when disconnected.
|
||||
uint8_t deleteOnConnectFail : 1; // Delete the client when a connection attempt fails.
|
||||
uint8_t asyncConnect : 1; // Connect asynchronously.
|
||||
uint8_t exchangeMTU : 1; // Exchange MTU after connection.
|
||||
};
|
||||
|
||||
Config getConfig() const;
|
||||
void setConfig(Config config);
|
||||
|
||||
private:
|
||||
NimBLEClient(const NimBLEAddress& peerAddress);
|
||||
~NimBLEClient();
|
||||
@@ -117,10 +129,8 @@ class NimBLEClient {
|
||||
NimBLEClientCallbacks* m_pClientCallbacks;
|
||||
uint16_t m_connHandle;
|
||||
uint8_t m_terminateFailCount;
|
||||
bool m_deleteCallbacks;
|
||||
bool m_connEstablished;
|
||||
bool m_asyncConnect;
|
||||
bool m_exchangeMTU;
|
||||
Config m_config;
|
||||
|
||||
# if CONFIG_BT_NIMBLE_EXT_ADV
|
||||
uint8_t m_phyMask;
|
||||
# endif
|
||||
|
||||
Reference in New Issue
Block a user