From 73cec7a92a0622199c62346f5258d67a94a46afa Mon Sep 17 00:00:00 2001 From: h2zero Date: Thu, 30 Jul 2020 10:09:27 -0600 Subject: [PATCH] Remove type parameter from NimBLEClient::connect() * The type is available in the NimBLEAddress parameter, no longer needed separately. Co-authored-by: wakwak-koba --- src/NimBLEClient.cpp | 20 +++++++++++++------- src/NimBLEClient.h | 5 ++--- src/NimBLEDevice.cpp | 2 +- 3 files changed, 16 insertions(+), 11 deletions(-) diff --git a/src/NimBLEClient.cpp b/src/NimBLEClient.cpp index f68d1a7..436341c 100644 --- a/src/NimBLEClient.cpp +++ b/src/NimBLEClient.cpp @@ -134,7 +134,7 @@ size_t NimBLEClient::deleteService(const NimBLEUUID &uuid) { * @return True on success. */ bool NimBLEClient::connect(bool deleteAttibutes) { - return connect(m_peerAddress, 0, deleteAttibutes); + return connect(m_peerAddress, deleteAttibutes); } /** @@ -146,7 +146,7 @@ bool NimBLEClient::connect(bool deleteAttibutes) { */ bool NimBLEClient::connect(NimBLEAdvertisedDevice* device, bool deleteAttibutes) { NimBLEAddress address(device->getAddress()); - return connect(address, 0, deleteAttibutes); + return connect(address, deleteAttibutes); } @@ -158,7 +158,7 @@ bool NimBLEClient::connect(NimBLEAdvertisedDevice* device, bool deleteAttibutes) * have created and clears the vectors after successful connection. * @return True on success. */ -bool NimBLEClient::connect(const NimBLEAddress &address, uint8_t type, bool deleteAttibutes) { +bool NimBLEClient::connect(const NimBLEAddress &address, bool deleteAttibutes) { NIMBLE_LOGD(LOG_TAG, ">> connect(%s)", address.toString().c_str()); if(!NimBLEDevice::m_synced) { @@ -175,16 +175,22 @@ bool NimBLEClient::connect(const NimBLEAddress &address, uint8_t type, bool dele return false; } - int rc = 0; - m_peerAddress = address; + if(address == NimBLEAddress("")) { + NIMBLE_LOGE(LOG_TAG, "Invalid peer address;(NULL)"); + return false; + } else if(m_peerAddress != address) { + m_peerAddress = address; + } ble_addr_t peerAddrt; - memcpy(&peerAddrt.val, address.getNative(),6); - peerAddrt.type = address.getType(); + memcpy(&peerAddrt.val, m_peerAddress.getNative(),6); + peerAddrt.type = m_peerAddress.getType(); ble_task_data_t taskData = {this, xTaskGetCurrentTaskHandle(), 0, nullptr}; m_pTaskData = &taskData; + int rc = 0; + /* Try to connect the the advertiser. Allow 30 seconds (30000 ms) for * timeout (default value of m_connectTimeout). * Loop on BLE_HS_EBUSY if the scan hasn't stopped yet. diff --git a/src/NimBLEClient.h b/src/NimBLEClient.h index a41905f..1591cfd 100644 --- a/src/NimBLEClient.h +++ b/src/NimBLEClient.h @@ -38,10 +38,9 @@ class NimBLEAdvertisedDevice; */ class NimBLEClient { public: - bool connect(NimBLEAdvertisedDevice* device, bool deleteAttibutes = true); - bool connect(const NimBLEAddress &address, uint8_t type = BLE_ADDR_PUBLIC, - bool deleteAttibutes = true); bool connect(bool deleteAttibutes = true); + bool connect(NimBLEAdvertisedDevice* device, bool deleteAttibutes = true); + bool connect(const NimBLEAddress &address, bool deleteAttibutes = true); int disconnect(uint8_t reason = BLE_ERR_REM_USER_CONN_TERM); NimBLEAddress getPeerAddress(); void setPeerAddress(const NimBLEAddress &address); diff --git a/src/NimBLEDevice.cpp b/src/NimBLEDevice.cpp index 27d0c76..82a8086 100644 --- a/src/NimBLEDevice.cpp +++ b/src/NimBLEDevice.cpp @@ -138,7 +138,7 @@ void NimBLEDevice::stopAdvertising() { * @brief Creates a new client object and maintains a list of all client objects * each client can connect to 1 peripheral device. * @param [in] peerAddress An optional peer address that is copied to the new client - * object, allows for calling connect() without providing a device or address. + * object, allows for calling NimBLEClient::connect(bool) without a device or address parameter. * @return A reference to the new client object. */ #if defined(CONFIG_BT_NIMBLE_ROLE_CENTRAL)