X-Git-Url: https://sigrok.org/gitweb/?a=blobdiff_plain;ds=inline;f=output%2Foutput_binary.c;h=e5c1e4adb27ff537ffdeaa6c1206421466a6d443;hb=ecaf59db8d79286b69a489273f4262901c0588f8;hp=e8e25e7bedeeef3b1f3abedac52dfb9bb0b93a03;hpb=99c1fc59ed59785d44610ac07556143cb1617f01;p=libsigrok.git diff --git a/output/output_binary.c b/output/output_binary.c index e8e25e7b..e5c1e4ad 100644 --- a/output/output_binary.c +++ b/output/output_binary.c @@ -22,69 +22,49 @@ #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) +static int data(struct sr_output *o, const char *data_in, uint64_t length_in, + 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; + if (!data_in) { + sr_warn("binary output: %s: data_in was NULL", __func__); + return SR_ERR; } - 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; + if (!length_out) { + sr_warn("binary output: %s: length_out was NULL", __func__); + return SR_ERR; + } - /* Prevent compiler warnings. */ - o = o; + if (length_in == 0) { + sr_warn("binary output: %s: length_in was 0", __func__); + return SR_ERR; + } - outsize = length_in; - outbuf = calloc(1, outsize); - if (outbuf == NULL) - return SIGROK_ERR_MALLOC; + if (!(outbuf = calloc(1, length_in))) { + sr_warn("binary output: %s: outbuf calloc failed", __func__); + return SR_ERR_MALLOC; + } - /* TODO: Are disabled probes handled correctly? */ memcpy(outbuf, data_in, length_in); - *data_out = outbuf; - *length_out = outsize; + *length_out = length_in; - return SIGROK_OK; + return SR_OK; } -struct output_format output_binary = { - "binary", - "Raw binary", - init, - data, - event, +struct sr_output_format output_binary = { + .id = "binary", + .description = "Raw binary", + .df_type = SR_DF_LOGIC, + .init = NULL, + .data = data, + .event = NULL, };