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

Advanced Burst - break large(r) data array into packets to sd_ant_burst_handler_request?

Hi

I have a sensor array which data have to be advanced burst to one or many devices.

The array size is anything from 24 bytes to 24k bytes, depending on the number of devices.

Following from the Advanced Burst example, should I send the entire array to 

sd_ant_burst_handler_request(ANT_M_BURST_CHANNEL_NUMBER,
                                        bytes_to_send,
                                        p_burst_data,
                                        burst_segment);

or should I partition it into 128 byte packets?

Which is the recommended method?

Thanks

Parents
  • Hi,

    Please have a look at this answer.

    NRF_SDH_ANT_BURST_QUEUE_SIZE is used to set BURST_BLOCK_SIZE in ANT Advanced Burst. This is then used to create a burst buffer, which later on are filled with the data and passed to sd_ant_burst_handler_request.

    Best regards,
    Jørgen

  • This is described in the example documentation:

    Advanced burst data transmission provides a mechanism to transfer bulk data with a maximum data throughput of 60 kbps. The transmission rate, along with optional features such as frequency hopping, is negotiated over the air, offering backward compatibility with implementations that support only standard burst. In order to sustain this data throughput, the application must ensure that data is available for transmission on a timely basis. One mechanism available to achieve this is buffering. ANT SoftDevices provide a burst handler that can queue arbitrary amounts of burst data for transmission by passing an input buffer with the data to send. While it is possible to place the entire burst data in the input buffer, this may not be a feasible option for large amounts of data due to RAM limitations.

    The purpose of this example is to demonstrate how to send and receive large amounts of burst data while buffering smaller blocks of data (128 bytes) at a time. This example shows how to process the different ANT events to queue the next block of data for optimal throughput, as well as to determine the success or failure of the burst transfer. The example also shows how to split the received advanced burst data into 8-byte segments, resembling standard burst messages.

    As you see, you can use larger blocks if you want. This size is just selected in the example as it is large enough to provide data fast enough to keep the throughput, but will not consume all the RAM of the device.

Reply
  • This is described in the example documentation:

    Advanced burst data transmission provides a mechanism to transfer bulk data with a maximum data throughput of 60 kbps. The transmission rate, along with optional features such as frequency hopping, is negotiated over the air, offering backward compatibility with implementations that support only standard burst. In order to sustain this data throughput, the application must ensure that data is available for transmission on a timely basis. One mechanism available to achieve this is buffering. ANT SoftDevices provide a burst handler that can queue arbitrary amounts of burst data for transmission by passing an input buffer with the data to send. While it is possible to place the entire burst data in the input buffer, this may not be a feasible option for large amounts of data due to RAM limitations.

    The purpose of this example is to demonstrate how to send and receive large amounts of burst data while buffering smaller blocks of data (128 bytes) at a time. This example shows how to process the different ANT events to queue the next block of data for optimal throughput, as well as to determine the success or failure of the burst transfer. The example also shows how to split the received advanced burst data into 8-byte segments, resembling standard burst messages.

    As you see, you can use larger blocks if you want. This size is just selected in the example as it is large enough to provide data fast enough to keep the throughput, but will not consume all the RAM of the device.

Children
Related