X-Git-Url: https://sigrok.org/gitweb/?a=blobdiff_plain;ds=sidebyside;f=src%2Fhardware%2Fyokogawa-dlm%2Fapi.c;h=f80e83dceb7e91537252d05b37a516e12e225ac3;hb=1c8110dbc75ef1e5d97ac408b6539ae8d48804e6;hp=0fca7f0428a3c92ab4f4cbd8f8868c1277df99e4;hpb=fcd6a8bdf179d7ac0558eef2e205bfb941e5ba5c;p=libsigrok.git diff --git a/src/hardware/yokogawa-dlm/api.c b/src/hardware/yokogawa-dlm/api.c index 0fca7f04..f80e83dc 100644 --- a/src/hardware/yokogawa-dlm/api.c +++ b/src/hardware/yokogawa-dlm/api.c @@ -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;