X-Git-Url: http://sraa.de/git/?a=blobdiff_plain;f=dol%2Fexamples%2Fexamplewindowedfifo%2Fsrc%2Fsquare.c;fp=dol%2Fexamples%2Fexamplewindowedfifo%2Fsrc%2Fsquare.c;h=7e0b5d2b6377649cb3de05d388b18c500bb06cb2;hb=8c411cf24ed0eb889191aaeafd8fa1e69081df42;hp=0000000000000000000000000000000000000000;hpb=dea7a4fb1ed110d3ce6e6d9255103d724bd66c0e;p=jump.git diff --git a/dol/examples/examplewindowedfifo/src/square.c b/dol/examples/examplewindowedfifo/src/square.c new file mode 100644 index 0000000..7e0b5d2 --- /dev/null +++ b/dol/examples/examplewindowedfifo/src/square.c @@ -0,0 +1,29 @@ +#include + +#include "square.h" + +void square_init(DOLProcess *p) { + p->local->index = 0; + p->local->len = LENGTH; +} + +int square_fire(DOLProcess *p) { + float *i, *j; + + if (p->local->index < p->local->len) { + DOL_capture((void*)PORT_IN, &i, sizeof(float), p); + DOL_reserve((void*)PORT_OUT, &j, sizeof(float), p); + *j = *i * *i; + DOL_consume((void*)PORT_IN, p); + DOL_release((void*)PORT_OUT, p); + p->local->index++; + } + + if (p->local->index >= p->local->len) { + DOL_detach(p); + return -1; + } + + return 0; +} +