diff --git a/wpilibc/src/main/native/cpp/sysid/SysIdRoutineLog.cpp b/wpilibc/src/main/native/cpp/sysid/SysIdRoutineLog.cpp index b99b79228e..0d32fe3b90 100644 --- a/wpilibc/src/main/native/cpp/sysid/SysIdRoutineLog.cpp +++ b/wpilibc/src/main/native/cpp/sysid/SysIdRoutineLog.cpp @@ -11,12 +11,7 @@ using namespace frc::sysid; SysIdRoutineLog::SysIdRoutineLog(std::string_view logName) - : m_logName(logName), - m_state(wpi::log::StringLogEntry{ - frc::DataLogManager::GetLog(), - fmt::format("sysid-test-state{}", logName)}) { - m_state.Append(StateEnumToString(State::kNone)); -} + : m_logName(logName) {} SysIdRoutineLog::MotorLog::MotorLog(std::string_view motorName, std::string_view logName, @@ -45,6 +40,12 @@ SysIdRoutineLog::MotorLog SysIdRoutineLog::Motor(std::string_view motorName) { } void SysIdRoutineLog::RecordState(State state) { + if (!m_stateInitialized) { + m_state = + wpi::log::StringLogEntry{frc::DataLogManager::GetLog(), + fmt::format("sysid-test-state{}", m_logName)}; + m_stateInitialized = true; + } m_state.Append(StateEnumToString(state)); } diff --git a/wpilibc/src/main/native/include/frc/sysid/SysIdRoutineLog.h b/wpilibc/src/main/native/include/frc/sysid/SysIdRoutineLog.h index 7da22f4dc7..3c7544a673 100644 --- a/wpilibc/src/main/native/include/frc/sysid/SysIdRoutineLog.h +++ b/wpilibc/src/main/native/include/frc/sysid/SysIdRoutineLog.h @@ -194,6 +194,7 @@ class SysIdRoutineLog { private: LogEntries m_logEntries; std::string m_logName; + bool m_stateInitialized; wpi::log::StringLogEntry m_state; }; } // namespace frc::sysid diff --git a/wpilibj/src/main/java/edu/wpi/first/wpilibj/sysid/SysIdRoutineLog.java b/wpilibj/src/main/java/edu/wpi/first/wpilibj/sysid/SysIdRoutineLog.java index dac100fac0..a8d7d940e8 100644 --- a/wpilibj/src/main/java/edu/wpi/first/wpilibj/sysid/SysIdRoutineLog.java +++ b/wpilibj/src/main/java/edu/wpi/first/wpilibj/sysid/SysIdRoutineLog.java @@ -32,7 +32,7 @@ import java.util.Map; public class SysIdRoutineLog { private final Map> m_logEntries = new HashMap<>(); private final String m_logName; - private final StringLogEntry m_state; + private StringLogEntry m_state; /** * Create a new logging utility for a SysId test routine. @@ -44,8 +44,6 @@ public class SysIdRoutineLog { */ public SysIdRoutineLog(String logName) { m_logName = logName; - m_state = new StringLogEntry(DataLogManager.getLog(), "sysid-test-state-" + logName); - m_state.append(State.kNone.toString()); } /** Possible state of a SysId routine. */ @@ -221,6 +219,9 @@ public class SysIdRoutineLog { * @param state The current state of the SysId test routine. */ public void recordState(State state) { + if (m_state == null) { + m_state = new StringLogEntry(DataLogManager.getLog(), "sysid-test-state-" + m_logName); + } m_state.append(state.toString()); } }