final commit
[des2015.git] / dsl / runtime / src / nl / ru / des / Marster.java
index 6fc32e8..7074f59 100644 (file)
 package nl.ru.des;
 
-import lejos.hardware.Button;
+import java.io.File;
+import java.io.PrintStream;
+import java.util.LinkedList;
+import java.util.Random;
+
+import lejos.hardware.Sound;
 import lejos.hardware.ev3.EV3;
 import lejos.hardware.ev3.LocalEV3;
 import lejos.hardware.lcd.Font;
-import lejos.hardware.lcd.TextLCD;
+import lejos.hardware.lcd.LCDOutputStream;
 import lejos.hardware.motor.EV3LargeRegulatedMotor;
+import lejos.hardware.motor.EV3MediumRegulatedMotor;
 import lejos.hardware.port.MotorPort;
 import lejos.hardware.sensor.EV3ColorSensor;
 import lejos.hardware.sensor.EV3GyroSensor;
 import lejos.hardware.sensor.EV3TouchSensor;
 import lejos.hardware.sensor.EV3UltrasonicSensor;
 import lejos.hardware.sensor.NXTLightSensor;
+import lejos.robotics.RegulatedMotor;
 import lejos.robotics.SampleProvider;
-import lejos.robotics.subsumption.Arbitrator;
+import lejos.utility.Delay;
 import nl.ru.des.sensors.BTController;
 import nl.ru.des.sensors.RemoteSensors;
 import nl.ru.des.sensors.SensorCollector;
 
 public class Marster {
        public static Arbitrator arb;
+       public static Random random;
+       
+       public static void playPacman(){
+               int whole = 2000;
+               Sound.playNote(Sound.PIANO, 494, whole/16);// b4
+               Sound.playNote(Sound.PIANO, 988, whole/16);// b5
+               Sound.playNote(Sound.PIANO, 740, whole/16);// f#5
+               Sound.playNote(Sound.PIANO, 622, whole/16);// eb5
+               Sound.playNote(Sound.PIANO, 988, whole/32);// b5
+               Sound.playNote(Sound.PIANO, 740, whole/16+whole/32);// f#5
+               Sound.playNote(Sound.PIANO, 622, whole/8);// eb5
+               
+               Sound.playNote(Sound.PIANO, 523, whole/16);// c5
+               Sound.playNote(Sound.PIANO, 1047, whole/16);// c6
+               Sound.playNote(Sound.PIANO, 784, whole/16);// g5
+               Sound.playNote(Sound.PIANO, 659, whole/16);// e5
+               Sound.playNote(Sound.PIANO, 1047, whole/32);// c6
+               Sound.playNote(Sound.PIANO, 784, whole/16+whole/32);// g5
+               Sound.playNote(Sound.PIANO, 659, whole/8);// e5
+               
+               Sound.playNote(Sound.PIANO, 494, whole/16);// b4
+               Sound.playNote(Sound.PIANO, 988, whole/16);// b5
+               Sound.playNote(Sound.PIANO, 740, whole/16);// f#5
+               Sound.playNote(Sound.PIANO, 622, whole/16);// eb5
+               Sound.playNote(Sound.PIANO, 988, whole/32);// b5
+               Sound.playNote(Sound.PIANO, 740, whole/16+whole/32);// f#5
+               Sound.playNote(Sound.PIANO, 622, whole/8);// eb5
+               
+               Sound.playNote(Sound.PIANO, 622, whole/32);// eb5
+               Sound.playNote(Sound.PIANO, 659, whole/32);// e5
+               Sound.playNote(Sound.PIANO, 698, whole/16);// f5
+               Sound.playNote(Sound.PIANO, 698, whole/32);// f5
+               Sound.playNote(Sound.PIANO, 740, whole/32);// f#5
+               Sound.playNote(Sound.PIANO, 784, whole/16);// g5
+               Sound.playNote(Sound.PIANO, 784, whole/32);// g5
+               Sound.playNote(Sound.PIANO, 831, whole/32);// ab5
+               Sound.playNote(Sound.PIANO, 880, whole/16);// a5
+               Sound.playNote(Sound.PIANO, 988, whole/8);// b5
+       }
        
        @SuppressWarnings("resource")
        public static void main(String[] args) {
                EV3 brick = LocalEV3.get();
-               TextLCD tlcd = brick.getTextLCD(Font.getSmallFont());
-               LCDPrinter.startLCDPrinter(tlcd);
-               System.setOut(LCDPrinter.getPrefixedPrintstream("out: ", tlcd));
-               System.setErr(LCDPrinter.getPrefixedPrintstream("err: ", tlcd));
+               PrintStream lcd = new PrintStream(new LCDOutputStream(brick.getTextLCD(Font.getSmallFont())));
+               System.setOut(lcd);
+               System.setErr(lcd);
                
-               LCDPrinter.print("Loading keylistener...");
+               System.out.println("Loading keylistener...");
                brick.getKey("Escape").addKeyListener(new ButtonListener());
-
                if(brick.getName().equalsIgnoreCase("Rover6") || brick.getName().equalsIgnoreCase("Rover8")){
-                       LCDPrinter.print("Starting as a slave...");
-                       LCDPrinter.print("Loading touch sensors...");
+                       System.out.println("Starting as a slave...");
+                       System.out.println("My name is " + brick.getName());
+                       System.out.println("Loading touch sensors...");
                        SampleProvider leftTouch = new EV3TouchSensor(brick.getPort("S1")).getTouchMode();
                        SampleProvider rightTouch = new EV3TouchSensor(brick.getPort("S2")).getTouchMode();
                        
-                       LCDPrinter.print("Loading ultrasone sensor...");
+                       System.out.println("Loading ultrasone sensor...");
                        SampleProvider frontUltra = new EV3UltrasonicSensor(brick.getPort("S3")).getDistanceMode();
                        
-                       LCDPrinter.print("Loading color sensors...");
+                       System.out.println("Loading color sensors...");
                        SampleProvider color = new EV3ColorSensor(brick.getPort("S4")).getColorIDMode();
                        RemoteSensors rs = new RemoteSensors(leftTouch, rightTouch, frontUltra, color);
                        
-                       LCDPrinter.print("Start BT... Press any key to commence");
-                       Button.waitForAnyEvent();
                        BTController.startSlave();
-                       rs.start(BTController.buf);
+                       try {
+                               rs.start(BTController.buf);
+                       } catch (Exception e){
+                               System.exit(0);
+                       }
                } else {
-                       LCDPrinter.print("Starting as as master...");
-                       LCDPrinter.print("Loading motors...");
-                       EV3LargeRegulatedMotor rightMotor = new EV3LargeRegulatedMotor(MotorPort.A);
-                       EV3LargeRegulatedMotor leftMotor = new EV3LargeRegulatedMotor(MotorPort.B);
-                       EV3LargeRegulatedMotor measMotor = new EV3LargeRegulatedMotor(MotorPort.C);
-//                     leftMotor.setSpeed(Constants.speed);
-//                     rightMotor.setSpeed(Constants.speed);
-//                     measMotor.setSpeed(100);
-//                     rightMotor.setAcceleration(Constants.acceleration);
-//                     leftMotor.setAcceleration(Constants.acceleration);
-//                     measMotor.setAcceleration(100);
-                       
-                       LCDPrinter.print("Loading touch sensors...");
+                       String slave = brick.getName().equalsIgnoreCase("Rover5") ? "Rover6" : "Rover8";
+                       System.out.println("Starting as as master...");
+                       System.out.println("My name is " + brick.getName());
+                       System.out.println("Going to connect to: " + slave);
+                       System.out.println("Loading motors...");
+                       RegulatedMotor rightMotor = new EV3LargeRegulatedMotor(MotorPort.A);
+                       RegulatedMotor leftMotor = new EV3LargeRegulatedMotor(MotorPort.B);
+                       RegulatedMotor measMotor = new EV3MediumRegulatedMotor(MotorPort.C);
+                       leftMotor.setSpeed(Constants.speed);
+                       rightMotor.setSpeed(Constants.speed);
+                       measMotor.setSpeed(50);
+                       rightMotor.setAcceleration(Constants.acceleration);
+                       leftMotor.setAcceleration(Constants.acceleration);
+                       measMotor.setAcceleration(50);
+                                               
+                       System.out.println("Loading touch sensors...");
                        SampleProvider leftLight = new NXTLightSensor(brick.getPort("S1")).getRedMode();
                        SampleProvider rightLight = new NXTLightSensor(brick.getPort("S2")).getRedMode();
                        
-                       LCDPrinter.print("Loading ultrasone sensor...");
+                       System.out.println("Loading ultrasone sensor...");
                        SampleProvider backUltra = new EV3UltrasonicSensor(brick.getPort("S3")).getDistanceMode();
                        
-                       LCDPrinter.print("Loading gyro sensor...");
-                       SampleProvider gyro = new EV3GyroSensor(brick.getPort("S4")).getAngleAndRateMode();
+                       System.out.println("Loading gyro sensor...");
+                       SensorCollector sc = new SensorCollector(backUltra, leftLight, rightLight, new EV3GyroSensor(brick.getPort("S4")));
 
-                       LCDPrinter.print("Start BT... Press any key to commence");
-                       Button.waitForAnyEvent();
-                       BTController.startMaster(brick.getName() == "Rover5" ? "Rover6" : "Rover8", new SensorCollector(backUltra, leftLight, rightLight, gyro));
-                       LCDPrinter.print("Finished loading");
-                       Button.waitForAnyPress();
-//                     Arbitrator a;
-//                     LinkedList<Mission> missions = Missions.getMissions(sensors, rightMotor, leftMotor, colorMemory);
-//                     for(Mission m : missions){
-//                             LCDPrinter.print("Start " + m.name + " mission...");
-//                             a = new Arbitrator(m.behaviours);
-//                             a.start();
-//                     }
+                       BTController.startMaster(slave, sc);
+                       System.out.println("Finished loading");
+                       sc.calibrate();
+                       LinkedList<Mission> missions = Missions.getMissions(sc, rightMotor, leftMotor, measMotor);
+                       random = new Random();
+                       Delay.msDelay(2000);
+                       playPacman();
+                       for(Mission m : missions){
+                               System.out.println("Start " + m.name + " mission...");
+                               arb = new Arbitrator(m.behaviours);
+                               sc.reset();
+                               arb.start();
+                               Sound.buzz();
+                               Delay.msDelay(5000);
+                               System.out.println(m.name + " finished!!1one!");
+                       }
+                       Sound.playSample(new File("rick.wav"), Sound.VOL_MAX);
+                       Delay.msDelay(10000);
+                       System.exit(0);
                }
        }
 }
\ No newline at end of file