updates for ml410 board
[fleet.git] / src / edu / berkeley / fleet / fpga / Server.java
index 417df5f..dfc8b22 100644 (file)
@@ -9,10 +9,13 @@ public class Server {
     public static ServerSocket ss;
     public static void main(String[] args) throws Exception {
         ss = new ServerSocket(3133);
+        /*
         new Listener(3).start();
         new Listener(4).start();
         new Listener(1).start();
         new Listener(2).start();
+        */
+        new Listener(0).start();
     }
 
     public static String pass_string = "password=security_is_for_wimps ";
@@ -58,12 +61,19 @@ public class Server {
                 if (!sb.toString().startsWith(pass_string)) return;
                 String file = sb.toString().substring(pass_string.length()).trim();
 
-                System.err.println("unprogramming...");
-                int ret = Runtime.getRuntime().exec(new String[] { "/usr/bin/user_unprogram", ""+devnum }).waitFor();
+                System.err.println("programming...");
+                Process proc = Runtime.getRuntime().exec(new String[] { "/afs/megacz.com/work/ml410/program.sh", "/afs/megacz.com/work/ml410/main.bit" });
+                BufferedReader br = new BufferedReader(new InputStreamReader(proc.getInputStream()));
+                String s = null;
+                while((s = br.readLine()) != null) {
+                    System.err.println("  " + s);
+                }
+                int ret = proc.waitFor();
                 if (ret != 0) {
                     System.err.println("programming error: " + ret);
                     return;
                 }
+                /*
                 System.err.println("programming...");
                 ret = Runtime.getRuntime().exec(new String[] {
                         "/usr/bin/user_program", ""+devnum, "/var/slipway/"+file }).waitFor();
@@ -71,11 +81,12 @@ public class Server {
                     System.err.println("programming error: " + ret);
                    return;
                 }
+                */
                 System.err.println("done programming.");
                 try { Thread.sleep(2000); } catch(Exception e) { }
                 final OutputStream os = socket.getOutputStream();
                 System.err.println("sending instructions...");
-                raf = new RandomAccessFile("/dev/selectmap"+devnum, "rw");
+                raf = new RandomAccessFile("/dev/ttyS"+devnum, "rw");
 
 
                 final RandomAccessFile raf2 = raf;
@@ -95,9 +106,9 @@ public class Server {
                         } finally {
                             if (raf2 != null) {
                                 System.err.println("closing...");
+                                closed = true;
                                 try { raf2.close(); } catch (Throwable t) { t.printStackTrace(); }
                                 try { fos.close(); } catch (Throwable t) { t.printStackTrace(); }
-                                closed = true;
                             }
                         }
                     }
@@ -110,7 +121,7 @@ public class Server {
                     int val = 0;
                     for(int i=0; i<6; i++) {
                         int k = 0;
-                        while(fis.available()==0) {
+                        while(!closed && fis.available()==0) {
                             if (closed) return;
                             k++;
                             if (k >= 100) {
@@ -119,6 +130,7 @@ public class Server {
                             }
                             Thread.sleep(10);
                         }
+                        if (closed) return;
                         val = fis.read();
                         if (val==-1) break;
                         os.write((byte)val);