]> sigrok.org Git - libsigrok.git/blobdiff - src/session.c
Remove SR_OK_CONTINUE.
[libsigrok.git] / src / session.c
index 0780a27ab3d2476e80df9e5af32ad184eb3bd9b4..20c9ce5fcea48aaa9bc75bb7cecf050276dbc829 100644 (file)
@@ -22,7 +22,7 @@
 #include <unistd.h>
 #include <string.h>
 #include <glib.h>
-#include "libsigrok.h"
+#include <libsigrok/libsigrok.h>
 #include "libsigrok-internal.h"
 
 /** @cond PRIVATE */
@@ -385,17 +385,20 @@ static int sr_session_iteration(struct sr_session *session, gboolean block)
        struct timeval tv;
 #endif
 
-       timeout = block ? 0 : session->source_timeout;
+       timeout = block ? session->source_timeout : 0;
 
 #ifdef HAVE_LIBUSB_1_0
-       ret = libusb_get_next_timeout(session->ctx->libusb_ctx, &tv);
-       if (ret < 0) {
-               sr_err("Error getting libusb timeout: %s",
-                       libusb_error_name(ret));
-               return SR_ERR;
-       } else if (ret == 1) {
-               usb_timeout = tv.tv_sec * 1000 + tv.tv_usec / 1000;
-               timeout = MIN(timeout, usb_timeout);
+       if (session->ctx->usb_source_present) {
+               timeout = block ? 0 : session->source_timeout;
+               ret = libusb_get_next_timeout(session->ctx->libusb_ctx, &tv);
+               if (ret < 0) {
+                       sr_err("Error getting libusb timeout: %s",
+                               libusb_error_name(ret));
+                       return SR_ERR;
+               } else if (ret == 1) {
+                       usb_timeout = tv.tv_sec * 1000 + tv.tv_usec / 1000;
+                       timeout = MIN(timeout, usb_timeout);
+               }
        }
 #endif
 
@@ -660,16 +663,20 @@ static void datafeed_dump(const struct sr_datafeed_packet *packet)
        const struct sr_datafeed_analog *analog;
        const struct sr_datafeed_analog2 *analog2;
 
+       /* Please use the same order as in libsigrok.h. */
        switch (packet->type) {
        case SR_DF_HEADER:
                sr_dbg("bus: Received SR_DF_HEADER packet.");
                break;
-       case SR_DF_TRIGGER:
-               sr_dbg("bus: Received SR_DF_TRIGGER packet.");
+       case SR_DF_END:
+               sr_dbg("bus: Received SR_DF_END packet.");
                break;
        case SR_DF_META:
                sr_dbg("bus: Received SR_DF_META packet.");
                break;
+       case SR_DF_TRIGGER:
+               sr_dbg("bus: Received SR_DF_TRIGGER packet.");
+               break;
        case SR_DF_LOGIC:
                logic = packet->payload;
                sr_dbg("bus: Received SR_DF_LOGIC packet (%" PRIu64 " bytes, "
@@ -680,20 +687,17 @@ static void datafeed_dump(const struct sr_datafeed_packet *packet)
                sr_dbg("bus: Received SR_DF_ANALOG packet (%d samples).",
                       analog->num_samples);
                break;
-       case SR_DF_ANALOG2:
-               analog2 = packet->payload;
-               sr_dbg("bus: Received SR_DF_ANALOG2 packet (%d samples).",
-                      analog2->num_samples);
-               break;
-       case SR_DF_END:
-               sr_dbg("bus: Received SR_DF_END packet.");
-               break;
        case SR_DF_FRAME_BEGIN:
                sr_dbg("bus: Received SR_DF_FRAME_BEGIN packet.");
                break;
        case SR_DF_FRAME_END:
                sr_dbg("bus: Received SR_DF_FRAME_END packet.");
                break;
+       case SR_DF_ANALOG2:
+               analog2 = packet->payload;
+               sr_dbg("bus: Received SR_DF_ANALOG2 packet (%d samples).",
+                      analog2->num_samples);
+               break;
        default:
                sr_dbg("bus: Received unknown packet type: %d.", packet->type);
                break;
@@ -766,6 +770,7 @@ SR_PRIV int sr_session_send(const struct sr_dev_inst *sdi,
                        packet_in = packet_out;
                }
        }
+       packet = packet_in;
 
        /*
         * If the last transform did output a packet, pass it to all datafeed