pub struct BvlcFunction(/* private fields */);Expand description
A BVLC function code: the second octet of every B/IP BVLL message, which says what the message is (Annex J.2).
The set is open, so a decoder can report a code it doesn’t know. The constants are the twelve functions Annex J.2.1-J.2.12 define. Code 0x0C is not among them: the clause that defined it (J.2.13) was deleted, so this edition treats it like any other unknown code.
Implementations§
Source§impl BvlcFunction
impl BvlcFunction
Sourcepub const BVLC_RESULT: Self
pub const BVLC_RESULT: Self
Acknowledges a BBMD management request (J.2.1).
Wire value 0x00.
Sourcepub const WRITE_BROADCAST_DISTRIBUTION_TABLE: Self
pub const WRITE_BROADCAST_DISTRIBUTION_TABLE: Self
Writes a BBMD’s broadcast distribution table (J.2.2).
Wire value 0x01.
Sourcepub const READ_BROADCAST_DISTRIBUTION_TABLE: Self
pub const READ_BROADCAST_DISTRIBUTION_TABLE: Self
Asks a BBMD for its broadcast distribution table (J.2.3).
Wire value 0x02.
Sourcepub const READ_BROADCAST_DISTRIBUTION_TABLE_ACK: Self
pub const READ_BROADCAST_DISTRIBUTION_TABLE_ACK: Self
Returns a broadcast distribution table (J.2.4).
Wire value 0x03.
Sourcepub const FORWARDED_NPDU: Self
pub const FORWARDED_NPDU: Self
An NPDU a BBMD passes on, with its originator’s address (J.2.5).
Wire value 0x04.
Sourcepub const REGISTER_FOREIGN_DEVICE: Self
pub const REGISTER_FOREIGN_DEVICE: Self
Asks a BBMD to take the sender as a foreign device (J.2.6).
Wire value 0x05.
Sourcepub const READ_FOREIGN_DEVICE_TABLE: Self
pub const READ_FOREIGN_DEVICE_TABLE: Self
Asks a BBMD for its foreign device table (J.2.7).
Wire value 0x06.
Sourcepub const READ_FOREIGN_DEVICE_TABLE_ACK: Self
pub const READ_FOREIGN_DEVICE_TABLE_ACK: Self
Returns a foreign device table (J.2.8).
Wire value 0x07.
Sourcepub const DELETE_FOREIGN_DEVICE_TABLE_ENTRY: Self
pub const DELETE_FOREIGN_DEVICE_TABLE_ENTRY: Self
Removes one entry from a BBMD’s foreign device table (J.2.9).
Wire value 0x08.
Sourcepub const DISTRIBUTE_BROADCAST_TO_NETWORK: Self
pub const DISTRIBUTE_BROADCAST_TO_NETWORK: Self
A foreign device’s broadcast, for its BBMD to distribute (J.2.10).
Wire value 0x09.
Sourcepub const ORIGINAL_UNICAST_NPDU: Self
pub const ORIGINAL_UNICAST_NPDU: Self
A directed NPDU (J.2.11).
Wire value 0x0A.
Sourcepub const ORIGINAL_BROADCAST_NPDU: Self
pub const ORIGINAL_BROADCAST_NPDU: Self
A local broadcast NPDU (J.2.12).
Wire value 0x0B.
Sourcepub const ALL_NAMED: &[(&str, Self)]
pub const ALL_NAMED: &[(&str, Self)]
Every named constant, with its name, in the order declared.
Sourcepub const fn name(self) -> Option<&'static str>
pub const fn name(self) -> Option<&'static str>
The constant’s name, or None for a value the standard
doesn’t define.
Sourcepub const fn is_defined(self) -> bool
pub const fn is_defined(self) -> bool
Whether the standard defines this value.
Source§impl BvlcFunction
impl BvlcFunction
Sourcepub const fn payload_shape(self) -> Option<PayloadShape>
pub const fn payload_shape(self) -> Option<PayloadShape>
The payload layout of this function, from its format clause in
Annex J.2, or None for a code Annex J doesn’t define.
- BVLC-Result and Register-Foreign-Device: two octets, a result code or a time-to-live (J.2.1.1, J.2.6.1).
- The two table reads: nothing (J.2.3.1, J.2.7.1).
- Delete-Foreign-Device-Table-Entry: the entry’s address, six octets (J.2.9.1).
- Write-Broadcast-Distribution-Table and both table ACKs: whole 10-octet entries (J.2.2.1, J.2.4.1, J.2.8.1).
- Forwarded-NPDU: the originator’s 6-octet address, then the NPDU (J.2.5.1).
- Distribute-Broadcast-To-Network and both Original messages: just the NPDU (J.2.10.1-J.2.12.1).
use bacnet_bip_codec::{BvlcFunction, PayloadShape};
assert_eq!(
BvlcFunction::DELETE_FOREIGN_DEVICE_TABLE_ENTRY.payload_shape(),
Some(PayloadShape::Fixed(6)),
);
assert_eq!(BvlcFunction::from_raw(0x0C).payload_shape(), None);Sourcepub const fn nak(self) -> Option<BvlcResultCode>
pub const fn nak(self) -> Option<BvlcResultCode>
The NAK that answers this function when it fails or isn’t supported,
for the six requests J.2.1 says only a BBMD carries out (the BDT
write and read, the FDT read, registration, entry deletion and
broadcast distribution). None for every other code.
A device that is not a BBMD answers a unicast request of these kinds with this code (J.2.1), and every device answers Write-Broadcast-Distribution-Table with it (J.4.4.2).
Trait Implementations§
Source§impl Clone for BvlcFunction
impl Clone for BvlcFunction
impl Copy for BvlcFunction
Source§impl Debug for BvlcFunction
Name::CONSTANT for a named value, Name(raw) otherwise.
impl Debug for BvlcFunction
Name::CONSTANT for a named value, Name(raw) otherwise.
Source§impl Display for BvlcFunction
The constant’s name, or the raw value in decimal.
impl Display for BvlcFunction
The constant’s name, or the raw value in decimal.