]> sigrok.org Git - libsigrok.git/blobdiff - session.c
sigrok.h: Add SIGROK_{MAJOR,MINOR,MICRO,}_VERSION #defines.
[libsigrok.git] / session.c
index 2cafc0f02746846f261d0556f9aad37e35ad3991..bbcf5bc923172328f5b7be322f7172c3304861aa 100644 (file)
--- a/session.c
+++ b/session.c
@@ -24,6 +24,7 @@
 #include <string.h>
 #include <glib.h>
 #include <sigrok.h>
+#include <sigrok-internal.h>
 
 /* demo.c */
 extern GIOChannel channels[2];
@@ -32,7 +33,7 @@ struct source {
        int fd;
        int events;
        int timeout;
-       receive_data_callback cb;
+       sr_receive_data_callback cb;
        void *user_data;
 };
 
@@ -53,6 +54,7 @@ struct sr_session *sr_session_new(void)
 
 void sr_session_destroy(void)
 {
+
        g_slist_free(session->devices);
 
        /* TODO: Loop over protocol decoders and free them. */
@@ -70,8 +72,8 @@ int sr_session_device_add(struct sr_device *device)
 {
        int ret;
 
-       if (device->plugin && device->plugin->open) {
-               ret = device->plugin->open(device->plugin_index);
+       if (device->plugin && device->plugin->opendev) {
+               ret = device->plugin->opendev(device->plugin_index);
                if (ret != SR_OK)
                        return ret;
        }
@@ -81,6 +83,7 @@ int sr_session_device_add(struct sr_device *device)
        return SR_OK;
 }
 
+#if 0
 void sr_session_pa_clear(void)
 {
        /*
@@ -91,10 +94,11 @@ void sr_session_pa_clear(void)
        session->analyzers = NULL;
 }
 
-void sr_session_pa_add(struct analyzer *an)
+void sr_session_pa_add(struct sr_analyzer *an)
 {
        session->analyzers = g_slist_append(session->analyzers, an);
 }
+#endif
 
 void sr_session_datafeed_callback_clear(void)
 {
@@ -102,7 +106,7 @@ void sr_session_datafeed_callback_clear(void)
        session->datafeed_callbacks = NULL;
 }
 
-void sr_session_datafeed_callback_add(datafeed_callback callback)
+void sr_session_datafeed_callback_add(sr_datafeed_callback callback)
 {
        session->datafeed_callbacks =
            g_slist_append(session->datafeed_callbacks, callback);
@@ -156,7 +160,7 @@ int sr_session_start(void)
        GSList *l;
        int ret;
 
-       g_message("session: starting");
+       sr_info("session: starting");
        for (l = session->devices; l; l = l->next) {
                device = l->data;
                if ((ret = device->plugin->start_acquisition(
@@ -170,7 +174,7 @@ int sr_session_start(void)
 void sr_session_run(void)
 {
 
-       g_message("session: running");
+       sr_info("session: running");
        session->running = TRUE;
 
        /* do we have real sources? */
@@ -187,7 +191,7 @@ void sr_session_run(void)
 void sr_session_halt(void)
 {
 
-       g_message("session: halting");
+       sr_info("session: halting");
        session->running = FALSE;
 
 }
@@ -197,7 +201,7 @@ void sr_session_stop(void)
        struct sr_device *device;
        GSList *l;
 
-       g_message("session: stopping");
+       sr_info("session: stopping");
        session->running = FALSE;
        for (l = session->devices; l; l = l->next) {
                device = l->data;
@@ -207,10 +211,37 @@ void sr_session_stop(void)
 
 }
 
+static void datafeed_dump(struct sr_datafeed_packet *packet)
+{
+       struct sr_datafeed_logic *logic;
+
+       switch (packet->type) {
+       case SR_DF_HEADER:
+               sr_dbg("bus: received SR_DF_HEADER");
+               break;
+       case SR_DF_TRIGGER:
+               sr_dbg("bus: received SR_DF_TRIGGER at %lu ms",
+                               packet->timeoffset / 1000000);
+               break;
+       case SR_DF_LOGIC:
+               logic = packet->payload;
+               sr_dbg("bus: received SR_DF_LOGIC at %f ms duration %f ms, %"PRIu64" bytes",
+                               packet->timeoffset / 1000000.0, packet->duration / 1000000.0,
+                               logic->length);
+               break;
+       case SR_DF_END:
+               sr_dbg("bus: received SR_DF_END");
+               break;
+       default:
+               sr_dbg("bus: received unknown packet type %d", packet->type);
+       }
+
+}
+
 void sr_session_bus(struct sr_device *device, struct sr_datafeed_packet *packet)
 {
        GSList *l;
-       datafeed_callback cb;
+       sr_datafeed_callback cb;
 
        /*
         * TODO: Send packet through PD pipe, and send the output of that to
@@ -218,12 +249,13 @@ void sr_session_bus(struct sr_device *device, struct sr_datafeed_packet *packet)
         */
        for (l = session->datafeed_callbacks; l; l = l->next) {
                cb = l->data;
+               datafeed_dump(packet);
                cb(device, packet);
        }
 }
 
 void sr_session_source_add(int fd, int events, int timeout,
-               receive_data_callback callback, void *user_data)
+               sr_receive_data_callback callback, void *user_data)
 {
        struct source *new_sources, *s;