Skip to content

Commit d0636d9

Browse files
authored
RDKEMW-7225: BLE pairing retries (#126)
if BLE pairing fails, retry 3 times or up to the pairing timeout (currently configured at 20 seconds), whichever comes first.
1 parent b47d6f8 commit d0636d9

File tree

2 files changed

+15
-4
lines changed

2 files changed

+15
-4
lines changed

src/ble/hal/blercu/bluez/blercudevice.cpp

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -97,6 +97,8 @@ BleRcuDeviceBluez::BleRcuDeviceBluez(const BleAddress &bdaddr,
9797
, m_lastPairedState(false)
9898
, m_lastServicesResolvedState(false)
9999
, m_isPairing(false)
100+
, m_pairingRetryCnt(0)
101+
, m_maxPairingRetries(3)
100102
, m_timeSinceReady(0)
101103
, m_recoveryAttempts(0)
102104
, m_maxRecoveryAttempts(100)
@@ -261,11 +263,17 @@ void BleRcuDeviceBluez::onPairRequestReply(PendingReply<> *reply)
261263
if (reply->isError()) {
262264
m_isPairing = false;
263265

264-
// an error occurred so log it
265266
XLOGD_ERROR("%s pairing request failed with error: <%s>",
266-
m_address.toString().c_str(), reply->errorMessage().c_str());
267-
268-
m_pairingErrorSlots.invoke(reply->errorMessage());
267+
m_address.toString().c_str(), reply->errorMessage().c_str());
268+
269+
if (m_pairingRetryCnt < m_maxPairingRetries) {
270+
m_pairingRetryCnt++;
271+
XLOGD_INFO("Retrying pairing, attempt %d out of %d ", m_pairingRetryCnt, m_maxPairingRetries);
272+
pair(0);
273+
} else {
274+
m_pairingRetryCnt = 0;
275+
m_pairingErrorSlots.invoke(reply->errorMessage());
276+
}
269277
} else {
270278
XLOGD_DEBUG("%s pairing request successful", m_address.toString().c_str());
271279
}

src/ble/hal/blercu/bluez/blercudevice_p.h

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -232,6 +232,9 @@ class BleRcuDeviceBluez : public BleRcuDevice
232232
bool m_lastServicesResolvedState;
233233
bool m_isPairing;
234234

235+
int m_pairingRetryCnt;
236+
int m_maxPairingRetries;
237+
235238
GTimer* m_timeSinceReady;
236239

237240
int m_recoveryAttempts;

0 commit comments

Comments
 (0)