MarkXII-Java-Public-
A public release of our final 2015 Mark XII code in Java. This includes a guide to using our custom threading system, as well as a base TKOHardware class that may easily be changed to accommodate other robots with similar parts. The code will need to be implemented into your own IDE of choice as the metadata for our IDE, as well as the FRC .jars, have been stripped out. Included below are some particular areas of notice within the code, including our Autonomous, TKOThread, TKOHardware, and TKOLogger classes/sections.
Autonomous
The autonomous is built on an expandable Atoms and Molecules framework, with the ability to chain quick actions together in order to build a set of customizable autonomous actions. Included are atoms for driving and turning using various sensors in conjunction with PID, as well as the use of various sensors to interact with our lift and the game pieces to determine when to pick up and drop particular items. Included as well are some rough ideas for testing these atoms to determine whether or not they function to specification.
TKOThread
The TKOThread class is built around ensuring that there is only one instance of any particular action running at a singular time, helping to alleviate problems caused by multiple classes attempting to access the same hardware at the same time. By synchronizing the threads and ensuring thread safety across instances, we are able to prevent multiple instances of a class without the use of static classes. Included is the ThreadExample.java under util in order to help others get started using TKOThread.
TKOHardware
TKOHardware is a class under util used to monitor all of the various inputs and outputs on the robot and ensure that they are being accessed safely and without interference, as well as to provide a central place for all classes to access the various inputs and outputs. This allows us to quickly make changes within Definitions.java and TKOHardware.java which will apply to all of our classes, and allows us to easily modify the settings on the input and output devices as we see fit.
TKOLogger
TKOLogger allows us to keep records on the various messages thrown out by the RoboRio during a run in order to keep tabs on what has happened, as well as use for bug fixes and pinpointing problem areas in the code.