From 0f744da9ca178e90a453a3f74d9c0e7e1eb2b061 Mon Sep 17 00:00:00 2001 From: Sam948-byte Date: Mon, 21 Jul 2025 21:20:59 -0500 Subject: [PATCH 1/5] update metrics publisher hostname when hostname is changed --- .../hardware/metrics/MetricsManager.java | 23 +++++++++++++++++-- 1 file changed, 21 insertions(+), 2 deletions(-) diff --git a/photon-core/src/main/java/org/photonvision/common/hardware/metrics/MetricsManager.java b/photon-core/src/main/java/org/photonvision/common/hardware/metrics/MetricsManager.java index 60b046fc21..ddfdd12a66 100644 --- a/photon-core/src/main/java/org/photonvision/common/hardware/metrics/MetricsManager.java +++ b/photon-core/src/main/java/org/photonvision/common/hardware/metrics/MetricsManager.java @@ -17,7 +17,6 @@ package org.photonvision.common.hardware.metrics; -import edu.wpi.first.cscore.CameraServerJNI; import edu.wpi.first.networktables.ProtobufPublisher; import java.io.PrintWriter; import java.io.StringWriter; @@ -47,7 +46,9 @@ public class MetricsManager { NetworkTablesManager.getInstance() .kRootTable .getSubTable("/metrics") - .getProtobufTopic(CameraServerJNI.getHostname(), DeviceMetrics.proto) + .getProtobufTopic( + ConfigManager.getInstance().getConfig().getNetworkConfig().hostname, + DeviceMetrics.proto) .publish(); private final ShellExec runCommand = new ShellExec(true, true); @@ -244,6 +245,24 @@ public double getUptime() { public void publishMetrics() { logger.debug("Publishing Metrics..."); + + // Check that the hostname hasn't changed + if (!metricPublisher + .getTopic() + .getName() + .equals(ConfigManager.getInstance().getConfig().getNetworkConfig().hostname)) { + logger.warn("Metrics publisher name does not match hostname! Reinitializing publisher..."); + metricPublisher.close(); + metricPublisher = + NetworkTablesManager.getInstance() + .kCoprocTable + .getSubTable("/metrics") + .getProtobufTopic( + ConfigManager.getInstance().getConfig().getNetworkConfig().hostname, + DeviceMetrics.proto) + .publish(); + } + var metrics = new DeviceMetrics( this.getCpuTemp(), From 3fe754e95b9a4baf2452875e547f3b7967c00f5f Mon Sep 17 00:00:00 2001 From: Sam948-byte Date: Mon, 21 Jul 2025 23:36:05 -0500 Subject: [PATCH 2/5] JNIs back on the menu boys --- .../common/hardware/metrics/MetricsManager.java | 14 ++++---------- 1 file changed, 4 insertions(+), 10 deletions(-) diff --git a/photon-core/src/main/java/org/photonvision/common/hardware/metrics/MetricsManager.java b/photon-core/src/main/java/org/photonvision/common/hardware/metrics/MetricsManager.java index ddfdd12a66..ff4438b885 100644 --- a/photon-core/src/main/java/org/photonvision/common/hardware/metrics/MetricsManager.java +++ b/photon-core/src/main/java/org/photonvision/common/hardware/metrics/MetricsManager.java @@ -17,6 +17,7 @@ package org.photonvision.common.hardware.metrics; +import edu.wpi.first.cscore.CameraServerJNI; import edu.wpi.first.networktables.ProtobufPublisher; import java.io.PrintWriter; import java.io.StringWriter; @@ -46,9 +47,7 @@ public class MetricsManager { NetworkTablesManager.getInstance() .kRootTable .getSubTable("/metrics") - .getProtobufTopic( - ConfigManager.getInstance().getConfig().getNetworkConfig().hostname, - DeviceMetrics.proto) + .getProtobufTopic(CameraServerJNI.getHostname(), DeviceMetrics.proto) .publish(); private final ShellExec runCommand = new ShellExec(true, true); @@ -247,19 +246,14 @@ public void publishMetrics() { logger.debug("Publishing Metrics..."); // Check that the hostname hasn't changed - if (!metricPublisher - .getTopic() - .getName() - .equals(ConfigManager.getInstance().getConfig().getNetworkConfig().hostname)) { + if (!metricPublisher.getTopic().getName().equals(CameraServerJNI.getHostname())) { logger.warn("Metrics publisher name does not match hostname! Reinitializing publisher..."); metricPublisher.close(); metricPublisher = NetworkTablesManager.getInstance() .kCoprocTable .getSubTable("/metrics") - .getProtobufTopic( - ConfigManager.getInstance().getConfig().getNetworkConfig().hostname, - DeviceMetrics.proto) + .getProtobufTopic(CameraServerJNI.getHostname(), DeviceMetrics.proto) .publish(); } From 7cbdd7766da5f97c57f19fdc32670319efcd211e Mon Sep 17 00:00:00 2001 From: Sam Freund Date: Tue, 22 Jul 2025 18:30:41 -0500 Subject: [PATCH 3/5] Update MetricsManager.java --- .../photonvision/common/hardware/metrics/MetricsManager.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/photon-core/src/main/java/org/photonvision/common/hardware/metrics/MetricsManager.java b/photon-core/src/main/java/org/photonvision/common/hardware/metrics/MetricsManager.java index ff4438b885..b609a2e0d5 100644 --- a/photon-core/src/main/java/org/photonvision/common/hardware/metrics/MetricsManager.java +++ b/photon-core/src/main/java/org/photonvision/common/hardware/metrics/MetricsManager.java @@ -251,7 +251,7 @@ public void publishMetrics() { metricPublisher.close(); metricPublisher = NetworkTablesManager.getInstance() - .kCoprocTable + .kRootTable .getSubTable("/metrics") .getProtobufTopic(CameraServerJNI.getHostname(), DeviceMetrics.proto) .publish(); From 6100d5ecd8f276c97d69f225a9f357166eba7a5e Mon Sep 17 00:00:00 2001 From: Sam948-byte Date: Tue, 22 Jul 2025 22:16:23 -0500 Subject: [PATCH 4/5] update topic name logic --- .../common/hardware/metrics/MetricsManager.java | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/photon-core/src/main/java/org/photonvision/common/hardware/metrics/MetricsManager.java b/photon-core/src/main/java/org/photonvision/common/hardware/metrics/MetricsManager.java index b609a2e0d5..a1047787de 100644 --- a/photon-core/src/main/java/org/photonvision/common/hardware/metrics/MetricsManager.java +++ b/photon-core/src/main/java/org/photonvision/common/hardware/metrics/MetricsManager.java @@ -244,9 +244,13 @@ public double getUptime() { public void publishMetrics() { logger.debug("Publishing Metrics..."); + logger.debug("Hostname: " + CameraServerJNI.getHostname()); + logger.debug(metricPublisher.getTopic().getName()); + + String[] topicParts = metricPublisher.getTopic().getName().split("/"); // Check that the hostname hasn't changed - if (!metricPublisher.getTopic().getName().equals(CameraServerJNI.getHostname())) { + if (!CameraServerJNI.getHostname().equals(topicParts[topicParts.length - 1])) { logger.warn("Metrics publisher name does not match hostname! Reinitializing publisher..."); metricPublisher.close(); metricPublisher = From 88c05d73dca165b84f1b4a897970ef291c24857e Mon Sep 17 00:00:00 2001 From: Sam948-byte Date: Wed, 23 Jul 2025 19:34:50 -0500 Subject: [PATCH 5/5] Change logic to use basenameKey --- .../common/hardware/metrics/MetricsManager.java | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/photon-core/src/main/java/org/photonvision/common/hardware/metrics/MetricsManager.java b/photon-core/src/main/java/org/photonvision/common/hardware/metrics/MetricsManager.java index cac9b6e781..222bc06345 100644 --- a/photon-core/src/main/java/org/photonvision/common/hardware/metrics/MetricsManager.java +++ b/photon-core/src/main/java/org/photonvision/common/hardware/metrics/MetricsManager.java @@ -18,6 +18,7 @@ package org.photonvision.common.hardware.metrics; import edu.wpi.first.cscore.CameraServerJNI; +import edu.wpi.first.networktables.NetworkTable; import edu.wpi.first.networktables.ProtobufPublisher; import java.io.PrintWriter; import java.io.StringWriter; @@ -245,10 +246,9 @@ public double getUptime() { public void publishMetrics() { logger.debug("Publishing Metrics..."); - String[] topicParts = metricPublisher.getTopic().getName().split("/"); - // Check that the hostname hasn't changed - if (!CameraServerJNI.getHostname().equals(topicParts[topicParts.length - 1])) { + if (!CameraServerJNI.getHostname() + .equals(NetworkTable.basenameKey(metricPublisher.getTopic().getName()))) { logger.warn("Metrics publisher name does not match hostname! Reinitializing publisher..."); metricPublisher.close(); metricPublisher =