update, working bt and final schedule
[des2015.git] / dsl / runtime / src / nl / ru / des / Marster.java
1 package nl.ru.des;
2
3 import lejos.hardware.Button;
4 import lejos.hardware.ev3.EV3;
5 import lejos.hardware.ev3.LocalEV3;
6 import lejos.hardware.lcd.Font;
7 import lejos.hardware.lcd.TextLCD;
8 import lejos.hardware.motor.EV3LargeRegulatedMotor;
9 import lejos.hardware.port.MotorPort;
10 import lejos.hardware.sensor.EV3ColorSensor;
11 import lejos.hardware.sensor.EV3GyroSensor;
12 import lejos.hardware.sensor.EV3TouchSensor;
13 import lejos.hardware.sensor.EV3UltrasonicSensor;
14 import lejos.hardware.sensor.NXTLightSensor;
15 import lejos.robotics.SampleProvider;
16 import lejos.robotics.subsumption.Arbitrator;
17 import nl.ru.des.sensors.BTController;
18 import nl.ru.des.sensors.RemoteSensors;
19 import nl.ru.des.sensors.SensorCollector;
20
21 public class Marster {
22 public static Arbitrator arb;
23
24 @SuppressWarnings("resource")
25 public static void main(String[] args) {
26 EV3 brick = LocalEV3.get();
27 TextLCD tlcd = brick.getTextLCD(Font.getSmallFont());
28 LCDPrinter.startLCDPrinter(tlcd);
29 System.setOut(LCDPrinter.getPrefixedPrintstream("out: ", tlcd));
30 System.setErr(LCDPrinter.getPrefixedPrintstream("err: ", tlcd));
31
32 LCDPrinter.print("Loading keylistener...");
33 brick.getKey("Escape").addKeyListener(new ButtonListener());
34
35 if(brick.getName().equalsIgnoreCase("Rover6") || brick.getName().equalsIgnoreCase("Rover8")){
36 LCDPrinter.print("Starting as a slave...");
37 LCDPrinter.print("Loading touch sensors...");
38 SampleProvider leftTouch = new EV3TouchSensor(brick.getPort("S1")).getTouchMode();
39 SampleProvider rightTouch = new EV3TouchSensor(brick.getPort("S2")).getTouchMode();
40
41 LCDPrinter.print("Loading ultrasone sensor...");
42 SampleProvider frontUltra = new EV3UltrasonicSensor(brick.getPort("S3")).getDistanceMode();
43
44 LCDPrinter.print("Loading color sensors...");
45 SampleProvider color = new EV3ColorSensor(brick.getPort("S4")).getColorIDMode();
46 RemoteSensors rs = new RemoteSensors(leftTouch, rightTouch, frontUltra, color);
47
48 LCDPrinter.print("Start BT... Press any key to commence");
49 Button.waitForAnyEvent();
50 BTController.startSlave();
51 rs.start(BTController.buf);
52 } else {
53 LCDPrinter.print("Starting as as master...");
54 LCDPrinter.print("Loading motors...");
55 EV3LargeRegulatedMotor rightMotor = new EV3LargeRegulatedMotor(MotorPort.A);
56 EV3LargeRegulatedMotor leftMotor = new EV3LargeRegulatedMotor(MotorPort.B);
57 EV3LargeRegulatedMotor measMotor = new EV3LargeRegulatedMotor(MotorPort.C);
58 // leftMotor.setSpeed(Constants.speed);
59 // rightMotor.setSpeed(Constants.speed);
60 // measMotor.setSpeed(100);
61 // rightMotor.setAcceleration(Constants.acceleration);
62 // leftMotor.setAcceleration(Constants.acceleration);
63 // measMotor.setAcceleration(100);
64
65 LCDPrinter.print("Loading touch sensors...");
66 SampleProvider leftLight = new NXTLightSensor(brick.getPort("S1")).getRedMode();
67 SampleProvider rightLight = new NXTLightSensor(brick.getPort("S2")).getRedMode();
68
69 LCDPrinter.print("Loading ultrasone sensor...");
70 SampleProvider backUltra = new EV3UltrasonicSensor(brick.getPort("S3")).getDistanceMode();
71
72 LCDPrinter.print("Loading gyro sensor...");
73 SampleProvider gyro = new EV3GyroSensor(brick.getPort("S4")).getAngleAndRateMode();
74
75 LCDPrinter.print("Start BT... Press any key to commence");
76 Button.waitForAnyEvent();
77 BTController.startMaster(brick.getName() == "Rover5" ? "Rover6" : "Rover8", new SensorCollector(backUltra, leftLight, rightLight, gyro));
78 LCDPrinter.print("Finished loading");
79 Button.waitForAnyPress();
80 // Arbitrator a;
81 // LinkedList<Mission> missions = Missions.getMissions(sensors, rightMotor, leftMotor, colorMemory);
82 // for(Mission m : missions){
83 // LCDPrinter.print("Start " + m.name + " mission...");
84 // a = new Arbitrator(m.behaviours);
85 // a.start();
86 // }
87 }
88 }
89 }