1 /*
2  * Copyright (C) 2016 The Android Open Source Project
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  *      http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16 
17 #ifndef V4L2_CAMERA_HAL_METADATA_PROPERTY_H_
18 #define V4L2_CAMERA_HAL_METADATA_PROPERTY_H_
19 
20 #include "metadata_common.h"
21 #include "partial_metadata_interface.h"
22 
23 namespace v4l2_camera_hal {
24 
25 // A Property is a PartialMetadata that only has a single static tag.
26 template <typename T>
27 class Property : public PartialMetadataInterface {
28  public:
Property(int32_t tag,T value)29   Property(int32_t tag, T value) : tag_(tag), value_(std::move(value)){};
30 
StaticTags()31   virtual std::vector<int32_t> StaticTags() const override { return {tag_}; };
32 
ControlTags()33   virtual std::vector<int32_t> ControlTags() const override { return {}; };
34 
DynamicTags()35   virtual std::vector<int32_t> DynamicTags() const override { return {}; };
36 
PopulateStaticFields(android::CameraMetadata * metadata)37   virtual int PopulateStaticFields(
38       android::CameraMetadata* metadata) const override {
39     return UpdateMetadata(metadata, tag_, value_);
40   };
41 
PopulateDynamicFields(android::CameraMetadata *)42   virtual int PopulateDynamicFields(
43       android::CameraMetadata* /*metadata*/) const override {
44     return 0;
45   };
46 
PopulateTemplateRequest(int,android::CameraMetadata *)47   virtual int PopulateTemplateRequest(
48       int /*template_type*/, android::CameraMetadata* /*metadata*/) const override {
49     return 0;
50   };
51 
SupportsRequestValues(const android::CameraMetadata &)52   virtual bool SupportsRequestValues(
53       const android::CameraMetadata& /*metadata*/) const override {
54     return true;
55   };
56 
SetRequestValues(const android::CameraMetadata &)57   virtual int SetRequestValues(
58       const android::CameraMetadata& /*metadata*/) override {
59     return 0;
60   };
61 
62  private:
63   int32_t tag_;
64   T value_;
65 };
66 
67 }  // namespace v4l2_camera_hal
68 
69 #endif  // V4L2_CAMERA_HAL_METADATA_PROPERTY_H_
70