diff options
| author | Ulf Lilleengen <[email protected]> | 2024-09-04 19:31:55 +0200 |
|---|---|---|
| committer | Ulf Lilleengen <[email protected]> | 2024-09-04 19:31:55 +0200 |
| commit | ccfa6264b0ad258625f2dd667ba8e6eaca1cfdc3 (patch) | |
| tree | afd078095d2090b9641ee58ee3d47b9177f95e75 /embassy-net-nrf91/src/lib.rs | |
| parent | 372e45dabc0cfd3eb495e902665bb752a67aa804 (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.rs | 15 |
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. |
