[package] name = "roboplc" version = "0.4.6" edition = "2021" authors = ["Serhij S. "] license = "Apache-2.0" description = "Framework for PLCs and real-time micro-services" repository = "https://github.com/roboplc/roboplc" keywords = ["realtime", "robots", "plc", "industrial"] readme = "README.md" autoexamples = false [package.metadata.docs.rs] features = ["full", "eva-common/openssl-no-fips"] [package.metadata.playground] features = ["full", "eva-common/openssl-no-fips"] [dependencies] binrw = "0.14.0" bytemuck = "1.17.1" bytes = "1.7.1" bma-ts = { version = "0.1", features = ["serde"] } colored = "1" libc = "0.2.153" nix = { version = "0.27", features = ["signal"] } object-id = "0.1.3" oneshot = { version = "0.1.6", default-features = false, features = ["std"] } pin-project = "1.1.5" rmodbus = { version = "0.9.4", optional = true } roboplc-derive = { version = "0.3" } serde = { version = "1.0", features = ["derive", "rc"] } serial = "0.4.0" sysinfo = "0.29" thiserror = "1.0.57" tracing = "0.1.40" signal-hook = "0.3.17" eva-common = { version = "0.3.71", features = ["events", "payload", "common-payloads", "acl"], optional = true } eva-sdk = { version = "0.3.49", features = ["controller"], optional = true } busrt = { version = "0.4.9", features = ["rpc", "ipc"], optional = true } tokio = { version = "1.36.0", optional = true } hostname = { version = "0.3.1", optional = true } env_logger = "0.10" log = "0.4.21" metrics-exporter-prometheus = { version = "0.14.0", optional = true, default-features = false, features = ["http-listener"] } metrics-exporter-scope = { version = "0.1.3", default-features = false, features = ["msrv"], optional = true } metrics = { version = "0.22.3", optional = true } snmp = { version = "0.2.2", optional = true } rtsc = "0.3" rvideo = { version = "0.5", optional = true, default-features = false } rflow = { version = "0.1", optional = true, default-features = false } once_cell = { version = "1.19.0", optional = true } parking_lot = { version = "0.12.3", optional = true } parking_lot_rt = { version = "0.12.1", optional = true } [target.'cfg(windows)'.dependencies] parking_lot_rt = { version = "0.12.1" } [features] eapi = ["eva-common", "eva-sdk", "busrt", "tokio", "hostname", "once_cell"] pipe = ["tokio/process", "tokio/io-util", "tokio/macros", "tokio/rt", "tokio/time"] rvideo = ["dep:rvideo"] rflow = ["dep:rflow"] modbus = ["rmodbus"] openssl-vendored = ["busrt/openssl-vendored", "eva-common/openssl-vendored"] metrics = ["dep:metrics", "metrics-exporter-prometheus", "metrics-exporter-scope" , "tokio"] async = ["dep:parking_lot_rt"] full = ["eapi", "modbus", "metrics", "pipe", "rvideo", "rflow", "async"] locking-default = ["dep:parking_lot", "rtsc/parking_lot", "rvideo?/locking-default", "rflow?/locking-default"] locking-rt = ["dep:parking_lot_rt", "rvideo?/locking-rt", "rflow?/locking-rt"] locking-rt-safe = ["rvideo?/locking-rt-safe", "rflow?/locking-rt-safe"] default = ["locking-default"] [dev-dependencies] insta = "1.36.1" log = "0.4.21" tokio = { version = "=1.36.0", features = ["rt", "macros", "time"] } tokio-util = "=0.7.11" tracing = { version = "0.1.40", features = ["log"] } [[example]] name = "modbus-master" path = "examples/modbus-master.rs" required-features = ["modbus"] [[example]] name = "modbus-slave" path = "examples/modbus-slave.rs" required-features = ["modbus"] [[example]] name = "raw-udp" path = "examples/raw-udp.rs" [[example]] name = "shutdown" path = "examples/shutdown.rs" [[example]] name = "shutdown-custom" path = "examples/shutdown-custom.rs" [[example]] name = "pipe" path = "examples/pipe.rs" required-features = ["pipe"] [[example]] name = "rflow" path = "examples/rflow.rs" required-features = ["rflow"] [[example]] name = "eapi" path = "examples/eapi.rs" required-features = ["eapi"] [[example]] name = "snmp-modbus" path = "examples/snmp-modbus.rs" required-features = ["modbus", "snmp"]