Skip to content

Commit 053dc54

Browse files
Merge #312
312: ieee802154: mark `start_recv` as unsafe r=jonas-schievink a=jonas-schievink fixes #310 bors r+ Co-authored-by: Jonas Schievink <[email protected]>
2 parents c7fe584 + fa694bf commit 053dc54

File tree

1 file changed

+12
-8
lines changed

1 file changed

+12
-8
lines changed

nrf-hal-common/src/ieee802154.rs

Lines changed: 12 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -309,7 +309,10 @@ impl<'c> Radio<'c> {
309309
/// will be updated with the received packet's data
310310
pub fn recv(&mut self, packet: &mut Packet) -> Result<u16, u16> {
311311
// Start the read
312-
self.start_recv(packet);
312+
// NOTE(unsafe) We block until reception completes or errors
313+
unsafe {
314+
self.start_recv(packet);
315+
}
313316

314317
// wait until we have received something
315318
self.wait_for_event(Event::End);
@@ -348,7 +351,10 @@ impl<'c> Radio<'c> {
348351
timer.start(microseconds);
349352

350353
// Start the read
351-
self.start_recv(packet);
354+
// NOTE(unsafe) We block until reception completes or errors
355+
unsafe {
356+
self.start_recv(packet);
357+
}
352358

353359
// Wait for transmission to end
354360
let mut recv_completed = false;
@@ -381,7 +387,7 @@ impl<'c> Radio<'c> {
381387
}
382388
}
383389

384-
fn start_recv(&mut self, packet: &mut Packet) {
390+
unsafe fn start_recv(&mut self, packet: &mut Packet) {
385391
// NOTE we do NOT check the address of `packet` because the mutable reference ensures it's
386392
// allocated in RAM
387393

@@ -393,11 +399,9 @@ impl<'c> Radio<'c> {
393399

394400
// NOTE(unsafe) DMA transfer has not yet started
395401
// set up RX buffer
396-
unsafe {
397-
self.radio
398-
.packetptr
399-
.write(|w| w.packetptr().bits(packet.buffer.as_mut_ptr() as u32));
400-
}
402+
self.radio
403+
.packetptr
404+
.write(|w| w.packetptr().bits(packet.buffer.as_mut_ptr() as u32));
401405

402406
// start transfer
403407
dma_start_fence();

0 commit comments

Comments
 (0)