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

[dependencies]
delegate = ">0.7, <=0.10"
paste = "1"
# TODO: Remove this as soon as the image including the description was moved to the satrs-book.
embed-doc-image = "0.1"

[dependencies.smallvec]
version = "1"

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

[dependencies.crc]
version = "3"

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

[dependencies.hashbrown]
version = "0.14"
optional = true

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

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

[dependencies.downcast-rs]
version = "1.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 = "1"
optional = true

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

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

[dependencies.spacepackets]
version = "0.7.0-beta.4"
default-features = false
# git = "https://egit.irs.uni-stuttgart.de/rust/spacepackets.git"
# rev = "297cfad22637d3b07a1b27abe56d9a607b5b82a7"

[dependencies.cobs]
git = "https://github.com/robamu/cobs.rs.git"
version = "0.2.3"
branch = "all_features"
default-features = false

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

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

[features]
default = ["std"]
std = [
    "downcast-rs/std",
    "alloc",
    "bus",
    "postcard/use-std",
    "crossbeam-channel/std",
    "serde/std",
    "spacepackets/std",
    "num_enum/std",
    "thiserror",
    "socket2"
]
alloc = [
    "serde/alloc",
    "spacepackets/alloc",
    "hashbrown",
    "dyn-clone",
    "downcast-rs"
]
serde = ["dep:serde", "spacepackets/serde"]
crossbeam = ["crossbeam-channel"]
heapless = ["dep:heapless"]
doc-images = []

[package.metadata.docs.rs]
all-features = true
rustdoc-args = ["--cfg", "doc_cfg"]