changes + add two more benchmarks without annotations
[IRC.git] / Robust / src / Benchmarks / SSJava / JavaNatorInfer / StrategyMgr.java
diff --git a/Robust/src/Benchmarks/SSJava/JavaNatorInfer/StrategyMgr.java b/Robust/src/Benchmarks/SSJava/JavaNatorInfer/StrategyMgr.java
new file mode 100644 (file)
index 0000000..c46b5fd
--- /dev/null
@@ -0,0 +1,270 @@
+/*\r
+ * StragegyMgr.java\r
+ *\r
+ * Copyright (c) 1993-2002 Sun Microsystems, Inc. All Rights Reserved.\r
+ *\r
+ * This software is the confidential and proprietary information of Sun\r
+ * Microsystems, Inc. ("Confidential Information").  You shall not\r
+ * disclose such Confidential Information and shall use it only in\r
+ * accordance with the terms of the license agreement you entered into\r
+ * with Sun.\r
+ *\r
+ * SUN MAKES NO REPRESENTATIONS OR WARRANTIES ABOUT THE SUITABILITY OF\r
+ * THE SOFTWARE, EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED\r
+ * TO THE IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A\r
+ * PARTICULAR PURPOSE, OR NON-INFRINGEMENT. SUN SHALL NOT BE LIABLE FOR\r
+ * ANY DAMAGES SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING OR\r
+ * DISTRIBUTING THIS SOFTWARE OR ITS DERIVATIVES.\r
+ */\r
+\r
+/**\r
+ * StrategyMgr - an isolation class ment for programmers to modify and create\r
+ * thier own code for robot strategy.\r
+ * \r
+ * @author Michael Gesundheit\r
+ * @version 1.0\r
+ */\r
+\r
+\r
+public class StrategyMgr {\r
+\r
+  \r
+  private MotorControl mc;\r
+  private static final int zeroSpeed = 45;\r
+  \r
+  private Random rand;\r
+  \r
+  private boolean DEBUGL = true;\r
+  // private boolean DEBUGL = false;\r
+\r
+  // private boolean DEBUG = true;\r
+  \r
+  private boolean DEBUG = true;\r
+\r
+  /**\r
+   * Constructor - Invoke communication to remote application thread\r
+   */\r
+  public StrategyMgr(@DELEGATE MotorControl motorControl) {\r
+    mc = motorControl;\r
+    rand = new Random();\r
+  }\r
+\r
+  void processSonars( 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
+    if ((sonarSensors & 0x1f) == 0) {\r
+      // No sensor data may mean dead area between sensors.\r
+      // Continue with the last gesture until any sensor\r
+      // provide data.\r
+      if (DEBUG) {\r
+        System.out.println("sonar: NO SONARS!!!!!!!!");\r
+      }\r
+    } else if ((sonarSensors & (RobotMain.LF_RT_FRONT)) == (RobotMain.LF_RT_FRONT)) {\r
+      if (DEBUG) {\r
+        System.out.println("sonar: straight");\r
+      }\r
+      straight();\r
+    } else if ((sonarSensors & RobotMain.LF_FRONT) == RobotMain.LF_FRONT) {\r
+      if (DEBUG) {\r
+        System.out.println("sonar: bearLeft");\r
+      }\r
+      bearLeft();\r
+    } else if ((sonarSensors & RobotMain.RT_FRONT) == RobotMain.RT_FRONT) {\r
+      if (DEBUG) {\r
+        System.out.println("sonar: bearRight");\r
+      }\r
+      bearRight();\r
+    } else if ((sonarSensors & RobotMain.RT_SIDE) == RobotMain.RT_SIDE) {\r
+      if (DEBUG) {\r
+        System.out.println("sonar: right");\r
+      }\r
+      spinRight();\r
+    } else if ((sonarSensors & RobotMain.LF_SIDE) == RobotMain.LF_SIDE) {\r
+      if (DEBUG) {\r
+        System.out.println("sonar: left");\r
+      }\r
+      spinLeft();\r
+    } else if ((sonarSensors & RobotMain.BK_SIDE) == RobotMain.BK_SIDE) {\r
+      if (DEBUG) {\r
+        System.out.println("sonar: spin180");\r
+      }\r
+      spin180();\r
+    }\r
+  }\r
+\r
+  void processLineSensors( byte lineSensorsMask) {\r
+\r
+     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
+        stop();\r
+      } else if ((lineSensorsMask & RobotMain.LS_LEFT_RIGHT) == RobotMain.LS_LEFT_RIGHT) {\r
+        if (DEBUGL)\r
+          System.out.println("Line Sensors - Left & Right");\r
+        back();\r
+        try {\r
+          // Thread.sleep(1000);\r
+        } catch (InterruptedException ie) {\r
+        }\r
+        spin180();\r
+        try {\r
+          // Thread.sleep(1000);\r
+        } catch (InterruptedException ie) {\r
+        }\r
+      } else if ((lineSensorsMask & RobotMain.LS_LEFT_REAR) == RobotMain.LS_LEFT_REAR) {\r
+        if (DEBUGL)\r
+          System.out.println("Line Sensors - Left & Rear");\r
+        bearRight();\r
+        try {\r
+          // Thread.sleep(1000);\r
+        } catch (InterruptedException ie) {\r
+        }\r
+      } else if ((lineSensorsMask & RobotMain.LS_RIGHT_REAR) == RobotMain.LS_RIGHT_REAR) {\r
+        if (DEBUGL)\r
+          System.out.println("Line Sensors - Right & Rear");\r
+        bearLeft();\r
+        try {\r
+          // Thread.sleep(1000);\r
+        } catch (InterruptedException ie) {\r
+        }\r
+      } else if ((lineSensorsMask & RobotMain.LS_LEFT) == RobotMain.LS_LEFT) {\r
+        if (DEBUGL)\r
+          System.out.println("Line Sensors - Left");\r
+        backBearRight();\r
+\r
+        try {\r
+          // Thread.sleep(1000);\r
+        } catch (InterruptedException ie) {\r
+        }\r
+      } else if ((lineSensorsMask & RobotMain.LS_RIGHT) == RobotMain.LS_RIGHT) {\r
+        if (DEBUGL)\r
+          System.out.println("Line Sensors - Right");\r
+        backBearLeft();\r
+        try {\r
+          // Thread.sleep(1000);\r
+        } catch (InterruptedException ie) {\r
+        }\r
+      } else if ((lineSensorsMask & RobotMain.LS_REAR) == RobotMain.LS_REAR) {\r
+        if (DEBUGL)\r
+          System.out.println("Line Sensors - Rear");\r
+        straight();\r
+        try {\r
+          // Thread.sleep(1000);\r
+        } catch (InterruptedException ie) {\r
+        }\r
+      }\r
+      lineSensorsMask = TestSensorInput.getCommand();\r
+    }// while loop\r
+  }\r
+\r
+  public void stop() {\r
+    if (DEBUG)\r
+      System.out.println("StrageyMgr: stop....");\r
+    mc.setSpeedLeft(zeroSpeed);\r
+    mc.setSpeedRight(zeroSpeed);\r
+  }\r
+\r
+  public void search() {\r
+    if (DEBUG)\r
+      System.out.println("StrategyMgr: search....");\r
+    mc.setSpeedLeft(70);\r
+    mc.setSpeedRight(50);\r
+  }\r
+\r
+  public void straight() {\r
+    if (DEBUG)\r
+      System.out.println("StrategyMgr: strait....");\r
+    mc.setSpeedLeft(100);\r
+    mc.setSpeedRight(100);\r
+  }\r
+\r
+  public void spinRight() {\r
+    if (DEBUG)\r
+      System.out.println("StrategyMgr: spinRight....");\r
+    mc.setSpeedSpinLeft(100);\r
+    mc.setSpeedSpinRight(0);\r
+  }\r
+\r
+  public void spinLeft() {\r
+    if (DEBUG)\r
+      System.out.println("StrategyMgr: spinLeft....");\r
+    mc.setSpeedSpinLeft(0);\r
+    mc.setSpeedSpinRight(100);\r
+  }\r
+\r
+  public void spin180() {\r
+     int mod = (rand.nextInt() % 2);\r
+\r
+    if (DEBUG)\r
+      System.out.println("StrategyMgr: spin180....");\r
+    if (mod == 1) {\r
+      mc.setSpeedSpinLeft(0);\r
+      mc.setSpeedSpinRight(100);\r
+    } else {\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
+    mc.setSpeedTurnLeft(100);\r
+    mc.setSpeedRight(zeroSpeed);\r
+  }\r
+\r
+  public void left() {\r
+    if (DEBUG)\r
+      System.out.println("StrategyMgr: left....");\r
+    mc.setSpeedLeft(zeroSpeed);\r
+    mc.setSpeedTurnRight(100);\r
+  }\r
+\r
+  public void bearRight() {\r
+    if (DEBUG)\r
+      System.out.println("StrategyMgr: bearRight....");\r
+    mc.setSpeedTurnLeft(100);\r
+    mc.setSpeedTurnRight(60);\r
+  }\r
+\r
+  public void bearLeft() {\r
+    if (DEBUG)\r
+      System.out.println("StrategyMgr: bearLeft....");\r
+    mc.setSpeedTurnLeft(60);\r
+    mc.setSpeedTurnRight(100);\r
+  }\r
+\r
+  public void back() {\r
+    if (DEBUG)\r
+      System.out.println("StrategyMgr: back....");\r
+    mc.setSpeedLeft(0);\r
+    mc.setSpeedRight(0);\r
+  }\r
+\r
+  public void backBearLeft() {\r
+    if (DEBUG)\r
+      System.out.println("StrategyMgr: backBearLeft....");\r
+    mc.setSpeedLeft(30);\r
+    mc.setSpeedRight(0);\r
+  }\r
+\r
+  public void backBearRight() {\r
+    if (DEBUG)\r
+      System.out.println("StrategyMgr: backBearRight....");\r
+    mc.setSpeedLeft(0);\r
+    mc.setSpeedRight(30);\r
+  }\r
+}\r