use bacnet_types::constructed::BACnetDeviceObjectReference;
use bacnet_types::enums::ObjectType;
use bacnet_types::error::Error;
use crate::common;
use crate::device_reference::check_device_member;
pub(super) const ZONES: &[ObjectType] = &[ObjectType::LIFE_SAFETY_ZONE];
pub(super) const ZONE_MEMBERS: &[ObjectType] =
&[ObjectType::LIFE_SAFETY_POINT, ObjectType::LIFE_SAFETY_ZONE];
pub(super) fn add(
list: &mut Vec<BACnetDeviceObjectReference>,
reference: BACnetDeviceObjectReference,
types: &[ObjectType],
) -> Result<(), Error> {
check_device_member(reference.device_identifier)?;
if !types.contains(&reference.object_identifier.object_type()) {
return Err(common::value_out_of_range_error());
}
if !list.contains(&reference) {
list.push(reference);
}
Ok(())
}