X-Git-Url: https://sigrok.org/gitweb/?p=libsigrok.git;a=blobdiff_plain;f=src%2Fhardware%2Fhp-59306a%2Fprotocol.c;h=69af3610d590f5c89d0f72600ee97ba175d5c7f0;hp=737ffde49931823f419b93a3f5610cdd7ac3af46;hb=97c3c869702ccc8fa3aa0ff05a1b53fd9882a5d3;hpb=12e7abe2197e303c484de0fa61bf2c2a96e3f596 diff --git a/src/hardware/hp-59306a/protocol.c b/src/hardware/hp-59306a/protocol.c index 737ffde4..69af3610 100644 --- a/src/hardware/hp-59306a/protocol.c +++ b/src/hardware/hp-59306a/protocol.c @@ -18,24 +18,33 @@ */ #include +#include "scpi.h" #include "protocol.h" -SR_PRIV int hp_59306a_receive_data(int fd, int revents, void *cb_data) +SR_PRIV int hp_59306a_switch_cg(const struct sr_dev_inst *sdi, + const struct sr_channel_group *cg, gboolean enabled) { - const struct sr_dev_inst *sdi; - struct dev_context *devc; + char *cmd; + struct channel_group_context *cgc; + struct sr_scpi_dev_inst *scpi; + int ret; - (void)fd; - - if (!(sdi = cb_data)) - return TRUE; - - if (!(devc = sdi->priv)) - return TRUE; - - if (revents == G_IO_IN) { - /* TODO */ + if (!cg) { + if (enabled) + cmd = g_strdup("A123456"); + else + cmd = g_strdup("B123456"); + } else { + cgc = cg->priv; + if (enabled) + cmd = g_strdup_printf("A%zu", cgc->number); + else + cmd = g_strdup_printf("B%zu", cgc->number); } - return TRUE; + scpi = sdi->conn; + ret = sr_scpi_send(scpi, cmd); + g_free(cmd); + + return ret; }