make output modules a bit more crashproof
the event handler in output modules is now optional.
This commit is contained in:
parent
2507648e63
commit
9ab95e5408
|
@ -24,24 +24,6 @@
|
||||||
#include <sigrok.h>
|
#include <sigrok.h>
|
||||||
#include "config.h"
|
#include "config.h"
|
||||||
|
|
||||||
static int event(struct output *o, int event_type, char **data_out,
|
|
||||||
uint64_t *length_out)
|
|
||||||
{
|
|
||||||
/* Prevent compiler warnings. */
|
|
||||||
o = o;
|
|
||||||
|
|
||||||
switch (event_type) {
|
|
||||||
case DF_TRIGGER:
|
|
||||||
/* TODO? Ignore? */
|
|
||||||
break;
|
|
||||||
case DF_END:
|
|
||||||
*data_out = NULL;
|
|
||||||
*length_out = 0;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
return SIGROK_OK;
|
|
||||||
}
|
|
||||||
|
|
||||||
static int data(struct output *o, char *data_in, uint64_t length_in,
|
static int data(struct output *o, char *data_in, uint64_t length_in,
|
||||||
char **data_out, uint64_t *length_out)
|
char **data_out, uint64_t *length_out)
|
||||||
|
@ -67,5 +49,5 @@ struct output_format output_binary = {
|
||||||
DF_LOGIC,
|
DF_LOGIC,
|
||||||
NULL,
|
NULL,
|
||||||
data,
|
data,
|
||||||
event,
|
NULL,
|
||||||
};
|
};
|
||||||
|
|
|
@ -127,16 +127,17 @@ static int event(struct output *o, int event_type, char **data_out,
|
||||||
ctx = o->internal;
|
ctx = o->internal;
|
||||||
switch (event_type) {
|
switch (event_type) {
|
||||||
case DF_TRIGGER:
|
case DF_TRIGGER:
|
||||||
/* TODO */
|
/* TODO: can a trigger mark be in a gnuplot data file? */
|
||||||
break;
|
break;
|
||||||
case DF_END:
|
case DF_END:
|
||||||
*data_out = NULL;
|
|
||||||
*length_out = 0;
|
|
||||||
free(o->internal);
|
free(o->internal);
|
||||||
o->internal = NULL;
|
o->internal = NULL;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
*data_out = NULL;
|
||||||
|
*length_out = 0;
|
||||||
|
|
||||||
return SIGROK_OK;
|
return SIGROK_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -135,7 +135,9 @@ static int event(struct output *o, int event_type, char **data_out,
|
||||||
ctx = o->internal;
|
ctx = o->internal;
|
||||||
switch (event_type) {
|
switch (event_type) {
|
||||||
case DF_TRIGGER:
|
case DF_TRIGGER:
|
||||||
/* TODO */
|
/* TODO: can a trigger mark be in a VCD file? */
|
||||||
|
*data_out = NULL;
|
||||||
|
*length_out = 0;
|
||||||
break;
|
break;
|
||||||
case DF_END:
|
case DF_END:
|
||||||
outlen = strlen("$dumpoff\n$end\n");
|
outlen = strlen("$dumpoff\n$end\n");
|
||||||
|
@ -149,6 +151,10 @@ static int event(struct output *o, int event_type, char **data_out,
|
||||||
free(o->internal);
|
free(o->internal);
|
||||||
o->internal = NULL;
|
o->internal = NULL;
|
||||||
break;
|
break;
|
||||||
|
default:
|
||||||
|
*data_out = NULL;
|
||||||
|
*length_out = 0;
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
return SIGROK_OK;
|
return SIGROK_OK;
|
||||||
|
|
Loading…
Reference in New Issue