Skip to main content

epics_rs/
lib.rs

1//! Pure Rust EPICS control system framework.
2//!
3//! This is the umbrella crate that re-exports all epics-rs sub-crates.
4//! Use feature flags to select which modules you need:
5//!
6//! ```toml
7//! [dependencies]
8//! epics-rs = { version = "0.6", features = ["motor", "ad"] }
9//! ```
10//!
11//! ## Features
12//!
13//! | Feature | Description | Default |
14//! |---------|-------------|---------|
15//! | `ca` | Channel Access client & server | yes |
16//! | `pva` | pvAccess client (experimental) | no |
17//! | `bridge` | Record ↔ PVA bridge (QSRV equivalent) | no |
18//! | `asyn` | Async port driver framework | no |
19//! | `motor` | Motor record + SimMotor | no |
20//! | `ad` | areaDetector (core + plugins) | no |
21//! | `calc` | Calc expression engine | always |
22//! | `autosave` | PV save/restore | always |
23//! | `busy` | Busy record | always |
24//! | `std` | Standard records (epid, throttle, timestamp) | no |
25//! | `scaler` | Scaler record (multi-channel counter) | no |
26//! | `full` | Everything | no |
27
28/// Core IOC infrastructure — record system, database, iocsh, types.
29pub use epics_base_rs as base;
30
31/// Channel Access protocol — client and server.
32#[cfg(feature = "ca")]
33pub use epics_ca_rs as ca;
34
35/// pvAccess protocol — client (experimental).
36#[cfg(feature = "pva")]
37pub use epics_pva_rs as pva;
38
39/// Bridge: exposes EPICS records as pvAccess channels (QSRV equivalent).
40#[cfg(feature = "bridge")]
41pub use epics_bridge_rs as bridge;
42
43/// Async port driver framework.
44#[cfg(feature = "asyn")]
45pub use asyn_rs as asyn;
46
47/// Motor record + SimMotor.
48#[cfg(feature = "motor")]
49pub use motor_rs as motor;
50
51/// areaDetector core — NDArray, driver base.
52#[cfg(feature = "ad")]
53pub use ad_core_rs as ad_core;
54
55/// areaDetector plugins — Stats, ROI, FFT, file writers, etc.
56#[cfg(feature = "ad")]
57pub use ad_plugins_rs as ad_plugins;
58
59/// Calc expression engine (re-exported from epics-base-rs).
60pub mod calc {
61    pub use epics_base_rs::calc::*;
62}
63
64/// PV automatic save/restore (re-exported from epics-base-rs).
65pub mod autosave {
66    pub use epics_base_rs::server::autosave::*;
67}
68
69/// Busy record (re-exported from epics-base-rs).
70pub mod busy {
71    pub use epics_base_rs::server::records::busy::*;
72}
73
74/// Standard records (epid, throttle, timestamp) and device support.
75#[cfg(feature = "std")]
76pub use std_rs as std_mod;
77
78/// Scaler record — multi-channel counter with preset and auto-count support.
79#[cfg(feature = "scaler")]
80pub use scaler_rs as scaler;
81
82/// Optics record types and device support (table, monochromator, filters, etc.).
83#[cfg(feature = "optics")]
84pub use optics_rs as optics;