Hi Chris, One quick clarification question: after receiving a callback with any error status, do you guarantee that the callback will never be called again (including with a NULL svc param)?
On Mon, Jun 20, 2016 at 3:17 PM, chris collins <ch...@runtime.io> wrote: > I agree it would be better to pass a status of BLE_HS_EDONE rather than 0 > in this case. I will include this in the list of API-breaking changes that > I think should be made to the Nimble host. > > Thanks, > Chris > > On Mon, Jun 20, 2016 at 3:06 PM, Simon Ratner <si...@proxy.co> wrote: > > > Oh, interesting. It hadn't occurred to me to check that svc pointer is > > non-NULL. I assumed from the callback function signature that absence of > > error implies that the remainder of params hold valid data (this seems to > > be a common standard for callbacks, at least in my experience). Of > course, > > deref of NULL doesn't fail on hardware without memory protection :) > > > > Thanks for clarifying. > > > > > > On Mon, Jun 20, 2016 at 2:51 PM, chris collins <ch...@runtime.io> wrote: > > > > > Hi Simon, > > > > > > Yes, you are correct - the second callback indicates that the discovery > > > operation is complete. You can determine that the procedure has > > > successfully completed by checking the following: > > > > > > * rc == 0 > > > * service pointer is null > > > > > > If your callback only gets executed once, and the parameters are as > > defined > > > above, that means the peer device does not support the service you are > > > interested in. > > > > > > The reason for this somewhat awkward interface is that a device is > > allowed > > > to support two different services with the same UUID. To resolve this > > > ambiguity, the callback gets executed with special values indicating > > > discovery is complete. > > > > > > By the way - I hadn't noticed that jira ticket you filed a few days > ago. > > > Sorry about that. I will close it with the above explanation shortly. > > > > > > On Mon, Jun 20, 2016 at 2:34 PM, Simon Ratner <si...@proxy.co> wrote: > > > > > > > Actually I think I just realised that might be what the mystery > second > > > > callback in https://issues.apache.org/jira/browse/MYNEWT-326 is. Is > > that > > > > actually the "done" callback that just fails to set the error param > > > > correctly? > > > > > > > > > > > > > > > > On Mon, Jun 20, 2016 at 2:32 PM, Simon Ratner <si...@proxy.co> > wrote: > > > > > > > > > Hi devs, > > > > > > > > > > It appear that when I call ble_gattc_disc_svc_by_uuid with a > service > > id > > > > > that the device does not implement, I don't get any indication that > > is > > > > the > > > > > case. No callback, no error, just sits there holding up the > > connection > > > > > resources. > > > > > > > > > > Same deal with ble_gattc_read_by_uuid. > > > > > > > > > > I would've expected a callback with an error value, or some other > > > > > indication discovery was completed but the requested > > service/attribute > > > > > wasn't found. > > > > > > > > > > > > > > >