Releases: SwerveRobotics/ftc_app
Swerve Library 1.5.3
This small update upgrades the build.gradle etc files so as to prevent Android Studio 2 from complaining.
Swerve Library 1.5.2
This release publishes as 'official' the beta that was available in the Swerve.1.5.2-beta branch, which was last updated on 2016.03.14 and was used in competitions by several teams through the remainder of the season.
Swerve Library 1.5.1
This small update fixes an issue with opmode, etc shutdown logic that was getting stuck on a low-level FTDI USB driver bug. If you are using 1.5.0, we recommend that you update to 1.5.1 so as to include this fix.
Swerve Library 1.5.0
This is a very large set of changes, perhaps the largest yet. Care has been taken to maintain compatibility where possible through judicious use of "@deprecated", but in some cases functionality has been deleted and removed where it was believed to have been little used (if at all) in the interests of simplicity and the sanity of the library maintainer (if there's something important that you were using that was deleted please let us know). Before committing to upgrade to this release, be sure you have enough time to review the impact to your code and perform any necessary adjustments. Don't do this the night before a competition.
Note that we have had verified reports that, depending on how much your code was affected by these changes, bugs in the dependency analysis of Android Studio (perhaps Gradle itself) are tickled. If you find you get very odd broken dependencies when you sync to this release, give us a ring and we'll try to walk you through things.
The Robot Wifi Protocol Version spoken by this release is v4, the same as in previous releases. Thus, the driver station of the previous release is compatible with robot controller apps you build with this release; no upgrade of the driver station is necessary. That said, the driver station included in this release (in the doc\apk directory, as usual) has enhanced function, notably of its monitoring of battery voltage.
Though the quantity of changes in this release is large, the increment in functionality is relatively small. Most of the changes are in response to the movement of function from the Swerve Library into the Core SDK (most notably the 'easy' controllers and the I2c layer) for a beta release in early March, 2016 (as always, this release of the Swerve Library fully contains the Core SDK with which it is compatible; you do not need to, and should not, download both libraries). That migration is the cause of some of the issues of compatibility. For example, interfaces migrated no longer have the 'IFoo' naming style, and some refinement and polish was applied. II2cDeviceClient is now I2cDeviceSynch; it's implementation I2cDeviceClient is now I2cDeviceSyncImpl. The actual interface II2cDeviceClient technically remains, for compatibility, but is now a trivial extension of I2cDeviceSync, and is deprecated. Other changes have been treated similarly.
Beyond simple movement of function, there are some improvements in this release, including:
- All thunking has been removed. All calls to sensor and actuator logic now happen, immediately, on the threads on which they are called. A corollary of this change is that optional interfaces on, e.g., sensor objects are no longer masked by the thunking objects.
- The function waitForOneFullHardwareCycle() now no longer serves a useful purpose, and has been deprecated. In most cases, the idle() function is a better choice, or a Thread.sleep().
- Improvements have been made in the robustness of OpMode shutdown in the face of errant code and hardware lock up. If, on an OpMode stop or such, you find your app appearing to 'crash' after about 10 seconds of inactivity, have a look at the logcat log: it should be able to significantly help diagnose the problem.
- Improvements have been made in the software being able to tolerate electrostatic discharge (ESD) events without locking up the hardware. We're still not out of the woods, but it's better.
- Synchronous and Linear OpModes now auto-stop upon their completion.
- The cryptographic credentials used during development to sign robot controller apps before they are downloaded to the phone (such signing always happens under the covers) is now built-in to the SDK rather than be automatically generated by Android Studio on each individual development station. For teams on which development is carried out on more than one laptop, this will smooth things significantly: much less disruption will occur (popups and permissions dialogs) as one switches from laptop to laptop. However, it does mean that a one-time occurrence of such popups will be experienced by everyone, just like the very first time they downloaded.
- The "Please wait while we update the Wifi Direct settings on this device" issue has been resolved.
- The app build time and date now appears on the About dialog.
There are a few breaking changes, among them the following:
- The sound files played on robot startup have been moved from YourCodeHere to the SwerveLibrary; if you've customized the sound playing, you may need to adjust your code.
- As mentioned, some functionality has been deleted, including IThunkDispatcher, SynchronousThreadContext.getEventLoopManger(), and several other thunking-related methods and constants.
- II2cDeviceClient is now named I2cDeviceSynch; the the old name is still usable, but deprecated
- II2cDeviceClient.READ_MODE is now I2cDeviceSynch.ReadMode; please change your code accordingly
- SynchronousOpMode.createSynchronousWorkerThread still executes the Runnnable passed as an argument, but no longer returns a Thread on which that is done, as a more general Executor mechanism is used instead.
- Some technical internal but formally 'public' functionality has been removed from SwerveThreadContext.
- I2cDevice.getController() is now I2cDevice.getI2cController()
- I2cDeviceClient.getI2cCycleCount() is now found on I2cDevice.getCallbackCount().
- II2cDeviceClientUser.getI2cDeviceClient() is now I2cDeviceSynchUser.getI2cDeviceSynch().
- ClassFactory.createI2cDeviceClient() no longer supports auto-close on opmode stop.
Note: the JavaDoc documentation in this release has not yet been updated, for doing so would leave the migrated functionality undocumented until the beta of the Core SDK.
Swerve Library 1.3.2
This very small release fixes two small bugs (one in EasyLegacyMotorController.setChannelMode() and the other improving robustness of annotation-based OpMode registration). It also centralizes the administration of build.gradle for YourCodeHere modules
Swerve Library 1.3.1
This release provides a few minor fixes over 1.3.0. The most critical of these repaired IMUs and other I2c devices that were broken by that release. Another fixed a (partially long-standing, partially recent) bug having to do with the use of easy motor and servo controllers in non-linear and non-synchronous opmodes. Other minor fixes are also present. There are no known breaking changes.
This release speaks Robot Wifi Protocol Version v4 (see the about screens in recent versions of the apps), as did 1.3.0. If your driver station speaks an earlier version, you must upgrade (by sideloading, as of current writing) your driver station; see the release notes of 1.2.2 for details.
Swerve Library 1.3.0
This release updates to (and then moves beyond) the FTC HQ release published Feb 1, 2016. It is a relatively major release containing significant SDK-level improvements in robustness and reliability in the face of USB module connects, disconnects, and reconnects. Numerous other miscellaneous bug fixes are also included, notably both a probable fix and also a work-around for the sometimes-encountered Adafruit BNO055 'everything reads as zeros' problem.
As with Swerve Library 1.2.2, you must sideload-install the new driver station found in this release; driver station apps you find elsewhere will refuse to connect. Please see the release notes of 1.2.2 for instructions.
There are some very small breaking changes: the notion of altering the read-thread priority in I2cDeviceClient has been removed, for example. The notion of 'arming' an I2cDeviceClient is now called 'engage'ing.
If you find bugs or issues with this release, please let us know promptly, and we'll attend to them as soon as we possibly can. We really do understand how precious your development time is, especially this late in the season.
Swerve Library 1.2.2
This release has a few small bug fixes:
- Servo.setPosition() will no longer flood the servo controller and delay USB transmissions
- gamepads now operate in the 'init' state (before 'start' is pressed)
More significantly, it updates to the latest available from FTC HQ. That release contains numerous low-level bug fixes and upgrades. Important: a new driver station is required; your existing driver station will not function correctly with this Swerve release. Moreover, the driver station currently (as of Jan 18, 2016) found in the Google Play Store is also not compatible. Instead, you must 'side load' install the driver station APK which is found in the Swerve Library in ftc_app/doc/apk/FtcDriverStation-release.apk.
Side loading can be accomplished by any of several means. See the ADB command 'install' command, for example (ADB is found in the Android SDK). Alternately, any of several PC applications (such as http://apkinstaller.com/) and Android APK Installer apps (found in the Play Store) can be used. The thread here (http://ftcforum.usfirst.org/showthread.php?6101-FTC-Beta-Branch&p=24750#post24750) might also be helpful.
Swerve Library 1.1.2
This release fixes some small bugs in the color sensor. It also adds more control of the BNO055 IMU parameters, specifically the accelerometer, gyroscope, and magnetometer bandwith, power mode, etc parameters.
There are a few breaking changes in IBNO055IMU.Parameters having to do with (now) consistently using camelCase for member names. Apologies...
Small bug fixes
This release fixes a handful of bugs in v1.1.0, notably, in synchronous OpModes, the failure of RESET_ENCODERs to wait for the encoders to reset, and the failure of servos to move to intermediate values.