Skip to main content

SignallingKind

Enum SignallingKind 

Source
#[non_exhaustive]
pub enum SignallingKind { Bufs { bufs: u16, units: BufsUnit, }, Tto { tto_e: u8, tto_m: u8, tto_l: u8, }, BufStat { bufstat: u16, units: BufsUnit, }, Reserved(u32), }
Expand description

Decoded BUFS/TTO signalling — EN 302 755 Annex C, Table C.1.

The 11 prefix in the first ISSY byte selects one of two alternatives: BUFS (buffer status) or TTO (time-to-output), indicated by bits [5:4].

Variants (Non-exhaustive)§

This enum is marked as non-exhaustive
Non-exhaustive enums could have additional variants added in future. Therefore, when matching against variants of non-exhaustive enums, an extra wildcard arm must be added to account for any future variants.
§

Bufs

BUFS — maximum size of the requested receiver buffer.

Fields: (bufs, units) where bufs is the 10-bit buffer status and units is the 2-bit unit selector.

Fields

§bufs: u16

10-bit buffer status value.

§units: BufsUnit

2-bit unit selector (Table C.1).

§

Tto

TTO — time-to-output (mantissa + exponent form).

The output time is TTO = (tto_m + tto_l / 256) * 2^tto_e where tto_l is zero when ISCRshort is in use.

Fields

§tto_e: u8

5-bit exponent TTO_E.

§tto_m: u8

7-bit mantissa TTO_M.

§tto_l: u8

8-bit low-fraction TTO_L (zero when ISCRshort is in use).

§

BufStat

BUFSTAT — actual receiver-buffer fill status (DVB-S2 only).

EN 302 307-1 Annex D Table D.1: selected by bits [5:4] = 0b10 (the ISSY code range 0xE_XXXX). Same field layout as Self::Bufs — a 2-bit units selector and a 10-bit value (the number of filled bits, scaled by units). Not used in DVB-T2, where EN 302 755 Annex C reserves this code range (“shall not be transmitted in DVB-T2”) and replaces it with Self::Tto; decoding it as BUFSTAT here is correct for DVB-S2 streams and harmless for T2 (the range is not transmitted).

Fields

§bufstat: u16

10-bit buffer-status value (filled bits, scaled by units).

§units: BufsUnit

2-bit unit selector (EN 302 307-1 Annex D Table D.1; note S2 marks 0b11 reserved whereas T2’s BufsUnit::Kbits8 uses it).

§

Reserved(u32)

Reserved signalling type (bits [5:4] = 0b11).

Holds the low 20 bits of the signalling payload; the 2-bit kind selector is not retained. This is a decode-only view — the wire bytes live in Bbheader::issy_in_header and are serialized verbatim, so the dropped selector does not affect round-trip fidelity.

Implementations§

Source§

impl SignallingKind

Source

pub fn bufs_bits(&self) -> Option<u64>

Decoded BUFS buffer size in bits, or None if this is not a BUFS variant.

bufs_bits = bufs × units.multiplier_bits()

See EN 302 755 Annex C Table C.1 + §BUFS/TTO semantics (dvb-bbframe/docs/enums/en_302_755/bufs_unit.md).

§Note on encoders

Only decode accessors are provided. No set_* or from_* encoders are added because the physical-value → mantissa/exponent TTO encoding is lossy and the wire round-trip is already guaranteed by the existing raw-field serialization in Bbheader. Use the raw-field constructors (SignallingKind::Bufs { … } / SignallingKind::Tto { … }) for encoding.

Source

pub fn bufs_bytes(&self) -> Option<u64>

Decoded BUFS buffer size in bytes (integer floor), or None.

bufs_bytes = bufs_bits() / 8. Integer division is used: BUFS is a maximum-size bound per the standard, so a floor is appropriate.

See EN 302 755 Annex C Table C.1 + §BUFS/TTO semantics (dvb-bbframe/docs/enums/en_302_755/bufs_unit.md).

Source

pub fn bufstat_bits(&self) -> Option<u64>

Decoded BUFSTAT fill status in bits, or None if this is not a BUFSTAT variant (DVB-S2 only — EN 302 307-1 Annex D Table D.1).

bufstat_bits = bufstat × units.multiplier_bits()

Source

pub fn bufstat_bytes(&self) -> Option<u64>

Decoded BUFSTAT fill status in bytes (integer floor), or None.

Source

pub fn tto_t_over_256(&self) -> Option<u64>

Decoded time-to-output in units of T/256, or None if this is not a TTO variant.

tto_t_over_256 = ((TTO_M × 256) + TTO_L) × 2^TTO_E

This is TTO × 256 in units of the elementary period T (see EN 302 755 §9.5 / Table 65). The TTO_L / 256 fractional term is preserved exactly without floating point; consumers divide by 256.0 to obtain TTO in units of T.

Per EN 302 755 Annex C Table C.1 + §8.3.3 (dvb-bbframe/docs/enums/en_302_755/bufs_unit.md).

Source

pub fn name(&self) -> &'static str

Human-readable spec display name for the signalling kind.

Trait Implementations§

Source§

impl Clone for SignallingKind

Source§

fn clone(&self) -> SignallingKind

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 Copy for SignallingKind

Source§

impl Debug for SignallingKind

Source§

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

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

impl Display for SignallingKind

Source§

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

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

impl Eq for SignallingKind

Source§

impl PartialEq for SignallingKind

Source§

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

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

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

Inequality operator !=. Read more
Source§

impl Serialize for SignallingKind

Available on crate feature serde only.
Source§

fn serialize<__S>(&self, __serializer: __S) -> Result<__S::Ok, __S::Error>
where __S: Serializer,

Serialize this value into the given Serde serializer. Read more
Source§

impl StructuralPartialEq for SignallingKind

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> ErasedDestructor for T
where T: 'static,

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> ToString for T
where T: Display + ?Sized,

Source§

fn to_string(&self) -> String

Converts the given value to a String. 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.