[package]
edition = "2024"
rust-version = "1.96"
name = "yodel"
version = "0.1.4"
build = false
exclude = [
"/reference",
"/corpus",
"/scratch",
"*.wav",
"tests/*.wav",
]
autolib = false
autobins = false
autoexamples = false
autotests = false
autobenches = false
description = "Bell 202 AFSK (1200/2200 Hz) software modem: no-std, allocation-free, streaming modulator"
documentation = "https://docs.rs/yodel"
readme = "README.md"
keywords = [
"afsk",
"bell202",
"modem",
"no-std",
"embedded",
]
categories = [
"embedded",
"no-std",
"encoding",
"multimedia::audio",
]
license = "MIT OR Apache-2.0"
repository = "https://github.com/cgorski/yodel"
[package.metadata.docs.rs]
all-features = true
rustdoc-args = [
"--cfg",
"docsrs",
]
[features]
alloc = []
aprs = ["ax25"]
async = [
"std",
"tnc",
"kiss",
"dep:tokio",
"dep:futures-core",
"dep:tokio-stream",
]
audio = [
"std",
"dep:cpal",
]
ax25 = ["nrzi"]
capture = [
"std",
"dep:cpal",
]
cli = [
"wav",
"tnc",
"micE",
"kiss",
"fx25",
"il2p",
"wspr",
"ft8",
"m17",
"ptt",
"audio",
"dep:clap",
]
default = [
"mod",
"demod",
]
demod = []
digipeat = ["ax25"]
embassy = [
"tnc",
"dep:embassy-time",
]
ft8 = []
fx25 = []
g3ruh = []
il2p = ["ax25"]
kiss = []
m17 = []
micE = ["aprs"]
mod = []
nrzi = []
ptt = [
"std",
"dep:serialport",
]
std = ["alloc"]
tnc = [
"aprs",
"mod",
"demod",
]
wav = [
"std",
"dep:hound",
]
wspr = []
[lib]
name = "yodel"
path = "src/lib.rs"
[[bin]]
name = "yodel"
path = "src/bin/yodel/main.rs"
required-features = ["cli"]
[[example]]
name = "aprs_is"
path = "examples/aprs_is.rs"
required-features = [
"std",
"aprs",
]
[[example]]
name = "aprs_offline"
path = "examples/aprs_offline.rs"
required-features = [
"std",
"aprs",
]
[[example]]
name = "aprs_offline_alloc"
path = "examples/aprs_offline_alloc.rs"
required-features = [
"std",
"alloc",
"aprs",
]
[[example]]
name = "balloon_tracker"
path = "examples/balloon_tracker.rs"
required-features = [
"tnc",
"wav",
]
[[example]]
name = "balloon_tracker_baremetal"
path = "examples/balloon_tracker_baremetal.rs"
required-features = ["tnc"]
[[example]]
name = "balloon_tracker_embassy"
path = "examples/balloon_tracker_embassy.rs"
required-features = ["embassy"]
[[example]]
name = "balloon_tracker_rtic"
path = "examples/balloon_tracker_rtic.rs"
required-features = ["tnc"]
[[example]]
name = "balloon_tracker_tokio"
path = "examples/balloon_tracker_tokio.rs"
required-features = [
"async",
"wav",
]
[[example]]
name = "corpus_diff"
path = "examples/corpus_diff.rs"
required-features = [
"std",
"aprs",
]
[[example]]
name = "decode_many_threads"
path = "examples/decode_many_threads.rs"
required-features = [
"tnc",
"wav",
]
[[example]]
name = "decode_many_tokio"
path = "examples/decode_many_tokio.rs"
required-features = ["async"]
[[example]]
name = "decode_pcm_tokio"
path = "examples/decode_pcm_tokio.rs"
required-features = ["async"]
[[example]]
name = "decode_to_log"
path = "examples/decode_to_log.rs"
required-features = [
"tnc",
"wav",
]
[[example]]
name = "decode_wav"
path = "examples/decode_wav.rs"
required-features = [
"tnc",
"wav",
]
[[example]]
name = "digipeater_station"
path = "examples/digipeater_station.rs"
required-features = [
"tnc",
"digipeat",
"wav",
]
[[example]]
name = "embedded_modem"
path = "examples/embedded_modem.rs"
required-features = ["tnc"]
[[example]]
name = "encode_wav"
path = "examples/encode_wav.rs"
required-features = [
"tnc",
"wav",
]
[[example]]
name = "ft8_cycle"
path = "examples/ft8_cycle.rs"
required-features = [
"ft8",
"std",
"wav",
]
[[example]]
name = "il2p_roundtrip"
path = "examples/il2p_roundtrip.rs"
required-features = [
"il2p",
"mod",
"demod",
]
[[example]]
name = "live_capture"
path = "examples/live_capture.rs"
required-features = [
"tnc",
"capture",
]
[[example]]
name = "m17_packet"
path = "examples/m17_packet.rs"
required-features = ["m17"]
[[example]]
name = "throughput"
path = "examples/throughput.rs"
required-features = [
"tnc",
"g3ruh",
"fx25",
]
[[example]]
name = "trigger_reply"
path = "examples/trigger_reply.rs"
required-features = [
"tnc",
"wav",
]
[[example]]
name = "wspr_beacon"
path = "examples/wspr_beacon.rs"
required-features = [
"wspr",
"wav",
]
[[test]]
name = "app_examples"
path = "tests/app_examples.rs"
required-features = [
"tnc",
"alloc",
]
[[test]]
name = "aprs"
path = "tests/aprs.rs"
[[test]]
name = "aprs_differential"
path = "tests/aprs_differential.rs"
[[test]]
name = "aprs_extras"
path = "tests/aprs_extras.rs"
[[test]]
name = "aprsis"
path = "tests/aprsis.rs"
[[test]]
name = "asynk"
path = "tests/asynk.rs"
[[test]]
name = "ax25"
path = "tests/ax25.rs"
[[test]]
name = "benchmark"
path = "tests/benchmark.rs"
[[test]]
name = "ber"
path = "tests/ber.rs"
[[test]]
name = "bounded_latency"
path = "tests/bounded_latency.rs"
[[test]]
name = "cli"
path = "tests/cli.rs"
[[test]]
name = "compressed"
path = "tests/compressed.rs"
[[test]]
name = "coordinate_paths"
path = "tests/coordinate_paths.rs"
[[test]]
name = "corpus_aprs"
path = "tests/corpus_aprs.rs"
[[test]]
name = "coverage_fill"
path = "tests/coverage_fill.rs"
required-features = [
"tnc",
"micE",
"il2p",
]
[[test]]
name = "decoded_laws"
path = "tests/decoded_laws.rs"
[[test]]
name = "demod_normalization"
path = "tests/demod_normalization.rs"
required-features = ["tnc"]
[[test]]
name = "differential"
path = "tests/differential.rs"
[[test]]
name = "digipeat_laws"
path = "tests/digipeat_laws.rs"
[[test]]
name = "edge_cases"
path = "tests/edge_cases.rs"
[[test]]
name = "embassy"
path = "tests/embassy.rs"
[[test]]
name = "equivalence"
path = "tests/equivalence.rs"
required-features = [
"mod",
"demod",
"g3ruh",
]
[[test]]
name = "esp32_examples"
path = "tests/esp32_examples.rs"
[[test]]
name = "false_positives"
path = "tests/false_positives.rs"
[[test]]
name = "ft8"
path = "tests/ft8.rs"
[[test]]
name = "ft8_differential"
path = "tests/ft8_differential.rs"
[[test]]
name = "ft8_rx"
path = "tests/ft8_rx.rs"
required-features = [
"ft8",
"std",
]
[[test]]
name = "fuzz_decode"
path = "tests/fuzz_decode.rs"
[[test]]
name = "fx25"
path = "tests/fx25.rs"
[[test]]
name = "g3ruh"
path = "tests/g3ruh.rs"
[[test]]
name = "geo"
path = "tests/geo.rs"
[[test]]
name = "hdlc_edge"
path = "tests/hdlc_edge.rs"
[[test]]
name = "il2p"
path = "tests/il2p.rs"
[[test]]
name = "il2p_audio"
path = "tests/il2p_audio.rs"
[[test]]
name = "il2p_differential"
path = "tests/il2p_differential.rs"
[[test]]
name = "kiss"
path = "tests/kiss.rs"
[[test]]
name = "m17"
path = "tests/m17.rs"
required-features = ["m17"]
[[test]]
name = "mic_e"
path = "tests/mic_e.rs"
[[test]]
name = "no_alloc"
path = "tests/no_alloc.rs"
[[test]]
name = "noise"
path = "tests/noise.rs"
required-features = [
"mod",
"demod",
]
[[test]]
name = "nrzi"
path = "tests/nrzi.rs"
[[test]]
name = "oracle"
path = "tests/oracle.rs"
required-features = [
"mod",
"demod",
]
[[test]]
name = "rebuild_fidelity"
path = "tests/rebuild_fidelity.rs"
[[test]]
name = "roundtrip"
path = "tests/roundtrip.rs"
required-features = [
"mod",
"demod",
]
[[test]]
name = "roundtrip_laws"
path = "tests/roundtrip_laws.rs"
[[test]]
name = "rs"
path = "tests/rs.rs"
[[test]]
name = "serve"
path = "tests/serve.rs"
[[test]]
name = "snr"
path = "tests/snr.rs"
[[test]]
name = "symbol_from_address"
path = "tests/symbol_from_address.rs"
[[test]]
name = "tnc"
path = "tests/tnc.rs"
[[test]]
name = "type_sizes"
path = "tests/type_sizes.rs"
[[test]]
name = "units"
path = "tests/units.rs"
[[test]]
name = "wspr"
path = "tests/wspr.rs"
[[test]]
name = "wspr_differential"
path = "tests/wspr_differential.rs"
[[test]]
name = "wspr_rx"
path = "tests/wspr_rx.rs"
required-features = [
"wspr",
"std",
]
[dependencies.clap]
version = "4"
features = ["derive"]
optional = true
[dependencies.cpal]
version = "0.16"
optional = true
[dependencies.embassy-time]
version = "0.4"
optional = true
default-features = false
[dependencies.futures-core]
version = "0.3"
optional = true
[dependencies.hound]
version = "3"
optional = true
[dependencies.serialport]
version = "4"
optional = true
default-features = false
[dependencies.tokio]
version = "1"
features = [
"rt",
"sync",
"net",
"io-util",
"io-std",
"fs",
"macros",
]
optional = true
[dependencies.tokio-stream]
version = "0.1"
optional = true
[dev-dependencies.embassy-futures]
version = "0.1"
[dev-dependencies.embassy-time]
version = "0.4"
features = [
"std",
"generic-queue-8",
]
[dev-dependencies.hound]
version = "3"
[dev-dependencies.tokio]
version = "1"
features = [
"macros",
"rt-multi-thread",
"sync",
"net",
"io-util",
"io-std",
"time",
]
[dev-dependencies.tokio-stream]
version = "0.1"
[dev-dependencies.tracing]
version = "0.1"
[dev-dependencies.tracing-subscriber]
version = "0.3"
[lints.rust.unexpected_cfgs]
level = "warn"
priority = 0
check-cfg = ["cfg(docsrs)"]