use bacnet_emb::{
application_protocol::primitives::data_value::{
ApplicationDataValueWrite, Enumerated,
},
application_protocol::services::write_property_multiple::{
WritePropertyMultiple, WritePropertyMultipleObject, WritePropertyRequest,
},
common::object_id::{ObjectId, ObjectType},
common::property_id::PropertyId,
};
#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
let writes_single_object = vec![
WritePropertyRequest::new(
PropertyId::PropPresentValue,
None,
ApplicationDataValueWrite::Real(22.5),
None,
),
WritePropertyRequest::new(
PropertyId::PropPriorityArray,
None,
ApplicationDataValueWrite::Boolean(true),
Some(8),
),
];
let object1 = WritePropertyMultipleObject::new(
ObjectId::new(ObjectType::ObjectAnalogInput, 0),
writes_single_object,
);
let writes_object2 = vec![WritePropertyRequest::new(
PropertyId::PropPresentValue,
None,
ApplicationDataValueWrite::Enumerated(Enumerated::Unknown(1)),
None,
)];
let writes_object3 = vec![
WritePropertyRequest::new(
PropertyId::PropPresentValue,
None,
ApplicationDataValueWrite::Real(18.3),
None,
),
WritePropertyRequest::new(
PropertyId::PropDeadband,
None,
ApplicationDataValueWrite::Real(0.5),
None,
),
];
let object2 = WritePropertyMultipleObject::new(
ObjectId::new(ObjectType::ObjectBinaryInput, 1),
writes_object2,
);
let object3 = WritePropertyMultipleObject::new(
ObjectId::new(ObjectType::ObjectAnalogInput, 2),
writes_object3,
);
let request = WritePropertyMultiple::new(vec![object1, object2, object3]);
println!("WritePropertyMultiple example completed successfully!");
Ok(())
}
#[cfg(not(feature = "alloc"))]
fn no_std_example() {
use core::borrow::Borrow;
let write1 = WritePropertyRequest::new(
PropertyId::PropPresentValue,
None,
ApplicationDataValueWrite::Real(22.5),
None,
);
let write2 = WritePropertyRequest::new(
PropertyId::PropPriorityArray,
None,
ApplicationDataValueWrite::Boolean(true),
Some(8),
);
let writes = &[write1, write2];
let object = WritePropertyMultipleObject::new(
ObjectId::new(ObjectType::ObjectAnalogInput, 0),
writes,
);
let objects = &[object];
let request = WritePropertyMultiple::new(objects);
}