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) { 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) { timer_post_task_delay(&report_rssi, TIMER_TICKS_PER_SEC / 5000); } }