pub enum GroupPayload {
None,
Optimized(u8),
Octets(Vec<u8>),
}Expand description
The transmitted form of a group telegram’s data.
The A_GroupValue services carry their data in one of two forms, and the form is part of the frame, not a property of the byte values: data of six bits or less rides inside the service octet itself (the optimized form), and anything wider follows the service octets. Preserving the form here keeps the choice with the caller that knows the datapoint’s declared width - this layer places and extracts the bits, and never guesses the form from a value.
Variants§
None
No data: the read service.
Optimized(u8)
The optimized form: the data bits carried inside the service octet,
low-aligned. At most six bits, so at most 0x3F.
Octets(Vec<u8>)
The general form: the data octets following the service octets, most significant octet first.
Implementations§
Source§impl GroupPayload
impl GroupPayload
Sourcepub const MAX_OCTETS: usize = 253
pub const MAX_OCTETS: usize = 253
The widest data-octet count a group telegram can carry.
The extended frame’s length field carries 0 to 254 - the value 255 is the standard’s reserved escape, never a length - and the count starts after the transport-control octet, so the service octet takes 1 count and the data may take the other 253 (KNX TP1 medium clause on the extended length field; the Data Link Layer general clause on octet_count states the same rule).
Sourcepub const MAX_OPTIMIZED: u8 = 0x3F
pub const MAX_OPTIMIZED: u8 = 0x3F
The widest value the optimized form can carry: six bits.
Sourcepub fn optimized(value: u8) -> Result<Self>
pub fn optimized(value: u8) -> Result<Self>
Builds the optimized form, refusing a value the 6-bit carrier cannot state.
The sanctioned build route for a value arriving from runtime data; the refusal is byte-identical to the telegram mint’s own, so a value this accepts is one a telegram accepts.
Sourcepub fn octets(data: impl Into<Vec<u8>>) -> Result<Self>
pub fn octets(data: impl Into<Vec<u8>>) -> Result<Self>
Builds the general form, refusing empty data - no group
service carries an empty octet sequence - and data beyond
GroupPayload::MAX_OCTETS.
The sanctioned build route for octets arriving from runtime data; both refusals are byte-identical to the telegram mint’s own, so a payload this accepts is one a telegram accepts.
Trait Implementations§
Source§impl Clone for GroupPayload
impl Clone for GroupPayload
Source§fn clone(&self) -> GroupPayload
fn clone(&self) -> GroupPayload
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read more