diff options
| author | Ruben De Smet <[email protected]> | 2023-07-31 10:40:48 +0200 |
|---|---|---|
| committer | Ruben De Smet <[email protected]> | 2023-07-31 14:21:26 +0200 |
| commit | 4afdce4ec5e39324f8a690961070a25f16397f56 (patch) | |
| tree | cd0c35f8eb67001349bc48cd7d643565760a6eff /embassy-net-driver-channel/src | |
| parent | 69c0a89aa5d52e048fdd8ddc5d47b767da07e88b (diff) | |
Introduce driver::HardwareAddress without smoltcp dependency
Diffstat (limited to 'embassy-net-driver-channel/src')
| -rw-r--r-- | embassy-net-driver-channel/src/lib.rs | 22 |
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> { | |||
| 42 | struct Shared { | 42 | struct 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 | ||
| 48 | pub struct Runner<'d, const MTU: usize> { | 48 | pub 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 | ||
| 207 | pub fn new<'d, const MTU: usize, const N_RX: usize, const N_TX: usize>( | 215 | pub 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 | ||
