Merge commit '849ebe917b82f5099633e6b5a915d550e76bc6bc' into HEAD

Change-Id: Ib317023b5d8bffb49eb4e05c49f635e094a88e63
diff --git a/frc971/wpilib/ahal/AnalogTrigger.h b/frc971/wpilib/ahal/AnalogTrigger.h
index 30a07d1..9fad5db 100644
--- a/frc971/wpilib/ahal/AnalogTrigger.h
+++ b/frc971/wpilib/ahal/AnalogTrigger.h
@@ -1,5 +1,5 @@
 /*----------------------------------------------------------------------------*/
-/* Copyright (c) FIRST 2008-2017. All Rights Reserved.                        */
+/* Copyright (c) 2008-2019 FIRST. 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.                                                               */
@@ -9,36 +9,54 @@
 
 #include <memory>
 
-#include "hal/Types.h"
+#include <hal/Types.h>
+
 #include "frc971/wpilib/ahal/AnalogTriggerOutput.h"
-#include "frc971/wpilib/ahal/SensorBase.h"
 
 namespace frc {
 
 class AnalogInput;
+class DutyCycle;
+class SendableBuilder;
 
 class AnalogTrigger {
   friend class AnalogTriggerOutput;
 
  public:
   explicit AnalogTrigger(int channel);
-  explicit AnalogTrigger(AnalogInput *channel);
+  explicit AnalogTrigger(AnalogInput* channel);
+  explicit AnalogTrigger(DutyCycle* dutyCycle);
+
   virtual ~AnalogTrigger();
 
+  AnalogTrigger(AnalogTrigger&& rhs);
+  AnalogTrigger& operator=(AnalogTrigger&& rhs);
+
   void SetLimitsVoltage(double lower, double upper);
+
+  void SetLimitsDutyCycle(double lower, double upper);
+
   void SetLimitsRaw(int lower, int upper);
+
   void SetAveraged(bool useAveragedValue);
+
+  void SetDutyCycle(bool useDutyCycle);
+
   void SetFiltered(bool useFilteredValue);
+
   int GetIndex() const;
+
   bool GetInWindow();
+
   bool GetTriggerState();
+
   std::shared_ptr<AnalogTriggerOutput> CreateOutput(
       AnalogTriggerType type) const;
 
  private:
-  int m_index;
-  HAL_AnalogTriggerHandle m_trigger;
-  AnalogInput *m_analogInput = nullptr;
+  hal::Handle<HAL_AnalogTriggerHandle> m_trigger;
+  AnalogInput* m_analogInput = nullptr;
+  DutyCycle* m_dutyCycle = nullptr;
   bool m_ownsAnalog = false;
 };