[package]
name = "peat-btle"
version = "0.3.2"
edition = "2021"
authors = ["Kit Plummer <kitplummer@defenseunicorns.com>"]
license = "Apache-2.0"
description = "Bluetooth Low Energy mesh transport for Peat Protocol"
repository = "https://github.com/defenseunicorns/peat-btle"
keywords = ["bluetooth", "ble", "mesh", "peat", "tactical"]
categories = ["network-programming", "embedded"]
[lib]
crate-type = ["rlib", "cdylib"]
[features]
default = ["std"]
std = ["thiserror/std", "uuid/std"]
transport-only = ["std"]
mesh-translator = [
"std",
"dep:peat-mesh",
"dep:serde",
"dep:serde_json",
"dep:anyhow",
"dep:postcard",
"dep:tracing",
]
legacy-chat = []
uniffi = ["dep:uniffi"]
linux = ["dep:bluer", "dep:tokio", "dep:tokio-stream"]
android = ["uniffi", "dep:tokio", "dep:android_logger"]
macos = ["dep:objc2", "dep:block2", "dep:tokio", "dep:objc2-foundation", "dep:objc2-core-bluetooth"]
ios = ["dep:objc2", "dep:block2", "dep:tokio", "dep:objc2-foundation", "dep:objc2-core-bluetooth"]
windows = ["dep:windows", "dep:tokio"]
embedded = []
esp32 = ["embedded", "std", "dep:esp-idf-svc", "dep:esp-idf-hal"]
coded-phy = []
extended-adv = []
[dependencies]
async-trait = "0.1"
uuid = { version = "1.11", default-features = false }
bitflags = "2.6"
log = "0.4"
thiserror = { version = "2.0", default-features = false }
spin = { version = "0.9", default-features = false, features = ["rwlock"] }
chacha20poly1305 = "0.10"
hkdf = "0.12"
sha2 = "0.10"
rand_core = { version = "0.6", features = ["getrandom"] }
x25519-dalek = { version = "2.0", features = ["static_secrets"] }
ed25519-dalek = { version = "2.1", features = ["rand_core"] }
blake3 = "1.5"
hashbrown = "0.15"
uniffi = { version = "0.31", optional = true }
tokio = { version = "1.42", features = ["sync", "time", "macros", "rt-multi-thread"], optional = true }
bluer = { version = "0.17", features = ["bluetoothd"], optional = true }
tokio-stream = { version = "0.1", optional = true }
android_logger = { version = "0.14", optional = true }
objc2 = { version = "0.5", optional = true }
block2 = { version = "0.5", optional = true }
objc2-foundation = { version = "0.2", features = ["NSRunLoop", "NSDate", "NSString", "NSObjCRuntime"], optional = true }
objc2-core-bluetooth = { version = "0.2", features = ["all"], optional = true }
windows = { version = "0.58", features = [
"Devices_Bluetooth",
"Devices_Bluetooth_Advertisement",
"Devices_Bluetooth_GenericAttributeProfile",
"Foundation",
"Foundation_Collections",
"Storage_Streams",
"implement",
], optional = true }
esp-idf-svc = { version = "0.50", optional = true }
esp-idf-hal = { version = "0.45", optional = true }
peat-mesh = { version = "=0.9.0-rc.4", default-features = false, optional = true }
serde = { version = "1", features = ["derive"], optional = true }
serde_json = { version = "1", optional = true }
anyhow = { version = "1", optional = true }
postcard = { version = "1", features = ["alloc"], optional = true }
tracing = { version = "0.1", optional = true }
[dev-dependencies]
tokio-test = "0.4"
env_logger = "0.11"
tokio = { version = "1.42", features = ["rt-multi-thread", "macros", "signal"] }
base64 = "0.22"
peat-lite = "0.2.0"
[build-dependencies]
uniffi = { version = "0.31", features = ["build"] }
[[example]]
name = "range_test_node_macos"
required-features = ["macos"]
[package.metadata.docs.rs]
features = ["linux"]