]> sigrok.org Git - libsigrok.git/blobdiff - src/scpi/scpi.c
serial: introduce more general "have serial comm" feature flag
[libsigrok.git] / src / scpi / scpi.c
index a01e13e037da3575b37c42e935dc5cb91e932cdd..31f82a3f912351c2bc653bb66dfed90f6e61a6db 100644 (file)
 #define SCPI_READ_RETRY_TIMEOUT_US (10 * 1000)
 
 static const char *scpi_vendors[][2] = {
-       { "HEWLETT-PACKARD", "HP" },
        { "Agilent Technologies", "Agilent" },
-       { "RIGOL TECHNOLOGIES", "Rigol" },
-       { "PHILIPS", "Philips" },
        { "CHROMA", "Chroma" },
        { "Chroma ATE", "Chroma" },
+       { "HEWLETT-PACKARD", "HP" },
+       { "Keysight Technologies", "Keysight" },
+       { "PHILIPS", "Philips" },
+       { "RIGOL TECHNOLOGIES", "Rigol" },
 };
 
 /**
@@ -99,7 +100,7 @@ static const struct sr_scpi_dev_inst *scpi_devs[] = {
 #ifdef HAVE_LIBGPIB
        &scpi_libgpib_dev,
 #endif
-#ifdef HAVE_LIBSERIALPORT
+#ifdef HAVE_SERIAL_COMM
        &scpi_serial_dev, /* Must be last as it matches any resource. */
 #endif
 };
@@ -406,6 +407,21 @@ SR_PRIV int sr_scpi_open(struct sr_scpi_dev_inst *scpi)
        return scpi->open(scpi);
 }
 
+/**
+ * Get the connection ID of the SCPI device.
+ *
+ * @param scpi Previously initialized SCPI device structure.
+ * @param connection_id Pointer where to store the connection ID. The caller
+ *        is responsible for g_free()ing the string when it is no longer needed.
+ *
+ * @return SR_OK on success, SR_ERR on failure.
+ */
+SR_PRIV int sr_scpi_connection_id(struct sr_scpi_dev_inst *scpi,
+               char **connection_id)
+{
+       return scpi->connection_id(scpi, connection_id);
+}
+
 /**
  * Add an event source for an SCPI device.
  *
@@ -1091,9 +1107,7 @@ SR_PRIV int sr_scpi_get_hw_id(struct sr_scpi_dev_inst *scpi,
         * model, serial number of the instrument and the firmware version.
         */
        tokens = g_strsplit(response, ",", 0);
-
-       for (num_tokens = 0; tokens[num_tokens] != NULL; num_tokens++);
-
+       num_tokens = g_strv_length(tokens);
        if (num_tokens < 4) {
                sr_dbg("IDN response not according to spec: %80.s.", response);
                g_strfreev(tokens);