X-Git-Url: https://sigrok.org/gitweb/?a=blobdiff_plain;ds=inline;f=src%2Fhardware%2Fbaylibre-acme%2Fprotocol.c;h=ca09eba069c51a0c017f851b53b31d5779346d58;hb=1fe04eb8d6c84c0013413991d0632022fc0643f7;hp=3ceee6c14b7f6d34e4ca5c987f79a18be4f46bb0;hpb=d258022db0b79dffc2bbdde0882e821966dbc312;p=libsigrok.git diff --git a/src/hardware/baylibre-acme/protocol.c b/src/hardware/baylibre-acme/protocol.c index 3ceee6c1..ca09eba0 100644 --- a/src/hardware/baylibre-acme/protocol.c +++ b/src/hardware/baylibre-acme/protocol.c @@ -201,13 +201,12 @@ static void append_channel(struct sr_dev_inst *sdi, struct sr_channel_group *cg, cp->ch_type = type; cp->probe = cg->priv; - ch = sr_channel_new(devc->num_channels++, + ch = sr_channel_new(sdi, devc->num_channels++, SR_CHANNEL_ANALOG, TRUE, name); g_free(name); ch->priv = cp; cg->channels = g_slist_append(cg->channels, ch); - sdi->channels = g_slist_append(sdi->channels, ch); } SR_PRIV gboolean bl_acme_register_probe(struct sr_dev_inst *sdi, int type, @@ -246,6 +245,20 @@ SR_PRIV gboolean bl_acme_register_probe(struct sr_dev_inst *sdi, int type, return TRUE; } +SR_PRIV int bl_acme_get_probe_type(const struct sr_channel_group *cg) +{ + struct channel_group_priv *cgp = cg->priv; + + return cgp->probe_type; +} + +SR_PRIV int bl_acme_probe_has_pws(const struct sr_channel_group *cg) +{ + struct channel_group_priv *cgp = cg->priv; + + return sr_gpio_getval_export(pws_info_gpios[cgp->index]); +} + /* * Sets path to the hwmon attribute if this channel group * supports shunt resistance setting. The caller has to supply @@ -329,11 +342,10 @@ SR_PRIV int bl_acme_set_shunt(const struct sr_channel_group *cg, uint64_t shunt) fd = g_fopen(path->str, "w"); if (!fd) { sr_err("Error opening %s: %s", path->str, strerror(errno)); - g_string_free(path, TRUE); - return SR_ERR_IO; + ret = SR_ERR_IO; + goto out; } - g_string_free(path, TRUE); g_fprintf(fd, "%" PRIu64 "\n", MOHM_TO_UOHM(shunt)); fclose(fd); @@ -350,8 +362,7 @@ SR_PRIV int bl_acme_read_power_state(const struct sr_channel_group *cg, cgp = cg->priv; - val = sr_gpio_getval_export(pws_info_gpios[cgp->index]); - if (val != 1) { + if (!bl_acme_probe_has_pws(cg)) { sr_err("Probe has no power-switch"); return SR_ERR_ARG; } @@ -370,8 +381,7 @@ SR_PRIV int bl_acme_set_power_off(const struct sr_channel_group *cg, cgp = cg->priv; - val = sr_gpio_getval_export(pws_info_gpios[cgp->index]); - if (val != 1) { + if (!bl_acme_probe_has_pws(cg)) { sr_err("Probe has no power-switch"); return SR_ERR_ARG; } @@ -504,7 +514,7 @@ SR_PRIV int bl_acme_receive_data(int fd, int revents, void *cb_data) packet.type = SR_DF_ANALOG; packet.payload = &analog; - memset(&analog, 0, sizeof(analog)); + memset(&analog, 0, sizeof(struct sr_datafeed_analog)); analog.data = &valf; /*