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/// First-valid-copy packet diversity for multiple receive adapters.
13pub mod diversity;
14/// Reed-Solomon forward-error-correction helpers.
15pub mod fec;
16/// Minimal 802.11 frame parsing and construction helpers.
17pub mod ieee80211;
18/// Synthetic RTP source for no-hardware development.
19pub mod mock;
20/// Single-channel WFB payload recovery pipeline.
21pub mod pipeline;
22/// Radiotap TX metadata builders and parsers.
23pub mod radiotap;
24/// Realtek USB RX aggregate parsing.
25pub mod realtek;
26/// Higher-level receive runtime for video and payload routes.
27pub mod receiver;
28/// Multi-route raw payload fanout manager.
29pub mod routes;
30/// RTP parsing and H.264/H.265 depacketization.
31pub mod rtp;
32/// WFB packet, session, crypto, and FEC assembly logic.
33pub mod wfb;
34/// WFB uplink packet transmitter.
35pub mod wfb_tx;
36
37pub use adaptive::{AdaptiveLink, AdaptiveLinkSender, LinkQuality};
38pub use channel::{ChannelId, RadioPort};
39pub use diversity::{
40    DiversityCombiner, DiversityDecision, DiversitySourceId, DiversitySourceStats, DiversityStats,
41};
42pub use fec::{FecCode, FecError};
43pub use ieee80211::{FrameLayout, WifiFrame};
44pub use mock::{MockRtpFrame, MockRtpPipeline};
45pub use pipeline::{MockPayloadPipeline, PayloadPipeline, PayloadPipelineEvent, RecoveredPayload};
46pub use radiotap::{
47    build_stream_radiotap, parse_tx_mode_str, ChannelBandwidth, TxMode, TxModeKind, TxRadioParams,
48    FRAME_TYPE_DATA, FRAME_TYPE_RTS,
49};
50pub use realtek::{
51    parse_rx_aggregate, parse_rx_aggregate_with_kind, RealtekRxPacket, RxDescriptorKind,
52    RxPacketAttrib,
53};
54pub use receiver::{
55    ReceiverBatch, ReceiverBatchCounters, ReceiverBatchOptions, ReceiverRuntime, RoutePayload,
56    RtpPayloadTap,
57};
58pub use routes::{
59    PayloadChannelRuntime, PayloadRouteError, PayloadRouteEvent, PayloadRouteId,
60    PayloadRouteManager, PayloadRuntimeKey,
61};
62pub use rtp::{
63    Codec, CodecConfigState, DepacketizedFrame, RtpDepacketizer, RtpDepacketizerStatus, RtpHeader,
64    RtpReorderBuffer, RtpReorderStatus,
65};
66pub use wfb::{
67    FecCounters, PlainAssembler, WfbKeypair, WfbOutput, WfbPacket, WfbReceiver, WfbSession,
68};
69pub use wfb_tx::{WfbTransmitter, WfbTxKeypair};