X-Git-Url: http://sigrok.org/gitweb/?a=blobdiff_plain;f=src%2Fhardware%2Fhameg-hmo%2Fapi.c;h=e4c53887e4ececca857129c47ff09bf2298d87a2;hb=d6d87fa2a28edbfa0f1c66ef4b03c9cd8bda095e;hp=44841e852c18d5d705a60d020637b09ce89bdda5;hpb=3782e57129fa661a773be337c9f548708f593eb0;p=libsigrok.git diff --git a/src/hardware/hameg-hmo/api.c b/src/hardware/hameg-hmo/api.c index 44841e85..e4c53887 100644 --- a/src/hardware/hameg-hmo/api.c +++ b/src/hardware/hameg-hmo/api.c @@ -246,8 +246,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); @@ -380,6 +378,8 @@ static int config_list(uint32_t key, GVariant **data, case SR_CONF_COUPLING: if (!cg) return SR_ERR_CHANNEL_GROUP; + if (!model) + return SR_ERR_ARG; *data = g_variant_new_strv(*model->coupling_options, model->num_coupling_options); break; case SR_CONF_TRIGGER_SOURCE: @@ -400,6 +400,8 @@ static int config_list(uint32_t key, GVariant **data, case SR_CONF_VDIV: if (!cg) return SR_ERR_CHANNEL_GROUP; + if (!model) + return SR_ERR_ARG; *data = std_gvar_tuple_array(*model->vdivs, model->num_vdivs); break; default: @@ -507,6 +509,7 @@ static int hmo_setup_channels(const struct sr_dev_inst *sdi) struct sr_channel *ch; struct dev_context *devc; struct sr_scpi_dev_inst *scpi; + int ret; devc = sdi->priv; scpi = sdi->conn; @@ -552,23 +555,28 @@ static int hmo_setup_channels(const struct sr_dev_inst *sdi) setup_changed = TRUE; break; default: + g_free(pod_enabled); return SR_ERR; } } + ret = SR_OK; for (i = 0; i < model->digital_pods; i++) { if (state->digital_pods[i] == pod_enabled[i]) continue; g_snprintf(command, sizeof(command), (*model->scpi_dialect)[SCPI_CMD_SET_DIG_POD_STATE], i + 1, pod_enabled[i]); - if (sr_scpi_send(scpi, command) != SR_OK) - return SR_ERR; + if (sr_scpi_send(scpi, command) != SR_OK) { + ret = SR_ERR; + break; + } state->digital_pods[i] = pod_enabled[i]; setup_changed = TRUE; } - g_free(pod_enabled); + if (ret != SR_OK) + return ret; if (setup_changed && hmo_update_sample_rate(sdi) != SR_OK) return SR_ERR;