# epics-ca
Rust bindings for [EPICS](https://epics-controls.org/) Channel Access protocol.
## Requrements
This crate requires built [`epics-base`](https://github.com/epics-base/epics-base) or at least `ca` library.
During build you need to provide a path to a static library (`libca.a` or `ca.lib`). This could be done either by:
+ setting `EPICS_BASE` env variable that contains path to `epics-base` root, or
+ adding to `RUSTFLAGS` a path where static library file is stored (e.g. `-L /opt/epics-base/lib/linux-x86_64`).
At run time the crate also needs a dynamic library (`libca.so` or `ca.dll`).
You need to provide path to its location (e.g. via `LD_LIBRARY_PATH`) or put it where it could be found automatically (e.g. along with executable).
## Testing
To run tests you need to have dummy IOC running (located in `ioc` dir):
+ Set appropriate `EPICS_BASE` path in `configure/RELEASE`.
+ Build with `make`.
+ Go to `iocBoot/iocTest/` and run script `st.cmd` and don't stop it.
In separate shell run `cargo test`.
## License
Licensed under either of
* Apache License, Version 2.0 ([LICENSE-APACHE](LICENSE-APACHE) or http://www.apache.org/licenses/LICENSE-2.0)
* MIT license ([LICENSE-MIT](LICENSE-MIT) or http://opensource.org/licenses/MIT)
at your option.
### Contribution
Unless you explicitly state otherwise, any contribution intentionally submitted
for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any
additional terms or conditions.