Skip to main content

GroupPayload

Enum GroupPayload 

Source
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

Source

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).

Source

pub const MAX_OPTIMIZED: u8 = 0x3F

The widest value the optimized form can carry: six bits.

Source

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.

Source

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

Source§

fn clone(&self) -> GroupPayload

Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for GroupPayload

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl Eq for GroupPayload

Source§

impl PartialEq for GroupPayload

Source§

fn eq(&self, other: &GroupPayload) -> bool

Equality operator ==. Read more
1.0.0 (const: unstable) · Source§

fn ne(&self, other: &Rhs) -> bool

Inequality operator !=. Read more
Source§

impl StructuralPartialEq for GroupPayload

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.