diff --git a/hal/include/HAL/HAL.hpp b/hal/include/HAL/HAL.hpp index 187703bc88..8fdf7162e0 100644 --- a/hal/include/HAL/HAL.hpp +++ b/hal/include/HAL/HAL.hpp @@ -214,6 +214,7 @@ extern "C" int HALGetJoystickAxes(uint8_t joystickNum, HALJoystickAxes *axes); int HALGetJoystickPOVs(uint8_t joystickNum, HALJoystickPOVs *povs); int HALGetJoystickButtons(uint8_t joystickNum, HALJoystickButtons *buttons, uint8_t *count); + int HALGetMatchTime(float *matchTime); void HALSetNewDataSem(pthread_cond_t *); diff --git a/hal/lib/Athena/HAL.cpp b/hal/lib/Athena/HAL.cpp index 1526467e1c..726edf1fc8 100644 --- a/hal/lib/Athena/HAL.cpp +++ b/hal/lib/Athena/HAL.cpp @@ -206,6 +206,11 @@ int HALGetJoystickButtons(uint8_t joystickNum, HALJoystickButtons *buttons, uint return FRC_NetworkCommunication_getJoystickButtons(joystickNum, buttons, count); } +int HALGetMatchTime(float *matchTime) +{ + return FRC_NetworkCommunication_getMatchTime(matchTime); +} + void HALSetNewDataSem(pthread_cond_t * param) { setNewDataSem(param); diff --git a/wpilibc/wpilibC++Devices/src/DriverStation.cpp b/wpilibc/wpilibC++Devices/src/DriverStation.cpp index 1de5d825ea..64c13b6c51 100644 --- a/wpilibc/wpilibC++Devices/src/DriverStation.cpp +++ b/wpilibc/wpilibC++Devices/src/DriverStation.cpp @@ -397,9 +397,9 @@ void DriverStation::WaitForData() */ double DriverStation::GetMatchTime() { - if (m_approxMatchTimeOffset < 0.0) - return 0.0; - return Timer::GetFPGATimestamp() - m_approxMatchTimeOffset; + float matchTime; + HALGetMatchTime(&matchTime); + return (double)matchTime; } /** diff --git a/wpilibj/wpilibJavaDevices/src/main/java/edu/wpi/first/wpilibj/DriverStation.java b/wpilibj/wpilibJavaDevices/src/main/java/edu/wpi/first/wpilibj/DriverStation.java index 5cbef1c8b3..4094110651 100644 --- a/wpilibj/wpilibJavaDevices/src/main/java/edu/wpi/first/wpilibj/DriverStation.java +++ b/wpilibj/wpilibJavaDevices/src/main/java/edu/wpi/first/wpilibj/DriverStation.java @@ -433,10 +433,7 @@ public class DriverStation implements RobotState.Interface { * @return Match time in seconds since the beginning of autonomous */ public double getMatchTime() { - if (m_approxMatchTimeOffset < 0.0) { - return 0.0; - } - return Timer.getFPGATimestamp() - m_approxMatchTimeOffset; + return FRCNetworkCommunicationsLibrary.HALGetMatchTime(); } /** diff --git a/wpilibj/wpilibJavaDevices/src/main/java/edu/wpi/first/wpilibj/communication/FRCNetworkCommunicationsLibrary.java b/wpilibj/wpilibJavaDevices/src/main/java/edu/wpi/first/wpilibj/communication/FRCNetworkCommunicationsLibrary.java index 323b3fe22d..01d7c069fc 100644 --- a/wpilibj/wpilibJavaDevices/src/main/java/edu/wpi/first/wpilibj/communication/FRCNetworkCommunicationsLibrary.java +++ b/wpilibj/wpilibJavaDevices/src/main/java/edu/wpi/first/wpilibj/communication/FRCNetworkCommunicationsLibrary.java @@ -468,6 +468,7 @@ public class FRCNetworkCommunicationsLibrary extends JNIWrapper { public static native short[] HALGetJoystickAxes(byte joystickNum); public static native short[] HALGetJoystickPOVs(byte joystickNum); public static native int HALGetJoystickButtons(byte joystickNum); + public static native float HALGetMatchTime(); public static native boolean HALGetSystemActive(IntBuffer status); public static native boolean HALGetBrownedOut(IntBuffer status); diff --git a/wpilibj/wpilibJavaJNI/lib/FRCNetworkCommunicationsLibrary.cpp b/wpilibj/wpilibJavaJNI/lib/FRCNetworkCommunicationsLibrary.cpp index aed1299364..9d15fba780 100644 --- a/wpilibj/wpilibJavaJNI/lib/FRCNetworkCommunicationsLibrary.cpp +++ b/wpilibj/wpilibJavaJNI/lib/FRCNetworkCommunicationsLibrary.cpp @@ -535,6 +535,20 @@ JNIEXPORT jobject JNICALL Java_edu_wpi_first_wpilibj_communication_FRCNetworkCom return env->NewDirectByteBuffer(returnByteArray, 4); } +/* + * Class: edu_wpi_first_wpilibj_communication_FRCNetworkCommunicationsLibrary + + * Method: HALGetMatchTime + * Signature: ()F + */ +JNIEXPORT jfloat JNICALL Java_edu_wpi_first_wpilibj_communication_FRCNetworkCommunicationsLibrary_HALGetMatchTime + (JNIEnv * env, jclass) +{ + jfloat matchTime; + HALGetMatchTime((float*)&matchTime); + return matchTime; +} + /* * Class: edu_wpi_first_wpilibj_communication_FRCNetworkCommunicationsLibrary * Method: HALGetSystemActive