2014 Software Changelog and Known Issues
This article describes changes to the libraries and tools and known issues for the released software as of the 2014 Kickoff.
This includes updates for bug fixes and improvements since the 2014 kickoff.
Below is a compiled list of known issues for official FRC software for 2014
C++ WPILib - Updated 3/25/14
An issue with thread deadlocking can cause Robot Code to lock up if a Network Tables network operation fails. This has the possibility of occurring in any C++ code which utilizes Network Tables (including SmartDashboard). All teams utilizing SmartDashboard in C++ are recommended to install the update.
An update which addresses this issue can be found here: http://first.wpi.edu/FRC/c/update/Release/WorkbenchUpdate20140325rev3887.exe
After installing the update you must re-build and re-download your robot code. You can verify that your code was built with the update by verifying that the version on the right hand side of the Driver Station Diagnostics tab reads C++ Update 1 (C++ Update 0 is the kickoff release).
This release also fixes artf1712 regarding the Driver Station GetMatchTime() method. The time now properly sets to 10s instead of 15s on the first teleop packet.
The final change is a modification to the Serial Port class to attempt to recover from certain types of errors. Previously these errors would result in the Serial Port being inoperable until the code was restarted. Now WPILib will attempt to Reset the Serial Port on a limited set of errors. This will result in any data currently in the buffer being lost, but may allow for the Serial Port to resume operation.
Java FRC Plugins - Updated 1/22/14
An initialization error in the Java library causes serial communication to fail with the error "VI_ERROR_RSRC_NFOUND in function viOpen". This is described here: http://forums.usfirst.org/showthread.php?21290-SerialPort-viOpen-error and has been fixed in build 598 of the Netbeans FRC Plugins.
The stable release including this fix can be installed by setting the Netbeans plugin update location to: http://first.wpi.edu/FRC/java/netbeans/update/Stable/updates.xml and checking for updates. Stable updates will be promoted to Release updates periodically but are made available as interim updates for teams. Please report any problems in the FIRST Forums with this software.
FRC Driver Station - Updated 2/10/14
The USB Devices indicator lights on the DS currently do not behave reliably. The status of USB joystick or gamepad devices can be determined using the Joystick Setup box on the Setup Tab. The status of the Cypress Enhanced I/O board can be determined using the indicator light on the tab selector and the Kinect status can be determined using the Kinect version string on the right side of the Diagnostics tab.
2014 Changes for C++ and Java
The new big features in the 2014 FRC software release include:
SmartDashboard 2.0 - new version of the Java SmartDashboard, completely rebuilt from the ground up using JavaFX. This version also incorporates record/playback functionality for video and dashboard variables. The previous SmartDashboard is still included with the update and available for use by teams.
All-in-One Installer for NI Utilities - The NI Utilities are now bundled as a single standalone installer. The 2014 NI FRC Update includes the FRC Driver Station and Dashboard, cRIO Imaging Tool, Camera Configuration Tool and all components required to run them (no DVD required). It also includes the 2014 FRC Bridge Configuration Utility which requires the Java Runtime Engine to run. Most computers will already have the JRE installed; if you do not have the JRE, the instructions on using the Bridge Configuration Utility will indicate where to get it.
The following library API changes may effect existing code that was written with the previous versions of WPILib:
- C++ VxWorks types (UINT32, INT16, etc) were converted to more standard types (uint32_t, int16_t). Custom builds of WPILib or code which extends WPILib classes may need to change types or casts to match.
- Deprecated SerialPort print method in Java. Printing arguments to a string and using write(string.getBytes()) is more reliable and efficient.
- I2C Compatibility mode now defaults to enabled. This will improve reliability for the majority of devices, but could possibly cause an issue with some devices. Call SetCompatabilityMode(false) to disable.
- FPGA averaging is now exposed for Counters and Encoders.
- Counters now have a GetDistance and GetRate method.
- Counters now implement PIDSource.
- Gyro's now have a GetRate method and a SetPIDSourceParameter to allow using rate or angle with a PIDController.
- SPIDevice class and ADXL345_SPI have been added to Java.
- CancelWhenPressed/active and ToggleWhenPressed/Active actions added to buttons and triggers for Command Based programming.
- Analog Channel now contains a SetVoltageForPID method to set whether to use Voltage or raw values for PIDGet.
- Analog Potentiometer Class added.
- Double Solenoid now works with LiveWindow / Test Mode
- Motors are all properly set to 0 when entering LiveWindow
- Timer no longer doubles when stopped and restarted.
- Java DS LCD class now contains a clear method.
- Java I2C now correctly casts signed bytes
- Motor Safety Helper no longer prints messages in Test mode
- Java Serial Port now properly clears the bytes from the buffer and properly decodes strings
- A 2014 Vision Example has been added for both languages.
- An Iterative Template example has been added back to C++.
- The C++ Default Code demo has had the continuous methods removed.