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.
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 a new ObjectIdentifier from any valid 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 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 instance_number exceeds
MAX_INSTANCE or equals
WILDCARD_INSTANCE.
Sourcepub const fn new_unchecked(
object_type: ObjectType,
instance_number: u32,
) -> Self
pub const fn new_unchecked( object_type: ObjectType, instance_number: u32, ) -> Self
Create without validation. Caller must ensure instance <= MAX_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
Source§fn clone(&self) -> ObjectIdentifier
fn clone(&self) -> ObjectIdentifier
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read more