SCPI parser and status register model implementation (device side) written in C
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
Ondřej Hruška 50ff6322f4 readme 8 years ago
source properly propagate status registers when enable registers are changed etc 8 years ago
.gitignore Added some more builtins, cleaning 8 years ago
LICENSE Initial commit 9 years ago
Makefile restructured 8 years ago
README.md readme 8 years ago
errorgen.php error table and error string building function added 8 years ago
main.c support for custom errors & properly set SESR error type flags 8 years ago
scpi.pro restructured 8 years ago
scpi.pro.user support for custom errors & properly set SESR error type flags 8 years ago
style.astylerc initial 9 years ago

README.md

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

  • Setting error type flags in the ESR when error is added to queue
  • 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.