static void start_rx(hw_rx_cfg_t const* rx_cfg)
{
	DPRINT("start_rx");

	if (current_state == HW_RADIO_STATE_OFF)
		ezradio_hal_DeassertShutdown();

    current_state = HW_RADIO_STATE_RX;

    configure_channel(&(rx_cfg->channel_id));
    configure_syncword_class(rx_cfg->syncword_class, rx_cfg->channel_id.channel_header.ch_coding);

    rx_fifo_data_lenght = 0;
    if (rx_cfg->channel_id.channel_header.ch_coding == PHY_CODING_FEC_PN9)
    {
    	ezradioStartRx(ez_channel_id, false);
    } else {

    	ezradioStartRx(ez_channel_id, true);
    }

    DEBUG_RX_START();


    if(rssi_valid_callback != 0)
    {
      // TODO calculate/predict rssi response time and wait until valid. For now we wait 200 us.

      hw_busy_wait(200);
      rssi_valid_callback(hw_radio_get_rssi());
    }
}
static void start_rx(hw_rx_cfg_t const* rx_cfg)
{
    current_state = HW_RADIO_STATE_RX;

    cc1101_interface_strobe(RF_SFRX);
    configure_channel(&(rx_cfg->channel_id));
    configure_syncword_class(rx_cfg->syncword_class);
    cc1101_interface_write_single_reg(PKTLEN, 0xFF);

    if(rx_packet_callback != 0) // when rx callback not set we ignore received packets
        cc1101_interface_set_interrupts_enabled(true);

    cc1101_interface_strobe(RF_SRX);

    if(rssi_valid_callback != 0)
    {
        // TODO calculate/predict rssi response time (see DN505)
        // and wait until valid. For now we wait 200 us.

        hw_busy_wait(200);
        rssi_valid_callback(hw_radio_get_rssi());
    }
}