Commit Graph

191 Commits

Author SHA1 Message Date
Andrew Dassonville
d817001259 Only write version information on real robot (#1510)
Writing to the versions file throws an exception on Windows, and might
write weird files on Linux.
2018-12-27 00:59:49 -06:00
David Vo
8d95c38e39 Watchdog: Fix potential IllegalFormatException (#1508)
If an epoch name contains a % symbol, this could've lead to an exception
at runtime where the number of arguments mismatches the format string.
2018-12-25 01:12:44 -06:00
Thad House
c449ef1064 Unconditionally await in awaitUntil (#1499)
Negative numbers are properly handled, which will reduce chances of deadlocks.
2018-12-24 15:07:47 -06:00
Thad House
0d7d880261 Renable full Java 8 Compatibility (#1493) 2018-12-21 00:25:23 -08:00
Tyler Veness
41596608cc Suppress Watchdog's generic timeout message in MotorSafety (#1486) 2018-12-14 10:53:33 -08:00
Peter Johnson
ab49345460 Add missing param javadoc comment and fix argument order inconsistency (#1475) 2018-12-09 08:37:09 -08:00
Tyler Veness
6d4326a560 Rate-limit Watchdog timeout prints to 1Hz (#1459) 2018-12-07 19:39:02 -08:00
Sam Carlberg
97ba195b88 Fix LiveWindow attempting to start listeners on uninitialized sendables (#1463)
Additionally adds a defensive check in SendableBuilderImpl to avoid the NPE.
2018-12-07 19:38:22 -08:00
Dustin Spicuzza
b64dfacff3 DriverStation: fix error checking for GetXXXAxis and GetXXXPov (#1469)
Fixes #1436
2018-12-06 22:31:14 -08:00
Peter Johnson
dcbf02a1ec Update auto SPI for timestamp changes (#1457)
The 2019 FPGA image switched the output of auto SPI from plain bytes to a
sequence of 32-bit words (timestamp, then words with the byte values in the
least significant byte of each word).

In addition to changing the HAL and simulators to reflect this, add piecewise
integration support to wpilibc/wpilibj SPI to take advantage of the timestamps
and use it in the ADXRS450 gyro.
2018-12-06 22:29:20 -08:00
Tyler Veness
26e8e587f9 MotorSafety: Use Watchdog instead of DS class polling (#1442) 2018-12-01 01:34:52 -08:00
Tyler Veness
3b33abfc7b Make Watchdog use single thread dispatch (#1347)
Notifier has one thread per instance because the callbacks must be
asynchronous. Watchdog callbacks can be synchronous, so this overhead
can be done away with via a scheduler thread akin to what the HAL
Notifier does.
2018-12-01 00:05:33 -08:00
Sam Carlberg
6f0c185a05 Add methods to change the selected tab in the Shuffleboard app (#1448) 2018-11-27 22:12:50 -08:00
Sam Carlberg
a60f312d19 Add eager null checks in drive base classes (#1447)
All null motors will be specified in the error messages.
2018-11-27 18:11:56 -08:00
Tyler Veness
acb786a791 Remove MotorSafetyHelper, create MotorSafety base class instead (#562)
Most of the MotorSafety implementation was moved into the MotorSafety base
class. SafePWM's inheritance of MotorSafety was moved into PWM to
eliminate Java needing a helper class.

In Java, a helper class for Sendable (SendableImpl) was added due to
lack of multiple inheritance.
2018-11-22 21:15:26 -08:00
Sam Carlberg
45f4472d42 Add mechanism to control Shuffleboard recordings and add event markers (#1414) 2018-11-18 23:15:30 -08:00
Austin Schuh
9207d788ab Convert ReadInterrupt* to return int64_t time (#1417)
HAL_ReadInterruptRisingTimestamp and HAL_ReadInterruptFallingTimestamp
return time as a double.  Instead, keep the raw integer count and move the
double conversion into the C++ and Java code.  This enables comparison of the
time with other timers.
2018-11-15 21:22:03 -08:00
Tyler Veness
63775362fe Remove SynchronousPID class (#1429)
PR #1300 supersedes it, but won't be merged until the 2020 season. Since
SynchronousPID hasn't been used during a season, it would be best to
just remove it to avoid breakage when we deprecate and remove it again.
2018-11-15 19:25:31 -08:00
Jaci Brunning
28087424ec Add deploy directory detection (#1400)
Add Filesystem class for java and namespace methods for C++ for detecting deploy location.
2018-11-02 13:16:44 -07:00
Nicolas Machado
761933a164 Refactor Java Ultrasonic to use a List container (#1389) 2018-10-29 01:15:32 -07:00
Redrield
9f6544fa87 Allow binding commands to POV (#1378) 2018-10-28 21:54:06 -07:00
Tyler Veness
0a2ab4f0d7 Revert change in behavior in HeldButtonScheduler (#1381)
Originally, the command was restarted every time the scheduler was
executed if the button was pressed. #1340 changed this behavior in a
breaking manner.
2018-10-20 21:25:37 -07:00
Thad House
11e5faf469 Use Array Constructor rather then new array to toArray (#1368)
A bit cleaner to use, and more standard for the current java. Still java 8 compatible.
2018-10-16 01:30:42 -07:00
Liam Kinne
da9a575526 Rename squaredInputs to squareInputs in DifferentialDrive (#1361)
Fixes #1360.
2018-10-13 23:10:16 -07:00
Tyler Veness
81498e6af9 Deprecate IterativeRobot in favor of TimedRobot (#1341)
Since https://github.com/wpilibsuite/allwpilib/issues/786 has been
closed as not a legitimate concern, there is now no reason to use
IterativeRobot over TimedRobot. It's a drop-in replacement that's
strictly an improvement in terms of execution jitter.

To migrate, one simply has to replace the IterativeRobot subclass in
their robot code with TimedRobot.
2018-10-04 01:02:07 -07:00
ariovistus
54fbec27df Fix typo (#1348) 2018-10-04 00:59:47 -07:00
Sam Carlberg
175c6c1f01 Add fluent builders for more flexibly adding data to Shuffleboard (#1022) 2018-09-28 01:18:18 -07:00
Tyler Veness
a732854866 Clean up edge detection logic in ButtonScheduler subclasses (#1340)
This also changes the behavior of whileActive to call start once on the starting edge
instead of every loop iteration.
2018-09-26 22:55:34 -07:00
Tyler Veness
6171856020 Document Watchdog epochs better (#1345) 2018-09-26 22:53:34 -07:00
Thad House
0c58a0a705 Repackage CameraServer classes (#1321)
This is necessary for modularization.
Move the wpilibj CameraServer classes to the cameraserver package.
Move the edu.wpi.first.wpilibj.vision package to edu.wpi.first.vision.
To avoid code breakage, add deprecated copies of the wpilibj classes to the wpilibj jar.
2018-09-23 21:20:12 -07:00
Tyler Veness
b505bbefd1 Rename variable in SPI class not compliant with style guide (#1330)
Also rename some wpilibj SPI class variables to match wpilibc and
better communicate their intent.
2018-09-23 18:26:02 -07:00
Thad House
1137582a7a Revert "Move deprecated ntcore classes to wpilibj jar (#1322)" (#1326)
This reverts commit 12c92a822d.
2018-09-21 11:32:11 -07:00
Thad House
e210073044 Move HAL classes to their own base package (#1317)
Needed for modularization.
2018-09-20 21:59:46 -07:00
Thad House
12c92a822d Move deprecated ntcore classes to wpilibj jar (#1322)
Will allow for modularization
2018-09-20 21:50:30 -07:00
Thad House
59386635e7 Add CAN API constructor that takes explicit manufacturer and device type (#1311)
Useful for vendors wanting to use the API and make their own device parameters
2018-09-19 21:40:47 -07:00
Matt Soucy
8b5dc53cc7 Add Lambda support to InstantCommand (#1262) 2018-09-11 23:44:22 -07:00
Kay Kasemir
59700882f1 PIDController: Mention unit for 'period' (#1305) 2018-09-11 21:38:19 -07:00
Peter Johnson
67b1c85315 Notifier: properly reset HAL alarm in non-periodic case (#1296)
The loop spins otherwise.
2018-09-03 16:07:23 -07:00
Tyler Veness
0b113ad9ce Fix some PIDCommand constructors not forwarding subsystems (#1299)
Also added missing constructor to wpilibc's InstantCommand and renamed
argument from requirement to subsystem as per
https://github.com/wpilibsuite/allwpilib/pull/1275#issuecomment-416071940.
2018-09-02 14:18:12 -07:00
Matt Soucy
e28295fc7b Add dependency injection of Subsystem to Command (#1275) 2018-08-19 19:43:21 -07:00
Peter Johnson
b44f27ddfa SendableChooser: Rename addDefault and addObject for clarity (#1239)
Rename addDefault to setDefaultOption and addObject to addOption.

The old names are still available but are marked as deprecated.
2018-08-19 01:51:17 -07:00
Jamie Sinn
7bd3f9f0bd Change ButtonScheduler scope start method to public (#1254)
Fixes #765.
2018-07-29 19:26:48 -07:00
Peter Johnson
0e9172f9a7 Fix many errorprone warnings (#1247)
This fixes two real bugs:
- TimedRobot had a m_period that was hiding the IterativeRobotBase m_period
  and was not getting initialized.
- PDPSim was swapping two parameters to getCurrent()
2018-07-29 16:47:22 -07:00
Austin Shalit
a11fcb605d Add UseConcurrentHashMap exception to PMD and clean NOPMDs (#1243) 2018-07-29 09:29:32 -07:00
Peter Johnson
0614913f1a Add a way to indicate a Sendable is an actuator (#1226)
SendableBuilder.setActuator() sets the .actuator key in the network table
so dashboards can change behavior on the client side if desired, and also
sets a local flag (retrievable via isActuator()).

Both make drive bases actuators and call setSafeState on them.
2018-07-28 14:04:46 -07:00
Peter Johnson
5fafaf6272 Add confirmation to SendableChooser (#1217)
This echos back the "selected" value to the "active" key to enable dashboards
to display positive feedback to the user that the value is actually set on
the robot side.

Also fixes SendableChooser so it can be safely added to multiple tables.
Changes to "selected" in any table will result in all "active" values being
updated.

Now that adding SendableChooser to multiple tables is supported, an ".instance"
key enables dashboards to treat the same SendableChooser as a common instance
if desired.
2018-07-28 10:43:47 -07:00
Peter Johnson
397a296e25 Add a .controllable key as a standard part of Sendable (#1225)
This indicates whether or not the Sendable listeners are installed.
It is set to true when SendableBuilder.startListeners() starts the listeners,
and set to false when SendableBuilder.stopListeners() stops the listeners.

This allows dashboards to choose to change their widget display based on
whether or not the value is actually controllable.
2018-07-28 10:42:31 -07:00
Tyler Veness
d54c2665dc Update UsageReporting enums and their uses for 2019 (#1218) 2018-07-25 19:58:05 -07:00
Thad House
fe5d7dd6ba Move DS caching from user level to the HAL (#1143)
Also switch eventName and gameSpecificData to fixed 64-byte arrays to avoid mallocs and
extra NetComm calls.  This behavior matches 2018 LabView.

The DS caching is kept in Java to avoid JNI and/or massive amounts of allocations.
This does not increase latency because Java still only hits NetComm once.

Moving the DS caching benefits all languages other than Java, because it avoids the need
for individual implementations.  If caching is ever added to NetComm, it will then only be
necessary to remove it from the HAL and Java rather than all languages.
2018-07-18 22:22:41 -07:00
Thad House
80134164a4 Move Java main function from library to user code (#1148)
It is much more reliable than the old approach, as it no longer depends on a magic string
in a manifest file, and if the user changes their main class, or makes it not import from
something RobotBase, it will fail to compile instead of failing at runtime.

With requiring an importer, we should be able to automate this in the importer.
2018-07-18 22:01:19 -07:00