001/*
002 * Copyright (C) Photon Vision.
003 *
004 * This program is free software: you can redistribute it and/or modify
005 * it under the terms of the GNU General Public License as published by
006 * the Free Software Foundation, either version 3 of the License, or
007 * (at your option) any later version.
008 *
009 * This program is distributed in the hope that it will be useful,
010 * but WITHOUT ANY WARRANTY; without even the implied warranty of
011 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
012 * GNU General Public License for more details.
013 *
014 * You should have received a copy of the GNU General Public License
015 * along with this program.  If not, see <https://www.gnu.org/licenses/>.
016 */
017
018package org.photonvision.vision.camera;
019
020import com.fasterxml.jackson.annotation.JsonAlias;
021
022public enum CameraQuirk {
023    /** Camera settable for controllable image gain */
024    Gain,
025    /** Only certain discrete exposure settings work */
026    LifeCamControls,
027    /** Auto-Exposure property uses 1/0, rather than 3/1 */
028    PsEyeControls,
029    /** Cap at 100FPS for high-bandwidth cameras */
030    FPSCap100,
031    /** Separate red/blue gain controls available */
032    @JsonAlias("AWBGain") // remove after https://github.com/PhotonVision/photonvision/issues/1488
033    AwbRedBlueGain,
034    /** Will not work with photonvision - Logitech C270 at least */
035    CompletelyBroken,
036    /** Has adjustable focus and autofocus switch */
037    AdjustableFocus,
038    /** Changing FPS repeatedly with small delay does not work correctly */
039    StickyFPS,
040    /** Camera is an arducam. This means it shares VID/PID with other arducams (ew) */
041    ArduCamCamera,
042    /**
043     * Camera is an arducam USB ov9281 which has a funky exposure issue where it is defined in v4l as
044     * 1-5000 instead of 1-75
045     */
046    @JsonAlias("ArduOV9281") // remove after https://github.com/PhotonVision/photonvision/issues/1488
047    ArduOV9281Controls,
048    /** Dummy quirk to tell OV2311 from OV9281 */
049    // from 2024.3.1
050    @JsonAlias("ArduOV2311") // remove after https://github.com/PhotonVision/photonvision/issues/1488
051    ArduOV2311Controls,
052    ArduOV9782Controls,
053    /**
054     * Camera is one brand of USB OV9281 which also has incorrect v4l exposure times Real range is
055     * more like 0-500
056     */
057    InnoOV9281Controls,
058    ArduOV9782,
059    /** Camera has odd exposure range, and supports gain control */
060    See3Cam_24CUG,
061}