X-Git-Url: https://git.martlubbers.net/?a=blobdiff_plain;f=dsl%2Fxtend%2Fsrc%2Frobots%2Fmissions%2Fgenerator%2FTaskDSLGenerator.xtend;h=f413af6b8aa070e6674170b00155fe42062876c5;hb=1b13ccb59263b66abc763fb8f298b14bdebc9582;hp=b4c56aea131ca10046cce54c8a932344d4c8eb70;hpb=16aef029cf49685c60c422d36b54d459355e832c;p=des2015.git diff --git a/dsl/xtend/src/robots/missions/generator/TaskDSLGenerator.xtend b/dsl/xtend/src/robots/missions/generator/TaskDSLGenerator.xtend index b4c56ae..f413af6 100644 --- a/dsl/xtend/src/robots/missions/generator/TaskDSLGenerator.xtend +++ b/dsl/xtend/src/robots/missions/generator/TaskDSLGenerator.xtend @@ -45,7 +45,7 @@ public class Missions{ public static LinkedList getMissions(final SensorCollector sensors, RegulatedMotor rightMotor, RegulatedMotor leftMotor, RegulatedMotor measMotor){ LinkedList missions = new LinkedList(); - «FOR m : mission» + «FOR m : mission SEPARATOR "));" AFTER "));"» missions.add(new Mission("«m.name»", new Behavior[]{ «FOR b : m.behaviours SEPARATOR "," AFTER ","»new «b.name»Behaviour(sensors, rightMotor, leftMotor, measMotor) «ENDFOR» @@ -54,7 +54,7 @@ public class Missions{ return «printExpression(m.se)»; } }} - «ENDFOR»)); + «ENDFOR» return missions; } } @@ -73,11 +73,12 @@ public class «b.name»Behaviour extends BasicBehaviour { } «IF b.tc != null» @Override public boolean takeControl(){ - return suppressed == 1 || «printExpression(b.tc)»; + return «printExpression(b.tc)»; } «ENDIF» @Override public void action(){ + LCDPrinter.print("Start: «b.name»"); super.action(); «FOR a : b.actions» «IF a.whichMotor != null» @@ -86,23 +87,28 @@ public class «b.name»Behaviour extends BasicBehaviour { «a.whichMotor.d.toString()»Motor.setSpeed(«a.spd»); «ENDIF» «a.whichMotor.d.toString()»Motor.«a.moveDir.d.toString()»(); - «ELSEIF a.measureWhat != null» - «a.measureWhat.d.toString()»Measure(); - «ELSEIF a.turnDir != null» + «ELSEIF a.time != null» + time = System.currentTimeMillis(); + while(!suppressed«IF a.time.time > 0» && System.currentTimeMillis()-time<«a.time.time»«ENDIF»){ + Thread.yield(); + } + «ELSEIF a.turnType != null» «IF a.acc > 0» leftMotor.setAcceleration(«a.acc»); leftMotor.setSpeed(«a.spd»); rightMotor.setAcceleration(«a.acc»); rightMotor.setSpeed(«a.spd»); «ENDIF» - «a.turnDir.d.toString()»Turn(«a.degrees»); + «IF a.turnType.turnDir != null» + «a.turnType.turnDir.d.toString()»Turn(«a.turnType.degrees»); + «ELSE» + turnRandom(«a.turnType.start», «a.turnType.end»); + «ENDIF» «ELSE» - time = System.currentTimeMillis(); - while(suppressed != 2«IF a.time.time > 0» && System.currentTimeMillis()-time>«a.time.time»«ENDIF»){ - Thread.yield(); - } + measure(); «ENDIF» «ENDFOR» + LCDPrinter.print("Stop: «b.name»"); reset(); } } @@ -129,6 +135,8 @@ public class Constants{ «ELSEIF e.scond.color != null» sensors.color() == «e.scond.color.d.ordinal» «ENDIF» + «ELSEIF e.negscond != null» + !(«printExpression(e.negscond)») «ELSE» «IF e.op.d.equals(OperatorE.AND)» «FOR ex : e.s BEFORE "(" SEPARATOR "&&" AFTER ")"»«printExpression(ex)»«ENDFOR»