/******************************************************************** * Copyright (c) 2020 Kneron, Inc. All Rights Reserved. * * The information contained herein is property of Kneron, Inc. * Terms and conditions of usage are described in detail in Kneron * STANDARD SOFTWARE LICENSE AGREEMENT. * * Licensees are granted free, non-transferable use of the information. * NO WARRANTY of ANY KIND is provided. This heading must NOT be removed * from the file. ********************************************************************/ #ifndef __UVC_CAMERA_H__ #define __UVC_CAMERA_H__ #include #include #include "kmdw_status.h" #define SCANNING_MODE 0x1 #define AUTO_EXPOSURE_MODE 0x2 #define AUTO_EXPOSURE_PRIORITY 0x4 #define EXPOSURE_TIME_ABSOLUTE 0x8 #define EXPOSURE_TIME_RELATIVE 0x10 #define FOCUS_ABSOLUTE 0x20 #define FOCUS_RELATIVE 0x40 #define IRIS_ABSOLUTE 0x80 #define IRIS_RELATIVE 0x100 #define ZOOM_ABSOLUTE 0x200 #define ZOOM_RELATIVE 0x400 #define PANTILT_ABSOLUTE 0x800 #define PANTILT_RELATIVE 0x1000 #define ROLL_ABSOLUTE 0x2000 #define ROLL_RELATIVE 0x4000 #define FOCUS_AUTO 0x20000 #define PRIVACY 0x40000 #define FOCUS_SIMPLE 0x80000 #define WINDOW 0x100000 #define REGION_OF_INTEREST 0x200000 #define BRIGHTNESS 0x1 #define CONTRAST 0x2 #define HUE 0x4 #define SATURATION 0x8 #define SHARPNESS 0x10 #define GAMMA 0x20 #define WHITE_BALANCE_TEMPERATURE 0x40 #define WHITE_BALANCE_COMPONENT 0x80 #define BACKLIGHT_COMPENSATION 0x100 #define GAIN 0x200 #define POWER_LINE_FREQUENCY 0x400 #define HUE_AUTO 0x800 #define WHITE_BALANCE_TEMPERATURE_AUTO 0x1000 #define WHITE_BALANCE_COMPONENT_AUTO 0x2000 #define DIGITAL_MULTIPLIER 0x4000 #define DIGITAL_MULTIPLIER_LIMIT 0x8000 #define ANALOG_VIDEO_STANDARD 0x10000 #define ANALOG_VIDEO_LOCK_STATUS 0x20000 #define CONTRAST_AUTO 0x40000 #define UVC_SET_CUR 0x01 #define UVC_GET_CUR 0x81 #define UVC_GET_MIN 0x82 #define UVC_GET_MAX 0x83 #define UVC_GET_RES 0x84 #define UVC_GET_LEN 0x85 #define UVC_GET_INFO 0x86 #define UVC_GET_DEF 0x87 #define SCANNING_MODE_CTL_INTERLACED 0x0 #define SCANNING_MODE_CTL_PROGRESSIVE 0x1 enum scm_req { SCM_SET_CUR = 0x01, SCM_GET_CUR = 0x81, SCM_GET_CAP = 0x86 }; struct ct_scm { enum scm_req req; uint8_t caps; bool bScanningMode; }; #define EXPOSURE_MANUAL_MODE 0x1 #define EXPOSURE_AUTO_MODE 0x2 #define EXPOSURE_SHUTTER_PRIORITY_MODE 0x4 #define EXPOSURE_APERTURE_PRIORITY_MODE 0x8 enum aem_req { AEM_SET_CUR = 0x01, AEM_GET_CUR = 0x81, AEM_GET_RES = 0x84, AEM_GET_CAP = 0x86, AEM_GET_DEF = 0x87 }; struct ct_aem { enum aem_req req; uint8_t caps; uint8_t bAutoExposureMode; }; #define EXPOSURE_FRAME_RATE_CONSTANT 0x0 #define EXPOSURE_FRAME_RATE_VARIED 0x1 enum aep_req { AEP_SET_CUR = 0x01, AEP_GET_CUR = 0x81, AEP_GET_CAP = 0x86 }; struct ct_aep { enum aep_req req; uint8_t caps; uint8_t bAutoExposurePriority; }; enum eta_req { ETA_SET_CUR = 0x01, ETA_GET_CUR = 0x81, ETA_GET_MIN = 0x82, ETA_GET_MAX = 0x83, ETA_GET_RES = 0x84, ETA_GET_CAP = 0x86, ETA_GET_DEF = 0x87, }; struct ct_eta { enum eta_req req; uint8_t caps; uint32_t bExposureTimeAbsolute; }; enum etr_req { ETR_SET_CUR = 0x01, ETR_GET_CUR = 0x81, ETR_GET_CAP = 0x86 }; struct ct_etr { enum etr_req req; uint8_t caps; int8_t bExposureTimeRelative; }; enum focus_a_req { FA_SET_CUR = 0x01, FA_GET_CUR = 0x81, FA_GET_MIN = 0x82, FA_GET_MAX = 0x83, FA_GET_RES = 0x84, FA_GET_CAP = 0x86, FA_GET_DEF = 0x87, }; struct ct_focus_a { enum focus_a_req req; uint8_t caps; uint16_t wFocusAbsolute; }; enum fr_req { FR_SET_CUR = 0x01, FR_GET_CUR = 0x81, FR_GET_MIN = 0x82, FR_GET_MAX = 0x83, FR_GET_RES = 0x84, FR_GET_CAP = 0x86, FR_GET_DEF = 0x87 }; struct ct_focus_r_data { int8_t bFocusRelative; uint8_t bSpeed; }; struct ct_focus_r{ enum fr_req req; uint8_t caps; struct ct_focus_r_data data; }; #define FSR_FULL_RANGE 0x1 #define FSR_MACRO 0x2 #define FSR_PEOPLE 0x3 #define FSR_SCENE 0x4 enum fsr_req { FSR_SET_CUR = 0x01, FSR_GET_CUR = 0x81, FSR_GET_CAP = 0x86, FSR_GET_DEF = 0x87 }; struct ct_focus_sr{ enum fsr_req req; uint8_t caps; uint8_t bFocus; }; enum fauto_req { FAUTO_SET_CUR = 0x01, FAUTO_GET_CUR = 0x81, FAUTO_GET_CAP = 0x86, FAUTO_GET_DEF = 0x87 }; struct ct_fauto{ enum fauto_req req; uint8_t caps; uint8_t bFocusAuto; }; enum irisa_req { IRISA_SET_CUR = 0x01, IRISA_GET_CUR = 0x81, IRISA_GET_MIN = 0x82, IRISA_GET_MAX = 0x83, IRISA_GET_RES = 0x84, IRISA_GET_CAP = 0x86, IRISA_GET_DEF = 0x87 }; struct ct_iris_a { enum irisa_req req; uint8_t caps; uint16_t wIrisAbsolute; }; enum irisr_req { IRISR_SET_CUR = 0x01, IRISR_GET_CUR = 0x81, IRISR_GET_CAP = 0x86 }; struct ct_iris_r{ enum irisr_req req; uint8_t caps; uint8_t bIrisRelative; }; enum zooma_req { ZOOMA_SET_CUR = 0x01, ZOOMA_GET_CUR = 0x81, ZOOMA_GET_MIN = 0x82, ZOOMA_GET_MAX = 0x83, ZOOMA_GET_RES = 0x84, ZOOMA_GET_CAP = 0x86, ZOOMA_GET_DEF = 0x87 }; struct ct_zoom_a{ enum zooma_req req; uint8_t caps; uint16_t wObjectiveFocalLength; }; enum zoomr_req { ZOOMR_SET_CUR = 0x01, ZOOMR_GET_CUR = 0x81, ZOOMR_GET_MIN = 0x82, ZOOMR_GET_MAX = 0x83, ZOOMR_GET_RES = 0x84, ZOOMR_GET_CAP = 0x86, ZOOMR_GET_DEF = 0x87 }; #define ZOOM_STOP 0x0 #define ZOOM_TELE_DIR 0x1 #define ZOOM_WIDE_AGLE_DIR 0xFF #define DIGITAL_ZOOM_OFF 0x0 #define DIGITAL_ZOOM_ON 0x1 struct ct_zoomr_data{ int8_t bZoom; bool bDigitalZoom; uint16_t bSpeed; }; struct ct_zoom_r{ enum zoomr_req req; uint8_t caps; struct ct_zoomr_data data; }; enum pantilta_req { TILTA_SET_CUR = 0x01, TILTA_GET_CUR = 0x81, TILTA_GET_MIN = 0x82, TILTA_GET_MAX = 0x83, TILTA_GET_RES = 0x84, TILTA_GET_CAP = 0x86, TILTA_GET_DEF = 0x87, }; struct ct_pan_tilta_data { int32_t dwPanAbsolute; int32_t dwTiltAbsolute; }; struct ct_pan_tilt_a{ enum pantilta_req req; uint8_t caps; struct ct_pan_tilta_data data; }; enum pantiltr_req { TILTR_SET_CUR = 0x01, TILTR_GET_CUR = 0x81, TILTR_GET_MIN = 0x82, TILTR_GET_MAX = 0x83, TILTR_GET_RES = 0x84, TILTR_GET_CAP = 0x86, TILTR_GET_DEF = 0x87, }; #define PAN_STOP 0x0 #define PAN_CLOSEWISE_DIR 0x1 #define PAN_COUNTER_CLOSEWISE_DIR 0xFF #define TILT_STOP 0x0 #define TILT_POINT_IMG_UP 0x1 #define TILT_POINT_IMG_DOWN 0xFF struct ct_pan_tiltr_data { int8_t bPanRelative; uint8_t bPanSpeed; int8_t bTiltRelative; uint8_t bTiltSpeed; }; struct ct_pan_tilt_r { enum pantiltr_req req; uint8_t caps; struct ct_pan_tiltr_data data; }; enum rolla_req { ROLLA_SET_CUR = 0x01, ROLLA_GET_CUR = 0x81, ROLLA_GET_MIN = 0x82, ROLLA_GET_MAX = 0x83, ROLLA_GET_RES = 0x84, ROLLA_GET_CAP = 0x86, ROLLA_GET_DEF = 0x87, }; struct ct_roll_a { enum rolla_req req; uint8_t caps; int16_t wAbsolute; }; enum rollr_req { ROLLR_SET_CUR = 0x01, ROLLR_GET_CUR = 0x81, ROLLR_GET_MIN = 0x82, ROLLR_GET_MAX = 0x83, ROLLR_GET_RES = 0x84, ROLLR_GET_CAP = 0x86, ROLLR_GET_DEF = 0x87, }; struct ct_rollr_data { int8_t bRollRelative; uint8_t bSpeed; }; struct ct_roll_r { enum rollr_req req; uint8_t caps; struct ct_rollr_data data; }; enum ps_req { PS_SET_CUR = 0x01, PS_GET_CUR = 0x81, PS_GET_CAP = 0x86, }; #define SHUTTER_OPEN 0x0 #define SHUTTER_CLOSE 0x1 struct ct_privacy_shutter { enum ps_req req; uint8_t caps; bool bPrivacy; }; enum dwindow_req { DWINDOW_SET_CUR = 0x01, DWINDOW_GET_CUR = 0x81, DWINDOW_GET_MIN = 0x82, DWINDOW_GET_MAX = 0x83, DWINDOW_GET_DEF = 0x87, }; struct ct_dwindow_data { uint16_t wWindow_Top; uint16_t wWindow_Left; uint16_t wWindow_Bottom; uint16_t wWindow_Right; uint16_t wNumSteps; uint16_t bmNumStepsUnits; }; struct ct_dwindow{ enum dwindow_req req; struct ct_dwindow_data data; }; enum roi_req { ROI_SET_CUR = 0x01, ROI_GET_CUR = 0x81, ROI_GET_MIN = 0x82, ROI_GET_MAX = 0x83, ROI_GET_DEF = 0x87, }; struct ct_roi_data { uint16_t wROI_Top; uint16_t wROI_Left; uint16_t wROI_Bottom; uint16_t wROI_Right; uint16_t bmAutoControls; }; struct ct_roi{ enum roi_req req; struct ct_roi_data data; }; enum backlight_req { BKC_SET_CUR = 0x01, BKC_GET_CUR = 0x81, BKC_GET_MIN = 0x82, BKC_GET_MAX = 0x83, BKC_GET_RES = 0x84, BKC_GET_CAP = 0x86, BKC_GET_DEF = 0x87 }; struct pu_backlight { enum backlight_req req; uint8_t caps; uint16_t wBacklightCompensation; }; enum brightness_req { BRIGHTNESS_SET_CUR = 0x01, BRIGHTNESS_GET_CUR = 0x81, BRIGHTNESS_GET_MIN = 0x82, BRIGHTNESS_GET_MAX = 0x83, BRIGHTNESS_GET_RES = 0x84, BRIGHTNESS_GET_CAP = 0x86, BRIGHTNESS_GET_DEF = 0x87, }; struct pu_brightness { enum brightness_req req; uint8_t caps; int16_t wBrightness; }; enum contrast_req { CONTRAST_SET_CUR = 0x01, CONTRAST_GET_CUR = 0x81, CONTRAST_GET_MIN = 0x82, CONTRAST_GET_MAX = 0x83, CONTRAST_GET_RES = 0x84, CONTRAST_GET_CAP = 0x86, CONTRAST_GET_DEF = 0x87, }; struct pu_contrast { enum contrast_req req; uint8_t caps; uint16_t wContrast; }; enum contrast_auto_req { CONTRASTA_SET_CUR = 0x01, CONTRASTA_GET_CUR = 0x81, CONTRASTA_GET_CAP = 0x86, CONTRASTA_GET_DEF = 0x87, }; struct pu_contrast_auto { enum contrast_auto_req req; uint8_t caps; uint8_t bContrastAuto; }; enum gain_req { GAIN_SET_CUR = 0x01, GAIN_GET_CUR = 0x81, GAIN_GET_MIN = 0x82, GAIN_GET_MAX = 0x83, GAIN_GET_RES = 0x84, GAIN_GET_CAP = 0x86, GAIN_GET_DEF = 0x87, }; struct pu_gain { enum gain_req req; uint8_t caps; uint16_t wGain; }; enum power_line_freq_req { POWER_LINE_FREQUENCY_SET_CUR = 0x01, POWER_LINE_FREQUENCY_GET_CUR = 0x81, POWER_LINE_FREQUENCY_GET_CAP = 0x86, POWER_LINE_FREQUENCY_GET_DEF = 0x87, }; #define PLF_DSIABLE 0x0 #define PLF_50HZ 0x1 #define PLF_60HZ 0x2 #define PLF_AUTO 0x3 struct pu_power_line_frequency { enum power_line_freq_req req; uint8_t caps; uint8_t bPowerLineFrequency; }; enum hue_req { HUE_SET_CUR = 0x01, HUE_GET_CUR = 0x81, HUE_GET_MIN = 0x82, HUE_GET_MAX = 0x83, HUE_GET_RES = 0x84, HUE_GET_CAP = 0x86, HUE_GET_DEF = 0x87, }; struct pu_hue { enum hue_req req; uint8_t caps; uint16_t wHue; }; enum hue_auto_req { HUEA_SET_CUR = 0x01, HUEA_GET_CUR = 0x81, HUEA_GET_CAP = 0x86, HUEA_GET_DEF = 0x87, }; struct pu_hue_auto { enum hue_auto_req req; uint8_t caps; uint8_t bHueAuto; }; enum saturation_req { SATURATION_SET_CUR = 0x01, SATURATION_GET_CUR = 0x81, SATURATION_GET_MIN = 0x82, SATURATION_GET_MAX = 0x83, SATURATION_GET_RES = 0x84, SATURATION_GET_CAP = 0x86, SATURATION_GET_DEF = 0x87, }; struct pu_saturation { enum saturation_req req; uint8_t caps; uint16_t wSaturation; }; enum sharpness_req { SHARPNESS_SET_CUR = 0x01, SHARPNESS_GET_CUR = 0x81, SHARPNESS_GET_MIN = 0x82, SHARPNESS_GET_MAX = 0x83, SHARPNESS_GET_RES = 0x84, SHARPNESS_GET_CAP = 0x86, SHARPNESS_GET_DEF = 0x87, }; struct pu_sharpness { enum sharpness_req req; uint8_t caps; uint16_t wSharpness; }; enum gamma_req { GAMMA_SET_CUR = 0x01, GAMMA_GET_CUR = 0x81, GAMMA_GET_MIN = 0x82, GAMMA_GET_MAX = 0x83, GAMMA_GET_RES = 0x84, GAMMA_GET_CAP = 0x86, GAMMA_GET_DEF = 0x87, }; struct pu_gamma { enum gamma_req req; uint8_t caps; uint16_t wGamma; }; enum wbt_req { WBT_SET_CUR = 0x01, WBT_GET_CUR = 0x81, WBT_GET_MIN = 0x82, WBT_GET_MAX = 0x83, WBT_GET_RES = 0x84, WBT_GET_CAP = 0x86, WBT_GET_DEF = 0x87, }; struct pu_white_balance_temp { enum wbt_req req; uint8_t caps; uint16_t wWhiteBalanceTemperature; }; enum wbt_auto_req { WBTA_SET_CUR = 0x01, WBTA_GET_CUR = 0x81, WBTA_GET_CAP = 0x86, WBTA_GET_DEF = 0x87, }; struct pu_white_balance_temp_auto { enum wbt_auto_req req; uint8_t caps; uint8_t bWhiteBalanceTemperatureAuto; }; enum whitebalance_comp_req { WBC_SET_CUR = 0x01, WBC_GET_CUR = 0x81, WBC_GET_MIN = 0x82, WBC_GET_MAX = 0x83, WBC_GET_RES = 0x84, WBC_GET_CAP = 0x86, WBC_GET_DEF = 0x87, }; struct pu_whitebalance_comp_data { int16_t wWhiteBalanceBlue; int16_t wWhiteBalanceRed; }; struct pu_whitebalance_comp { enum whitebalance_comp_req req; uint8_t caps; struct pu_whitebalance_comp_data data; }; enum wbc_auto_req { WBCA_SET_CUR = 0x01, WBCA_GET_CUR = 0x81, WBCA_GET_CAP = 0x86, WBCA_GET_DEF = 0x87, }; struct pu_wbc_auto { enum wbc_auto_req req; uint8_t caps; uint8_t bWhiteBalanceComponentAuto; }; enum dmpl_req { MPL_SET_CUR = 0x01, MPL_GET_CUR = 0x81, MPL_GET_MIN = 0x82, MPL_GET_MAX = 0x83, MPL_GET_RES = 0x84, MPL_GET_CAP = 0x86, MPL_GET_DEF = 0x87, }; struct pu_dmultiplier { enum dmpl_req req; uint8_t caps; uint16_t wMultiplierStep; }; enum dmpl_limit_req { DMPL_SET_CUR = 0x01, DMPL_GET_CUR = 0x81, DMPL_GET_MIN = 0x82, DMPL_GET_MAX = 0x83, DMPL_GET_RES = 0x84, DMPL_GET_CAP = 0x86, DMPL_GET_DEF = 0x87, }; struct pu_dmultiplierlimit { enum dmpl_limit_req req; uint8_t caps; uint16_t wMultiplierLimit; }; #endif // __UVC_CAMERA_H__