pub struct ElPacketBuilder { /* private fields */ }Expand description
Builds a ECHONET Lite packet.
§Examples
use echonet_lite as el;
use el::prelude::*;
let packet = el::ElPacketBuilder::new()
.transaction_id(1)
.seoj([0x05u8, 0xFFu8, 0x01u8])
.deoj([0x0Eu8, 0xF0u8, 0x01u8])
.esv(el::ServiceCode::Get)
.props(el::props!([0x80, []]))
.build();Implementations§
Source§impl ElPacketBuilder
impl ElPacketBuilder
Sourcepub fn new() -> Self
pub fn new() -> Self
Examples found in repository?
examples/find.rs (line 15)
9fn main() -> io::Result<()> {
10 let socket = UdpSocket::bind("0.0.0.0:3610")?;
11 socket.set_read_timeout(Some(Duration::from_secs(2)))?;
12 socket.set_multicast_loop_v4(true)?;
13 socket.join_multicast_v4(&EL_MULTICAST_ADDR, &[0, 0, 0, 0].into())?;
14
15 let packet = el::ElPacketBuilder::new()
16 .transaction_id(1)
17 .seoj([0x05u8, 0xFFu8, 0x01u8])
18 .deoj([0x0Eu8, 0xF0u8, 0x01u8])
19 .esv(el::ServiceCode::Get)
20 .props(el::props!([0x80, []]))
21 .build();
22 let bytes = packet.serialize().expect("fail to serialize");
23
24 socket.send_to(&bytes, (EL_MULTICAST_ADDR, 3610))?;
25 loop {
26 let mut buffer = [0u8; 1024];
27 match socket.recv_from(&mut buffer) {
28 Err(_) => break,
29 Ok((_, src_addr)) => {
30 if let Ok((_, response)) = el::ElPacket::from_bytes(&buffer) {
31 if response.is_response_for(&packet) {
32 println!("got response from {src_addr}");
33 println!("{response}");
34 }
35 }
36 }
37 }
38 }
39
40 Ok(())
41}Sourcepub fn transaction_id(self, tid: u16) -> Self
pub fn transaction_id(self, tid: u16) -> Self
Examples found in repository?
examples/find.rs (line 16)
9fn main() -> io::Result<()> {
10 let socket = UdpSocket::bind("0.0.0.0:3610")?;
11 socket.set_read_timeout(Some(Duration::from_secs(2)))?;
12 socket.set_multicast_loop_v4(true)?;
13 socket.join_multicast_v4(&EL_MULTICAST_ADDR, &[0, 0, 0, 0].into())?;
14
15 let packet = el::ElPacketBuilder::new()
16 .transaction_id(1)
17 .seoj([0x05u8, 0xFFu8, 0x01u8])
18 .deoj([0x0Eu8, 0xF0u8, 0x01u8])
19 .esv(el::ServiceCode::Get)
20 .props(el::props!([0x80, []]))
21 .build();
22 let bytes = packet.serialize().expect("fail to serialize");
23
24 socket.send_to(&bytes, (EL_MULTICAST_ADDR, 3610))?;
25 loop {
26 let mut buffer = [0u8; 1024];
27 match socket.recv_from(&mut buffer) {
28 Err(_) => break,
29 Ok((_, src_addr)) => {
30 if let Ok((_, response)) = el::ElPacket::from_bytes(&buffer) {
31 if response.is_response_for(&packet) {
32 println!("got response from {src_addr}");
33 println!("{response}");
34 }
35 }
36 }
37 }
38 }
39
40 Ok(())
41}Sourcepub fn seoj<T>(self, seoj: T) -> Selfwhere
T: Into<EchonetObject>,
pub fn seoj<T>(self, seoj: T) -> Selfwhere
T: Into<EchonetObject>,
Examples found in repository?
examples/find.rs (line 17)
9fn main() -> io::Result<()> {
10 let socket = UdpSocket::bind("0.0.0.0:3610")?;
11 socket.set_read_timeout(Some(Duration::from_secs(2)))?;
12 socket.set_multicast_loop_v4(true)?;
13 socket.join_multicast_v4(&EL_MULTICAST_ADDR, &[0, 0, 0, 0].into())?;
14
15 let packet = el::ElPacketBuilder::new()
16 .transaction_id(1)
17 .seoj([0x05u8, 0xFFu8, 0x01u8])
18 .deoj([0x0Eu8, 0xF0u8, 0x01u8])
19 .esv(el::ServiceCode::Get)
20 .props(el::props!([0x80, []]))
21 .build();
22 let bytes = packet.serialize().expect("fail to serialize");
23
24 socket.send_to(&bytes, (EL_MULTICAST_ADDR, 3610))?;
25 loop {
26 let mut buffer = [0u8; 1024];
27 match socket.recv_from(&mut buffer) {
28 Err(_) => break,
29 Ok((_, src_addr)) => {
30 if let Ok((_, response)) = el::ElPacket::from_bytes(&buffer) {
31 if response.is_response_for(&packet) {
32 println!("got response from {src_addr}");
33 println!("{response}");
34 }
35 }
36 }
37 }
38 }
39
40 Ok(())
41}Sourcepub fn deoj<T>(self, deoj: T) -> Selfwhere
T: Into<EchonetObject>,
pub fn deoj<T>(self, deoj: T) -> Selfwhere
T: Into<EchonetObject>,
Examples found in repository?
examples/find.rs (line 18)
9fn main() -> io::Result<()> {
10 let socket = UdpSocket::bind("0.0.0.0:3610")?;
11 socket.set_read_timeout(Some(Duration::from_secs(2)))?;
12 socket.set_multicast_loop_v4(true)?;
13 socket.join_multicast_v4(&EL_MULTICAST_ADDR, &[0, 0, 0, 0].into())?;
14
15 let packet = el::ElPacketBuilder::new()
16 .transaction_id(1)
17 .seoj([0x05u8, 0xFFu8, 0x01u8])
18 .deoj([0x0Eu8, 0xF0u8, 0x01u8])
19 .esv(el::ServiceCode::Get)
20 .props(el::props!([0x80, []]))
21 .build();
22 let bytes = packet.serialize().expect("fail to serialize");
23
24 socket.send_to(&bytes, (EL_MULTICAST_ADDR, 3610))?;
25 loop {
26 let mut buffer = [0u8; 1024];
27 match socket.recv_from(&mut buffer) {
28 Err(_) => break,
29 Ok((_, src_addr)) => {
30 if let Ok((_, response)) = el::ElPacket::from_bytes(&buffer) {
31 if response.is_response_for(&packet) {
32 println!("got response from {src_addr}");
33 println!("{response}");
34 }
35 }
36 }
37 }
38 }
39
40 Ok(())
41}Sourcepub fn esv(self, esv: ServiceCode) -> Self
pub fn esv(self, esv: ServiceCode) -> Self
Examples found in repository?
examples/find.rs (line 19)
9fn main() -> io::Result<()> {
10 let socket = UdpSocket::bind("0.0.0.0:3610")?;
11 socket.set_read_timeout(Some(Duration::from_secs(2)))?;
12 socket.set_multicast_loop_v4(true)?;
13 socket.join_multicast_v4(&EL_MULTICAST_ADDR, &[0, 0, 0, 0].into())?;
14
15 let packet = el::ElPacketBuilder::new()
16 .transaction_id(1)
17 .seoj([0x05u8, 0xFFu8, 0x01u8])
18 .deoj([0x0Eu8, 0xF0u8, 0x01u8])
19 .esv(el::ServiceCode::Get)
20 .props(el::props!([0x80, []]))
21 .build();
22 let bytes = packet.serialize().expect("fail to serialize");
23
24 socket.send_to(&bytes, (EL_MULTICAST_ADDR, 3610))?;
25 loop {
26 let mut buffer = [0u8; 1024];
27 match socket.recv_from(&mut buffer) {
28 Err(_) => break,
29 Ok((_, src_addr)) => {
30 if let Ok((_, response)) = el::ElPacket::from_bytes(&buffer) {
31 if response.is_response_for(&packet) {
32 println!("got response from {src_addr}");
33 println!("{response}");
34 }
35 }
36 }
37 }
38 }
39
40 Ok(())
41}Sourcepub fn props(self, props: Properties) -> Self
pub fn props(self, props: Properties) -> Self
Examples found in repository?
examples/find.rs (line 20)
9fn main() -> io::Result<()> {
10 let socket = UdpSocket::bind("0.0.0.0:3610")?;
11 socket.set_read_timeout(Some(Duration::from_secs(2)))?;
12 socket.set_multicast_loop_v4(true)?;
13 socket.join_multicast_v4(&EL_MULTICAST_ADDR, &[0, 0, 0, 0].into())?;
14
15 let packet = el::ElPacketBuilder::new()
16 .transaction_id(1)
17 .seoj([0x05u8, 0xFFu8, 0x01u8])
18 .deoj([0x0Eu8, 0xF0u8, 0x01u8])
19 .esv(el::ServiceCode::Get)
20 .props(el::props!([0x80, []]))
21 .build();
22 let bytes = packet.serialize().expect("fail to serialize");
23
24 socket.send_to(&bytes, (EL_MULTICAST_ADDR, 3610))?;
25 loop {
26 let mut buffer = [0u8; 1024];
27 match socket.recv_from(&mut buffer) {
28 Err(_) => break,
29 Ok((_, src_addr)) => {
30 if let Ok((_, response)) = el::ElPacket::from_bytes(&buffer) {
31 if response.is_response_for(&packet) {
32 println!("got response from {src_addr}");
33 println!("{response}");
34 }
35 }
36 }
37 }
38 }
39
40 Ok(())
41}Sourcepub fn build(self) -> ElPacket
pub fn build(self) -> ElPacket
Examples found in repository?
examples/find.rs (line 21)
9fn main() -> io::Result<()> {
10 let socket = UdpSocket::bind("0.0.0.0:3610")?;
11 socket.set_read_timeout(Some(Duration::from_secs(2)))?;
12 socket.set_multicast_loop_v4(true)?;
13 socket.join_multicast_v4(&EL_MULTICAST_ADDR, &[0, 0, 0, 0].into())?;
14
15 let packet = el::ElPacketBuilder::new()
16 .transaction_id(1)
17 .seoj([0x05u8, 0xFFu8, 0x01u8])
18 .deoj([0x0Eu8, 0xF0u8, 0x01u8])
19 .esv(el::ServiceCode::Get)
20 .props(el::props!([0x80, []]))
21 .build();
22 let bytes = packet.serialize().expect("fail to serialize");
23
24 socket.send_to(&bytes, (EL_MULTICAST_ADDR, 3610))?;
25 loop {
26 let mut buffer = [0u8; 1024];
27 match socket.recv_from(&mut buffer) {
28 Err(_) => break,
29 Ok((_, src_addr)) => {
30 if let Ok((_, response)) = el::ElPacket::from_bytes(&buffer) {
31 if response.is_response_for(&packet) {
32 println!("got response from {src_addr}");
33 println!("{response}");
34 }
35 }
36 }
37 }
38 }
39
40 Ok(())
41}Trait Implementations§
Source§impl Debug for ElPacketBuilder
impl Debug for ElPacketBuilder
Auto Trait Implementations§
impl Freeze for ElPacketBuilder
impl RefUnwindSafe for ElPacketBuilder
impl Send for ElPacketBuilder
impl Sync for ElPacketBuilder
impl Unpin for ElPacketBuilder
impl UnwindSafe for ElPacketBuilder
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