Skip to content

Commit d9b86a7

Browse files
authored
Revert "Make HardwareConfig a record" (#2142)
1 parent 1ac185c commit d9b86a7

File tree

8 files changed

+171
-76
lines changed

8 files changed

+171
-76
lines changed

photon-core/src/main/java/org/photonvision/common/configuration/HardwareConfig.java

Lines changed: 139 additions & 47 deletions
Original file line numberDiff line numberDiff line change
@@ -21,57 +21,102 @@
2121
import java.util.ArrayList;
2222

2323
@JsonIgnoreProperties(ignoreUnknown = true)
24-
public record HardwareConfig(
25-
String deviceName,
26-
String deviceLogoPath,
27-
String supportURL,
28-
// LED control
24+
public class HardwareConfig {
25+
public final String deviceName;
26+
public final String deviceLogoPath;
27+
public final String supportURL;
2928

30-
ArrayList<Integer> ledPins,
31-
String ledSetCommand,
32-
boolean ledsCanDim,
33-
ArrayList<Integer> ledBrightnessRange,
34-
String ledDimCommand,
35-
String ledBlinkCommand,
36-
ArrayList<Integer> statusRGBPins,
37-
// Metrics
29+
// LED control
30+
public final ArrayList<Integer> ledPins;
31+
public final String ledSetCommand;
32+
public final boolean ledsCanDim;
33+
public final ArrayList<Integer> ledBrightnessRange;
34+
public final String ledDimCommand;
35+
public final String ledBlinkCommand;
36+
public final ArrayList<Integer> statusRGBPins;
3837

39-
String cpuTempCommand,
40-
String cpuMemoryCommand,
41-
String cpuUtilCommand,
42-
String cpuThrottleReasonCmd,
43-
String cpuUptimeCommand,
44-
String gpuMemoryCommand,
45-
String ramUtilCommand,
46-
String gpuMemUsageCommand,
47-
String diskUsageCommand,
48-
// Device stuff
49-
String restartHardwareCommand,
50-
double vendorFOV) { // -1 for unmanaged
38+
// Metrics
39+
public final String cpuTempCommand;
40+
public final String cpuMemoryCommand;
41+
public final String cpuUtilCommand;
42+
public final String cpuThrottleReasonCmd;
43+
public final String cpuUptimeCommand;
44+
public final String gpuMemoryCommand;
45+
public final String ramUtilCommand;
46+
public final String gpuMemUsageCommand;
47+
public final String diskUsageCommand;
48+
49+
// Device stuff
50+
public final String restartHardwareCommand;
51+
public final double vendorFOV; // -1 for unmanaged
52+
53+
public HardwareConfig(
54+
String deviceName,
55+
String deviceLogoPath,
56+
String supportURL,
57+
ArrayList<Integer> ledPins,
58+
String ledSetCommand,
59+
boolean ledsCanDim,
60+
ArrayList<Integer> ledBrightnessRange,
61+
String ledDimCommand,
62+
String ledBlinkCommand,
63+
ArrayList<Integer> statusRGBPins,
64+
String cpuTempCommand,
65+
String cpuMemoryCommand,
66+
String cpuUtilCommand,
67+
String cpuThrottleReasonCmd,
68+
String cpuUptimeCommand,
69+
String gpuMemoryCommand,
70+
String ramUtilCommand,
71+
String gpuMemUsageCommand,
72+
String diskUsageCommand,
73+
String restartHardwareCommand,
74+
double vendorFOV) {
75+
this.deviceName = deviceName;
76+
this.deviceLogoPath = deviceLogoPath;
77+
this.supportURL = supportURL;
78+
this.ledPins = ledPins;
79+
this.ledSetCommand = ledSetCommand;
80+
this.ledsCanDim = ledsCanDim;
81+
this.ledBrightnessRange = ledBrightnessRange;
82+
this.ledDimCommand = ledDimCommand;
83+
this.ledBlinkCommand = ledBlinkCommand;
84+
this.statusRGBPins = statusRGBPins;
85+
this.cpuTempCommand = cpuTempCommand;
86+
this.cpuMemoryCommand = cpuMemoryCommand;
87+
this.cpuUtilCommand = cpuUtilCommand;
88+
this.cpuThrottleReasonCmd = cpuThrottleReasonCmd;
89+
this.cpuUptimeCommand = cpuUptimeCommand;
90+
this.gpuMemoryCommand = gpuMemoryCommand;
91+
this.ramUtilCommand = ramUtilCommand;
92+
this.gpuMemUsageCommand = gpuMemUsageCommand;
93+
this.diskUsageCommand = diskUsageCommand;
94+
this.restartHardwareCommand = restartHardwareCommand;
95+
this.vendorFOV = vendorFOV;
96+
}
5197

5298
public HardwareConfig() {
53-
this(
54-
"", // deviceName
55-
"", // deviceLogoPath
56-
"", // supportURL
57-
new ArrayList<>(), // ledPins
58-
"", // ledSetCommand
59-
false, // ledsCanDim
60-
new ArrayList<>(), // ledBrightnessRange
61-
"", // ledDimCommand
62-
"", // ledBlinkCommand
63-
new ArrayList<>(), // statusRGBPins
64-
"", // cpuTempCommand
65-
"", // cpuMemoryCommand
66-
"", // cpuUtilCommand
67-
"", // cpuThrottleReasonCmd
68-
"", // cpuUptimeCommand
69-
"", // gpuMemoryCommand
70-
"", // ramUtilCommand
71-
"", // gpuMemUsageCommand
72-
"", // diskUsageCommand
73-
"", // restartHardwareCommand
74-
-1); // vendorFOV
99+
deviceName = "";
100+
deviceLogoPath = "";
101+
supportURL = "";
102+
ledPins = new ArrayList<>();
103+
ledSetCommand = "";
104+
ledsCanDim = false;
105+
ledBrightnessRange = new ArrayList<>();
106+
ledDimCommand = "";
107+
ledBlinkCommand = "";
108+
statusRGBPins = new ArrayList<>();
109+
cpuTempCommand = "";
110+
cpuMemoryCommand = "";
111+
cpuUtilCommand = "";
112+
cpuThrottleReasonCmd = "";
113+
cpuUptimeCommand = "";
114+
gpuMemoryCommand = "";
115+
ramUtilCommand = "";
116+
gpuMemUsageCommand = "";
117+
diskUsageCommand = "";
118+
restartHardwareCommand = "";
119+
vendorFOV = -1;
75120
}
76121

77122
/**
@@ -96,4 +141,51 @@ public final boolean hasCommandsConfigured() {
96141
|| gpuMemUsageCommand != ""
97142
|| diskUsageCommand != "";
98143
}
144+
145+
@Override
146+
public String toString() {
147+
return "HardwareConfig[deviceName="
148+
+ deviceName
149+
+ ", deviceLogoPath="
150+
+ deviceLogoPath
151+
+ ", supportURL="
152+
+ supportURL
153+
+ ", ledPins="
154+
+ ledPins
155+
+ ", ledSetCommand="
156+
+ ledSetCommand
157+
+ ", ledsCanDim="
158+
+ ledsCanDim
159+
+ ", ledBrightnessRange="
160+
+ ledBrightnessRange
161+
+ ", ledDimCommand="
162+
+ ledDimCommand
163+
+ ", ledBlinkCommand="
164+
+ ledBlinkCommand
165+
+ ", statusRGBPins="
166+
+ statusRGBPins
167+
+ ", cpuTempCommand="
168+
+ cpuTempCommand
169+
+ ", cpuMemoryCommand="
170+
+ cpuMemoryCommand
171+
+ ", cpuUtilCommand="
172+
+ cpuUtilCommand
173+
+ ", cpuThrottleReasonCmd="
174+
+ cpuThrottleReasonCmd
175+
+ ", cpuUptimeCommand="
176+
+ cpuUptimeCommand
177+
+ ", gpuMemoryCommand="
178+
+ gpuMemoryCommand
179+
+ ", ramUtilCommand="
180+
+ ramUtilCommand
181+
+ ", gpuMemUsageCommand="
182+
+ gpuMemUsageCommand
183+
+ ", diskUsageCommand="
184+
+ diskUsageCommand
185+
+ ", restartHardwareCommand="
186+
+ restartHardwareCommand
187+
+ ", vendorFOV="
188+
+ vendorFOV
189+
+ "]";
190+
}
99191
}

photon-core/src/main/java/org/photonvision/common/dataflow/websocket/UIPhotonConfiguration.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -49,17 +49,17 @@ public static UIPhotonConfiguration programStateToUi(PhotonConfiguration c) {
4949
NetworkManager.getInstance().networkingIsDisabled),
5050
new UILightingConfig(
5151
c.getHardwareSettings().ledBrightnessPercentage,
52-
!c.getHardwareConfig().ledPins().isEmpty()),
52+
!c.getHardwareConfig().ledPins.isEmpty()),
5353
new UIGeneralSettings(
5454
PhotonVersion.versionString,
5555
// TODO add support for other types of GPU accel
5656
LibCameraJNILoader.getInstance().isSupported() ? "Zerocopy Libcamera Working" : "",
5757
MrCalJNILoader.getInstance().isLoaded(),
5858
c.neuralNetworkPropertyManager().getModels(),
5959
NeuralNetworkModelManager.getInstance().getSupportedBackends(),
60-
c.getHardwareConfig().deviceName().isEmpty()
60+
c.getHardwareConfig().deviceName.isEmpty()
6161
? Platform.getHardwareModel()
62-
: c.getHardwareConfig().deviceName(),
62+
: c.getHardwareConfig().deviceName,
6363
Platform.getPlatformName(),
6464
NetworkTablesManager.getInstance().conflictingHostname,
6565
NetworkTablesManager.getInstance().conflictingCameras),

photon-core/src/main/java/org/photonvision/common/hardware/GPIO/CustomGPIO.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -92,8 +92,8 @@ public void setBrightnessImpl(int brightness) {
9292

9393
public static void setConfig(HardwareConfig config) {
9494
if (Platform.isRaspberryPi()) return;
95-
commands.replace("setState", config.ledSetCommand());
96-
commands.replace("dim", config.ledDimCommand());
97-
commands.replace("blink", config.ledBlinkCommand());
95+
commands.replace("setState", config.ledSetCommand);
96+
commands.replace("dim", config.ledDimCommand);
97+
commands.replace("blink", config.ledBlinkCommand);
9898
}
9999
}

photon-core/src/main/java/org/photonvision/common/hardware/HardwareManager.java

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -97,22 +97,22 @@ private HardwareManager(HardwareConfig hardwareConfig, HardwareSettings hardware
9797
}
9898

9999
statusLED =
100-
hardwareConfig.statusRGBPins().size() == 3
101-
? new StatusLED(hardwareConfig.statusRGBPins())
100+
hardwareConfig.statusRGBPins.size() == 3
101+
? new StatusLED(hardwareConfig.statusRGBPins)
102102
: null;
103103

104104
if (statusLED != null) {
105105
TimedTaskManager.getInstance().addTask("StatusLEDUpdate", this::statusLEDUpdate, 150);
106106
}
107107

108-
var hasBrightnessRange = hardwareConfig.ledBrightnessRange().size() == 2;
108+
var hasBrightnessRange = hardwareConfig.ledBrightnessRange.size() == 2;
109109
visionLED =
110-
hardwareConfig.ledPins().isEmpty()
110+
hardwareConfig.ledPins.isEmpty()
111111
? null
112112
: new VisionLED(
113-
hardwareConfig.ledPins(),
114-
hasBrightnessRange ? hardwareConfig.ledBrightnessRange().get(0) : 0,
115-
hasBrightnessRange ? hardwareConfig.ledBrightnessRange().get(1) : 100,
113+
hardwareConfig.ledPins,
114+
hasBrightnessRange ? hardwareConfig.ledBrightnessRange.get(0) : 0,
115+
hasBrightnessRange ? hardwareConfig.ledBrightnessRange.get(1) : 100,
116116
pigpioSocket,
117117
ledModeState::set);
118118

@@ -161,7 +161,7 @@ public boolean restartDevice() {
161161
}
162162
}
163163
try {
164-
return shellExec.executeBashCommand(hardwareConfig.restartHardwareCommand()) == 0;
164+
return shellExec.executeBashCommand(hardwareConfig.restartHardwareCommand) == 0;
165165
} catch (IOException e) {
166166
logger.error("Could not restart device!", e);
167167
return false;

photon-core/src/main/java/org/photonvision/common/hardware/metrics/cmds/FileCmds.java

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -22,18 +22,18 @@
2222
public class FileCmds extends CmdBase {
2323
@Override
2424
public void initCmds(HardwareConfig config) {
25-
cpuTemperatureCommand = config.cpuTempCommand();
26-
cpuUtilizationCommand = config.cpuUtilCommand();
27-
cpuThrottleReasonCmd = config.cpuThrottleReasonCmd();
25+
cpuTemperatureCommand = config.cpuTempCommand;
26+
cpuUtilizationCommand = config.cpuUtilCommand;
27+
cpuThrottleReasonCmd = config.cpuThrottleReasonCmd;
2828

29-
ramMemCommand = config.cpuMemoryCommand();
30-
ramUtilCommand = config.ramUtilCommand();
29+
ramMemCommand = config.cpuMemoryCommand;
30+
ramUtilCommand = config.ramUtilCommand;
3131

32-
gpuMemCommand = config.gpuMemoryCommand();
33-
gpuMemUtilCommand = config.gpuMemUsageCommand();
32+
gpuMemCommand = config.gpuMemoryCommand;
33+
gpuMemUtilCommand = config.gpuMemUsageCommand;
3434

35-
diskUsageCommand = config.diskUsageCommand();
35+
diskUsageCommand = config.diskUsageCommand;
3636

37-
uptimeCommand = config.cpuUptimeCommand();
37+
uptimeCommand = config.cpuUptimeCommand;
3838
}
3939
}

photon-core/src/main/java/org/photonvision/vision/camera/csi/LibcameraGpuSource.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -100,7 +100,7 @@ public boolean isVendorCamera() {
100100

101101
@Override
102102
public boolean hasLEDs() {
103-
return (ConfigManager.getInstance().getConfig().getHardwareConfig().ledPins().size() > 0);
103+
return (ConfigManager.getInstance().getConfig().getHardwareConfig().ledPins.size() > 0);
104104
}
105105

106106
@Override

photon-core/src/main/java/org/photonvision/vision/processes/VisionModule.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -160,7 +160,7 @@ public VisionModule(PipelineManager pipelineManager, VisionSource visionSource)
160160

161161
// Set vendor FOV
162162
if (isVendorCamera()) {
163-
var fov = ConfigManager.getInstance().getConfig().getHardwareConfig().vendorFOV();
163+
var fov = ConfigManager.getInstance().getConfig().getHardwareConfig().vendorFOV;
164164
logger.info("Setting FOV of vendor camera to " + fov);
165165
visionSource.getSettables().setFOV(fov);
166166
}

photon-core/src/test/java/org/photonvision/hardware/HardwareConfigTest.java

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -34,10 +34,13 @@ public void loadJson() {
3434
System.out.println("Loading Hardware configs...");
3535
var config =
3636
new ObjectMapper().readValue(TestUtils.getHardwareConfigJson(), HardwareConfig.class);
37-
assertEquals(config.deviceName(), "PhotonVision");
38-
assertEquals(config.deviceLogoPath(), "photonvision.png");
39-
assertEquals(config.supportURL(), "https://support.photonvision.com");
40-
assertArrayEquals(config.ledPins().stream().mapToInt(i -> i).toArray(), new int[] {2, 13});
37+
assertEquals(config.deviceName, "PhotonVision");
38+
assertEquals(config.deviceLogoPath, "photonvision.png");
39+
assertEquals(config.supportURL, "https://support.photonvision.com");
40+
// Ensure defaults are not null
41+
assertEquals(config.cpuThrottleReasonCmd, "");
42+
assertEquals(config.diskUsageCommand, "");
43+
assertArrayEquals(config.ledPins.stream().mapToInt(i -> i).toArray(), new int[] {2, 13});
4144
CustomGPIO.setConfig(config);
4245

4346
} catch (IOException e) {

0 commit comments

Comments
 (0)