From: Uwe Hermann Date: Mon, 12 Apr 2010 19:22:58 +0000 (+0200) Subject: Add raw binary output format. X-Git-Tag: libsigrok-0.1.0~566 X-Git-Url: https://sigrok.org/gitaction?a=commitdiff_plain;h=1c5b9d302c410cdd1cba441f618e0e3f7afa137d;p=libsigrok.git Add raw binary output format. Also, rename the "bin" format to "bits" for now to avoid confusion. --- diff --git a/Makefile.am b/Makefile.am index 62c2e259..3c2236a7 100644 --- a/Makefile.am +++ b/Makefile.am @@ -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 \ diff --git a/output/output.c b/output/output.c index 9bda9893..aa817d9d 100644 --- a/output/output.c +++ b/output/output.c @@ -21,12 +21,14 @@ 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 index 00000000..38338e37 --- /dev/null +++ b/output/output_binary.c @@ -0,0 +1,90 @@ +/* + * This file is part of the sigrok project. + * + * Copyright (C) 2010 Uwe Hermann + * + * 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 +#include +#include +#include +#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, +}; diff --git a/output/output_text.c b/output/output_text.c index bd2dfcd6..a549e1f6 100644 --- a/output/output_text.c +++ b/output/output_text.c @@ -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