X-Git-Url: https://sigrok.org/gitweb/?p=sigrok-cli.git;a=blobdiff_plain;f=sigrok-cli.c;h=a1ab7362ce8cfceb7bba44dc0a4e601579c367eb;hp=a37b19d515890f4fd94b81d60e00ed4dba7dbd8a;hb=644bb1e88009546aadd919695d3dd602f06441d7;hpb=630293b49d7645f2525ac5addad37c1f9315d2ce diff --git a/sigrok-cli.c b/sigrok-cli.c index a37b19d..a1ab736 100644 --- a/sigrok-cli.c +++ b/sigrok-cli.c @@ -351,11 +351,8 @@ static void show_dev_detail(void) sdi = devices->data; print_dev_line(sdi); - /* This properly opens and initializes the device, so we can get - * current settings. */ - sr_session_new(); - if (sr_session_dev_add(sdi) != SR_OK) { - g_critical("Failed to use device."); + if (sr_dev_open(sdi) != SR_OK) { + g_critical("Failed to open device."); return; } @@ -563,7 +560,7 @@ static void show_dev_detail(void) } g_variant_unref(gvar_opts); - sr_session_destroy(); + sr_dev_close(sdi); } @@ -875,15 +872,15 @@ static void datafeed_in(const struct sr_dev_inst *sdi, break; } - if (o && o->format->recv) { - out = o->format->recv(o, sdi, packet); - if (out && out->len) { + if (o && o->format->receive) { + if (o->format->receive(o, sdi, packet, &out) == SR_OK && out) { fwrite(out->str, 1, out->len, outfile); fflush(outfile); + g_string_free(out, TRUE); } } - /* SR_DF_END needs to be handled after the output module's recv() + /* SR_DF_END needs to be handled after the output module's receive() * is called, so it can properly clean up that module etc. */ if (packet->type == SR_DF_END) { g_debug("cli: Received SR_DF_END"); @@ -1531,15 +1528,14 @@ static void set_options(void) } sdi = devices->data; - sr_session_new(); - if (sr_session_dev_add(sdi) != SR_OK) { - g_critical("Failed to use device."); + if (sr_dev_open(sdi) != SR_OK) { + g_critical("Failed to open device."); return; } set_dev_options(sdi, devargs); - sr_session_destroy(); + sr_dev_close(sdi); g_slist_free(devices); g_hash_table_destroy(devargs); @@ -1608,8 +1604,13 @@ static void run_session(void) sr_session_new(); sr_session_datafeed_callback_add(datafeed_in, NULL); + if (sr_dev_open(sdi) != SR_OK) { + g_critical("Failed to open device."); + return; + } + if (sr_session_dev_add(sdi) != SR_OK) { - g_critical("Failed to use device."); + g_critical("Failed to add device to session."); sr_session_destroy(); return; }