This is the latest WPILib src, VisionSample2013, cRIO image, ... pulled down from firstforge.wpi.edu.
There might be risks in using the top of tree rather than an official release, but the commit messages do mention fixes for some deadlocks and race conditions.
git-svn-id: https://robotics.mvla.net/svn/frc971/2013/trunk/src@4066 f308d9b7-e957-4cde-b6ac-9a88185e7312
diff --git a/azaleasource/WPILibCProgramming/trunk/WPILib/Jaguar.cpp b/azaleasource/WPILibCProgramming/trunk/WPILib/Jaguar.cpp
new file mode 100644
index 0000000..292bd8e
--- /dev/null
+++ b/azaleasource/WPILibCProgramming/trunk/WPILib/Jaguar.cpp
@@ -0,0 +1,102 @@
+/*----------------------------------------------------------------------------*/
+/* 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. */
+/*----------------------------------------------------------------------------*/
+
+
+#include "Jaguar.h"
+#include "NetworkCommunication/UsageReporting.h"
+#include "DigitalModule.h"
+#include "LiveWindow/LiveWindow.h"
+
+/**
+ * Common initialization code called by all constructors.
+ */
+void Jaguar::InitJaguar()
+{
+ /*
+ * Input profile defined by Luminary Micro.
+ *
+ * Full reverse ranges from 0.671325ms to 0.6972211ms
+ * Proportional reverse ranges from 0.6972211ms to 1.4482078ms
+ * Neutral ranges from 1.4482078ms to 1.5517922ms
+ * Proportional forward ranges from 1.5517922ms to 2.3027789ms
+ * Full forward ranges from 2.3027789ms to 2.328675ms
+ * TODO: compute the appropriate values based on digital loop timing
+ */
+ SetBounds(251, 135, 128, 120, 4);
+ SetPeriodMultiplier(kPeriodMultiplier_1X);
+ SetRaw(m_centerPwm);
+
+ nUsageReporting::report(nUsageReporting::kResourceType_Jaguar, GetChannel(), GetModuleNumber() - 1);
+ LiveWindow::GetInstance()->AddActuator("Jaguar", GetModuleNumber(), GetChannel(), this);
+}
+
+/**
+ * Constructor that assumes the default digital module.
+ *
+ * @param channel The PWM channel on the digital module that the Jaguar is attached to.
+ */
+Jaguar::Jaguar(UINT32 channel) : SafePWM(channel)
+{
+ InitJaguar();
+}
+
+/**
+ * Constructor that specifies the digital module.
+ *
+ * @param moduleNumber The digital module (1 or 2).
+ * @param channel The PWM channel on the digital module that the Jaguar is attached to.
+ */
+Jaguar::Jaguar(UINT8 moduleNumber, UINT32 channel) : SafePWM(moduleNumber, channel)
+{
+ InitJaguar();
+}
+
+Jaguar::~Jaguar()
+{
+}
+
+/**
+ * Set the PWM value.
+ *
+ * The PWM value is set using a range of -1.0 to 1.0, appropriately
+ * scaling the value for the FPGA.
+ *
+ * @param speed The speed value between -1.0 and 1.0 to set.
+ * @param syncGroup Unused interface.
+ */
+void Jaguar::Set(float speed, UINT8 syncGroup)
+{
+ SetSpeed(speed);
+}
+
+/**
+ * Get the recently set value of the PWM.
+ *
+ * @return The most recently set value for the PWM between -1.0 and 1.0.
+ */
+float Jaguar::Get()
+{
+ return GetSpeed();
+}
+
+/**
+ * Common interface for disabling a motor.
+ */
+void Jaguar::Disable()
+{
+ SetRaw(kPwmDisabled);
+}
+
+/**
+ * Write out the PID value as seen in the PIDOutput base object.
+ *
+ * @param output Write out the PWM value as was found in the PIDController
+ */
+void Jaguar::PIDWrite(float output)
+{
+ Set(output);
+}
+