[package]
edition = "2024"
rust-version = "1.96"
name = "canboat"
version = "9.1.0"
authors = ["Kees Verruijt <kees@verruijt.net>"]
build = "build.rs"
exclude = ["parity/"]
autolib = false
autobins = false
autoexamples = false
autotests = false
autobenches = false
description = "NMEA 2000 decoding, encoding and live-bus access: the CANboat PGN database as a library, plus the canboat CLI (convert / interface / server / tui)."
homepage = "https://canboat.github.io/canboat"
readme = "README.md"
keywords = [
"nmea2000",
"nmea",
"canbus",
"marine",
"j1939",
]
categories = [
"parser-implementations",
"encoding",
"hardware-support",
"command-line-utilities",
]
license = "Apache-2.0"
repository = "https://github.com/canboat/canboat"
resolver = "2"
[package.metadata.docs.rs]
no-default-features = true
features = [
"decode",
"io",
"raw",
"raw-usb",
"node",
"bridge",
"mdns",
"nmea0183",
"ais",
"json-input",
]
[features]
ais = ["decode"]
bridge = [
"io",
"node",
"dep:anyhow",
"dep:serde",
"dep:serde_json",
"dep:world_magnetic_model",
]
cli = [
"decode",
"io",
"node",
"bridge",
"nmea0183",
"ais",
"json-input",
"dep:clap",
"dep:env_logger",
"dep:anyhow",
"dep:serde",
"dep:serde_json",
"dep:tokio",
"dep:crossterm",
"dep:ratatui",
"dep:futures",
"dep:chrono",
"dep:indexmap",
"usb",
]
decode = [
"dep:thiserror",
"dep:smallvec",
"dep:indexmap",
"dep:itoa",
]
default = [
"cli",
"mdns",
]
io = [
"raw",
"dep:flate2",
"dep:tar",
"dep:libc",
]
json-input = [
"decode",
"dep:serde_json",
"dep:anyhow",
"dep:chrono",
]
mdns = [
"bridge",
"dep:mdns-sd",
]
nmea0183 = ["decode"]
node = ["decode"]
raw = [
"decode",
"dep:serialport",
"dep:socket2",
"dep:socketcan",
"dep:libc",
]
raw-usb = [
"raw",
"dep:nusb",
]
usb = [
"io",
"raw-usb",
]
[lib]
name = "canboat"
path = "src/lib.rs"
[[bin]]
name = "canboat"
path = "src/main.rs"
required-features = ["cli"]
[[test]]
name = "api_demo"
path = "tests/api_demo.rs"
[[test]]
name = "convert_formats"
path = "tests/convert_formats.rs"
[[test]]
name = "format_message"
path = "tests/format_message.rs"
[[test]]
name = "golden"
path = "tests/golden.rs"
[[test]]
name = "live_output"
path = "tests/live_output.rs"
[[test]]
name = "read_api"
path = "tests/read_api.rs"
[dependencies.anyhow]
version = "1"
optional = true
[dependencies.chrono]
version = "0.4"
features = ["clock"]
optional = true
default-features = false
[dependencies.clap]
version = "4"
features = [
"derive",
"wrap_help",
]
optional = true
[dependencies.crossterm]
version = "0.29"
features = ["event-stream"]
optional = true
[dependencies.env_logger]
version = "0.11"
features = [
"humantime",
"auto-color",
]
optional = true
default-features = false
[dependencies.flate2]
version = "1"
optional = true
[dependencies.futures]
version = "0.3"
optional = true
[dependencies.indexmap]
version = "2"
optional = true
[dependencies.itoa]
version = "1"
optional = true
[dependencies.log]
version = "0.4"
[dependencies.mdns-sd]
version = "0.21"
features = ["logging"]
optional = true
default-features = false
[dependencies.nusb]
version = "0.2.7"
optional = true
[dependencies.ratatui]
version = "0.30"
optional = true
[dependencies.serde]
version = "1"
features = ["derive"]
optional = true
[dependencies.serde_json]
version = "1"
features = ["preserve_order"]
optional = true
[dependencies.serialport]
version = "4"
optional = true
default-features = false
[dependencies.smallvec]
version = "1"
features = ["union"]
optional = true
[dependencies.socket2]
version = "0.6"
features = ["all"]
optional = true
[dependencies.tar]
version = "0.4"
optional = true
[dependencies.thiserror]
version = "2"
optional = true
[dependencies.tokio]
version = "1"
features = [
"rt",
"rt-multi-thread",
"io-util",
"macros",
"sync",
"net",
"time",
"fs",
]
optional = true
[dependencies.world_magnetic_model]
version = "1.2025.0"
optional = true
[build-dependencies.vergen-gitcl]
version = "10"
default-features = false
[target.'cfg(target_os = "linux")'.dependencies.socketcan]
version = "4"
optional = true
[target."cfg(unix)".dependencies.libc]
version = "0.2"
optional = true