From c92bad52cb0b7ed54d5c4d7e4c8ecc2ec8b184d4 Mon Sep 17 00:00:00 2001 From: Peter Johnson Date: Sat, 30 Sep 2023 09:24:06 -0700 Subject: [PATCH] [wpilib] DataLogManager: Use system time valid function (#5697) --- wpilibc/src/main/native/cpp/DataLogManager.cpp | 15 ++++++++------- .../edu/wpi/first/wpilibj/DataLogManager.java | 12 ++++++------ 2 files changed, 14 insertions(+), 13 deletions(-) diff --git a/wpilibc/src/main/native/cpp/DataLogManager.cpp b/wpilibc/src/main/native/cpp/DataLogManager.cpp index 0877b2225f..578cd5e62e 100644 --- a/wpilibc/src/main/native/cpp/DataLogManager.cpp +++ b/wpilibc/src/main/native/cpp/DataLogManager.cpp @@ -22,6 +22,7 @@ #include "frc/DriverStation.h" #include "frc/Filesystem.h" #include "frc/RobotBase.h" +#include "frc/RobotController.h" using namespace frc; @@ -203,12 +204,10 @@ void Thread::Main() { } else { dsAttachCount = 0; } - if (dsAttachCount > 300) { // 6 seconds - std::time_t now = std::time(nullptr); - auto tm = std::gmtime(&now); - if (tm->tm_year > 100) { - // assume local clock is now synchronized to DS, so rename based on - // local time + if (dsAttachCount > 50) { // 1 second + if (RobotController::IsSystemTimeValid()) { + std::time_t now = std::time(nullptr); + auto tm = std::gmtime(&now); m_log.SetFilename(fmt::format("FRC_{:%Y%m%d_%H%M%S}.wpilog", *tm)); dsRenamed = true; } else { @@ -260,7 +259,9 @@ void Thread::Main() { ++sysTimeCount; if (sysTimeCount >= 250) { sysTimeCount = 0; - sysTimeEntry.Append(wpi::GetSystemTime(), wpi::Now()); + if (RobotController::IsSystemTimeValid()) { + sysTimeEntry.Append(wpi::GetSystemTime(), wpi::Now()); + } } } DriverStation::RemoveRefreshedDataEventHandle(newDataEvent.GetHandle()); diff --git a/wpilibj/src/main/java/edu/wpi/first/wpilibj/DataLogManager.java b/wpilibj/src/main/java/edu/wpi/first/wpilibj/DataLogManager.java index 2f5a55f972..ba2d7808f3 100644 --- a/wpilibj/src/main/java/edu/wpi/first/wpilibj/DataLogManager.java +++ b/wpilibj/src/main/java/edu/wpi/first/wpilibj/DataLogManager.java @@ -331,11 +331,9 @@ public final class DataLogManager { } else { dsAttachCount = 0; } - if (dsAttachCount > 300) { // 6 seconds - LocalDateTime now = LocalDateTime.now(m_utc); - if (now.getYear() > 2000) { - // assume local clock is now synchronized to DS, so rename based on - // local time + if (dsAttachCount > 50) { // 1 second + if (RobotController.isSystemTimeValid()) { + LocalDateTime now = LocalDateTime.now(m_utc); m_log.setFilename("FRC_" + m_timeFormatter.format(now) + ".wpilog"); dsRenamed = true; } else { @@ -391,7 +389,9 @@ public final class DataLogManager { sysTimeCount++; if (sysTimeCount >= 250) { sysTimeCount = 0; - sysTimeEntry.append(WPIUtilJNI.getSystemTime(), WPIUtilJNI.now()); + if (RobotController.isSystemTimeValid()) { + sysTimeEntry.append(WPIUtilJNI.getSystemTime(), WPIUtilJNI.now()); + } } } newDataEvent.close();