checkpoint
authoradam <adam@megacz.com>
Wed, 20 Sep 2006 08:26:55 +0000 (09:26 +0100)
committeradam <adam@megacz.com>
Wed, 20 Sep 2006 08:26:55 +0000 (09:26 +0100)
src/com/ftdi/usb/FtdiUart.java [moved from src/edu/berkeley/obits/device/atmel/FtdiChip.java with 94% similarity]
src/edu/berkeley/obits/device/atmel/Chip.java
src/edu/berkeley/obits/device/atmel/ChipImpl.java
src/edu/berkeley/obits/device/atmel/FtdiBoard.java

similarity index 94%
rename from src/edu/berkeley/obits/device/atmel/FtdiChip.java
rename to src/com/ftdi/usb/FtdiUart.java
index aeea77e..14a2a3a 100644 (file)
@@ -1,8 +1,7 @@
-package edu.berkeley.obits.device.atmel;
-import com.ftdi.usb.*;
+package com.ftdi.usb;
 import java.io.*;
 
-public class FtdiChip {
+public class FtdiUart {
 
     protected int bits = 0;
     protected SWIGTYPE_p_ftdi_context context = example.new_ftdi_context();
@@ -10,7 +9,7 @@ public class FtdiChip {
     public OutputStream getOutputStream() { return out; }
     public InputStream  getInputStream() { return in; }
 
-    public FtdiChip() {
+    public FtdiUart() {
         example.ftdi_init(context);
         example.ftdi_usb_open(context, 0x6666, 0x3133);
         example.ftdi_usb_reset(context);
@@ -79,7 +78,7 @@ public class FtdiChip {
                 while(true) {
                     if (len==0) return 0;
                     byte[] b0 = new byte[len];
-                    synchronized(FtdiChip.this) {
+                    synchronized(FtdiUart.this) {
                         result = example.ftdi_read_data(context, b0, len);
                     }
                     if (result>0) {
@@ -102,7 +101,7 @@ public class FtdiChip {
                 while(len > 0) {
                     System.arraycopy(b, off, b2, 0, Math.min(b2.length, len));
                     int result;
-                    synchronized(FtdiChip.this) {
+                    synchronized(FtdiUart.this) {
                         result = example.ftdi_write_data(context, b2, Math.min(b2.length, len));
                     }
                     off += result;
index 36c21c0..f239807 100644 (file)
@@ -13,6 +13,7 @@ public interface Chip {
     public void    porte(int pin, boolean b);
     public void    con(boolean b);
     public boolean con();
+    public boolean rcon();
 
     //remove
     public void flush();
index c2c7752..05ed4f2 100644 (file)
@@ -2,7 +2,7 @@ package edu.berkeley.obits.device.atmel;
 import com.ftdi.usb.*;
 import java.io.*;
 
-public class ChipImpl extends FtdiChip implements Chip {
+public class ChipImpl extends FtdiUart implements Chip {
 
     private int dmask =
         (1<<0) |
@@ -107,6 +107,12 @@ public class ChipImpl extends FtdiChip implements Chip {
         dbangmode(dmask);
         return (readPins() & (1<<0)) != 0;
     }
+    public boolean rcon() {
+        flush();
+        dmask &= ~(1<<0);
+        dbangmode(dmask);
+        return (readPins() & (1<<0)) != 0;
+    }
     public void con(boolean on) {
         flush();
         dmask |= (1<<0);
index 12b339a..05616af 100644 (file)
@@ -102,6 +102,7 @@ public class FtdiBoard extends Board {
                     d.flush();
                     init = d.initErr();
                     System.out.print("wrote " + bytes + " bytes, init="+init+"      \r");
+                    d.rcon();
                 }
                 if (!init)
                     throw new RuntimeException("initialization failed at byte " + bytes + ", bit " + i);