Expand description
Recipient_List full ASN.1 framing (ASHRAE 135-2020 Clauses 12.21, 21).
The property is a BACnetLIST of BACnetDestination, so on the wire it is
the destinations back to back with no list wrapper. A destination has
seven members and none carries a context tag, so they travel in this order
as application-tagged elements (the recipient CHOICE brings its own tags):
| Member | Wire form |
|---|---|
valid-days | Bit String (BACnetDaysOfWeek) |
from-time | Time |
to-time | Time |
recipient | BACnetRecipient CHOICE, see below |
process-identifier | Unsigned, 32-bit range |
issue-confirmed-notifications | Boolean |
transitions | Bit String (BACnetEventTransitionBits) |
BACnetRecipient picks either device [0], an object identifier, or
address [1], a BACnetAddress. The device form tags a primitive
ObjectIdentifier — a context-specific PRIMITIVE tag 0, length 4.
BACnetAddress is constructed (a 16-bit network number, then the MAC
address as an OCTET STRING, both application-tagged), so address [1] is
an opening tag 1 / application-tagged Unsigned16 + OCTET STRING / closing
tag 1.
A BACnetAddress MAC is at most BACnetAddress::MAX_MAC_LEN octets in
both directions: decode_recipient refuses a longer one before copying
it (#1124 for configured recipients, #1156 everywhere else) and
encode_recipient refuses to write one. Every other codec that carries a
BACnetAddress (ValueSource, the AuditLogQuery filters) shares
check_decoded_mac_len and check_encoded_mac_len, so the bound has
one definition. The source addresses the stack learns off the network fit
it too: the NPDU codec bounds SADR the same way (#1141), and the network
layer drops a frame from a longer link-layer source MAC (#1198).
Functions§
- check_
decoded_ mac_ len - Refuse, as a decode error at
offset, aBACnetAddressmac-address whose OCTET STRING holds more thanBACnetAddress::MAX_MAC_LENoctets (#1156), or any other OCTET STRING that names a MAC on a data link, such as the You-Are device MAC (#1200). Decoders call it on the tag’s length, before copying any octet. - check_
encoded_ mac_ len - Refuse to encode a MAC longer than
BACnetAddress::MAX_MAC_LENoctets, whichcheck_decoded_mac_lenwould refuse on the way back in: aBACnetAddressmac-address (#1156) or the You-Are device MAC (#1200). - decode_
destination - Decode one
BACnetDestinationatoffset; returns it and the offset past the last member. Its recipient decodes throughdecode_recipient, so an address MAC pastBACnetAddress::MAX_MAC_LENoctets is refused (#1124). - decode_
destination_ list - Decode a whole
Recipient_List(BACnetLIST of BACnetDestination— concatenated entries). Every entry must parse; trailing garbage errors. - decode_
recipient - Decode one
BACnetRecipientatoffset. - encode_
destination - Encode one
BACnetDestination. - encode_
destination_ list - Encode a
BACnetLIST of BACnetDestination: plain concatenation, no wrapper (Clause 12.21Recipient_List). Every destination is checked beforebufchanges, so a refused list writes nothing. - encode_
recipient - Encode a
BACnetRecipient. An address MAC pastBACnetAddress::MAX_MAC_LENoctets is an error, returned beforebufchanges.