Commit | Line | Data |
---|---|---|
2b49e4e2 TW |
1 | package kaka.cakelight; |
2 | ||
32ed0579 TW |
3 | import kaka.cakelight.mode.AmbientMode; |
4 | import kaka.cakelight.mode.SingleColorMode; | |
5 | import kaka.cakelight.mode.SunriseMode; | |
6 | import kaka.cakelight.mode.TwoColorNoiseMode; | |
7 | import kaka.cakelight.mode.VideoMode; | |
2b49e4e2 TW |
8 | |
9 | import java.util.function.BiFunction; | |
10 | ||
11 | class Commands { | |
12 | private static Console.Command command(String[] names, BiFunction<Console, String[], Boolean> activate) { | |
13 | return new Console.Command() { | |
14 | @Override | |
15 | public String[] getNames() { | |
16 | return names; | |
17 | } | |
18 | ||
19 | @Override | |
20 | public void activate(Console console, String[] args) { | |
21 | if (!activate.apply(console, args)) { | |
22 | console.out("did NOT run command"); | |
23 | } | |
24 | } | |
25 | }; | |
26 | } | |
27 | ||
28 | static Console.Command quit() { | |
29 | return command(new String[] {"q", "quit"}, (console, args) -> { | |
30 | console.getCakelight().turnOff(); | |
31 | console.out("stopping cakelight"); | |
32 | return true; | |
33 | }); | |
34 | } | |
35 | ||
36 | static Console.Command video() { | |
37 | return command(new String[] {"v", "video"}, (console, args) -> { | |
38 | console.getCakelight().setMode(new VideoMode()); | |
39 | return true; | |
40 | }); | |
41 | } | |
42 | ||
43 | static Console.Command color() { | |
44 | return command(new String[] {"c", "col", "color"}, (console, args) -> { | |
45 | Color c = null; | |
46 | if (args.length == 1) { | |
47 | c = console.parseColor(args[0]); | |
48 | } else if (args.length == 3) { | |
49 | c = Color.rgb( | |
50 | Integer.parseInt(args[0]), | |
51 | Integer.parseInt(args[1]), | |
52 | Integer.parseInt(args[2]) | |
53 | ); | |
54 | } | |
55 | if (c != null) { | |
56 | console.getCakelight().setMode(new SingleColorMode(c)); | |
57 | console.out("setting color to " + c); | |
58 | return true; | |
59 | } else { | |
60 | return false; | |
61 | } | |
62 | }); | |
63 | } | |
64 | ||
65 | static Console.Command brightness() { | |
66 | return command(new String[] {"b", "brightness"}, (console, args) -> { | |
67 | if (args.length == 1) { | |
cc124c32 | 68 | int b = Integer.parseInt(args[0].replaceAll("[+-]+", "")); |
c6384b55 TW |
69 | if (args[0].startsWith("+")) { |
70 | b = Math.min(console.getConfig().leds.brightness + b, 31); | |
71 | } else if (args[0].startsWith("-")) { | |
72 | b = Math.max(console.getConfig().leds.brightness - b, 0); | |
73 | } | |
2b49e4e2 TW |
74 | console.getConfig().leds.brightness = b; |
75 | console.out("setting brightness to " + b); | |
76 | return true; | |
77 | } else { | |
78 | return false; | |
79 | } | |
80 | }); | |
81 | } | |
82 | ||
83 | static Console.Command gamma() { | |
84 | return command(new String[] {"g", "gamma"}, (console, args) -> { | |
85 | if (args.length == 1) { | |
86 | double g = Double.parseDouble(args[0]); | |
87 | console.getConfig().gamma = g; | |
88 | Color.calculateGammaCorrection(g); | |
89 | console.out("setting gamma to " + g); | |
90 | return true; | |
91 | } else { | |
92 | return false; | |
93 | } | |
94 | }); | |
95 | } | |
96 | ||
97 | static Console.Command saturation() { | |
98 | return command(new String[] {"s", "saturation"}, (console, args) -> { | |
99 | if (args.length == 1) { | |
100 | double s = Double.parseDouble(args[0]); | |
101 | console.getConfig().video.saturation = s; | |
102 | console.out("setting saturation to " + s); | |
103 | return true; | |
104 | } else { | |
105 | return false; | |
106 | } | |
107 | }); | |
108 | } | |
109 | ||
110 | static Console.Command ambientMode() { | |
111 | return command(new String[] {"m", "mode"}, (console, args) -> { | |
112 | if (args.length == 1) { | |
113 | console.getCakelight().setMode(new AmbientMode(new String[] {args[0]})); | |
114 | console.out("setting ambient mode to " + args[0]); | |
115 | return true; | |
116 | } else { | |
117 | return false; | |
118 | } | |
119 | }); | |
120 | } | |
121 | ||
122 | static Console.Command twoColorNoiseMode() { | |
123 | return command(new String[] {"n", "noise"}, (console, args) -> { | |
124 | if (args.length == 2) { | |
125 | console.getCakelight().setMode(new TwoColorNoiseMode( | |
126 | console.parseColor(args[0]), | |
127 | console.parseColor(args[1]) | |
128 | )); | |
129 | console.out("setting two-color noise mode"); | |
130 | return true; | |
131 | } else { | |
132 | return false; | |
133 | } | |
134 | }); | |
135 | } | |
40a06a9b TW |
136 | |
137 | static Console.Command sunriseMode() { | |
138 | return command(new String[] {"sunrise"}, (console, args) -> { | |
139 | if (args.length == 1) { | |
140 | int durationSeconds = Integer.parseInt(args[0]); | |
141 | console.getCakelight().setMode(new SunriseMode(durationSeconds)); | |
142 | console.out("setting sunrise mode with duration " + durationSeconds); | |
143 | return true; | |
144 | } else { | |
145 | return false; | |
146 | } | |
147 | }); | |
148 | } | |
2b49e4e2 | 149 | } |