From 3044205b9aeabb90757c6030f2dc4bcfd1c322bf Mon Sep 17 00:00:00 2001
From: Justin Fichtner <justin.fichtner@lakeshore.com>
Date: 摹曛, 30 11月 2017 08:16:06 +0800
Subject: [PATCH] Implement condition register in Questionable register set

---
 libscpi/inc/scpi/minimal.h |    1 +
 libscpi/inc/scpi/types.h   |    1 +
 libscpi/src/ieee488.c      |    3 +++
 libscpi/src/minimal.c      |   12 ++++++++++++
 libscpi/test/test_parser.c |    8 +++++++-
 5 files changed, 24 insertions(+), 1 deletions(-)

diff --git a/libscpi/inc/scpi/minimal.h b/libscpi/inc/scpi/minimal.h
index 31713dd..6e53e4d 100644
--- a/libscpi/inc/scpi/minimal.h
+++ b/libscpi/inc/scpi/minimal.h
@@ -50,6 +50,7 @@
     scpi_result_t SCPI_SystemErrorNextQ(scpi_t * context);
     scpi_result_t SCPI_SystemErrorCountQ(scpi_t * context);
     scpi_result_t SCPI_StatusQuestionableEventQ(scpi_t * context);
+    scpi_result_t SCPI_StatusQuestionableConditionQ(scpi_t * context);
     scpi_result_t SCPI_StatusQuestionableEnableQ(scpi_t * context);
     scpi_result_t SCPI_StatusQuestionableEnable(scpi_t * context);
     scpi_result_t SCPI_StatusOperationConditionQ(scpi_t * context);
diff --git a/libscpi/inc/scpi/types.h b/libscpi/inc/scpi/types.h
index 3584936..397e9bb 100644
--- a/libscpi/inc/scpi/types.h
+++ b/libscpi/inc/scpi/types.h
@@ -77,6 +77,7 @@
         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
diff --git a/libscpi/src/ieee488.c b/libscpi/src/ieee488.c
index 6ae5437..4e1be81 100644
--- a/libscpi/src/ieee488.c
+++ b/libscpi/src/ieee488.c
@@ -153,6 +153,9 @@
         case SCPI_REG_QUESE:
             regUpdate(context, SCPI_REG_QUES);
             break;
+        case SCPI_REG_QUESC:
+            regUpdateEvent(context, old_val, val, SCPI_REG_QUES);
+            break;
         case SCPI_REG_OPER:
             regUpdateSTB(context, val, SCPI_REG_OPERE, STB_OPS);
             break;
diff --git a/libscpi/src/minimal.c b/libscpi/src/minimal.c
index 05e351e..ae56da6 100644
--- a/libscpi/src/minimal.c
+++ b/libscpi/src/minimal.c
@@ -99,6 +99,18 @@
 }
 
 /**
+ * STATus:QUEStionable:CONDition?
+ * @param context
+ * @return
+ */
+scpi_result_t SCPI_StatusQuestionableConditionQ(scpi_t * context) {
+    /* return value */
+    SCPI_ResultInt32(context, SCPI_RegGet(context, SCPI_REG_QUESC));
+
+    return SCPI_RES_OK;
+}
+
+/**
  * STATus:QUEStionable[:EVENt]?
  * @param context
  * @return
diff --git a/libscpi/test/test_parser.c b/libscpi/test/test_parser.c
index 0910731..4ca3ef8 100644
--- a/libscpi/test/test_parser.c
+++ b/libscpi/test/test_parser.c
@@ -78,6 +78,7 @@
     { .pattern = "SYSTem:VERSion?", .callback = SCPI_SystemVersionQ,},
 
     { .pattern = "STATus:QUEStionable[:EVENt]?", .callback = SCPI_StatusQuestionableEventQ,},
+    { .pattern = "STATus:QUEStionable:CONDition?", .callback = SCPI_Status_QuestionableConditionQ,},
     { .pattern = "STATus:QUEStionable:ENABle", .callback = SCPI_StatusQuestionableEnable,},
     { .pattern = "STATus:QUEStionable:ENABle?", .callback = SCPI_StatusQuestionableEnableQ,},
 
@@ -439,6 +440,12 @@
     TEST_IEEE4882("STATus:QUEStionable:ENABle 2\r\n", "");
     TEST_IEEE4882_REG(SCPI_REG_QUESE, 2);
 
+    EST_IEEE4882("STATus:QUEStionable:CONDition?\r\n", "0\r\n");
+    TEST_IEEE4882_REG_SET(SCPI_REG_QUESC, 1);
+    TEST_IEEE4882("STATus:QUEStionable:CONDition?\r\n", "1\r\n");
+    TEST_IEEE4882("STATus:QUEStionable:EVENt?\r\n", "1\r\n");
+    TEST_IEEE4882_REG_SET(SCPI_REG_QUESC, 0);
+    TEST_IEEE4882("STATus:QUEStionable:CONDition?\r\n", "0\r\n");
     TEST_IEEE4882("STATus:QUEStionable:EVENt?\r\n", "0\r\n");
     TEST_IEEE4882_REG_SET(SCPI_REG_QUES, 1);
     TEST_IEEE4882("STATus:QUEStionable:EVENt?\r\n", "1\r\n");
@@ -454,7 +461,6 @@
     TEST_IEEE4882("STATus:OPERation:CONDition?\r\n", "0\r\n");
     TEST_IEEE4882_REG_SET(SCPI_REG_OPERC, 1);
     TEST_IEEE4882("STATus:OPERation:CONDition?\r\n", "1\r\n");
-    TEST_IEEE4882_REG(SCPI_REG_OPERC, 1);
     TEST_IEEE4882("STATus:OPERation:EVENt?\r\n", "1\r\n");
     TEST_IEEE4882_REG_SET(SCPI_REG_OPERC, 0);
     TEST_IEEE4882("STATus:OPERation:CONDition?\r\n", "0\r\n");

--
Gitblit v1.9.1