102 lines
2.7 KiB
Python
102 lines
2.7 KiB
Python
# Copyright 2016 Google Inc. All Rights Reserved.
|
|
#
|
|
# 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.
|
|
|
|
"""Implement base classes for hid package.
|
|
|
|
This module provides the base classes implemented by the
|
|
platform-specific modules. It includes a base class for
|
|
all implementations built on interacting with file-like objects.
|
|
"""
|
|
|
|
|
|
class HidDevice(object):
|
|
"""Base class for all HID devices in this package."""
|
|
|
|
@staticmethod
|
|
def Enumerate():
|
|
"""Enumerates all the hid devices.
|
|
|
|
This function enumerates all the hid device and provides metadata
|
|
for helping the client select one.
|
|
|
|
Returns:
|
|
A list of dictionaries of metadata. Each implementation is required
|
|
to provide at least: vendor_id, product_id, product_string, usage,
|
|
usage_page, and path.
|
|
"""
|
|
pass
|
|
|
|
def __init__(self, path):
|
|
"""Initialize the device at path."""
|
|
pass
|
|
|
|
def GetInReportDataLength(self):
|
|
"""Returns the max input report data length in bytes.
|
|
|
|
Returns the max input report data length in bytes. This excludes the
|
|
report id.
|
|
"""
|
|
pass
|
|
|
|
def GetOutReportDataLength(self):
|
|
"""Returns the max output report data length in bytes.
|
|
|
|
Returns the max output report data length in bytes. This excludes the
|
|
report id.
|
|
"""
|
|
pass
|
|
|
|
def Write(self, packet):
|
|
"""Writes packet to device.
|
|
|
|
Writes the packet to the device.
|
|
|
|
Args:
|
|
packet: An array of integers to write to the device. Excludes the report
|
|
ID. Must be equal to GetOutReportLength().
|
|
"""
|
|
pass
|
|
|
|
def Read(self):
|
|
"""Reads packet from device.
|
|
|
|
Reads the packet from the device.
|
|
|
|
Returns:
|
|
An array of integers read from the device. Excludes the report ID.
|
|
The length is equal to GetInReportDataLength().
|
|
"""
|
|
pass
|
|
|
|
|
|
class DeviceDescriptor(object):
|
|
"""Descriptor for basic attributes of the device."""
|
|
|
|
usage_page = None
|
|
usage = None
|
|
vendor_id = None
|
|
product_id = None
|
|
product_string = None
|
|
path = None
|
|
|
|
internal_max_in_report_len = 0
|
|
internal_max_out_report_len = 0
|
|
|
|
def ToPublicDict(self):
|
|
out = {}
|
|
for k, v in list(self.__dict__.items()):
|
|
if not k.startswith('internal_'):
|
|
out[k] = v
|
|
return out
|