Skip to main content

bacnet_client/client/
object_mgmt.rs

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