dol: initial dol commit
[jump.git] / dol / examples / exampleproducerconsumer / src / producer.c
diff --git a/dol/examples/exampleproducerconsumer/src/producer.c b/dol/examples/exampleproducerconsumer/src/producer.c
new file mode 100644 (file)
index 0000000..2e0130b
--- /dev/null
@@ -0,0 +1,37 @@
+#include <stdio.h>
+#include <string.h>
+
+#include "producer.h"
+
+// initialization function
+void producer_init(DOLProcess *p) {
+    p->local->index = 0;
+    p->local->len = 20;
+    sprintf(p->local->str, "abcdefghijklmnopqrstuvwxyz");
+
+}
+
+int producer_fire(DOLProcess *p) {
+
+    if (p->local->index < p->local->len) {
+        if (DOL_wtest((void*)PORT_OUTA, 1, p)) {
+            DOL_write((void*)PORT_OUTA, &(p->local->str[p->local->index]),
+                    1, p);
+            printf("p write to port A %c\n",
+                    p->local->str[p->local->index]);
+        }
+        else {
+            DOL_write((void*)PORT_OUTB, &(p->local->str[p->local->index]),
+                    1, p);
+            printf("p write to port B %c\n",
+                    p->local->str[p->local->index]);
+        }
+        p->local->index++;
+        return 0;
+    }
+    else {
+        DOL_detach(p);
+        return -1;
+    }
+}
+