CCRE v3.3.0 is out!
This release is from over a month of active software writing, and adds a very large number of minor features and quite a few major features as well.
Code:
Release of CCRE with API 3.3.0.
Major changes:
* Add recording toolkit and Timeline Analyzer
* Add discrete channels
* Rearchitect and expand serial bus handling system
* Add new fleshed-out CAN Talon SRX interface: TalonExtendedMotor
* Add ethernet camera support to PoultryInspector
* Overhaul timing system to use a unified scheduler
* Add StopwatchTimer
* Add support for SD540 speed controller
* Add support for Spark speed controller
* Add support for Victor SP speed controller
* Add support for Talon SRX over PWM
Minor changes:
* Extend Time.* constants to longs to avoid overflow
* Add rumble support to Joysticks
* Support axis inversion in ControlBindings
* Add "OPEN NETWORK" button to PoultryInspector
* Allow PoultryInspector component removal by dropping components back into network palettes
* Add tunable ramping methods
* Add main class selector to SampleRobot
* Add recorder example to Valkyrie code
* Add selectByState to StateMachine
* Add mode tracking via discrete inputs to FRC API
* Add discrete input support to BehaviorArbitrator
* Add Storage support for deletion, existence checking, and file listing
* Deprecate old derivative implementation; add version without the zero-delta bug
* Add modulation (remainder) operation to FloatOperation
* PauseTimers now can take a FloatInput for the delay
* Add support for reading total current of the PDP
* Add Faultable<F> interface
* Add Derived...IO classes to match Derived...Input classes
* Allow Cluck publishing of any IOs, not just Cells
* Improved documentation in various ways
Invisible changes:
* Speed up unit tests
* Overhaul time testing system
* Switch travis CI from trusty-based to container-based
* Add support for reversed InputStreams to Cluck
* Add support for multiple SuperCanvas applications
* Update libwpilibJavaJNI.so to newer, slimmer, custom version
* ExtendedMotors are now enabled as part of simpleControl()
* Miscellaneous code clean-up and refactoring
* Apply author name change
Bugfixes:
* Fix long-standing serialization issue in PoultryInspector
* Fix FRC.counter to not fail most of the time
* Miscellaneous fixes
The recording system is one of the most interesting new features:
This system allows recording precise information about the function of a robot, down to an accuracy of 10 microseconds. In the above diagram, you can see a snippet from an actual robot test run that shows precise information on the timing details of certain periodic events and the exact state of the robot's scheduler. Tools like this allow recording an entire match and looking back later to discover exactly what happened. To use this, look at the ccre.recording package.
We've also introduced a new scheduling system, which collapses all of the different timing threads into a single thread, which increases consistency of timing, simplifies timing code (so fewer bugs), and makes finer-grained CPU load analysis and management possible. You don't need to do anything to work with this - it's automatically used by the latest version of the CCRE.
We added support for SPI and I2C, and expanded support for RS232. We expanded the CAN Talon SRX interface to allow access to almost all of its internals through a CCRE-style reactive interface. We also added support for other PWM speed controllers like the SD540, Spark, Victor SP, and Talon SRX (when used over PWM.)
Discrete channels are a new addition to the core architecture of the CCRE: these are like boolean channels, but with a used-defined set of options, so that it can be used for robot mode access, behavior arbitrators, and more.
The PoultryInspector interface is now slightly more intuitive, and it now supports viewing AXIS M1011/M1013 webcams, including drawing targeting rectangles on top.
This releases includes fixes for all on-field bugs that we know about, and we'll be certain to release any further fixes promptly during the competition season. If you find anything that doesn't work, please contact me immediately so that we can get it fixed quickly.