Porting Checklist

  1. Provide a BSP.

  2. Adapt the BSP interface (iface) to bridge the Cores and Application with the user hardware’s BSP.

1 - Provide BSP for User’s Hardware

The BSP interface for the Wireless Core is a default requirement and is used in all of the SDK application examples.

Radio HAL

  • [ ] set_shutdown_pin

  • [ ] reset_shutdown_pin

  • [ ] set_reset_pin

  • [ ] reset_reset_pin

  • [ ] read_irq_pin

  • [ ] set_cs

  • [ ] reset_cs

  • [ ] delay_ms

  • [ ] transfer_full_duplex_blocking

  • [ ] transfer_full_duplex_non_blocking

  • [ ] is_spi_busy

  • [ ] context_switch

  • [ ] disable_radio_irq

  • [ ] enable_radio_irq

  • [ ] disable_radio_dma_irq

  • [ ] enable_radio_dma_irq

See this annex for the implementation details.

Note

The dual radio feature is not supported by the EVK1.4 hardware.

Radio HAL #1

  • [ ] set_shutdown_pin_[1]

  • [ ] reset_shutdown_pin_[1]

  • [ ] set_reset_pin_[1]

  • [ ] reset_reset_pin_[1]

  • [ ] read_irq_pin_[1]

  • [ ] set_cs_[1]

  • [ ] reset_cs_[1]

  • [ ] delay_ms_[1]

  • [ ] transfer_full_duplex_blocking_[1]

  • [ ] transfer_full_duplex_non_blocking_[1]

  • [ ] is_spi_busy_[1]

  • [ ] context_switch_[1]

  • [ ] disable_radio_irq_[1]

  • [ ] enable_radio_irq_[1]

  • [ ] disable_radio_dma_irq_[1]

  • [ ] enable_radio_dma_irq_[1]

Radio HAL #2

  • [ ] set_shutdown_pin_[2]

  • [ ] reset_shutdown_pin_[2]

  • [ ] set_reset_pin_[2]

  • [ ] reset_reset_pin_[2]

  • [ ] read_irq_pin_[2]

  • [ ] set_cs_[2]

  • [ ] reset_cs_[2]

  • [ ] delay_ms_[2]

  • [ ] transfer_full_duplex_blocking_[2]

  • [ ] transfer_full_duplex_non_blocking_[2]

  • [ ] is_spi_busy_[2]

  • [ ] context_switch_[2]

  • [ ] disable_radio_irq_[2]

  • [ ] enable_radio_irq_[2]

  • [ ] disable_radio_dma_irq_[2]

  • [ ] enable_radio_dma_irq_[2]

See this annex for the implementation details.

2 - Adapt the BSP Interface

Porting the audio, pairing and app specific BSP interface is optional. These modules can be ported if the user wishes to run the application examples onto their hardware. Although, changes will always be required to the iface_wireless module and the circular_queue_critical_section.h file.

2.1 - bsp/interface/wireless_core/iface_wireless.h

Implement these functions into a new .c file. This new file needs to replace the iface_wireless_evk.c file in the user build system.

  • [ ] iface_swc_hal_init

  • [ ] iface_swc_handlers_init

  • [ ] iface_swc_hal_init

  • [ ] iface_swc_handlers_init

  • [ ] iface_swc_dual_radio_timer_init

2.2 - bsp/interface/lib/queue/

Create a new folder and a new file for the ENTER/EXIT macros. This new file must be called circular_queue_critical_section.h since it is a dependency for the SPARK lib called queue. The build system must be updated with this new file path. The new folder could carry the name of the user board.

2.3 - bsp/interface/audio_core/iface_audio.h

Implement these functions into a new .c file. This new file needs to replace the iface_audio_evk.c file in the user build system.

  • [ ] iface_sac_hal_init

  • [ ] iface_audio_swc_endpoint_init

  • [ ] iface_audio_max98091_endpoint_init

Also implement these static functions in the same source file.

  • [ ] ep_max98091_action_produce

  • [ ] ep_max98091_start_produce

  • [ ] ep_max98091_stop_produce

  • [ ] ep_max98091_action_consume

  • [ ] ep_max98091_start_consume

  • [ ] ep_max98091_stop_consume

  • [ ] ep_swc_action_produce

  • [ ] ep_swc_action_consume

  • [ ] ep_swc_action_start

  • [ ] ep_swc_action_stop

Tip

If the user does not specifically have a MAX98091 codec on their board, we simply suggest to replace the ep_max98091 text in the function names since the implementations are basic I2S functions.

2.4 - bsp/interface/pairing/iface_pairing.h

Implement these functions into a new .c file. This new file needs to replace the iface_pairing_evk.c file in the user build system.

  • [ ] iface_set_watchdog_timer_callback

  • [ ] iface_set_watchdog_timer_limit

  • [ ] iface_start_watchdog_timer

  • [ ] iface_stop_watchdog_timer

  • [ ] iface_delay_ms

2.5 - bsp/interface/app/audio_streaming/iface_audio_streaming.h

Implement these functions into a new .c file. This new file needs to replace the iface_audio_streaming_evk.c file in the user build system.

  • [ ] iface_board_init

  • [ ] iface_audio_coord_init

  • [ ] iface_audio_node_init

  • [ ] iface_set_sai_complete_callback

  • [ ] iface_button_handling

  • [ ] iface_tx_conn_status

  • [ ] iface_rx_conn_status

  • [ ] iface_audio_process_timer_init

  • [ ] iface_audio_process_set_timer_callback

  • [ ] iface_audio_process_timer_start

  • [ ] iface_stats_timer_init

  • [ ] iface_stats_set_timer_callback

  • [ ] iface_stats_timer_start

  • [ ] iface_print_string

Tip

Follow the same procedure for any other application example.