Implementing colors collection and mission exit
[des2015.git] / dsl / runtime / src / nl / ru / des / MarsRover.java
index f5aee01..41a5f90 100644 (file)
@@ -1,5 +1,7 @@
 package nl.ru.des;
 
+import java.util.LinkedList;
+
 import lejos.hardware.ev3.EV3;
 import lejos.hardware.ev3.LocalEV3;
 import lejos.hardware.lcd.Font;
@@ -10,9 +12,11 @@ import lejos.hardware.sensor.EV3ColorSensor;
 import lejos.hardware.sensor.EV3TouchSensor;
 import lejos.hardware.sensor.EV3UltrasonicSensor;
 import lejos.robotics.SampleProvider;
+import lejos.robotics.subsumption.Arbitrator;
 
 public class MarsRover {
        public static final float SAMPLERATE = 100;
+       public static LinkedList<Mission> missions = new LinkedList<Mission>();
        
        @SuppressWarnings("resource")
        public static void main(String[] args) {
@@ -45,5 +49,24 @@ public class MarsRover {
 
                LCDPrinter.print("Initializing behaviours...");
                SensorCollector sensors = new SensorCollector(ultraSonic, color, leftTouch, rightTouch);
+               
+               LCDPrinter.print("Initializing color collector...");
+               ColorMemory colorMemory = new ColorMemory(color);
+               
+               Arbitrator a;
+               missions = Missions.getMissions(sensors, rightMotor, leftMotor, colorMemory);
+               for(Mission m : missions){
+                       LCDPrinter.print("Start " + m.name + " mission...");
+                       a = new Arbitrator(m.behaviours);
+                       m.SetArbitrator(a);
+                       a.start();
+               }
+       }
+       
+       public static void FinishMission(String missionName){
+               Mission m = missions.stream().filter(o -> o.name.equalsIgnoreCase(missionName)).findFirst().get();
+               if(m != null){
+                       m.arbitrator.stop();
+               }
        }
 }
\ No newline at end of file