]> sigrok.org Git - libsigrok.git/blobdiff - src/hardware/hp-59306a/protocol.c
hp-59306a: Enable/disable all outputs at once.
[libsigrok.git] / src / hardware / hp-59306a / protocol.c
index 3628f98d458e339f05b6913120b48f57546b7fc9..69af3610d590f5c89d0f72600ee97ba175d5c7f0 100644 (file)
 SR_PRIV int hp_59306a_switch_cg(const struct sr_dev_inst *sdi,
        const struct sr_channel_group *cg, gboolean enabled)
 {
-       int ret;
-       struct sr_scpi_dev_inst *scpi;
+       char *cmd;
        struct channel_group_context *cgc;
+       struct sr_scpi_dev_inst *scpi;
+       int ret;
 
-       scpi = sdi->conn;
-       cgc = cg->priv;
+       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);
+       }
 
-       if (enabled)
-               ret = sr_scpi_send(scpi, "A%zu", cgc->number);
-       else
-               ret = sr_scpi_send(scpi, "B%zu", cgc->number);
+       scpi = sdi->conn;
+       ret = sr_scpi_send(scpi, cmd);
+       g_free(cmd);
 
        return ret;
 }