X-Git-Url: http://sraa.de/git/?a=blobdiff_plain;f=dol%2Fexamples%2Fexample6%2Fsrc%2Ffilter.c;fp=dol%2Fexamples%2Fexample6%2Fsrc%2Ffilter.c;h=2715647bacf394dfac6e0b415fd1036748bbc581;hb=8c411cf24ed0eb889191aaeafd8fa1e69081df42;hp=0000000000000000000000000000000000000000;hpb=dea7a4fb1ed110d3ce6e6d9255103d724bd66c0e;p=jump.git diff --git a/dol/examples/example6/src/filter.c b/dol/examples/example6/src/filter.c new file mode 100644 index 0000000..2715647 --- /dev/null +++ b/dol/examples/example6/src/filter.c @@ -0,0 +1,32 @@ +#include +#include +#include "filter.h" + +/** + * Write zero to feedback output. + */ +void filter_init(DOLProcess *p) +{ + p->local->zero = 0.0; + p->local->factor = 0.5; + p->local->firstiteration = 1; +} + +/** + * Filter. + */ +int filter_fire(DOLProcess *p) +{ + if (p->local->firstiteration) { + DOL_write((void*)PORT_OUTB, &(p->local->zero), sizeof(float), p); + p->local->firstiteration = 0; + } + + DOL_read((void*)PORT_INA, &(p->local->inA), sizeof(float), p); + DOL_read((void*)PORT_INB, &(p->local->inB), sizeof(float), p); + p->local->out = p->local->inA + p->local->factor * p->local->inB; + DOL_write((void*)PORT_OUTA, &(p->local->out), sizeof(float), p); + DOL_write((void*)PORT_OUTB, &(p->local->out), sizeof(float), p); + + return 0; +}