[package]
name = "satrs"
version = "0.3.0-alpha.3"
edition = "2024"
rust-version = "1.85.0"
authors = ["Robin Mueller <muellerr@irs.uni-stuttgart.de>"]
description = "A library collection to build software for remote systems"
homepage = "https://github.com/us-irs/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]
satrs-shared = { version = "0.2", path = "../satrs-shared" }
spacepackets = { version = "0.17", git = "https://egit.irs.uni-stuttgart.de/rust/spacepackets.git", default-features = false }

delegate = "0.13"
paste = "1"
derive-new = "0.7"
num_enum = { version = "0.7", default-features = false }
cobs = { version = "0.5", default-features = false }
thiserror = { version = "2", default-features = false }

hashbrown = { version = "0.16", optional = true }
static_cell = { version = "2" }
heapless = { version = "0.9", optional = true }
dyn-clone = { version = "1", optional = true }
downcast-rs = { version = "2", default-features = false, optional = true }
bus = { version = "2.2", optional = true }
crossbeam-channel = { version = "0.5", default-features = false, optional = true }
postcard = { version = "1", features = ["alloc"] }
serde = { version = "1", default-features = false, optional = true }
socket2 = { version = "0.6", features = ["all"], optional = true }
arbitrary-int = "2"
mio = { version = "1", features = ["os-poll", "net"], optional = true }
defmt = { version = "1", 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", "heapless"]
std = [
    "downcast-rs/std",
    "alloc",
    "bus",
    "crossbeam-channel/std",
    "serde/std",
    "spacepackets/std",
    "num_enum/std",
    "thiserror/std",
    "socket2",
    "mio"
]
alloc = [
    "serde/alloc",
    "cobs/alloc",
    "spacepackets/alloc",
    "hashbrown",
    "dyn-clone",
    "downcast-rs"
]
serde = ["dep:serde", "spacepackets/serde", "satrs-shared/serde"]
crossbeam = ["crossbeam-channel"]
defmt = ["dep:defmt", "spacepackets/defmt"]
test_util = []

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