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.USBCameras;
019
020import edu.wpi.first.cscore.UsbCamera;
021import org.photonvision.common.configuration.CameraConfiguration;
022
023public class ArduOV9782CameraSettables extends GenericUSBCameraSettables {
024    public ArduOV9782CameraSettables(CameraConfiguration configuration, UsbCamera camera) {
025        super(configuration, camera);
026        // Arbitrary, worked well in Chris's basement
027        lastWhiteBalanceTemp = 5300;
028
029        // According to Chris' pi, running an older kernel at least
030        this.minExposure = 1;
031        this.maxExposure = 70;
032    }
033
034    @Override
035    public void setAllCamDefaults() {
036        softSet("power_line_frequency", 2); // Assume 60Hz USA
037        softSet("exposure_metering_mode", 0);
038        softSet("exposure_dynamic_framerate", 0);
039        softSet("white_balance_automatic", 0);
040        softSet("white_balance_temperature", lastWhiteBalanceTemp);
041    }
042
043    @Override
044    protected void setUpExposureProperties() {
045        super.setUpExposureProperties();
046
047        // Property limits are incorrect
048        this.minExposure = 1;
049        this.maxExposure = 60;
050    }
051}