From a3fdd3589c713678eafe20840a7334de6bed038b Mon Sep 17 00:00:00 2001 From: nancy.liao <huihui.liao@greentest.com.cn> Date: 周五, 18 4月 2025 10:10:38 +0800 Subject: [PATCH] 修改 --- libscpi/inc/scpi/types.h | 85 ++++++++++++++++++++++++++++++++++++++++-- 1 files changed, 80 insertions(+), 5 deletions(-) diff --git a/libscpi/inc/scpi/types.h b/libscpi/inc/scpi/types.h index ce238dc..1212ff6 100644 --- a/libscpi/inc/scpi/types.h +++ b/libscpi/inc/scpi/types.h @@ -40,8 +40,7 @@ #include <stddef.h> #include <stdint.h> -#include "scpi/config.h" - +#include <scpi/config.h> #if HAVE_STDBOOL #include <stdbool.h> #endif @@ -78,8 +77,18 @@ SCPI_REG_QUESE, /* QUEStionable status Enable Register */ SCPI_REG_QUESC, /* QUEStionable status Condition Register */ - /* last definition - number of registers */ - SCPI_REG_COUNT +#if USE_CUSTOM_REGISTERS +#ifndef USER_REGISTERS +#error "No user registers defined" +#else + USER_REGISTERS +#endif +#endif + + /* number of registers */ + SCPI_REG_COUNT, + /* last definition - a value for no register */ + SCPI_REG_NONE }; typedef enum _scpi_reg_name_t scpi_reg_name_t; @@ -104,6 +113,53 @@ typedef enum _scpi_ctrl_name_t scpi_ctrl_name_t; typedef uint16_t scpi_reg_val_t; + + enum _scpi_reg_class_t { + SCPI_REG_CLASS_STB = 0, + SCPI_REG_CLASS_SRE, + SCPI_REG_CLASS_EVEN, + SCPI_REG_CLASS_ENAB, + SCPI_REG_CLASS_COND, + SCPI_REG_CLASS_NTR, + SCPI_REG_CLASS_PTR, + }; + typedef enum _scpi_reg_class_t scpi_reg_class_t; + + enum _scpi_reg_group_t { + SCPI_REG_GROUP_STB = 0, + SCPI_REG_GROUP_ESR, + SCPI_REG_GROUP_OPER, + SCPI_REG_GROUP_QUES, + +#if USE_CUSTOM_REGISTERS +#ifndef USER_REGISTER_GROUPS +#error "No user register groups defined" +#else + USER_REGISTER_GROUPS +#endif +#endif + + /* last definition - number of register groups */ + SCPI_REG_GROUP_COUNT + }; + typedef enum _scpi_reg_group_t scpi_reg_group_t; + + struct _scpi_reg_info_t { + scpi_reg_class_t type; + scpi_reg_group_t group; + }; + typedef struct _scpi_reg_info_t scpi_reg_info_t; + + struct _scpi_reg_group_info_t { + scpi_reg_name_t event; + scpi_reg_name_t enable; + scpi_reg_name_t condition; + scpi_reg_name_t ptfilt; + scpi_reg_name_t ntfilt; + scpi_reg_name_t parent_reg; + scpi_reg_val_t parent_bit; + }; + typedef struct _scpi_reg_group_info_t scpi_reg_group_info_t; /* scpi commands */ enum _scpi_result_t { @@ -365,23 +421,42 @@ }; struct _scpi_t { + //鍛戒护琛ㄧ殑鎸囬拡 const scpi_command_t * cmdlist; + //杈撳叆鐨勬暟鎹� scpi_buffer_t buffer; + //瑙f瀽鍛戒护鐨勫弬鏁板垪琛� scpi_param_list_t param_list; + //SCPI鐨勫閮ㄦ帴鍙o紝鍒锋柊 閲嶇疆 鍐欏叆 鎶ラ敊 scpi_interface_t * interface; + //杈撳嚭鏁版嵁鐨勪釜鏁� int_fast16_t output_count; + //杈撳叆鏁版嵁鐨勪釜鏁� 鐢ㄤ簬妫�楠屽弬鏁版槸鍚﹀悎娉� int_fast16_t input_count; + //鏄惁涓虹涓�涓緭鍑洪」 + scpi_bool_t first_output; + //鍛戒护鏄惁鍑洪敊 scpi_bool_t cmd_error; + //閿欒淇℃伅闃熷垪 scpi_fifo_t error_queue; #if USE_DEVICE_DEPENDENT_ERROR_INFORMATION && !USE_MEMORY_ALLOCATION_FREE + //璇︾粏閿欒淇℃伅 scpi_error_info_heap_t error_info_heap; #endif + //SCPI瀵勫瓨鍣� scpi_reg_val_t registers[SCPI_REG_COUNT]; + //鍗曚綅琛ㄧ殑鎸囬拡 const scpi_unit_def_t * units; + void * user_context; + //瑙f瀽鍣ㄧ殑鐘舵�� scpi_parser_state_t parser_state; + //*IDN?鏌ヨ鐨勫搷搴斿瓧娈� const char * idn[4]; - size_t arbitrary_reminding; + //鍓╀綑寰呬紶杈撶殑瀛楄妭 + size_t arbitrary_remaining; + //output涓鸿嚜澧炲瓧娈碉紝淇濆瓨杩斿洖缁撴灉,鎻愪緵缁欑▼搴忓搷搴斿唴閮ㄨ緭鍑� + char outPut[1024]; }; enum _scpi_array_format_t { -- Gitblit v1.9.1