From 40680255724a962357140a8ad03b21b99a5ac3a9 Mon Sep 17 00:00:00 2001 From: Matt Date: Fri, 5 Jan 2024 21:40:06 -0700 Subject: [PATCH] Check all new prop names not just exposure time (#1080) Fixes v4l renaming prop names and OV9281 exposure min/max being wrong by introducing new UI control --- .../components/cameras/CameraSettingsCard.vue | 56 ++++++-- .../stores/settings/CameraSettingsStore.ts | 3 +- photon-client/src/types/SettingTypes.ts | 43 ++++++- photon-client/src/types/WebsocketDataTypes.ts | 4 +- .../configuration/CameraConfiguration.java | 7 + .../configuration/PhotonConfiguration.java | 2 + .../vision/camera/CameraQuirk.java | 9 ++ .../vision/camera/QuirkyCamera.java | 100 ++++++++++++++- .../vision/camera/USBCameraSource.java | 121 +++++++++++++----- .../vision/processes/VisionModule.java | 11 ++ .../common/configuration/SQLConfigTest.java | 2 + .../photonvision/server/RequestHandler.java | 22 +++- 12 files changed, 331 insertions(+), 49 deletions(-) diff --git a/photon-client/src/components/cameras/CameraSettingsCard.vue b/photon-client/src/components/cameras/CameraSettingsCard.vue index 844b6d3f6..4e9ef78ac 100644 --- a/photon-client/src/components/cameras/CameraSettingsCard.vue +++ b/photon-client/src/components/cameras/CameraSettingsCard.vue @@ -3,13 +3,13 @@ import PvSelect from "@/components/common/pv-select.vue"; import PvNumberInput from "@/components/common/pv-number-input.vue"; import { useCameraSettingsStore } from "@/stores/settings/CameraSettingsStore"; import { useStateStore } from "@/stores/StateStore"; -import { ref, watchEffect } from "vue"; +import { computed, ref, watchEffect } from "vue"; const currentFov = ref(); const saveCameraSettings = () => { useCameraSettingsStore() - .updateCameraSettings({ fov: currentFov.value }, false) + .updateCameraSettings({ fov: currentFov.value, quirksToChange: quirksToChange.value }, false) .then((response) => { useCameraSettingsStore().currentCameraSettings.fov.value = currentFov.value; useStateStore().showSnackbarMessage({ @@ -41,6 +41,43 @@ const saveCameraSettings = () => { watchEffect(() => { currentFov.value = useCameraSettingsStore().currentCameraSettings.fov.value; }); + +const quirksToChange = ref({ + ArduOV9281: false, + ArduOV2311: false +}); + +let arducams = ["N/A", "OV9281", "OV2311"]; + +const arducamModel = computed({ + get() { + const quirks = useCameraSettingsStore().currentCameraSettings.cameraQuirks.quirks; + + if (quirks.ArduOV9281) { + return 1; + } else if (quirks.ArduOV2311) { + return 2; + } + return 0; + }, + set(value) { + if (value === 1) { + quirksToChange.value.ArduOV9281 = true; + quirksToChange.value.ArduOV2311 = false; + } else if (value === 2) { + quirksToChange.value.ArduOV9281 = false; + quirksToChange.value.ArduOV2311 = true; + } else { + quirksToChange.value.ArduOV9281 = false; + quirksToChange.value.ArduOV2311 = false; + } + } +}); + +const isArducam = () => { + const settings = useCameraSettingsStore().currentCameraSettings; + return settings.cameraQuirks.quirks.ArduCamCamera; +};