Beware that this post is related to an SDK in maintenance mode
More Info: Consider nRF Connect SDK for new designs

Multiprotocol Support (BLE and IEEE-802.15.4)

I am working on developing an application for nRF52833 DK (PCA10100) using nRF5 SDK_v17.1 and nRF_802.15.4 Radio driver v1.6. I am using the s122 Soft device on the device. I don't have enough experience with multiprotocol. I used the ble_app_uart_c example in the SDK for this. The application works in the central role on the BLE and can communicate with the peripheral device by connecting it. When BLE is not active, it can send packets over IEEE-802.15.4 radio. I want to run IEEE-802.15.4 radio and BLE as multiprotocol on the device. But right after connecting to peripheral device with BLE, I can only send one packet over IEEE-802.15.4 and then I cannot send another packet. As long as the BLE connection is established, packets can be sent over IEEE-802.15.4 only for a short time at the beginning. How can I fix this situation?

Note: The BLE peripheral device only responds to my commands, so I don't have to keep receive open all the time.

Parents
  • Hi,

    and then I cannot send another packet.

    Are you getting any error-codes? or warnings printed in the log? Have you tried a longer connection interval for the BLE link?

  • Hi, 

    I am not getting any error codes. 

    When the BLE connection is established, I send the first packet over the IEEE-802.15.4 radio with the ieee_802154_transmit() function and it returns 1. After this transmission, the nrf_802154_transmitted() is called. The next time I call the ieee_802154_transmit function, the function returns 1, but the nrf_802154_transmitted function is not called. In my next transmit attempts, the ieee_802154_transmit function returns 0. During these processes, the BLE side continues to work without any problems.

Reply
  • Hi, 

    I am not getting any error codes. 

    When the BLE connection is established, I send the first packet over the IEEE-802.15.4 radio with the ieee_802154_transmit() function and it returns 1. After this transmission, the nrf_802154_transmitted() is called. The next time I call the ieee_802154_transmit function, the function returns 1, but the nrf_802154_transmitted function is not called. In my next transmit attempts, the ieee_802154_transmit function returns 0. During these processes, the BLE side continues to work without any problems.

Children
Related