Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[epilogue] Allow configuring logging period and logging period offset #6893

Merged
merged 4 commits into from
Aug 14, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -52,6 +52,9 @@ public void writeEpilogueFile(
out.println("package edu.wpi.first.epilogue;");
out.println();

out.println("import static edu.wpi.first.units.Units.Seconds;");
out.println();

loggerClassNames.stream()
.sorted()
.forEach(
Expand Down Expand Up @@ -150,6 +153,13 @@ public static boolean shouldLog(Logged.Importance importance) {
*/
""");
out.println(" public static void bind(" + robotClassName + " robot) {");
out.println(" if (config.loggingPeriod == null) {");
out.println(" config.loggingPeriod = Seconds.of(robot.getPeriod());");
out.println(" }");
out.println(" if (config.loggingPeriodOffset == null) {");
out.println(" config.loggingPeriodOffset = config.loggingPeriod.divide(2);");
out.println(" }");
out.println();
out.println(" robot.addPeriodic(() -> {");
out.println(" long start = System.nanoTime();");
out.println(
Expand All @@ -158,7 +168,8 @@ public static boolean shouldLog(Logged.Importance importance) {
+ ".tryUpdate(config.dataLogger.getSubLogger(config.root), robot, config.errorHandler);");
out.println(
" edu.wpi.first.networktables.NetworkTableInstance.getDefault().getEntry(\"Epilogue/Stats/Last Run\").setDouble((System.nanoTime() - start) / 1e6);");
out.println(" }, robot.getPeriod(), robot.getPeriod() / 2);");
out.println(
" }, config.loggingPeriod.in(Seconds), config.loggingPeriodOffset.in(Seconds));");
spacey-sooty marked this conversation as resolved.
Show resolved Hide resolved
out.println(" }");
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,8 @@ class Example {
"""
package edu.wpi.first.epilogue;

import static edu.wpi.first.units.Units.Seconds;

import edu.wpi.first.epilogue.ExampleLogger;

public final class Epilogue {
Expand Down Expand Up @@ -77,6 +79,8 @@ public void endCompetition() {}
"""
package edu.wpi.first.epilogue;

import static edu.wpi.first.units.Units.Seconds;

import edu.wpi.first.epilogue.ExampleLogger;

public final class Epilogue {
Expand Down Expand Up @@ -119,6 +123,8 @@ class Example extends edu.wpi.first.wpilibj.TimedRobot {
"""
package edu.wpi.first.epilogue;

import static edu.wpi.first.units.Units.Seconds;

import edu.wpi.first.epilogue.ExampleLogger;

public final class Epilogue {
Expand Down Expand Up @@ -150,11 +156,18 @@ public static boolean shouldLog(Logged.Importance importance) {
* loop.
*/
public static void bind(edu.wpi.first.epilogue.Example robot) {
if (config.loggingPeriod == null) {
config.loggingPeriod = Seconds.of(robot.getPeriod());
}
if (config.loggingPeriodOffset == null) {
config.loggingPeriodOffset = config.loggingPeriod.divide(2);
}

robot.addPeriodic(() -> {
long start = System.nanoTime();
exampleLogger.tryUpdate(config.dataLogger.getSubLogger(config.root), robot, config.errorHandler);
edu.wpi.first.networktables.NetworkTableInstance.getDefault().getEntry("Epilogue/Stats/Last Run").setDouble((System.nanoTime() - start) / 1e6);
}, robot.getPeriod(), robot.getPeriod() / 2);
}, config.loggingPeriod.in(Seconds), config.loggingPeriodOffset.in(Seconds));
}
}
""";
Expand All @@ -179,6 +192,8 @@ class BetaBot extends edu.wpi.first.wpilibj.TimedRobot { }
"""
package edu.wpi.first.epilogue;

import static edu.wpi.first.units.Units.Seconds;

import edu.wpi.first.epilogue.AlphaBotLogger;
import edu.wpi.first.epilogue.BetaBotLogger;

Expand Down Expand Up @@ -212,11 +227,18 @@ public static boolean shouldLog(Logged.Importance importance) {
* loop.
*/
public static void bind(edu.wpi.first.epilogue.AlphaBot robot) {
if (config.loggingPeriod == null) {
config.loggingPeriod = Seconds.of(robot.getPeriod());
}
if (config.loggingPeriodOffset == null) {
config.loggingPeriodOffset = config.loggingPeriod.divide(2);
}

robot.addPeriodic(() -> {
long start = System.nanoTime();
alphaBotLogger.tryUpdate(config.dataLogger.getSubLogger(config.root), robot, config.errorHandler);
edu.wpi.first.networktables.NetworkTableInstance.getDefault().getEntry("Epilogue/Stats/Last Run").setDouble((System.nanoTime() - start) / 1e6);
}, robot.getPeriod(), robot.getPeriod() / 2);
}, config.loggingPeriod.in(Seconds), config.loggingPeriodOffset.in(Seconds));
}

/**
Expand All @@ -228,11 +250,18 @@ public static void bind(edu.wpi.first.epilogue.AlphaBot robot) {
* loop.
*/
public static void bind(edu.wpi.first.epilogue.BetaBot robot) {
if (config.loggingPeriod == null) {
config.loggingPeriod = Seconds.of(robot.getPeriod());
}
if (config.loggingPeriodOffset == null) {
config.loggingPeriodOffset = config.loggingPeriod.divide(2);
}

robot.addPeriodic(() -> {
long start = System.nanoTime();
betaBotLogger.tryUpdate(config.dataLogger.getSubLogger(config.root), robot, config.errorHandler);
edu.wpi.first.networktables.NetworkTableInstance.getDefault().getEntry("Epilogue/Stats/Last Run").setDouble((System.nanoTime() - start) / 1e6);
}, robot.getPeriod(), robot.getPeriod() / 2);
}, config.loggingPeriod.in(Seconds), config.loggingPeriodOffset.in(Seconds));
}
}
""";
Expand Down Expand Up @@ -272,6 +301,8 @@ class Example {
"""
package edu.wpi.first.epilogue;

import static edu.wpi.first.units.Units.Seconds;

import edu.wpi.first.epilogue.ExampleLogger;
import edu.wpi.first.epilogue.CustomLogger;

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,8 @@
import edu.wpi.first.epilogue.logging.errors.ErrorHandler;
import edu.wpi.first.epilogue.logging.errors.ErrorPrinter;
import edu.wpi.first.networktables.NetworkTableInstance;
import edu.wpi.first.units.Measure;
import edu.wpi.first.units.Time;

/**
* A configuration object to be used by the generated {@code Epilogue} class to customize its
Expand All @@ -23,6 +25,18 @@ public class EpilogueConfiguration {
*/
public DataLogger dataLogger = new NTDataLogger(NetworkTableInstance.getDefault());

/**
* The period Epilogue will log at. By default this is the period that the robot runs at. This is
* the field used by bind to configure speed when adding the periodic logging function
*/
public Measure<Time> loggingPeriod;

/**
* The offset from the periodic run that Epilogue will log at. By default this will be half of the
* robots period. This is the field used by bind when adding the periodic logging function
*/
public Measure<Time> loggingPeriodOffset;

/**
* The minimum importance level of data to be logged. Defaults to debug, which logs data of all
* importance levels. Any data tagged with an importance level lower than this will not be logged.
Expand Down
4 changes: 4 additions & 0 deletions styleguide/spotbugs-exclude.xml
Original file line number Diff line number Diff line change
Expand Up @@ -160,4 +160,8 @@
<Match>
<Bug pattern="EQ_DOESNT_OVERRIDE_EQUALS" />
</Match>
<Match>
<Bug pattern="UUF_UNUSED_PUBLIC_OR_PROTECTED_FIELD" />
<Class name="edu.wpi.first.epilogue.EpilogueConfiguration" />
</Match>
</FindBugsFilter>
Loading