From 11f2f2e329ef404d0e9c022cb2f9fbbb45bae285 Mon Sep 17 00:00:00 2001
From: nancy.liao <huihui.liao@greentest.com.cn>
Date: 周日, 27 4月 2025 17:33:31 +0800
Subject: [PATCH] 完成了SCPI命令语法分析器的完整规则

---
 libscpi/inc/scpi/types.h |   59 ++++++++++++++++++++++++++++++++++++++++++++++++++++++-----
 1 files changed, 54 insertions(+), 5 deletions(-)

diff --git a/libscpi/inc/scpi/types.h b/libscpi/inc/scpi/types.h
index 75d187f..d2fe6d2 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,7 +77,13 @@
         SCPI_REG_QUESE, /* QUEStionable status Enable Register */
         SCPI_REG_QUESC, /* QUEStionable status Condition Register */
 
-        /* Add device specific registers here*/
+#if USE_CUSTOM_REGISTERS
+#ifndef USER_REGISTERS
+#error "No user registers defined"
+#else
+        USER_REGISTERS
+#endif
+#endif
 
         /* number of registers */
         SCPI_REG_COUNT,
@@ -126,7 +131,13 @@
         SCPI_REG_GROUP_OPER,
         SCPI_REG_GROUP_QUES,
 
-        /* Add device specific register groups here*/
+#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
@@ -357,6 +368,20 @@
         SCPI_NUM_NINF,
         SCPI_NUM_AUTO
     };
+
+    enum SCPIRError
+    {
+        RETURN_TRUE = 0,
+        //鍛戒护鏈畾涔�
+        RETURN_UnDefine = -1,
+        //闀垮害婧㈠嚭
+        RETURN_LengthOverFlow = -2,
+        //鍛戒护闈炴硶
+        RETURN_IllegalCommand = -3,
+        //鍥炶皟鍑芥暟娌℃湁鎵惧埌
+        RETURN_NotFind = -4
+
+    };
     typedef enum _scpi_special_number_t scpi_special_number_t;
 
     struct _scpi_choice_def_t {
@@ -409,24 +434,48 @@
         scpi_command_callback_t reset;
     };
 
+
+
     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;
+
+        int SCPIerror;
+        //澧炲姞浜嗕竴涓懡浠ゅ垪琛ㄧ殑闀垮害 闃叉闈炴硶瓒婄晫
+        int cmdlistSize;
+
     };
 
     enum _scpi_array_format_t {

--
Gitblit v1.9.1