dvb-si 12.0.1

ETSI EN 300 468 DVB Service Information parser + builder. MPEG-2 PSI included.
Documentation
//! DSM-CC data-carousel download protocol — ISO/IEC 13818-6 §7.2/§7.3 as
//! profiled by DVB (TR 101 202 §4.6/§4.7.5, TS 102 006 SSU, TS 102 809).
//!
//! Layer cake: [`crate::tables::dsmcc::DsmccSection`] frames the sections
//! (table_id 0x3B control / 0x3C data); this module types their payloads —
//! [`UnMessage`] (DSI/DII) and [`DownloadDataBlock`] — and
//! [`ModuleReassembler`] collects DDB blocks into complete modules.
//!
//! Wire layouts are documented in `dvb-si/docs/text/iso_13818_6/` (with
//! provenance notes — ISO/IEC 13818-6 itself cannot be vendored) and pinned
//! against a live capture by the `carousel_fixture` integration test.
//!
//! # Layers
//!
//! | Layer | Types |
//! |---|---|
//! | Section framing (table_id 0x3B / 0x3C) | [`crate::tables::dsmcc::DsmccSection`] |
//! | Download protocol (U-N messages) | [`UnMessage`] → [`Dsi`] (+ [`GroupInfoIndication`]) / [`Dii`] (+ [`DiiModule`]); [`DownloadDataBlock`] |
//! | Data carousel module reassembly | [`ModuleReassembler`] → [`Module`] (version-aware, out-of-order tolerant, memory-capped) |
//! | Object carousel (BIOP) | [`ServiceGatewayInfo`], [`ModuleInfo`] (incl. [`CompressedModuleDescriptor`], decompressed with feature `flate2`), [`BiopMessage`], [`Ior`] / [`TaggedProfile`] |
//! | File view | [`CarouselFs`] (`resolve` / `file_bytes`) |
//!
//! All eleven DII / DSI carousel descriptors of ETSI EN 301 192 Table 48 are
//! typed in [`crate::descriptors::carousel`] (`AnyCarouselDescriptor` /
//! `parse_carousel_loop`); [`ModuleInfo::user_info`] walks them in that tag
//! space. See the generated
//! [`dvb-si/docs/COVERAGE.md`](https://github.com/fishloa/rust-broadcast/blob/main/dvb-si/docs/COVERAGE.md#dsm-cc-data-carousel-etsi-en-301-192-v171-table-48).

pub mod biop;
pub mod messages;
pub mod reassembler;

pub use biop::{
    Binding, BiopMessage, BiopProfileBody, CarouselFs, CarouselObject, CompressedModuleDescriptor,
    ConnBinder, DirectoryMessage, FileMessage, Ior, LiteComponent, LiteOptionsProfileBody,
    ModuleInfo, NameComponent, NsapAddress, ObjectKind, ObjectLocation, ServiceGatewayInfo,
    ServiceLocation, TaggedProfile, Tap,
};
pub use messages::{
    Dii, DiiModule, DownloadDataBlock, Dsi, GroupInfo, GroupInfoIndication, UnMessage,
};
pub use reassembler::{DEFAULT_MAX_MODULE_SIZE, Module, ModuleKey, ModuleReassembler};