bacnet_client/client/
device_mgmt.rs1use super::*;
2
3impl<T: TransportPort + 'static> BACnetClient<T> {
4 pub async fn device_communication_control(
6 &self,
7 destination_mac: &[u8],
8 enable_disable: bacnet_types::enums::EnableDisable,
9 time_duration: Option<u16>,
10 password: Option<String>,
11 ) -> Result<(), Error> {
12 use bacnet_services::device_mgmt::DeviceCommunicationControlRequest;
13
14 let request = DeviceCommunicationControlRequest {
15 time_duration,
16 enable_disable,
17 password,
18 };
19 let mut buf = BytesMut::new();
20 request.encode(&mut buf)?;
21
22 let _ = self
23 .confirmed_request(
24 destination_mac,
25 ConfirmedServiceChoice::DEVICE_COMMUNICATION_CONTROL,
26 &buf,
27 )
28 .await?;
29
30 Ok(())
31 }
32
33 pub async fn reinitialize_device(
35 &self,
36 destination_mac: &[u8],
37 reinitialized_state: bacnet_types::enums::ReinitializedState,
38 password: Option<String>,
39 ) -> Result<(), Error> {
40 use bacnet_services::device_mgmt::ReinitializeDeviceRequest;
41
42 let request = ReinitializeDeviceRequest {
43 reinitialized_state,
44 password,
45 };
46 let mut buf = BytesMut::new();
47 request.encode(&mut buf)?;
48
49 let _ = self
50 .confirmed_request(
51 destination_mac,
52 ConfirmedServiceChoice::REINITIALIZE_DEVICE,
53 &buf,
54 )
55 .await?;
56
57 Ok(())
58 }
59 pub async fn time_synchronization(
61 &self,
62 destination_mac: &[u8],
63 date: bacnet_types::primitives::Date,
64 time: bacnet_types::primitives::Time,
65 ) -> Result<(), Error> {
66 use bacnet_services::device_mgmt::TimeSynchronizationRequest;
67
68 let request = TimeSynchronizationRequest { date, time };
69 let mut buf = BytesMut::new();
70 request.encode(&mut buf);
71
72 self.unconfirmed_request(
73 destination_mac,
74 UnconfirmedServiceChoice::TIME_SYNCHRONIZATION,
75 &buf,
76 )
77 .await
78 }
79
80 pub async fn utc_time_synchronization(
82 &self,
83 destination_mac: &[u8],
84 date: bacnet_types::primitives::Date,
85 time: bacnet_types::primitives::Time,
86 ) -> Result<(), Error> {
87 use bacnet_services::device_mgmt::TimeSynchronizationRequest;
88
89 let request = TimeSynchronizationRequest { date, time };
90 let mut buf = BytesMut::new();
91 request.encode(&mut buf);
92
93 self.unconfirmed_request(
94 destination_mac,
95 UnconfirmedServiceChoice::UTC_TIME_SYNCHRONIZATION,
96 &buf,
97 )
98 .await
99 }
100}