Hi Andrzej,
Below is my GAP event callback function and the console output when I
attempt to bond with my device (I'm using the Nordic nRF Connect app
on my phone to interact with the device):
static int bleprph_gap_event(struct ble_gap_event *event, void *arg) {
int rc = 0;
switch(event->type) {
case BLE_GAP_EVENT_CONNECT:
console_printf("Connected\n");
break;
case BLE_GAP_EVENT_DISCONNECT:
console_printf("Disconnected\n");
ble_advertise();
break;
case BLE_GAP_EVENT_CONN_UPDATE:
console_printf("Connection updated\n");
break;
case BLE_GAP_EVENT_CONN_UPDATE_REQ:
console_printf("Connection update requested\n");
break;
case BLE_GAP_EVENT_PASSKEY_ACTION: {
console_printf("Passkey Request. Action: %d, Numcmp: %lu\n",
event->passkey.params.action,
event->passkey.params.numcmp);
if (event->passkey.params.action == BLE_SM_IOACT_DISP) {
struct ble_sm_io pk;
pk.action = event->passkey.params.action;
pk.passkey = 4539;
rc = ble_sm_inject_io(event->passkey.conn_handle, &pk);
console_printf("ble_sm_inject_io result: %d\n", rc);
}
break;
}
default:
console_printf("GAP Event: %i\n", event->type);
}
return rc;
}
001039 Passkey Request. Action: 3, Numcmp: 0
001040 ble_sm_inject_io result: 0
001639 GAP Event: 10
002037 Connection updated
002037 Disconnected
On the phone, I get requested for a pin number and I enter 4539. After
that, the end device just disconnects from the bluetooth.