Skip to content

Commit 279c708

Browse files
author
Juha Heiskanen
committed
Trig a new back off period for pending TX if ACK tx is active
Change-Id: Ida77974436f77edb60f7a91146a017a14554f167
1 parent f1e7f06 commit 279c708

File tree

1 file changed

+14
-7
lines changed

1 file changed

+14
-7
lines changed

source/MAC/IEEE802_15_4/mac_pd_sap.c

Lines changed: 14 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -290,15 +290,22 @@ void mac_pd_sap_state_machine(protocol_interface_rf_mac_setup_s *rf_mac_setup)
290290

291291
static void mac_sap_cca_fail_cb(protocol_interface_rf_mac_setup_s *rf_ptr)
292292
{
293-
rf_ptr->macRfRadioTxActive = false;
294-
if (rf_ptr->mac_cca_retry > rf_ptr->macMaxCSMABackoffs || (rf_ptr->active_pd_data_request && rf_ptr->active_pd_data_request->asynch_request)) {
295-
//Send MAC_CCA_FAIL
296-
mac_tx_done_state_set(rf_ptr, MAC_CCA_FAIL);
293+
if (rf_ptr->mac_ack_tx_active) {
294+
if (rf_ptr->active_pd_data_request) {
295+
mac_csma_backoff_start(rf_ptr);
296+
}
297297
} else {
298-
timer_mac_stop(rf_ptr);
299-
mac_csma_BE_update(rf_ptr);
300-
if (mcps_pd_data_rebuild(rf_ptr, rf_ptr->active_pd_data_request) ) {
298+
299+
rf_ptr->macRfRadioTxActive = false;
300+
if (rf_ptr->mac_cca_retry > rf_ptr->macMaxCSMABackoffs || (rf_ptr->active_pd_data_request && rf_ptr->active_pd_data_request->asynch_request)) {
301+
//Send MAC_CCA_FAIL
301302
mac_tx_done_state_set(rf_ptr, MAC_CCA_FAIL);
303+
} else {
304+
timer_mac_stop(rf_ptr);
305+
mac_csma_BE_update(rf_ptr);
306+
if (mcps_pd_data_rebuild(rf_ptr, rf_ptr->active_pd_data_request) ) {
307+
mac_tx_done_state_set(rf_ptr, MAC_CCA_FAIL);
308+
}
302309
}
303310
}
304311
}

0 commit comments

Comments
 (0)