Skip to main content

bacnet_client/client/
object_mgmt.rs

1use super::*;
2
3impl<T: TransportPort + 'static> BACnetClient<T> {
4    /// Delete an object on a remote device (DeleteObject, Clause 15.4).
5    pub async fn delete_object(
6        &self,
7        destination_mac: &[u8],
8        object_identifier: bacnet_types::primitives::ObjectIdentifier,
9    ) -> Result<(), Error> {
10        use bacnet_services::object_mgmt::DeleteObjectRequest;
11
12        let request = DeleteObjectRequest { object_identifier };
13        let mut buf = BytesMut::new();
14        request.encode(&mut buf);
15
16        let _ = self
17            .confirmed_request(destination_mac, ConfirmedServiceChoice::DELETE_OBJECT, &buf)
18            .await?;
19
20        Ok(())
21    }
22
23    /// Create an object on a remote device.
24    pub async fn create_object(
25        &self,
26        destination_mac: &[u8],
27        object_specifier: bacnet_services::object_mgmt::ObjectSpecifier,
28        initial_values: Vec<bacnet_services::common::BACnetPropertyValue>,
29    ) -> Result<Bytes, Error> {
30        use bacnet_services::object_mgmt::CreateObjectRequest;
31
32        let request = CreateObjectRequest {
33            object_specifier,
34            list_of_initial_values: initial_values,
35        };
36        let mut buf = BytesMut::new();
37        request.encode(&mut buf);
38
39        self.confirmed_request(destination_mac, ConfirmedServiceChoice::CREATE_OBJECT, &buf)
40            .await
41    }
42}