# scpi-rs
![Quickstart](https://github.com/Atmelfan/scpi-rs/workflows/Quickstart/badge.svg)
![Fuzzing](https://github.com/Atmelfan/scpi-rs/workflows/Fuzzing/badge.svg)
[![codecov](https://codecov.io/gh/Atmelfan/scpi-rs/branch/master/graph/badge.svg)](https://codecov.io/gh/Atmelfan/scpi-rs)
[![](http://meritbadge.herokuapp.com/scpi)](https://crates.io/crates/scpi)
[![](https://img.shields.io/github/license/Atmelfan/scpi-rs)](https://img.shields.io/github/license/Atmelfan/scpi-rs)
These crates attempts to implement the IEE488.2 / SCPI protocol commonly used by measurement instruments and tools.
* [SCPI-1999](http://www.ivifoundation.org/docs/scpi-99.pdf)
* [IEEE 488.2](http://dx.doi.org/10.1109/IEEESTD.2004.95390) *Non-free standard, SCPI-1999 above repeats most of the important stuff*
## Scope
The crate does not support any transport layer, it only reads ascii-strings (`[u8]`) and writes ascii responses.
It does not implement any higher level functions/error handling other than SCPI parsing and mandated registers/commands(optional).
## Project organisation:
* `scpi` - SCPI/488.2 parser and command tree library.
* `scpi-contrib` - Contribution library, provides default implementations for mandatory commands and abstractions for SCPI subsystems.
* `scpi-derive` - Procedural macro support library, creates enums understood by Scpi (See ScpiEnum) and some internal library stuff.
## Getting started
Look at the examples in [`scpi`](https://github.com/Atmelfan/scpi-rs/tree/master/scpi/examples) or [`scpi-contrib`](https://github.com/Atmelfan/scpi-rs/tree/master/scpi-contrib/examples).
## Contribution
Contributions are welcome in the form of pull request, issues or examples are welcome.
# License
This project is licensed under the following licenses:
* Apache version 2 - See [LICENSE-APACHE](./LICENSE-APACHE)
* MIT - See [LICENSE-MIT](./LICENSE-MIT)