]> sigrok.org Git - libsigrok.git/commitdiff
scpi-pps: Generalize vendor name cleanup.
authorBert Vermeulen <redacted>
Fri, 5 Sep 2014 01:49:25 +0000 (03:49 +0200)
committerBert Vermeulen <redacted>
Mon, 8 Sep 2014 10:45:21 +0000 (12:45 +0200)
src/hardware/scpi-pps/api.c
src/hardware/scpi-pps/profiles.c
src/hardware/scpi-pps/protocol.h

index 0c19c0177aca5edf8e1c035b74b0fa04e666de2a..cf161710af1da2a8002691f5786e90bd06c71b94 100644 (file)
@@ -47,6 +47,7 @@ static struct sr_dev_inst *probe_device(struct sr_scpi_dev_inst *scpi)
        struct pps_channel_group *pcg;
        uint64_t mask;
        unsigned int i, j;
+       const char *vendor;
 
        if (sr_scpi_get_hw_id(scpi, &hw_info) != SR_OK) {
                sr_info("Couldn't get IDN response.");
@@ -55,8 +56,10 @@ static struct sr_dev_inst *probe_device(struct sr_scpi_dev_inst *scpi)
 
        device = NULL;
        for (i = 0; i < num_pps_profiles; i++) {
-               if (!strcasecmp(hw_info->manufacturer, pps_profiles[i].idn_vendor) &&
-                               !strcmp(hw_info->model, pps_profiles[i].idn_model)) {
+               vendor = get_vendor(hw_info->manufacturer);
+               if (strcasecmp(vendor, pps_profiles[i].idn_vendor))
+                       continue;
+               if (!strcmp(hw_info->model, pps_profiles[i].idn_model)) {
                        device = &pps_profiles[i];
                        break;
                }
@@ -66,8 +69,8 @@ static struct sr_dev_inst *probe_device(struct sr_scpi_dev_inst *scpi)
                return NULL;
        }
 
-       sdi = sr_dev_inst_new(0, SR_ST_ACTIVE, device->vendor, device->idn_model,
-                       hw_info->firmware_version);
+       sdi = sr_dev_inst_new(0, SR_ST_ACTIVE, vendor,
+                       device->idn_model, hw_info->firmware_version);
        sdi->conn = scpi;
        sdi->driver = di;
        sdi->inst_type = SR_INST_SCPI;
index 8de5b13c6287792be0f66043319ecade370b49c0..de00684b3f9c47a9764e7dc95dfae4062d97b693 100644 (file)
  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
  */
 
+#include <string.h>
 #include "protocol.h"
 
 #define CH_IDX(x) (1 << x)
 
-enum vendors {
-       RIGOL,
+const char *pps_vendors[][2] = {
+       { "RIGOL TECHNOLOGIES", "Rigol" },
 };
 
+const char *get_vendor(const char *raw_vendor)
+{
+       unsigned int i;
+
+       for (i = 0; i < ARRAY_SIZE(pps_vendors); i++) {
+               if (!strcasecmp(raw_vendor, pps_vendors[i][0]))
+                       return pps_vendors[i][1];
+       }
+
+       return raw_vendor;
+}
+
 /* Rigol DP800 series */
 static const int32_t devopts_rigol_dp800[] = {
        SR_CONF_POWER_SUPPLY,
@@ -87,7 +100,7 @@ struct scpi_command cmd_rigol_dp800[] = {
 
 SR_PRIV const struct scpi_pps pps_profiles[] = {
        /* Rigol DP800 series */
-       { RIGOL, "Rigol", "RIGOL TECHNOLOGIES", "DP832", PPS_OTP,
+       { "Rigol", "DP832", PPS_OTP,
                ARRAY_AND_SIZE(devopts_rigol_dp800),
                ARRAY_AND_SIZE(devopts_cg_rigol_dp800),
                ARRAY_AND_SIZE(ch_rigol_dp800),
index 19902ccc0c40dfde72e9f1348b0c2809ebd531f6..25b55cb1d372ea7c331d2cc47103ecbc95aee783 100644 (file)
@@ -70,8 +70,6 @@ enum pps_features {
 };
 
 struct scpi_pps {
-       int vendor_id;
-       char *vendor;
        char *idn_vendor;
        char *idn_model;
        uint64_t features;
@@ -130,6 +128,7 @@ struct dev_context {
        struct sr_channel *cur_channel;
 };
 
+const char *get_vendor(const char *raw_vendor);
 SR_PRIV int scpi_cmd(const struct sr_dev_inst *sdi, int command, ...);
 SR_PRIV int scpi_pps_receive_data(int fd, int revents, void *cb_data);