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