]> sigrok.org Git - libsigrok.git/blobdiff - src/hardware/gmc-mh-1x-2x/api.c
Change sr_dev_inst_new() to take no parameters.
[libsigrok.git] / src / hardware / gmc-mh-1x-2x / api.c
index e8914244380c74233d4adac89c35f6f365a729ef..464fe5029bec61c76f8912cf979dc12b6f24bfe7 100644 (file)
@@ -43,19 +43,19 @@ static const uint32_t scanopts[] = {
 static const uint32_t devopts_sm[] = {
        SR_CONF_MULTIMETER,
        SR_CONF_THERMOMETER,    /**< All GMC 1x/2x multimeters seem to support this */
-       SR_CONF_LIMIT_SAMPLES,
-       SR_CONF_LIMIT_MSEC,
        SR_CONF_CONTINUOUS,
+       SR_CONF_LIMIT_SAMPLES | SR_CONF_GET | SR_CONF_SET,
+       SR_CONF_LIMIT_MSEC | SR_CONF_GET | SR_CONF_SET,
 };
 
 /** Hardware capabilities for Metrahit 2x devices in bidirectional Mode. */
 static const uint32_t devopts_bd[] = {
        SR_CONF_MULTIMETER,
        SR_CONF_THERMOMETER,    /**< All GMC 1x/2x multimeters seem to support this */
-       SR_CONF_LIMIT_SAMPLES,
-       SR_CONF_LIMIT_MSEC,
        SR_CONF_CONTINUOUS,
-       SR_CONF_POWER_OFF,
+       SR_CONF_LIMIT_SAMPLES | SR_CONF_GET | SR_CONF_SET,
+       SR_CONF_LIMIT_MSEC | SR_CONF_GET | SR_CONF_SET,
+       SR_CONF_POWER_OFF | SR_CONF_GET | SR_CONF_SET,
 };
 
 
@@ -90,7 +90,7 @@ static int read_byte(struct sr_serial_dev_inst *serial, gint64 timeout)
        int rc = 0;
 
        for (;;) {
-               rc = serial_read(serial, &result, 1);
+               rc = serial_read_nonblocking(serial, &result, 1);
                if (rc == 1) {
                        sr_spew("read: 0x%02x/%d", result, result);
                        return result;
@@ -198,7 +198,7 @@ static GSList *scan_1x_2x_rs232(GSList *options)
        if (!(serial = sr_serial_dev_inst_new(conn, serialcomm)))
                return NULL;
 
-       if (serial_open(serial, SERIAL_RDWR | SERIAL_NONBLOCK) != SR_OK) {
+       if (serial_open(serial, SERIAL_RDWR) != SR_OK) {
                sr_serial_dev_inst_free(serial);
                return NULL;
        }
@@ -223,9 +223,10 @@ static GSList *scan_1x_2x_rs232(GSList *options)
 
        if (model != METRAHIT_NONE) {
                sr_spew("%s %s detected!", VENDOR_GMC, gmc_model_str(model));
-               if (!(sdi = sr_dev_inst_new(0, SR_ST_INACTIVE, VENDOR_GMC,
-                               gmc_model_str(model), NULL)))
-                       return NULL;
+               sdi = sr_dev_inst_new();
+               sdi->status = SR_ST_INACTIVE;
+               sdi->vendor = g_strdup(VENDOR_GMC);
+               sdi->model = g_strdup(gmc_model_str(model));
                if (!(devc = g_try_malloc0(sizeof(struct dev_context)))) {
                        sr_err("Device context malloc failed.");
                        return NULL;
@@ -295,7 +296,7 @@ static GSList *scan_2x_bd232(GSList *options)
        if (!(serial = sr_serial_dev_inst_new(conn, serialcomm)))
                return NULL;
 
-       if (serial_open(serial, SERIAL_RDWR | SERIAL_NONBLOCK) != SR_OK)
+       if (serial_open(serial, SERIAL_RDWR) != SR_OK)
                goto exit_err;
 
        if (!(devc = g_try_malloc0(sizeof(struct dev_context)))) {
@@ -303,9 +304,9 @@ static GSList *scan_2x_bd232(GSList *options)
                goto exit_err;
        }
 
-       if (!(sdi = sr_dev_inst_new(0, SR_ST_INACTIVE, VENDOR_GMC, NULL, NULL)))
-               goto exit_err;
-
+       sdi = sr_dev_inst_new();
+       sdi->status = SR_ST_INACTIVE;
+       sdi->vendor = g_strdup(VENDOR_GMC);
        sdi->priv = devc;
 
        /* Send message 03 "Query multimeter version and status" */
@@ -354,8 +355,9 @@ static GSList *scan_2x_bd232(GSList *options)
                                goto exit_err;
                        }
 
-                       if (!(sdi = sr_dev_inst_new(0, SR_ST_INACTIVE, VENDOR_GMC, NULL, NULL)))
-                               goto exit_err;
+                       sdi = sr_dev_inst_new();
+                       sdi->status = SR_ST_INACTIVE;
+                       sdi->vendor = g_strdup(VENDOR_GMC);
                }
        };
 
@@ -463,7 +465,7 @@ static int config_list_common(uint32_t key, GVariant **data, const struct sr_dev
        switch (key) {
        case SR_CONF_SCAN_OPTIONS:
                *data = g_variant_new_fixed_array(G_VARIANT_TYPE_UINT32,
-                                                 scanopts, ARRAY_SIZE(scanopts), sizeof(uint32_t));
+                               scanopts, ARRAY_SIZE(scanopts), sizeof(uint32_t));
                break;
        default:
                return SR_ERR_NA;
@@ -479,7 +481,7 @@ static int config_list_sm(uint32_t key, GVariant **data, const struct sr_dev_ins
        switch (key) {
        case SR_CONF_DEVICE_OPTIONS:
                *data = g_variant_new_fixed_array(G_VARIANT_TYPE_UINT32,
-                                                 devopts_sm, ARRAY_SIZE(devopts_sm), sizeof(uint32_t));
+                               devopts_sm, ARRAY_SIZE(devopts_sm), sizeof(uint32_t));
                break;
        default:
                return config_list_common(key, data, sdi, cg);
@@ -495,7 +497,7 @@ static int config_list_bd(uint32_t key, GVariant **data, const struct sr_dev_ins
        switch (key) {
        case SR_CONF_DEVICE_OPTIONS:
                *data = g_variant_new_fixed_array(G_VARIANT_TYPE_UINT32,
-                                                 devopts_bd, ARRAY_SIZE(devopts_bd), sizeof(uint32_t));
+                               devopts_bd, ARRAY_SIZE(devopts_bd), sizeof(uint32_t));
                break;
        default:
                return config_list_common(key, data, sdi, cg);