* will be moved into GLucose once stabilized.
*/
public static class PandaDriver {
+
+ interface Listener {
+ public void onToggle(boolean enabled);
+ }
+
+ private Listener listener = null;
+
// IP address
public final String ip;
private static final int NO_POINT = -1;
- public PandaDriver(String ip) {
- this.ip = ip;
-
- // Initialize our OSC output stuff
- address = new NetAddress(ip, 9001);
- message = new OscMessage("/shady/pointbuffer");
-
- // Build the array of points, initialize all to nothing
- points = new int[PandaMapping.PIXELS_PER_BOARD];
- for (int i = 0; i < points.length; ++i) {
- points[i] = NO_POINT;
- }
- }
-
- private final static int FORWARD = -1;
- private final static int BACKWARD = -2;
-
////////////////////////////////////////////////////////////////
//
// READ THIS RIGHT NOW BEFORE YOU MODIFY THE BELOW!!!!!!!!!!!!!
//
////////////////////////////////////////////////////////////////
+ private final static int FORWARD = -1;
+ private final static int BACKWARD = -2;
/**
* These constant arrays indicate the order in which the strips of a cube
* corner of the cube the data wire comes in.
*/
private final static int[][] CUBE_STRIP_ORDERINGS = new int[][] {
+// { 2, 1, 0, 3, 13, 12, 15, 14, 4, 7, 6, 5, 11, 10, 9, 8 }, // FRONT_LEFT
+// { 6, 5, 4, 7, 1, 0, 3, 2, 8, 11, 10, 9, 15, 14, 13, 12 }, // FRONT_RIGHT
+// { 14, 13, 12, 15, 9, 8, 11, 10, 0, 3, 2, 1, 7, 6, 5, 4 }, // REAR_LEFT
+// { 10, 9, 8, 11, 5, 4, 7, 6, 12, 15, 14, 13, 3, 2, 1, 0 }, // REAR_RIGHT
+
+
{ 2, 1, 0, 3, 13, 12, 15, 14, 4, 7, 6, 5, 11, 10, 9, 8 }, // FRONT_LEFT
{ 6, 5, 4, 7, 1, 0, 3, 2, 8, 11, 10, 9, 15, 14, 13, 12 }, // FRONT_RIGHT
{ 14, 13, 12, 15, 9, 8, 11, 10, 0, 3, 2, 1, 7, 6, 5, 4 }, // REAR_LEFT
- { 10, 9, 8, 11, 5, 4, 7, 6, 12, 15, 14, 13, 3, 2, 1, 0 }, // REAR_RIGHT
+ { 9, 8, 11, 5, 4, 7, 6, 10, 14, 2, 1, 0, 3, 13, 12, 15 }, // REAR_RIGHT
+
};
private final static int[][] BASS_STRIP_ORDERING = {
{3, BACKWARD },
}
};
-
+
+ public PandaDriver(String ip) {
+ this.ip = ip;
+
+ // Initialize our OSC output stuff
+ address = new NetAddress(ip, 9001);
+ message = new OscMessage("/shady/pointbuffer");
+
+ // Build the array of points, initialize all to nothing
+ points = new int[PandaMapping.PIXELS_PER_BOARD];
+ for (int i = 0; i < points.length; ++i) {
+ points[i] = NO_POINT;
+ }
+ }
+
public PandaDriver(String ip, Model model, PandaMapping pm) {
this(ip);
private int mapStrip(Strip s, int direction, int[] points, int pi) {
if (direction == FORWARD) {
- for (Point p : s.points) {
+ for (LXPoint p : s.points) {
points[pi++] = p.index;
}
} else if (direction == BACKWARD) {
return pi;
}
- public void disable() {
- if (enabled) {
- enabled = false;
- println("PandaBoard/" + ip + ": OFF");
+ public PandaDriver setListener(Listener listener) {
+ this.listener = listener;
+ return this;
+ }
+
+ public void setEnabled(boolean enabled) {
+ if (this.enabled != enabled) {
+ this.enabled = enabled;
+ println("PandaBoard/" + ip + ": " + (enabled ? "ON" : "OFF"));
+ if (listener != null) {
+ listener.onToggle(enabled);
+ }
}
}
+ public boolean isEnabled() {
+ return this.enabled;
+ }
+
+ public void disable() {
+ setEnabled(false);
+ }
+
public void enable() {
- if (!enabled) {
- enabled = true;
- println("PandaBoard/" + ip + ": ON");
- }
+ setEnabled(true);
}
public void toggle() {
- enabled = !enabled;
- println("PandaBoard/" + ip + ": " + (enabled ? "ON" : "OFF"));
+ setEnabled(!enabled);
}
public final void send(int[] colors) {