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()); } }