add input sensor data file
[IRC.git] / Robust / src / Benchmarks / SSJava / JavaNator / StrategyMgr.java
1 /*\r
2  * StragegyMgr.java\r
3  *\r
4  * Copyright (c) 1993-2002 Sun Microsystems, Inc. All Rights Reserved.\r
5  *\r
6  * This software is the confidential and proprietary information of Sun\r
7  * Microsystems, Inc. ("Confidential Information").  You shall not\r
8  * disclose such Confidential Information and shall use it only in\r
9  * accordance with the terms of the license agreement you entered into\r
10  * with Sun.\r
11  *\r
12  * SUN MAKES NO REPRESENTATIONS OR WARRANTIES ABOUT THE SUITABILITY OF\r
13  * THE SOFTWARE, EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED\r
14  * TO THE IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A\r
15  * PARTICULAR PURPOSE, OR NON-INFRINGEMENT. SUN SHALL NOT BE LIABLE FOR\r
16  * ANY DAMAGES SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING OR\r
17  * DISTRIBUTING THIS SOFTWARE OR ITS DERIVATIVES.\r
18  */\r
19 \r
20 /**\r
21  * StrategyMgr - an isolation class ment for programmers to modify and create\r
22  * thier own code for robot strategy.\r
23  * \r
24  * @author Michael Gesundheit\r
25  * @version 1.0\r
26  */\r
27 public class StrategyMgr {\r
28 \r
29   private PWMControl pwmControl;\r
30   private int zeroSpeed = 45;\r
31   private Random rand;\r
32   private boolean DEBUGL = true;\r
33   // private boolean DEBUGL = false;\r
34 \r
35   // private boolean DEBUG = true;\r
36   private boolean DEBUG = true;\r
37 \r
38   /**\r
39    * Constructor - Invoke communication to remote application thread\r
40    */\r
41   StrategyMgr(PWMManager pwmManager) {\r
42     this.pwmControl = pwmManager.getPWMControl();\r
43     rand = new Random();\r
44   }\r
45 \r
46   void processSonars(byte sonarSensors) {\r
47 \r
48     // 5 sensors. 1,2 are fromnt left and right.\r
49     // Sensor 3 is right side, 4 back and 5 is left side.\r
50     if ((sonarSensors & 0x1f) == 0) {\r
51       // No sensor data may mean dead area between sensors.\r
52       // Continue with the last gesture until any sensor\r
53       // provide data.\r
54       if (DEBUG) {\r
55         System.out.println("sonar: NO SONARS!!!!!!!!");\r
56       }\r
57     } else if ((sonarSensors & (RobotMain.LF_RT_FRONT)) == (RobotMain.LF_RT_FRONT)) {\r
58       if (DEBUG) {\r
59         System.out.println("sonar: straight");\r
60       }\r
61       straight();\r
62     } else if ((sonarSensors & RobotMain.LF_FRONT) == RobotMain.LF_FRONT) {\r
63       if (DEBUG) {\r
64         System.out.println("sonar: bearLeft");\r
65       }\r
66       bearLeft();\r
67     } else if ((sonarSensors & RobotMain.RT_FRONT) == RobotMain.RT_FRONT) {\r
68       if (DEBUG) {\r
69         System.out.println("sonar: bearRight");\r
70       }\r
71       bearRight();\r
72     } else if ((sonarSensors & RobotMain.RT_SIDE) == RobotMain.RT_SIDE) {\r
73       if (DEBUG) {\r
74         System.out.println("sonar: right");\r
75       }\r
76       spinRight();\r
77     } else if ((sonarSensors & RobotMain.LF_SIDE) == RobotMain.LF_SIDE) {\r
78       if (DEBUG) {\r
79         System.out.println("sonar: left");\r
80       }\r
81       spinLeft();\r
82     } else if ((sonarSensors & RobotMain.BK_SIDE) == RobotMain.BK_SIDE) {\r
83       if (DEBUG) {\r
84         System.out.println("sonar: spin180");\r
85       }\r
86       spin180();\r
87     }\r
88   }\r
89 \r
90   void processLineSensors(byte lineSensorsMask) {\r
91     while ((lineSensorsMask & RobotMain.LS_ALL) != 0) {\r
92       if ((lineSensorsMask & RobotMain.LS_ALL) == RobotMain.LS_ALL) {\r
93         if (DEBUGL)\r
94           System.out.println("Line Sensors - ALL");\r
95         stop();\r
96       } else if ((lineSensorsMask & RobotMain.LS_LEFT_RIGHT) == RobotMain.LS_LEFT_RIGHT) {\r
97         if (DEBUGL)\r
98           System.out.println("Line Sensors - Left & Right");\r
99         back();\r
100         try {\r
101           // Thread.sleep(1000);\r
102         } catch (InterruptedException ie) {\r
103         }\r
104         spin180();\r
105         try {\r
106           // Thread.sleep(1000);\r
107         } catch (InterruptedException ie) {\r
108         }\r
109       } else if ((lineSensorsMask & RobotMain.LS_LEFT_REAR) == RobotMain.LS_LEFT_REAR) {\r
110         if (DEBUGL)\r
111           System.out.println("Line Sensors - Left & Rear");\r
112         bearRight();\r
113         try {\r
114           // Thread.sleep(1000);\r
115         } catch (InterruptedException ie) {\r
116         }\r
117       } else if ((lineSensorsMask & RobotMain.LS_RIGHT_REAR) == RobotMain.LS_RIGHT_REAR) {\r
118         if (DEBUGL)\r
119           System.out.println("Line Sensors - Right & Rear");\r
120         bearLeft();\r
121         try {\r
122           // Thread.sleep(1000);\r
123         } catch (InterruptedException ie) {\r
124         }\r
125       } else if ((lineSensorsMask & RobotMain.LS_LEFT) == RobotMain.LS_LEFT) {\r
126         if (DEBUGL)\r
127           System.out.println("Line Sensors - Left");\r
128         backBearRight();\r
129         try {\r
130           // Thread.sleep(1000);\r
131         } catch (InterruptedException ie) {\r
132         }\r
133       } else if ((lineSensorsMask & RobotMain.LS_RIGHT) == RobotMain.LS_RIGHT) {\r
134         if (DEBUGL)\r
135           System.out.println("Line Sensors - Right");\r
136         backBearLeft();\r
137         try {\r
138           // Thread.sleep(1000);\r
139         } catch (InterruptedException ie) {\r
140         }\r
141       } else if ((lineSensorsMask & RobotMain.LS_REAR) == RobotMain.LS_REAR) {\r
142         if (DEBUGL)\r
143           System.out.println("Line Sensors - Rear");\r
144         straight();\r
145         try {\r
146           // Thread.sleep(1000);\r
147         } catch (InterruptedException ie) {\r
148         }\r
149       }\r
150       lineSensorsMask = TestSensorInput.getCommand();\r
151     }// while loop\r
152   }\r
153 \r
154   public void stop() {\r
155     if (DEBUG)\r
156       System.out.println("StrageyMgr: stop....");\r
157     pwmControl.setSpeedLeft(zeroSpeed);\r
158     pwmControl.setSpeedRight(zeroSpeed);\r
159   }\r
160 \r
161   public void search() {\r
162     if (DEBUG)\r
163       System.out.println("StrategyMgr: search....");\r
164     pwmControl.setSpeedLeft(70);\r
165     pwmControl.setSpeedRight(50);\r
166   }\r
167 \r
168   public void straight() {\r
169     if (DEBUG)\r
170       System.out.println("StrategyMgr: strait....");\r
171     pwmControl.setSpeedLeft(100);\r
172     pwmControl.setSpeedRight(100);\r
173   }\r
174 \r
175   public void spinRight() {\r
176     if (DEBUG)\r
177       System.out.println("StrategyMgr: spinRight....");\r
178     pwmControl.setSpeedSpinLeft(100);\r
179     pwmControl.setSpeedSpinRight(0);\r
180   }\r
181 \r
182   public void spinLeft() {\r
183     if (DEBUG)\r
184       System.out.println("StrategyMgr: spinLeft....");\r
185     pwmControl.setSpeedSpinLeft(0);\r
186     pwmControl.setSpeedSpinRight(100);\r
187   }\r
188 \r
189   public void spin180() {\r
190     int mod = (rand.nextInt() % 2);\r
191 \r
192     if (DEBUG)\r
193       System.out.println("StrategyMgr: spin180....");\r
194     if (mod == 1) {\r
195       pwmControl.setSpeedSpinLeft(0);\r
196       pwmControl.setSpeedSpinRight(100);\r
197     } else {\r
198       pwmControl.setSpeedSpinLeft(100);\r
199       pwmControl.setSpeedSpinRight(0);\r
200     }\r
201   }\r
202 \r
203   public void right() {\r
204     if (DEBUG)\r
205       System.out.println("StrategyMgr: right....");\r
206     pwmControl.setSpeedTurnLeft(100);\r
207     pwmControl.setSpeedRight(zeroSpeed);\r
208   }\r
209 \r
210   public void left() {\r
211     if (DEBUG)\r
212       System.out.println("StrategyMgr: left....");\r
213     pwmControl.setSpeedLeft(zeroSpeed);\r
214     pwmControl.setSpeedTurnRight(100);\r
215   }\r
216 \r
217   public void bearRight() {\r
218     if (DEBUG)\r
219       System.out.println("StrategyMgr: bearRight....");\r
220     pwmControl.setSpeedTurnLeft(100);\r
221     pwmControl.setSpeedTurnRight(60);\r
222   }\r
223 \r
224   public void bearLeft() {\r
225     if (DEBUG)\r
226       System.out.println("StrategyMgr: bearLeft....");\r
227     pwmControl.setSpeedTurnLeft(60);\r
228     pwmControl.setSpeedTurnRight(100);\r
229   }\r
230 \r
231   public void back() {\r
232     if (DEBUG)\r
233       System.out.println("StrategyMgr: back....");\r
234     pwmControl.setSpeedLeft(0);\r
235     pwmControl.setSpeedRight(0);\r
236   }\r
237 \r
238   public void backBearLeft() {\r
239     if (DEBUG)\r
240       System.out.println("StrategyMgr: backBearLeft....");\r
241     pwmControl.setSpeedLeft(30);\r
242     pwmControl.setSpeedRight(0);\r
243   }\r
244 \r
245   public void backBearRight() {\r
246     if (DEBUG)\r
247       System.out.println("StrategyMgr: backBearRight....");\r
248     pwmControl.setSpeedLeft(0);\r
249     pwmControl.setSpeedRight(30);\r
250   }\r
251 }\r