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

Multi packets in SDK 7.2.0 bootloader

Hi, We are doing DFU updates through a nrf51422 dongle (data passing from UART to BLE), using our own code, based on the multilink central example.

The DFU peripherals are nrf51822, s110 7.0.0, SDK 7.2.0. The central unit is nrf51422 dongle, s130 3.0.0, SDK 12.2.0.

We are trying to achieve maximum throughput by using multiple packets per connection interval (@ 7.5 ms interval). It works fine when using a single packet and even two packets per interval, but when increasing to 3 or more, packets seem to get lost, even though TX_COMPLETE event is triggered.

Based on the peripheral SD and SDK, are they suppose to support such throughput?

EDIT: I can't seem to find a way to attach the sniffer trace file. The form allows me to select a file, but doesn't seem to do anything with the file I choose.

Try this link.

This is a trace with a 12 packet notifiaction and 4 packets per connection interval (connection interval set at ~18sec). I stopped it brutally at the middle since it was very slow. The 4 sec breaks are the time we wait for a notification on the central side.

Parents
  • The hci_mem_pool_internal.h is identical. Is it possible that I get different HVX events in the central? I tried printing the data from p_ble_evt->evt.gattc_evt.params.hvx.data, based on the length in the same member. Mostly I get:

      [0x10 0x03 0x06]
    

    but every few events I get something like these:

      [0x11 0x40 0x1F 0x00 0x00]
      [0x11 0x10 0x27 0x00 0x00]
    

    As for the number of packets, our procedure in the central is as follows (for X packets notification):

    1. call sd_ble_gattc_write for each packet.

    2. if we get BLE_ERROR_NO_TX_PACKETS, retry every 1ms for up to 1 sec.

    3. after sending X packets, wait for notification to arrive (up to 4 sec wait).

    4. after notification is received, go back to #1.

Reply
  • The hci_mem_pool_internal.h is identical. Is it possible that I get different HVX events in the central? I tried printing the data from p_ble_evt->evt.gattc_evt.params.hvx.data, based on the length in the same member. Mostly I get:

      [0x10 0x03 0x06]
    

    but every few events I get something like these:

      [0x11 0x40 0x1F 0x00 0x00]
      [0x11 0x10 0x27 0x00 0x00]
    

    As for the number of packets, our procedure in the central is as follows (for X packets notification):

    1. call sd_ble_gattc_write for each packet.

    2. if we get BLE_ERROR_NO_TX_PACKETS, retry every 1ms for up to 1 sec.

    3. after sending X packets, wait for notification to arrive (up to 4 sec wait).

    4. after notification is received, go back to #1.

Children
No Data
Related