83bc18405152781832cb79b0eac6d4c8ea25bfcd
[des2015.git] / dsl / runtime / src / nl / ru / des / Marster.java
1 package nl.ru.des;
2
3 import java.io.File;
4 import java.io.FileOutputStream;
5 import java.io.IOException;
6 import java.io.InputStream;
7 import java.util.LinkedList;
8 import java.util.Random;
9
10 import lejos.hardware.Sound;
11 import lejos.hardware.ev3.EV3;
12 import lejos.hardware.ev3.LocalEV3;
13 import lejos.hardware.lcd.Font;
14 import lejos.hardware.lcd.TextLCD;
15 import lejos.hardware.motor.EV3LargeRegulatedMotor;
16 import lejos.hardware.motor.EV3MediumRegulatedMotor;
17 import lejos.hardware.port.MotorPort;
18 import lejos.hardware.sensor.EV3ColorSensor;
19 import lejos.hardware.sensor.EV3GyroSensor;
20 import lejos.hardware.sensor.EV3TouchSensor;
21 import lejos.hardware.sensor.EV3UltrasonicSensor;
22 import lejos.hardware.sensor.NXTLightSensor;
23 import lejos.robotics.RegulatedMotor;
24 import lejos.robotics.SampleProvider;
25 import nl.ru.des.sensors.BTController;
26 import nl.ru.des.sensors.RemoteSensors;
27 import nl.ru.des.sensors.SensorCollector;
28
29 public class Marster {
30 public static Arbitrator arb;
31 public static Random random;
32
33 @SuppressWarnings("resource")
34 public static void main(String[] args) {
35 EV3 brick = LocalEV3.get();
36 TextLCD tlcd = brick.getTextLCD(Font.getSmallFont());
37 LCDPrinter.startLCDPrinter(tlcd);
38 System.setOut(LCDPrinter.getPrefixedPrintstream("out: ", tlcd));
39 System.setErr(LCDPrinter.getPrefixedPrintstream("err: ", tlcd));
40
41 LCDPrinter.print("Loading keylistener...");
42 brick.getKey("Escape").addKeyListener(new ButtonListener());
43
44 if(brick.getName().equalsIgnoreCase("Rover6") || brick.getName().equalsIgnoreCase("Rover8")){
45 LCDPrinter.print("Starting as a slave...");
46 LCDPrinter.print("My name is " + brick.getName());
47 LCDPrinter.print("Loading touch sensors...");
48 SampleProvider leftTouch = new EV3TouchSensor(brick.getPort("S1")).getTouchMode();
49 SampleProvider rightTouch = new EV3TouchSensor(brick.getPort("S2")).getTouchMode();
50
51 LCDPrinter.print("Loading ultrasone sensor...");
52 SampleProvider frontUltra = new EV3UltrasonicSensor(brick.getPort("S3")).getDistanceMode();
53
54 LCDPrinter.print("Loading color sensors...");
55 SampleProvider color = new EV3ColorSensor(brick.getPort("S4")).getColorIDMode();
56 RemoteSensors rs = new RemoteSensors(leftTouch, rightTouch, frontUltra, color);
57
58 BTController.startSlave();
59 rs.start(BTController.buf);
60 } else {
61 // try {
62 // InputStream inp = Marster.class.getResourceAsStream("nl/ru/des/sound/rick.wav");
63 // FileOutputStream out = new FileOutputStream("rick.wav");
64 // byte buffer[] = new byte[2048];
65 // while(inp.read(buffer)>0){
66 // out.write(buffer);
67 // }
68 // inp.close();
69 // out.close();
70 // } catch (IOException e) {
71 // e.printStackTrace();
72 // }
73 String slave = brick.getName().equalsIgnoreCase("Rover5") ? "Rover6" : "Rover8";
74 LCDPrinter.print("Starting as as master...");
75 LCDPrinter.print("My name is " + brick.getName());
76 LCDPrinter.print("Going to connect to: " + slave);
77 LCDPrinter.print("Loading motors...");
78 RegulatedMotor rightMotor = new EV3LargeRegulatedMotor(MotorPort.A);
79 RegulatedMotor leftMotor = new EV3LargeRegulatedMotor(MotorPort.B);
80 RegulatedMotor measMotor = new EV3MediumRegulatedMotor(MotorPort.C);
81 leftMotor.setSpeed(Constants.speed);
82 rightMotor.setSpeed(Constants.speed);
83 measMotor.setSpeed(50);
84 rightMotor.setAcceleration(Constants.acceleration);
85 leftMotor.setAcceleration(Constants.acceleration);
86 measMotor.setAcceleration(100);
87
88 LCDPrinter.print("Loading touch sensors...");
89 SampleProvider leftLight = new NXTLightSensor(brick.getPort("S1")).getRedMode();
90 SampleProvider rightLight = new NXTLightSensor(brick.getPort("S2")).getRedMode();
91
92 LCDPrinter.print("Loading ultrasone sensor...");
93 SampleProvider backUltra = new EV3UltrasonicSensor(brick.getPort("S3")).getDistanceMode();
94
95 LCDPrinter.print("Loading gyro sensor...");
96 SensorCollector sc = new SensorCollector(backUltra, leftLight, rightLight, new EV3GyroSensor(brick.getPort("S4")));
97
98 BTController.startMaster(slave, sc);
99 LCDPrinter.print("Finished loading");
100 LinkedList<Mission> missions = Missions.getMissions(sc, rightMotor, leftMotor, measMotor);
101 random = new Random();
102 for(Mission m : missions){
103 LCDPrinter.print("Start " + m.name + " mission...");
104 arb = new Arbitrator(m.behaviours);
105 sc.reset();
106 arb.start();
107 LCDPrinter.print(m.name + " finished!!1one!");
108 }
109 // Sound.playSample(new File("rick.wav"));
110 }
111 }
112 }