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.

Reply via email to