@@ -481,10 +481,6 @@ static int8_t mac_data_interface_tx_done_cb(protocol_interface_rf_mac_setup_s *r
481
481
return 0 ;
482
482
}
483
483
484
- //
485
- bool waiting_ack = false;
486
-
487
-
488
484
if (rf_ptr -> mac_ack_tx_active ) {
489
485
mac_data_ack_tx_finish (rf_ptr );
490
486
return 0 ;
@@ -506,11 +502,40 @@ static int8_t mac_data_interface_tx_done_cb(protocol_interface_rf_mac_setup_s *r
506
502
timer_mac_stop (rf_ptr );
507
503
}
508
504
505
+ if (rf_ptr -> fhss_api && rf_ptr -> active_pd_data_request -> asynch_request == false) {
506
+ /* waiting_ack == false allows FHSS to change back to RX channel after transmission
507
+ * tx_completed == true allows FHSS to delete stored failure handles
508
+ */
509
+ bool waiting_ack = false, tx_completed = false;
510
+ if (status == PHY_LINK_TX_SUCCESS && !rf_ptr -> macTxRequestAck ) {
511
+ waiting_ack = false;
512
+ tx_completed = true;
513
+ } else if (status == PHY_LINK_TX_SUCCESS && rf_ptr -> macTxRequestAck ) {
514
+ waiting_ack = true;
515
+ tx_completed = false;
516
+ } else if (status == PHY_LINK_CCA_FAIL ) {
517
+ waiting_ack = false;
518
+ tx_completed = false;
519
+ } else if (status == PHY_LINK_CCA_OK ) {
520
+ waiting_ack = false;
521
+ tx_completed = false;
522
+ } else if (status == PHY_LINK_TX_FAIL ) {
523
+ waiting_ack = false;
524
+ tx_completed = false;
525
+ } else if (status == PHY_LINK_TX_DONE ) {
526
+ waiting_ack = false;
527
+ tx_completed = true;
528
+ } else if (status == PHY_LINK_TX_DONE_PENDING ) {
529
+ waiting_ack = false;
530
+ tx_completed = true;
531
+ }
532
+ rf_ptr -> fhss_api -> data_tx_done (rf_ptr -> fhss_api , waiting_ack , tx_completed , rf_ptr -> active_pd_data_request -> msduHandle );
533
+ }
534
+
509
535
switch (status ) {
510
536
case PHY_LINK_TX_SUCCESS :
511
537
if (rf_ptr -> macTxRequestAck ) {
512
538
timer_mac_start (rf_ptr , MAC_TIMER_ACK , rf_ptr -> mac_ack_wait_duration ); /*wait for ACK 1 ms*/
513
- waiting_ack = true;
514
539
} else {
515
540
//TODO CHECK this is MAC_TX_ PERMIT OK
516
541
mac_tx_done_state_set (rf_ptr , MAC_TX_DONE );
@@ -540,15 +565,6 @@ static int8_t mac_data_interface_tx_done_cb(protocol_interface_rf_mac_setup_s *r
540
565
default :
541
566
break ;
542
567
}
543
- if (rf_ptr -> fhss_api ) {
544
- bool tx_is_done = false;
545
- if (rf_ptr -> mac_tx_result == MAC_TX_DONE ) {
546
- tx_is_done = true;
547
- }
548
- if (rf_ptr -> active_pd_data_request -> asynch_request == false) {
549
- rf_ptr -> fhss_api -> data_tx_done (rf_ptr -> fhss_api , waiting_ack , tx_is_done , rf_ptr -> active_pd_data_request -> msduHandle );
550
- }
551
- }
552
568
return 0 ;
553
569
}
554
570
0 commit comments