use bacnet_emb::{
application_protocol::primitives::data_value::ApplicationDataValueWrite,
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 av_object_0 = vec![
WritePropertyRequest::new(
PropertyId::PropPresentValue,
None,
ApplicationDataValueWrite::Real(72.5), None,
),
WritePropertyRequest::new(
PropertyId::PropDeadband,
None,
ApplicationDataValueWrite::Real(1.0), None,
),
WritePropertyRequest::new(
PropertyId::PropResolution,
None,
ApplicationDataValueWrite::Real(0.1), None,
),
];
let object1 = WritePropertyMultipleObject::new(
ObjectId::new(ObjectType::ObjectAnalogValue, 0),
av_object_0,
);
let av_object_1 = vec![
WritePropertyRequest::new(
PropertyId::PropPresentValue,
None,
ApplicationDataValueWrite::Real(45.0), None,
),
WritePropertyRequest::new(
PropertyId::PropMinPresValue,
None,
ApplicationDataValueWrite::Real(0.0), None,
),
WritePropertyRequest::new(
PropertyId::PropMaxPresValue,
None,
ApplicationDataValueWrite::Real(100.0), None,
),
];
let object2 = WritePropertyMultipleObject::new(
ObjectId::new(ObjectType::ObjectAnalogValue, 1),
av_object_1,
);
let av_object_2 = vec![WritePropertyRequest::new(
PropertyId::PropPresentValue,
None,
ApplicationDataValueWrite::Real(68.0), None,
)];
let av_object_3 = vec![WritePropertyRequest::new(
PropertyId::PropPresentValue,
None,
ApplicationDataValueWrite::Real(74.0), None,
)];
let object3 = WritePropertyMultipleObject::new(
ObjectId::new(ObjectType::ObjectAnalogValue, 2),
av_object_2,
);
let object4 = WritePropertyMultipleObject::new(
ObjectId::new(ObjectType::ObjectAnalogValue, 3),
av_object_3,
);
let _request = WritePropertyMultiple::new(vec![object1, object2, object3, object4]);
println!("Analog Value batch write example completed successfully!");
println!("Wrote to 4 Analog Value objects in a single request");
Ok(())
}