dmx: cmd_fill
authorTero Marttila <terom@paivola.fi>
Fri, 11 Apr 2014 19:18:15 +0300
changeset 68 be139319a961
parent 67 53743ecc9150
child 69 ef9fe98ebf72
dmx: cmd_fill
src/hello-dmx.c
--- a/src/hello-dmx.c	Fri Apr 11 19:03:49 2014 +0300
+++ b/src/hello-dmx.c	Fri Apr 11 19:18:15 2014 +0300
@@ -119,6 +119,45 @@
 }
 
 /*
+ * Set output range to value.
+ */
+int cmd_fill ()
+{
+    if (console.argc != 4) {
+        return '!';
+    }
+
+    byte start = console.argv[0];
+    byte end = console.argv[1];
+    byte skip = console.argv[2];
+    byte value = console.argv[3];
+    byte c;
+
+    if (!start) {
+        return '!';
+    }
+
+    if (end < start) {
+        return '!';
+    }
+
+    if (!skip) {
+        return '!';
+    }
+
+    for (c = start; c <= end && c < DMX_COUNT; c += skip) {
+        dmx.out[c - 1] = value;
+    }
+
+    // XXX: -1
+    if (c > dmx.count) {
+        dmx.count = c;
+    }
+
+    return 0;
+}
+
+/*
  * Set output to max. zeroes
  */
 int cmd_zero ()
@@ -151,6 +190,7 @@
     switch (console.cmd) {
         case 'c':       return cmd_clear();
         case 'o':       return cmd_out();
+        case 'f':       return cmd_fill();
         case 's':       return cmd_set();
         case 'z':       return cmd_zero();