View Single Post
  #24   Spotlight this post!  
Unread 31-07-2015, 02:14
Cel Skeggs Cel Skeggs is offline
Robot Software Manager Alumnus
AKA: Previously known as Colby
FRC #1540 (The Flaming Chickens)
Team Role: Alumni
 
Join Date: Feb 2013
Rookie Year: 2009
Location: Portland, Oregon, USA
Posts: 107
Cel Skeggs is a glorious beacon of lightCel Skeggs is a glorious beacon of lightCel Skeggs is a glorious beacon of lightCel Skeggs is a glorious beacon of lightCel Skeggs is a glorious beacon of lightCel Skeggs is a glorious beacon of light
Re: The CCRE: A comprehensive award-winning robot code framework

Finally! CCRE release 2.9.0 is out! Besides lots and lots of minor improvements and bugfixes, this release includes the major features of Control Bindings and Mecanum support!

Full changelog:
Code:
Release of CCRE with API 2.9.0.

WARNING: This release has not been tested on the cRIO due to a lack of a cRIO robot to test on. If you need cRIO functionality and don't have time to debug, refrain from upgrading.

Major changes:

* Added ControlBinding module.
* Added Mecanum implementation to DriverImpls.
* Added access to Joysticks 5 & 6 on the roboRIO. This still doesn't work on the cRIO even if a new DS is used.
* Added logging pane to emulator.

Minor changes:

* Added onInitComplete event to Igneous.
* Added addAllIfNotFound() to ConcurrentDispatchArray.
* Added asOutput()/asInput() to EventStatus and FloatStatus to match BooleanStatus.
* Added null checks to FloatFilter.
* Added invalid-parameter checks to some FloatMixing methods.
* Added CArrayUtils.collectIterable.
* Added LogLevel.next().
* Added ability to change bounds for PoultryInspector FloatControlComponent.
* Added ability to control LoggingTargets and RemoteProcedures from the PoultryInspector.
* Changed StorageProvider to accept arbitrary names for storage segments.
* Improved networking diagnostics.
* Expanded EventOutputRecoverable subsystem to include more EventOutputs. (debounce)
* Renamed BooleanMixing.ignoredBooleanOutput to BooleanMixing.ignored.
* Deprecated BooleanMixing.ignoredBooleanOutput.
* Renamed FloatMixing.ignoredFloatOutput to FloatMixing.ignored.
* Deprecated FloatMixing.ignoredFloatOutput.
* Deprecated EventStatus.countConsumers.
* Upgraded to Cobertura 2.1.1.
* Added deactivated QuickDeploy implementation.
* Added --failfast option to testing harness.
* Added assertFloatsNear to testing harness.
* Added TextBoxComponent to emulator.
* Added ccre.log.Logger to default list of imports in RobotTemplate.
* Deprecated CCRE.jar dispatch launcher.
* Deprecated RLoad mechanism.
* Deprecated Tokenizer.
* Deprecated Utils.dynamicCast.
* Deprecated Utils.getGenericClass.

Bugfixes:

* Fixed rendering glitches of PoultryInspector FloatControlComponent.
* Stopped attempting the impossible task of binding to port 80 on Linux and Mac OS.
* Specified behavior of CallerInfo more accurately.
* Improved edge case handling of DefaultThrowablePrinter.
* Improved behavior of ThrowablePrinter in exceptional scenarios.
* Improved edge case handling of CHashMap.
* Fixed DefaultStorageSegment handling of null values.
* Fixed completely broken FloatMixing.onUpdate() implementation.
* Simplified one FloatMixing.select() implementation.
* Improved error handling in PauseTimer main loop.
* Updated javadoc for DriverImpls.
* Fixed race conditions in EventStatus, MultipleSourceBooleanController, FloatMixing.select(), and PauseTimer.
* Fixed emulator race conditions.
* Fixed issue in check-header.sh caused by cRIO build.
* Clarified FloatMixing semantics on edge cases.
* Clarified *Input semantics on edge cases.
* Removed premature optimization of *Status objects.
* Clarified RemoteProcedure documentation.
* Slightly clarified licensing.
* Fixed miscellaneous typos.

New & improved tests:

* Added TestFilters.
* Added TestFloatMixing.
* Added TestWorkarounds.
* Added TestLineCollectorOutputStream.
* Added TestUniqueIds.
* Improved TestBooleanMixing.
* Improved TestPauseTimer.
* Expanded TestBooleanStatus.
* Expanded TestFloatStatus.
* Expanded TestMixing.
* Improved and expanded TestEventMixing.
* Improved and expanded TestEventStatus.
* Rewrote and expanded TestUtils.
* Rewrote, expanded, and improved TestCHashMap
The control binding system lets your drivers configure their OI to their specifications, without (too much) programmer involvement. A programmer can simply write code like:

Code:
// ...
    public static final ControlBindingCreator driveControls = Igneous.makeControlBindingCreator("Drive Code");
// ...
    BooleanInput highGearButton = driveControls.addBoolean("High Gear");
// ...
    FloatInputPoll leftDriveAxis = driveControls.addFloat("Drive Axis Left");
// ...
Then, on the running robot, a user can select any buttons/axes to use for specific controls by holding the button and selecting the control. And then press a button to save their configuration permanently, so this works even if you turn off your robot.



And, of course, the emulator will just display these controls as the names you gave them, which means that you don't have to remember the button and axis numbers of everything during emulation!
__________________
Software manager alumnus. Developer of the CCRE, a powerful robot code framework based on dataflow and composibility.
Refer to as she/her/hers. Years of FRC: 2012, 2013, 2014, 2015, 2016. FLL for a few years beforehand.
Team 1540: The Flaming Chickens | Portland, Oregon | Twitter | Facebook
Reply With Quote