# HG changeset patch # User Tero Marttila # Date 1397235062 -10800 # Node ID 72175852afd2a400ea95f749c2ece6391702d7eb # Parent ef9fe98ebf7225d6950290d6bae67d4e69fb44f8 dmx: support multi-valued cmd_fill, separate cmd_range diff -r ef9fe98ebf72 -r 72175852afd2 src/hello-dmx.c --- a/src/hello-dmx.c Fri Apr 11 19:30:41 2014 +0300 +++ b/src/hello-dmx.c Fri Apr 11 19:51:02 2014 +0300 @@ -119,10 +119,51 @@ } /* - * Set output range to value. + * Fill output range with values. + * + * r ... */ int cmd_fill () { + if (console.argc < 3) { + return '!'; + } + + byte start = console.argv[0]; + byte end = console.argv[1]; + + if (!start) { + return '!'; + } + + if (end < start) { + return '!'; + } + + // apply + // arg is 1..256 + byte c = start - 1; + + for ( ; c < end && c < DMX_COUNT - 1; ) { + for (byte a = 2; a < console.argc && c < DMX_COUNT - 1; a++) { + dmx.out[c++] = console.argv[a]; + } + } + + if (c > dmx.count) { + dmx.count = c; + } + + return 0; +} + +/* + * Set output start-stop/step range to value. + * + * r + */ +int cmd_range () +{ if (console.argc != 4) { return '!'; } @@ -156,7 +197,6 @@ return 0; } - /* * Set output to max. zeroes */ @@ -191,6 +231,7 @@ case 'c': return cmd_clear(); case 'o': return cmd_out(); case 'f': return cmd_fill(); + case 'r': return cmd_range(); case 's': return cmd_set(); case 'z': return cmd_zero();