Added a light level config (0-31) for APA102 only
authorTomas Wenström <tomas.wenstrom@gmail.com>
Thu, 24 Aug 2017 19:27:32 +0000 (21:27 +0200)
committerTomas Wenström <tomas.wenstrom@gmail.com>
Thu, 24 Aug 2017 19:29:11 +0000 (21:29 +0200)
config.properties.template
src/kaka/cakelight/Configuration.java
src/kaka/cakelight/LedFrame.java

index 7732340..a7e6633 100644 (file)
@@ -14,6 +14,7 @@ video.crop.bottom=18
 
 # Supported types: apa102, ws2801
 leds.type=apa102
+leds.level=31
 leds.cols=32
 leds.rows=17
 
index 21c2072..4d727cc 100644 (file)
@@ -98,11 +98,13 @@ public class Configuration {
     public class LedConfiguration {
         public int cols;
         public int rows;
+        public int level;
         public LedType type;
 
         private LedConfiguration(Properties prop) {
             cols = Integer.parseInt(get(prop, "leds.cols"));
             rows = Integer.parseInt(get(prop, "leds.rows"));
+            level = Math.min(0, Math.max(31, Integer.parseInt(get(prop, "leds.level", "31"))));
             switch (get(prop, "leds.type", "").toUpperCase()) {
                 case "WS2801":
                     type = LedType.WS2801;
index a0e1404..cb92dab 100644 (file)
@@ -37,7 +37,8 @@ public class LedFrame {
                 frame.goff = 2 + 4;
                 frame.boff = 1 + 4;
                 frame.bytes = new byte[4 + config.leds.getCount() * frame.stride + 4];
-                Arrays.fill(frame.bytes, 4, frame.bytes.length - 1, (byte)0xff); // Initiate the first byte of each LED + the end frame with ones
+                Arrays.fill(frame.bytes, 4, frame.bytes.length - 5, (byte)(0b11100000 | config.leds.level)); // Initiate the first byte of each LED
+                Arrays.fill(frame.bytes, frame.bytes.length - 5, frame.bytes.length - 1, (byte)0xff); // Initiate the end frame with ones
                 break;
         }
         return frame;