aboutsummaryrefslogtreecommitdiff
path: root/embassy-net-driver-channel
diff options
context:
space:
mode:
Diffstat (limited to 'embassy-net-driver-channel')
-rw-r--r--embassy-net-driver-channel/src/lib.rs22
1 files changed, 14 insertions, 8 deletions
diff --git a/embassy-net-driver-channel/src/lib.rs b/embassy-net-driver-channel/src/lib.rs
index 53b66afba..076238ba0 100644
--- a/embassy-net-driver-channel/src/lib.rs
+++ b/embassy-net-driver-channel/src/lib.rs
@@ -42,7 +42,7 @@ struct StateInner<'d, const MTU: usize> {
42struct Shared { 42struct Shared {
43 link_state: LinkState, 43 link_state: LinkState,
44 waker: WakerRegistration, 44 waker: WakerRegistration,
45 hardware_address: HardwareAddress, 45 hardware_address: driver::HardwareAddress,
46} 46}
47 47
48pub struct Runner<'d, const MTU: usize> { 48pub struct Runner<'d, const MTU: usize> {
@@ -85,7 +85,7 @@ impl<'d, const MTU: usize> Runner<'d, MTU> {
85 }); 85 });
86 } 86 }
87 87
88 pub fn set_hardware_address(&mut self, address: HardwareAddress) { 88 pub fn set_hardware_address(&mut self, address: driver::HardwareAddress) {
89 self.shared.lock(|s| { 89 self.shared.lock(|s| {
90 let s = &mut *s.borrow_mut(); 90 let s = &mut *s.borrow_mut();
91 s.hardware_address = address; 91 s.hardware_address = address;
@@ -150,7 +150,15 @@ impl<'d> StateRunner<'d> {
150 pub fn set_ethernet_address(&self, address: [u8; 6]) { 150 pub fn set_ethernet_address(&self, address: [u8; 6]) {
151 self.shared.lock(|s| { 151 self.shared.lock(|s| {
152 let s = &mut *s.borrow_mut(); 152 let s = &mut *s.borrow_mut();
153 s.ethernet_address = address; 153 s.hardware_address = driver::HardwareAddress::Ethernet(address);
154 s.waker.wake();
155 });
156 }
157
158 pub fn set_ieee802154_address(&self, address: [u8; 8]) {
159 self.shared.lock(|s| {
160 let s = &mut *s.borrow_mut();
161 s.hardware_address = driver::HardwareAddress::Ieee802154(address);
154 s.waker.wake(); 162 s.waker.wake();
155 }); 163 });
156 } 164 }
@@ -206,8 +214,7 @@ impl<'d, const MTU: usize> TxRunner<'d, MTU> {
206 214
207pub fn new<'d, const MTU: usize, const N_RX: usize, const N_TX: usize>( 215pub fn new<'d, const MTU: usize, const N_RX: usize, const N_TX: usize>(
208 state: &'d mut State<MTU, N_RX, N_TX>, 216 state: &'d mut State<MTU, N_RX, N_TX>,
209 ethernet_address: [u8; 6], 217 hardware_address: driver::HardwareAddress,
210 ieee802154_address: [u8; 8],
211) -> (Runner<'d, MTU>, Device<'d, MTU>) { 218) -> (Runner<'d, MTU>, Device<'d, MTU>) {
212 let mut caps = Capabilities::default(); 219 let mut caps = Capabilities::default();
213 caps.max_transmission_unit = MTU; 220 caps.max_transmission_unit = MTU;
@@ -223,8 +230,7 @@ pub fn new<'d, const MTU: usize, const N_RX: usize, const N_TX: usize>(
223 tx: zerocopy_channel::Channel::new(&mut state.tx[..]), 230 tx: zerocopy_channel::Channel::new(&mut state.tx[..]),
224 shared: Mutex::new(RefCell::new(Shared { 231 shared: Mutex::new(RefCell::new(Shared {
225 link_state: LinkState::Down, 232 link_state: LinkState::Down,
226 ethernet_address, 233 hardware_address,
227 ieee802154_address,
228 waker: WakerRegistration::new(), 234 waker: WakerRegistration::new(),
229 })), 235 })),
230 }); 236 });
@@ -291,7 +297,7 @@ impl<'d, const MTU: usize> embassy_net_driver::Driver for Device<'d, MTU> {
291 self.caps.clone() 297 self.caps.clone()
292 } 298 }
293 299
294 fn hardware_address(&self) -> HardwareAddress { 300 fn hardware_address(&self) -> driver::HardwareAddress {
295 self.shared.lock(|s| s.borrow().hardware_address) 301 self.shared.lock(|s| s.borrow().hardware_address)
296 } 302 }
297 303