Skip to content

Error in retrieveDescriptors() during subscribe #395

@gkoh

Description

@gkoh

Version: 2.3.4

I updated from 2.3.2 to 2.3.4 and one of my target devices fails during a subscribe with:

E (16166) NimBLERemoteCharacteristic: ble_gattc_disc_all_dscs: rc=3 One or more arguments are invalid

So, I dutifully hacked in some debug to dump the arguments:

...
E (15958) NimBLERemoteCharacteristic: 1 = 0, 2 = 77, 3 = 83, 4 = 0x4011e454, 5 = 0x3ffd9bb4
...
E (16158) NimBLERemoteCharacteristic: 1 = 0, 2 = 82, 3 = 76, 4 = 0x4011e454, 5 = 0x3ffd9bb4
E (16166) NimBLERemoteCharacteristic: ble_gattc_disc_all_dscs: rc=3 One or more arguments are invalid

Note that argument 2, the handle, is now beyond the 'end handle' returned by getRemoteService()->getEndHandle() and the end handle has changed.
The usage pattern is:

  • pChr1 = pSvc->getCharacteristic(UUID1);
  • pChr2 = pSvc->getCharacteristic(UUID2);
  • pChr2->subscribe(UUID2A);
  • pChr1->subscribe(UUID1A);

As this was working before, I backed up to 2.3.3 and got this output:

...
E (18026) NimBLERemoteCharacteristic: 1 = 0, 2 = 77, 3 = 83, 4 = 0x4011e3c4, 5 = 0x3ffd9c24
...
E (18227) NimBLERemoteCharacteristic: 1 = 0, 2 = 82, 3 = 83, 4 = 0x4011e3c4, 5 = 0x3ffd9c24

Note the end handle has not changed as before in the failure case.

I didn't bisect to confirm, but I'm fairly sure this is caused by #387.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions