001package edu.wpi.first.wpilibj.communication;
002
003import java.nio.ByteBuffer;
004import java.nio.IntBuffer;
005import java.nio.ShortBuffer;
006
007import edu.wpi.first.wpilibj.hal.JNIWrapper;
008/**
009 * JNA Wrapper for library <b>FRC_NetworkCommunications</b><br>
010 * This file was autogenerated by <a href="http://jnaerator.googlecode.com/">JNAerator</a>,<br>
011 * a tool written by <a href="http://ochafik.com/">Olivier Chafik</a> that <a href="http://code.google.com/p/jnaerator/wiki/CreditsAndLicense">uses a few opensource projects.</a>.<br>
012 * For help, please visit <a href="http://nativelibs4java.googlecode.com/">NativeLibs4Java</a> , <a href="http://rococoa.dev.java.net/">Rococoa</a>, or <a href="http://jna.dev.java.net/">JNA</a>.
013 */
014public class FRCNetworkCommunicationsLibrary extends JNIWrapper {
015        //public static final String JNA_LIBRARY_NAME = LibraryExtractor.getLibraryPath("FRC_NetworkCommunications", true, FRC_NetworkCommunicationsLibrary.class);
016        //public static final NativeLibrary JNA_NATIVE_LIB = NativeLibrary.getInstance(FRC_NetworkCommunicationsLibrary.JNA_LIBRARY_NAME, MangledFunctionMapper.DEFAULT_OPTIONS);
017        //static {
018                //System.loadLibrary("JNIWrappers");
019                //Native.register(FRC_NetworkCommunicationsLibrary.class, FRC_NetworkCommunicationsLibrary.JNA_NATIVE_LIB);
020        //}
021        /**
022         * <i>native declaration : src\main\include\NetworkCommunication\LoadOut.h</i><br>
023         * enum values
024         */
025        public static interface tModuleType {
026                /** <i>native declaration : src\main\include\NetworkCommunication\LoadOut.h:9</i> */
027                public static final int kModuleType_Unknown = 0x00;
028                /** <i>native declaration : src\main\include\NetworkCommunication\LoadOut.h:10</i> */
029                public static final int kModuleType_Analog = 0x01;
030                /** <i>native declaration : src\main\include\NetworkCommunication\LoadOut.h:11</i> */
031                public static final int kModuleType_Digital = 0x02;
032                /** <i>native declaration : src\main\include\NetworkCommunication\LoadOut.h:12</i> */
033                public static final int kModuleType_Solenoid = 0x03;
034        };
035        /**
036         * <i>native declaration : src\main\include\NetworkCommunication\LoadOut.h</i><br>
037         * enum values
038         */
039        public static interface tTargetClass {
040                /** <i>native declaration : src\main\include\NetworkCommunication\LoadOut.h:16</i> */
041                public static final int kTargetClass_Unknown = 0x00;
042                /** <i>native declaration : src\main\include\NetworkCommunication\LoadOut.h:17</i> */
043                public static final int kTargetClass_FRC1 = 0x10;
044                /** <i>native declaration : src\main\include\NetworkCommunication\LoadOut.h:18</i> */
045                public static final int kTargetClass_FRC2 = 0x20;
046                /** <i>native declaration : src\main\include\NetworkCommunication\LoadOut.h:19</i> */
047                public static final int kTargetClass_FRC2_Analog = (int)FRCNetworkCommunicationsLibrary.tTargetClass.kTargetClass_FRC2 | (int)FRCNetworkCommunicationsLibrary.tModuleType.kModuleType_Analog;
048                /** <i>native declaration : src\main\include\NetworkCommunication\LoadOut.h:20</i> */
049                public static final int kTargetClass_FRC2_Digital = (int)FRCNetworkCommunicationsLibrary.tTargetClass.kTargetClass_FRC2 | (int)FRCNetworkCommunicationsLibrary.tModuleType.kModuleType_Digital;
050                /** <i>native declaration : src\main\include\NetworkCommunication\LoadOut.h:21</i> */
051                public static final int kTargetClass_FRC2_Solenoid = (int)FRCNetworkCommunicationsLibrary.tTargetClass.kTargetClass_FRC2 | (int)FRCNetworkCommunicationsLibrary.tModuleType.kModuleType_Solenoid;
052                /** <i>native declaration : src\main\include\NetworkCommunication\LoadOut.h:22</i> */
053                public static final int kTargetClass_FamilyMask = 0xF0;
054                /** <i>native declaration : src\main\include\NetworkCommunication\LoadOut.h:23</i> */
055                public static final int kTargetClass_ModuleMask = 0x0F;
056        };
057        /**
058         * <i>native declaration : src\main\include\NetworkCommunication\UsageReporting.h</i><br>
059         * enum values
060         */
061        public static interface tResourceType {
062                /** <i>native declaration : src\main\include\NetworkCommunication\UsageReporting.h:10</i> */
063                public static final int kResourceType_Controller = 0;
064                /** <i>native declaration : src\main\include\NetworkCommunication\UsageReporting.h:11</i> */
065                public static final int kResourceType_Module = 1;
066                /** <i>native declaration : src\main\include\NetworkCommunication\UsageReporting.h:12</i> */
067                public static final int kResourceType_Language = 2;
068                /** <i>native declaration : src\main\include\NetworkCommunication\UsageReporting.h:13</i> */
069                public static final int kResourceType_CANPlugin = 3;
070                /** <i>native declaration : src\main\include\NetworkCommunication\UsageReporting.h:14</i> */
071                public static final int kResourceType_Accelerometer = 4;
072                /** <i>native declaration : src\main\include\NetworkCommunication\UsageReporting.h:15</i> */
073                public static final int kResourceType_ADXL345 = 5;
074                /** <i>native declaration : src\main\include\NetworkCommunication\UsageReporting.h:16</i> */
075                public static final int kResourceType_AnalogChannel = 6;
076                /** <i>native declaration : src\main\include\NetworkCommunication\UsageReporting.h:17</i> */
077                public static final int kResourceType_AnalogTrigger = 7;
078                /** <i>native declaration : src\main\include\NetworkCommunication\UsageReporting.h:18</i> */
079                public static final int kResourceType_AnalogTriggerOutput = 8;
080                /** <i>native declaration : src\main\include\NetworkCommunication\UsageReporting.h:19</i> */
081                public static final int kResourceType_CANJaguar = 9;
082                /** <i>native declaration : src\main\include\NetworkCommunication\UsageReporting.h:20</i> */
083                public static final int kResourceType_Compressor = 10;
084                /** <i>native declaration : src\main\include\NetworkCommunication\UsageReporting.h:21</i> */
085                public static final int kResourceType_Counter = 11;
086                /** <i>native declaration : src\main\include\NetworkCommunication\UsageReporting.h:22</i> */
087                public static final int kResourceType_Dashboard = 12;
088                /** <i>native declaration : src\main\include\NetworkCommunication\UsageReporting.h:23</i> */
089                public static final int kResourceType_DigitalInput = 13;
090                /** <i>native declaration : src\main\include\NetworkCommunication\UsageReporting.h:24</i> */
091                public static final int kResourceType_DigitalOutput = 14;
092                /** <i>native declaration : src\main\include\NetworkCommunication\UsageReporting.h:25</i> */
093                public static final int kResourceType_DriverStationCIO = 15;
094                /** <i>native declaration : src\main\include\NetworkCommunication\UsageReporting.h:26</i> */
095                public static final int kResourceType_DriverStationEIO = 16;
096                /** <i>native declaration : src\main\include\NetworkCommunication\UsageReporting.h:27</i> */
097                public static final int kResourceType_DriverStationLCD = 17;
098                /** <i>native declaration : src\main\include\NetworkCommunication\UsageReporting.h:28</i> */
099                public static final int kResourceType_Encoder = 18;
100                /** <i>native declaration : src\main\include\NetworkCommunication\UsageReporting.h:29</i> */
101                public static final int kResourceType_GearTooth = 19;
102                /** <i>native declaration : src\main\include\NetworkCommunication\UsageReporting.h:30</i> */
103                public static final int kResourceType_Gyro = 20;
104                /** <i>native declaration : src\main\include\NetworkCommunication\UsageReporting.h:31</i> */
105                public static final int kResourceType_I2C = 21;
106                /** <i>native declaration : src\main\include\NetworkCommunication\UsageReporting.h:32</i> */
107                public static final int kResourceType_Framework = 22;
108                /** <i>native declaration : src\main\include\NetworkCommunication\UsageReporting.h:33</i> */
109                public static final int kResourceType_Jaguar = 23;
110                /** <i>native declaration : src\main\include\NetworkCommunication\UsageReporting.h:34</i> */
111                public static final int kResourceType_Joystick = 24;
112                /** <i>native declaration : src\main\include\NetworkCommunication\UsageReporting.h:35</i> */
113                public static final int kResourceType_Kinect = 25;
114                /** <i>native declaration : src\main\include\NetworkCommunication\UsageReporting.h:36</i> */
115                public static final int kResourceType_KinectStick = 26;
116                /** <i>native declaration : src\main\include\NetworkCommunication\UsageReporting.h:37</i> */
117                public static final int kResourceType_PIDController = 27;
118                /** <i>native declaration : src\main\include\NetworkCommunication\UsageReporting.h:38</i> */
119                public static final int kResourceType_Preferences = 28;
120                /** <i>native declaration : src\main\include\NetworkCommunication\UsageReporting.h:39</i> */
121                public static final int kResourceType_PWM = 29;
122                /** <i>native declaration : src\main\include\NetworkCommunication\UsageReporting.h:40</i> */
123                public static final int kResourceType_Relay = 30;
124                /** <i>native declaration : src\main\include\NetworkCommunication\UsageReporting.h:41</i> */
125                public static final int kResourceType_RobotDrive = 31;
126                /** <i>native declaration : src\main\include\NetworkCommunication\UsageReporting.h:42</i> */
127                public static final int kResourceType_SerialPort = 32;
128                /** <i>native declaration : src\main\include\NetworkCommunication\UsageReporting.h:43</i> */
129                public static final int kResourceType_Servo = 33;
130                /** <i>native declaration : src\main\include\NetworkCommunication\UsageReporting.h:44</i> */
131                public static final int kResourceType_Solenoid = 34;
132                /** <i>native declaration : src\main\include\NetworkCommunication\UsageReporting.h:45</i> */
133                public static final int kResourceType_SPI = 35;
134                /** <i>native declaration : src\main\include\NetworkCommunication\UsageReporting.h:46</i> */
135                public static final int kResourceType_Task = 36;
136                /** <i>native declaration : src\main\include\NetworkCommunication\UsageReporting.h:47</i> */
137                public static final int kResourceType_Ultrasonic = 37;
138                /** <i>native declaration : src\main\include\NetworkCommunication\UsageReporting.h:48</i> */
139                public static final int kResourceType_Victor = 38;
140                /** <i>native declaration : src\main\include\NetworkCommunication\UsageReporting.h:49</i> */
141                public static final int kResourceType_Button = 39;
142                /** <i>native declaration : src\main\include\NetworkCommunication\UsageReporting.h:50</i> */
143                public static final int kResourceType_Command = 40;
144                /** <i>native declaration : src\main\include\NetworkCommunication\UsageReporting.h:51</i> */
145                public static final int kResourceType_AxisCamera = 41;
146                /** <i>native declaration : src\main\include\NetworkCommunication\UsageReporting.h:52</i> */
147                public static final int kResourceType_PCVideoServer = 42;
148                /** <i>native declaration : src\main\include\NetworkCommunication\UsageReporting.h:53</i> */
149                public static final int kResourceType_SmartDashboard = 43;
150                /** <i>native declaration : src\main\include\NetworkCommunication\UsageReporting.h:54</i> */
151                public static final int kResourceType_Talon = 44;
152                /** <i>native declaration : src\main\include\NetworkCommunication\UsageReporting.h:55</i> */
153                public static final int kResourceType_HiTechnicColorSensor = 45;
154                /** <i>native declaration : src\main\include\NetworkCommunication\UsageReporting.h:56</i> */
155                public static final int kResourceType_HiTechnicAccel = 46;
156                /** <i>native declaration : src\main\include\NetworkCommunication\UsageReporting.h:57</i> */
157                public static final int kResourceType_HiTechnicCompass = 47;
158                /** <i>native declaration : src\main\include\NetworkCommunication\UsageReporting.h:58</i> */
159                public static final int kResourceType_SRF08 = 48;
160        };
161        /**
162         * <i>native declaration : src\main\include\NetworkCommunication\UsageReporting.h</i><br>
163         * enum values
164         */
165        public static interface tInstances {
166                /** <i>native declaration : src\main\include\NetworkCommunication\UsageReporting.h:63</i> */
167                public static final int kLanguage_LabVIEW = 1;
168                /** <i>native declaration : src\main\include\NetworkCommunication\UsageReporting.h:64</i> */
169                public static final int kLanguage_CPlusPlus = 2;
170                /** <i>native declaration : src\main\include\NetworkCommunication\UsageReporting.h:65</i> */
171                public static final int kLanguage_Java = 3;
172                /** <i>native declaration : src\main\include\NetworkCommunication\UsageReporting.h:66</i> */
173                public static final int kLanguage_Python = 4;
174                /** <i>native declaration : src\main\include\NetworkCommunication\UsageReporting.h:68</i> */
175                public static final int kCANPlugin_BlackJagBridge = 1;
176                /** <i>native declaration : src\main\include\NetworkCommunication\UsageReporting.h:69</i> */
177                public static final int kCANPlugin_2CAN = 2;
178                /** <i>native declaration : src\main\include\NetworkCommunication\UsageReporting.h:71</i> */
179                public static final int kFramework_Iterative = 1;
180                /** <i>native declaration : src\main\include\NetworkCommunication\UsageReporting.h:72</i> */
181                public static final int kFramework_Simple = 2;
182                /** <i>native declaration : src\main\include\NetworkCommunication\UsageReporting.h:74</i> */
183                public static final int kRobotDrive_ArcadeStandard = 1;
184                /** <i>native declaration : src\main\include\NetworkCommunication\UsageReporting.h:75</i> */
185                public static final int kRobotDrive_ArcadeButtonSpin = 2;
186                /** <i>native declaration : src\main\include\NetworkCommunication\UsageReporting.h:76</i> */
187                public static final int kRobotDrive_ArcadeRatioCurve = 3;
188                /** <i>native declaration : src\main\include\NetworkCommunication\UsageReporting.h:77</i> */
189                public static final int kRobotDrive_Tank = 4;
190                /** <i>native declaration : src\main\include\NetworkCommunication\UsageReporting.h:78</i> */
191                public static final int kRobotDrive_MecanumPolar = 5;
192                /** <i>native declaration : src\main\include\NetworkCommunication\UsageReporting.h:79</i> */
193                public static final int kRobotDrive_MecanumCartesian = 6;
194                /** <i>native declaration : src\main\include\NetworkCommunication\UsageReporting.h:81</i> */
195                public static final int kDriverStationCIO_Analog = 1;
196                /** <i>native declaration : src\main\include\NetworkCommunication\UsageReporting.h:82</i> */
197                public static final int kDriverStationCIO_DigitalIn = 2;
198                /** <i>native declaration : src\main\include\NetworkCommunication\UsageReporting.h:83</i> */
199                public static final int kDriverStationCIO_DigitalOut = 3;
200                /** <i>native declaration : src\main\include\NetworkCommunication\UsageReporting.h:85</i> */
201                public static final int kDriverStationEIO_Acceleration = 1;
202                /** <i>native declaration : src\main\include\NetworkCommunication\UsageReporting.h:86</i> */
203                public static final int kDriverStationEIO_AnalogIn = 2;
204                /** <i>native declaration : src\main\include\NetworkCommunication\UsageReporting.h:87</i> */
205                public static final int kDriverStationEIO_AnalogOut = 3;
206                /** <i>native declaration : src\main\include\NetworkCommunication\UsageReporting.h:88</i> */
207                public static final int kDriverStationEIO_Button = 4;
208                /** <i>native declaration : src\main\include\NetworkCommunication\UsageReporting.h:89</i> */
209                public static final int kDriverStationEIO_LED = 5;
210                /** <i>native declaration : src\main\include\NetworkCommunication\UsageReporting.h:90</i> */
211                public static final int kDriverStationEIO_DigitalIn = 6;
212                /** <i>native declaration : src\main\include\NetworkCommunication\UsageReporting.h:91</i> */
213                public static final int kDriverStationEIO_DigitalOut = 7;
214                /** <i>native declaration : src\main\include\NetworkCommunication\UsageReporting.h:92</i> */
215                public static final int kDriverStationEIO_FixedDigitalOut = 8;
216                /** <i>native declaration : src\main\include\NetworkCommunication\UsageReporting.h:93</i> */
217                public static final int kDriverStationEIO_PWM = 9;
218                /** <i>native declaration : src\main\include\NetworkCommunication\UsageReporting.h:94</i> */
219                public static final int kDriverStationEIO_Encoder = 10;
220                /** <i>native declaration : src\main\include\NetworkCommunication\UsageReporting.h:95</i> */
221                public static final int kDriverStationEIO_TouchSlider = 11;
222                /** <i>native declaration : src\main\include\NetworkCommunication\UsageReporting.h:97</i> */
223                public static final int kADXL345_SPI = 1;
224                /** <i>native declaration : src\main\include\NetworkCommunication\UsageReporting.h:98</i> */
225                public static final int kADXL345_I2C = 2;
226                /** <i>native declaration : src\main\include\NetworkCommunication\UsageReporting.h:100</i> */
227                public static final int kCommand_Scheduler = 1;
228                /** <i>native declaration : src\main\include\NetworkCommunication\UsageReporting.h:102</i> */
229                public static final int kSmartDashboard_Instance = 1;
230        };
231        /** <i>native declaration : src\main\include\NetworkCommunication\FRCComm.h</i> */
232        public static final int kFRC_NetworkCommunication_DynamicType_DSEnhancedIO_Input = 17;
233        /** <i>native declaration : src\main\include\NetworkCommunication\FRCComm.h</i> */
234        public static final int kFRC_NetworkCommunication_DynamicType_Kinect_Vertices1 = 21;
235        /** <i>native declaration : src\main\include\NetworkCommunication\FRCComm.h</i> */
236        public static final int SYS_STATUS_DATA_SIZE = 44;
237        /** <i>native declaration : src\main\include\NetworkCommunication\FRCComm.h</i> */
238        public static final int kFRC_NetworkCommunication_DynamicType_Kinect_Custom = 25;
239        /** <i>native declaration : src\main\include\NetworkCommunication\FRCComm.h</i> */
240        public static final int kFRC_NetworkCommunication_DynamicType_Kinect_Vertices2 = 23;
241        /** <i>native declaration : src\main\include\NetworkCommunication\FRCComm.h</i> */
242        public static final int kFRC_NetworkCommunication_DynamicType_Kinect_Header = 19;
243        /** <i>native declaration : src\main\include\NetworkCommunication\FRCComm.h</i> */
244        public static final int kFRC_NetworkCommunication_DynamicType_Kinect_Joystick = 24;
245        /** <i>native declaration : src\main\include\NetworkCommunication\FRCComm.h</i> */
246        public static final int IO_CONFIG_DATA_SIZE = 32;
247        /** <i>native declaration : src\main\include\NetworkCommunication\LoadOut.h</i> */
248        public static final int kMaxModuleNumber = 2;
249        /** <i>native declaration : src\main\include\NetworkCommunication\FRCComm.h</i> */
250        public static final int kFRC_NetworkCommunication_DynamicType_DSEnhancedIO_Output = 18;
251        /** <i>native declaration : src\main\include\NetworkCommunication\FRCComm.h</i> */
252        public static final int kFRC_NetworkCommunication_DynamicType_Kinect_Extra2 = 22;
253        /** <i>native declaration : src\main\include\NetworkCommunication\FRCComm.h</i> */
254        public static final int kFRC_NetworkCommunication_DynamicType_Kinect_Extra1 = 20;
255        /** <i>native declaration : src\main\include\NetworkCommunication\FRCComm.h</i> */
256        public static final int USER_DS_LCD_DATA_SIZE = 128;
257        /** <i>native declaration : src\main\include\NetworkCommunication\UsageReporting.h</i> */
258        public static final int kUsageReporting_version = 1;
259        /** <i>native declaration : src\main\include\NetworkCommunication\FRCComm.h</i> */
260        public static final int USER_STATUS_DATA_SIZE = (984 - 32 - 44);
261        /**
262         * Original signature : <code>uint32_t FRC_NetworkCommunication_nAICalibration_getLSBWeight(const uint32_t, const uint32_t, int32_t*)</code><br>
263         * <i>native declaration : src\main\include\NetworkCommunication\AICalibration.h:7</i><br>
264         * @deprecated use the safer methods {@link #FRC_NetworkCommunication_nAICalibration_getLSBWeight(int, int, java.nio.IntBuffer)} and {@link #FRC_NetworkCommunication_nAICalibration_getLSBWeight(int, int, com.sun.jna.ptr.IntByReference)} instead
265         */
266        //@Deprecated
267        //public static native int FRC_NetworkCommunication_nAICalibration_getLSBWeight(int aiSystemIndex, int channel, Integer status);
268        /**
269         * Original signature : <code>uint32_t FRC_NetworkCommunication_nAICalibration_getLSBWeight(const uint32_t, const uint32_t, int32_t*)</code><br>
270         * <i>native declaration : src\main\include\NetworkCommunication\AICalibration.h:7</i>
271         */
272        public static native int FRCNetworkCommunicationAICalibrationGetLSBWeight(int aiSystemIndex, int channel, Integer status);
273        /**
274         * Original signature : <code>int32_t FRC_NetworkCommunication_nAICalibration_getOffset(const uint32_t, const uint32_t, int32_t*)</code><br>
275         * <i>native declaration : src\main\include\NetworkCommunication\AICalibration.h:8</i><br>
276         * @deprecated use the safer methods {@link #FRC_NetworkCommunication_nAICalibration_getOffset(int, int, java.nio.IntBuffer)} and {@link #FRC_NetworkCommunication_nAICalibration_getOffset(int, int, com.sun.jna.ptr.IntByReference)} instead
277         */
278        //@Deprecated
279        //public static native int FRC_NetworkCommunication_nAICalibration_getOffset(int aiSystemIndex, int channel, Integer status);
280        /**
281         * Original signature : <code>int32_t FRC_NetworkCommunication_nAICalibration_getOffset(const uint32_t, const uint32_t, int32_t*)</code><br>
282         * <i>native declaration : src\main\include\NetworkCommunication\AICalibration.h:8</i>
283         */
284        public static native int FRCNetworkCommunicationAICalibrationGetOffset(int aiSystemIndex, int channel, Integer status);
285        /**
286         * Original signature : <code>tTargetClass getTargetClass()</code><br>
287         * <i>native declaration : src\main\include\NetworkCommunication\LoadOut.h:25</i>
288         */
289        public static native int getTargetClass();
290        /**
291         * Original signature : <code>uint32_t FRC_NetworkCommunication_nLoadOut_getModulePresence(uint32_t, uint8_t)</code><br>
292         * <i>native declaration : src\main\include\NetworkCommunication\LoadOut.h:32</i>
293         */
294        public static native int FRCNetworkCommunicationLoadOutGetModulePresence(int moduleType, byte moduleNumber);
295        /**
296         * Original signature : <code>uint32_t FRC_NetworkCommunication_nLoadOut_getTargetClass()</code><br>
297         * <i>native declaration : src\main\include\NetworkCommunication\LoadOut.h:33</i>
298         */
299        public static native int FRCNetworkCommunicationLoadOutGetTargetClass();
300        /**
301         * Original signature : <code>STATUS moduleNameFindBySymbolName(const char*, char*)</code><br>
302         * @param symbol symbol name to look for<br>
303         * @param module where to return module name<br>
304         * <i>native declaration : src\main\include\NetworkCommunication\symModuleLink.h:6</i><br>
305         * @deprecated use the safer methods {@link #moduleNameFindBySymbolName(java.lang.String, java.nio.ByteBuffer)} and {@link #moduleNameFindBySymbolName(com.sun.jna.Pointer, com.sun.jna.Pointer)} instead
306         */
307        //@Deprecated
308        //public static native FRC_NetworkCommunicationsLibrary.STATUS moduleNameFindBySymbolName(Pointer symbol, Pointer module);
309        /**
310         * Original signature : <code>STATUS moduleNameFindBySymbolName(const char*, char*)</code><br>
311         * @param symbol symbol name to look for<br>
312         * @param module where to return module name<br>
313         * <i>native declaration : src\main\include\NetworkCommunication\symModuleLink.h:6</i>
314         */
315        //public static native FRC_NetworkCommunicationsLibrary.STATUS moduleNameFindBySymbolName(String symbol, ByteBuffer module);
316        /**
317         * Report the usage of a resource of interest.
318<br>
319         *
320<br>
321         * @param resource one of the values in the tResourceType above (max value 51).
322<br>
323         * @param instanceNumber an index that identifies the resource instance.
324<br>
325         * @param context an optional additional context number for some cases (such as module number).  Set to 0 to omit.
326<br>
327         * @param feature a string to be included describing features in use on a specific resource.  Setting the same resource more than once allows you to change the feature string.<br>
328         * Original signature : <code>uint32_t report(tResourceType, uint8_t, uint8_t, const char*)</code><br>
329         * <i>native declaration : src\main\include\NetworkCommunication\UsageReporting.h:113</i><br>
330         * @deprecated use the safer methods {@link #report(int, byte, byte, java.lang.String)} and {@link #report(int, byte, byte, com.sun.jna.Pointer)} instead
331         */
332        //@Deprecated
333        //public static native int report(int resource, byte instanceNumber, byte context, Pointer feature);
334        /**
335         * Report the usage of a resource of interest.
336<br>
337         *
338<br>
339         * @param resource one of the values in the tResourceType above (max value 51).
340<br>
341         * @param instanceNumber an index that identifies the resource instance.
342<br>
343         * @param context an optional additional context number for some cases (such as module number).  Set to 0 to omit.
344<br>
345         * @param feature a string to be included describing features in use on a specific resource.  Setting the same resource more than once allows you to change the feature string.<br>
346         * Original signature : <code>uint32_t report(tResourceType, uint8_t, uint8_t, const char*)</code><br>
347         * <i>native declaration : src\main\include\NetworkCommunication\UsageReporting.h:113</i>
348         */
349        public static native int report(int resource, byte instanceNumber, byte context, String feature);
350        /**
351         * Original signature : <code>uint32_t FRC_NetworkCommunication_nUsageReporting_report(uint8_t, uint8_t, uint8_t, const char*)</code><br>
352         * <i>native declaration : src\main\include\NetworkCommunication\UsageReporting.h:120</i><br>
353         * @deprecated use the safer methods {@link #FRC_NetworkCommunication_nUsageReporting_report(byte, byte, byte, java.lang.String)} and {@link #FRC_NetworkCommunication_nUsageReporting_report(byte, byte, byte, com.sun.jna.Pointer)} instead
354         */
355        //@Deprecated
356        //public static native int FRC_NetworkCommunication_nUsageReporting_report(byte resource, byte instanceNumber, byte context, Pointer feature);
357        /**
358         * Original signature : <code>uint32_t FRC_NetworkCommunication_nUsageReporting_report(uint8_t, uint8_t, uint8_t, const char*)</code><br>
359         * <i>native declaration : src\main\include\NetworkCommunication\UsageReporting.h:120</i>
360         */
361        public static native int FRCNetworkCommunicationUsageReportingReport(byte resource, byte instanceNumber, byte context, String feature);
362        /**
363         * Original signature : <code>void getFPGAHardwareVersion(uint16_t*, uint32_t*)</code><br>
364         * <i>native declaration : src\main\include\NetworkCommunication\FRCComm.h:124</i><br>
365         * @deprecated use the safer methods {@link #getFPGAHardwareVersion(java.nio.ShortBuffer, java.nio.IntBuffer)} and {@link #getFPGAHardwareVersion(com.sun.jna.ptr.ShortByReference, com.sun.jna.ptr.IntByReference)} instead
366         */
367        //@Deprecated
368        //public static native void getFPGAHardwareVersion(ShortByReference fpgaVersion, IntByReference fpgaRevision);
369        /**
370         * Original signature : <code>void getFPGAHardwareVersion(uint16_t*, uint32_t*)</code><br>
371         * <i>native declaration : src\main\include\NetworkCommunication\FRCComm.h:124</i>
372         */
373        public static native void getFPGAHardwareVersion(ShortBuffer fpgaVersion, IntBuffer fpgaRevision);
374        /**
375         * Original signature : <code>int setErrorData(const char*, int, int)</code><br>
376         * <i>native declaration : src\main\include\NetworkCommunication\FRCComm.h:136</i><br>
377         * @deprecated use the safer methods {@link #setErrorData(java.lang.String, int, int)} and {@link #setErrorData(com.sun.jna.Pointer, int, int)} instead
378         */
379        //@Deprecated
380        //public static native int setErrorData(Pointer errors, int errorsLength, int wait_ms);
381        /**
382         * Original signature : <code>int setErrorData(const char*, int, int)</code><br>
383         * <i>native declaration : src\main\include\NetworkCommunication\FRCComm.h:136</i>
384         */
385        public static native int setErrorData(String errors, int errorsLength, int wait_ms);
386        /**
387         * Original signature : <code>int overrideIOConfig(const char*, int)</code><br>
388         * <i>native declaration : src\main\include\NetworkCommunication\FRCComm.h:138</i><br>
389         * @deprecated use the safer methods {@link #overrideIOConfig(java.lang.String, int)} and {@link #overrideIOConfig(com.sun.jna.Pointer, int)} instead
390         */
391        //@Deprecated
392        //public static native int overrideIOConfig(String ioConfig, int wait_ms);
393        /**
394         * Original signature : <code>int overrideIOConfig(const char*, int)</code><br>
395         * <i>native declaration : src\main\include\NetworkCommunication\FRCComm.h:138</i>
396         */
397        public static native int overrideIOConfig(String ioConfig, int wait_ms);
398        /**
399         * Original signature : <code>void setNewDataSem(pthread_mutex_t*)</code><br>
400         * <i>native declaration : src\main\include\NetworkCommunication\FRCComm.h:147</i>
401         */
402        public static native void setNewDataSem(ByteBuffer mutexId);
403        /**
404         * Original signature : <code>void setResyncSem(pthread_mutex_t*)</code><br>
405         * <i>native declaration : src\main\include\NetworkCommunication\FRCComm.h:148</i>
406         */
407        //public static native void setResyncSem(FRC_NetworkCommunicationsLibrary.pthread_mutex_t pthread_mutex_tPtr1);
408        /**
409         * Original signature : <code>void signalResyncActionDone()</code><br>
410         * <i>native declaration : src\main\include\NetworkCommunication\FRCComm.h:150</i>
411         */
412        public static native void signalResyncActionDone();
413        /**
414         * this uint32_t is really a LVRefNum<br>
415         * Original signature : <code>void setNewDataOccurRef(uint32_t)</code><br>
416         * <i>native declaration : src\main\include\NetworkCommunication\FRCComm.h:154</i>
417         */
418        public static native void setNewDataOccurRef(int refnum);
419        /**
420         * Original signature : <code>void setResyncOccurRef(uint32_t)</code><br>
421         * <i>native declaration : src\main\include\NetworkCommunication\FRCComm.h:156</i>
422         */
423        public static native void setResyncOccurRef(int refnum);
424        /**
425         * Original signature : <code>void FRC_NetworkCommunication_getVersionString(char*)</code><br>
426         * <i>native declaration : src\main\include\NetworkCommunication\FRCComm.h:159</i><br>
427         * @deprecated use the safer methods {@link #FRC_NetworkCommunication_getVersionString(java.nio.ByteBuffer)} and {@link #FRC_NetworkCommunication_getVersionString(com.sun.jna.Pointer)} instead
428         */
429        //@Deprecated
430        //public static native void FRC_NetworkCommunication_getVersionString(Pointer version);
431        /**
432         * Original signature : <code>void FRC_NetworkCommunication_getVersionString(char*)</code><br>
433         * <i>native declaration : src\main\include\NetworkCommunication\FRCComm.h:159</i>
434         */
435        public static native void FRCNetworkCommunicationGetVersionString(ByteBuffer version);
436        public static native void FRCNetworkCommunicationObserveUserProgramStarting();
437        public static native void FRCNetworkCommunicationObserveUserProgramDisabled();
438        public static native void FRCNetworkCommunicationObserveUserProgramAutonomous();
439        public static native void FRCNetworkCommunicationObserveUserProgramTeleop();
440        public static native void FRCNetworkCommunicationObserveUserProgramTest();
441        public static native void FRCNetworkCommunicationReserve();
442
443        private static native int NativeHALGetControlWord();
444        public static HALControlWord HALGetControlWord() {
445                int word = NativeHALGetControlWord();
446                return new HALControlWord(
447                        (word & 1) != 0,
448                        ((word >> 1) & 1) != 0,
449                        ((word >> 2) & 1) != 0,
450                        ((word >> 3) & 1) != 0,
451                        ((word >> 4) & 1) != 0,
452                        ((word >> 5) & 1) != 0
453                );
454        }
455
456        private static native int NativeHALGetAllianceStation();
457        public static HALAllianceStationID HALGetAllianceStation() {
458                switch(NativeHALGetAllianceStation()) {
459                case 0:
460                        return HALAllianceStationID.Red1;
461                case 1:
462                        return HALAllianceStationID.Red2;
463                case 2:
464                        return HALAllianceStationID.Red3;
465                case 3:
466                        return HALAllianceStationID.Blue1;
467                case 4:
468                        return HALAllianceStationID.Blue2;
469                case 5:
470                        return HALAllianceStationID.Blue3;
471                default:
472                        return null;
473                }
474        }
475
476        public static int kMaxJoystickAxes = 12;
477        public static int kMaxJoystickPOVs = 12;
478        public static native short[] HALGetJoystickAxes(byte joystickNum);
479        public static native short[] HALGetJoystickPOVs(byte joystickNum);
480        public static native int HALGetJoystickButtons(byte joystickNum, ByteBuffer count);
481        public static native int HALSetJoystickOutputs(byte joystickNum, int outputs, short leftRumble, short rightRumble);
482        public static native float HALGetMatchTime();
483        public static native boolean HALGetSystemActive(IntBuffer status);
484        public static native boolean HALGetBrownedOut(IntBuffer status);
485        
486        public static native int HALSetErrorData(String error);
487}