Skip to content

Commit e46c21f

Browse files
committed
-- add to NimbleClient.h/cpp
virtual void onPassKeyDisplay(NimBLEConnInfo& connInfo); -- modify NimbleClient.cpp Add the conditional statement event->passkey.params.action == BLE_SM_IOACT_DISP to the case BLE_GAP_EVENT_PASSKEY_ACTION: block in NimBLEClient::handleGapEvent(). -- add to NimbleDevice.h/cpp static bool injectDisplayPassKey(const NimBLEConnInfo& peerInfo, uint32_t pin);
1 parent 4b9a77e commit e46c21f

File tree

4 files changed

+17
-1
lines changed

4 files changed

+17
-1
lines changed

src/NimBLEClient.cpp

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1205,9 +1205,12 @@ int NimBLEClient::handleGapEvent(struct ble_gap_event* event, void* arg) {
12051205
// pClient->onOobPairingRequest(pkey.oob);
12061206
// rc = ble_sm_inject_io(event->passkey.conn_handle, &pkey);
12071207
// NIMBLE_LOGD(LOG_TAG, "ble_sm_inject_io result: %d", rc);
1208-
} else if (event->passkey.params.action == BLE_SM_IOACT_INPUT || event->passkey.params.action == BLE_SM_IOACT_DISP) {
1208+
} else if (event->passkey.params.action == BLE_SM_IOACT_INPUT) {
12091209
NIMBLE_LOGD(LOG_TAG, "Enter the passkey");
12101210
pClient->m_pClientCallbacks->onPassKeyEntry(peerInfo);
1211+
} else if (event->passkey.params.action == BLE_SM_IOACT_DISP) {
1212+
NIMBLE_LOGD(LOG_TAG, "Display the passkey");
1213+
pClient->m_pClientCallbacks->onPassKeyDisplay(peerInfo);
12111214
} else if (event->passkey.params.action == BLE_SM_IOACT_NONE) {
12121215
NIMBLE_LOGD(LOG_TAG, "No passkey action required");
12131216
}
@@ -1298,6 +1301,11 @@ void NimBLEClientCallbacks::onPassKeyEntry(NimBLEConnInfo& connInfo) {
12981301
NimBLEDevice::injectPassKey(connInfo, 123456);
12991302
} // onPassKeyEntry
13001303

1304+
void NimBLEClientCallbacks::onPassKeyDisplay(NimBLEConnInfo& connInfo) { //@@hjlee
1305+
NIMBLE_LOGD(CB_TAG, "onPassKeyEntry: default: 123456");
1306+
NimBLEDevice::injectDisplayPassKey(connInfo, 123456);
1307+
} // onPassKeyEntry
1308+
13011309
void NimBLEClientCallbacks::onAuthenticationComplete(NimBLEConnInfo& connInfo) {
13021310
NIMBLE_LOGD(CB_TAG, "onAuthenticationComplete: default");
13031311
} // onAuthenticationComplete

src/NimBLEClient.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -186,6 +186,7 @@ class NimBLEClientCallbacks {
186186
* @param [in] connInfo A reference to a NimBLEConnInfo instance containing the peer info.
187187
*/
188188
virtual void onPassKeyEntry(NimBLEConnInfo& connInfo);
189+
virtual void onPassKeyDisplay(NimBLEConnInfo& connInfo);
189190

190191
/**
191192
* @brief Called when the pairing procedure is complete.

src/NimBLEDevice.cpp

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1268,6 +1268,12 @@ bool NimBLEDevice::injectPassKey(const NimBLEConnInfo& peerInfo, uint32_t passke
12681268
return rc == 0;
12691269
}
12701270

1271+
bool NimBLEDevice::injectDisplayPassKey(const NimBLEConnInfo& info, uint32_t passkey) {
1272+
ble_sm_io pkey{.action = BLE_SM_IOACT_DISP, .passkey = passkey};
1273+
int rc = ble_sm_inject_io(info.getConnHandle(), &pkey);
1274+
return rc == 0;
1275+
}
1276+
12711277
/**
12721278
* @brief Inject the provided numeric comparison response into the Security Manager.
12731279
* @param [in] peerInfo Connection information for the peer.

src/NimBLEDevice.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -174,6 +174,7 @@ class NimBLEDevice {
174174
# if MYNEWT_VAL(BLE_ROLE_PERIPHERAL) || MYNEWT_VAL(BLE_ROLE_CENTRAL)
175175
static bool injectConfirmPasskey(const NimBLEConnInfo& peerInfo, bool accept);
176176
static bool injectPassKey(const NimBLEConnInfo& peerInfo, uint32_t pin);
177+
static bool injectDisplayPassKey(const NimBLEConnInfo& peerInfo, uint32_t pin);
177178
# endif
178179

179180
# if MYNEWT_VAL(BLE_ROLE_BROADCASTER)

0 commit comments

Comments
 (0)