Merge pull request #7399 from hasnainvirk/bug_fix_recv_window

Bug fix for receive windows
pull/7421/head
Cruz Monrreal 2018-07-05 10:40:51 -05:00 committed by GitHub
commit 87b3faeff0
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 8 additions and 24 deletions

View File

@ -868,12 +868,8 @@ void LoRaMac::open_rx1_window(void)
_mcps_indication.rx_datarate = _params.rx_window1_config.datarate;
if (_lora_phy.rx_config(&_params.rx_window1_config)) {
_lora_phy.handle_receive();
} else {
tr_error("Receive failed. Radio is not IDLE");
return;
}
_lora_phy.rx_config(&_params.rx_window1_config);
_lora_phy.handle_receive();
tr_debug("Opening RX1 Window");
}
@ -888,8 +884,6 @@ void LoRaMac::open_rx2_window()
_params.rx_window2_config.frequency = _params.sys_params.rx2_channel.frequency;
_params.rx_window2_config.dl_dwell_time = _params.sys_params.downlink_dwell_time;
_params.rx_window2_config.is_repeater_supported = _params.is_repeater_supported;
_params.rx_window2_config.rx_slot = _params.rx_window2_config.is_rx_continuous ?
RX_SLOT_WIN_CLASS_C : RX_SLOT_WIN_2;
if (get_device_class() == CLASS_C) {
_params.rx_window2_config.is_rx_continuous = true;
@ -897,15 +891,14 @@ void LoRaMac::open_rx2_window()
_params.rx_window2_config.is_rx_continuous = false;
}
_params.rx_window2_config.rx_slot = _params.rx_window2_config.is_rx_continuous ?
RX_SLOT_WIN_CLASS_C : RX_SLOT_WIN_2;
_mcps_indication.rx_datarate = _params.rx_window2_config.datarate;
if (_lora_phy.rx_config(&_params.rx_window2_config)) {
_lora_phy.handle_receive();
_params.rx_slot = _params.rx_window2_config.rx_slot;
} else {
tr_error("Receive failed. Radio is not IDLE");
return;
}
_lora_phy.rx_config(&_params.rx_window2_config);
_lora_phy.handle_receive();
_params.rx_slot = _params.rx_window2_config.rx_slot;
tr_debug("Opening RX2 Window, Frequency = %lu", _params.rx_window2_config.frequency);
}

View File

@ -813,15 +813,6 @@ bool LoRaPHY::rx_config(rx_config_params_t *rx_conf)
uint8_t phy_dr = 0;
uint32_t frequency = rx_conf->frequency;
_radio->lock();
if (_radio->get_status() != RF_IDLE) {
_radio->unlock();
return false;
}
_radio->unlock();
if (rx_conf->rx_slot == RX_SLOT_WIN_1) {
// Apply window 1 frequency
frequency = phy_params.channels.channel_list[rx_conf->channel].frequency;