From: adam Date: Thu, 19 Apr 2007 04:03:28 +0000 (+0100) Subject: checkpoint X-Git-Tag: mpar_demo_release~11 X-Git-Url: http://git.megacz.com/?p=slipway.git;a=commitdiff_plain;h=fc310b9cc6ef5c1b3dc1889809636cd3494cf611 checkpoint --- diff --git a/Makefile b/Makefile index a210e01..07d824e 100644 --- a/Makefile +++ b/Makefile @@ -11,6 +11,9 @@ endif run: slipway.jar java -cp slipway.jar edu.berkeley.slipway.Demo 30 +demo: slipway.jar + java -cp slipway.jar edu.berkeley.slipway.Demo2 30 + build/src/com/ftdi/usb/FtdiUart.c: src/com/ftdi/usb/FtdiUart.i mkdir -p `dirname $@` mkdir -p src/com/ftdi/usb @@ -25,10 +28,10 @@ build/$(jnilib): build/src/com/ftdi/usb/FtdiUart.c upstream/libusb/.built $(linkerflags) \ -o $@ -dynamiclib -framework JavaVM -slipway.jar: build/$(jnilib) $(shell find src build/src -name \*.java) bitstreams/slipway_drone.bst +slipway.jar: build/$(jnilib) $(shell find src build/src -name \*.java) bitstreams/slipway_drone_complete.bst mkdir -p build javac -d build $(shell find src build/src -name \*.java) - cp bitstreams/slipway_drone.bst build/edu/berkeley/slipway/ + cp bitstreams/slipway_drone_complete.bst build/edu/berkeley/slipway/ cd build; jar cvf ../$@ . @@ -57,14 +60,15 @@ build/slipway_drone.hex: src/edu/berkeley/slipway/FtdiBoardSlave.c upstream/avr upstream/prefix/bin/avr-objcopy -O ihex $@.o $@ # this only works on my personal setup [adam] -bitstreams/slipway_drone.bst: build/slipway_drone.hex - cp $< /afs/research.cs.berkeley.edu/user/megacz/edu.berkeley.obits/usbdrone.hex - fs flush /afs/research.cs.berkeley.edu/user/megacz/edu.berkeley.obits/usbdrone.hex +bitstreams/slipway_drone_complete.bst: build/slipway_drone.hex + cp $< /afs/research.cs.berkeley.edu/user/megacz/slipway/$< + fs flush /afs/research.cs.berkeley.edu/user/megacz/slipway/$< echo okay... read - rm /afs/research.cs.berkeley.edu/user/megacz/edu.berkeley.obits/usbdrone.hex - diff -u /afs/research.cs.berkeley.edu/user/megacz/stupid/fpslic_stupid.bst $@ && exit -1; true - mv /afs/research.cs.berkeley.edu/user/megacz/stupid/fpslic_stupid.bst $@ + rm /afs/research.cs.berkeley.edu/user/megacz/slipway/$< + diff -u /afs/research.cs.berkeley.edu/user/megacz/slipway/$@ $@ && \ + exit -1; true + mv /afs/research.cs.berkeley.edu/user/megacz/slipway/$@ $@ touch $@ diff --git a/src/com/atmel/fpslic/Fpslic.java b/src/com/atmel/fpslic/Fpslic.java index 5056ba2..b72a69b 100644 --- a/src/com/atmel/fpslic/Fpslic.java +++ b/src/com/atmel/fpslic/Fpslic.java @@ -495,7 +495,7 @@ public abstract class Fpslic { public int yi() { if ((mode4(0x02, row, col) & (1<<6))!=0) return L4; switch(mode4(0x04, row, col) & 0xff) { - case 0x80: return NORTH; + case (1<<7): return NORTH; case (1<<5): return SOUTH; case (1<<6): return WEST; case (1<<4): return EAST; diff --git a/src/edu/berkeley/slipway/AsyncPaperDemo.java b/src/edu/berkeley/slipway/AsyncPaperDemo.java index a51020a..2877678 100644 --- a/src/edu/berkeley/slipway/AsyncPaperDemo.java +++ b/src/edu/berkeley/slipway/AsyncPaperDemo.java @@ -27,16 +27,16 @@ public class AsyncPaperDemo { //turnOnLeds(); setupScanCell(); - //runGui(24, 24); - for(int i=0; i<255; i++) fpslic.readCount(); + //System.in.read(); - for(int i=240; i<400; i+=2) { + for(int i=400; i<402; i+=2) { go(i); } - //System.out.println("done"); + runGui(24, 24); + System.out.println("done"); } @@ -62,7 +62,7 @@ public class AsyncPaperDemo { reconfigTopLeft(); reconfigTopRight(); fpslic.flush(); - + /* for(int i=0; i<23; i++){ Fpslic.Cell c = fpslic.cell(0, i); c.ylut(0x00); @@ -74,7 +74,7 @@ public class AsyncPaperDemo { sw=sw.east()) sw.west().drives(sw, true); } - + */ String sizes = rsize+""; while(sizes.length()<3) sizes = "0"+sizes; String fname = "data/size"+sizes+".csv"; @@ -515,6 +515,7 @@ public class AsyncPaperDemo { private void runGui(int width, int height) throws Exception { Gui vis = new Gui(fpslic, fpslic, width, height); Frame fr = new Frame(); + fr.setTitle("SLIPWAY Live Fabric Debugger"); fr.addKeyListener(vis); fr.setLayout(new BorderLayout()); fr.add(vis, BorderLayout.CENTER); diff --git a/src/edu/berkeley/slipway/gui/G.java b/src/edu/berkeley/slipway/gui/G.java index 233e55b..18ad767 100644 --- a/src/edu/berkeley/slipway/gui/G.java +++ b/src/edu/berkeley/slipway/gui/G.java @@ -42,4 +42,81 @@ public class G { )); } + private ArrayList transformStack = + new ArrayList(); + + public void pushTransform() { + transformStack.add(new AffineTransform(g.getTransform())); + } + public void popTransform() { + AffineTransform t = transformStack.remove(transformStack.size()-1); + g.setTransform(t); + } + + public void fillTriangle(double x1, double y1, + double x2, double y2, + double x3, double y3) { + GeneralPath gp = new GeneralPath(); + gp.moveTo((float)x1, (float)y1); + gp.lineTo((float)x2, (float)y2); + gp.lineTo((float)x3, (float)y3); + gp.closePath(); + g.fill(gp); + } + + public void route(P p1, R r, P p2) { + if (p1.x < r.minx() && p1.y < r.miny()) { line(p1, r.minx(), r.miny()); route(new P(r.minx(), r.miny()), r, p2); } + else if (p1.x > r.maxx() && p1.y < r.miny()) { line(p1, r.maxx(), r.miny()); route(new P(r.maxx(), r.miny()), r, p2); } + else if (p1.x < r.minx() && p1.y > r.maxy()) { line(p1, r.minx(), r.maxy()); route(new P(r.minx(), r.maxy()), r, p2); } + else if (p1.x > r.maxx() && p1.y > r.maxy()) { line(p1, r.maxx(), r.maxy()); route(new P(r.maxx(), r.maxy()), r, p2); } + else if (p1.x < r.minx()) { line(p1, r.minx(), p1.y); route(new P(r.minx(), p1.y), r, p2); } + else if (p1.x > r.maxx()) { line(p1, r.maxx(), p1.y); route(new P(r.maxx(), p1.y), r, p2); } + else if (p1.y < r.miny()) { line(p1, p1.x, r.miny()); route(new P(p1.x, r.miny()), r, p2); } + else if (p1.y > r.maxy()) { line(p1, p1.x, r.maxy()); route(new P(p1.x, r.maxy()), r, p2); } + else { + double updist = Math.abs(r.maxy()-p2.y); + double downdist = Math.abs(r.miny()-p2.y); + double leftdist = Math.abs(r.minx()-p2.x); + double rightdist = Math.abs(r.maxx()-p2.x); + if (updist != 0 && updist <= downdist && updist <= leftdist && updist <= rightdist) + { line(p2, p2.x, r.maxy()); route(p1, r, new P(p2.x, r.maxy())); } + else if (downdist != 0 && downdist <= updist && downdist <= leftdist && downdist <= rightdist) + { line(p2, p2.x, r.miny()); route(p1, r, new P(p2.x, r.miny())); } + else if (leftdist != 0 && leftdist <= downdist && leftdist <= updist && leftdist <= rightdist) + { line(p2, r.minx(), p2.y); route(p1, r, new P(r.minx(), p2.y)); } + else if (rightdist != 0 && rightdist <= updist && rightdist <= downdist && rightdist <= leftdist) + { line(p2, r.maxx(), p2.y); route(p1, r, new P(r.maxx(), p2.y)); } + else { + if (p2.x == p1.x && (p2.x==r.maxx() || p2.x==r.minx())) line(p1, p2); + else if (p2.y == p1.y && (p2.y==r.maxy() || p2.y==r.miny())) line(p1, p2); + + // these cases are where p1 and p2 are each on opposite sides + else if (p2.y==r.maxy() && p1.y==r.miny() && p1.x!=r.minx() && p1.x!=r.maxx() && p2.x!=r.minx() && p2.x!=r.maxx()) { } + else if (p1.y==r.maxy() && p2.y==r.miny() && p1.x!=r.minx() && p1.x!=r.maxx() && p2.x!=r.minx() && p2.x!=r.maxx()) { } + else if (p1.x==r.maxx() && p2.x==r.minx() && p1.y!=r.miny() && p1.y!=r.maxy() && p2.y!=r.miny() && p2.y!=r.maxy()) { } + else if (p2.x==r.maxx() && p1.x==r.minx() && p1.y!=r.miny() && p1.y!=r.maxy() && p2.y!=r.miny() && p2.y!=r.maxy()) { } + + else { + if (Math.abs(p1.x-p2.x) < Math.abs(p1.y-p2.y)) { + if (p1.x == r.minx() || p1.x == r.maxx()) { + line(p2, p1.x, p2.y); + route(p1, r, new P(p1.x, p2.y)); + } else { + line(p1, p2.x, p1.y); + route(p2, r, new P(p2.x, p1.y)); + } + } else { + if (p1.y == r.miny() || p1.y == r.maxy()) { + line(p2, p2.x, p1.y); + route(p1, r, new P(p2.x, p1.y)); + } else { + line(p1, p1.x, p2.y); + route(p2, r, new P(p1.x, p2.y)); + } + } + } + } + } + } + } diff --git a/src/edu/berkeley/slipway/gui/Gui.java b/src/edu/berkeley/slipway/gui/Gui.java index 7b8acee..5dbac20 100644 --- a/src/edu/berkeley/slipway/gui/Gui.java +++ b/src/edu/berkeley/slipway/gui/Gui.java @@ -71,6 +71,7 @@ public class Gui extends ZoomingPanel implements KeyListener, MouseMotionListene + new Thread() { public void run() { while(true) scan(); @@ -108,7 +109,8 @@ public class Gui extends ZoomingPanel implements KeyListener, MouseMotionListene return cell.relevant(); } public void clear() { - gg.color(in ? selectedcell : (scanme() ? new Color(0xbb, 0xbb, 0xbb) : nonselectedcell)); + gg.color(0xffffff); + //gg.color(in ? selectedcell : (scanme() ? new Color(0xbb, 0xbb, 0xbb) : nonselectedcell)); g.fillRect(0, 0, SIZE, SIZE); } public void draw() { @@ -564,7 +566,7 @@ public class Gui extends ZoomingPanel implements KeyListener, MouseMotionListene repaint(); } public void drawKeyboard(Image keyboardImage, Graphics2D g) { - /* + int width = 300; int height = (keyboardImage.getHeight(null) * width) / keyboardImage.getWidth(null); g.drawImage(keyboardImage, @@ -573,7 +575,7 @@ public class Gui extends ZoomingPanel implements KeyListener, MouseMotionListene 0, 0, keyboardImage.getWidth(null), keyboardImage.getHeight(null), null); - */ + } public void _paint(Graphics2D g) { @@ -1153,8 +1155,11 @@ public class Gui extends ZoomingPanel implements KeyListener, MouseMotionListene public boolean result(boolean x, boolean y, boolean z) { return z; } } - private static Image keyboard1 = Toolkit.getDefaultToolkit().createImage("keyboard1.png"); - private static Image keyboard2 = Toolkit.getDefaultToolkit().createImage("keyboard2.png"); - private static Image keyboard3 = Toolkit.getDefaultToolkit().createImage("keyboard3.png"); + private static Image keyboard1 = + Toolkit.getDefaultToolkit().createImage("images/keyboard1.png"); + private static Image keyboard2 = + Toolkit.getDefaultToolkit().createImage("images/keyboard2.png"); + private static Image keyboard3 = + Toolkit.getDefaultToolkit().createImage("images/keyboard3.png"); } diff --git a/src/edu/berkeley/slipway/gui/ZoomingPanel.java b/src/edu/berkeley/slipway/gui/ZoomingPanel.java index 4d934fd..fc51932 100644 --- a/src/edu/berkeley/slipway/gui/ZoomingPanel.java +++ b/src/edu/berkeley/slipway/gui/ZoomingPanel.java @@ -16,7 +16,7 @@ import javax.swing.*; public abstract class ZoomingPanel extends JComponent implements KeyListener, MouseMotionListener, MouseListener { - double scale = 1.0; + double scale = 0.3; double oscale = 1.0; public int dragx = 0; public int dragy = 0; @@ -24,7 +24,7 @@ public abstract class ZoomingPanel extends JComponent implements KeyListener, Mo protected int mousex; protected int mousey; protected AffineTransform transform = new AffineTransform(); - private Point2D recenter; + private Point2D recenter = new Point2D.Double(-100, 2500); private Point2D recenter2; private FtdiBoard ftdiboard;