]> sigrok.org Git - libsigrok.git/blobdiff - src/hardware/yokogawa-dlm/api.c
korad-kaxxxxp: use ID text prefix with optional version for RND models
[libsigrok.git] / src / hardware / yokogawa-dlm / api.c
index 0fca7f0428a3c92ab4f4cbd8f8868c1277df99e4..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_type == CG_NONE) {
+               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_type == CG_NONE) {
+               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_type == CG_NONE) {
+               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);
@@ -304,7 +299,7 @@ static int config_set(uint32_t key, GVariant *data,
                ret = dlm_trigger_source_set(sdi->conn, (*model->trigger_sources)[idx]);
                break;
        case SR_CONF_VDIV:
-               if (cg_type == CG_NONE)
+               if (!cg)
                        return SR_ERR_CHANNEL_GROUP;
                if ((idx = std_u64_tuple_idx(data, ARRAY_AND_SIZE(dlm_vdivs))) < 0)
                        return SR_ERR_ARG;
@@ -351,7 +346,7 @@ static int config_set(uint32_t key, GVariant *data,
                ret = dlm_trigger_slope_set(sdi->conn, state->trigger_slope);
                break;
        case SR_CONF_COUPLING:
-               if (cg_type == CG_NONE)
+               if (!cg)
                        return SR_ERR_CHANNEL_GROUP;
                if ((idx = std_str_idx(data, *model->coupling_options, model->num_coupling_options)) < 0)
                        return SR_ERR_ARG;
@@ -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:
@@ -434,12 +431,12 @@ static int config_list(uint32_t key, GVariant **data,
                        *data = std_gvar_array_u32(NULL, 0);
                break;
        case SR_CONF_COUPLING:
-               if (cg_type == CG_NONE)
+               if (!cg)
                        return SR_ERR_CHANNEL_GROUP;
                *data = g_variant_new_strv(*model->coupling_options, model->num_coupling_options);
                break;
        case SR_CONF_VDIV:
-               if (cg_type == CG_NONE)
+               if (!cg)
                        return SR_ERR_CHANNEL_GROUP;
                *data = std_gvar_tuple_array(ARRAY_AND_SIZE(dlm_vdivs));
                break;