[package]
edition = "2024"
rust-version = "1.85"
name = "ethercrab"
version = "0.7.0"
build = false
exclude = [
"dumps",
"doc",
"NOTES.md",
"SPECNOTES.md",
]
autolib = false
autobins = false
autoexamples = false
autotests = false
autobenches = false
description = "A pure Rust EtherCAT MainDevice supporting std and no_std environments"
documentation = "https://docs.rs/ethercrab"
readme = "README.md"
keywords = [
"ethercat",
"beckhoff",
"automation",
"fieldbus",
"robotics",
]
categories = [
"science::robotics",
"no-std",
"network-programming",
]
license = "MIT OR Apache-2.0"
repository = "https://github.com/ethercrab-rs/ethercrab"
resolver = "2"
[package.metadata.docs.rs]
default-target = "x86_64-unknown-linux-gnu"
targets = [
"x86_64-unknown-linux-gnu",
"x86_64-pc-windows-gnu",
]
[features]
default = ["std"]
defmt = [
"dep:defmt",
"embedded-io-async/defmt-03",
"heapless/defmt-03",
"ethercrab-wire/defmt-03",
]
log = ["dep:log"]
serde = [
"dep:serde",
"bitflags/serde",
]
std = [
"dep:pnet_datalink",
"dep:async-io",
"log",
"futures-lite/std",
"embedded-io-async/std",
"ethercrab-wire/std",
"spin/std",
]
xdp = ["dep:xsk-rs"]
[lib]
name = "ethercrab"
path = "src/lib.rs"
[[example]]
name = "dc"
path = "examples/dc.rs"
required-features = ["std"]
[[example]]
name = "dc-lan9252-groups"
path = "examples/dc-lan9252-groups.rs"
[[example]]
name = "discover"
path = "examples/discover.rs"
[[example]]
name = "dump-eeprom"
path = "examples/dump-eeprom.rs"
[[example]]
name = "ek1100"
path = "examples/ek1100.rs"
required-features = ["std"]
[[example]]
name = "el3702-oversampling"
path = "examples/el3702-oversampling.rs"
[[example]]
name = "io-uring"
path = "examples/io-uring.rs"
[[example]]
name = "multiple-groups"
path = "examples/multiple-groups.rs"
required-features = ["std"]
[[example]]
name = "pdi-and-sdo"
path = "examples/pdi-and-sdo.rs"
[[example]]
name = "performance"
path = "examples/performance.rs"
[[example]]
name = "release"
path = "examples/release.rs"
[[example]]
name = "sdo-info"
path = "examples/sdo-info.rs"
[[example]]
name = "smol-io-uring"
path = "examples/smol-io-uring.rs"
[[example]]
name = "windows"
path = "examples/windows.rs"
[[example]]
name = "xdp"
path = "examples/xdp.rs"
required-features = [
"std",
"xdp",
]
[[test]]
name = "init-must-be-send"
path = "tests/init-must-be-send.rs"
[[test]]
name = "replay-dc"
path = "tests/replay-dc.rs"
[[test]]
name = "replay-ek1100-alias-address"
path = "tests/replay-ek1100-alias-address.rs"
[[test]]
name = "replay-ek1100-el2828-el2889"
path = "tests/replay-ek1100-el2828-el2889.rs"
[[test]]
name = "replay-ek1914-el3004-configure"
path = "tests/replay-ek1914-el3004-configure.rs"
[[test]]
name = "replay-ek1914-el3004-mailbox"
path = "tests/replay-ek1914-el3004-mailbox.rs"
[[test]]
name = "replay-ek1914-no-complete-access"
path = "tests/replay-ek1914-no-complete-access.rs"
[[test]]
name = "replay-ek1914-segmented-upload"
path = "tests/replay-ek1914-segmented-upload.rs"
[[test]]
name = "replay-issue-255"
path = "tests/replay-issue-255.rs"
[[test]]
name = "util"
path = "tests/util.rs"
[[bench]]
name = "frame"
path = "benches/frame.rs"
harness = false
[[bench]]
name = "pdu_loop"
path = "benches/pdu_loop.rs"
harness = false
[dependencies.async-io]
version = "2.0.0"
optional = true
[dependencies.atomic-waker]
version = "1.1.2"
[dependencies.atomic_enum]
version = "0.3.0"
[dependencies.bitflags]
version = "2.9.0"
[dependencies.crc]
version = "3.2.1"
default-features = false
[dependencies.defmt]
version = "0.3.5"
optional = true
[dependencies.embassy-time]
version = "0.4.0"
[dependencies.embedded-io-async]
version = "0.6.0"
default-features = false
[dependencies.ethercrab-wire]
version = "0.3.0"
[dependencies.futures-lite]
version = "2.0.0"
default-features = false
[dependencies.heapless]
version = "0.8.0"
[dependencies.lock_api]
version = "0.4.13"
[dependencies.log]
version = "0.4.27"
optional = true
default-features = false
[dependencies.sealed]
version = "0.6.0"
[dependencies.serde]
version = "1.0.190"
features = ["derive"]
optional = true
[dependencies.smlang]
version = "0.8.0"
[dependencies.spin]
version = "0.10.0"
features = [
"lock_api",
"rwlock",
]
default-features = false
[dev-dependencies.arbitrary]
version = "1.3.1"
features = ["derive"]
[dev-dependencies.cassette]
version = "0.3.0"
[dev-dependencies.core_affinity]
version = "0.8.1"
[dev-dependencies.criterion]
version = "0.5.1"
features = ["cargo_bench_support"]
default-features = false
[dev-dependencies.csv]
version = "1.3.0"
[dev-dependencies.env_logger]
version = "0.11.6"
[dev-dependencies.heckcheck]
version = "2.0.1"
[dev-dependencies.pcap-file]
version = "2.0.0"
[dev-dependencies.pretty_assertions]
version = "1.4.0"
[dev-dependencies.quanta]
version = "0.12.3"
[dev-dependencies.savefile]
version = "0.18.5"
default-features = false
[dev-dependencies.savefile-derive]
version = "0.18.5"
default-features = false
[dev-dependencies.serde]
version = "1.0.190"
features = ["derive"]
default-features = false
[dev-dependencies.signal-hook]
version = "0.3.17"
[dev-dependencies.simple_logger]
version = "5.0.0"
default-features = false
[dev-dependencies.smol]
version = "2.0.0"
[dev-dependencies.smoltcp]
version = "0.12.0"
features = [
"medium-ethernet",
"proto-ipv4",
"socket-raw",
]
default-features = false
[dev-dependencies.spin_sleep]
version = "1.2.1"
[dev-dependencies.ta]
version = "0.5.0"
[dev-dependencies.thread-priority]
version = "1.2.0"
[dev-dependencies.tokio]
version = "1.33.0"
features = [
"rt-multi-thread",
"macros",
"sync",
"time",
]
[target.'cfg(target_os = "linux")'.dependencies.io-uring]
version = "0.7.4"
[target.'cfg(target_os = "linux")'.dependencies.slab]
version = "0.4.12"
[target.'cfg(target_os = "linux")'.dependencies.smallvec]
version = "1.13.1"
features = ["const_generics"]
[target.'cfg(target_os = "linux")'.dependencies.timerfd]
version = "1.5.0"
[target.'cfg(target_os = "linux")'.dependencies.xsk-rs]
version = "0.8.0"
optional = true
[target.'cfg(target_os = "windows")'.dependencies.pcap]
version = "2.2.0"
[target.'cfg(target_os = "windows")'.dependencies.pnet_datalink]
version = "0.35.0"
features = ["std"]
optional = true
[target."cfg(unix)".dependencies.libc]
version = "0.2.180"
[target."cfg(unix)".dependencies.nix]
version = "0.31.1"
features = ["net"]
[profile.profiling]
debug = 2
inherits = "release"