diff --git a/src/net.rs b/src/net.rs index 1926c5e..c77cef2 100644 --- a/src/net.rs +++ b/src/net.rs @@ -43,6 +43,27 @@ impl MacAddress { } } + /// Returns the six eight-bit integers that make up this address. + /// + /// # Examples + /// + /// ``` + /// use w5500::MacAddress; + /// + /// let addr = MacAddress::new(13, 12, 11, 10, 15, 14); + /// assert_eq!([13u8, 12u8, 11u8, 10u8, 15u8, 14u8], addr.octets()); + /// ``` + pub const fn octets(&self) -> [u8; 6] { + [ + self.octets[0], + self.octets[1], + self.octets[2], + self.octets[3], + self.octets[4], + self.octets[5], + ] + } + /// An EUI-48 MAC address representing an unspecified address: /// 00:00:00:00:00:00 /// @@ -57,6 +78,24 @@ impl MacAddress { pub const UNSPECIFIED: Self = MacAddress::new(0, 0, 0, 0, 0, 0); } +impl From<[u8; 6]> for MacAddress { + /// Creates an `Ipv4Addr` from a six element byte array. + /// + /// # Examples + /// + /// ``` + /// use w5500::MacAddress; + /// + /// let addr = MacAddress::from([13u8, 12u8, 11u8, 10u8, 15u8, 14u8]); + /// assert_eq!(MacAddress::new(13, 12, 11, 10, 15, 14), addr); + /// ``` + fn from(octets: [u8; 6]) -> MacAddress { + MacAddress::new( + octets[0], octets[1], octets[2], octets[3], octets[4], octets[5], + ) + } +} + impl ::core::fmt::Display for MacAddress { /// String formatter for MacAddress addresses. fn fmt(&self, fmt: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {