pub struct ObjectIdentifier { /* private fields */ }Expand description
BACnet Object Identifier: 10-bit type + 22-bit instance number.
Uniquely identifies a BACnet object within a device. Encoded as a
4-byte big-endian value: (object_type << 22) | instance_number.
Checked construction and wire decoding preserve both field widths, so
encoding cannot silently truncate an identifier.
The all-ones instance value WILDCARD_INSTANCE
is still a valid 22-bit wire value, and some service contexts give it
wildcard meaning. Use ObjectIdentifier::new or ObjectIdentifier::decode
when preserving wire-level values. Use ObjectIdentifier::new_addressable
when constructing identifiers for concrete objects that can be stored,
addressed, or compared as actual object instances.
Implementations§
Source§impl ObjectIdentifier
impl ObjectIdentifier
Sourcepub const MAX_INSTANCE: u32 = 0x3F_FFFF
pub const MAX_INSTANCE: u32 = 0x3F_FFFF
Maximum encodable instance number (2^22 - 1 = 4,194,303).
This is also WILDCARD_INSTANCE. It is
accepted by ObjectIdentifier::new and ObjectIdentifier::decode
for wire compatibility, but callers that need a concrete addressable
object should use MAX_ADDRESSABLE_INSTANCE
or ObjectIdentifier::new_addressable.
Sourcepub const WILDCARD_INSTANCE: u32 = Self::MAX_INSTANCE
pub const WILDCARD_INSTANCE: u32 = Self::MAX_INSTANCE
The reserved wildcard instance number (4,194,303).
BACnet service clauses assign this value special “any/local instance” meaning in selected contexts, for example Who-Is/Who-Am-I discovery and Device/Network Port object access. It is not a concrete object instance for addressable-object storage.
Sourcepub const MAX_ADDRESSABLE_INSTANCE: u32
pub const MAX_ADDRESSABLE_INSTANCE: u32
Maximum instance number for a concrete addressable object (4,194,302).
This excludes WILDCARD_INSTANCE.
Sourcepub fn new(object_type: ObjectType, instance_number: u32) -> Result<Self, Error>
pub fn new(object_type: ObjectType, instance_number: u32) -> Result<Self, Error>
Create an ObjectIdentifier from a 10-bit type and 22-bit wire instance.
This constructor preserves WILDCARD_INSTANCE
because it is a valid encoded value in BACnet service payloads. Use
ObjectIdentifier::new_addressable when the identifier must name a
concrete object instance.
§Errors
Returns Err if the object type exceeds 1023 or instance_number exceeds
MAX_INSTANCE.
Sourcepub fn new_addressable(
object_type: ObjectType,
instance_number: u32,
) -> Result<Self, Error>
pub fn new_addressable( object_type: ObjectType, instance_number: u32, ) -> Result<Self, Error>
Create a new ObjectIdentifier for a concrete addressable object.
This rejects WILDCARD_INSTANCE, while
ObjectIdentifier::new keeps accepting that value for wire-level
round trips and BACnet service contexts where it is meaningful.
§Errors
Returns Err if the object type exceeds 1023, or instance_number exceeds
MAX_INSTANCE or equals
WILDCARD_INSTANCE.
Sourcepub const fn object_type(&self) -> ObjectType
pub const fn object_type(&self) -> ObjectType
The object type.
Sourcepub const fn instance_number(&self) -> u32
pub const fn instance_number(&self) -> u32
The instance number (0 to 4,194,303).
Values returned from wire decoding may equal
WILDCARD_INSTANCE. Treat that value as a
concrete addressable object only after the relevant service context has
resolved its wildcard semantics.
Trait Implementations§
Source§impl Clone for ObjectIdentifier
impl Clone for ObjectIdentifier
impl Copy for ObjectIdentifier
Source§impl Debug for ObjectIdentifier
impl Debug for ObjectIdentifier
Source§impl Display for ObjectIdentifier
impl Display for ObjectIdentifier
impl Eq for ObjectIdentifier
Source§impl From<ObjectIdentifier> for BACnetDeviceObjectReference
impl From<ObjectIdentifier> for BACnetDeviceObjectReference
Source§fn from(object_identifier: ObjectIdentifier) -> Self
fn from(object_identifier: ObjectIdentifier) -> Self
A reference to an object in this device: no device identifier.