diff --git a/.run/Build Robot.run.xml b/.run/Build Robot.run.xml
new file mode 100644
index 000000000..21ee0a051
--- /dev/null
+++ b/.run/Build Robot.run.xml
@@ -0,0 +1,24 @@
+
+
+
+
+
+
+
+
+
+
+
+ true
+ true
+ false
+ false
+
+
+
\ No newline at end of file
diff --git a/src/main/java/xbot/common/command/BaseRobot.java b/src/main/java/xbot/common/command/BaseRobot.java
index 97caa33b7..4055a1c54 100644
--- a/src/main/java/xbot/common/command/BaseRobot.java
+++ b/src/main/java/xbot/common/command/BaseRobot.java
@@ -261,9 +261,10 @@ protected void sharedPeriodic() {
// Then, refresh any Subsystem or other components that implement DataFrameRefreshable.
double dataFrameStart = getPerformanceTimestampInMs();
- for (DataFrameRefreshable refreshable : dataFrameRefreshables) {
- refreshable.refreshDataFrame();
- }
+ refreshAllSubsystems();
+// for (DataFrameRefreshable refreshable : dataFrameRefreshables) {
+// refreshable.refreshDataFrame();
+// }
double dataFrameEnd = getPerformanceTimestampInMs();
Logger.recordOutput("RefreshDevicesMs", dataFrameEnd - dataFrameStart);
@@ -275,6 +276,11 @@ protected void sharedPeriodic() {
outsidePeriodicStart = getPerformanceTimestampInMs();
}
+ public void refreshAllSubsystems() {
+ for (BaseSubsystem subsystem : DataFrameRegistry.getAllSubsystems()) {
+ subsystem.refreshDataFrame();
+ }
+ }
@Override
public void simulationInit() {
diff --git a/src/main/java/xbot/common/command/BaseSubsystem.java b/src/main/java/xbot/common/command/BaseSubsystem.java
index 74d4d3bea..00b570b1f 100644
--- a/src/main/java/xbot/common/command/BaseSubsystem.java
+++ b/src/main/java/xbot/common/command/BaseSubsystem.java
@@ -1,8 +1,5 @@
package xbot.common.command;
-import java.util.ArrayList;
-import java.util.List;
-
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
@@ -15,20 +12,23 @@ public abstract class BaseSubsystem extends SubsystemBase implements IPropertySu
protected final Logger log;
protected final AKitLogger aKitLog;
- protected final List dataFrameRefreshables = new ArrayList<>();
+// protected final List dataFrameRefreshables = new ArrayList<>();
public BaseSubsystem() {
+ super();
log = LogManager.getLogger(this.getName());
aKitLog = new AKitLogger(this);
+
+ DataFrameRegistry.registerSubsystem(this);
}
public String getPrefix() {
return this.getName() + "/";
}
- protected void registerDataFrameRefreshable(DataFrameRefreshable refreshable) {
- dataFrameRefreshables.add(refreshable);
- }
+// protected void registerDataFrameRefreshable(DataFrameRefreshable refreshable) {
+// dataFrameRefreshables.add(refreshable);
+// }
/**
* This method is called on each {@link edu.wpi.first.wpilibj2.command.CommandScheduler} loop.
@@ -43,8 +43,5 @@ public void periodic() {
@Override
public void refreshDataFrame() {
- for (DataFrameRefreshable refreshable : dataFrameRefreshables) {
- refreshable.refreshDataFrame();
- }
}
}
diff --git a/src/main/java/xbot/common/command/DataFrameRegistry.java b/src/main/java/xbot/common/command/DataFrameRegistry.java
new file mode 100644
index 000000000..2d7937306
--- /dev/null
+++ b/src/main/java/xbot/common/command/DataFrameRegistry.java
@@ -0,0 +1,14 @@
+package xbot.common.command;
+
+import java.util.ArrayList;
+import java.util.List;
+
+public final class DataFrameRegistry {
+ private static final List subsystems = new ArrayList<>();
+ public static void registerSubsystem(BaseSubsystem s) {
+ subsystems.add(s);
+ }
+ public static List getAllSubsystems() {
+ return subsystems;
+ }
+}
\ No newline at end of file
diff --git a/src/main/java/xbot/common/properties/IPropertySupport.java b/src/main/java/xbot/common/properties/IPropertySupport.java
index cdabbcf7e..c231e9373 100644
--- a/src/main/java/xbot/common/properties/IPropertySupport.java
+++ b/src/main/java/xbot/common/properties/IPropertySupport.java
@@ -2,4 +2,6 @@
public interface IPropertySupport {
public String getPrefix();
+
+// void refreshDataFrame();
}
\ No newline at end of file