pub struct Addressed {
pub mac_address: MacAddress,
pub dac: Dac,
}Expand description
A DAC along with its broadcasted MAC address.
This type can be used as though it is a Dac in many places as it implements
Deref<Target = Dac>
Fields§
§mac_address: MacAddressThe unique MAC address associated with the DAC.
This may be used to distinguish between multiple DACs broadcasting on a network.
dac: DacThe state of the DAC itself.
Implementations§
Source§impl Addressed
impl Addressed
Sourcepub fn from_broadcast(
dac_broadcast: &DacBroadcast,
) -> Result<Self, ProtocolError>
pub fn from_broadcast( dac_broadcast: &DacBroadcast, ) -> Result<Self, ProtocolError>
Create an Addressed DAC from a received DacBroadcast.
Examples found in repository?
examples/enumerate_dacs.rs (line 26)
9fn main() {
10 println!("Searching for Ether Dream DACs...");
11
12 let mut dacs = HashMap::new();
13 let three_secs = time::Duration::from_secs(3);
14 let mut rx = ether_dream::recv_dac_broadcasts().expect("failed to bind to UDP socket");
15 rx.set_timeout(Some(three_secs))
16 .expect("failed to set timeout on UDP socket");
17 let loop_start = time::Instant::now();
18 while loop_start.elapsed() < three_secs {
19 let (dac_broadcast, source_addr) = match rx.next_broadcast() {
20 Ok(dac) => dac,
21 Err(e) => match e.kind() {
22 io::ErrorKind::WouldBlock | io::ErrorKind::TimedOut => continue,
23 _ => panic!("an IO error occurred: {}", e),
24 },
25 };
26 let dac::Addressed { mac_address, dac } = dac::Addressed::from_broadcast(&dac_broadcast)
27 .expect("failed to interpret DAC status from received broadcast");
28 if dacs.insert(mac_address, (dac, source_addr)).is_none() {
29 println!("Discovered new DAC \"{}\"...", mac_address);
30 }
31 }
32
33 if dacs.is_empty() {
34 println!("No Ether Dream DACs found on the network.");
35 } else {
36 println!("Discovered the following Ether Dream DACs on the network:");
37 for (i, (mac, (dac, source_addr))) in dacs.into_iter().enumerate() {
38 println!(
39 "{}.\n MAC address: \"{}\"\n Network address: \"{}\"\n {:?}",
40 i + 1,
41 mac,
42 source_addr,
43 dac
44 );
45 }
46 }
47}Methods from Deref<Target = Dac>§
Sourcepub fn update_status(&mut self, status: &DacStatus) -> Result<(), ProtocolError>
pub fn update_status(&mut self, status: &DacStatus) -> Result<(), ProtocolError>
Update the inner status given a new protocol representation.
Trait Implementations§
impl Copy for Addressed
impl Eq for Addressed
impl StructuralPartialEq for Addressed
Auto Trait Implementations§
impl Freeze for Addressed
impl RefUnwindSafe for Addressed
impl Send for Addressed
impl Sync for Addressed
impl Unpin for Addressed
impl UnsafeUnpin for Addressed
impl UnwindSafe for Addressed
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more