Search code examples
iosswiftmacoscore-bluetoothobd-ii

Looking for Information on the Bluetooth LE "Indicate" Behavior


I'm working on a Bluetooth LE project, and it's going fairly well.

However, I am now up to supporting a Kiwi device, and the rules are changing a bit.

Before, I would use various combinations of BLE read and BLE write properties on vendor-specific GATT characteristics, but I think that Kiwi might use the Indicate property.

I can find almost no documentation on Indicate, and how to work with it. Apple doesn't seem to have any mention of it in their docs, and the Bluetooth spec barely mentions it.

I must have missed the documents on that property, and how it differs from read. From reading the (very short) blurbs on it, it sounds just like read, but my explorations of the Kiwi device don't seem to be supporting it.

I know that this is a bit of an "open-ended" question, but I need to learn more about Indicate, and how it is supported in CoreBluetooth.

I would really appreciate any pointers. I just need a bit of a breadcrumb trail that I can follow.

Thanks!


Solution

  • Indicate and Notify are similar; They provide a new characteristic value to the central when the peripheral changes that value without the central needing to perform inefficient polling. The difference at the Bluetooth layers is that the central needs to acknowledge receipt of an Indicate to the peripheral, while with Notify no such acknowledgement takes place.

    Since the Core Bluetooth framework abstracts the underlying Bluetooth stack from your app you don't need to worry about the difference between Indicate and Notify - Core Bluetooth handles it for you.