Also make sure table listeners stop listening in their destructors. This
might be better handled by moving the table itself into ITableListener and
providing cleanup functionality there.
A submodule is used to pull in ntcore.
Change-Id: I3031c1a768595cf0f8754c47e15cd423e2dbcce5
Also added a GetAvgError method to the PIDController
which averages the past n error values for use with
noisy sensor values (namely, for the velocity stuff).
Change-Id: I8a9cf40259dd56ef9093b36ed6891cc18b9131cf
This avoids large additions introduced by the D term when a step change occurs in the setpoint. Otherwise, the changes return the same values. Let error = setpoint - input and prevError = prevSetpoint - prevInput. If the D term is calculated via error - prevError, then:
error - prevError = (setpoint - input) - (prevSetpoint - prevInput)
If we ignore the setpoint changing, then we get:
error - prevError = (setpoint - input) - (setpoint - prevInput)
= prevInput - input
Change-Id: Ifa4af9b265e3c4bd263e8541355f2b80269693e9
The changes made in this commit do not affect any actual code,
they are purely aesthetic. I ran clang-format with google style
over all .h/.cpp files in wpilibc that weren't in wpilibC++Sim
or gtest, and the eclipse formatter over all of the Java files
using the Google eclipse formatting configuration.
Change-Id: I9627bca0bc103c398ecc1c5ba17467193291ae63
For C++: The PIDController loop had been changed to run an infinite loop
with a Wait(period) rather than using the Notifier class to schedule
exact runs of the CallCalculate command. Essentially a revert to bb50f4b134,
accounting for more recent changes.
For Java: A similar problem had developed; essentially, a TimerTask used
to be used and at some point was changed to a Runnable. The Runnable had
an infinite loop with a Wait; TimerTask actually schedules things reasonably
(although it is not strictly real-time). Also, there were some
Thread-safety issues which I fixed.
Although Java and C++ had similar issues, they seem to have developed
these issues independently.
Changes have been tested on the GearsBot in both C++ and Java (and it
works).
Change-Id: I478cb8bfd77cd2d031f8e343d0b8193b602dcc2a
Make axes and POVs 0-based like they are on the DS
Correct default joystick axis numbers to be 0-based
Fix array dimensions for joystick axis values
Increase the number of joystick ports to the maximum 6 that the DS supports
Change-Id: I16d0e6e636188cbdd9cd7bfa0453a62466a55093
Axis counts other than six and POVs are both present in C++ and Java now
Add dynamic joystick axis counts, up to 12
Change-Id: Ieade5e61a89df822df8702cb32326e4635558778
Add support for POVs in C++
Change-Id: I12dc0fcaca605a256ddcf990eebde45767229171
Make POVs work in Java
Change-Id: Ie2d98adb416c1930f058bdd21c3e7d26289df503
Adds a BaseSystemNotInitalizedException to be thrown in the event that HLUsageRepoting, RobotState or Timer does not have its static implementation set.
Change-Id: I66fde262baa1a9d32d1df9fafa08ba3173bcbb72
SmartDashboard does usage reporting now (or will when it's implemented
in the HAL).
Global errors are raised in C++ when problems happen, since there is
no SmartDashboard instance. Previously, no error reporting was done
at all.
GetData was uncommented.
Change-Id: I3331eb9f09924d1d0028e3fa041f0cf68caa5cf5
wpilibJavaDevices now contains RoboRIO specific code and wpilibJava has
shared high level information. The restructuring was mostly just copy
and paste. The three big exceptions are Timer, RobotState and
HLUsageReporting. Those require some dependencies injection since that
appears to be the cleanest way to share the code.
Change-Id: Ie7011e32bc95953a87801a9905b3bfec7f8de285
ADXL345_I2C, ADXL345_SPI, and BuiltInAccelerometer implement this interface.
The analog accelerometer class Accelerometer was renamed to
AnalogAccelerometer.
Change-Id: Iaae79d582a24c36c372f5fd4ea6df37be289b9c1
Removed #if 0...#endif from PCM.cpp
Change-Id: I2d117c87a3fa10bddebf83706f79c2e767d22a0d
Update the HAL to the PCM/PDP changes
Change-Id: If554b650e263f174e90864f1e9ffba91daf20f7e
Update C++ to the PCM/PDP changes
Change-Id: Ia3114d4526be1dc5cc2f74fd8f7ab44f204d15f2
Updated PCM/PDP in Java
Change-Id: I8fe03afbcb1739d555e86abc0eaae1e12313d490
Previously, the voltage was requested as a percentage and decoded as
a number of volts, which resulted in values being scaled wrong. The
correct message is requested now.
Change-Id: I5e81c7a4a2e2698f2e8a84ba747217e0e14f7676
All status data is now in 3 messages automatically sent periodically
by the Jaguar, removing the need to send several hundred requests
every second.
The C++ integration test was also updated to be more robust against
timing problems.
Change-Id: I13bacc6c8173ea1a2291a96ad3bd80ff5b18d16f
The C++ and Java CANJaguar constructors now wait up to 50 ms for the status
data to arrive at least one time. They break early if it arrives sooner.
This allows status getters to always work immediately after the object is
constructed.
Change-Id: I4a1f1538837c11b24d45e87251743b6c106ddefb
Change-Id: If6082f6b92b4be5e328278ba536d5a7681082c9f (+4 squashed commit)
Squashed commit:
[86b4ae7] * Port I2C to roboRIO in JNI and Java. Left read method as a transaction and added readOnly. Left write as a single byte and added writeBulk. Need to go back to C++ and update to match.
Change-Id: I290d84211a4b7bb942d785730c0e6929449cf69f
[7d37419] * Remove HiTechnic sensors from Java. May be added back later as examples
Change-Id: Ie93e23a70fd953c99c03d50d9529220f86d32e03
[e62bfbf] * I2C ported to roboRIO i2clib in HAL and C++
Change-Id: Idb0e8cee5a1e8c1a0b0733ca94b528f659352915
[1059a48] * Remove HiTechnic sensors (Lego connector) may be added back as examples later
Change-Id: I84b8e1e022db2c69d487ed9ad5b3ec0e7ea57282 (+2 squashed commit)
Squashed commit:
[e62bfbf] * I2C ported to roboRIO i2clib in HAL and C++
Change-Id: Idb0e8cee5a1e8c1a0b0733ca94b528f659352915
[1059a48] * Remove HiTechnic sensors (Lego connector) may be added back as examples later
Change-Id: I84b8e1e022db2c69d487ed9ad5b3ec0e7ea57282