1c29fa5a6Sopenharmony_ci/*
2c29fa5a6Sopenharmony_ci * Copyright (c) 2021-2022 Huawei Device Co., Ltd.
3c29fa5a6Sopenharmony_ci * Licensed under the Apache License, Version 2.0 (the "License");
4c29fa5a6Sopenharmony_ci * you may not use this file except in compliance with the License.
5c29fa5a6Sopenharmony_ci * You may obtain a copy of the License at
6c29fa5a6Sopenharmony_ci *
7c29fa5a6Sopenharmony_ci * http://www.apache.org/licenses/LICENSE-2.0
8c29fa5a6Sopenharmony_ci *
9c29fa5a6Sopenharmony_ci * Unless required by applicable law or agreed to in writing, software
10c29fa5a6Sopenharmony_ci * distributed under the License is distributed on an "AS IS" BASIS,
11c29fa5a6Sopenharmony_ci * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12c29fa5a6Sopenharmony_ci * See the License for the specific language governing permissions and
13c29fa5a6Sopenharmony_ci * limitations under the License.
14c29fa5a6Sopenharmony_ci */
15c29fa5a6Sopenharmony_ci
16c29fa5a6Sopenharmony_ci#include "input_device.h"
17c29fa5a6Sopenharmony_ci
18c29fa5a6Sopenharmony_cinamespace OHOS {
19c29fa5a6Sopenharmony_cinamespace MMI {
20c29fa5a6Sopenharmony_ciInputDevice::InputDevice(int32_t id, std::string name, int32_t deviceType, int32_t bus, int32_t version,
21c29fa5a6Sopenharmony_ci    int32_t product, int32_t vendor, std::string phys, std::string uniq, const std::vector<AxisInfo>& axis)
22c29fa5a6Sopenharmony_ci    : id_(id), name_(name), type_(deviceType), bus_(bus), version_(version), product_(product),
23c29fa5a6Sopenharmony_ci      vendor_(vendor), phys_(phys), uniq_(uniq), axis_(axis) {}
24c29fa5a6Sopenharmony_ci
25c29fa5a6Sopenharmony_civoid InputDevice::SetId(int32_t deviceId)
26c29fa5a6Sopenharmony_ci{
27c29fa5a6Sopenharmony_ci    id_ = deviceId;
28c29fa5a6Sopenharmony_ci}
29c29fa5a6Sopenharmony_ci
30c29fa5a6Sopenharmony_ciint32_t InputDevice::GetId() const
31c29fa5a6Sopenharmony_ci{
32c29fa5a6Sopenharmony_ci    return id_;
33c29fa5a6Sopenharmony_ci}
34c29fa5a6Sopenharmony_ci
35c29fa5a6Sopenharmony_civoid InputDevice::SetName(std::string name)
36c29fa5a6Sopenharmony_ci{
37c29fa5a6Sopenharmony_ci    name_ = name;
38c29fa5a6Sopenharmony_ci}
39c29fa5a6Sopenharmony_ci
40c29fa5a6Sopenharmony_cistd::string InputDevice::GetName() const
41c29fa5a6Sopenharmony_ci{
42c29fa5a6Sopenharmony_ci    return name_;
43c29fa5a6Sopenharmony_ci}
44c29fa5a6Sopenharmony_ci
45c29fa5a6Sopenharmony_civoid InputDevice::SetType(int32_t deviceType)
46c29fa5a6Sopenharmony_ci{
47c29fa5a6Sopenharmony_ci    type_ = deviceType;
48c29fa5a6Sopenharmony_ci}
49c29fa5a6Sopenharmony_ci
50c29fa5a6Sopenharmony_ciint32_t InputDevice::GetType() const
51c29fa5a6Sopenharmony_ci{
52c29fa5a6Sopenharmony_ci    return type_;
53c29fa5a6Sopenharmony_ci}
54c29fa5a6Sopenharmony_ci
55c29fa5a6Sopenharmony_civoid InputDevice::SetBus(int32_t bus)
56c29fa5a6Sopenharmony_ci{
57c29fa5a6Sopenharmony_ci    bus_ = bus;
58c29fa5a6Sopenharmony_ci}
59c29fa5a6Sopenharmony_ci
60c29fa5a6Sopenharmony_ciint32_t InputDevice::GetBus() const
61c29fa5a6Sopenharmony_ci{
62c29fa5a6Sopenharmony_ci    return bus_;
63c29fa5a6Sopenharmony_ci}
64c29fa5a6Sopenharmony_ci
65c29fa5a6Sopenharmony_civoid InputDevice::SetVersion(int32_t version)
66c29fa5a6Sopenharmony_ci{
67c29fa5a6Sopenharmony_ci    version_ = version;
68c29fa5a6Sopenharmony_ci}
69c29fa5a6Sopenharmony_ci
70c29fa5a6Sopenharmony_ciint32_t InputDevice::GetVersion() const
71c29fa5a6Sopenharmony_ci{
72c29fa5a6Sopenharmony_ci    return version_;
73c29fa5a6Sopenharmony_ci}
74c29fa5a6Sopenharmony_ci
75c29fa5a6Sopenharmony_civoid InputDevice::SetProduct(int32_t product)
76c29fa5a6Sopenharmony_ci{
77c29fa5a6Sopenharmony_ci    product_ = product;
78c29fa5a6Sopenharmony_ci}
79c29fa5a6Sopenharmony_ci
80c29fa5a6Sopenharmony_ciint32_t InputDevice::GetProduct() const
81c29fa5a6Sopenharmony_ci{
82c29fa5a6Sopenharmony_ci    return product_;
83c29fa5a6Sopenharmony_ci}
84c29fa5a6Sopenharmony_ci
85c29fa5a6Sopenharmony_civoid InputDevice::SetVendor(int32_t vendor)
86c29fa5a6Sopenharmony_ci{
87c29fa5a6Sopenharmony_ci    vendor_ = vendor;
88c29fa5a6Sopenharmony_ci}
89c29fa5a6Sopenharmony_ci
90c29fa5a6Sopenharmony_ciint32_t InputDevice::GetVendor() const
91c29fa5a6Sopenharmony_ci{
92c29fa5a6Sopenharmony_ci    return vendor_;
93c29fa5a6Sopenharmony_ci}
94c29fa5a6Sopenharmony_ci
95c29fa5a6Sopenharmony_civoid InputDevice::SetPhys(std::string phys)
96c29fa5a6Sopenharmony_ci{
97c29fa5a6Sopenharmony_ci    phys_ = phys;
98c29fa5a6Sopenharmony_ci}
99c29fa5a6Sopenharmony_ci
100c29fa5a6Sopenharmony_cistd::string InputDevice::GetPhys() const
101c29fa5a6Sopenharmony_ci{
102c29fa5a6Sopenharmony_ci    return phys_;
103c29fa5a6Sopenharmony_ci}
104c29fa5a6Sopenharmony_ci
105c29fa5a6Sopenharmony_civoid InputDevice::SetUniq(std::string uniq)
106c29fa5a6Sopenharmony_ci{
107c29fa5a6Sopenharmony_ci    uniq_ = uniq;
108c29fa5a6Sopenharmony_ci}
109c29fa5a6Sopenharmony_ci
110c29fa5a6Sopenharmony_cistd::string InputDevice::GetUniq() const
111c29fa5a6Sopenharmony_ci{
112c29fa5a6Sopenharmony_ci    return uniq_;
113c29fa5a6Sopenharmony_ci}
114c29fa5a6Sopenharmony_ci
115c29fa5a6Sopenharmony_civoid InputDevice::AddCapability(InputDeviceCapability cap)
116c29fa5a6Sopenharmony_ci{
117c29fa5a6Sopenharmony_ci    if (cap >= INPUT_DEV_CAP_KEYBOARD && cap < INPUT_DEV_CAP_MAX) {
118c29fa5a6Sopenharmony_ci        capabilities_.set(cap);
119c29fa5a6Sopenharmony_ci    }
120c29fa5a6Sopenharmony_ci}
121c29fa5a6Sopenharmony_ci
122c29fa5a6Sopenharmony_cibool InputDevice::HasCapability(InputDeviceCapability cap) const
123c29fa5a6Sopenharmony_ci{
124c29fa5a6Sopenharmony_ci    if (cap >= INPUT_DEV_CAP_KEYBOARD && cap < INPUT_DEV_CAP_MAX) {
125c29fa5a6Sopenharmony_ci        return capabilities_.test(cap);
126c29fa5a6Sopenharmony_ci    }
127c29fa5a6Sopenharmony_ci    return false;
128c29fa5a6Sopenharmony_ci}
129c29fa5a6Sopenharmony_ci
130c29fa5a6Sopenharmony_cibool InputDevice::HasCapability(uint32_t deviceTags) const
131c29fa5a6Sopenharmony_ci{
132c29fa5a6Sopenharmony_ci    int32_t min = static_cast<int32_t>(INPUT_DEV_CAP_KEYBOARD);
133c29fa5a6Sopenharmony_ci    int32_t max = static_cast<int32_t>(INPUT_DEV_CAP_MAX);
134c29fa5a6Sopenharmony_ci    for (int32_t cap = min; cap < max; ++cap) {
135c29fa5a6Sopenharmony_ci        if (!capabilities_.test(static_cast<InputDeviceCapability>(cap))) {
136c29fa5a6Sopenharmony_ci            continue;
137c29fa5a6Sopenharmony_ci        }
138c29fa5a6Sopenharmony_ci        uint32_t tags = CapabilityToTags(static_cast<InputDeviceCapability>(cap));
139c29fa5a6Sopenharmony_ci        if ((tags & deviceTags) == tags) {
140c29fa5a6Sopenharmony_ci            return true;
141c29fa5a6Sopenharmony_ci        }
142c29fa5a6Sopenharmony_ci    }
143c29fa5a6Sopenharmony_ci    return false;
144c29fa5a6Sopenharmony_ci}
145c29fa5a6Sopenharmony_ci
146c29fa5a6Sopenharmony_civoid InputDevice::AddAxisInfo(AxisInfo axis)
147c29fa5a6Sopenharmony_ci{
148c29fa5a6Sopenharmony_ci    axis_.push_back(axis);
149c29fa5a6Sopenharmony_ci}
150c29fa5a6Sopenharmony_ci
151c29fa5a6Sopenharmony_cistd::vector<InputDevice::AxisInfo> InputDevice::GetAxisInfo()
152c29fa5a6Sopenharmony_ci{
153c29fa5a6Sopenharmony_ci    return axis_;
154c29fa5a6Sopenharmony_ci}
155c29fa5a6Sopenharmony_ci
156c29fa5a6Sopenharmony_ciInputDevice::AxisInfo::AxisInfo(int32_t type, int32_t min, int32_t max, int32_t fuzz, int32_t flat, int32_t resolution)
157c29fa5a6Sopenharmony_ci    : axisType_(type), minimum_(min), maximum_(max), fuzz_(fuzz), flat_(flat), resolution_(resolution) {}
158c29fa5a6Sopenharmony_ci
159c29fa5a6Sopenharmony_civoid InputDevice::AxisInfo::SetAxisType(int32_t type)
160c29fa5a6Sopenharmony_ci{
161c29fa5a6Sopenharmony_ci    axisType_ = type;
162c29fa5a6Sopenharmony_ci}
163c29fa5a6Sopenharmony_ci
164c29fa5a6Sopenharmony_ciint32_t InputDevice::AxisInfo::GetAxisType() const
165c29fa5a6Sopenharmony_ci{
166c29fa5a6Sopenharmony_ci    return axisType_;
167c29fa5a6Sopenharmony_ci}
168c29fa5a6Sopenharmony_ci
169c29fa5a6Sopenharmony_civoid InputDevice::AxisInfo::SetMinimum(int32_t min)
170c29fa5a6Sopenharmony_ci{
171c29fa5a6Sopenharmony_ci    minimum_ = min;
172c29fa5a6Sopenharmony_ci}
173c29fa5a6Sopenharmony_ci
174c29fa5a6Sopenharmony_ciint32_t InputDevice::AxisInfo::GetMinimum() const
175c29fa5a6Sopenharmony_ci{
176c29fa5a6Sopenharmony_ci    return minimum_;
177c29fa5a6Sopenharmony_ci}
178c29fa5a6Sopenharmony_ci
179c29fa5a6Sopenharmony_civoid InputDevice::AxisInfo::SetMaximum(int32_t max)
180c29fa5a6Sopenharmony_ci{
181c29fa5a6Sopenharmony_ci    maximum_ = max;
182c29fa5a6Sopenharmony_ci}
183c29fa5a6Sopenharmony_ci
184c29fa5a6Sopenharmony_ciint32_t InputDevice::AxisInfo::GetMaximum() const
185c29fa5a6Sopenharmony_ci{
186c29fa5a6Sopenharmony_ci    return maximum_;
187c29fa5a6Sopenharmony_ci}
188c29fa5a6Sopenharmony_ci
189c29fa5a6Sopenharmony_civoid InputDevice::AxisInfo::SetFuzz(int32_t fuzz)
190c29fa5a6Sopenharmony_ci{
191c29fa5a6Sopenharmony_ci    fuzz_ = fuzz;
192c29fa5a6Sopenharmony_ci}
193c29fa5a6Sopenharmony_ci
194c29fa5a6Sopenharmony_ciint32_t InputDevice::AxisInfo::GetFuzz() const
195c29fa5a6Sopenharmony_ci{
196c29fa5a6Sopenharmony_ci    return fuzz_;
197c29fa5a6Sopenharmony_ci}
198c29fa5a6Sopenharmony_ci
199c29fa5a6Sopenharmony_civoid InputDevice::AxisInfo::SetFlat(int32_t flat)
200c29fa5a6Sopenharmony_ci{
201c29fa5a6Sopenharmony_ci    flat_ = flat;
202c29fa5a6Sopenharmony_ci}
203c29fa5a6Sopenharmony_ci
204c29fa5a6Sopenharmony_ciint32_t InputDevice::AxisInfo::GetFlat() const
205c29fa5a6Sopenharmony_ci{
206c29fa5a6Sopenharmony_ci    return flat_;
207c29fa5a6Sopenharmony_ci}
208c29fa5a6Sopenharmony_ci
209c29fa5a6Sopenharmony_civoid InputDevice::AxisInfo::SetResolution(int32_t resolution)
210c29fa5a6Sopenharmony_ci{
211c29fa5a6Sopenharmony_ci    resolution_ = resolution;
212c29fa5a6Sopenharmony_ci}
213c29fa5a6Sopenharmony_ci
214c29fa5a6Sopenharmony_ciint32_t InputDevice::AxisInfo::GetResolution() const
215c29fa5a6Sopenharmony_ci{
216c29fa5a6Sopenharmony_ci    return resolution_;
217c29fa5a6Sopenharmony_ci}
218c29fa5a6Sopenharmony_ci} // namespace MMI
219c29fa5a6Sopenharmony_ci} // namespace OHOS