This post is older than 2 years and might not be relevant anymore
More Info: Consider searching for newer posts

S110 - Sending multiple notifications per connection event

Hello,

I have a couple of questions about sending multiple notifications:

  1. I want to send multiple notifications (from same characteristic), is that allowed by S110 softdevice?

  2. What is the maximum number of packets that S110 could process per connection event?

  3. If I send 3 notifications in the order N1, N2 & N3 at same time, the receiving end will get them with the same order, is that correct?

  4. A BLE_EVT_TX_COMPLETE event will be generated when the packet has been transmitted, so if I send 3 notifications at same time, 3 BLE_EVT_TX_COMPLETE events will be generated, is that correct?

  5. If a BLE_EVT_TX_COMPLETE event is generated for the packet transmission, does it mean that the packet has been successfully received by the receiver?

Thank you for your attention! Joseph

  • Hi there,

    1. I want to send multiple notifications (from same characteristic), is that allowed by S110 softdevice?

    Yes.

    1. What is the maximum number of packets that S110 could process per connection event?

    Depending on the constraints, up to 6.

    1. If I send 3 notifications in the order N1, N2 & N3 at same time, the receiving end will get them with the same order, is that correct?

    Yes.

    1. A BLE_EVT_TX_COMPLETE event will be generated when the packet has been transmitted, so if I send 3 notifications at same time, 3 BLE_EVT_TX_COMPLETE events will be generated, is that correct

    No, you may get 3 events each with count=1 or get a single event with count=3, make no assumptions there.

    1. If a BLE_EVT_TX_COMPLETE event is generated for the packet transmission, does it mean that the packet has been successfully received by the receiver?

    When you receive a BLE_EVT_TX_COMPLETE, that means that the packet has been successfully transmitted to the peer device, at the lowest Link Layer level. So the packet has reached the other device, it does not mean that the other device has processed it yet, since that will depend on the load and limitations of the peer device's stack. If you want to make sure that the remote peer's GATT layer has received your packet, use indications.

    Regards,

    Carles

    1. If a BLE_EVT_TX_COMPLETE event is generated for the packet transmission, does it mean that the packet has been successfully received by the receiver?

    if not,will the BLE stack transmit the packet again automatically,until it will be transmitted successfully?

  • Yes, as Carles pointed out, that means that the peer link layer have acknowledged receiving the packet, thus this packet will not be re-transmitted.

    It does not mean that the peer host have processed it.

  • What is the best way to ensure that the peer has actually processed it? Add a characteristic (i.e. flag) that the peer can write to indicate that it has completed? For example:

    clear the flag send out the packet wait for the BLE_EVT_TX_COMPLETE AND the flag to be set by the peer clear the flag and send out next packet

Related