Squashed 'third_party/allwpilib_2016/' changes from 7f61816..3ce6feb

3ce6feb Updated release number for the new release
e054bbc This adds StopMotor() to the SpeedController interface for C++ and Java. For Java, this is as simple as just adding it, as all motors already have an implementation from MotorSafety that is correctly resolved. For C++, I had to override StopMotor in the classes that descend from SafePWM and explicitly call the SafePWM version. RobotDrive now calls StopMotor on each of its SpeedControllers, instead of calling Disable or setting the motor to 0.0 as it was doing previously.
a15b9dc Merge "More updates to the Gyro test fixing potential null pointer exception"
21b7213 Added Config routine to allow enabling/disabling of limit switch and soft limits.  This improves upon the ConfigLimitMode routine, which does not allow certain combinations of enable/disabled limit features. Also keeps parity with LV and Java.
1b45237 Merge "Add an additional member variable for "stopped" which indicates the CAN motor controller has been explicitly stopped, but not disabled by the user (main use case is MotorSafety tripping). When Set() is called the next time the controller will be re-enabled automatically."
1096b15 Add an additional member variable for "stopped" which indicates the CAN motor controller has been explicitly stopped, but not disabled by the user (main use case is MotorSafety tripping). When Set() is called the next time the controller will be re-enabled automatically.
7da21fa More updates to the Gyro test fixing potential null pointer exception
ede5862 Rate-limit duplicate error messages to avoid flooding console.
c22284d Merge "artf4818: Fix CAN Talon JNI references with underscores."
cac3741 Merge "Updated PDP port of Talon and disabled PDP tests for Victor and Jaguar since the Victor and Jaguar don't draw enough current for the PDP to read above 0. PDP tests for both java and cpp only test the Talon now."
097aa8c Fixed the gyro deviation over time test
1d647b3 artf4818: Fix CAN Talon JNI references with underscores.
368cfc7 Merge "Fixed the motor tests by reducing speed to within the limits of the encoders we use. Also fixed java pid tolerances since getAvgError() was broken. It is now fixed and works properly. Added tests for both java and cpp that test if pid tolerances are working using fake input output pairs."
833e459 Updated PDP port of Talon and disabled PDP tests for Victor and Jaguar since the Victor and Jaguar don't draw enough current for the PDP to read above 0. PDP tests for both java and cpp only test the Talon now.
6c096a3 Fixed the motor tests by reducing speed to within the limits of the encoders we use. Also fixed java pid tolerances since getAvgError() was broken. It is now fixed and works properly. Added tests for both java and cpp that test if pid tolerances are working using fake input output pairs.
dd7eb0f Fixed robot drive for C++ Simulation
258a622 Merge "Update version number for Release 3 Print distinctive message on robot program startup Change-Id: Ic91b81bd298ee6730503933cf0e733702e4b4405"
b1386c6 Update version number for Release 3 Print distinctive message on robot program startup Change-Id: Ic91b81bd298ee6730503933cf0e733702e4b4405
a58de40 Merge "Removed publishing of java sim jar"
792d0d3 PDP Classes should support any PDP address
35df955 Merge "Remove maven local as a possible search location"
a0ce9ee Another improvement to HAL-joy getting to ensure it works in future RIO image updates.
0f02c31 Removed publishing of java sim jar
8435ac7 DriverStation::GetJoystickName(): Make work for stick>0.
b4cf4f4 Remove maven local as a possible search location
c3000c3 Merge "Fix HALGetJoystickDescriptor()."
4dec0b4 Merge "Fixed Simulation C++ API"
abc9c27 Fixed Simulation C++ API
b8ae9ec Fix HALGetJoystickDescriptor().
a60f874 Artf4800: Fixes HALGetJoystick*** Segfault
010b584 Merge "fix sim_ds launch script"
4429e16 Merge "Added build dir specification for sim javadoc to not overwrite athena javadoc"
ec9349b Initialized the m_sensors variable to fix artf4798.
9745af8 Added build dir specification for sim javadoc to not overwrite athena javadoc
4da8702 fix sim_ds launch script
05acf79 Fix C++ PIDController SetToleranceBuffer and OnTarget locking.
94a6b05 Merge "Fix onTarget() so that it returns false until there are any values retrieved"
d06053d Fix onTarget() so that it returns false until there are any values retrieved
74927cc Correctly set smart dashboard type for AnalogGyro and ADXRS450_Gyro.
070752f Merge "Fixed sim_ds script library path"
21a8bab Merge "PIDController feed forward term can now be calculated by the end user"
56bd6da Fixed sim_ds script library path
07710f1 Merge "Fixing install script... again"
e1cb61f Use absolute path for NT persistent storage.
09c7482 Fixing install script... again
a3b8bec PIDController feed forward term can now be calculated by the end user
790adb0 artf2612: Update license in source files.
042671c Merge "Removed gz_msgs from wpilibcSim"
c111690 Ultrasonic: replace linked list with std::set.
d71a8ed Removed gz_msgs from wpilibcSim
37259f7 Merge "Replaced linked list in Notifier with std::list"
cd17e7a Merge "Renamed Gyro to AnalogGyro to match athena API"
c5c8a87 Replaced linked list in Notifier with std::list
89405d8 Renamed Gyro to AnalogGyro to match athena API
4a19490 Merge "Adds CANTalon to LiveWindow"
c4a3567 Merge "Fixing the frcsim installer script"
295648f Adds CANTalon to LiveWindow
1b964a2 Merge "Fixes CAN devices in C++ library not showing in the livewindow"
7ba5cee Merge "HAL: Use extern "C" in implementation files."
d17d242 Fixes CAN devices in C++ library not showing in the livewindow
25a771a Added linear digital filters
7349c2c Fixing the frcsim installer script
c82122c Merge "Default bufLength for PIDController in Java should be 1"
58f3f97 Merge "Adds WaitResult to Java waitForInterrupt"
bc8ed12 HAL: Use extern "C" in implementation files.
4cac89e Default bufLength for PIDController in Java should be 1
64fcdcc Keep track of FPGA time rollovers with 64-bit time.
d30b283 Merge "Change C++ Notifier to allow std::function callback."
6ee3052 Merge "Rewrite C++ Notifier to use HAL multi-notifier support."
f5d09e2 Merge "Rewrite Java Notifier and update Interrupt JNI."
d0274aa Merge "Readded styleguide accidentally removed in the reorg"
68311ad Merge "Artf4179: Allow alternate I2C addresses for ADXL345_I2C"
dee12d4 Readded styleguide accidentally removed in the reorg
fa100df Fixed some typos in the comments of MotorEncoderFixture.java, a method name in CANMotorEncoderFixture.java, and the README files
3397b5c Adds WaitResult to Java waitForInterrupt
5f0dffd Artf4177: Use read byte count for ReadString
8564f33 Artf4179: Allow alternate I2C addresses for ADXL345_I2C
e52b52d Change C++ Notifier to allow std::function callback.
40b29e7 Rewrite C++ Notifier to use HAL multi-notifier support.
d126f45 Rewrite Java Notifier and update Interrupt JNI.
557805a Merge "finishing up FRCSim installer"
911b64b finishing up FRCSim installer
e24fe6f Merge "Artf4776 Fixes First DIO PWM usage errors"
f8f9284 Merge "Artf4774 Fixes HAL getHALErrorMessage missing error"
84428d5 Merge "Prevent double free in DigitalGlitchFilter"
a00a5ff Merge "Set correct error message"
9aeee98 Prevent double free in DigitalGlitchFilter
5d2186c working on install process for FRCSim 2016
7fdb616 Merge "This commit adds documentation generation, including grabbing ntcore sources, for both Java and C++. This will need changes made in the wpilib promotion tasks to copy the generatd documentation to the correct places."
f67ebca Improved READMEs
8a7c019 Artf4776 Fixes First DIO PWM usage errors
1cd2f9a Added libnipalu to make vision programs link properly
375b92a This commit adds documentation generation, including grabbing ntcore sources, for both Java and C++. This will need changes made in the wpilib promotion tasks to copy the generatd documentation to the correct places.
8d0a990 Set correct error message
b65401f Artf4774 Fixes HAL getHALErrorMessage missing error
5f918be Condition java sim build on -PmakeSim flag
53bd180 Merge "Add SPARK and SD540 motor controllers"
66cbe69 Fixed double free of DriverStation.
431f345 Repaired simulation build on linux
611593c Add Cmake wrappers and unzip desktop ntcore builds
51a18cd Add SPARK and SD540 motor controllers
c05e883 Merge changes I55ce71c6,I803680c1
2b80029 Rewrite CANTalon JNI layer.
ef4c45b Last feature addition for CANTalon java/C++ user-facing API.

Change-Id: Ia3a124978a426991890b6f8abbe07d34d75ba38d
git-subtree-dir: third_party/allwpilib_2016
git-subtree-split: 3ce6feb8acdeca46e93a55280fb6ace3a4d5bcd6
diff --git a/wpilibc/Athena/include/ADXL345_I2C.h b/wpilibc/Athena/include/ADXL345_I2C.h
index e55e007..e0327f7 100644
--- a/wpilibc/Athena/include/ADXL345_I2C.h
+++ b/wpilibc/Athena/include/ADXL345_I2C.h
@@ -1,9 +1,10 @@
 /*----------------------------------------------------------------------------*/
-/* Copyright (c) FIRST 2008. All Rights Reserved.
- */
+/* Copyright (c) FIRST 2008-2016. All Rights Reserved.                        */
 /* Open Source Software - may be modified and shared by FRC teams. The code   */
-/* must be accompanied by the FIRST BSD license file in $(WIND_BASE)/WPILib.  */
+/* must be accompanied by the FIRST BSD license file in the root directory of */
+/* the project.                                                               */
 /*----------------------------------------------------------------------------*/
+
 #pragma once
 
 #include "interfaces/Accelerometer.h"
@@ -51,7 +52,7 @@
   };
 
  public:
-  explicit ADXL345_I2C(Port port, Range range = kRange_2G);
+  explicit ADXL345_I2C(Port port, Range range = kRange_2G, int deviceAddress = kAddress);
   virtual ~ADXL345_I2C() = default;
 
   ADXL345_I2C(const ADXL345_I2C&) = delete;
diff --git a/wpilibc/Athena/include/ADXL345_SPI.h b/wpilibc/Athena/include/ADXL345_SPI.h
index 1310133..ceb28cd 100644
--- a/wpilibc/Athena/include/ADXL345_SPI.h
+++ b/wpilibc/Athena/include/ADXL345_SPI.h
@@ -1,9 +1,10 @@
 /*----------------------------------------------------------------------------*/
-/* Copyright (c) FIRST 2008. All Rights Reserved.
- */
+/* Copyright (c) FIRST 2008-2016. All Rights Reserved.                        */
 /* Open Source Software - may be modified and shared by FRC teams. The code   */
-/* must be accompanied by the FIRST BSD license file in $(WIND_BASE)/WPILib.  */
+/* must be accompanied by the FIRST BSD license file in the root directory of */
+/* the project.                                                               */
 /*----------------------------------------------------------------------------*/
+
 #pragma once
 
 #include "interfaces/Accelerometer.h"
diff --git a/wpilibc/Athena/include/ADXL362.h b/wpilibc/Athena/include/ADXL362.h
index ea47686..d4c2e0b 100644
--- a/wpilibc/Athena/include/ADXL362.h
+++ b/wpilibc/Athena/include/ADXL362.h
@@ -1,9 +1,10 @@
 /*----------------------------------------------------------------------------*/
-/* Copyright (c) FIRST 2008. All Rights Reserved.
- */
+/* Copyright (c) FIRST 2008-2016. All Rights Reserved.                        */
 /* Open Source Software - may be modified and shared by FRC teams. The code   */
-/* must be accompanied by the FIRST BSD license file in $(WIND_BASE)/WPILib.  */
+/* must be accompanied by the FIRST BSD license file in the root directory of */
+/* the project.                                                               */
 /*----------------------------------------------------------------------------*/
+
 #pragma once
 
 #include "interfaces/Accelerometer.h"
diff --git a/wpilibc/Athena/include/ADXRS450_Gyro.h b/wpilibc/Athena/include/ADXRS450_Gyro.h
index 42a7a59..7717f57 100644
--- a/wpilibc/Athena/include/ADXRS450_Gyro.h
+++ b/wpilibc/Athena/include/ADXRS450_Gyro.h
@@ -1,9 +1,10 @@
 /*----------------------------------------------------------------------------*/
-/* Copyright (c) FIRST 2015. All Rights Reserved.                             */
+/* Copyright (c) FIRST 2015-2016. All Rights Reserved.                        */
 /* Open Source Software - may be modified and shared by FRC teams. The code   */
 /* must be accompanied by the FIRST BSD license file in the root directory of */
 /* the project.                                                               */
 /*----------------------------------------------------------------------------*/
+
 #pragma once
 
 #include "GyroBase.h"
@@ -35,8 +36,6 @@
   void Reset() override;
   void Calibrate() override;
 
-  std::string GetSmartDashboardType() const override;
-
  private:
   SPI m_spi;
 
diff --git a/wpilibc/Athena/include/AnalogAccelerometer.h b/wpilibc/Athena/include/AnalogAccelerometer.h
index ad6d6dd..86f7019 100644
--- a/wpilibc/Athena/include/AnalogAccelerometer.h
+++ b/wpilibc/Athena/include/AnalogAccelerometer.h
@@ -1,9 +1,10 @@
 /*----------------------------------------------------------------------------*/
-/* Copyright (c) FIRST 2008. All Rights Reserved.
- */
+/* Copyright (c) FIRST 2008-2016. All Rights Reserved.                        */
 /* Open Source Software - may be modified and shared by FRC teams. The code   */
-/* must be accompanied by the FIRST BSD license file in $(WIND_BASE)/WPILib.  */
+/* must be accompanied by the FIRST BSD license file in the root directory of */
+/* the project.                                                               */
 /*----------------------------------------------------------------------------*/
+
 #pragma once
 
 #include "AnalogInput.h"
diff --git a/wpilibc/Athena/include/AnalogGyro.h b/wpilibc/Athena/include/AnalogGyro.h
index 4ce0ccb..acb5b0f 100644
--- a/wpilibc/Athena/include/AnalogGyro.h
+++ b/wpilibc/Athena/include/AnalogGyro.h
@@ -1,9 +1,10 @@
 /*----------------------------------------------------------------------------*/
-/* Copyright (c) FIRST 2008. All Rights Reserved.
- */
+/* Copyright (c) FIRST 2008-2016. All Rights Reserved.                        */
 /* Open Source Software - may be modified and shared by FRC teams. The code   */
-/* must be accompanied by the FIRST BSD license file in $(WIND_BASE)/WPILib.  */
+/* must be accompanied by the FIRST BSD license file in the root directory of */
+/* the project.                                                               */
 /*----------------------------------------------------------------------------*/
+
 #pragma once
 
 #include "GyroBase.h"
@@ -53,8 +54,6 @@
   virtual void InitGyro();
   void Calibrate() override;
 
-  std::string GetSmartDashboardType() const override;
-
  protected:
   std::shared_ptr<AnalogInput> m_analog;
 
diff --git a/wpilibc/Athena/include/AnalogInput.h b/wpilibc/Athena/include/AnalogInput.h
index d47d1f2..6217e2d 100644
--- a/wpilibc/Athena/include/AnalogInput.h
+++ b/wpilibc/Athena/include/AnalogInput.h
@@ -1,8 +1,10 @@
 /*----------------------------------------------------------------------------*/
-/* Copyright (c) FIRST 2008. All Rights Reserved.                             */
+/* Copyright (c) FIRST 2008-2016. All Rights Reserved.                        */
 /* Open Source Software - may be modified and shared by FRC teams. The code   */
-/* must be accompanied by the FIRST BSD license file in $(WIND_BASE)/WPILib.  */
+/* must be accompanied by the FIRST BSD license file in the root directory of */
+/* the project.                                                               */
 /*----------------------------------------------------------------------------*/
+
 #pragma once
 
 #include "HAL/HAL.hpp"
diff --git a/wpilibc/Athena/include/AnalogOutput.h b/wpilibc/Athena/include/AnalogOutput.h
index c30b5c7..d7bd30e 100644
--- a/wpilibc/Athena/include/AnalogOutput.h
+++ b/wpilibc/Athena/include/AnalogOutput.h
@@ -1,5 +1,5 @@
 /*----------------------------------------------------------------------------*/
-/* Copyright (c) FIRST 2014. All Rights Reserved.                             */
+/* Copyright (c) FIRST 2014-2016. All Rights Reserved.                        */
 /* Open Source Software - may be modified and shared by FRC teams. The code   */
 /* must be accompanied by the FIRST BSD license file in the root directory of */
 /* the project.                                                               */
diff --git a/wpilibc/Athena/include/AnalogPotentiometer.h b/wpilibc/Athena/include/AnalogPotentiometer.h
index 7b7b12a..3c6daa5 100644
--- a/wpilibc/Athena/include/AnalogPotentiometer.h
+++ b/wpilibc/Athena/include/AnalogPotentiometer.h
@@ -1,3 +1,10 @@
+/*----------------------------------------------------------------------------*/
+/* Copyright (c) FIRST 2016. All Rights Reserved.                             */
+/* Open Source Software - may be modified and shared by FRC teams. The code   */
+/* must be accompanied by the FIRST BSD license file in the root directory of */
+/* the project.                                                               */
+/*----------------------------------------------------------------------------*/
+
 #include "AnalogInput.h"
 #include "interfaces/Potentiometer.h"
 #include "LiveWindow/LiveWindowSendable.h"
diff --git a/wpilibc/Athena/include/AnalogTrigger.h b/wpilibc/Athena/include/AnalogTrigger.h
index 7fdd202..811cc07 100644
--- a/wpilibc/Athena/include/AnalogTrigger.h
+++ b/wpilibc/Athena/include/AnalogTrigger.h
@@ -1,9 +1,10 @@
 /*----------------------------------------------------------------------------*/
-/* Copyright (c) FIRST 2008. All Rights Reserved.
- */
+/* Copyright (c) FIRST 2008-2016. All Rights Reserved.                        */
 /* Open Source Software - may be modified and shared by FRC teams. The code   */
-/* must be accompanied by the FIRST BSD license file in $(WIND_BASE)/WPILib.  */
+/* must be accompanied by the FIRST BSD license file in the root directory of */
+/* the project.                                                               */
 /*----------------------------------------------------------------------------*/
+
 #pragma once
 
 #include "HAL/HAL.hpp"
diff --git a/wpilibc/Athena/include/AnalogTriggerOutput.h b/wpilibc/Athena/include/AnalogTriggerOutput.h
index 27ad3b8..976d30c 100644
--- a/wpilibc/Athena/include/AnalogTriggerOutput.h
+++ b/wpilibc/Athena/include/AnalogTriggerOutput.h
@@ -1,9 +1,10 @@
 /*----------------------------------------------------------------------------*/
-/* Copyright (c) FIRST 2008. All Rights Reserved.
- */
+/* Copyright (c) FIRST 2008-2016. All Rights Reserved.                        */
 /* Open Source Software - may be modified and shared by FRC teams. The code   */
-/* must be accompanied by the FIRST BSD license file in $(WIND_BASE)/WPILib.  */
+/* must be accompanied by the FIRST BSD license file in the root directory of */
+/* the project.                                                               */
 /*----------------------------------------------------------------------------*/
+
 #pragma once
 
 #include "DigitalSource.h"
diff --git a/wpilibc/Athena/include/BuiltInAccelerometer.h b/wpilibc/Athena/include/BuiltInAccelerometer.h
index b6b5f8e..d201b61 100644
--- a/wpilibc/Athena/include/BuiltInAccelerometer.h
+++ b/wpilibc/Athena/include/BuiltInAccelerometer.h
@@ -1,8 +1,10 @@
 /*----------------------------------------------------------------------------*/
-/* Copyright (c) FIRST 2014. All Rights Reserved.                             */
+/* Copyright (c) FIRST 2014-2016. All Rights Reserved.                        */
 /* Open Source Software - may be modified and shared by FRC teams. The code   */
-/* must be accompanied by the FIRST BSD license file in $(WIND_BASE)/WPILib.  */
+/* must be accompanied by the FIRST BSD license file in the root directory of */
+/* the project.                                                               */
 /*----------------------------------------------------------------------------*/
+
 #pragma once
 
 #include "interfaces/Accelerometer.h"
diff --git a/wpilibc/Athena/include/CANJaguar.h b/wpilibc/Athena/include/CANJaguar.h
index 5d05d47..c456e2a 100644
--- a/wpilibc/Athena/include/CANJaguar.h
+++ b/wpilibc/Athena/include/CANJaguar.h
@@ -1,8 +1,10 @@
 /*----------------------------------------------------------------------------*/
-/* Copyright (c) FIRST 2009. All Rights Reserved.                             */
+/* Copyright (c) FIRST 2009-2016. All Rights Reserved.                        */
 /* Open Source Software - may be modified and shared by FRC teams. The code   */
-/* must be accompanied by the FIRST BSD license file in $(WIND_BASE)/WPILib.  */
+/* must be accompanied by the FIRST BSD license file in the root directory of */
+/* the project.                                                               */
 /*----------------------------------------------------------------------------*/
+
 #pragma once
 
 #include "ErrorBase.h"
@@ -228,6 +230,7 @@
   mutable std::atomic<bool> m_receivedStatusMessage2{false};
 
   bool m_controlEnabled = false;
+  bool m_stopped = false;
 
   void verify();
 
diff --git a/wpilibc/Athena/include/CANSpeedController.h b/wpilibc/Athena/include/CANSpeedController.h
index 73ed379..5d76026 100644
--- a/wpilibc/Athena/include/CANSpeedController.h
+++ b/wpilibc/Athena/include/CANSpeedController.h
@@ -1,8 +1,10 @@
 /*----------------------------------------------------------------------------*/
-/* Copyright (c) FIRST 2014. All Rights Reserved.                             */
+/* Copyright (c) FIRST 2014-2016. All Rights Reserved.                        */
 /* Open Source Software - may be modified and shared by FRC teams. The code   */
-/* must be accompanied by the FIRST BSD license file in $(WIND_BASE)/WPILib.  */
+/* must be accompanied by the FIRST BSD license file in the root directory of */
+/* the project.                                                               */
 /*----------------------------------------------------------------------------*/
+
 #pragma once
 
 #include "SpeedController.h"
@@ -20,23 +22,11 @@
     kSpeed = 2,
     kPosition = 3,
     kVoltage = 4,
-    kFollower = 5  // Not supported in Jaguar.
+    kFollower = 5, // Not supported in Jaguar.
+    kMotionProfile = 6, // Not supported in Jaguar.
   };
 
   // Helper function for the ControlMode enum
-  std::string GetModeName(ControlMode mode) {
-    switch(mode) {
-      case kPercentVbus: return "PercentVbus";
-      case kCurrent: return "Current";
-      case kSpeed: return "Speed";
-      case kPosition: return "Position";
-      case kVoltage: return "Voltage";
-      case kFollower: return "Follower";
-      default: return "[unknown control mode]";
-    }
-  }
-
-  // Helper function for the ControlMode enum
   virtual bool IsModePID(ControlMode mode) const = 0;
 
   enum Faults {
@@ -75,6 +65,7 @@
 
   virtual float Get() const = 0;
   virtual void Set(float value, uint8_t syncGroup = 0) = 0;
+  virtual void StopMotor() = 0;
   virtual void Disable() = 0;
   virtual void SetP(double p) = 0;
   virtual void SetI(double i) = 0;
diff --git a/wpilibc/Athena/include/CANTalon.h b/wpilibc/Athena/include/CANTalon.h
index 15ebbe2..8ea9ae1 100644
--- a/wpilibc/Athena/include/CANTalon.h
+++ b/wpilibc/Athena/include/CANTalon.h
@@ -1,8 +1,10 @@
 /*----------------------------------------------------------------------------*/
-/* Copyright (c) FIRST 2014. All Rights Reserved.                             */
+/* Copyright (c) FIRST 2014-2016. All Rights Reserved.                        */
 /* Open Source Software - may be modified and shared by FRC teams. The code   */
-/* must be accompanied by the FIRST BSD license file in $(WIND_BASE)/WPILib.  */
+/* must be accompanied by the FIRST BSD license file in the root directory of */
+/* the project.                                                               */
 /*----------------------------------------------------------------------------*/
+
 #pragma once
 
 #include "SafePWM.h"
@@ -42,9 +44,9 @@
    * Depending on the sensor type, Talon can determine if sensor is plugged in ot not.
    */
   enum FeedbackDeviceStatus {
-	FeedbackStatusUnknown = 0, 		//!< Sensor status could not be determined.  Not all sensors can do this.
-	FeedbackStatusPresent = 1, 		//!< Sensor is present and working okay.
-	FeedbackStatusNotPresent = 2, 	//!< Sensor is not present, not plugged in, not powered, etc...
+    FeedbackStatusUnknown = 0,      //!< Sensor status could not be determined.  Not all sensors can do this.
+    FeedbackStatusPresent = 1,      //!< Sensor is present and working okay.
+    FeedbackStatusNotPresent = 2,   //!< Sensor is not present, not plugged in, not powered, etc...
   };
   enum StatusFrameRate {
     StatusFrameRateGeneral = 0,
@@ -53,6 +55,151 @@
     StatusFrameRateAnalogTempVbat = 3,
     StatusFrameRatePulseWidthMeas = 4,
   };
+  /**
+   * Enumerated types for Motion Control Set Values.
+   * When in Motion Profile control mode, these constants are paseed
+   * into set() to manipulate the motion profile executer.
+   * When changing modes, be sure to read the value back using getMotionProfileStatus()
+   * to ensure changes in output take effect before performing buffering actions.
+   * Disable will signal Talon to put motor output into neutral drive.
+   *   Talon will stop processing motion profile points.  This means the buffer is
+   *   effectively disconnected from the executer, allowing the robot to gracefully
+   *   clear and push new traj points.  isUnderrun will get cleared.
+   *   The active trajectory is also cleared.
+   * Enable will signal Talon to pop a trajectory point from it's buffer and process it.
+   *   If the active trajectory is empty, Talon will shift in the next point.
+   *   If the active traj is empty, and so is the buffer, the motor drive is neutral and
+   *   isUnderrun is set.  When active traj times out, and buffer has at least one point,
+   *   Talon shifts in next one, and isUnderrun is cleared.  When active traj times out,
+   *   and buffer is empty, Talon keeps processing active traj and sets IsUnderrun.
+   * Hold will signal Talon keep processing the active trajectory indefinitely.
+   *   If the active traj is cleared, Talon will neutral motor drive.  Otherwise
+   *    Talon will keep processing the active traj but it will not shift in
+   *    points from the buffer.  This means the buffer is  effectively disconnected
+   *    from the executer, allowing the robot to gracefully clear and push
+   *    new traj points.
+   *    isUnderrun is set if active traj is empty, otherwise it is cleared.
+   *    isLast signal is also cleared.
+   *
+   * Typical workflow:
+   *   set(Disable),
+   *   Confirm Disable takes effect,
+   *   clear buffer and push buffer points,
+   *   set(Enable) when enough points have been pushed to ensure no underruns,
+   *   wait for MP to finish or decide abort,
+   *   If MP finished gracefully set(Hold) to hold position servo and disconnect buffer,
+   *   If MP is being aborted set(Disable) to neutral the motor and disconnect buffer,
+   *   Confirm mode takes effect,
+   *   clear buffer and push buffer points, and rinse-repeat.
+   */
+  enum SetValueMotionProfile {
+    SetValueMotionProfileDisable = 0,
+    SetValueMotionProfileEnable = 1,
+    SetValueMotionProfileHold = 2,
+  };
+  /**
+   * Motion Profile Trajectory Point
+   * This is simply a data transer object.
+   */
+  struct TrajectoryPoint {
+    double position; //!< The position to servo to.
+    double velocity; //!< The velocity to feed-forward.
+    /**
+     * Time in milliseconds to process this point.
+     * Value should be between 1ms and 255ms.  If value is zero
+     * then Talon will default to 1ms.  If value exceeds 255ms API will cap it.
+     */
+    unsigned int timeDurMs;
+    /**
+     * Which slot to get PIDF gains.
+     * PID is used for position servo.
+     * F is used as the Kv constant for velocity feed-forward.
+     * Typically this is hardcoded to the a particular slot, but you are free
+     * gain schedule if need be.
+     */
+    unsigned int profileSlotSelect;
+    /**
+     * Set to true to only perform the velocity feed-forward and not perform
+     * position servo.  This is useful when learning how the position servo
+     * changes the motor response.  The same could be accomplish by clearing the
+     * PID gains, however this is synchronous the streaming, and doesn't require restoing
+     * gains when finished.
+     *
+     * Additionaly setting this basically gives you direct control of the motor output
+     * since motor output = targetVelocity X Kv, where Kv is our Fgain.
+     * This means you can also scheduling straight-throttle curves without relying on
+     * a sensor.
+     */
+    bool velocityOnly;
+    /**
+     * Set to true to signal Talon that this is the final point, so do not
+     * attempt to pop another trajectory point from out of the Talon buffer.
+     * Instead continue processing this way point.  Typically the velocity
+     * member variable should be zero so that the motor doesn't spin indefinitely.
+     */
+    bool isLastPoint;
+   /**
+     * Set to true to signal Talon to zero the selected sensor.
+     * When generating MPs, one simple method is to make the first target position zero,
+     * and the final target position the target distance from the current position.
+     * Then when you fire the MP, the current position gets set to zero.
+     * If this is the intent, you can set zeroPos on the first trajectory point.
+     *
+     * Otherwise you can leave this false for all points, and offset the positions
+     * of all trajectory points so they are correct.
+     */
+    bool zeroPos;
+  };
+  /**
+   * Motion Profile Status
+   * This is simply a data transer object.
+   */
+  struct MotionProfileStatus {
+    /**
+     * The available empty slots in the trajectory buffer.
+     *
+     * The robot API holds a "top buffer" of trajectory points, so your applicaion
+     * can dump several points at once.  The API will then stream them into the Talon's
+     * low-level buffer, allowing the Talon to act on them.
+     */
+    unsigned int topBufferRem;
+    /**
+     * The number of points in the top trajectory buffer.
+     */
+    unsigned int topBufferCnt;
+    /**
+     * The number of points in the low level Talon buffer.
+     */
+    unsigned int btmBufferCnt;
+    /**
+     * Set if isUnderrun ever gets set.
+     * Only is cleared by clearMotionProfileHasUnderrun() to ensure
+     * robot logic can react or instrument it.
+     * @see clearMotionProfileHasUnderrun()
+     */
+    bool hasUnderrun;
+    /**
+     * This is set if Talon needs to shift a point from its buffer into
+     * the active trajectory point however the buffer is empty. This gets cleared
+     * automatically when is resolved.
+     */
+    bool isUnderrun;
+    /**
+     * True if the active trajectory point has not empty, false otherwise.
+     * The members in activePoint are only valid if this signal is set.
+     */
+    bool activePointValid;
+    /**
+     * The number of points in the low level Talon buffer.
+     */
+    TrajectoryPoint activePoint;
+    /**
+     * The current output mode of the motion profile executer (disabled, enabled, or hold).
+     * When changing the set() value in MP mode, it's important to check this signal to
+     * confirm the change takes effect before interacting with the top buffer.
+     */
+    SetValueMotionProfile outputEnable;
+  };
   explicit CANTalon(int deviceNumber);
   explicit CANTalon(int deviceNumber, int controlPeriodMs);
   DEFAULT_MOVE_CONSTRUCTOR(CANTalon);
@@ -139,6 +286,9 @@
   virtual void ConfigLimitMode(LimitMode mode) override;
   virtual void ConfigForwardLimit(double forwardLimitPosition) override;
   virtual void ConfigReverseLimit(double reverseLimitPosition) override;
+  void ConfigLimitSwitchOverrides(bool bForwardLimitSwitchEn, bool bReverseLimitSwitchEn);
+  void ConfigForwardSoftLimitEnable(bool bForwardSoftLimitEn);
+  void ConfigReverseSoftLimitEnable(bool bReverseSoftLimitEn);
   /**
    * Change the fwd limit switch setting to normally open or closed.
    * Talon will disable momentarilly if the Talon's current setting
@@ -167,9 +317,9 @@
   /**
    * Enables Talon SRX to automatically zero the Sensor Position whenever an
    * edge is detected on the index signal.
-   * @param enable 		boolean input, pass true to enable feature or false to disable.
-   * @param risingEdge 	boolean input, pass true to clear the position on rising edge,
-   *					pass false to clear the position on falling edge.
+   * @param enable      boolean input, pass true to enable feature or false to disable.
+   * @param risingEdge  boolean input, pass true to clear the position on rising edge,
+   *                    pass false to clear the position on falling edge.
    */
   void EnableZeroSensorPositionOnIndex(bool enable, bool risingEdge);
   void ConfigSetParameter(uint32_t paramEnum, double value);
@@ -193,6 +343,69 @@
   bool IsEnabled() const override;
   double GetSetpoint() const override;
 
+
+  /**
+   * Calling application can opt to speed up the handshaking between the robot API and the Talon to increase the
+   * download rate of the Talon's Motion Profile.  Ideally the period should be no more than half the period
+   * of a trajectory point.
+   */
+  void ChangeMotionControlFramePeriod(int periodMs);
+
+  /**
+   * Clear the buffered motion profile in both Talon RAM (bottom), and in the API (top).
+   * Be sure to check GetMotionProfileStatus() to know when the buffer is actually cleared.
+   */
+  void ClearMotionProfileTrajectories();
+
+  /**
+   * Retrieve just the buffer count for the api-level (top) buffer.
+   * This routine performs no CAN or data structure lookups, so its fast and ideal
+   * if caller needs to quickly poll the progress of trajectory points being emptied
+   * into Talon's RAM. Otherwise just use GetMotionProfileStatus.
+   * @return number of trajectory points in the top buffer.
+   */
+  int GetMotionProfileTopLevelBufferCount();
+
+  /**
+   * Push another trajectory point into the top level buffer (which is emptied into
+   * the Talon's bottom buffer as room allows).
+   * @param trajPt the trajectory point to insert into buffer.
+   * @return true  if trajectory point push ok. CTR_BufferFull if buffer is full
+   * due to kMotionProfileTopBufferCapacity.
+   */
+  bool PushMotionProfileTrajectory(const TrajectoryPoint & trajPt);
+
+  /**
+   * @return true if api-level (top) buffer is full.
+   */
+  bool IsMotionProfileTopLevelBufferFull();
+
+  /**
+   * This must be called periodically to funnel the trajectory points from the API's top level buffer to
+   * the Talon's bottom level buffer.  Recommendation is to call this twice as fast as the executation rate of the motion profile.
+   * So if MP is running with 20ms trajectory points, try calling this routine every 10ms.  All motion profile functions are thread-safe
+   * through the use of a mutex, so there is no harm in having the caller utilize threading.
+   */
+  void ProcessMotionProfileBuffer();
+
+  /**
+   * Retrieve all status information.
+   * Since this all comes from one CAN frame, its ideal to have one routine to retrieve the frame once and decode everything.
+   * @param [out] motionProfileStatus contains all progress information on the currently running MP.
+   */
+  void GetMotionProfileStatus(MotionProfileStatus & motionProfileStatus);
+
+  /**
+   * Clear the hasUnderrun flag in Talon's Motion Profile Executer when MPE is ready for another point,
+   * but the low level buffer is empty.
+   *
+   * Once the Motion Profile Executer sets the hasUnderrun flag, it stays set until
+   * Robot Application clears it with this routine, which ensures Robot Application
+   * gets a chance to instrument or react.  Caller could also check the isUnderrun flag
+   * which automatically clears when fault condition is removed.
+   */
+  void ClearMotionProfileHasUnderrun();
+
   // LiveWindow stuff.
   void ValueChanged(ITable* source, llvm::StringRef key,
                     std::shared_ptr<nt::Value> value, bool isNew) override;
@@ -216,6 +429,7 @@
     kPositionMode = 1,
     kSpeedMode = 2,
     kCurrentMode = 3,
+    kMotionProfileMode = 6,
     kDisabled = 15
   };
 
@@ -226,6 +440,7 @@
                   // actually test this.
 
   bool m_controlEnabled = true;
+  bool m_stopped = false;
   ControlMode m_controlMode = kPercentVbus;
   TalonControlMode m_sendMode;
 
@@ -255,10 +470,10 @@
   static const unsigned int kDelayForSolicitedSignalsUs = 4000;
   /**
    * @param devToLookup FeedbackDevice to lookup the scalar for.  Because Talon
-   * 				allows multiple sensors to be attached simultaneously, caller must
-   *				specify which sensor to lookup.
-   * @return 		The number of native Talon units per rotation of the selected sensor.
-   *				Zero if the necessary sensor information is not available.
+   *                allows multiple sensors to be attached simultaneously, caller must
+   *                specify which sensor to lookup.
+   * @return        The number of native Talon units per rotation of the selected sensor.
+   *                Zero if the necessary sensor information is not available.
    * @see ConfigEncoderCodesPerRev
    * @see ConfigPotentiometerTurns
    */
@@ -271,40 +486,40 @@
    */
   void ApplyControlMode(CANSpeedController::ControlMode mode);
   /**
-   * @param fullRotations 	double precision value representing number of rotations of selected feedback sensor.
-   *							If user has never called the config routine for the selected sensor, then the caller
-   *							is likely passing rotations in engineering units already, in which case it is returned
-   *							as is.
-   *							@see ConfigPotentiometerTurns
-   *							@see ConfigEncoderCodesPerRev
+   * @param fullRotations   double precision value representing number of rotations of selected feedback sensor.
+   *                            If user has never called the config routine for the selected sensor, then the caller
+   *                            is likely passing rotations in engineering units already, in which case it is returned
+   *                            as is.
+   *                            @see ConfigPotentiometerTurns
+   *                            @see ConfigEncoderCodesPerRev
    * @return fullRotations in native engineering units of the Talon SRX firmware.
    */
   int32_t ScaleRotationsToNativeUnits(FeedbackDevice devToLookup, double fullRotations) const;
   /**
-   * @param rpm 	double precision value representing number of rotations per minute of selected feedback sensor.
-   *							If user has never called the config routine for the selected sensor, then the caller
-   *							is likely passing rotations in engineering units already, in which case it is returned
-   *							as is.
-   *							@see ConfigPotentiometerTurns
-   *							@see ConfigEncoderCodesPerRev
+   * @param rpm     double precision value representing number of rotations per minute of selected feedback sensor.
+   *                            If user has never called the config routine for the selected sensor, then the caller
+   *                            is likely passing rotations in engineering units already, in which case it is returned
+   *                            as is.
+   *                            @see ConfigPotentiometerTurns
+   *                            @see ConfigEncoderCodesPerRev
    * @return sensor velocity in native engineering units of the Talon SRX firmware.
    */
   int32_t ScaleVelocityToNativeUnits(FeedbackDevice devToLookup, double rpm) const;
   /**
-   * @param nativePos 	integral position of the feedback sensor in native Talon SRX units.
-   *							If user has never called the config routine for the selected sensor, then the return
-   *							will be in TALON SRX units as well to match the behavior in the 2015 season.
-   *							@see ConfigPotentiometerTurns
-   *							@see ConfigEncoderCodesPerRev
+   * @param nativePos     integral position of the feedback sensor in native Talon SRX units.
+   *                            If user has never called the config routine for the selected sensor, then the return
+   *                            will be in TALON SRX units as well to match the behavior in the 2015 season.
+   *                            @see ConfigPotentiometerTurns
+   *                            @see ConfigEncoderCodesPerRev
    * @return double precision number of rotations, unless config was never performed.
    */
   double ScaleNativeUnitsToRotations(FeedbackDevice devToLookup, int32_t nativePos) const;
   /**
-   * @param nativeVel 	integral velocity of the feedback sensor in native Talon SRX units.
-   *							If user has never called the config routine for the selected sensor, then the return
-   *							will be in TALON SRX units as well to match the behavior in the 2015 season.
-   *							@see ConfigPotentiometerTurns
-   *							@see ConfigEncoderCodesPerRev
+   * @param nativeVel     integral velocity of the feedback sensor in native Talon SRX units.
+   *                            If user has never called the config routine for the selected sensor, then the return
+   *                            will be in TALON SRX units as well to match the behavior in the 2015 season.
+   *                            @see ConfigPotentiometerTurns
+   *                            @see ConfigEncoderCodesPerRev
    * @return double precision of sensor velocity in RPM, unless config was never performed.
    */
   double ScaleNativeUnitsToRpm(FeedbackDevice devToLookup, int32_t nativeVel) const;
diff --git a/wpilibc/Athena/include/CameraServer.h b/wpilibc/Athena/include/CameraServer.h
index 17ece99..bb0c314 100644
--- a/wpilibc/Athena/include/CameraServer.h
+++ b/wpilibc/Athena/include/CameraServer.h
@@ -1,9 +1,10 @@
 /*----------------------------------------------------------------------------*/
-/* Copyright (c) FIRST 2014. All Rights Reserved.                             */
+/* Copyright (c) FIRST 2014-2016. All Rights Reserved.                        */
 /* Open Source Software - may be modified and shared by FRC teams. The code   */
 /* must be accompanied by the FIRST BSD license file in the root directory of */
 /* the project.                                                               */
 /*----------------------------------------------------------------------------*/
+
 #pragma once
 
 #include "USBCamera.h"
diff --git a/wpilibc/Athena/include/Compressor.h b/wpilibc/Athena/include/Compressor.h
index d5962c3..0d56ef7 100644
--- a/wpilibc/Athena/include/Compressor.h
+++ b/wpilibc/Athena/include/Compressor.h
@@ -1,7 +1,8 @@
 /*----------------------------------------------------------------------------*/
-/* Copyright (c) FIRST 2014. All Rights Reserved.                             */
+/* Copyright (c) FIRST 2014-2016. All Rights Reserved.                        */
 /* Open Source Software - may be modified and shared by FRC teams. The code   */
-/* must be accompanied by the FIRST BSD license file in $(WIND_BASE)/WPILib.  */
+/* must be accompanied by the FIRST BSD license file in the root directory of */
+/* the project.                                                               */
 /*----------------------------------------------------------------------------*/
 
 #ifndef Compressor_H_
diff --git a/wpilibc/Athena/include/ControllerPower.h b/wpilibc/Athena/include/ControllerPower.h
index 7384e60..18367b5 100644
--- a/wpilibc/Athena/include/ControllerPower.h
+++ b/wpilibc/Athena/include/ControllerPower.h
@@ -1,8 +1,8 @@
 /*----------------------------------------------------------------------------*/
-/* Copyright (c) FIRST 2011. All Rights Reserved.
- */
+/* Copyright (c) FIRST 2011-2016. All Rights Reserved.                        */
 /* Open Source Software - may be modified and shared by FRC teams. The code   */
-/* must be accompanied by the FIRST BSD license file in $(WIND_BASE)/WPILib.  */
+/* must be accompanied by the FIRST BSD license file in the root directory of */
+/* the project.                                                               */
 /*----------------------------------------------------------------------------*/
 
 #ifndef __CONTROLLER_POWER_H__
diff --git a/wpilibc/Athena/include/Counter.h b/wpilibc/Athena/include/Counter.h
index 4066de8..3cb55b5 100644
--- a/wpilibc/Athena/include/Counter.h
+++ b/wpilibc/Athena/include/Counter.h
@@ -1,9 +1,10 @@
 /*----------------------------------------------------------------------------*/
-/* Copyright (c) FIRST 2008. All Rights Reserved.
- */
+/* Copyright (c) FIRST 2008-2016. All Rights Reserved.                        */
 /* Open Source Software - may be modified and shared by FRC teams. The code   */
-/* must be accompanied by the FIRST BSD license file in $(WIND_BASE)/WPILib.  */
+/* must be accompanied by the FIRST BSD license file in the root directory of */
+/* the project.                                                               */
 /*----------------------------------------------------------------------------*/
+
 #pragma once
 
 #include "HAL/HAL.hpp"
diff --git a/wpilibc/Athena/include/CounterBase.h b/wpilibc/Athena/include/CounterBase.h
index 68896a8..633b795 100644
--- a/wpilibc/Athena/include/CounterBase.h
+++ b/wpilibc/Athena/include/CounterBase.h
@@ -1,9 +1,10 @@
 /*----------------------------------------------------------------------------*/
-/* Copyright (c) FIRST 2008. All Rights Reserved.
- */
+/* Copyright (c) FIRST 2008-2016. All Rights Reserved.                        */
 /* Open Source Software - may be modified and shared by FRC teams. The code   */
-/* must be accompanied by the FIRST BSD license file in $(WIND_BASE)/WPILib.  */
+/* must be accompanied by the FIRST BSD license file in the root directory of */
+/* the project.                                                               */
 /*----------------------------------------------------------------------------*/
+
 #pragma once
 
 #include <stdint.h>
diff --git a/wpilibc/Athena/include/DigitalGlitchFilter.h b/wpilibc/Athena/include/DigitalGlitchFilter.h
index a6f9f90..0f9e676 100644
--- a/wpilibc/Athena/include/DigitalGlitchFilter.h
+++ b/wpilibc/Athena/include/DigitalGlitchFilter.h
@@ -1,8 +1,10 @@
 /*----------------------------------------------------------------------------*/
-/* Copyright (c) FIRST 2015. All Rights Reserved.                             */
+/* Copyright (c) FIRST 2015-2016. All Rights Reserved.                        */
 /* Open Source Software - may be modified and shared by FRC teams. The code   */
-/* must be accompanied by the FIRST BSD license file in $(WIND_BASE)/WPILib.  */
+/* must be accompanied by the FIRST BSD license file in the root directory of */
+/* the project.                                                               */
 /*----------------------------------------------------------------------------*/
+
 #pragma once
 
 #include <array>
diff --git a/wpilibc/Athena/include/DigitalInput.h b/wpilibc/Athena/include/DigitalInput.h
index 79cfcc5..96a70a0 100644
--- a/wpilibc/Athena/include/DigitalInput.h
+++ b/wpilibc/Athena/include/DigitalInput.h
@@ -1,9 +1,10 @@
 /*----------------------------------------------------------------------------*/
-/* Copyright (c) FIRST 2008. All Rights Reserved.
- */
+/* Copyright (c) FIRST 2008-2016. All Rights Reserved.                        */
 /* Open Source Software - may be modified and shared by FRC teams. The code   */
-/* must be accompanied by the FIRST BSD license file in $(WIND_BASE)/WPILib.  */
+/* must be accompanied by the FIRST BSD license file in the root directory of */
+/* the project.                                                               */
 /*----------------------------------------------------------------------------*/
+
 #pragma once
 
 #include "DigitalSource.h"
diff --git a/wpilibc/Athena/include/DigitalOutput.h b/wpilibc/Athena/include/DigitalOutput.h
index 367fb80..e8bb514 100644
--- a/wpilibc/Athena/include/DigitalOutput.h
+++ b/wpilibc/Athena/include/DigitalOutput.h
@@ -1,9 +1,10 @@
 /*----------------------------------------------------------------------------*/
-/* Copyright (c) FIRST 2008. All Rights Reserved.
- */
+/* Copyright (c) FIRST 2008-2016. All Rights Reserved.                        */
 /* Open Source Software - may be modified and shared by FRC teams. The code   */
-/* must be accompanied by the FIRST BSD license file in $(WIND_BASE)/WPILib.  */
+/* must be accompanied by the FIRST BSD license file in the root directory of */
+/* the project.                                                               */
 /*----------------------------------------------------------------------------*/
+
 #pragma once
 
 #include "DigitalSource.h"
diff --git a/wpilibc/Athena/include/DigitalSource.h b/wpilibc/Athena/include/DigitalSource.h
index c716715..d85102b 100644
--- a/wpilibc/Athena/include/DigitalSource.h
+++ b/wpilibc/Athena/include/DigitalSource.h
@@ -1,9 +1,10 @@
 /*----------------------------------------------------------------------------*/
-/* Copyright (c) FIRST 2008. All Rights Reserved.
- */
+/* Copyright (c) FIRST 2008-2016. All Rights Reserved.                        */
 /* Open Source Software - may be modified and shared by FRC teams. The code   */
-/* must be accompanied by the FIRST BSD license file in $(WIND_BASE)/WPILib.  */
+/* must be accompanied by the FIRST BSD license file in the root directory of */
+/* the project.                                                               */
 /*----------------------------------------------------------------------------*/
+
 #pragma once
 
 #include "InterruptableSensorBase.h"
diff --git a/wpilibc/Athena/include/DoubleSolenoid.h b/wpilibc/Athena/include/DoubleSolenoid.h
index fd20397..9d1f033 100644
--- a/wpilibc/Athena/include/DoubleSolenoid.h
+++ b/wpilibc/Athena/include/DoubleSolenoid.h
@@ -1,9 +1,10 @@
 /*----------------------------------------------------------------------------*/
-/* Copyright (c) FIRST 2008. All Rights Reserved.
- */
+/* Copyright (c) FIRST 2008-2016. All Rights Reserved.                        */
 /* Open Source Software - may be modified and shared by FRC teams. The code   */
-/* must be accompanied by the FIRST BSD license file in $(WIND_BASE)/WPILib.  */
+/* must be accompanied by the FIRST BSD license file in the root directory of */
+/* the project.                                                               */
 /*----------------------------------------------------------------------------*/
+
 #pragma once
 
 #include "SolenoidBase.h"
diff --git a/wpilibc/Athena/include/DriverStation.h b/wpilibc/Athena/include/DriverStation.h
index 23ee095..b98c6ec 100644
--- a/wpilibc/Athena/include/DriverStation.h
+++ b/wpilibc/Athena/include/DriverStation.h
@@ -1,8 +1,10 @@
 /*----------------------------------------------------------------------------*/
-/* Copyright (c) FIRST 2008. All Rights Reserved.                             */
+/* Copyright (c) FIRST 2008-2016. All Rights Reserved.                        */
 /* Open Source Software - may be modified and shared by FRC teams. The code   */
-/* must be accompanied by the FIRST BSD license file in $(WIND_BASE)/WPILib.  */
+/* must be accompanied by the FIRST BSD license file in the root directory of */
+/* the project.                                                               */
 /*----------------------------------------------------------------------------*/
+
 #pragma once
 
 #include "SensorBase.h"
@@ -29,6 +31,10 @@
   virtual ~DriverStation();
   static DriverStation &GetInstance();
   static void ReportError(std::string error);
+  static void ReportWarning(std::string error);
+  static void ReportError(bool is_error, int32_t code, const std::string& error,
+                          const std::string& location,
+                          const std::string& stack);
 
   static const uint32_t kJoystickPorts = 6;
 
@@ -95,6 +101,7 @@
  private:
   static DriverStation *m_instance;
   void ReportJoystickUnpluggedError(std::string message);
+  void ReportJoystickUnpluggedWarning(std::string message);
   void Run();
 
   HALJoystickAxes m_joystickAxes[kJoystickPorts];
diff --git a/wpilibc/Athena/include/Encoder.h b/wpilibc/Athena/include/Encoder.h
index 76bfaf9..5c692f0 100644
--- a/wpilibc/Athena/include/Encoder.h
+++ b/wpilibc/Athena/include/Encoder.h
@@ -1,9 +1,10 @@
 /*----------------------------------------------------------------------------*/
-/* Copyright (c) FIRST 2008. All Rights Reserved.
- */
+/* Copyright (c) FIRST 2008-2016. All Rights Reserved.                        */
 /* Open Source Software - may be modified and shared by FRC teams. The code   */
-/* must be accompanied by the FIRST BSD license file in $(WIND_BASE)/WPILib.  */
+/* must be accompanied by the FIRST BSD license file in the root directory of */
+/* the project.                                                               */
 /*----------------------------------------------------------------------------*/
+
 #pragma once
 
 #include "HAL/HAL.hpp"
diff --git a/wpilibc/Athena/include/GearTooth.h b/wpilibc/Athena/include/GearTooth.h
index 3889f9c..070f397 100644
--- a/wpilibc/Athena/include/GearTooth.h
+++ b/wpilibc/Athena/include/GearTooth.h
@@ -1,9 +1,10 @@
 /*----------------------------------------------------------------------------*/
-/* Copyright (c) FIRST 2008. All Rights Reserved.
- */
+/* Copyright (c) FIRST 2008-2016. All Rights Reserved.                        */
 /* Open Source Software - may be modified and shared by FRC teams. The code   */
-/* must be accompanied by the FIRST BSD license file in $(WIND_BASE)/WPILib.  */
+/* must be accompanied by the FIRST BSD license file in the root directory of */
+/* the project.                                                               */
 /*----------------------------------------------------------------------------*/
+
 #pragma once
 
 #include "Counter.h"
diff --git a/wpilibc/Athena/include/GyroBase.h b/wpilibc/Athena/include/GyroBase.h
deleted file mode 100644
index 6ed44aa..0000000
--- a/wpilibc/Athena/include/GyroBase.h
+++ /dev/null
@@ -1,36 +0,0 @@
-/*----------------------------------------------------------------------------*/
-/* Copyright (c) FIRST 2008. All Rights Reserved.
- */
-/* Open Source Software - may be modified and shared by FRC teams. The code   */
-/* must be accompanied by the FIRST BSD license file in $(WIND_BASE)/WPILib.  */
-/*----------------------------------------------------------------------------*/
-#pragma once
-
-#include "SensorBase.h"
-#include "PIDSource.h"
-#include "interfaces/Gyro.h"
-#include "LiveWindow/LiveWindowSendable.h"
-
-#include <memory>
-
-/**
- * GyroBase is the common base class for Gyro implementations such as
- * AnalogGyro.
- */
-class GyroBase : public Gyro, public SensorBase, public PIDSource, public LiveWindowSendable {
- public:
-  virtual ~GyroBase() = default;
-
-  // PIDSource interface
-  double PIDGet() override;
-
-  void UpdateTable() override;
-  void StartLiveWindowMode() override;
-  void StopLiveWindowMode() override;
-  std::string GetSmartDashboardType() const override;
-  void InitTable(std::shared_ptr<ITable> subTable) override;
-  std::shared_ptr<ITable> GetTable() const override;
-
- private:
-  std::shared_ptr<ITable> m_table;
-};
diff --git a/wpilibc/Athena/include/I2C.h b/wpilibc/Athena/include/I2C.h
index 89041e7..3267032 100644
--- a/wpilibc/Athena/include/I2C.h
+++ b/wpilibc/Athena/include/I2C.h
@@ -1,9 +1,10 @@
 /*----------------------------------------------------------------------------*/
-/* Copyright (c) FIRST 2008. All Rights Reserved.
- */
+/* Copyright (c) FIRST 2008-2016. All Rights Reserved.                        */
 /* Open Source Software - may be modified and shared by FRC teams. The code   */
-/* must be accompanied by the FIRST BSD license file in $(WIND_BASE)/WPILib.  */
+/* must be accompanied by the FIRST BSD license file in the root directory of */
+/* the project.                                                               */
 /*----------------------------------------------------------------------------*/
+
 #pragma once
 
 #include "SensorBase.h"
diff --git a/wpilibc/Athena/include/Internal/HardwareHLReporting.h b/wpilibc/Athena/include/Internal/HardwareHLReporting.h
index a91a20d..b411ecf 100644
--- a/wpilibc/Athena/include/Internal/HardwareHLReporting.h
+++ b/wpilibc/Athena/include/Internal/HardwareHLReporting.h
@@ -1,3 +1,9 @@
+/*----------------------------------------------------------------------------*/
+/* Copyright (c) FIRST 2016. All Rights Reserved.                             */
+/* Open Source Software - may be modified and shared by FRC teams. The code   */
+/* must be accompanied by the FIRST BSD license file in the root directory of */
+/* the project.                                                               */
+/*----------------------------------------------------------------------------*/
 
 #include "HLUsageReporting.h"
 
diff --git a/wpilibc/Athena/include/InterruptableSensorBase.h b/wpilibc/Athena/include/InterruptableSensorBase.h
index d77ae2f..708089b 100644
--- a/wpilibc/Athena/include/InterruptableSensorBase.h
+++ b/wpilibc/Athena/include/InterruptableSensorBase.h
@@ -1,9 +1,10 @@
 /*----------------------------------------------------------------------------*/
-/* Copyright (c) FIRST 2008. All Rights Reserved.
- */
+/* Copyright (c) FIRST 2008-2016. All Rights Reserved.                        */
 /* Open Source Software - may be modified and shared by FRC teams. The code   */
-/* must be accompanied by the FIRST BSD license file in $(WIND_BASE)/WPILib.  */
+/* must be accompanied by the FIRST BSD license file in the root directory of */
+/* the project.                                                               */
 /*----------------------------------------------------------------------------*/
+
 #pragma once
 
 #include "HAL/HAL.hpp"
diff --git a/wpilibc/Athena/include/IterativeRobot.h b/wpilibc/Athena/include/IterativeRobot.h
index ccea4f8..acba235 100644
--- a/wpilibc/Athena/include/IterativeRobot.h
+++ b/wpilibc/Athena/include/IterativeRobot.h
@@ -1,9 +1,10 @@
 /*----------------------------------------------------------------------------*/
-/* Copyright (c) FIRST 2008. All Rights Reserved.
- */
+/* Copyright (c) FIRST 2008-2016. All Rights Reserved.                        */
 /* Open Source Software - may be modified and shared by FRC teams. The code   */
-/* must be accompanied by the FIRST BSD license file in $(WIND_BASE)/WPILib.  */
+/* must be accompanied by the FIRST BSD license file in the root directory of */
+/* the project.                                                               */
 /*----------------------------------------------------------------------------*/
+
 #pragma once
 
 #include "Timer.h"
diff --git a/wpilibc/Athena/include/Jaguar.h b/wpilibc/Athena/include/Jaguar.h
index feb00c7..c129559 100644
--- a/wpilibc/Athena/include/Jaguar.h
+++ b/wpilibc/Athena/include/Jaguar.h
@@ -1,9 +1,10 @@
 /*----------------------------------------------------------------------------*/
-/* Copyright (c) FIRST 2008. All Rights Reserved.
- */
+/* Copyright (c) FIRST 2008-2016. All Rights Reserved.                        */
 /* Open Source Software - may be modified and shared by FRC teams. The code   */
-/* must be accompanied by the FIRST BSD license file in $(WIND_BASE)/WPILib.  */
+/* must be accompanied by the FIRST BSD license file in the root directory of */
+/* the project.                                                               */
 /*----------------------------------------------------------------------------*/
+
 #pragma once
 
 #include "SafePWM.h"
@@ -20,6 +21,7 @@
   virtual void Set(float value, uint8_t syncGroup = 0) override;
   virtual float Get() const override;
   virtual void Disable() override;
+  virtual void StopMotor() override;
 
   virtual void PIDWrite(float output) override;
   virtual void SetInverted(bool isInverted) override;
diff --git a/wpilibc/Athena/include/Joystick.h b/wpilibc/Athena/include/Joystick.h
index b8ea292..fdd4d7d 100644
--- a/wpilibc/Athena/include/Joystick.h
+++ b/wpilibc/Athena/include/Joystick.h
@@ -1,8 +1,8 @@
 /*----------------------------------------------------------------------------*/
-/* Copyright (c) FIRST 2008. All Rights Reserved.
- */
+/* Copyright (c) FIRST 2008-2016. All Rights Reserved.                        */
 /* Open Source Software - may be modified and shared by FRC teams. The code   */
-/* must be accompanied by the FIRST BSD license file in $(WIND_BASE)/WPILib.  */
+/* must be accompanied by the FIRST BSD license file in the root directory of */
+/* the project.                                                               */
 /*----------------------------------------------------------------------------*/
 
 #ifndef JOYSTICK_H_
diff --git a/wpilibc/Athena/include/MotorSafety.h b/wpilibc/Athena/include/MotorSafety.h
index 6963ae7..373fddf 100644
--- a/wpilibc/Athena/include/MotorSafety.h
+++ b/wpilibc/Athena/include/MotorSafety.h
@@ -1,9 +1,10 @@
 /*----------------------------------------------------------------------------*/
-/* Copyright (c) FIRST 2008. All Rights Reserved.
- */
+/* Copyright (c) FIRST 2008-2016. All Rights Reserved.                        */
 /* Open Source Software - may be modified and shared by FRC teams. The code   */
-/* must be accompanied by the FIRST BSD license file in $(WIND_BASE)/WPILib.  */
+/* must be accompanied by the FIRST BSD license file in the root directory of */
+/* the project.                                                               */
 /*----------------------------------------------------------------------------*/
+
 #pragma once
 
 #define DEFAULT_SAFETY_EXPIRATION 0.1
diff --git a/wpilibc/Athena/include/MotorSafetyHelper.h b/wpilibc/Athena/include/MotorSafetyHelper.h
index bbe7658..f124605 100644
--- a/wpilibc/Athena/include/MotorSafetyHelper.h
+++ b/wpilibc/Athena/include/MotorSafetyHelper.h
@@ -1,9 +1,10 @@
 /*----------------------------------------------------------------------------*/
-/* Copyright (c) FIRST 2008. All Rights Reserved.
- */
+/* Copyright (c) FIRST 2008-2016. All Rights Reserved.                        */
 /* Open Source Software - may be modified and shared by FRC teams. The code   */
-/* must be accompanied by the FIRST BSD license file in $(WIND_BASE)/WPILib.  */
+/* must be accompanied by the FIRST BSD license file in the root directory of */
+/* the project.                                                               */
 /*----------------------------------------------------------------------------*/
+
 #pragma once
 
 #include "ErrorBase.h"
diff --git a/wpilibc/Athena/include/Notifier.h b/wpilibc/Athena/include/Notifier.h
new file mode 100644
index 0000000..070853f
--- /dev/null
+++ b/wpilibc/Athena/include/Notifier.h
@@ -0,0 +1,57 @@
+/*----------------------------------------------------------------------------*/
+/* Copyright (c) FIRST 2008-2016. All Rights Reserved.                        */
+/* Open Source Software - may be modified and shared by FRC teams. The code   */
+/* must be accompanied by the FIRST BSD license file in the root directory of */
+/* the project.                                                               */
+/*----------------------------------------------------------------------------*/
+
+#pragma once
+
+#include <functional>
+
+#include "ErrorBase.h"
+#include "HAL/cpp/priority_mutex.h"
+
+typedef std::function<void()> TimerEventHandler;
+
+class Notifier : public ErrorBase {
+ public:
+  explicit Notifier(TimerEventHandler handler);
+
+  template <typename Callable, typename Arg, typename... Args>
+  Notifier(Callable&& f, Arg&& arg, Args&&... args)
+      : Notifier(std::bind(std::forward<Callable>(f),
+                           std::forward<Arg>(arg),
+                           std::forward<Args>(args)...)) {}
+
+  virtual ~Notifier();
+
+  Notifier(const Notifier&) = delete;
+  Notifier& operator=(const Notifier&) = delete;
+
+  void StartSingle(double delay);
+  void StartPeriodic(double period);
+  void Stop();
+
+ private:
+  // update the HAL alarm
+  void UpdateAlarm();
+  // HAL callback
+  static void Notify(uint64_t currentTimeInt, void *param);
+
+  // held while updating process information
+  priority_mutex m_processMutex;
+  // HAL handle
+  void *m_notifier;
+  // address of the handler
+  TimerEventHandler m_handler;
+  // the absolute expiration time
+  double m_expirationTime = 0;
+  // the relative time (either periodic or single)
+  double m_period = 0;
+  // true if this is a periodic event
+  bool m_periodic = false;
+
+  // held by interrupt manager task while handler call is in progress
+  priority_mutex m_handlerMutex;
+};
diff --git a/wpilibc/Athena/include/PWM.h b/wpilibc/Athena/include/PWM.h
index b7120c0..8f9976a 100644
--- a/wpilibc/Athena/include/PWM.h
+++ b/wpilibc/Athena/include/PWM.h
@@ -1,9 +1,10 @@
 /*----------------------------------------------------------------------------*/
-/* Copyright (c) FIRST 2008. All Rights Reserved.
- */
+/* Copyright (c) FIRST 2008-2016. All Rights Reserved.                        */
 /* Open Source Software - may be modified and shared by FRC teams. The code   */
-/* must be accompanied by the FIRST BSD license file in $(WIND_BASE)/WPILib.  */
+/* must be accompanied by the FIRST BSD license file in the root directory of */
+/* the project.                                                               */
 /*----------------------------------------------------------------------------*/
+
 #pragma once
 
 #include "SensorBase.h"
diff --git a/wpilibc/Athena/include/PowerDistributionPanel.h b/wpilibc/Athena/include/PowerDistributionPanel.h
index 9a1bd7c..b9769ec 100644
--- a/wpilibc/Athena/include/PowerDistributionPanel.h
+++ b/wpilibc/Athena/include/PowerDistributionPanel.h
@@ -1,8 +1,8 @@
 /*----------------------------------------------------------------------------*/
-/* Copyright (c) FIRST 2014. All Rights Reserved.
- */
+/* Copyright (c) FIRST 2014-2016. All Rights Reserved.                        */
 /* Open Source Software - may be modified and shared by FRC teams. The code   */
-/* must be accompanied by the FIRST BSD license file in $(WIND_BASE)/WPILib.  */
+/* must be accompanied by the FIRST BSD license file in the root directory of */
+/* the project.                                                               */
 /*----------------------------------------------------------------------------*/
 
 #pragma once
diff --git a/wpilibc/Athena/include/Preferences.h b/wpilibc/Athena/include/Preferences.h
index a2c3bc4..1e1beff 100644
--- a/wpilibc/Athena/include/Preferences.h
+++ b/wpilibc/Athena/include/Preferences.h
@@ -1,9 +1,10 @@
 /*----------------------------------------------------------------------------*/
-/* Copyright (c) FIRST 2011. All Rights Reserved.
- */
+/* Copyright (c) FIRST 2011-2016. All Rights Reserved.                        */
 /* Open Source Software - may be modified and shared by FRC teams. The code   */
-/* must be accompanied by the FIRST BSD license file in $(WIND_BASE)/WPILib.  */
+/* must be accompanied by the FIRST BSD license file in the root directory of */
+/* the project.                                                               */
 /*----------------------------------------------------------------------------*/
+
 #pragma once
 
 #include "ErrorBase.h"
diff --git a/wpilibc/Athena/include/Relay.h b/wpilibc/Athena/include/Relay.h
index f582221..a9bd26a 100644
--- a/wpilibc/Athena/include/Relay.h
+++ b/wpilibc/Athena/include/Relay.h
@@ -1,9 +1,10 @@
 /*----------------------------------------------------------------------------*/
-/* Copyright (c) FIRST 2008. All Rights Reserved.
- */
+/* Copyright (c) FIRST 2008-2016. All Rights Reserved.                        */
 /* Open Source Software - may be modified and shared by FRC teams. The code   */
-/* must be accompanied by the FIRST BSD license file in $(WIND_BASE)/WPILib.  */
+/* must be accompanied by the FIRST BSD license file in the root directory of */
+/* the project.                                                               */
 /*----------------------------------------------------------------------------*/
+
 #pragma once
 
 #include "MotorSafety.h"
diff --git a/wpilibc/Athena/include/RobotBase.h b/wpilibc/Athena/include/RobotBase.h
index 2fcd146..b6626b9 100644
--- a/wpilibc/Athena/include/RobotBase.h
+++ b/wpilibc/Athena/include/RobotBase.h
@@ -1,9 +1,10 @@
 /*----------------------------------------------------------------------------*/
-/* Copyright (c) FIRST 2008. All Rights Reserved.
- */
+/* Copyright (c) FIRST 2008-2016. All Rights Reserved.                        */
 /* Open Source Software - may be modified and shared by FRC teams. The code   */
-/* must be accompanied by the FIRST BSD license file in $(WIND_BASE)/WPILib.  */
+/* must be accompanied by the FIRST BSD license file in the root directory of */
+/* the project.                                                               */
 /*----------------------------------------------------------------------------*/
+
 #pragma once
 
 #include "Base.h"
diff --git a/wpilibc/Athena/include/RobotDrive.h b/wpilibc/Athena/include/RobotDrive.h
index d91e80d..547d06a 100644
--- a/wpilibc/Athena/include/RobotDrive.h
+++ b/wpilibc/Athena/include/RobotDrive.h
@@ -1,9 +1,10 @@
 /*----------------------------------------------------------------------------*/
-/* Copyright (c) FIRST 2008. All Rights Reserved.
- */
+/* Copyright (c) FIRST 2008-2016. All Rights Reserved.                        */
 /* Open Source Software - may be modified and shared by FRC teams. The code   */
-/* must be accompanied by the FIRST BSD license file in $(WIND_BASE)/WPILib.  */
+/* must be accompanied by the FIRST BSD license file in the root directory of */
+/* the project.                                                               */
 /*----------------------------------------------------------------------------*/
+
 #pragma once
 
 #include "ErrorBase.h"
diff --git a/wpilibc/Athena/include/SD540.h b/wpilibc/Athena/include/SD540.h
new file mode 100644
index 0000000..9e98678
--- /dev/null
+++ b/wpilibc/Athena/include/SD540.h
@@ -0,0 +1,33 @@
+/*----------------------------------------------------------------------------*/
+/* Copyright (c) FIRST 2008-2016. All Rights Reserved.                        */
+/* Open Source Software - may be modified and shared by FRC teams. The code   */
+/* must be accompanied by the FIRST BSD license file in the root directory of */
+/* the project.                                                               */
+/*----------------------------------------------------------------------------*/
+
+#pragma once
+
+#include "SafePWM.h"
+#include "SpeedController.h"
+#include "PIDOutput.h"
+
+/**
+ * Mindsensors SD540 Speed Controller
+ */
+class SD540 : public SafePWM, public SpeedController {
+ public:
+  explicit SD540(uint32_t channel);
+  virtual ~SD540() = default;
+  virtual void Set(float value, uint8_t syncGroup = 0) override;
+  virtual float Get() const override;
+  virtual void Disable() override;
+  virtual void StopMotor() override;
+
+  virtual void PIDWrite(float output) override;
+
+  virtual void SetInverted(bool isInverted) override;
+  virtual bool GetInverted() const override;
+
+ private:
+  bool m_isInverted = false;
+};
diff --git a/wpilibc/Athena/include/SPI.h b/wpilibc/Athena/include/SPI.h
index 7b33dd7..b6d68f3 100644
--- a/wpilibc/Athena/include/SPI.h
+++ b/wpilibc/Athena/include/SPI.h
@@ -1,9 +1,10 @@
 /*----------------------------------------------------------------------------*/
-/* Copyright (c) FIRST 2008. All Rights Reserved.
- */
+/* Copyright (c) FIRST 2008-2016. All Rights Reserved.                        */
 /* Open Source Software - may be modified and shared by FRC teams. The code   */
-/* must be accompanied by the FIRST BSD license file in $(WIND_BASE)/WPILib.  */
+/* must be accompanied by the FIRST BSD license file in the root directory of */
+/* the project.                                                               */
 /*----------------------------------------------------------------------------*/
+
 #pragma once
 
 #include "HAL/HAL.hpp"
diff --git a/wpilibc/Athena/include/SafePWM.h b/wpilibc/Athena/include/SafePWM.h
index f364626..3c908c7 100644
--- a/wpilibc/Athena/include/SafePWM.h
+++ b/wpilibc/Athena/include/SafePWM.h
@@ -1,9 +1,10 @@
 /*----------------------------------------------------------------------------*/
-/* Copyright (c) FIRST 2008. All Rights Reserved.
- */
+/* Copyright (c) FIRST 2008-2016. All Rights Reserved.                        */
 /* Open Source Software - may be modified and shared by FRC teams. The code   */
-/* must be accompanied by the FIRST BSD license file in $(WIND_BASE)/WPILib.  */
+/* must be accompanied by the FIRST BSD license file in the root directory of */
+/* the project.                                                               */
 /*----------------------------------------------------------------------------*/
+
 #pragma once
 
 #include "MotorSafety.h"
diff --git a/wpilibc/Athena/include/SampleRobot.h b/wpilibc/Athena/include/SampleRobot.h
index 64ca32c..61f8bc0 100644
--- a/wpilibc/Athena/include/SampleRobot.h
+++ b/wpilibc/Athena/include/SampleRobot.h
@@ -1,9 +1,10 @@
 /*----------------------------------------------------------------------------*/
-/* Copyright (c) FIRST 2008. All Rights Reserved.
- */
+/* Copyright (c) FIRST 2008-2016. All Rights Reserved.                        */
 /* Open Source Software - may be modified and shared by FRC teams. The code   */
-/* must be accompanied by the FIRST BSD license file in $(WIND_BASE)/WPILib.  */
+/* must be accompanied by the FIRST BSD license file in the root directory of */
+/* the project.                                                               */
 /*----------------------------------------------------------------------------*/
+
 #pragma once
 
 #include "RobotBase.h"
diff --git a/wpilibc/Athena/include/SerialPort.h b/wpilibc/Athena/include/SerialPort.h
index 3cd1c1c..e94af87 100644
--- a/wpilibc/Athena/include/SerialPort.h
+++ b/wpilibc/Athena/include/SerialPort.h
@@ -1,9 +1,10 @@
 /*----------------------------------------------------------------------------*/
-/* Copyright (c) FIRST 2008. All Rights Reserved.
- */
+/* Copyright (c) FIRST 2008-2016. All Rights Reserved.                        */
 /* Open Source Software - may be modified and shared by FRC teams. The code   */
-/* must be accompanied by the FIRST BSD license file in $(WIND_BASE)/WPILib.  */
+/* must be accompanied by the FIRST BSD license file in the root directory of */
+/* the project.                                                               */
 /*----------------------------------------------------------------------------*/
+
 #pragma once
 
 #include "ErrorBase.h"
diff --git a/wpilibc/Athena/include/Servo.h b/wpilibc/Athena/include/Servo.h
index 040d9d1..f33a82e 100644
--- a/wpilibc/Athena/include/Servo.h
+++ b/wpilibc/Athena/include/Servo.h
@@ -1,9 +1,10 @@
 /*----------------------------------------------------------------------------*/
-/* Copyright (c) FIRST 2008. All Rights Reserved.
- */
+/* Copyright (c) FIRST 2008-2016. All Rights Reserved.                        */
 /* Open Source Software - may be modified and shared by FRC teams. The code   */
-/* must be accompanied by the FIRST BSD license file in $(WIND_BASE)/WPILib.  */
+/* must be accompanied by the FIRST BSD license file in the root directory of */
+/* the project.                                                               */
 /*----------------------------------------------------------------------------*/
+
 #pragma once
 
 #include "SafePWM.h"
diff --git a/wpilibc/Athena/include/Solenoid.h b/wpilibc/Athena/include/Solenoid.h
index dc3d53a..d032930 100644
--- a/wpilibc/Athena/include/Solenoid.h
+++ b/wpilibc/Athena/include/Solenoid.h
@@ -1,9 +1,10 @@
 /*----------------------------------------------------------------------------*/
-/* Copyright (c) FIRST 2008. All Rights Reserved.
- */
+/* Copyright (c) FIRST 2008-2016. All Rights Reserved.                        */
 /* Open Source Software - may be modified and shared by FRC teams. The code   */
-/* must be accompanied by the FIRST BSD license file in $(WIND_BASE)/WPILib.  */
+/* must be accompanied by the FIRST BSD license file in the root directory of */
+/* the project.                                                               */
 /*----------------------------------------------------------------------------*/
+
 #pragma once
 
 #include "SolenoidBase.h"
diff --git a/wpilibc/Athena/include/SolenoidBase.h b/wpilibc/Athena/include/SolenoidBase.h
index 159beeb..0a71de2 100644
--- a/wpilibc/Athena/include/SolenoidBase.h
+++ b/wpilibc/Athena/include/SolenoidBase.h
@@ -1,9 +1,10 @@
 /*----------------------------------------------------------------------------*/
-/* Copyright (c) FIRST 2008. All Rights Reserved.
- */
+/* Copyright (c) FIRST 2008-2016. All Rights Reserved.                        */
 /* Open Source Software - may be modified and shared by FRC teams. The code   */
-/* must be accompanied by the FIRST BSD license file in $(WIND_BASE)/WPILib.  */
+/* must be accompanied by the FIRST BSD license file in the root directory of */
+/* the project.                                                               */
 /*----------------------------------------------------------------------------*/
+
 #pragma once
 
 #include "Resource.h"
diff --git a/wpilibc/Athena/include/Spark.h b/wpilibc/Athena/include/Spark.h
new file mode 100644
index 0000000..d4859ce
--- /dev/null
+++ b/wpilibc/Athena/include/Spark.h
@@ -0,0 +1,33 @@
+/*----------------------------------------------------------------------------*/
+/* Copyright (c) FIRST 2008-2016. All Rights Reserved.                        */
+/* Open Source Software - may be modified and shared by FRC teams. The code   */
+/* must be accompanied by the FIRST BSD license file in the root directory of */
+/* the project.                                                               */
+/*----------------------------------------------------------------------------*/
+
+#pragma once
+
+#include "SafePWM.h"
+#include "SpeedController.h"
+#include "PIDOutput.h"
+
+/**
+ * REV Robotics Speed Controller
+ */
+class Spark : public SafePWM, public SpeedController {
+ public:
+  explicit Spark(uint32_t channel);
+  virtual ~Spark() = default;
+  virtual void Set(float value, uint8_t syncGroup = 0) override;
+  virtual float Get() const override;
+  virtual void Disable() override;
+  virtual void StopMotor() override;
+
+  virtual void PIDWrite(float output) override;
+
+  virtual void SetInverted(bool isInverted) override;
+  virtual bool GetInverted() const override;
+
+ private:
+  bool m_isInverted = false;
+};
diff --git a/wpilibc/Athena/include/SpeedController.h b/wpilibc/Athena/include/SpeedController.h
index a87ed2b..47ba843 100644
--- a/wpilibc/Athena/include/SpeedController.h
+++ b/wpilibc/Athena/include/SpeedController.h
@@ -1,9 +1,10 @@
 /*----------------------------------------------------------------------------*/
-/* Copyright (c) FIRST 2008. All Rights Reserved.
- */
+/* Copyright (c) FIRST 2008-2016. All Rights Reserved.                        */
 /* Open Source Software - may be modified and shared by FRC teams. The code   */
-/* must be accompanied by the FIRST BSD license file in $(WIND_BASE)/WPILib.  */
+/* must be accompanied by the FIRST BSD license file in the root directory of */
+/* the project.                                                               */
 /*----------------------------------------------------------------------------*/
+
 #pragma once
 
 #include "HAL/HAL.hpp"
@@ -47,4 +48,9 @@
    * @return isInverted The state of inversion, true is inverted.
    */
   virtual bool GetInverted() const = 0;
+
+  /**
+   * Common interface to stop the motor until Set is called again.
+   */
+  virtual void StopMotor() = 0;
 };
diff --git a/wpilibc/Athena/include/Talon.h b/wpilibc/Athena/include/Talon.h
index 38764b8..0a88012 100644
--- a/wpilibc/Athena/include/Talon.h
+++ b/wpilibc/Athena/include/Talon.h
@@ -1,9 +1,10 @@
 /*----------------------------------------------------------------------------*/
-/* Copyright (c) FIRST 2008. All Rights Reserved.
- */
+/* Copyright (c) FIRST 2008-2016. All Rights Reserved.                        */
 /* Open Source Software - may be modified and shared by FRC teams. The code   */
-/* must be accompanied by the FIRST BSD license file in $(WIND_BASE)/WPILib.  */
+/* must be accompanied by the FIRST BSD license file in the root directory of */
+/* the project.                                                               */
 /*----------------------------------------------------------------------------*/
+
 #pragma once
 
 #include "SafePWM.h"
@@ -24,6 +25,7 @@
   virtual void PIDWrite(float output) override;
   virtual void SetInverted(bool isInverted) override;
   virtual bool GetInverted() const override;
+  virtual void StopMotor() override;
 
  private:
   bool m_isInverted = false;
diff --git a/wpilibc/Athena/include/TalonSRX.h b/wpilibc/Athena/include/TalonSRX.h
index 8819723..61b1fd8 100644
--- a/wpilibc/Athena/include/TalonSRX.h
+++ b/wpilibc/Athena/include/TalonSRX.h
@@ -1,9 +1,10 @@
 /*----------------------------------------------------------------------------*/
-/* Copyright (c) FIRST 2008. All Rights Reserved.
- */
+/* Copyright (c) FIRST 2008-2016. All Rights Reserved.                        */
 /* Open Source Software - may be modified and shared by FRC teams. The code   */
-/* must be accompanied by the FIRST BSD license file in $(WIND_BASE)/WPILib.  */
+/* must be accompanied by the FIRST BSD license file in the root directory of */
+/* the project.                                                               */
 /*----------------------------------------------------------------------------*/
+
 #pragma once
 
 #include "SafePWM.h"
@@ -21,6 +22,7 @@
   virtual void Set(float value, uint8_t syncGroup = 0) override;
   virtual float Get() const override;
   virtual void Disable() override;
+  virtual void StopMotor() override;
 
   virtual void PIDWrite(float output) override;
   virtual void SetInverted(bool isInverted) override;
diff --git a/wpilibc/Athena/include/USBCamera.h b/wpilibc/Athena/include/USBCamera.h
index d02c5d3..522e889 100644
--- a/wpilibc/Athena/include/USBCamera.h
+++ b/wpilibc/Athena/include/USBCamera.h
@@ -1,9 +1,10 @@
 /*----------------------------------------------------------------------------*/
-/* Copyright (c) FIRST 2014. All Rights Reserved.                             */
+/* Copyright (c) FIRST 2014-2016. All Rights Reserved.                        */
 /* Open Source Software - may be modified and shared by FRC teams. The code   */
 /* must be accompanied by the FIRST BSD license file in the root directory of */
 /* the project.                                                               */
 /*----------------------------------------------------------------------------*/
+
 #pragma once
 
 #include "ErrorBase.h"
diff --git a/wpilibc/Athena/include/Ultrasonic.h b/wpilibc/Athena/include/Ultrasonic.h
index 9f36171..d586173 100644
--- a/wpilibc/Athena/include/Ultrasonic.h
+++ b/wpilibc/Athena/include/Ultrasonic.h
@@ -1,9 +1,10 @@
 /*----------------------------------------------------------------------------*/
-/* Copyright (c) FIRST 2008. All Rights Reserved.
- */
+/* Copyright (c) FIRST 2008-2016. All Rights Reserved.                        */
 /* Open Source Software - may be modified and shared by FRC teams. The code   */
-/* must be accompanied by the FIRST BSD license file in $(WIND_BASE)/WPILib.  */
+/* must be accompanied by the FIRST BSD license file in the root directory of */
+/* the project.                                                               */
 /*----------------------------------------------------------------------------*/
+
 #pragma once
 
 #include "SensorBase.h"
@@ -12,10 +13,8 @@
 #include "PIDSource.h"
 #include "LiveWindow/LiveWindowSendable.h"
 #include <atomic>
-
-#include "HAL/cpp/priority_mutex.h"
-
 #include <memory>
+#include <set>
 
 class DigitalInput;
 class DigitalOutput;
@@ -80,24 +79,22 @@
 
   static void UltrasonicChecker();
 
-  static constexpr double kPingTime =
-      10 * 1e-6;  ///< Time (sec) for the ping trigger pulse.
-  static const uint32_t kPriority =
-      64;  ///< Priority that the ultrasonic round robin task runs.
-  static constexpr double kMaxUltrasonicTime =
-      0.1;  ///< Max time (ms) between readings.
+  // Time (sec) for the ping trigger pulse.
+  static constexpr double kPingTime = 10 * 1e-6;
+  // Priority that the ultrasonic round robin task runs.
+  static const uint32_t kPriority = 64;
+  // Max time (ms) between readings.
+  static constexpr double kMaxUltrasonicTime = 0.1;
   static constexpr double kSpeedOfSoundInchesPerSec = 1130.0 * 12.0;
 
   static Task m_task;  // task doing the round-robin automatic sensing
-  static Ultrasonic *m_firstSensor;  // head of the ultrasonic sensor list
+  static std::set<Ultrasonic*> m_sensors; // ultrasonic sensors
   static std::atomic<bool> m_automaticEnabled; // automatic round robin mode
-  static priority_mutex m_mutex;  // synchronize access to the list of sensors
 
   std::shared_ptr<DigitalOutput> m_pingChannel;
   std::shared_ptr<DigitalInput> m_echoChannel;
   bool m_enabled = false;
   Counter m_counter;
-  Ultrasonic *m_nextSensor;
   DistanceUnit m_units;
 
   std::shared_ptr<ITable> m_table;
diff --git a/wpilibc/Athena/include/Victor.h b/wpilibc/Athena/include/Victor.h
index 755955f..2aa2ecf 100644
--- a/wpilibc/Athena/include/Victor.h
+++ b/wpilibc/Athena/include/Victor.h
@@ -1,9 +1,10 @@
 /*----------------------------------------------------------------------------*/
-/* Copyright (c) FIRST 2008. All Rights Reserved.
- */
+/* Copyright (c) FIRST 2008-2016. All Rights Reserved.                        */
 /* Open Source Software - may be modified and shared by FRC teams. The code   */
-/* must be accompanied by the FIRST BSD license file in $(WIND_BASE)/WPILib.  */
+/* must be accompanied by the FIRST BSD license file in the root directory of */
+/* the project.                                                               */
 /*----------------------------------------------------------------------------*/
+
 #pragma once
 
 #include "SafePWM.h"
@@ -23,6 +24,7 @@
   virtual void Set(float value, uint8_t syncGroup = 0) override;
   virtual float Get() const override;
   virtual void Disable() override;
+  virtual void StopMotor() override;
 
   virtual void PIDWrite(float output) override;
 
diff --git a/wpilibc/Athena/include/VictorSP.h b/wpilibc/Athena/include/VictorSP.h
index 978cd0a..a53ccfd 100644
--- a/wpilibc/Athena/include/VictorSP.h
+++ b/wpilibc/Athena/include/VictorSP.h
@@ -1,9 +1,10 @@
 /*----------------------------------------------------------------------------*/
-/* Copyright (c) FIRST 2008. All Rights Reserved.
- */
+/* Copyright (c) FIRST 2008-2016. All Rights Reserved.                        */
 /* Open Source Software - may be modified and shared by FRC teams. The code   */
-/* must be accompanied by the FIRST BSD license file in $(WIND_BASE)/WPILib.  */
+/* must be accompanied by the FIRST BSD license file in the root directory of */
+/* the project.                                                               */
 /*----------------------------------------------------------------------------*/
+
 #pragma once
 
 #include "SafePWM.h"
@@ -20,6 +21,7 @@
   virtual void Set(float value, uint8_t syncGroup = 0) override;
   virtual float Get() const override;
   virtual void Disable() override;
+  virtual void StopMotor() override;
 
   virtual void PIDWrite(float output) override;
 
diff --git a/wpilibc/Athena/include/Vision/AxisCamera.h b/wpilibc/Athena/include/Vision/AxisCamera.h
index b315938..9252442 100644
--- a/wpilibc/Athena/include/Vision/AxisCamera.h
+++ b/wpilibc/Athena/include/Vision/AxisCamera.h
@@ -1,7 +1,8 @@
 /*----------------------------------------------------------------------------*/
-/* Copyright (c) FIRST 2014. All Rights Reserved.                             */
+/* Copyright (c) FIRST 2014-2016. All Rights Reserved.                        */
 /* Open Source Software - may be modified and shared by FRC teams. The code   */
-/* must be accompanied by the FIRST BSD license file in $(WIND_BASE)/WPILib.  */
+/* must be accompanied by the FIRST BSD license file in the root directory of */
+/* the project.                                                               */
 /*----------------------------------------------------------------------------*/
 
 #pragma once
diff --git a/wpilibc/Athena/include/Vision/BaeUtilities.h b/wpilibc/Athena/include/Vision/BaeUtilities.h
index 8983ef4..5a1270b 100644
--- a/wpilibc/Athena/include/Vision/BaeUtilities.h
+++ b/wpilibc/Athena/include/Vision/BaeUtilities.h
@@ -1,7 +1,8 @@
 /*----------------------------------------------------------------------------*/
-/* Copyright (c) FIRST 2014. All Rights Reserved.                             */
+/* Copyright (c) FIRST 2014-2016. All Rights Reserved.                        */
 /* Open Source Software - may be modified and shared by FRC teams. The code   */
-/* must be accompanied by the FIRST BSD license file in $(WIND_BASE)/WPILib.  */
+/* must be accompanied by the FIRST BSD license file in the root directory of */
+/* the project.                                                               */
 /*----------------------------------------------------------------------------*/
 
 #pragma once
diff --git a/wpilibc/Athena/include/Vision/BinaryImage.h b/wpilibc/Athena/include/Vision/BinaryImage.h
index 8b7b25c..d9a24c5 100644
--- a/wpilibc/Athena/include/Vision/BinaryImage.h
+++ b/wpilibc/Athena/include/Vision/BinaryImage.h
@@ -1,7 +1,8 @@
 /*----------------------------------------------------------------------------*/
-/* Copyright (c) FIRST 2014. All Rights Reserved.                             */
+/* Copyright (c) FIRST 2014-2016. All Rights Reserved.                        */
 /* Open Source Software - may be modified and shared by FRC teams. The code   */
-/* must be accompanied by the FIRST BSD license file in $(WIND_BASE)/WPILib.  */
+/* must be accompanied by the FIRST BSD license file in the root directory of */
+/* the project.                                                               */
 /*----------------------------------------------------------------------------*/
 
 #pragma once
diff --git a/wpilibc/Athena/include/Vision/ColorImage.h b/wpilibc/Athena/include/Vision/ColorImage.h
index 0304ad8..493c541 100644
--- a/wpilibc/Athena/include/Vision/ColorImage.h
+++ b/wpilibc/Athena/include/Vision/ColorImage.h
@@ -1,7 +1,8 @@
 /*----------------------------------------------------------------------------*/
-/* Copyright (c) FIRST 2014. All Rights Reserved.                             */
+/* Copyright (c) FIRST 2014-2016. All Rights Reserved.                        */
 /* Open Source Software - may be modified and shared by FRC teams. The code   */
-/* must be accompanied by the FIRST BSD license file in $(WIND_BASE)/WPILib.  */
+/* must be accompanied by the FIRST BSD license file in the root directory of */
+/* the project.                                                               */
 /*----------------------------------------------------------------------------*/
 
 #pragma once
diff --git a/wpilibc/Athena/include/Vision/FrcError.h b/wpilibc/Athena/include/Vision/FrcError.h
index 0897c84..bfe0748 100644
--- a/wpilibc/Athena/include/Vision/FrcError.h
+++ b/wpilibc/Athena/include/Vision/FrcError.h
@@ -1,7 +1,8 @@
 /*----------------------------------------------------------------------------*/
-/* Copyright (c) FIRST 2014. All Rights Reserved.                             */
+/* Copyright (c) FIRST 2014-2016. All Rights Reserved.                        */
 /* Open Source Software - may be modified and shared by FRC teams. The code   */
-/* must be accompanied by the FIRST BSD license file in $(WIND_BASE)/WPILib.  */
+/* must be accompanied by the FIRST BSD license file in the root directory of */
+/* the project.                                                               */
 /*----------------------------------------------------------------------------*/
 
 #pragma once
diff --git a/wpilibc/Athena/include/Vision/HSLImage.h b/wpilibc/Athena/include/Vision/HSLImage.h
index 0407748..057a8c7 100644
--- a/wpilibc/Athena/include/Vision/HSLImage.h
+++ b/wpilibc/Athena/include/Vision/HSLImage.h
@@ -1,7 +1,8 @@
 /*----------------------------------------------------------------------------*/
-/* Copyright (c) FIRST 2014. All Rights Reserved.                             */
+/* Copyright (c) FIRST 2014-2016. All Rights Reserved.                        */
 /* Open Source Software - may be modified and shared by FRC teams. The code   */
-/* must be accompanied by the FIRST BSD license file in $(WIND_BASE)/WPILib.  */
+/* must be accompanied by the FIRST BSD license file in the root directory of */
+/* the project.                                                               */
 /*----------------------------------------------------------------------------*/
 
 #pragma once
diff --git a/wpilibc/Athena/include/Vision/ImageBase.h b/wpilibc/Athena/include/Vision/ImageBase.h
index c20ecfe..5fc0470 100644
--- a/wpilibc/Athena/include/Vision/ImageBase.h
+++ b/wpilibc/Athena/include/Vision/ImageBase.h
@@ -1,7 +1,8 @@
 /*----------------------------------------------------------------------------*/
-/* Copyright (c) FIRST 2014. All Rights Reserved.                             */
+/* Copyright (c) FIRST 2014-2016. All Rights Reserved.                        */
 /* Open Source Software - may be modified and shared by FRC teams. The code   */
-/* must be accompanied by the FIRST BSD license file in $(WIND_BASE)/WPILib.  */
+/* must be accompanied by the FIRST BSD license file in the root directory of */
+/* the project.                                                               */
 /*----------------------------------------------------------------------------*/
 
 #pragma once
diff --git a/wpilibc/Athena/include/Vision/MonoImage.h b/wpilibc/Athena/include/Vision/MonoImage.h
index d31f0a4..856d891 100644
--- a/wpilibc/Athena/include/Vision/MonoImage.h
+++ b/wpilibc/Athena/include/Vision/MonoImage.h
@@ -1,7 +1,8 @@
 /*----------------------------------------------------------------------------*/
-/* Copyright (c) FIRST 2014. All Rights Reserved.                             */
+/* Copyright (c) FIRST 2014-2016. All Rights Reserved.                        */
 /* Open Source Software - may be modified and shared by FRC teams. The code   */
-/* must be accompanied by the FIRST BSD license file in $(WIND_BASE)/WPILib.  */
+/* must be accompanied by the FIRST BSD license file in the root directory of */
+/* the project.                                                               */
 /*----------------------------------------------------------------------------*/
 
 #pragma once
diff --git a/wpilibc/Athena/include/Vision/RGBImage.h b/wpilibc/Athena/include/Vision/RGBImage.h
index cb3b3e5..eeed545 100644
--- a/wpilibc/Athena/include/Vision/RGBImage.h
+++ b/wpilibc/Athena/include/Vision/RGBImage.h
@@ -1,7 +1,8 @@
 /*----------------------------------------------------------------------------*/
-/* Copyright (c) FIRST 2014. All Rights Reserved.                             */
+/* Copyright (c) FIRST 2014-2016. All Rights Reserved.                        */
 /* Open Source Software - may be modified and shared by FRC teams. The code   */
-/* must be accompanied by the FIRST BSD license file in $(WIND_BASE)/WPILib.  */
+/* must be accompanied by the FIRST BSD license file in the root directory of */
+/* the project.                                                               */
 /*----------------------------------------------------------------------------*/
 
 #pragma once
diff --git a/wpilibc/Athena/include/Vision/Threshold.h b/wpilibc/Athena/include/Vision/Threshold.h
index 83493e8..78d82b4 100644
--- a/wpilibc/Athena/include/Vision/Threshold.h
+++ b/wpilibc/Athena/include/Vision/Threshold.h
@@ -1,7 +1,8 @@
 /*----------------------------------------------------------------------------*/
-/* Copyright (c) FIRST 2014. All Rights Reserved.                             */
+/* Copyright (c) FIRST 2014-2016. All Rights Reserved.                        */
 /* Open Source Software - may be modified and shared by FRC teams. The code   */
-/* must be accompanied by the FIRST BSD license file in $(WIND_BASE)/WPILib.  */
+/* must be accompanied by the FIRST BSD license file in the root directory of */
+/* the project.                                                               */
 /*----------------------------------------------------------------------------*/
 
 #pragma once
diff --git a/wpilibc/Athena/include/Vision/VisionAPI.h b/wpilibc/Athena/include/Vision/VisionAPI.h
index 3153f1b..7c7b5c1 100644
--- a/wpilibc/Athena/include/Vision/VisionAPI.h
+++ b/wpilibc/Athena/include/Vision/VisionAPI.h
@@ -1,7 +1,8 @@
 /*----------------------------------------------------------------------------*/
-/* Copyright (c) FIRST 2014. All Rights Reserved.                             */
+/* Copyright (c) FIRST 2014-2016. All Rights Reserved.                        */
 /* Open Source Software - may be modified and shared by FRC teams. The code   */
-/* must be accompanied by the FIRST BSD license file in $(WIND_BASE)/WPILib.  */
+/* must be accompanied by the FIRST BSD license file in the root directory of */
+/* the project.                                                               */
 /*----------------------------------------------------------------------------*/
 
 #pragma once
diff --git a/wpilibc/Athena/include/WPILib.h b/wpilibc/Athena/include/WPILib.h
index 0386b03..8780c85 100644
--- a/wpilibc/Athena/include/WPILib.h
+++ b/wpilibc/Athena/include/WPILib.h
@@ -1,9 +1,10 @@
 /*----------------------------------------------------------------------------*/
-/* Copyright (c) FIRST 2008. All Rights Reserved.
- */
+/* Copyright (c) FIRST 2008-2016. All Rights Reserved.                        */
 /* Open Source Software - may be modified and shared by FRC teams. The code   */
-/* must be accompanied by the FIRST BSD license file in $(WIND_BASE)/WPILib.  */
+/* must be accompanied by the FIRST BSD license file in the root directory of */
+/* the project.                                                               */
 /*----------------------------------------------------------------------------*/
+
 #pragma once
 
 #define REAL
@@ -50,6 +51,7 @@
 #include "DriverStation.h"
 #include "Encoder.h"
 #include "ErrorBase.h"
+#include "Filters/LinearDigitalFilter.h"
 #include "GearTooth.h"
 #include "GenericHID.h"
 #include "interfaces/Accelerometer.h"
@@ -71,6 +73,7 @@
 #include "Resource.h"
 #include "RobotBase.h"
 #include "RobotDrive.h"
+#include "SD540.h"
 #include "SensorBase.h"
 #include "SerialPort.h"
 #include "Servo.h"
@@ -78,6 +81,7 @@
 #include "SmartDashboard/SendableChooser.h"
 #include "SmartDashboard/SmartDashboard.h"
 #include "Solenoid.h"
+#include "Spark.h"
 #include "SpeedController.h"
 #include "SPI.h"
 #include "Talon.h"