From e069a79a327a9a0bceb46834c55a2850ef3fdc77 Mon Sep 17 00:00:00 2001 From: William Toth Date: Sun, 1 Dec 2024 17:59:00 -0600 Subject: [PATCH] Check for exposure setting validity before accessing. (#1618) If the exposure property for the generic USB camera settable was not valid for one camera in the list, then the thread would crash/hang and no cameras would show up in the list --- .../camera/USBCameras/GenericUSBCameraSettables.java | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/photon-core/src/main/java/org/photonvision/vision/camera/USBCameras/GenericUSBCameraSettables.java b/photon-core/src/main/java/org/photonvision/vision/camera/USBCameras/GenericUSBCameraSettables.java index 179d37502..5fa7eaa97 100644 --- a/photon-core/src/main/java/org/photonvision/vision/camera/USBCameras/GenericUSBCameraSettables.java +++ b/photon-core/src/main/java/org/photonvision/vision/camera/USBCameras/GenericUSBCameraSettables.java @@ -95,9 +95,11 @@ public class GenericUSBCameraSettables extends VisionSourceSettables { // first. var autoExpProp = findProperty("exposure_auto", "auto_exposure"); - exposureAbsProp = expProp.get(); - this.minExposure = exposureAbsProp.getMin(); - this.maxExposure = exposureAbsProp.getMax(); + if (expProp.isPresent()) { + exposureAbsProp = expProp.get(); + this.minExposure = exposureAbsProp.getMin(); + this.maxExposure = exposureAbsProp.getMax(); + } if (autoExpProp.isPresent()) { autoExposureProp = autoExpProp.get(); @@ -184,7 +186,7 @@ public class GenericUSBCameraSettables extends VisionSourceSettables { softSet("auto_exposure_bias", 12); softSet("iso_sensitivity_auto", 1); softSet("iso_sensitivity", 1); // Manual ISO adjustment by default - autoExposureProp.set(PROP_AUTO_EXPOSURE_ENABLED); + if (autoExposureProp != null) autoExposureProp.set(PROP_AUTO_EXPOSURE_ENABLED); } }