]> sigrok.org Git - libsigrok.git/commitdiff
Add raw binary output format.
authorUwe Hermann <redacted>
Mon, 12 Apr 2010 19:22:58 +0000 (21:22 +0200)
committerUwe Hermann <redacted>
Mon, 12 Apr 2010 19:22:58 +0000 (21:22 +0200)
Also, rename the "bin" format to "bits" for now to avoid confusion.

Makefile.am
output/output.c
output/output_binary.c [new file with mode: 0644]
output/output_text.c

index 62c2e2593af864a5ec7eac45d25ee07430d3147d..3c2236a75c97fb138398256a18859f84ba65afda 100644 (file)
@@ -38,6 +38,7 @@ libsigrok_la_SOURCES = \
        hardware/zeroplus-logic-cube/gl_usb.c \
        hardware/zeroplus-logic-cube/gl_usb.h \
        hardware/zeroplus-logic-cube/zeroplus.c \
+       output/output_binary.c \
        output/output_text.c \
        output/output_vcd.c \
        output/output_gnuplot.c \
index 9bda9893851576e616defa73e0163e3741963e15..aa817d9d8438723ddff50551c1e042365d5bdc28 100644 (file)
 
 extern struct output_format output_text_binary;
 extern struct output_format output_text_hex;
+extern struct output_format output_binary;
 extern struct output_format output_vcd;
 extern struct output_format output_gnuplot;
 
 struct output_format *output_module_list[] = {
        &output_text_binary,
        &output_text_hex,
+       &output_binary,
        &output_vcd,
        &output_gnuplot,
        NULL,
diff --git a/output/output_binary.c b/output/output_binary.c
new file mode 100644 (file)
index 0000000..38338e3
--- /dev/null
@@ -0,0 +1,90 @@
+/*
+ * This file is part of the sigrok project.
+ *
+ * Copyright (C) 2010 Uwe Hermann <uwe@hermann-uwe.de>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301 USA
+ */
+
+#include <stdlib.h>
+#include <string.h>
+#include <glib.h>
+#include <sigrok.h>
+#include "config.h"
+
+static int init(struct output *o)
+{
+       /* Prevent compiler warnings. */
+       o = o;
+
+       /* Nothing so far, but we might want to add stuff here later. */
+       return 0;
+}
+
+static int event(struct output *o, int event_type, char **data_out,
+                uint64_t *length_out)
+{
+       char *outbuf;
+       int outlen = 1; /* FIXME */
+
+       /* Prevent compiler warnings. */
+       o = o;
+       event_type = event_type;
+
+       switch(event_type) {
+       case DF_TRIGGER:
+               break;
+       case DF_END:
+               outbuf = calloc(1, outlen); /* FIXME */
+               if (outbuf == NULL)
+                       return SIGROK_ERR_MALLOC;
+               *data_out = outbuf;
+               *length_out = outlen;
+               break;
+       }
+
+       return SIGROK_OK;
+}
+
+static int data(struct output *o, char *data_in, uint64_t length_in,
+               char **data_out, uint64_t *length_out)
+{
+       uint64_t outsize;
+       char *outbuf;
+
+       /* Prevent compiler warnings. */
+       o = o;
+
+       outsize = length_in;
+       outbuf = calloc(1, outsize);
+       if (outbuf == NULL)
+               return SIGROK_ERR_MALLOC;
+
+       /* TODO: Are disabled probes handled correctly? */
+       memcpy(outbuf, data_in, length_in);
+
+       *data_out = outbuf;
+       *length_out = outsize;
+
+       return SIGROK_OK;
+}
+
+struct output_format output_binary = {
+       "binary",
+       "Raw binary",
+       init,
+       data,
+       event,
+};
index bd2dfcd63cb3d8e9fce01140275abebf08fbb188..a549e1f6b4053e061c1b209eaaba92be49b35fb1 100644 (file)
@@ -258,8 +258,8 @@ static int data_hex(struct output *o, char *data_in, uint64_t length_in, char **
 
 
 struct output_format output_text_binary = {
-       "bin",
-       "Text (binary)",
+       "bits",
+       "Text (bits)",
        init_binary,
        data_binary,
        event