Open Radio Interface for Openmote-b


In this feature, we will develop an open radio interface for openmote-b board which allows dynamic radio setting change at runtime, either change of setting (e.g. modulation) of the same radio chip or change of used radio chip altogether.

In order to ensure Open Radio interface compliance (for openmote-b or for other boards), the followong convention is established. (I will explain based on the openmote-b example)

  • Create a radio driver for each of the supported radios as radio_xxx.c and radio_xxx.h (e.g. radio_cc2538rf .c, radio_at86rf215.c, radio_cc2538rf .h and radio_at86rf215.h)

  • Depending on your build environment, add the new files to your compiling and linking direcotries (e.g. SCons or IAR).

  • In the board.c file antenna_init function, make sure that each radio chip is attached to the proper antenna (sub-GHz or 2.4GHz)

  • Create a radio.c file under the board directory: bsp\board\xxx, which will contain definitions compliant to the generic radio.h file under \bsp\boards\radio.h. It will contain the lookup matrix of function references which will map generic function calls from the MAC layer to the appropriate radio-specific calls based on the selected radio. as defined in the radio_xxx.c/h files.

  • Update the board_info.h to include the MAX_RADIOS constant which will contain the number of radio settings available in the openradio interface.


To test this update, you can use SCons or IAR. Make sure you set the following settings:

  • Use openmote-b board option

  • Used fixed channel (e.g. 11)

  • Set EB_PORTION to 4

  • Set SLOTFRAME_LENGTH to at least 19

  • select the desired slot template to use, currently, the following slot template/radio setting combinations are supported:

  • Attached is the LA trace for openwsn pinging for each of the 7 slot/radio combinations




Mina Rady


Mina Rady



Story Points