Jan Breuer
2018-07-14 007889b4128e8656c55ba31404a698e98719c262
libscpi/inc/scpi/types.h
@@ -1,30 +1,29 @@
/*-
 * Copyright (c) 2013 Jan Breuer
 *                    Richard.hmm
 * Copyright (c) 2012 Jan Breuer
 * BSD 2-Clause License
 *
 * All Rights Reserved
 * Copyright (c) 2012-2018, Jan Breuer, Richard.hmm
 * All rights reserved.
 *
 * Redistribution and use in source and binary forms, with or without
 * modification, are permitted provided that the following conditions are
 * met:
 * 1. Redistributions of source code must retain the above copyright notice,
 *    this list of conditions and the following disclaimer.
 * 2. Redistributions in binary form must reproduce the above copyright
 *    notice, this list of conditions and the following disclaimer in the
 *    documentation and/or other materials provided with the distribution.
 * modification, are permitted provided that the following conditions are met:
 *
 * THIS SOFTWARE IS PROVIDED BY THE AUTHORS ``AS IS'' AND ANY EXPRESS OR
 * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
 * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
 * DISCLAIMED. IN NO EVENT SHALL THE AUTHORS OR CONTRIBUTORS BE LIABLE
 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
 * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
 * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
 * OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
 * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 * * Redistributions of source code must retain the above copyright notice, this
 *   list of conditions and the following disclaimer.
 *
 * * Redistributions in binary form must reproduce the above copyright notice,
 *   this list of conditions and the following disclaimer in the documentation
 *   and/or other materials provided with the distribution.
 *
 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
 * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
 * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
 * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
 * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 */
/**
@@ -74,8 +73,10 @@
        SCPI_REG_ESE, /* Event Status Enable Register */
        SCPI_REG_OPER, /* OPERation Status Register */
        SCPI_REG_OPERE, /* OPERation Status Enable Register */
        SCPI_REG_OPERC, /* OPERation Status Condition Register */
        SCPI_REG_QUES, /* QUEStionable status register */
        SCPI_REG_QUESE, /* QUEStionable status Enable Register */
        SCPI_REG_QUESC, /* QUEStionable status Condition Register */
        /* last definition - number of registers */
        SCPI_REG_COUNT
@@ -113,7 +114,12 @@
    typedef struct _scpi_command_t scpi_command_t;
#define SCPI_CMD_LIST_END       {NULL, NULL, 0}
#if USE_COMMAND_TAGS
   #define SCPI_CMD_LIST_END       {NULL, NULL, 0}
#else
   #define SCPI_CMD_LIST_END       {NULL, NULL}
#endif
    /* scpi interface */
    typedef struct _scpi_t scpi_t;
@@ -201,21 +207,23 @@
    typedef scpi_result_t(*scpi_command_callback_t)(scpi_t *);
   struct _scpi_error_info_heap_t {
    struct _scpi_error_info_heap_t {
        size_t wr;
        //size_t rd;
      size_t count;
        /* size_t rd; */
        size_t count;
        size_t size;
        char * data;
   };
   typedef struct _scpi_error_info_heap_t scpi_error_info_heap_t;
   struct _scpi_error_t {
      int16_t error_code;
      const char * device_dependent_info;
   };
   typedef struct _scpi_error_t scpi_error_t;
    };
    typedef struct _scpi_error_info_heap_t scpi_error_info_heap_t;
    struct _scpi_error_t {
        int16_t error_code;
#if USE_DEVICE_DEPENDENT_ERROR_INFORMATION
        char * device_dependent_info;
#endif
    };
    typedef struct _scpi_error_t scpi_error_t;
    struct _scpi_fifo_t {
        int16_t wr;
        int16_t rd;
@@ -274,7 +282,7 @@
        SCPI_UNIT_BAR,
        SCPI_UNIT_DECIBEL,
        SCPI_UNIT_UNITLESS,
        SCPI_UNIT_FAGRENHEIT,
        SCPI_UNIT_FAHRENHEIT,
        SCPI_UNIT_KELVIN,
        SCPI_UNIT_DAY,
        SCPI_UNIT_YEAR,
@@ -326,7 +334,7 @@
        union {
            double value;
            int32_t tag;
        };
        } content;
        scpi_unit_t unit;
        int8_t base;
    };
@@ -365,7 +373,9 @@
        int_fast16_t input_count;
        scpi_bool_t cmd_error;
        scpi_fifo_t error_queue;
      scpi_error_info_heap_t error_info_heap;
#if USE_DEVICE_DEPENDENT_ERROR_INFORMATION && !USE_MEMORY_ALLOCATION_FREE
        scpi_error_info_heap_t error_info_heap;
#endif
        scpi_reg_val_t registers[SCPI_REG_COUNT];
        const scpi_unit_def_t * units;
        void * user_context;