Beware that this post is related to an SDK in maintenance mode
More Info: Consider nRF Connect SDK for new designs
This post is older than 2 years and might not be relevant anymore
More Info: Consider searching for newer posts

Use cases of indications - When is it better to use indications over notifications?

Hello,

I'm working on a new project I just got passed on to me, and I just realized that the project uses indications instead of notifications for no good reason.

Then I started wondering: Is there ever a good reason to use indications instead of notifications? I'm interested in hearing about good use cases of indications.

Things I know:

- Indications are used to get an application layer acknowledgement to check if the data was useful to the central (why would a peripheral want to know this? I'd be grateful to hear some examples of this).

- Both indications and notifications are acknowledged in the link layer (so, to confirm that the data arrived is not a good reason to use indications IMO).

- You can send 6 notifications, but only one indication per connection interval (notifications have a big edge on this).

I'm very interested to see what good use cases of indications are out there.

Thanks for your input!

Parents
  • Hi Andy

    You summarize the differences perfectly, and the short answer is that if you don't know a reason to use indications you should probably just stick to notifications. They are quicker, more power efficient, and are still guaranteed to reach the target because of the link layer ACK (assuming the link doesn't break completely of course).

    Indications can be useful in situations where you want to start some time consuming operation on the client side, and you want to restrict the ability to send more data or commands while the current operation is running. The client can send a response to the indication once the operation is complete, and is guaranteed not to receive any new commands before this, since you can only have one indication pending at the time. 

    Best regards
    Torbjørn 

  • Hi Torbjørn,

    so if I understand correctly it is possible for the indication to not be acknowledged over multiple connection intervals? For example, a peripheral sends an indication to a central and the central sends the acknowledgment a minute later?

    If that's the case, I didn't know and I now understand the usability of indications :)

  • Hi Andy

    That is correct. It is up to the application on the client side to decide when to send the confirmation that the indication has been received. You don't have to do it right away. 

    Best regards
    Torbjørn

Reply Children
Related