src/hello-dmx.c
changeset 70 72175852afd2
parent 69 ef9fe98ebf72
child 72 2957be8573b9
equal deleted inserted replaced
69:ef9fe98ebf72 70:72175852afd2
   117 
   117 
   118     return 0;
   118     return 0;
   119 }
   119 }
   120 
   120 
   121 /*
   121 /*
   122  * Set output range to value.
   122  * Fill output range with values.
       
   123  *
       
   124  *  r <start> <stop> <value> ...
   123  */
   125  */
   124 int cmd_fill ()
   126 int cmd_fill ()
       
   127 {
       
   128     if (console.argc < 3) {
       
   129         return '!';
       
   130     }
       
   131 
       
   132     byte start = console.argv[0];
       
   133     byte end = console.argv[1];
       
   134 
       
   135     if (!start) {
       
   136         return '!';
       
   137     }
       
   138 
       
   139     if (end < start) {
       
   140         return '!';
       
   141     }
       
   142 
       
   143     // apply
       
   144     // arg is 1..256
       
   145     byte c = start - 1;
       
   146 
       
   147     for ( ; c < end && c < DMX_COUNT - 1; ) {
       
   148         for (byte a = 2; a < console.argc && c < DMX_COUNT - 1; a++) {
       
   149             dmx.out[c++] = console.argv[a];
       
   150         }
       
   151     }
       
   152 
       
   153     if (c > dmx.count) {
       
   154         dmx.count = c;
       
   155     }
       
   156 
       
   157     return 0;
       
   158 }
       
   159 
       
   160 /*
       
   161  * Set output start-stop/step range to value.
       
   162  *
       
   163  *  r <start> <stop> <step> <value>
       
   164  */
       
   165 int cmd_range ()
   125 {
   166 {
   126     if (console.argc != 4) {
   167     if (console.argc != 4) {
   127         return '!';
   168         return '!';
   128     }
   169     }
   129 
   170 
   154         dmx.count = c;
   195         dmx.count = c;
   155     }
   196     }
   156 
   197 
   157     return 0;
   198     return 0;
   158 }
   199 }
   159 
       
   160 /*
   200 /*
   161  * Set output to max. zeroes
   201  * Set output to max. zeroes
   162  */
   202  */
   163 int cmd_zero ()
   203 int cmd_zero ()
   164 {
   204 {
   189 {
   229 {
   190     switch (console.cmd) {
   230     switch (console.cmd) {
   191         case 'c':       return cmd_clear();
   231         case 'c':       return cmd_clear();
   192         case 'o':       return cmd_out();
   232         case 'o':       return cmd_out();
   193         case 'f':       return cmd_fill();
   233         case 'f':       return cmd_fill();
       
   234         case 'r':       return cmd_range();
   194         case 's':       return cmd_set();
   235         case 's':       return cmd_set();
   195         case 'z':       return cmd_zero();
   236         case 'z':       return cmd_zero();
   196 
   237 
   197         default:        return '?';
   238         default:        return '?';
   198     }
   239     }