]> sigrok.org Git - libsigrok.git/blobdiff - output/output_binary.c
Initial support for CSV as output format.
[libsigrok.git] / output / output_binary.c
index 80b1447f75d9eabfa06488e5b3d4bf2f0ae26bd4..e5c1e4adb27ff537ffdeaa6c1206421466a6d443 100644 (file)
 #include <string.h>
 #include <glib.h>
 #include <sigrok.h>
+#include <sigrok-internal.h>
 #include "config.h"
 
-
-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;
 
        /* Prevent compiler warnings. */
        o = o;
-       event_type = event_type;
-       data_out = data_out;
 
-       switch (event_type) {
-       case DF_TRIGGER:
-               break;
-       case DF_END:
-               *length_out = 0;
-               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;
+       }
 
        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",
-       NULL,
-       data,
-       event,
+struct sr_output_format output_binary = {
+       .id = "binary",
+       .description = "Raw binary",
+       .df_type = SR_DF_LOGIC,
+       .init = NULL,
+       .data = data,
+       .event = NULL,
 };