This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

SIMPLELINK-CC2640R2-SDK: Which API to call for continuous transmission ?

Part Number: SIMPLELINK-CC2640R2-SDK
Other Parts Discussed in Thread: CC2640R2F, BLE-STACK

Hi,

In SimpleLink CC2640R2F SDK, normally transmit 20 Bytes payload in one BLE packet .

 

Accroding to BLE spec, we can choose to transmit 'new' packet or 'continuous' packet. Note: based on different type of LLID field type.

 

If transmit new packet, then up to 20 Bytes application data max can be loaded. If choose 'continuous', up to 27 Bytes per packet can be transmitted.

Please advise, what is the API available in SimpleLink CC2640R2F SDK to transmit 'continuous' frame ?

Thank you

  • Hi William,

    The LLID continuation and start fields are managed by the BLE-Stack internally. The application does not have control over it.

    It is possible to send a packet that is larger than 27 bytes using LE Data Length extension. This can be done in a connection using the HCI_LE_SetDataLenCmd() API. Again, in this case the stack manages the LLID for you.

    If you would like to send a continuation packet then do the following:

    - set MAX_PDU_SIZE > 27 by default this is set to 69.
    - Perform a GATT_ExchangeMTU() ( note this must be initiated by the GATT client )
    - After the MTU is exchanged, send a notification with size > 27

    At this time, so long as the data length extension is not used then the stack will fragment this packet at the controller layer and send multiple packets with a START followed by several continuation packets.
  • Hi Sean,

    Thank you for your reply.

    I saw similar data transmission related to the voice/audio data (PDM) transmission in the 'hid_adv_remote' example code from SimpleLink CC2640R2F SDK example pack. But, some differences:

    * all the 5 notification packet (which constitute 1 frame packet of 4 + 96 Bytes) are having LLID = 10b (instead of 10b for 1st packet, follow by 01b for sub-sequent packets -- in the case of continuous transmission).

    * seems all the 5 notificatications are having same packet length of 20B data (including 4B header for the 1st notification).

    Is this voice data transmission also handled in the same way as per continuous transmission ?   using the same API calls ?

    Thank you.

  • Hi William,

    The HID advanced remote audio profile is not designed to use data length extension or large GATT MTU.
    Instead, the application will split the frame into 5 notifications of 20 bytes each.

    This is used for interoperability with older BLE devices that do not yet support BLE 4.2 or later.
    However, to optimize throughput you could use data length extension and large GATT MTU as I described above.