Hi Andrzej,

Thank you - that does indeed work.

I have another question. Bonding now works (i.e. using the nRF52
Connect app on Android, I connect to the advertising end device and
then bond with it to save the credentials), however I would also like
to configure the end device so that it requires a pin when connecting
to the advertising device. How would this be realised using Nimble?

Thanks

Amr
On Tue, 10 Jul 2018 at 00:50, Andrzej Kaczmarek
<andrzej.kaczma...@codecoup.pl> wrote:
>
> Hi,
>
> You code looks ok. However, I noticed strange thing when testing with
> Android phone on my side: pairing fails if specified passkey has less
> than 6 digits (i.e. <100000). This does not seem to be issue in NimBLE
> since the same happens when trying to pair Android with BlueZ while
> pairing between NimBLE and BlueZ works just fine. Looks like some
> issue in Android LE SC implementation tbh...
>
> So please try with 6 digits passkey (i.e. >=100000) and it should work.
>
> Best,
> Andrzej
>
>
> On Mon, Jul 9, 2018 at 12:08 PM Amr Bekhit <amrbek...@gmail.com> wrote:
> >
> > 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