From 1cec762092d76024df66b5fe8f5612399e678e27 Mon Sep 17 00:00:00 2001 From: adam Date: Fri, 22 Sep 2006 04:04:03 +0100 Subject: [PATCH] checkpoint --- src/com/atmel/fpslic/FpslicRaw.java | 4 +- src/com/atmel/fpslic/FpslicRawUsb.java | 127 +++++++++----------------------- 2 files changed, 36 insertions(+), 95 deletions(-) diff --git a/src/com/atmel/fpslic/FpslicRaw.java b/src/com/atmel/fpslic/FpslicRaw.java index 5113f5c..e1e9883 100644 --- a/src/com/atmel/fpslic/FpslicRaw.java +++ b/src/com/atmel/fpslic/FpslicRaw.java @@ -8,8 +8,8 @@ import java.io.*; */ public interface FpslicRaw { - public InputStream getInputStream(); - public OutputStream getOutputStream(); + public InputStream getInputStream() throws IOException; + public OutputStream getOutputStream() throws IOException; public OutputStream getConfigStream() throws IOException; public void reset() throws IOException; public void selfTest() throws Exception; diff --git a/src/com/atmel/fpslic/FpslicRawUsb.java b/src/com/atmel/fpslic/FpslicRawUsb.java index 534e310..d6fddee 100644 --- a/src/com/atmel/fpslic/FpslicRawUsb.java +++ b/src/com/atmel/fpslic/FpslicRawUsb.java @@ -7,45 +7,33 @@ import java.io.*; */ public class FpslicRawUsb implements FpslicRaw { - private FtdiUart ftdiuart; - private FpslicPinsUsb pins; - - private int dmask = - (1<<0) | - (1<<1) | - (1<<2) | - //(1<<3) | - //(1<<4) | - (1<<5) | - (1<<6) | - (1<<7); + private FpslicPins pins; public FpslicRawUsb(FtdiUart ftdiuart) throws IOException { - this.ftdiuart = ftdiuart; - //this.pins = new FpslicPinsUsb(ftdiuart); + this.pins = new FpslicPinsUsb(ftdiuart); reset(); } public void reset() throws IOException { - avrrstPin(false); - configDataPin(false); - resetPin(false); - cclkPin(false); + pins.avrrstPin(false); + pins.configDataPin(false); + pins.resetPin(false); + pins.cclkPin(false); - conPin(false); - flush(); + pins.conPin(false); + pins.flush(); - resetPin(false); + pins.resetPin(false); try { Thread.sleep(500); } catch (Exception e) { } - if (initPin()) throw new RuntimeException("INIT was still high after pulling RESET low"); + if (pins.initPin()) throw new RuntimeException("INIT was still high after pulling RESET low"); - resetPin(true); + pins.resetPin(true); try { Thread.sleep(500); } catch (Exception e) { } - if (!initPin()) throw new RuntimeException("INIT was still low after releasing RESET"); + if (!pins.initPin()) throw new RuntimeException("INIT was still low after releasing RESET"); sendConfigBits(0,2); - flush(); + pins.flush(); } public OutputStream getConfigStream() throws IOException { @@ -64,35 +52,32 @@ public class FpslicRawUsb implements FpslicRaw { write(b[i]); } public void flush() throws IOException { - FpslicRawUsb.this.flush(); + pins.flush(); } public void close() throws IOException { - flush(); + pins.flush(); // turn off the CON pin we've been pulling low... - releaseConPin(); + pins.releaseConPin(); - if (!initPin()) + if (!pins.initPin()) throw new RuntimeException("initialization failed at " + bytes); for(int i=0; i<100; i++) { - flush(); - if (!initPin()) + pins.flush(); + if (!pins.initPin()) throw new RuntimeException("initialization failed at " + bytes); try { Thread.sleep(20); } catch (Exception e) { } sendConfigBits(0,1); } - // switching to uart mode will implicitly release AVRRST - avrrstPin(false); - ftdiuart.purge(); - ftdiuart.uart_and_cbus_mode(1<<1, 1<<1); + pins.close(); } }; } - public OutputStream getOutputStream() { return ftdiuart.getOutputStream(); } - public InputStream getInputStream() { return ftdiuart.getInputStream(); } + public OutputStream getOutputStream() throws IOException { return pins.getUartOutputStream(); } + public InputStream getInputStream() throws IOException { return pins.getUartInputStream(); } public void selfTest() throws Exception { boolean pin; @@ -103,9 +88,9 @@ public class FpslicRawUsb implements FpslicRaw { sendConfigBits(Integer.parseInt("00000000", 2), 8); sendConfigBits(Integer.parseInt("10110111", 2), 8); sendConfigBits(0,1); - flush(); + pins.flush(); try { Thread.sleep(100); } catch (Exception e) { } - pin = initPin(); + pin = pins.initPin(); System.out.print((pin ? green(" [pass]") : red(" [FAIL]"))); // preamble shifted one bit earlier than it should be @@ -113,9 +98,9 @@ public class FpslicRawUsb implements FpslicRaw { sendConfigBits(Integer.parseInt("0000000", 2), 7); sendConfigBits(Integer.parseInt("10110111", 2), 8); sendConfigBits(0, 2); - flush(); + pins.flush(); try { Thread.sleep(100); } catch (Exception e) { } - pin = initPin(); + pin = pins.initPin(); System.out.print((pin ? red(" [FAIL]") : green(" [pass]"))); // preamble shifted one bit later than it should be @@ -123,9 +108,9 @@ public class FpslicRawUsb implements FpslicRaw { sendConfigBits(Integer.parseInt("000000000", 2), 9); sendConfigBits(Integer.parseInt("10110111", 2), 8); //sendConfigBits(0, 1); - flush(); + pins.flush(); try { Thread.sleep(100); } catch (Exception e) { } - pin = initPin(); + pin = pins.initPin(); System.out.print((pin ? red(" [FAIL]") : green(" [pass]"))); // plain 'ol bogus preamble @@ -133,9 +118,9 @@ public class FpslicRawUsb implements FpslicRaw { sendConfigBits(Integer.parseInt("00000000", 2), 8); sendConfigBits(Integer.parseInt("11110111", 2), 8); sendConfigBits(0, 1); - flush(); + pins.flush(); try { Thread.sleep(100); } catch (Exception e) { } - pin = initPin(); + pin = pins.initPin(); System.out.print((pin ? red(" [FAIL]") : green(" [pass]"))); System.out.println(); @@ -143,60 +128,16 @@ public class FpslicRawUsb implements FpslicRaw { // Private ////////////////////////////////////////////////////////////////////////////// - private void flush() throws IOException { ftdiuart.getOutputStream().flush(); } - - private int dbits = 0; - private void setDBusLine() throws IOException { - ftdiuart.getOutputStream().write((byte)dbits); - } - private void clearDBusLines() throws IOException { - dbits = 0; - setDBusLine(); - } - private void setDBusLine(int bit, boolean val) throws IOException { - dbits = val ? (dbits | (1 << bit)) : (dbits & (~(1 << bit))); - setDBusLine(); - } - private void sendConfigBits(int dat, int numbits) throws IOException { for(int i=(numbits-1); i>=0; i--) { boolean bit = (dat & (1<