* @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
}\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
if (DEBUGL)\r
System.out.println("Line Sensors - Left");\r
backBearRight();\r
+\r
try {\r
// Thread.sleep(1000);\r
} catch (InterruptedException ie) {\r
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