| /* |
| * Copyright (C) 2017 The Android Open Source Project |
| * |
| * Licensed under the Apache License, Version 2.0 (the "License"); |
| * you may not use this file except in compliance with the License. |
| * You may obtain a copy of the License at |
| * |
| * http://www.apache.org/licenses/LICENSE-2.0 |
| * |
| * Unless required by applicable law or agreed to in writing, software |
| * distributed under the License is distributed on an "AS IS" BASIS, |
| * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| * See the License for the specific language governing permissions and |
| * limitations under the License. |
| */ |
| #ifndef HIDUTIL_HIDLOCAL_H_ |
| #define HIDUTIL_HIDLOCAL_H_ |
| |
| #include "HidItem.h" |
| #include "TriState.h" |
| #include <cstddef> |
| #include <vector> |
| |
| namespace HidUtil { |
| |
| // A set of local states that parser has to keep track during parsing. |
| // They are all specified in HID spec v1.11 section 6.2.2.8 |
| struct HidLocal { |
| // add a token to change local states, return value indicates if operation is successful |
| bool append(const HidItem &i); |
| // clear all local states. This need to be done after each main tag |
| void clear(); |
| |
| // multiple usage, designator or strings may exist for single input/output/feature report |
| uint32_t getUsage(size_t index) const; |
| uint32_t getDesignator(size_t index) const; |
| uint32_t getString(size_t index) const; |
| |
| std::vector<uint32_t> usage; |
| // keep track of usage min when expecting a usage max |
| tri_uint usageMin; |
| |
| std::vector<uint32_t> designator; |
| // keep track of designator min when expecting designator max |
| tri_uint designatorMin; |
| |
| std::vector<uint32_t> string; |
| // keep track of string min when expecting string max |
| tri_uint stringMin; |
| |
| tri_uint delimeter; |
| }; |
| } // namespace HidUtil |
| |
| #endif // HIDUTIL_HIDLOCAL_H_ |