Propietary radio protocol under Zephyr

Hi,

I have a request to port an old code into Zephyr. The code uses a proprietary protocol and the radio has been developed on bare metal under a nRF52832 chip. There is a requirement for low latency (under 10ms) and also compatibility with BLE radio. Both radio modes will not work concurrently.

My questions are:

. Is it possible to use your own proprietary protocol under Zephyr?

- What would be the best approach to integrate a proprietary protocol under Zephyr?

- Is there any limitations in terms of low latency?

- What's the best approach to change between radio modes (proprietary /BLE)?

Thanks

Parents
  • Hello,

    There is a sample found in ncs\nrf\samples\esb which uses the radio in proprietary mode. If you want to use this in combination with BLE, you should look into MPSL, which is the MultiProtocol Service Layer, which is used to switch between BLE and proprietary ESB. 

    If you would want to use them concurrently, you could look into timeslots, which is requesting a timeslot from the BLE stack via MPSL where you can use the radio as you like, but doing this, you need to keep requesting timeslots even though you do not use BLE. Please check a colleague of mine's sample for doing this:

    https://github.com/too1/ncs-esb-ble-mpsl-demo

    Another approach, if you don't need to use them at the same time is to not initialize the BLE stack, and then just use ESB as you like. Whenever you want to switch to BLE, you simply initialize the BLE stack (bt_init()), and start using BLE. When you want to switch back, you uninit the BLE stack, and start using ESB again.

    Until recently it would require a reset, because bt_uninit() was not implemented, but that should be working now (although I must admit I have not tested it).

    Best regards,

    Edvin

Reply
  • Hello,

    There is a sample found in ncs\nrf\samples\esb which uses the radio in proprietary mode. If you want to use this in combination with BLE, you should look into MPSL, which is the MultiProtocol Service Layer, which is used to switch between BLE and proprietary ESB. 

    If you would want to use them concurrently, you could look into timeslots, which is requesting a timeslot from the BLE stack via MPSL where you can use the radio as you like, but doing this, you need to keep requesting timeslots even though you do not use BLE. Please check a colleague of mine's sample for doing this:

    https://github.com/too1/ncs-esb-ble-mpsl-demo

    Another approach, if you don't need to use them at the same time is to not initialize the BLE stack, and then just use ESB as you like. Whenever you want to switch to BLE, you simply initialize the BLE stack (bt_init()), and start using BLE. When you want to switch back, you uninit the BLE stack, and start using ESB again.

    Until recently it would require a reset, because bt_uninit() was not implemented, but that should be working now (although I must admit I have not tested it).

    Best regards,

    Edvin

Children
No Data
Related