]> sigrok.org Git - libsigrok.git/blobdiff - src/hardware/yokogawa-dlm/api.c
scpi-pps: don't break SCPI devices when scanning for HP-IB devices
[libsigrok.git] / src / hardware / yokogawa-dlm / api.c
index 16983653a94ee45a4e239c11c69d9de41cb42a86..f80e83dceb7e91537252d05b37a516e12e225ac3 100644 (file)
@@ -164,6 +164,8 @@ static int check_channel_group(struct dev_context *devc,
 {
        const struct scope_config *model;
 
+       if (!devc)
+               return CG_INVALID;
        model = devc->model_config;
 
        if (!cg)
@@ -211,22 +213,18 @@ static int config_get(uint32_t key, GVariant **data,
                ret = SR_OK;
                break;
        case SR_CONF_NUM_VDIV:
-               if (!cg) {
+               if (!cg)
                        return SR_ERR_CHANNEL_GROUP;
-               } else if (cg_type == CG_ANALOG) {
-                               *data = g_variant_new_int32(model->num_ydivs);
-                               ret = SR_OK;
-                               break;
-               } else {
-                       ret = SR_ERR_NA;
-               }
+               if (cg_type != CG_ANALOG)
+                       return SR_ERR_NA;
+               *data = g_variant_new_int32(model->num_ydivs);
+               ret = SR_OK;
                break;
        case SR_CONF_VDIV:
-               ret = SR_ERR_NA;
-               if (!cg) {
+               if (!cg)
                        return SR_ERR_CHANNEL_GROUP;
-               } else if (cg_type != CG_ANALOG)
-                       break;
+               if (cg_type != CG_ANALOG)
+                       return SR_ERR_NA;
                if ((idx = std_cg_idx(cg, devc->analog_groups, model->analog_channels)) < 0)
                        return SR_ERR_ARG;
                *data = g_variant_new("(tt)",
@@ -247,11 +245,10 @@ static int config_get(uint32_t key, GVariant **data,
                ret = SR_OK;
                break;
        case SR_CONF_COUPLING:
-               ret = SR_ERR_NA;
-               if (!cg) {
+               if (!cg)
                        return SR_ERR_CHANNEL_GROUP;
-               } else if (cg_type != CG_ANALOG)
-                       break;
+               if (cg_type != CG_ANALOG)
+                       return SR_ERR_NA;
                if ((idx = std_cg_idx(cg, devc->analog_groups, model->analog_channels)) < 0)
                        return SR_ERR_ARG;
                *data = g_variant_new_string((*model->coupling_options)[state->analog_states[idx].coupling]);
@@ -289,8 +286,6 @@ static int config_set(uint32_t key, GVariant *data,
        state = devc->model_state;
        update_sample_rate = FALSE;
 
-       ret = SR_ERR_NA;
-
        switch (key) {
        case SR_CONF_LIMIT_FRAMES:
                devc->frame_limit = g_variant_get_uint64(data);
@@ -414,6 +409,8 @@ static int config_list(uint32_t key, GVariant **data,
                        *data = g_variant_new_strv(ARRAY_AND_SIZE(dlm_trigger_slopes));
                        return SR_OK;
                case SR_CONF_NUM_HDIV:
+                       if (!model)
+                               return SR_ERR_ARG;
                        *data = g_variant_new_uint32(model->num_xdivs);
                        return SR_OK;
                default: