aboutsummaryrefslogtreecommitdiff
path: root/embassy-net-nrf91
diff options
context:
space:
mode:
Diffstat (limited to 'embassy-net-nrf91')
-rw-r--r--embassy-net-nrf91/src/lib.rs24
1 files changed, 15 insertions, 9 deletions
diff --git a/embassy-net-nrf91/src/lib.rs b/embassy-net-nrf91/src/lib.rs
index d8878f147..3abe2c766 100644
--- a/embassy-net-nrf91/src/lib.rs
+++ b/embassy-net-nrf91/src/lib.rs
@@ -198,6 +198,7 @@ async fn new_internal<'a>(
198 cb, 198 cb,
199 requests: [const { None }; REQ_COUNT], 199 requests: [const { None }; REQ_COUNT],
200 next_req_serial: 0x12345678, 200 next_req_serial: 0x12345678,
201 net_fd: None,
201 202
202 rx_control_list: ptr::null_mut(), 203 rx_control_list: ptr::null_mut(),
203 rx_data_list: ptr::null_mut(), 204 rx_data_list: ptr::null_mut(),
@@ -305,6 +306,8 @@ struct StateInner {
305 requests: [Option<PendingRequest>; REQ_COUNT], 306 requests: [Option<PendingRequest>; REQ_COUNT],
306 next_req_serial: u32, 307 next_req_serial: u32,
307 308
309 net_fd: Option<u32>,
310
308 rx_control_list: *mut List, 311 rx_control_list: *mut List,
309 rx_data_list: *mut List, 312 rx_data_list: *mut List,
310 rx_seq_no: u16, 313 rx_seq_no: u16,
@@ -885,6 +888,8 @@ impl<'a> Control<'a> {
885 assert_eq!(status, 0); 888 assert_eq!(status, 0);
886 assert_eq!(msg.param_len, 16); 889 assert_eq!(msg.param_len, 16);
887 let fd = u32::from_le_bytes(msg.param[12..16].try_into().unwrap()); 890 let fd = u32::from_le_bytes(msg.param[12..16].try_into().unwrap());
891 self.state.borrow_mut().net_fd.replace(fd);
892
888 trace!("got FD: {}", fd); 893 trace!("got FD: {}", fd);
889 fd 894 fd
890 } 895 }
@@ -924,16 +929,17 @@ impl<'a> Runner<'a> {
924 state.poll(&mut self.trace_writer, &mut self.ch); 929 state.poll(&mut self.trace_writer, &mut self.ch);
925 930
926 if let Poll::Ready(buf) = self.ch.poll_tx_buf(cx) { 931 if let Poll::Ready(buf) = self.ch.poll_tx_buf(cx) {
927 let fd = 128u32; // TODO unhardcode 932 if let Some(fd) = state.net_fd {
928 let mut msg: Message = unsafe { mem::zeroed() }; 933 let mut msg: Message = unsafe { mem::zeroed() };
929 msg.channel = 2; // data 934 msg.channel = 2; // data
930 msg.id = 0x7006_0004; // IP send 935 msg.id = 0x7006_0004; // IP send
931 msg.param_len = 12; 936 msg.param_len = 12;
932 msg.param[4..8].copy_from_slice(&fd.to_le_bytes()); 937 msg.param[4..8].copy_from_slice(&fd.to_le_bytes());
933 if let Err(e) = state.send_message(&mut msg, buf) { 938 if let Err(e) = state.send_message(&mut msg, buf) {
934 warn!("tx failed: {:?}", e); 939 warn!("tx failed: {:?}", e);
940 }
941 self.ch.tx_done();
935 } 942 }
936 self.ch.tx_done();
937 } 943 }
938 944
939 Poll::Pending 945 Poll::Pending