Skip to main content

openipc_core/
lib.rs

1//! Shared OpenIPC FPV receiver logic.
2//!
3//! Native and WebAssembly frontends feed bytes into these parsers and keep their
4//! platform-specific device code at the edge.
5
6/// Adaptive-link quality estimation and WFB feedback TX helpers.
7pub mod adaptive;
8/// OpenIPC/WFB link and channel identifiers.
9pub mod channel;
10/// Legacy WFB ChaCha20-Poly1305 compatibility helpers.
11pub mod crypto;
12/// Reed-Solomon forward-error-correction helpers.
13pub mod fec;
14/// Minimal 802.11 frame parsing and construction helpers.
15pub mod ieee80211;
16/// Synthetic RTP source for no-hardware development.
17pub mod mock;
18/// Single-channel WFB payload recovery pipeline.
19pub mod pipeline;
20/// Radiotap TX metadata builders and parsers.
21pub mod radiotap;
22/// Realtek USB RX aggregate parsing.
23pub mod realtek;
24/// Higher-level receive runtime for video and payload routes.
25pub mod receiver;
26/// Multi-route raw payload fanout manager.
27pub mod routes;
28/// RTP parsing and H.264/H.265 depacketization.
29pub mod rtp;
30/// WFB packet, session, crypto, and FEC assembly logic.
31pub mod wfb;
32/// WFB uplink packet transmitter.
33pub mod wfb_tx;
34
35pub use adaptive::{AdaptiveLink, AdaptiveLinkSender, LinkQuality};
36pub use channel::{ChannelId, RadioPort};
37pub use fec::{FecCode, FecError};
38pub use ieee80211::{FrameLayout, WifiFrame};
39pub use mock::{MockRtpFrame, MockRtpPipeline};
40pub use pipeline::{MockPayloadPipeline, PayloadPipeline, PayloadPipelineEvent, RecoveredPayload};
41pub use radiotap::{
42    build_stream_radiotap, parse_tx_mode_str, ChannelBandwidth, TxMode, TxModeKind, TxRadioParams,
43    FRAME_TYPE_DATA, FRAME_TYPE_RTS,
44};
45pub use realtek::{
46    parse_rx_aggregate, parse_rx_aggregate_with_kind, RealtekRxPacket, RxDescriptorKind,
47    RxPacketAttrib,
48};
49pub use receiver::{
50    ReceiverBatch, ReceiverBatchCounters, ReceiverBatchOptions, ReceiverRuntime, RoutePayload,
51    RtpPayloadTap,
52};
53pub use routes::{
54    PayloadChannelRuntime, PayloadRouteError, PayloadRouteEvent, PayloadRouteId,
55    PayloadRouteManager, PayloadRuntimeKey,
56};
57pub use rtp::{
58    Codec, CodecConfigState, DepacketizedFrame, RtpDepacketizer, RtpDepacketizerStatus, RtpHeader,
59    RtpReorderBuffer, RtpReorderStatus,
60};
61pub use wfb::{
62    FecCounters, PlainAssembler, WfbKeypair, WfbOutput, WfbPacket, WfbReceiver, WfbSession,
63};
64pub use wfb_tx::{WfbTransmitter, WfbTxKeypair};