|
|
|
# SCPI parser
|
|
|
|
|
|
|
|
This library provides a simple ("KISS") SCPI implementation for embedded devices (instruments).
|
|
|
|
|
|
|
|
The implementation is not 100% complete, but it's sufficient for basic SCPI communication.
|
|
|
|
|
|
|
|
## What's supported
|
|
|
|
|
|
|
|
- The hierarchical header model (commands with colon)
|
|
|
|
- Long and short header variants (eg. `SYSTem?`)
|
|
|
|
- Easy configuration with one const array of structs and callback functions (see `main.c`)
|
|
|
|
- Semicolon for chaining commands on the same level
|
|
|
|
- String, Int, Float, Bool arguments
|
|
|
|
- Block data argument with callback each N received bytes (configurable)
|
|
|
|
- Status Register model
|
|
|
|
- Error queue including error messages from the SCPI spec
|
|
|
|
- All mandatory SCPI commands (headers) are implemented as built-ins
|
|
|
|
|
|
|
|
Built-in commands can be overriden in user command array.
|
|
|
|
|
|
|
|
See main.c for example of how to use the library.
|
|
|
|
|
|
|
|
## What is missing
|
|
|
|
|
|
|
|
- <s>Setting error type flags in the ESR when error is added to queue</s>
|
|
|
|
- There may be some bugs in the status registers (not tested much)
|
|
|
|
- Character data argument ("string without quotes", enum-like)
|
|
|
|
- Number units and metric suffixes (k,M,G,m,u,n)
|
|
|
|
- DEF, MIN, MAX, INF, NINF argument values for numbers
|
|
|
|
|
|
|
|
Support for units and "constants" (DEF etc) in numeric fields will need some larger changes to the numeric parser and `SCPI_argval_t`.
|
|
|
|
|
|
|
|
Feel free to propose a pull request implementing any missing features.
|