AnsweredAssumed Answered

QN908x crash when discovering attributes by uuid

Question asked by Jose Raffucci on Jan 22, 2019
Latest reply on Jan 25, 2019 by Estephania Martinez

I've encountered some strange behavior when I try and discover attributes via uuid.  I have two boards with identical QN90x MCU's (host, controller) running the same SDK.  The host contains approximately 100 attributes in the gatt db.  I am able to discover all services and attributes from gatttool as well as various other tools on my phone and tablet.  When I try and discover from the controller, I find that I get a hard fault whenever I set the service limit higher than 40 or so.

 

This example does not work:

bleUuid_t *myUuid =  "UUID corresponding to handle 0x29 in host db";
gattService_t dummyService;
dummyService. startHandle = 0x0001;
dummyService. endHandle = 0xFFFF;
static gattCharacteristic_t hrcpCharacteristic;
static uint8_t mcHrcpChar;
bleResult_t result = GattClient_DiscoverCharacteristicOfServiceByUuid(deviceId,
                                                                      gBleUuidType128_c,
                                                                      &myUuid,
                                                                      &dummyService,
                                                                      &hrcpCharacteristic,
                                                                      1,
                                                                      &mcHrcpChar);


If I change the endHandle to 35, it does.

The debugger catches a hard fault on the host:

 

I suspect I'm hitting a memory limit somewhere but it's strange that I don't see this error when I try and discover from the gatttool or do a full service discovery.  Any suggestions on what buffer I may need to increase or why there might be a difference in behavior?

Outcomes