start with ex2
[des2015.git] / mart / ev3 / ex2 / nl / ru / des / BTMemory.java
1 package nl.ru.des;
2
3 import java.io.DataInputStream;
4 import java.io.DataOutputStream;
5 import java.io.IOException;
6 import java.util.Arrays;
7 import java.util.HashSet;
8 import java.util.List;
9 import java.util.Set;
10
11 import lejos.remote.nxt.BTConnector;
12 import lejos.remote.nxt.NXTConnection;
13
14 public abstract class BTMemory extends Thread{
15 private List<String> COLORSTOFIND = Arrays.asList(new String[]{"Blue", "Red", "Yellow"});
16 private Set<String> colors;
17 protected NXTConnection connection;
18 protected DataOutputStream dataOutput;
19 protected DataInputStream dataInput;
20
21 public BTMemory(){
22 colors = new HashSet<String>();
23 setup();
24 }
25
26 public abstract void setup();
27
28 public void addColor(String c){
29 colors.add(c);
30 }
31
32 public boolean finished(){
33 return colors.equals(new HashSet<String>(COLORSTOFIND));
34 }
35
36 @Override
37 public void run(){
38 try {
39 while(true){
40 if(dataInput.available()>0){
41 LCDPrinter.print(Character.toChars(dataInput.read()).toString());
42 }
43 }
44 } catch (IOException e) {
45 // TODO Auto-generated catch block
46 e.printStackTrace();
47 }
48 }
49
50 public static BTMemory getBTMemory(boolean master, final String rovername){
51 if(master){
52 return new BTMemory(){
53 @Override
54 public void setup() {
55 BTConnector btconnector = new BTConnector();
56 connection = btconnector.connect(rovername, NXTConnection.RAW);
57 dataInput = connection.openDataInputStream();
58 dataOutput = connection.openDataOutputStream();
59 try {
60 dataOutput.write(77);
61 } catch (IOException e) {
62 e.printStackTrace();
63 }
64 }
65 };
66 } else {
67 return new BTMemory(){
68 @Override
69 public void setup() {
70 BTConnector btconnector = new BTConnector();
71 btconnector.waitForConnection(60, NXTConnection.RAW);
72 dataInput = connection.openDataInputStream();
73 dataOutput = connection.openDataOutputStream();
74 }
75 };
76 }
77 }
78 }