start new benchmark JavaNator.
[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 = false;\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   \r
47 \r
48   void processSonars(byte sonarSensors) {\r
49 \r
50     // 5 sensors. 1,2 are fromnt left and right.\r
51     // Sensor 3 is right side, 4 back and 5 is left side.\r
52     if ((sonarSensors & 0x1f) == 0) {\r
53       // No sensor data may mean dead area between sensors.\r
54       // Continue with the last gesture until any sensor\r
55       // provide data.\r
56       if (DEBUG) {\r
57         System.out.println("sonar: NO SONARS!!!!!!!!");\r
58       }\r
59     } else if ((sonarSensors & (RobotMain.LF_RT_FRONT)) == (RobotMain.LF_RT_FRONT)) {\r
60       if (DEBUG) {\r
61         System.out.println("sonar: straight");\r
62       }\r
63       straight();\r
64     } else if ((sonarSensors & RobotMain.LF_FRONT) == RobotMain.LF_FRONT) {\r
65       if (DEBUG) {\r
66         System.out.println("sonar: bearLeft");\r
67       }\r
68       bearLeft();\r
69     } else if ((sonarSensors & RobotMain.RT_FRONT) == RobotMain.RT_FRONT) {\r
70       if (DEBUG) {\r
71         System.out.println("sonar: bearRight");\r
72       }\r
73       bearRight();\r
74     } else if ((sonarSensors & RobotMain.RT_SIDE) == RobotMain.RT_SIDE) {\r
75       if (DEBUG) {\r
76         System.out.println("sonar: right");\r
77       }\r
78       spinRight();\r
79     } else if ((sonarSensors & RobotMain.LF_SIDE) == RobotMain.LF_SIDE) {\r
80       if (DEBUG) {\r
81         System.out.println("sonar: left");\r
82       }\r
83       spinLeft();\r
84     } else if ((sonarSensors & RobotMain.BK_SIDE) == RobotMain.BK_SIDE) {\r
85       if (DEBUG) {\r
86         System.out.println("sonar: spin180");\r
87       }\r
88       spin180();\r
89     }\r
90   }\r
91 \r
92   void processLineSensors(byte lineSensorsMask) {\r
93     while ((lineSensorsMask & RobotMain.LS_ALL) != 0) {\r
94       if ((lineSensorsMask & RobotMain.LS_ALL) == RobotMain.LS_ALL) {\r
95         if (DEBUGL)\r
96           System.out.println("Line Sensors - ALL");\r
97         stop();\r
98       } else if ((lineSensorsMask & RobotMain.LS_LEFT_RIGHT) == RobotMain.LS_LEFT_RIGHT) {\r
99         if (DEBUGL)\r
100           System.out.println("Line Sensors - Left & Right");\r
101         back();\r
102         try {\r
103           // Thread.sleep(1000);\r
104         } catch (InterruptedException ie) {\r
105         }\r
106         spin180();\r
107         try {\r
108           // Thread.sleep(1000);\r
109         } catch (InterruptedException ie) {\r
110         }\r
111       } else if ((lineSensorsMask & RobotMain.LS_LEFT_REAR) == RobotMain.LS_LEFT_REAR) {\r
112         if (DEBUGL)\r
113           System.out.println("Line Sensors - Left & Rear");\r
114         bearRight();\r
115         try {\r
116           // Thread.sleep(1000);\r
117         } catch (InterruptedException ie) {\r
118         }\r
119       } else if ((lineSensorsMask & RobotMain.LS_RIGHT_REAR) == RobotMain.LS_RIGHT_REAR) {\r
120         if (DEBUGL)\r
121           System.out.println("Line Sensors - Right & Rear");\r
122         bearLeft();\r
123         try {\r
124           // Thread.sleep(1000);\r
125         } catch (InterruptedException ie) {\r
126         }\r
127       } else if ((lineSensorsMask & RobotMain.LS_LEFT) == RobotMain.LS_LEFT) {\r
128         if (DEBUGL)\r
129           System.out.println("Line Sensors - Left");\r
130         backBearRight();\r
131         try {\r
132           // Thread.sleep(1000);\r
133         } catch (InterruptedException ie) {\r
134         }\r
135       } else if ((lineSensorsMask & RobotMain.LS_RIGHT) == RobotMain.LS_RIGHT) {\r
136         if (DEBUGL)\r
137           System.out.println("Line Sensors - Right");\r
138         backBearLeft();\r
139         try {\r
140           // Thread.sleep(1000);\r
141         } catch (InterruptedException ie) {\r
142         }\r
143       } else if ((lineSensorsMask & RobotMain.LS_REAR) == RobotMain.LS_REAR) {\r
144         if (DEBUGL)\r
145           System.out.println("Line Sensors - Rear");\r
146         straight();\r
147         try {\r
148           // Thread.sleep(1000);\r
149         } catch (InterruptedException ie) {\r
150         }\r
151       }\r
152 \r
153       // TODO\r
154       // lineSensorsMask = sm.getLineSensorsState();\r
155 \r
156     }// while loop\r
157   }\r
158 \r
159   public void stop() {\r
160     if (DEBUG)\r
161       System.out.println("StrageyMgr: stop....");\r
162     pwmControl.setSpeedLeft(zeroSpeed);\r
163     pwmControl.setSpeedRight(zeroSpeed);\r
164   }\r
165 \r
166   public void search() {\r
167     if (DEBUG)\r
168       System.out.println("StrategyMgr: search....");\r
169     pwmControl.setSpeedLeft(70);\r
170     pwmControl.setSpeedRight(50);\r
171   }\r
172 \r
173   public void straight() {\r
174     if (DEBUG)\r
175       System.out.println("StrategyMgr: strait....");\r
176     pwmControl.setSpeedLeft(100);\r
177     pwmControl.setSpeedRight(100);\r
178   }\r
179 \r
180   public void spinRight() {\r
181     if (DEBUG)\r
182       System.out.println("StrategyMgr: spinRight....");\r
183     pwmControl.setSpeedSpinLeft(100);\r
184     pwmControl.setSpeedSpinRight(0);\r
185   }\r
186 \r
187   public void spinLeft() {\r
188     if (DEBUG)\r
189       System.out.println("StrategyMgr: spinLeft....");\r
190     pwmControl.setSpeedSpinLeft(0);\r
191     pwmControl.setSpeedSpinRight(100);\r
192   }\r
193 \r
194   public void spin180() {\r
195     int mod = (rand.nextInt() % 2);\r
196 \r
197     if (DEBUG)\r
198       System.out.println("StrategyMgr: spin180....");\r
199     if (mod == 1) {\r
200       pwmControl.setSpeedSpinLeft(0);\r
201       pwmControl.setSpeedSpinRight(100);\r
202     } else {\r
203       pwmControl.setSpeedSpinLeft(100);\r
204       pwmControl.setSpeedSpinRight(0);\r
205     }\r
206   }\r
207 \r
208   public void right() {\r
209     if (DEBUG)\r
210       System.out.println("StrategyMgr: right....");\r
211     pwmControl.setSpeedTurnLeft(100);\r
212     pwmControl.setSpeedRight(zeroSpeed);\r
213   }\r
214 \r
215   public void left() {\r
216     if (DEBUG)\r
217       System.out.println("StrategyMgr: left....");\r
218     pwmControl.setSpeedLeft(zeroSpeed);\r
219     pwmControl.setSpeedTurnRight(100);\r
220   }\r
221 \r
222   public void bearRight() {\r
223     if (DEBUG)\r
224       System.out.println("StrategyMgr: bearRight....");\r
225     pwmControl.setSpeedTurnLeft(100);\r
226     pwmControl.setSpeedTurnRight(60);\r
227   }\r
228 \r
229   public void bearLeft() {\r
230     if (DEBUG)\r
231       System.out.println("StrategyMgr: bearLeft....");\r
232     pwmControl.setSpeedTurnLeft(60);\r
233     pwmControl.setSpeedTurnRight(100);\r
234   }\r
235 \r
236   public void back() {\r
237     if (DEBUG)\r
238       System.out.println("StrategyMgr: back....");\r
239     pwmControl.setSpeedLeft(0);\r
240     pwmControl.setSpeedRight(0);\r
241   }\r
242 \r
243   public void backBearLeft() {\r
244     if (DEBUG)\r
245       System.out.println("StrategyMgr: backBearLeft....");\r
246     pwmControl.setSpeedLeft(30);\r
247     pwmControl.setSpeedRight(0);\r
248   }\r
249 \r
250   public void backBearRight() {\r
251     if (DEBUG)\r
252       System.out.println("StrategyMgr: backBearRight....");\r
253     pwmControl.setSpeedLeft(0);\r
254     pwmControl.setSpeedRight(30);\r
255   }\r
256 }\r