Changes: Inference engine works fine with the JavaNator benchmark. Found some problem...
[IRC.git] / Robust / src / Benchmarks / SSJava / JavaNatorInfer / PWMManager.java
1 /*\r
2  * PWMManager.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  * PWMManager - Interface between robot strategy code and the various motors PWMControl classes.\r
22  * Agility is a number between 0 to 100 and represent the precentage of max speed to be applied to\r
23  * the turn side wheel. On left turn the left wheel will receive less speed as % of "speed" value\r
24  * represented by agility.\r
25  * \r
26  * @author Michael Gesundheit\r
27  * @version 1.0\r
28  */\r
29 \r
30 \r
31 \r
32 public class PWMManager {\r
33 \r
34   // private int GPIO_A_OER = 0x09002000;\r
35   // private int GPIO_A_OUT = GPIO_A_OER + 4;\r
36   // private int GPIO_E_OER = 0x09002400;\r
37   // private int GPIO_E_OUT = 0x09002404;\r
38   // private byte MOTOR_PORTID_6 = 6; // Bit 2 (...3,2,1,0)\r
39   // private byte MOTOR_PORTID_7 = 7; // Bit 3 (...3,2,1,0)\r
40   \r
41   private int currentRegMask;\r
42   \r
43   private boolean DEBUG = false;\r
44   // private PWMControl pwmControl;\r
45   \r
46   private RCBridge rcb;\r
47   \r
48   private int speedFactor;\r
49   \r
50   private int agilityFactor;\r
51   \r
52   private int zeroSpeed = 45;\r
53 \r
54   /**\r
55    * Constractor\r
56    */\r
57   public PWMManager(String pwmSelection) {\r
58     /*\r
59      * Instantiate PWM Makers one for each motor. motorPortId is 1 to 8 and is corresponding to 8\r
60      * bits in a byte.\r
61      */\r
62     // if (pwmSelection.equals("rtsj"))\r
63     // pwmControl = new PWMRtsj(this, MOTOR_PORTID_6, MOTOR_PORTID_7);\r
64     // else {\r
65     // System.out.println("Selection PWMNative is activated");\r
66     // pwmControl = new PWMNative(this, MOTOR_PORTID_6, MOTOR_PORTID_7);\r
67     // System.out.println("Selection PWMNative is activated.... Return");\r
68     // }\r
69 \r
70     // rcb = new RCBridge(this);\r
71     rcb = new RCBridge();\r
72 \r
73     /* Enable input bits 0,1 Enable output for the rest */\r
74     // rawJEM.set(GPIO_E_OER, 0x00C0);\r
75   }\r
76 \r
77   public void setManualMode() {\r
78     if (DEBUG)\r
79       System.out.println("PWMManager: setManualMode....");\r
80     // pwmControl.setManualMode();\r
81     rcb.setManualMode();\r
82   }\r
83 \r
84   public void setAutomatedMode() {\r
85     if (DEBUG)\r
86       System.out.println("PWMManager: setAutomatedMode....");\r
87     // pwmControl.setAutomatedMode();\r
88     rcb.setAutomatedMode();\r
89   }\r
90 \r
91   // public PWMControl getPWMControl() {\r
92   // if (DEBUG)\r
93   // System.out.println("PWMManager: getPWMControl....");\r
94   // return pwmControl;\r
95   // }\r
96 \r
97   public synchronized void writeToPort(int myBit, int myValue) {\r
98     currentRegMask &= ~myBit; // e.g. 0x11110111\r
99     currentRegMask |= myValue;\r
100     /*\r
101      * // if (DEBUG){ // System.out.println("PWMM: writeToPort: myBit = 0x" +\r
102      * Integer.toHexString(myBit) + // " ~myBit = 0x" + Integer.toHexString(~myBit) +\r
103      * " myValue = 0x" + // Integer.toHexString(myValue) + " currentRegMask = 0x" + //\r
104      * Integer.toHexString(currentRegMask)); //}\r
105      */\r
106     // rawJEM.set(GPIO_E_OUT, currentRegMask);\r
107   }\r
108 \r
109   /*\r
110    * public void stop(){ if(DEBUG) System.out.println("PWMManager: stop....");\r
111    * pwmControl.setSpeedLeft(zeroSpeed); pwmControl.setSpeedRight(zeroSpeed); }\r
112    * \r
113    * public void search(){ if(DEBUG) System.out.println("PWMManager: search....");\r
114    * pwmControl.setSpeedLeft(70); pwmControl.setSpeedRight(50); }\r
115    * \r
116    * public void straight(){ if(DEBUG) System.out.println("PWMManager: strait....");\r
117    * pwmControl.setSpeedLeft(100); pwmControl.setSpeedRight(100); }\r
118    * \r
119    * public void spinRight(){ if(DEBUG) System.out.println("PWMManager: spinRight....");\r
120    * pwmControl.setSpeedSpinLeft(100); pwmControl.setSpeedSpinRight(0); }\r
121    * \r
122    * public void spinLeft(){ if(DEBUG) System.out.println("PWMManager: spinLeft....");\r
123    * pwmControl.setSpeedSpinLeft(0); pwmControl.setSpeedSpinRight(100); }\r
124    * \r
125    * public void spin180(){ int mod = (rand.nextInt() % 2);\r
126    * \r
127    * if(DEBUG) System.out.println("PWMManager: spin180...."); if(mod == 1){\r
128    * pwmControl.setSpeedSpinLeft(0); pwmControl.setSpeedSpinRight(100); }else{\r
129    * pwmControl.setSpeedSpinLeft(100); pwmControl.setSpeedSpinRight(0); } }\r
130    * \r
131    * public void right(){ if(DEBUG) System.out.println("PWMManager: right....");\r
132    * pwmControl.setSpeedTurnLeft(100); pwmControl.setSpeedRight(zeroSpeed); }\r
133    * \r
134    * public void left(){ if(DEBUG) System.out.println("PWMManager: left....");\r
135    * pwmControl.setSpeedLeft(zeroSpeed); pwmControl.setSpeedTurnRight(100); }\r
136    * \r
137    * public void bearRight(){ if(DEBUG) System.out.println("PWMManager: bearRight....");\r
138    * pwmControl.setSpeedTurnLeft(100); pwmControl.setSpeedTurnRight(60); }\r
139    * \r
140    * public void bearLeft(){ if(DEBUG) System.out.println("PWMManager: bearLeft....");\r
141    * pwmControl.setSpeedTurnLeft(60); pwmControl.setSpeedTurnRight(100); }\r
142    * \r
143    * public void back(){ if(DEBUG) System.out.println("PWMManager: back....");\r
144    * pwmControl.setSpeedLeft(0); pwmControl.setSpeedRight(0); }\r
145    * \r
146    * public void backBearLeft(){ if(DEBUG) System.out.println("PWMManager: backBearLeft....");\r
147    * pwmControl.setSpeedLeft(30); pwmControl.setSpeedRight(0); }\r
148    * \r
149    * public void backBearRight(){ if(DEBUG) System.out.println("PWMManager: backBearRight....");\r
150    * pwmControl.setSpeedLeft(0); pwmControl.setSpeedRight(30); }\r
151    */\r
152   public void resume() {\r
153     if (DEBUG)\r
154       System.out.println("PWMManager: Reasume...........");\r
155   }\r
156 \r
157   /**\r
158    * setSpeedFactor - set speed factor value\r
159    * \r
160    * @param speed\r
161    *          factor\r
162    */\r
163   public synchronized void setSpeedFactor(int speedFactor) {\r
164     if (DEBUG)\r
165       System.out.println("PWMManager: setSpeedFactor....");\r
166     this.speedFactor = speedFactor;\r
167     // pwmControl.setSpeedAgilityFactors(speedFactor, agilityFactor);\r
168   }\r
169 \r
170   /**\r
171    * setAgilityFactor\r
172    * \r
173    * @param agility\r
174    *          factor\r
175    */\r
176   public synchronized void setAgilityFactor(int agilityFactor) {\r
177     if (DEBUG)\r
178       System.out.println("PWMManager: setAgilityFactor....");\r
179     this.agilityFactor = agilityFactor;\r
180     // pwmControl.setSpeedAgilityFactors(speedFactor, agilityFactor);\r
181   }\r
182 \r
183   /**\r
184    * setSpeedAgilityFactors - set both speed and agility\r
185    * \r
186    * @param speed\r
187    * @param agility\r
188    */\r
189   public synchronized void setSpeedAgilityFactors( int speed,  int agility) {\r
190     if (DEBUG)\r
191       System.out.println("PWMManager: setSpeedAgilityFactors....");\r
192     speedFactor = speed;\r
193     agilityFactor = agility;\r
194     // pwmControl.setSpeedAgilityFactors(speedFactor, agilityFactor);\r
195   }\r
196 \r
197   /**\r
198    * Control debug messaging. true - Activate debug messages false - deactivate debug messages\r
199    */\r
200   public void setDebug(boolean debug) {\r
201     DEBUG = debug;\r
202   }\r
203 \r
204 }