aboutsummaryrefslogtreecommitdiff
path: root/embassy-net-nrf91/src/lib.rs
diff options
context:
space:
mode:
authorUlf Lilleengen <[email protected]>2024-09-04 19:31:55 +0200
committerUlf Lilleengen <[email protected]>2024-09-04 19:31:55 +0200
commitccfa6264b0ad258625f2dd667ba8e6eaca1cfdc3 (patch)
treeafd078095d2090b9641ee58ee3d47b9177f95e75 /embassy-net-nrf91/src/lib.rs
parent372e45dabc0cfd3eb495e902665bb752a67aa804 (diff)
Add closing if raw socket to handle re-attach
Diffstat (limited to 'embassy-net-nrf91/src/lib.rs')
-rw-r--r--embassy-net-nrf91/src/lib.rs15
1 files changed, 15 insertions, 0 deletions
diff --git a/embassy-net-nrf91/src/lib.rs b/embassy-net-nrf91/src/lib.rs
index ab3c6f327..d8cbe47fc 100644
--- a/embassy-net-nrf91/src/lib.rs
+++ b/embassy-net-nrf91/src/lib.rs
@@ -870,6 +870,21 @@ impl<'a> Control<'a> {
870 trace!("got FD: {}", fd); 870 trace!("got FD: {}", fd);
871 fd 871 fd
872 } 872 }
873
874 async fn close_raw_socket(&self, fd: u32) {
875 let mut msg: Message = unsafe { mem::zeroed() };
876 msg.channel = 2; // data
877 msg.id = 0x7009_0004; // close socket
878 msg.param_len = 8;
879 msg.param[4..8].copy_from_slice(&fd.to_le_bytes());
880
881 self.request(&mut msg, &[], &mut []).await;
882
883 assert_eq!(msg.id, 0x80090004);
884 assert!(msg.param_len >= 12);
885 let status = u32::from_le_bytes(msg.param[8..12].try_into().unwrap());
886 assert_eq!(status, 0);
887 }
873} 888}
874 889
875/// Background runner for the driver. 890/// Background runner for the driver.