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/// Single-channel WFB payload recovery pipeline.
17pub mod pipeline;
18/// Radiotap TX metadata builders and parsers.
19pub mod radiotap;
20/// Realtek USB RX aggregate parsing.
21pub mod realtek;
22/// Higher-level receive runtime for video and payload routes.
23pub mod receiver;
24/// Multi-route raw payload fanout manager.
25pub mod routes;
26/// RTP parsing and H.264/H.265 depacketization.
27pub mod rtp;
28/// WFB packet, session, crypto, and FEC assembly logic.
29pub mod wfb;
30/// WFB uplink packet transmitter.
31pub mod wfb_tx;
32
33pub use adaptive::{AdaptiveLink, AdaptiveLinkSender, LinkQuality};
34pub use channel::{ChannelId, RadioPort};
35pub use fec::{FecCode, FecError};
36pub use ieee80211::{FrameLayout, WifiFrame};
37pub use pipeline::{PayloadPipeline, PayloadPipelineEvent, RecoveredPayload};
38pub use radiotap::{
39    build_stream_radiotap, parse_tx_mode_str, ChannelBandwidth, TxMode, TxModeKind, TxRadioParams,
40    FRAME_TYPE_DATA, FRAME_TYPE_RTS,
41};
42pub use realtek::{
43    parse_rx_aggregate, parse_rx_aggregate_with_kind, RealtekRxPacket, RxDescriptorKind,
44    RxPacketAttrib,
45};
46pub use receiver::{
47    ReceiverBatch, ReceiverBatchCounters, ReceiverBatchOptions, ReceiverRuntime, RoutePayload,
48    RtpPayloadTap,
49};
50pub use routes::{
51    PayloadRouteError, PayloadRouteEvent, PayloadRouteId, PayloadRouteManager, PayloadRuntimeKey,
52};
53pub use rtp::{Codec, DepacketizedFrame, RtpDepacketizer, RtpHeader};
54pub use wfb::{
55    FecCounters, PlainAssembler, WfbKeypair, WfbOutput, WfbPacket, WfbReceiver, WfbSession,
56};
57pub use wfb_tx::{WfbTransmitter, WfbTxKeypair};