]> sigrok.org Git - sigrok-cli.git/blobdiff - sigrok-cli.c
Use new output API receive() function
[sigrok-cli.git] / sigrok-cli.c
index 75015aa2b80bda18c11eb0000fc5ef78044d81f3..a1ab7362ce8cfceb7bba44dc0a4e601579c367eb 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * This file is part of the sigrok project.
+ * This file is part of the sigrok-cli project.
  *
  * Copyright (C) 2012 Bert Vermeulen <bert@biot.com>
  *
@@ -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;
        }