@@ -443,7 +443,7 @@ impl<'c> Radio<'c> {
443
443
// configure radio to immediately start transmission if the channel is idle
444
444
self . radio
445
445
. shorts
446
- . modify ( |_, w| w. ccaidle_txen ( ) . set_bit ( ) . txready_start ( ) . set_bit ( ) ) ;
446
+ . modify ( |_, w| w. ccaidle_txen ( ) . set_bit ( ) . txready_start ( ) . set_bit ( ) . end_disable ( ) . set_bit ( ) ) ;
447
447
448
448
// the DMA transfer will start at some point after the following write operation so
449
449
// we place the compiler fence here
@@ -498,7 +498,7 @@ impl<'c> Radio<'c> {
498
498
// immediately start transmission if the channel is idle
499
499
self . radio
500
500
. shorts
501
- . modify ( |_, w| w. ccaidle_txen ( ) . set_bit ( ) . txready_start ( ) . set_bit ( ) ) ;
501
+ . modify ( |_, w| w. ccaidle_txen ( ) . set_bit ( ) . txready_start ( ) . set_bit ( ) . end_disable ( ) . set_bit ( ) ) ;
502
502
503
503
// the DMA transfer will start at some point after the following write operation so
504
504
// we place the compiler fence here
@@ -563,11 +563,17 @@ impl<'c> Radio<'c> {
563
563
. write ( |w| w. packetptr ( ) . bits ( packet. buffer . as_ptr ( ) as u32 ) ) ;
564
564
}
565
565
566
+ // configure radio to disable transmitter once packet is sent
567
+ self . radio
568
+ . shorts
569
+ . modify ( |_, w| w. end_disable ( ) . set_bit ( ) ) ;
570
+
566
571
// start DMA transfer
567
572
dma_start_fence ( ) ;
568
573
self . radio . tasks_start . write ( |w| w. tasks_start ( ) . set_bit ( ) ) ;
569
574
570
575
self . wait_for_event ( Event :: PhyEnd ) ;
576
+ self . radio . shorts . reset ( ) ;
571
577
}
572
578
573
579
/// Moves the radio from any state to the DISABLED state
0 commit comments