Page 1 of 1

About the callback function "onConnection"

Posted: 02:49, 05 Jun 2015
by harry617
Hello everybody,

When I walk through this tutorial "How to turn a Nordic Semiconductor nRF51-DK into a discoverable beacon using mbed (http://evothings.com/how-to-turn-a-nordic-semiconductor-nrf51-dk-into-a-discoverable-beacon-using-mbed/)"

There is a callback function "onConnection" in main code as below:

Code: Select all

void onConnection(Gap::Handle_t handle,
                             Gap::addr_type_t peerAddrType,
                             const Gap::address_t peerAddr,
                             const Gap::ConnectionParams_t * connectionParams)
 {
      set the initial values of the characteristics (for every session) led_value = 0;       
      onLedDataWritten(&led_value, 1);
      force LED's to be in off state
}
...
...
ble.onConnection(onConnection);
...

Then the compiler generate an error 167:

Code: Select all

Error: Argument of type "void (*)(Gap::Handle_t, Gap::addr_type_t, const std::uint8_t *, const Gap::ConnectionParams_t *)" is incompatible with parameter of type "Gap::ConnectionEventCallback_t" in "main.cpp", Line: 198, Col: 24

Please tell me how to remove it? :? :? :?
Thank you for your help!!

Re: About the callback function "onConnection"

Posted: 23:22, 13 Jun 2015
by naqqash13
Hi harry617,

I also have the same problem. Did you solve the issue. Anybody ??

I actually commented out that line of the code and went through the whole process as described in the tutorial. The LEDs are working fine but the button is not working. Any help will be appreciated.

Regards,
Naqqash

Re: About the callback function "onConnection"

Posted: 02:37, 23 Jun 2015
by ardiri
Hi guys

I originally wrote the blog post with the nRF51-DK; it seems that the mbed development team has turned around and changed the underlying BLE libraries and some of their naming conventions on us since the blog post was written. so unfortunately; the code doesn't work as expected - here are some modifications to reflect against the latest version of the libraries that are available within mbed development environment:

Code: Select all

-void onDataWritten(const GattCharacteristicWriteCBParams *context)
+void onDataWritten(const GattWriteCallbackParams *context)
{
  // was the characteristic being written to nRF51_GATT_CHAR_LED?
-  if (context -> charHandle ==
+  if (context -> handle ==
      gatt_characteristics[CHARACTERISTIC_LED] -> getValueHandle())
  {
    onLedDataWritten(context -> data, context -> len);
  }
}


and

OLD

Code: Select all

-void onConnection(Gap::Handle_t handle,
-                  Gap::addr_type_t peerAddrType,
-                  const Gap::address_t peerAddr,
-                  const Gap::ConnectionParams_t * connectionParams)
+void onConnection(const Gap::ConnectionCallbackParams_t *params)
{
  INFO_NL(">> connected");

  // set the initial values of the characteristics (for every session)
  led_value = 0;
  onLedDataWritten(&led_value, 1); // force LED's to be in off state
}


the code should technically still be the similar in structure; but after investigation it looks like the ARM team has finally started to look at adding central mode support within the BLE libraries which opens up a number of opportunities for developers once the soft devices can be flashed to the devices.. i've been a little out of sync with the developments lately; but it looks like it is time to get right back into it!

Re: About the callback function "onConnection"

Posted: 07:22, 29 Aug 2015
by katphlab
Hi,
I think the libraries have been changed again, when I try to compile the code it says
Error: Identifier "GattCharacteristicWriteCBParams" is undefined in "main.cpp", Line: 83, Col: 27
I tried to find GattCharacteristicWriteCBParams and indeed it is missing or i might be looking at the wrong places. Anyway, can you tell me a workaround it? Thanks in advance for help :)

Re: About the callback function "onConnection"

Posted: 12:03, 29 Aug 2015
by micke
What worked for me, for another example, is that I imported the example and check the checkbox for updating libraries. Perhaps this is what you have already tried?