acoustic_ofdm/
lib.rs

1// Copyright (c) 2026 Elias S. G. Carotti
2
3//! Acoustic OFDM modem library.
4//!
5//! This crate exposes the modem, debug, and packet layers used by the CLI.
6
7mod baseband;
8pub mod config;
9pub mod crc;
10pub mod debug;
11mod equalizer;
12pub mod modem;
13pub mod packet;
14pub mod plots;
15pub mod spectrogram;
16mod sync;
17mod wake;
18pub mod wav_io;
19
20pub use baseband::{
21    decode_packet_baseband, encode_single_packet_baseband, expected_single_packet_data_symbols,
22    recover_single_packet_data_symbols,
23};
24pub use config::{
25    EqualizerBuilder, EqualizerConfig, EqualizerFeatures, FecMode, Modulation, OfdmConfig,
26    PassbandMode, WakePreamble,
27};
28pub use debug::{
29    dump_passband_bins, dump_passband_bins_with_sync, dump_passband_channel_compare_with_sync,
30    dump_passband_constellation, dump_passband_iq_chain, dump_passband_pilot_tracking,
31    dump_passband_sync_metric, EncodedBurst, EncodedPacketMeta, PassbandBinDump,
32    PassbandBinDumpRow, PassbandChannelCompareDump, PassbandChannelCompareRow,
33    PassbandConstellationDump, PassbandDiagnostics, PassbandIqChainDump, PassbandPilotTrackDump,
34    PassbandSyncDump,
35};
36pub use modem::{
37    decode_encoded_burst_oracle, decode_single_packet_passband,
38    decode_single_packet_passband_with_sync, decode_single_packet_passband_with_sync_rate,
39    diagnose_passband_window, diagnose_passband_window_with_sync,
40    diagnose_passband_window_with_sync_rate, encode_payload, encode_single_packet_passband,
41    encode_single_packet_passband_body, recover_decided_packet_bytes_passband_with_sync,
42    recover_decided_packet_bytes_passband_with_sync_rate,
43};
44pub use packet::{inspect_packet_bytes, PacketParseAttempt};
45pub use plots::{save_channel_compare_png, save_constellation_comparison_png};
46pub use rustfft::num_complex::Complex32;
47pub use spectrogram::{
48    save_spectrogram_png, save_spectrogram_png_with_options, SpectrogramOptions, SpectrogramWindow,
49};
50pub use wav_io::{load_wav_mono_f32, save_wav_mono_i16};
51
52// vim: set ts=4 sw=4 et: