diff --git a/photon-server/src/main/java/org/photonvision/vision/processes/VisionSourceManager.java b/photon-server/src/main/java/org/photonvision/vision/processes/VisionSourceManager.java index b191da59e..28b9f97d7 100644 --- a/photon-server/src/main/java/org/photonvision/vision/processes/VisionSourceManager.java +++ b/photon-server/src/main/java/org/photonvision/vision/processes/VisionSourceManager.java @@ -21,77 +21,73 @@ import edu.wpi.cscore.UsbCamera; import edu.wpi.cscore.UsbCameraInfo; import java.util.*; import java.util.stream.Collectors; -import org.apache.commons.lang3.NotImplementedException; import org.apache.commons.lang3.StringUtils; import org.photonvision.common.configuration.CameraConfiguration; import org.photonvision.common.logging.LogGroup; import org.photonvision.common.logging.Logger; import org.photonvision.vision.camera.CameraType; import org.photonvision.vision.camera.USBCameraSource; -import org.photonvision.vision.frame.provider.NetworkFrameProvider; public class VisionSourceManager { private static final Logger logger = new Logger(VisionSourceManager.class, LogGroup.Camera); private static final List deviceBlacklist = List.of("bcm2835-isp"); - private static List filterAllowedDevices(List allDevices) { - List filteredDevices = new ArrayList<>(); - for (var device : allDevices) { - if (deviceBlacklist.contains(device.name)) { - logger.info( - "Skipping blacklisted device: \"" + device.name + "\" at \"" + device.path + "\""); - } else { - allDevices.add(device); - logger.info( - "Adding local video device - \"" + device.name + "\" at \"" + device.path + "\""); - } - } - return filteredDevices; - } - /** * Load vision sources based on currently connected hardware. * * @param loadedConfigs The {@link CameraConfiguration}s loaded from disk. */ public static List loadAllSources(Collection loadedConfigs) { - logger.trace(() -> "Loading all sources..."); - - List usbCamInfos = Arrays.asList(UsbCamera.enumerateUsbCameras()); - logger.trace(() -> "CSCore detected " + usbCamInfos.size() + " USB cameras!"); - - for (var usbCamInfo : usbCamInfos) { - logger.info( - "Adding local video device - \"" + usbCamInfo.name + "\" at \"" + usbCamInfo.path + "\""); - } - - return LoadAllSources(loadedConfigs, usbCamInfos); + return loadAllSources( + loadedConfigs, filterAllowedDevices(Arrays.asList(UsbCamera.enumerateUsbCameras()))); } /** - * Load vision sources based on currently connected hardware and preexisting configs. + * Load vision sources based on given cameras and configs. * * @param loadedConfigs The configs loaded from disk. - * @param detectedCamInfos The {@link UsbCameraInfo}s detected by {@link - * UsbCamera#enumerateUsbCameras()}. + * @param detectedCamInfos The cameras to attempt connection to. */ - public static List LoadAllSources( + public static List loadAllSources( Collection loadedConfigs, List detectedCamInfos) { var loadedUsbCamConfigs = loadedConfigs.stream() .filter(configuration -> configuration.cameraType == CameraType.UsbCamera) .collect(Collectors.toList()); - // var HttpCamerasConfiguration = camerasConfiguration.stream().filter(configuration -> - // configuration.cameraType == CameraType.HttpCamera); var matchedCameras = matchUSBCameras(detectedCamInfos, loadedUsbCamConfigs); // turn the matched cameras into VisionSources return loadVisionSourcesFromCamConfigs(matchedCameras); } - private static NetworkFrameProvider loadHTTPCamera(CameraConfiguration config) { - throw new NotImplementedException(""); + private static List filterAllowedDevices(List allDevices) { + List filteredDevices = new ArrayList<>(); + for (var device : allDevices) { + if (deviceBlacklist.contains(device.name)) { + logger.info( + "Skipping blacklisted device - \"" + + device.name + + "\" at \"" + + device.path + + "\" with VID/PID: " + + device.vendorId + + ":" + + device.productId); + } else { + filteredDevices.add(device); + logger.info( + "Adding local video device - \"" + + device.name + + "\" at \"" + + device.path + + "\" with VID/PID: " + + device.vendorId + + ":" + + device.productId); + } + } + return filteredDevices; } /** diff --git a/photon-server/src/test/java/org/photonvision/vision/processes/VisionSourceManagerTest.java b/photon-server/src/test/java/org/photonvision/vision/processes/VisionSourceManagerTest.java index 564e1da7c..e6241ef3c 100644 --- a/photon-server/src/test/java/org/photonvision/vision/processes/VisionSourceManagerTest.java +++ b/photon-server/src/test/java/org/photonvision/vision/processes/VisionSourceManagerTest.java @@ -62,7 +62,7 @@ public class VisionSourceManagerTest { @Test public void visionSourceTest() { - List i = VisionSourceManager.LoadAllSources(camConfig, usbCameraInfos); + List i = VisionSourceManager.loadAllSources(camConfig, usbCameraInfos); for (var source : i) { Assertions.assertEquals(source, usbCameraSources.get(i.indexOf(source))); }