| /* |
| * Copyright 2019 The Chromium OS Authors. All rights reserved. |
| * Use of this source code is governed by a BSD-style license that can be |
| * found in the LICENSE file. |
| */ |
| |
| #ifndef CAMERA_HAL_USB_VENDOR_TAG_H_ |
| #define CAMERA_HAL_USB_VENDOR_TAG_H_ |
| |
| #include <cstdint> |
| |
| #include <system/camera_metadata.h> |
| |
| #include "common/vendor_tag_manager.h" |
| |
| namespace cros { |
| |
| const char kVendorUsbSectionName[] = "com.google.usb"; |
| const char kVendorControlSectionName[] = "com.google.control"; |
| |
| enum VendorTags : uint32_t { |
| kVendorTagVendorId = kUsbHalVendorTagStart, |
| kVendorTagProductId, |
| kVendorTagModelName, |
| kVendorTagDevicePath, |
| kVendorTagTimestampSync, |
| |
| // These tags are for controls. |
| // ControlFoo is for the request value, and ControlFooRange is the static |
| // metadata for the available range as a tuple of [min, max, step]. |
| kVendorTagControlBrightness, |
| kVendorTagControlBrightnessRange, |
| kVendorTagControlContrast, |
| kVendorTagControlContrastRange, |
| kVendorTagControlPan, |
| kVendorTagControlPanRange, |
| kVendorTagControlSaturation, |
| kVendorTagControlSaturationRange, |
| kVendorTagControlSharpness, |
| kVendorTagControlSharpnessRange, |
| kVendorTagControlTilt, |
| kVendorTagControlTiltRange, |
| kVendorTagControlZoom, |
| kVendorTagControlZoomRange, |
| kVendorTagEnd = kVendorTagControlZoomRange, |
| }; |
| |
| static_assert(kVendorTagEnd < kUsbHalVendorTagEnd, |
| "The vendor tag is out-of-range."); |
| |
| class VendorTagOps { |
| public: |
| // The static functions for filling |vendor_tag_ops|. The real implementation |
| // is delegated to the instance of |VendorTagManager|. |
| static int GetTagCount(const vendor_tag_ops_t*); |
| static void GetAllTags(const vendor_tag_ops_t*, uint32_t* tag_array); |
| static const char* GetSectionName(const vendor_tag_ops_t*, uint32_t tag); |
| static const char* GetTagName(const vendor_tag_ops_t*, uint32_t tag); |
| static int GetTagType(const vendor_tag_ops_t*, uint32_t tag); |
| |
| private: |
| static const VendorTagManager& GetVendorTagManager(); |
| }; |
| |
| } // namespace cros |
| |
| #endif // CAMERA_HAL_USB_VENDOR_TAG_H_ |