mirror of
https://github.com/PhotonVision/photonvision
synced 2026-07-03 03:01:40 +00:00
Restart NT client every 5 seconds if not connected (#467)
Fun hack to get around photonvision not connecting if it boots before robot code starts Co-authored-by: shueja-personal <32416547+shueja-personal@users.noreply.github.com>
This commit is contained in:
@@ -23,6 +23,7 @@ import edu.wpi.first.networktables.NetworkTableInstance;
|
|||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
import java.util.function.Consumer;
|
import java.util.function.Consumer;
|
||||||
import org.photonvision.PhotonVersion;
|
import org.photonvision.PhotonVersion;
|
||||||
|
import org.photonvision.common.configuration.ConfigManager;
|
||||||
import org.photonvision.common.configuration.NetworkConfig;
|
import org.photonvision.common.configuration.NetworkConfig;
|
||||||
import org.photonvision.common.dataflow.DataChangeService;
|
import org.photonvision.common.dataflow.DataChangeService;
|
||||||
import org.photonvision.common.dataflow.events.OutgoingUIEvent;
|
import org.photonvision.common.dataflow.events.OutgoingUIEvent;
|
||||||
@@ -39,6 +40,7 @@ public class NetworkTablesManager {
|
|||||||
|
|
||||||
private NetworkTablesManager() {
|
private NetworkTablesManager() {
|
||||||
ntInstance.addLogger(new NTLogger(), 0, 255); // to hide error messages
|
ntInstance.addLogger(new NTLogger(), 0, 255); // to hide error messages
|
||||||
|
TimedTaskManager.getInstance().addTask("NTManager", this::ntTick, 5000);
|
||||||
}
|
}
|
||||||
|
|
||||||
private static NetworkTablesManager INSTANCE;
|
private static NetworkTablesManager INSTANCE;
|
||||||
@@ -129,4 +131,16 @@ public class NetworkTablesManager {
|
|||||||
ntInstance.startServer();
|
ntInstance.startServer();
|
||||||
broadcastVersion();
|
broadcastVersion();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// So it seems like if Photon starts before the robot NT server does, and both aren't static IP,
|
||||||
|
// it'll never connect. This hack works around it by restarting the client/server while the nt
|
||||||
|
// instance
|
||||||
|
// isn't connected, same as clicking the save button in the settings menu (or restarting the
|
||||||
|
// service)
|
||||||
|
private void ntTick() {
|
||||||
|
if (!ntInstance.isConnected()
|
||||||
|
&& !ConfigManager.getInstance().getConfig().getNetworkConfig().runNTServer) {
|
||||||
|
setConfig(ConfigManager.getInstance().getConfig().getNetworkConfig());
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user