#[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
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.
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
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
units: BufsUnit2-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
impl SignallingKind
Sourcepub fn bufs_bits(&self) -> Option<u64>
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
(docs/en_302_755_t2.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.
Sourcepub fn bufs_bytes(&self) -> Option<u64>
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
(docs/en_302_755_t2.md).
Sourcepub fn bufstat_bits(&self) -> Option<u64>
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()
Sourcepub fn bufstat_bytes(&self) -> Option<u64>
pub fn bufstat_bytes(&self) -> Option<u64>
Decoded BUFSTAT fill status in bytes (integer floor), or None.
Sourcepub fn tto_t_over_256(&self) -> Option<u64>
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
(docs/en_302_755_t2.md).
Trait Implementations§
Source§impl Clone for SignallingKind
impl Clone for SignallingKind
Source§fn clone(&self) -> SignallingKind
fn clone(&self) -> SignallingKind
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreimpl Copy for SignallingKind
Source§impl Debug for SignallingKind
impl Debug for SignallingKind
impl Eq for SignallingKind
Source§impl PartialEq for SignallingKind
impl PartialEq for SignallingKind
Source§fn eq(&self, other: &SignallingKind) -> bool
fn eq(&self, other: &SignallingKind) -> bool
self and other values to be equal, and is used by ==.