This post is older than 2 years and might not be relevant anymore
More Info: Consider searching for newer posts

Descriptor Detection Fails

I am advertising services, characteristics and descriptors.  All are seen by nRF Connect (for iOS) but in the log I see this:

  [Callback] peripheral(periphal, didDiscoverDescriptorsFor: <128-bit UUID>, error: nil)...

Can you please describe what this means?  I am attempting to write 1-4 bytes of data, depending on the type of descriptor.  The only descriptor I see in the "Client" tab is 0x2902, which I assume is the generic header shown for any characteristic.  My process for instantiating is thus:

1.  Create a service,

2.  Create one or more characteristics for that service,

3.  Create one or more descriptors for each characteristic,

4.  Instantiate the service.

I thought maybe my sequence was off or possibly my function call to write the data.  I have no access to permissions control; I am at the mercy of the library routines.

Appreciate any comments - thanks in advance.

- Fred Marsh

Parents
  • My original post is not clear.  nRF Connect appears to discover descriptors but then does not display them, or shows that there are none when in fact there are some.  It is perfectly possible that it is my code but my descriptor functions are nearly identical to my characteristic functions so it may be something subtle.  Here is a better example of what I'm talking about:

      17:38:48  Discovering Descriptors for Characteristic Manufacturer Name String

      17:38:48  peripheral.discoverDescriptors(for: 2A29)

      17:38:52  [Callback] peripheral(peripheral, didDiscoverDescriptorsFor: 2A29, error: nil)

      17:38:52  Characteristic Manufacturer Name String has no Descriptors

    ...when in fact it has two, one that is 5 bytes long and one that is 8.  In general, I am not sure why no descriptors show up in nRF Connect (except 0x2902, CCCD) but I presume that is a style setting to limit the amount of time taken/ or data shown on the Client tab.  When I use the client tab to read the characteristics I instantiated for that device, I see the bytes I expect (if the characteristic is readable that is).

    Thanks,

    - Fred

  • Hi Fred,

    Do you see the descriptors if you test with another device, for instance nRF Connect for desktop? If not, can you share your code were you define these services (including characteristics and descriptors)?

    Einar

  • I have not tried nRF Connect for desktop.  That is a good idea - I'm going to give it a whirl.  I've got them running on two devices and the second device picks up the descriptors correctly (and dumps them to its respective debug port for monitoring).

    I can share the code but it's written in C++ for the Arduino library (targeting the Arduino Nano 33 IoT module)

    I will let you know how the nRF Connect desktop application test goes.

    - Fred.

  • I was not successful using the nRF Connect environment on my Windoze laptop.  In the meantime, I've found other problems related to the Arduino library I'm using so I'm inclined to think my problem previously mentioned is related.  Please close this ticket and thank you for the suggestion.

     - Fred

Reply Children
No Data
Related