[package]
name = "satrs"
version = "0.2.1"
edition = "2021"
rust-version = "1.82.0"
authors = ["Robin Mueller <muellerr@irs.uni-stuttgart.de>"]
description = "A framework to build software for remote systems"
homepage = "https://absatsw.irs.uni-stuttgart.de/projects/sat-rs/"
repository = "https://egit.irs.uni-stuttgart.de/rust/sat-rs"
license = "Apache-2.0"
keywords = ["no-std", "space", "aerospace"]
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
categories = ["aerospace", "aerospace::space-protocols", "no-std", "hardware-support", "embedded"]

[dependencies]
delegate = ">0.7, <=0.13"
paste = "1"
derive-new = ">=0.6, <=0.7"
smallvec = "1"
crc = "3"

[dependencies.satrs-shared]
version = ">=0.1.3, <=0.2"

[dependencies.num_enum]
version = ">0.5, <=0.7"
default-features = false

[dependencies.spacepackets]
version = "0.13"
default-features = false

[dependencies.cobs]
version = "0.3"
default-features = false

[dependencies.num-traits]
version = "0.2"
default-features = false

[dependencies.dyn-clone]
version = "1"
optional = true

[dependencies.hashbrown]
version = ">=0.14, <=0.15"
optional = true

[dependencies.heapless]
version = "0.8"
optional = true

[dependencies.downcast-rs]
version = "2"
default-features = false
optional = true

[dependencies.bus]
version = "2.2"
optional = true

[dependencies.crossbeam-channel]
version= "0.5"
default-features = false
optional = true

[dependencies.thiserror]
version = "2"
default-features = false

[dependencies.serde]
version = "1"
default-features = false
optional = true

[dependencies.socket2]
version = "0.5.4"
features = ["all"]
optional = true

[dependencies.mio]
version = "1"
features = ["os-poll", "net"]
optional = true

[dependencies.defmt]
version = "0.3"
optional = true

[dev-dependencies]
serde = "1"
zerocopy = "0.8"
once_cell = "1"
serde_json = "1"
rand = "0.9"
tempfile = "3"

[dev-dependencies.postcard]
version = "1"

[features]
default = ["std"]
std = [
    "downcast-rs/std",
    "alloc",
    "bus",
    "crossbeam-channel/std",
    "serde/std",
    "spacepackets/std",
    "num_enum/std",
    "thiserror/std",
    "socket2",
    "mio"
]
alloc = [
    "serde/alloc",
    "spacepackets/alloc",
    "hashbrown",
    "dyn-clone",
    "downcast-rs"
]
serde = ["dep:serde", "spacepackets/serde", "satrs-shared/serde"]
crossbeam = ["crossbeam-channel"]
heapless = ["dep:heapless"]
defmt = ["dep:defmt", "spacepackets/defmt"]
test_util = []

[package.metadata.docs.rs]
all-features = true
rustdoc-args = ["--generate-link-to-definition"]

[[test]]
name = "event_test"
path = "tests/pus_events.rs"
required-features = ["test_util"]