Squashed 'third_party/allwpilib/' content from commit b0167e633
Change-Id: I5653017a690eec1917e8fff9017195d8af307926
git-subtree-dir: third_party/allwpilib
git-subtree-split: b0167e6337135545e7053acb89dd5726accc7dec
diff --git a/wpilibc/src/main/native/cpp/SpeedControllerGroup.cpp b/wpilibc/src/main/native/cpp/SpeedControllerGroup.cpp
new file mode 100644
index 0000000..a807afc
--- /dev/null
+++ b/wpilibc/src/main/native/cpp/SpeedControllerGroup.cpp
@@ -0,0 +1,53 @@
+/*----------------------------------------------------------------------------*/
+/* Copyright (c) 2016-2018 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. */
+/*----------------------------------------------------------------------------*/
+
+#include "frc/SpeedControllerGroup.h"
+
+#include "frc/smartdashboard/SendableBuilder.h"
+
+using namespace frc;
+
+void SpeedControllerGroup::Set(double speed) {
+ for (auto speedController : m_speedControllers) {
+ speedController.get().Set(m_isInverted ? -speed : speed);
+ }
+}
+
+double SpeedControllerGroup::Get() const {
+ if (!m_speedControllers.empty()) {
+ return m_speedControllers.front().get().Get() * (m_isInverted ? -1 : 1);
+ }
+ return 0.0;
+}
+
+void SpeedControllerGroup::SetInverted(bool isInverted) {
+ m_isInverted = isInverted;
+}
+
+bool SpeedControllerGroup::GetInverted() const { return m_isInverted; }
+
+void SpeedControllerGroup::Disable() {
+ for (auto speedController : m_speedControllers) {
+ speedController.get().Disable();
+ }
+}
+
+void SpeedControllerGroup::StopMotor() {
+ for (auto speedController : m_speedControllers) {
+ speedController.get().StopMotor();
+ }
+}
+
+void SpeedControllerGroup::PIDWrite(double output) { Set(output); }
+
+void SpeedControllerGroup::InitSendable(SendableBuilder& builder) {
+ builder.SetSmartDashboardType("Speed Controller");
+ builder.SetActuator(true);
+ builder.SetSafeState([=]() { StopMotor(); });
+ builder.AddDoubleProperty("Value", [=]() { return Get(); },
+ [=](double value) { Set(value); });
+}