AMU Library 3.0
C/C++ library for communicating with AMU (Aerospace Measurement Unit) devices
Loading...
Searching...
No Matches
parser.c File Reference
#include <ctype.h>
#include <string.h>
#include "config.h"
#include "parser.h"
#include "parser_private.h"
#include "lexer_private.h"
#include "expression.h"
#include "error.h"
#include "constants.h"
#include "utils.h"

Go to the source code of this file.

Macros

#define RESULT_ARRAY(func)
#define PARAM_ARRAY_TEMPLATE(func)

Functions

static size_t writeData (scpi_t *context, const char *data, size_t len)
static int flushData (scpi_t *context)
static size_t writeDelimiter (scpi_t *context)
static size_t writeNewLine (scpi_t *context)
static size_t writeSemicolon (scpi_t *context)
static scpi_bool_t processCommand (scpi_t *context)
static scpi_bool_t findCommandHeader (scpi_t *context, const char *header, int len)
scpi_bool_t SCPI_Parse (scpi_t *context, char *data, int len)
void SCPI_Init (scpi_t *context, const scpi_command_t *def_cmds, scpi_interface_t *interface, const scpi_unit_def_t *units, const char *idn1, const char *idn2, const char *idn3, const char *idn4, char *input_buffer, size_t input_buffer_length, scpi_error_t *error_queue_data, int16_t error_queue_size)
scpi_bool_t SCPI_Input (scpi_t *context, const char *data, int len)
size_t SCPI_ResultCharacters (scpi_t *context, const char *data, size_t len)
static const char * getBasePrefix (int8_t base)
static size_t resultUInt32BaseSign (scpi_t *context, uint32_t val, int8_t base, scpi_bool_t sign)
static size_t resultUInt64BaseSign (scpi_t *context, uint64_t val, int8_t base, scpi_bool_t sign)
size_t SCPI_ResultInt32 (scpi_t *context, int32_t val)
size_t SCPI_ResultUInt32Base (scpi_t *context, uint32_t val, int8_t base)
size_t SCPI_ResultInt64 (scpi_t *context, int64_t val)
size_t SCPI_ResultUInt64Base (scpi_t *context, uint64_t val, int8_t base)
size_t SCPI_ResultFloat (scpi_t *context, float val)
size_t SCPI_ResultDouble (scpi_t *context, double val)
size_t SCPI_ResultText (scpi_t *context, const char *data)
size_t SCPI_ResultError (scpi_t *context, scpi_error_t *error)
size_t SCPI_ResultArbitraryBlockHeader (scpi_t *context, size_t len)
size_t SCPI_ResultArbitraryBlockData (scpi_t *context, const void *data, size_t len)
size_t SCPI_ResultArbitraryBlock (scpi_t *context, const void *data, size_t len)
size_t SCPI_ResultBool (scpi_t *context, scpi_bool_t val)
static void invalidateToken (scpi_token_t *token, char *ptr)
scpi_bool_t SCPI_Parameter (scpi_t *context, scpi_parameter_t *parameter, scpi_bool_t mandatory)
scpi_bool_t SCPI_ParamIsNumber (scpi_parameter_t *parameter, scpi_bool_t suffixAllowed)
static scpi_bool_t ParamSignToUInt32 (scpi_t *context, scpi_parameter_t *parameter, uint32_t *value, scpi_bool_t sign)
static scpi_bool_t ParamSignToUInt64 (scpi_t *context, scpi_parameter_t *parameter, uint64_t *value, scpi_bool_t sign)
scpi_bool_t SCPI_ParamToInt32 (scpi_t *context, scpi_parameter_t *parameter, int32_t *value)
scpi_bool_t SCPI_ParamToUInt32 (scpi_t *context, scpi_parameter_t *parameter, uint32_t *value)
scpi_bool_t SCPI_ParamToInt64 (scpi_t *context, scpi_parameter_t *parameter, int64_t *value)
scpi_bool_t SCPI_ParamToUInt64 (scpi_t *context, scpi_parameter_t *parameter, uint64_t *value)
scpi_bool_t SCPI_ParamToFloat (scpi_t *context, scpi_parameter_t *parameter, float *value)
scpi_bool_t SCPI_ParamToDouble (scpi_t *context, scpi_parameter_t *parameter, double *value)
scpi_bool_t SCPI_ParamFloat (scpi_t *context, void *value, scpi_bool_t mandatory)
scpi_bool_t SCPI_ParamDouble (scpi_t *context, double *value, scpi_bool_t mandatory)
static scpi_bool_t ParamSignUInt32 (scpi_t *context, uint32_t *value, scpi_bool_t mandatory, scpi_bool_t sign)
static scpi_bool_t ParamSignUInt64 (scpi_t *context, uint64_t *value, scpi_bool_t mandatory, scpi_bool_t sign)
scpi_bool_t SCPI_ParamInt32 (scpi_t *context, int32_t *value, scpi_bool_t mandatory)
scpi_bool_t SCPI_ParamUInt32 (scpi_t *context, void *value, scpi_bool_t mandatory)
scpi_bool_t SCPI_ParamInt64 (scpi_t *context, int64_t *value, scpi_bool_t mandatory)
scpi_bool_t SCPI_ParamUInt64 (scpi_t *context, uint64_t *value, scpi_bool_t mandatory)
scpi_bool_t SCPI_ParamCharacters (scpi_t *context, const char **value, size_t *len, scpi_bool_t mandatory)
scpi_bool_t SCPI_ParamArbitraryBlock (scpi_t *context, const char **value, size_t *len, scpi_bool_t mandatory)
scpi_bool_t SCPI_ParamCopyText (scpi_t *context, char *buffer, size_t buffer_len, size_t *copy_len, scpi_bool_t mandatory)
scpi_bool_t SCPI_ParamToChoice (scpi_t *context, scpi_parameter_t *parameter, const scpi_choice_def_t *options, int32_t *value)
scpi_bool_t SCPI_ChoiceToName (const scpi_choice_def_t *options, int32_t tag, const char **text)
scpi_bool_t SCPI_ParamBool (scpi_t *context, scpi_bool_t *value, scpi_bool_t mandatory)
scpi_bool_t SCPI_ParamChoice (scpi_t *context, const scpi_choice_def_t *options, int32_t *value, scpi_bool_t mandatory)
int scpiParser_parseProgramData (lex_state_t *state, scpi_token_t *token)
int scpiParser_parseAllProgramData (lex_state_t *state, scpi_token_t *token, int *numberOfParameters)
int scpiParser_detectProgramMessageUnit (scpi_parser_state_t *state, char *buffer, int len)
scpi_bool_t SCPI_IsCmd (scpi_t *context, const char *cmd)
uint16_t SCPI_CmdTag (scpi_t *context)
scpi_bool_t SCPI_Match (const char *pattern, const char *value, size_t len, bool *query)
scpi_bool_t SCPI_CommandNumbers (scpi_t *context, int32_t *numbers, size_t len, int32_t default_value)
scpi_bool_t SCPI_ParamIsValid (scpi_parameter_t *parameter)
scpi_bool_t SCPI_ParamErrorOccurred (scpi_t *context)
static size_t produceResultArrayBinary (scpi_t *context, const void *array, size_t count, size_t item_size, scpi_array_format_t format)
size_t SCPI_ResultArrayInt8 (scpi_t *context, const int8_t *array, size_t count, scpi_array_format_t format)
size_t SCPI_ResultArrayUInt8 (scpi_t *context, const uint8_t *array, size_t count, scpi_array_format_t format)
size_t SCPI_ResultArrayInt16 (scpi_t *context, const int16_t *array, size_t count, scpi_array_format_t format)
size_t SCPI_ResultArrayUInt16 (scpi_t *context, const uint16_t *array, size_t count, scpi_array_format_t format)
size_t SCPI_ResultArrayInt32 (scpi_t *context, const int32_t *array, size_t count, scpi_array_format_t format)
size_t SCPI_ResultArrayUInt32 (scpi_t *context, const uint32_t *array, size_t count, scpi_array_format_t format)
size_t SCPI_ResultArrayInt64 (scpi_t *context, const int64_t *array, size_t count, scpi_array_format_t format)
size_t SCPI_ResultArrayUInt64 (scpi_t *context, const uint64_t *array, size_t count, scpi_array_format_t format)
size_t SCPI_ResultArrayFloat (scpi_t *context, const float *array, size_t count, scpi_array_format_t format)
size_t SCPI_ResultArrayDouble (scpi_t *context, const double *array, size_t count, scpi_array_format_t format)
scpi_bool_t SCPI_ParamArrayInt32 (scpi_t *context, int32_t *data, size_t i_count, size_t *o_count, scpi_array_format_t format, scpi_bool_t mandatory)
scpi_bool_t SCPI_ParamArrayUInt32 (scpi_t *context, uint32_t *data, size_t i_count, size_t *o_count, scpi_array_format_t format, scpi_bool_t mandatory)
scpi_bool_t SCPI_ParamArrayInt64 (scpi_t *context, int64_t *data, size_t i_count, size_t *o_count, scpi_array_format_t format, scpi_bool_t mandatory)
scpi_bool_t SCPI_ParamArrayUInt64 (scpi_t *context, uint64_t *data, size_t i_count, size_t *o_count, scpi_array_format_t format, scpi_bool_t mandatory)
scpi_bool_t SCPI_ParamArrayFloat (scpi_t *context, float *data, size_t i_count, size_t *o_count, scpi_array_format_t format, scpi_bool_t mandatory)
scpi_bool_t SCPI_ParamArrayDouble (scpi_t *context, double *data, size_t i_count, size_t *o_count, scpi_array_format_t format, scpi_bool_t mandatory)

Macro Definition Documentation

◆ PARAM_ARRAY_TEMPLATE

#define PARAM_ARRAY_TEMPLATE ( func)
Value:
do{\
if (format != SCPI_FORMAT_ASCII) return FALSE;\
for (*o_count = 0; *o_count < i_count; (*o_count)++) {\
if (!func(context, &data[*o_count], mandatory)) {\
break;\
}\
mandatory = FALSE;\
}\
return mandatory ? FALSE : TRUE;\
}while(0)
static size_t o_count
Definition scpi.c:26
#define TRUE
Definition types.h:63
#define FALSE
Definition types.h:60
@ SCPI_FORMAT_ASCII
Definition types.h:401

Definition at line 1831 of file parser.c.

◆ RESULT_ARRAY

#define RESULT_ARRAY ( func)
Value:
do {\
size_t result = 0;\
if (format == SCPI_FORMAT_ASCII) {\
size_t i;\
for (i = 0; i < count; i++) {\
result += func(context, array[i]);\
}\
} else {\
result = produceResultArrayBinary(context, array, count, sizeof(*array), format);\
}\
return result;\
} while(0)
static size_t produceResultArrayBinary(scpi_t *context, const void *array, size_t count, size_t item_size, scpi_array_format_t format)
Definition parser.c:1638

Definition at line 1695 of file parser.c.

Function Documentation

◆ findCommandHeader()

scpi_bool_t findCommandHeader ( scpi_t * context,
const char * header,
int len )
static

Cycle all patterns and search matching pattern. Execute command callback.

Parameters
context
Returns
TRUE if context->paramlist is filled with correct values

Definition at line 174 of file parser.c.

◆ flushData()

int flushData ( scpi_t * context)
static

Flush data to SCPI output

Parameters
context
Returns

Definition at line 73 of file parser.c.

◆ getBasePrefix()

const char * getBasePrefix ( int8_t base)
static

Return prefix of nondecimal base

Parameters
base
Returns

Definition at line 460 of file parser.c.

◆ invalidateToken()

void invalidateToken ( scpi_token_t * token,
char * ptr )
static

Invalidate token

Parameters
token
ptr

Definition at line 761 of file parser.c.

◆ ParamSignToUInt32()

scpi_bool_t ParamSignToUInt32 ( scpi_t * context,
scpi_parameter_t * parameter,
uint32_t * value,
scpi_bool_t sign )
static

Convert parameter to signed/unsigned 32 bit integer

Parameters
context
parameter
valueresult
sign
Returns
TRUE if succesful

Definition at line 855 of file parser.c.

◆ ParamSignToUInt64()

scpi_bool_t ParamSignToUInt64 ( scpi_t * context,
scpi_parameter_t * parameter,
uint64_t * value,
scpi_bool_t sign )
static

Convert parameter to signed/unsigned 64 bit integer

Parameters
context
parameter
valueresult
sign
Returns
TRUE if succesful

Definition at line 889 of file parser.c.

◆ ParamSignUInt32()

scpi_bool_t ParamSignUInt32 ( scpi_t * context,
uint32_t * value,
scpi_bool_t mandatory,
scpi_bool_t sign )
static

Read signed/unsigned 32 bit integer parameter

Parameters
context
value
mandatory
sign
Returns

Definition at line 1095 of file parser.c.

◆ ParamSignUInt64()

scpi_bool_t ParamSignUInt64 ( scpi_t * context,
uint64_t * value,
scpi_bool_t mandatory,
scpi_bool_t sign )
static

Read signed/unsigned 64 bit integer parameter

Parameters
context
value
mandatory
sign
Returns

Definition at line 1127 of file parser.c.

◆ processCommand()

scpi_bool_t processCommand ( scpi_t * context)
static

Process command

Parameters
context

Definition at line 130 of file parser.c.

◆ produceResultArrayBinary()

size_t produceResultArrayBinary ( scpi_t * context,
const void * array,
size_t count,
size_t item_size,
scpi_array_format_t format )
static

Result binary array and swap bytes if needed (native endiannes != required endiannes)

Parameters
context
array
count
item_size
format
Returns

Definition at line 1638 of file parser.c.

◆ resultUInt32BaseSign()

size_t resultUInt32BaseSign ( scpi_t * context,
uint32_t val,
int8_t base,
scpi_bool_t sign )
static

Write signed/unsigned 32 bit integer value in specific base to the result

Parameters
context
val
base
sign
Returns

Definition at line 477 of file parser.c.

◆ resultUInt64BaseSign()

size_t resultUInt64BaseSign ( scpi_t * context,
uint64_t val,
int8_t base,
scpi_bool_t sign )
static

Write signed/unsigned 64 bit integer value in specific base to the result

Parameters
context
val
base
sign
Returns

Definition at line 503 of file parser.c.

◆ SCPI_ChoiceToName()

scpi_bool_t SCPI_ChoiceToName ( const scpi_choice_def_t * options,
int32_t tag,
const char ** text )

Find tag in choices and returns its first textual representation

Parameters
optionsspecifications of choices numbers (patterns)
tagnumerical representatio of choice
textresult text
Returns
TRUE if succesfule, else FALSE

Definition at line 1349 of file parser.c.

◆ SCPI_CmdTag()

uint16_t SCPI_CmdTag ( scpi_t * context)

Return the .tag field of the matching scpi_command_t

Parameters
context
Returns

Definition at line 1593 of file parser.c.

◆ SCPI_CommandNumbers()

scpi_bool_t SCPI_CommandNumbers ( scpi_t * context,
int32_t * numbers,
size_t len,
int32_t default_value )

Definition at line 1606 of file parser.c.

◆ SCPI_Init()

void SCPI_Init ( scpi_t * context,
const scpi_command_t * def_cmds,
scpi_interface_t * interface,
const scpi_unit_def_t * units,
const char * idn1,
const char * idn2,
const char * idn3,
const char * idn4,
char * input_buffer,
size_t input_buffer_length,
scpi_error_t * error_queue_data,
int16_t error_queue_size )

Initialize SCPI context structure

Parameters
context
commands
interface
units
idn1
idn2
idn3
idn4
input_buffer
input_buffer_length
error_queue_data
error_queue_size

Definition at line 337 of file parser.c.

◆ SCPI_Input()

scpi_bool_t SCPI_Input ( scpi_t * context,
const char * data,
int len )

Interface to the application. Adds data to system buffer and try to search command line termination. If the termination is found or if len=0, command parser is called.

Parameters
context
data- data to process
len- length of data
Returns

Definition at line 394 of file parser.c.

◆ SCPI_IsCmd()

scpi_bool_t SCPI_IsCmd ( scpi_t * context,
const char * cmd )

Check current command

  • suitable for one handle to multiple commands
    Parameters
    context
    cmd
    Returns

Definition at line 1575 of file parser.c.

◆ SCPI_Match()

scpi_bool_t SCPI_Match ( const char * pattern,
const char * value,
size_t len,
bool * query )

Definition at line 1602 of file parser.c.

◆ SCPI_ParamArbitraryBlock()

scpi_bool_t SCPI_ParamArbitraryBlock ( scpi_t * context,
const char ** value,
size_t * len,
scpi_bool_t mandatory )

Get arbitrary block program data and returns pointer to data

Parameters
context
valueresult pointer to data
lenresult length of data
mandatory
Returns

Definition at line 1240 of file parser.c.

◆ SCPI_ParamArrayDouble()

scpi_bool_t SCPI_ParamArrayDouble ( scpi_t * context,
double * data,
size_t i_count,
size_t * o_count,
scpi_array_format_t format,
scpi_bool_t mandatory )

Read list of values up to i_count

Parameters
context
data- array to fill
i_count- number of elements of data
o_count- real number of filled elements
mandatory
Returns
TRUE on success

Definition at line 1916 of file parser.c.

◆ SCPI_ParamArrayFloat()

scpi_bool_t SCPI_ParamArrayFloat ( scpi_t * context,
float * data,
size_t i_count,
size_t * o_count,
scpi_array_format_t format,
scpi_bool_t mandatory )

Read list of values up to i_count

Parameters
context
data- array to fill
i_count- number of elements of data
o_count- real number of filled elements
mandatory
Returns
TRUE on success

Definition at line 1903 of file parser.c.

◆ SCPI_ParamArrayInt32()

scpi_bool_t SCPI_ParamArrayInt32 ( scpi_t * context,
int32_t * data,
size_t i_count,
size_t * o_count,
scpi_array_format_t format,
scpi_bool_t mandatory )

Read list of values up to i_count

Parameters
context
data- array to fill
i_count- number of elements of data
o_count- real number of filled elements
mandatory
Returns
TRUE on success

Definition at line 1851 of file parser.c.

◆ SCPI_ParamArrayInt64()

scpi_bool_t SCPI_ParamArrayInt64 ( scpi_t * context,
int64_t * data,
size_t i_count,
size_t * o_count,
scpi_array_format_t format,
scpi_bool_t mandatory )

Read list of values up to i_count

Parameters
context
data- array to fill
i_count- number of elements of data
o_count- real number of filled elements
mandatory
Returns
TRUE on success

Definition at line 1877 of file parser.c.

◆ SCPI_ParamArrayUInt32()

scpi_bool_t SCPI_ParamArrayUInt32 ( scpi_t * context,
uint32_t * data,
size_t i_count,
size_t * o_count,
scpi_array_format_t format,
scpi_bool_t mandatory )

Read list of values up to i_count

Parameters
context
data- array to fill
i_count- number of elements of data
o_count- real number of filled elements
mandatory
Returns
TRUE on success

Definition at line 1864 of file parser.c.

◆ SCPI_ParamArrayUInt64()

scpi_bool_t SCPI_ParamArrayUInt64 ( scpi_t * context,
uint64_t * data,
size_t i_count,
size_t * o_count,
scpi_array_format_t format,
scpi_bool_t mandatory )

Read list of values up to i_count

Parameters
context
data- array to fill
i_count- number of elements of data
o_count- real number of filled elements
mandatory
Returns
TRUE on success

Definition at line 1890 of file parser.c.

◆ SCPI_ParamBool()

scpi_bool_t SCPI_ParamBool ( scpi_t * context,
scpi_bool_t * value,
scpi_bool_t mandatory )

Read BOOL parameter (0,1,ON,OFF)

Parameters
context
value
mandatory
Returns

Definition at line 1369 of file parser.c.

◆ SCPI_ParamCharacters()

scpi_bool_t SCPI_ParamCharacters ( scpi_t * context,
const char ** value,
size_t * len,
scpi_bool_t mandatory )

Read character parameter

Parameters
context
value
len
mandatory
Returns

Definition at line 1203 of file parser.c.

◆ SCPI_ParamChoice()

scpi_bool_t SCPI_ParamChoice ( scpi_t * context,
const scpi_choice_def_t * options,
int32_t * value,
scpi_bool_t mandatory )

Read value from list of options

Parameters
context
options
value
mandatory
Returns

Definition at line 1410 of file parser.c.

◆ SCPI_ParamCopyText()

scpi_bool_t SCPI_ParamCopyText ( scpi_t * context,
char * buffer,
size_t buffer_len,
size_t * copy_len,
scpi_bool_t mandatory )

Definition at line 1263 of file parser.c.

◆ SCPI_ParamDouble()

scpi_bool_t SCPI_ParamDouble ( scpi_t * context,
double * value,
scpi_bool_t mandatory )

Read floating point double (64 bit) parameter

Parameters
context
value
mandatory
Returns

Definition at line 1063 of file parser.c.

◆ SCPI_ParamErrorOccurred()

scpi_bool_t SCPI_ParamErrorOccurred ( scpi_t * context)

Returns TRUE if there was an error during parameter handling

Parameters
context
Returns

Definition at line 1625 of file parser.c.

◆ SCPI_Parameter()

scpi_bool_t SCPI_Parameter ( scpi_t * context,
scpi_parameter_t * parameter,
scpi_bool_t mandatory )

Get one parameter from command line

Parameters
context
parameter
mandatory
Returns

Definition at line 774 of file parser.c.

◆ SCPI_ParamFloat()

scpi_bool_t SCPI_ParamFloat ( scpi_t * context,
void * value,
scpi_bool_t mandatory )

Read floating point float (32 bit) parameter

Parameters
context
value
mandatory
Returns

Definition at line 1032 of file parser.c.

◆ SCPI_ParamInt32()

scpi_bool_t SCPI_ParamInt32 ( scpi_t * context,
int32_t * value,
scpi_bool_t mandatory )

Read signed 32 bit integer parameter

Parameters
context
value
mandatory
Returns

Definition at line 1158 of file parser.c.

◆ SCPI_ParamInt64()

scpi_bool_t SCPI_ParamInt64 ( scpi_t * context,
int64_t * value,
scpi_bool_t mandatory )

Read signed 64 bit integer parameter

Parameters
context
value
mandatory
Returns

Definition at line 1180 of file parser.c.

◆ SCPI_ParamIsNumber()

scpi_bool_t SCPI_ParamIsNumber ( scpi_parameter_t * parameter,
scpi_bool_t suffixAllowed )

Detect if parameter is number

Parameters
parameter
suffixAllowed
Returns

Definition at line 833 of file parser.c.

◆ SCPI_ParamIsValid()

scpi_bool_t SCPI_ParamIsValid ( scpi_parameter_t * parameter)

If SCPI_Parameter() returns FALSE, this function can detect, if the parameter is just missing (TRUE) or if there was an error during processing of the command (FALSE)

Parameters
parameter
Returns

Definition at line 1616 of file parser.c.

◆ SCPI_ParamToChoice()

scpi_bool_t SCPI_ParamToChoice ( scpi_t * context,
scpi_parameter_t * parameter,
const scpi_choice_def_t * options,
int32_t * value )

Convert parameter to choice

Parameters
context
parameter- should be PROGRAM_MNEMONIC
options- NULL terminated list of choices
value- index to options
Returns

Definition at line 1314 of file parser.c.

◆ SCPI_ParamToDouble()

scpi_bool_t SCPI_ParamToDouble ( scpi_t * context,
scpi_parameter_t * parameter,
double * value )

Convert parameter to double (64 bit)

Parameters
context
parameter
valueresult
Returns
TRUE if succesful

Definition at line 999 of file parser.c.

◆ SCPI_ParamToFloat()

scpi_bool_t SCPI_ParamToFloat ( scpi_t * context,
scpi_parameter_t * parameter,
float * value )

Convert parameter to float (32 bit)

Parameters
context
parameter
valueresult
Returns
TRUE if succesful

Definition at line 966 of file parser.c.

◆ SCPI_ParamToInt32()

scpi_bool_t SCPI_ParamToInt32 ( scpi_t * context,
scpi_parameter_t * parameter,
int32_t * value )

Convert parameter to signed 32 bit integer

Parameters
context
parameter
valueresult
Returns
TRUE if succesful

Definition at line 922 of file parser.c.

◆ SCPI_ParamToInt64()

scpi_bool_t SCPI_ParamToInt64 ( scpi_t * context,
scpi_parameter_t * parameter,
int64_t * value )

Convert parameter to signed 64 bit integer

Parameters
context
parameter
valueresult
Returns
TRUE if succesful

Definition at line 944 of file parser.c.

◆ SCPI_ParamToUInt32()

scpi_bool_t SCPI_ParamToUInt32 ( scpi_t * context,
scpi_parameter_t * parameter,
uint32_t * value )

Convert parameter to unsigned 32 bit integer

Parameters
context
parameter
valueresult
Returns
TRUE if succesful

Definition at line 933 of file parser.c.

◆ SCPI_ParamToUInt64()

scpi_bool_t SCPI_ParamToUInt64 ( scpi_t * context,
scpi_parameter_t * parameter,
uint64_t * value )

Convert parameter to unsigned 32 bit integer

Parameters
context
parameter
valueresult
Returns
TRUE if succesful

Definition at line 955 of file parser.c.

◆ SCPI_ParamUInt32()

scpi_bool_t SCPI_ParamUInt32 ( scpi_t * context,
void * value,
scpi_bool_t mandatory )

Read unsigned 32 bit integer parameter

Parameters
context
value
mandatory
Returns

Definition at line 1169 of file parser.c.

◆ SCPI_ParamUInt64()

scpi_bool_t SCPI_ParamUInt64 ( scpi_t * context,
uint64_t * value,
scpi_bool_t mandatory )

Read unsigned 64 bit integer parameter

Parameters
context
value
mandatory
Returns

Definition at line 1191 of file parser.c.

◆ SCPI_Parse()

scpi_bool_t SCPI_Parse ( scpi_t * context,
char * data,
int len )

Parse one command line

Parameters
context
data- complete command line
len- command line length
Returns
FALSE if there was some error during evaluation of commands

Definition at line 257 of file parser.c.

◆ SCPI_ResultArbitraryBlock()

size_t SCPI_ResultArbitraryBlock ( scpi_t * context,
const void * data,
size_t len )

Write arbitrary block program data to the result

Parameters
context
data
len
Returns

Definition at line 737 of file parser.c.

◆ SCPI_ResultArbitraryBlockData()

size_t SCPI_ResultArbitraryBlockData ( scpi_t * context,
const void * data,
size_t len )

Add data to arbitrary block

Parameters
context
data
len
Returns

Definition at line 714 of file parser.c.

◆ SCPI_ResultArbitraryBlockHeader()

size_t SCPI_ResultArbitraryBlockHeader ( scpi_t * context,
size_t len )

Write arbitrary block header with length

Parameters
context
len
Returns

Definition at line 694 of file parser.c.

◆ SCPI_ResultArrayDouble()

size_t SCPI_ResultArrayDouble ( scpi_t * context,
const double * array,
size_t count,
scpi_array_format_t format )

Result array of doubles

Parameters
context
array
count
format
Returns

Definition at line 1824 of file parser.c.

◆ SCPI_ResultArrayFloat()

size_t SCPI_ResultArrayFloat ( scpi_t * context,
const float * array,
size_t count,
scpi_array_format_t format )

Result array of floats

Parameters
context
array
count
format
Returns

Definition at line 1812 of file parser.c.

◆ SCPI_ResultArrayInt16()

size_t SCPI_ResultArrayInt16 ( scpi_t * context,
const int16_t * array,
size_t count,
scpi_array_format_t format )

Result array of signed 16bit integers

Parameters
context
array
count
format
Returns

Definition at line 1740 of file parser.c.

◆ SCPI_ResultArrayInt32()

size_t SCPI_ResultArrayInt32 ( scpi_t * context,
const int32_t * array,
size_t count,
scpi_array_format_t format )

Result array of signed 32bit integers

Parameters
context
array
count
format
Returns

Definition at line 1764 of file parser.c.

◆ SCPI_ResultArrayInt64()

size_t SCPI_ResultArrayInt64 ( scpi_t * context,
const int64_t * array,
size_t count,
scpi_array_format_t format )

Result array of signed 64bit integers

Parameters
context
array
count
format
Returns

Definition at line 1788 of file parser.c.

◆ SCPI_ResultArrayInt8()

size_t SCPI_ResultArrayInt8 ( scpi_t * context,
const int8_t * array,
size_t count,
scpi_array_format_t format )

Result array of signed 8bit integers

Parameters
context
array
count
format
Returns

Definition at line 1716 of file parser.c.

◆ SCPI_ResultArrayUInt16()

size_t SCPI_ResultArrayUInt16 ( scpi_t * context,
const uint16_t * array,
size_t count,
scpi_array_format_t format )

Result array of unsigned 16bit integers

Parameters
context
array
count
format
Returns

Definition at line 1752 of file parser.c.

◆ SCPI_ResultArrayUInt32()

size_t SCPI_ResultArrayUInt32 ( scpi_t * context,
const uint32_t * array,
size_t count,
scpi_array_format_t format )

Result array of unsigned 32bit integers

Parameters
context
array
count
format
Returns

Definition at line 1776 of file parser.c.

◆ SCPI_ResultArrayUInt64()

size_t SCPI_ResultArrayUInt64 ( scpi_t * context,
const uint64_t * array,
size_t count,
scpi_array_format_t format )

Result array of unsigned 64bit integers

Parameters
context
array
count
format
Returns

Definition at line 1800 of file parser.c.

◆ SCPI_ResultArrayUInt8()

size_t SCPI_ResultArrayUInt8 ( scpi_t * context,
const uint8_t * array,
size_t count,
scpi_array_format_t format )

Result array of unsigned 8bit integers

Parameters
context
array
count
format
Returns

Definition at line 1728 of file parser.c.

◆ SCPI_ResultBool()

size_t SCPI_ResultBool ( scpi_t * context,
scpi_bool_t val )

Write boolean value to the result

Parameters
context
val
Returns

Definition at line 750 of file parser.c.

◆ SCPI_ResultCharacters()

size_t SCPI_ResultCharacters ( scpi_t * context,
const char * data,
size_t len )

Write raw string result to the output

Parameters
context
data
Returns

Definition at line 447 of file parser.c.

◆ SCPI_ResultDouble()

size_t SCPI_ResultDouble ( scpi_t * context,
double val )

Write double (64bit) value to the result

Parameters
context
val
Returns

Definition at line 584 of file parser.c.

◆ SCPI_ResultError()

size_t SCPI_ResultError ( scpi_t * context,
scpi_error_t * error )

SCPI-99:21.8 Device-dependent error information. Write error information with the following syntax: <Error/event_number>,"<Error/event_description>[;<Device-dependent_info>]" The maximum string length of <Error/event_description> plus <Device-dependent_info> is SCPI_STD_ERROR_DESC_MAX_STRING_LENGTH (255) characters.

Parameters
context
error
Returns

Definition at line 629 of file parser.c.

◆ SCPI_ResultFloat()

size_t SCPI_ResultFloat ( scpi_t * context,
float val )

Write float (32 bit) value to the result

Parameters
context
val
Returns

Definition at line 568 of file parser.c.

◆ SCPI_ResultInt32()

size_t SCPI_ResultInt32 ( scpi_t * context,
int32_t val )

Write signed 32 bit integer value to the result

Parameters
context
val
Returns

Definition at line 527 of file parser.c.

◆ SCPI_ResultInt64()

size_t SCPI_ResultInt64 ( scpi_t * context,
int64_t val )

Write signed 64 bit integer value to the result

Parameters
context
val
Returns

Definition at line 548 of file parser.c.

◆ SCPI_ResultText()

size_t SCPI_ResultText ( scpi_t * context,
const char * data )

Write string withn " to the result

Parameters
context
data
Returns

Definition at line 600 of file parser.c.

◆ SCPI_ResultUInt32Base()

size_t SCPI_ResultUInt32Base ( scpi_t * context,
uint32_t val,
int8_t base )

Write unsigned 32 bit integer value in specific base to the result Write signed/unsigned 32 bit integer value in specific base to the result

Parameters
context
val
Returns

Definition at line 538 of file parser.c.

◆ SCPI_ResultUInt64Base()

size_t SCPI_ResultUInt64Base ( scpi_t * context,
uint64_t val,
int8_t base )

Write unsigned 64 bit integer value in specific base to the result

Parameters
context
val
Returns

Definition at line 558 of file parser.c.

◆ scpiParser_detectProgramMessageUnit()

int scpiParser_detectProgramMessageUnit ( scpi_parser_state_t * state,
char * buffer,
int len )

Skip complete command line - program header and parameters

Parameters
state
buffer
len
Returns

Definition at line 1522 of file parser.c.

◆ scpiParser_parseAllProgramData()

int scpiParser_parseAllProgramData ( lex_state_t * state,
scpi_token_t * token,
int * numberOfParameters )

Skip all parameters to correctly detect end of command line.

Parameters
state
token
numberOfParameters
Returns

Definition at line 1472 of file parser.c.

◆ scpiParser_parseProgramData()

int scpiParser_parseProgramData ( lex_state_t * state,
scpi_token_t * token )

Parse one parameter and detect type

Parameters
state
token
Returns

Definition at line 1433 of file parser.c.

◆ writeData()

size_t writeData ( scpi_t * context,
const char * data,
size_t len )
static

Write data to SCPI output

Parameters
context
data
len- lenght of data to be written
Returns
number of bytes written

Definition at line 60 of file parser.c.

◆ writeDelimiter()

size_t writeDelimiter ( scpi_t * context)
static

Write result delimiter to output

Parameters
context
Returns
number of bytes written

Definition at line 86 of file parser.c.

◆ writeNewLine()

size_t writeNewLine ( scpi_t * context)
static

Conditionaly write "New Line"

Parameters
context
Returns
number of characters written

Definition at line 99 of file parser.c.

◆ writeSemicolon()

size_t writeSemicolon ( scpi_t * context)
static

Conditionaly write ";"

Parameters
context
Returns
number of characters written

Definition at line 118 of file parser.c.