Upload files to "lib/adafruit_hid"
This commit is contained in:
@@ -0,0 +1,90 @@
|
||||
# SPDX-FileCopyrightText: 2017 Scott Shawcroft for Adafruit Industries
|
||||
#
|
||||
# SPDX-License-Identifier: MIT
|
||||
|
||||
"""
|
||||
`adafruit_hid`
|
||||
====================================================
|
||||
|
||||
This driver simulates USB HID devices.
|
||||
|
||||
* Author(s): Scott Shawcroft, Dan Halbert
|
||||
|
||||
Implementation Notes
|
||||
--------------------
|
||||
**Software and Dependencies:**
|
||||
* Adafruit CircuitPython firmware for the supported boards:
|
||||
https://github.com/adafruit/circuitpython/releases
|
||||
"""
|
||||
|
||||
# imports
|
||||
from __future__ import annotations
|
||||
import time
|
||||
|
||||
try:
|
||||
import supervisor
|
||||
except ImportError:
|
||||
supervisor = None
|
||||
|
||||
try:
|
||||
from typing import Sequence
|
||||
except ImportError:
|
||||
pass
|
||||
|
||||
# usb_hid may not exist on some boards that still provide BLE or other HID devices.
|
||||
try:
|
||||
from usb_hid import Device
|
||||
except ImportError:
|
||||
Device = None
|
||||
|
||||
__version__ = "6.1.1"
|
||||
__repo__ = "https://github.com/adafruit/Adafruit_CircuitPython_HID.git"
|
||||
|
||||
|
||||
def find_device(
|
||||
devices: Sequence[object],
|
||||
*,
|
||||
usage_page: int,
|
||||
usage: int,
|
||||
timeout: int = None,
|
||||
) -> object:
|
||||
"""Search through the provided sequence of devices to find the one with the matching
|
||||
usage_page and usage.
|
||||
|
||||
:param timeout: Time in seconds to wait for USB to become ready before timing out.
|
||||
Defaults to None to wait indefinitely.
|
||||
Ignored if device is not a `usb_hid.Device`; it might be BLE, for instance."""
|
||||
|
||||
if hasattr(devices, "send_report"):
|
||||
devices = [devices] # type: ignore
|
||||
device = None
|
||||
for dev in devices:
|
||||
if (
|
||||
dev.usage_page == usage_page
|
||||
and dev.usage == usage
|
||||
and hasattr(dev, "send_report")
|
||||
):
|
||||
device = dev
|
||||
break
|
||||
if device is None:
|
||||
raise ValueError("Could not find matching HID device.")
|
||||
|
||||
# Wait for USB to be connected only if this is a usb_hid.Device.
|
||||
if Device and isinstance(device, Device):
|
||||
if supervisor is None:
|
||||
# Blinka doesn't have supervisor (see issue Adafruit_Blinka#711), so wait
|
||||
# one second for USB to become ready
|
||||
time.sleep(1.0)
|
||||
elif timeout is None:
|
||||
# default behavior: wait indefinitely for USB to become ready
|
||||
while not supervisor.runtime.usb_connected:
|
||||
time.sleep(1.0)
|
||||
else:
|
||||
# wait up to timeout seconds for USB to become ready
|
||||
for _ in range(timeout):
|
||||
if supervisor.runtime.usb_connected:
|
||||
return device
|
||||
time.sleep(1.0)
|
||||
raise OSError("Failed to initialize HID device. Is USB connected?")
|
||||
|
||||
return device
|
||||
Reference in New Issue
Block a user