use super::PulseConverterObject;
use std::borrow::Cow;
use bacnet_types::enums::PropertyIdentifier as P;
use crate::property_metadata::{
PropertyConformance::{Optional, RequiredRead, RequiredWrite},
PropertyMetadata,
PropertyWriteCapability::{Always, ReadOnly, WhenOutOfService},
};
const PULSE_CONVERTER_BASE: &[PropertyMetadata] = &[
PropertyMetadata::new(P::OBJECT_IDENTIFIER, RequiredRead, None, ReadOnly),
PropertyMetadata::new(P::OBJECT_NAME, RequiredRead, None, ReadOnly),
PropertyMetadata::new(P::DESCRIPTION, Optional, None, Always),
PropertyMetadata::new(P::OBJECT_TYPE, RequiredRead, None, ReadOnly),
PropertyMetadata::new(P::PRESENT_VALUE, RequiredRead, None, WhenOutOfService),
PropertyMetadata::new(P::UNITS, RequiredRead, None, ReadOnly),
PropertyMetadata::new(P::SCALE_FACTOR, RequiredRead, None, Always),
PropertyMetadata::new(P::ADJUST_VALUE, RequiredWrite, None, Always),
PropertyMetadata::new(P::COUNT, RequiredRead, None, ReadOnly),
PropertyMetadata::new(P::UPDATE_TIME, RequiredRead, None, ReadOnly),
PropertyMetadata::new(P::COUNT_CHANGE_TIME, RequiredRead, None, ReadOnly),
PropertyMetadata::new(P::COUNT_BEFORE_CHANGE, RequiredRead, None, ReadOnly),
PropertyMetadata::new(P::COV_INCREMENT, Optional, None, Always),
PropertyMetadata::new(P::COV_PERIOD, Optional, None, ReadOnly),
PropertyMetadata::new(P::INPUT_REFERENCE, Optional, None, Always),
PropertyMetadata::new(P::STATUS_FLAGS, RequiredRead, None, ReadOnly),
PropertyMetadata::new(P::EVENT_STATE, RequiredRead, None, ReadOnly),
PropertyMetadata::new(P::OUT_OF_SERVICE, RequiredRead, None, Always),
PropertyMetadata::new(P::RELIABILITY, Optional, None, WhenOutOfService),
PropertyMetadata::new(P::PROPERTY_LIST, RequiredRead, None, ReadOnly),
];
pub(super) fn for_pulse_converter_object(
_object: &PulseConverterObject,
) -> Cow<'_, [PropertyMetadata]> {
Cow::Borrowed(PULSE_CONVERTER_BASE)
}
#[cfg(test)]
#[path = "metadata_tests.rs"]
mod tests;