Make panda mappings a bit safer
authorMark Slee <mcslee@Mark-Slees-MacBook-Pro.local>
Sun, 11 Aug 2013 02:01:48 +0000 (19:01 -0700)
committerMark Slee <mcslee@Mark-Slees-MacBook-Pro.local>
Sun, 11 Aug 2013 02:01:48 +0000 (19:01 -0700)
_Mappings.pde
_PandaDriver.pde

index 3959846ee2c8e16bf06cab9f8d04ef94f18357c7..00e9b2c80f8a8175103f6e0dc22a6725b0be9bb4 100644 (file)
@@ -162,12 +162,23 @@ class SCMapping implements GLucose.Mapping {
 
 class PandaMapping {
   
+  // How many channels are on the panda board
+  public final static int CHANNELS_PER_BOARD = 8;
+  
+  // How many cubes per channel xc_PB is configured for
+  public final static int CUBES_PER_CHANNEL = 4;
+  
   final String ip;
-  final int[][] channelList;
+  final int[][] channelList = new int[CHANNELS_PER_BOARD][CUBES_PER_CHANNEL];
   
-  PandaMapping(String ip, int[][] channelList) {
+  PandaMapping(String ip, int[][] rawChannelList) {
     this.ip = ip;
-    this.channelList = channelList;
+    for (int chi = 0; chi < CHANNELS_PER_BOARD; ++chi) {
+      int[] cubes = (chi < rawChannelList.length) ? rawChannelList[chi] : new int[]{};
+      for (int cui = 0; cui < CUBES_PER_CHANNEL; ++cui) {
+        channelList[chi][cui] = (cui < cubes.length) ? cubes[cui] : 0;
+      }
+    }
   }
 }
 
index d90613e9de483b4c04ab8cebd5641edd87919f20..c95f9b0ed301efbdced58bcafbd09eda5fee3d51 100644 (file)
@@ -31,12 +31,6 @@ public class PandaDriver {
   // List of point indices on the board
   private final int[] points;
   
-  // How many channels are on the panda board
-  private final static int CHANNELS_PER_BOARD = 8;
-  
-  // How many cubes per channel xc_PB is configured for
-  private final static int CUBES_PER_CHANNEL = 4;
-
   // Packet data
   private final byte[] packet = new byte[4*352]; // TODO: de-magic-number, UDP related?
 
@@ -54,15 +48,13 @@ public class PandaDriver {
   
   public void toggle() {
     enabled = !enabled;
-    println("PandaBoard Output/" + ip + ": " + (enabled ? "ON" : "OFF"));    
+    println("PandaBoard/" + ip + ": " + (enabled ? "ON" : "OFF"));    
   } 
 
   private ArrayList<Integer> buildMappedList(Model model, int[][] channelList) {
     ArrayList<Integer> points = new ArrayList<Integer>();
-    for (int chi = 0; chi < CHANNELS_PER_BOARD; ++chi) {
-      int[] channel = (chi < channelList.length) ? channelList[chi] : new int[]{};
-      for (int ci = 0; ci < CUBES_PER_CHANNEL; ++ci) {
-        int cubeNumber = (ci < channel.length) ? channel[ci] : 0;
+    for (int[] channel : channelList) {
+      for (int cubeNumber : channel) {
         if (cubeNumber == 0) {
           for (int i = 0; i < Cube.POINTS_PER_CUBE; ++i) {
             points.add(0);