Add last error function to client.

This commit is contained in:
h2zero 2021-12-29 08:12:38 -07:00
parent d041a089e6
commit 7a82067177
2 changed files with 21 additions and 0 deletions

View file

@ -63,6 +63,7 @@ NimBLEClient::NimBLEClient(const NimBLEAddress &peerAddress) : m_peerAddress(pee
m_deleteCallbacks = false; m_deleteCallbacks = false;
m_pTaskData = nullptr; m_pTaskData = nullptr;
m_connEstablished = false; m_connEstablished = false;
m_lastErr = 0;
m_pConnParams.scan_itvl = 16; // Scan interval in 0.625ms units (NimBLE Default) m_pConnParams.scan_itvl = 16; // Scan interval in 0.625ms units (NimBLE Default)
m_pConnParams.scan_window = 16; // Scan window in 0.625ms units (NimBLE Default) m_pConnParams.scan_window = 16; // Scan window in 0.625ms units (NimBLE Default)
@ -252,6 +253,8 @@ bool NimBLEClient::connect(const NimBLEAddress &address, bool deleteAttibutes) {
} while (rc == BLE_HS_EBUSY); } while (rc == BLE_HS_EBUSY);
m_lastErr = rc;
if(rc != 0) { if(rc != 0) {
m_pTaskData = nullptr; m_pTaskData = nullptr;
return false; return false;
@ -274,6 +277,7 @@ bool NimBLEClient::connect(const NimBLEAddress &address, bool deleteAttibutes) {
return false; return false;
} else if(taskData.rc != 0){ } else if(taskData.rc != 0){
m_lastErr = taskData.rc;
NIMBLE_LOGE(LOG_TAG, "Connection failed; status=%d %s", NIMBLE_LOGE(LOG_TAG, "Connection failed; status=%d %s",
taskData.rc, taskData.rc,
NimBLEUtils::returnCodeToString(taskData.rc)); NimBLEUtils::returnCodeToString(taskData.rc));
@ -315,6 +319,7 @@ bool NimBLEClient::secureConnection() {
int rc = NimBLEDevice::startSecurity(m_conn_id); int rc = NimBLEDevice::startSecurity(m_conn_id);
if(rc != 0){ if(rc != 0){
m_lastErr = rc;
m_pTaskData = nullptr; m_pTaskData = nullptr;
return false; return false;
} }
@ -323,6 +328,7 @@ bool NimBLEClient::secureConnection() {
} while (taskData.rc == (BLE_HS_ERR_HCI_BASE + BLE_ERR_PINKEY_MISSING) && retryCount--); } while (taskData.rc == (BLE_HS_ERR_HCI_BASE + BLE_ERR_PINKEY_MISSING) && retryCount--);
if(taskData.rc != 0){ if(taskData.rc != 0){
m_lastErr = taskData.rc;
return false; return false;
} }
@ -373,6 +379,7 @@ int NimBLEClient::disconnect(uint8_t reason) {
} }
NIMBLE_LOGD(LOG_TAG, "<< disconnect()"); NIMBLE_LOGD(LOG_TAG, "<< disconnect()");
m_lastErr = rc;
return rc; return rc;
} // disconnect } // disconnect
@ -535,6 +542,7 @@ int NimBLEClient::getRssi() {
if(rc != 0) { if(rc != 0) {
NIMBLE_LOGE(LOG_TAG, "Failed to read RSSI error code: %d, %s", NIMBLE_LOGE(LOG_TAG, "Failed to read RSSI error code: %d, %s",
rc, NimBLEUtils::returnCodeToString(rc)); rc, NimBLEUtils::returnCodeToString(rc));
m_lastErr = rc;
return 0; return 0;
} }
@ -673,11 +681,13 @@ bool NimBLEClient::retrieveServices(const NimBLEUUID *uuid_filter) {
if (rc != 0) { if (rc != 0) {
NIMBLE_LOGE(LOG_TAG, "ble_gattc_disc_all_svcs: rc=%d %s", rc, NimBLEUtils::returnCodeToString(rc)); NIMBLE_LOGE(LOG_TAG, "ble_gattc_disc_all_svcs: rc=%d %s", rc, NimBLEUtils::returnCodeToString(rc));
m_lastErr = rc;
return false; return false;
} }
// wait until we have all the services // wait until we have all the services
ulTaskNotifyTake(pdTRUE, portMAX_DELAY); ulTaskNotifyTake(pdTRUE, portMAX_DELAY);
m_lastErr = taskData.rc;
if(taskData.rc == 0){ if(taskData.rc == 0){
NIMBLE_LOGD(LOG_TAG, "<< retrieveServices"); NIMBLE_LOGD(LOG_TAG, "<< retrieveServices");
@ -1159,6 +1169,15 @@ std::string NimBLEClient::toString() {
} // toString } // toString
/**
* @brief Get the last error code reported by the NimBLE host
* @return int, the NimBLE error code.
*/
int NimBLEClient::getLastError() {
return m_lastErr;
} // getLastError
void NimBLEClientCallbacks::onConnect(NimBLEClient* pClient) { void NimBLEClientCallbacks::onConnect(NimBLEClient* pClient) {
NIMBLE_LOGD("NimBLEClientCallbacks", "onConnect: default"); NIMBLE_LOGD("NimBLEClientCallbacks", "onConnect: default");
} }

View file

@ -71,6 +71,7 @@ public:
void setDataLen(uint16_t tx_octets); void setDataLen(uint16_t tx_octets);
void discoverAttributes(); void discoverAttributes();
NimBLEConnInfo getConnInfo(); NimBLEConnInfo getConnInfo();
int getLastError();
private: private:
NimBLEClient(const NimBLEAddress &peerAddress); NimBLEClient(const NimBLEAddress &peerAddress);
@ -88,6 +89,7 @@ private:
bool retrieveServices(const NimBLEUUID *uuid_filter = nullptr); bool retrieveServices(const NimBLEUUID *uuid_filter = nullptr);
NimBLEAddress m_peerAddress; NimBLEAddress m_peerAddress;
int m_lastErr;
uint16_t m_conn_id; uint16_t m_conn_id;
bool m_connEstablished; bool m_connEstablished;
bool m_deleteCallbacks; bool m_deleteCallbacks;