add source code that does not have location annotations.
[IRC.git] / Robust / src / Benchmarks / SSJava / JavaNator / StrategyMgr.java
index 94df925ab872abea6ab198f1e1611de005bb624b..6e19ca04f2b10686fa92402d6457c0ca54dfd6b3 100644 (file)
  * @author Michael Gesundheit\r
  * @version 1.0\r
  */\r
+@LATTICE("C<V,V<T,V*")\r
+@METHODDEFAULT("THIS<IN,IN*,THISLOC=THIS,GLOBALLOC=THIS")\r
 public class StrategyMgr {\r
 \r
-  private PWMControl pwmControl;\r
-  private int zeroSpeed = 45;\r
+  @LOC("C")\r
+  private MotorControl mc;\r
+  private static final int zeroSpeed = 45;\r
+  @LOC("T")\r
   private Random rand;\r
+  @LOC("T")\r
   private boolean DEBUGL = true;\r
   // private boolean DEBUGL = false;\r
 \r
   // private boolean DEBUG = true;\r
+  @LOC("T")\r
   private boolean DEBUG = true;\r
 \r
   /**\r
    * Constructor - Invoke communication to remote application thread\r
    */\r
-  StrategyMgr(PWMManager pwmManager) {\r
-    this.pwmControl = pwmManager.getPWMControl();\r
+  public StrategyMgr(@DELEGATE MotorControl motorControl) {\r
+    mc = motorControl;\r
     rand = new Random();\r
   }\r
 \r
-  void processSonars(byte sonarSensors) {\r
+  void processSonars(@LOC("IN") byte sonarSensors) {\r
 \r
     // 5 sensors. 1,2 are fromnt left and right.\r
     // Sensor 3 is right side, 4 back and 5 is left side.\r
@@ -87,8 +93,20 @@ public class StrategyMgr {
     }\r
   }\r
 \r
-  void processLineSensors(byte lineSensorsMask) {\r
+  void processLineSensors(@LOC("IN") byte lineSensorsMask) {\r
+\r
+    @LOC("IN") int count = 0;\r
+\r
     while ((lineSensorsMask & RobotMain.LS_ALL) != 0) {\r
+\r
+      if (count > 100) {\r
+        // if the robot fail to get out of weird condition wihtin 100 steps,\r
+        // terminate while loop for stabilizing behavior.\r
+        stop();\r
+        break;\r
+      }\r
+      count++;\r
+\r
       if ((lineSensorsMask & RobotMain.LS_ALL) == RobotMain.LS_ALL) {\r
         if (DEBUGL)\r
           System.out.println("Line Sensors - ALL");\r
@@ -126,6 +144,7 @@ public class StrategyMgr {
         if (DEBUGL)\r
           System.out.println("Line Sensors - Left");\r
         backBearRight();\r
+\r
         try {\r
           // Thread.sleep(1000);\r
         } catch (InterruptedException ie) {\r
@@ -154,98 +173,98 @@ public class StrategyMgr {
   public void stop() {\r
     if (DEBUG)\r
       System.out.println("StrageyMgr: stop....");\r
-    pwmControl.setSpeedLeft(zeroSpeed);\r
-    pwmControl.setSpeedRight(zeroSpeed);\r
+    mc.setSpeedLeft(zeroSpeed);\r
+    mc.setSpeedRight(zeroSpeed);\r
   }\r
 \r
   public void search() {\r
     if (DEBUG)\r
       System.out.println("StrategyMgr: search....");\r
-    pwmControl.setSpeedLeft(70);\r
-    pwmControl.setSpeedRight(50);\r
+    mc.setSpeedLeft(70);\r
+    mc.setSpeedRight(50);\r
   }\r
 \r
   public void straight() {\r
     if (DEBUG)\r
       System.out.println("StrategyMgr: strait....");\r
-    pwmControl.setSpeedLeft(100);\r
-    pwmControl.setSpeedRight(100);\r
+    mc.setSpeedLeft(100);\r
+    mc.setSpeedRight(100);\r
   }\r
 \r
   public void spinRight() {\r
     if (DEBUG)\r
       System.out.println("StrategyMgr: spinRight....");\r
-    pwmControl.setSpeedSpinLeft(100);\r
-    pwmControl.setSpeedSpinRight(0);\r
+    mc.setSpeedSpinLeft(100);\r
+    mc.setSpeedSpinRight(0);\r
   }\r
 \r
   public void spinLeft() {\r
     if (DEBUG)\r
       System.out.println("StrategyMgr: spinLeft....");\r
-    pwmControl.setSpeedSpinLeft(0);\r
-    pwmControl.setSpeedSpinRight(100);\r
+    mc.setSpeedSpinLeft(0);\r
+    mc.setSpeedSpinRight(100);\r
   }\r
 \r
   public void spin180() {\r
-    int mod = (rand.nextInt() % 2);\r
+    @LOC("THIS,StrategyMgr.V") int mod = (rand.nextInt() % 2);\r
 \r
     if (DEBUG)\r
       System.out.println("StrategyMgr: spin180....");\r
     if (mod == 1) {\r
-      pwmControl.setSpeedSpinLeft(0);\r
-      pwmControl.setSpeedSpinRight(100);\r
+      mc.setSpeedSpinLeft(0);\r
+      mc.setSpeedSpinRight(100);\r
     } else {\r
-      pwmControl.setSpeedSpinLeft(100);\r
-      pwmControl.setSpeedSpinRight(0);\r
+      mc.setSpeedSpinLeft(100);\r
+      mc.setSpeedSpinRight(0);\r
     }\r
   }\r
 \r
   public void right() {\r
     if (DEBUG)\r
       System.out.println("StrategyMgr: right....");\r
-    pwmControl.setSpeedTurnLeft(100);\r
-    pwmControl.setSpeedRight(zeroSpeed);\r
+    mc.setSpeedTurnLeft(100);\r
+    mc.setSpeedRight(zeroSpeed);\r
   }\r
 \r
   public void left() {\r
     if (DEBUG)\r
       System.out.println("StrategyMgr: left....");\r
-    pwmControl.setSpeedLeft(zeroSpeed);\r
-    pwmControl.setSpeedTurnRight(100);\r
+    mc.setSpeedLeft(zeroSpeed);\r
+    mc.setSpeedTurnRight(100);\r
   }\r
 \r
   public void bearRight() {\r
     if (DEBUG)\r
       System.out.println("StrategyMgr: bearRight....");\r
-    pwmControl.setSpeedTurnLeft(100);\r
-    pwmControl.setSpeedTurnRight(60);\r
+    mc.setSpeedTurnLeft(100);\r
+    mc.setSpeedTurnRight(60);\r
   }\r
 \r
   public void bearLeft() {\r
     if (DEBUG)\r
       System.out.println("StrategyMgr: bearLeft....");\r
-    pwmControl.setSpeedTurnLeft(60);\r
-    pwmControl.setSpeedTurnRight(100);\r
+    mc.setSpeedTurnLeft(60);\r
+    mc.setSpeedTurnRight(100);\r
   }\r
 \r
   public void back() {\r
     if (DEBUG)\r
       System.out.println("StrategyMgr: back....");\r
-    pwmControl.setSpeedLeft(0);\r
-    pwmControl.setSpeedRight(0);\r
+    mc.setSpeedLeft(0);\r
+    mc.setSpeedRight(0);\r
   }\r
 \r
   public void backBearLeft() {\r
     if (DEBUG)\r
       System.out.println("StrategyMgr: backBearLeft....");\r
-    pwmControl.setSpeedLeft(30);\r
-    pwmControl.setSpeedRight(0);\r
+    mc.setSpeedLeft(30);\r
+    mc.setSpeedRight(0);\r
   }\r
 \r
   public void backBearRight() {\r
     if (DEBUG)\r
       System.out.println("StrategyMgr: backBearRight....");\r
-    pwmControl.setSpeedLeft(0);\r
-    pwmControl.setSpeedRight(30);\r
+    mc.setSpeedLeft(0);\r
+    mc.setSpeedRight(30);\r
   }\r
 }\r