bacnet_client/client/
cov.rs1use super::*;
2
3impl<T: TransportPort + 'static> BACnetClient<T> {
4 pub async fn subscribe_cov(
5 &self,
6 destination_mac: &[u8],
7 subscriber_process_identifier: u32,
8 monitored_object_identifier: bacnet_types::primitives::ObjectIdentifier,
9 confirmed: bool,
10 lifetime: Option<u32>,
11 ) -> Result<(), Error> {
12 use bacnet_services::cov::SubscribeCOVRequest;
13
14 let request = SubscribeCOVRequest {
15 subscriber_process_identifier,
16 monitored_object_identifier,
17 issue_confirmed_notifications: Some(confirmed),
18 lifetime,
19 };
20 let mut buf = BytesMut::new();
21 request.encode(&mut buf);
22
23 let _ = self
24 .confirmed_request(destination_mac, ConfirmedServiceChoice::SUBSCRIBE_COV, &buf)
25 .await?;
26
27 Ok(())
28 }
29
30 pub async fn unsubscribe_cov(
32 &self,
33 destination_mac: &[u8],
34 subscriber_process_identifier: u32,
35 monitored_object_identifier: bacnet_types::primitives::ObjectIdentifier,
36 ) -> Result<(), Error> {
37 use bacnet_services::cov::SubscribeCOVRequest;
38
39 let request = SubscribeCOVRequest {
40 subscriber_process_identifier,
41 monitored_object_identifier,
42 issue_confirmed_notifications: None,
43 lifetime: None,
44 };
45 let mut buf = BytesMut::new();
46 request.encode(&mut buf);
47
48 let _ = self
49 .confirmed_request(destination_mac, ConfirmedServiceChoice::SUBSCRIBE_COV, &buf)
50 .await?;
51
52 Ok(())
53 }
54
55 pub fn cov_notifications(&self) -> broadcast::Receiver<COVNotificationRequest> {
59 self.cov_tx.subscribe()
60 }
61}