mirror of
https://github.com/embassy-rs/embassy.git
synced 2024-11-22 14:53:03 +00:00
Make ethernet address configurable from the Device
This commit is contained in:
parent
7d3878466c
commit
f100383b3c
@ -21,6 +21,7 @@ pub trait Device {
|
|||||||
fn register_waker(&mut self, waker: &Waker);
|
fn register_waker(&mut self, waker: &Waker);
|
||||||
fn capabilities(&mut self) -> DeviceCapabilities;
|
fn capabilities(&mut self) -> DeviceCapabilities;
|
||||||
fn link_state(&mut self) -> LinkState;
|
fn link_state(&mut self) -> LinkState;
|
||||||
|
fn ethernet_address(&mut self) -> [u8;6];
|
||||||
}
|
}
|
||||||
|
|
||||||
pub struct DeviceAdapter {
|
pub struct DeviceAdapter {
|
||||||
|
@ -154,15 +154,18 @@ pub fn init(device: &'static mut dyn Device, configurator: &'static mut dyn Conf
|
|||||||
routes: [None; 1],
|
routes: [None; 1],
|
||||||
});
|
});
|
||||||
|
|
||||||
let ethernet_addr = EthernetAddress([0x02, 0x02, 0x02, 0x02, 0x02, 0x02]);
|
|
||||||
|
|
||||||
let medium = device.capabilities().medium;
|
let medium = device.capabilities().medium;
|
||||||
|
let ethernet_addr = if medium == Medium::Ethernet {
|
||||||
|
device.ethernet_address()
|
||||||
|
} else {
|
||||||
|
[0, 0, 0, 0, 0, 0]
|
||||||
|
};
|
||||||
|
|
||||||
let mut b = InterfaceBuilder::new(DeviceAdapter::new(device));
|
let mut b = InterfaceBuilder::new(DeviceAdapter::new(device));
|
||||||
b = b.ip_addrs(&mut res.addresses[..]);
|
b = b.ip_addrs(&mut res.addresses[..]);
|
||||||
|
|
||||||
if medium == Medium::Ethernet {
|
if medium == Medium::Ethernet {
|
||||||
b = b.ethernet_addr(ethernet_addr);
|
b = b.ethernet_addr(EthernetAddress(ethernet_addr));
|
||||||
b = b.neighbor_cache(NeighborCache::new(&mut res.neighbor_cache[..]));
|
b = b.neighbor_cache(NeighborCache::new(&mut res.neighbor_cache[..]));
|
||||||
b = b.routes(Routes::new(&mut res.routes[..]));
|
b = b.routes(Routes::new(&mut res.routes[..]));
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user