forked from auracaster/bumble_mirror
Merge pull request #858 from klow68/feat/add-usb-probe-filtering
This commit is contained in:
@@ -26,6 +26,8 @@
|
|||||||
# -----------------------------------------------------------------------------
|
# -----------------------------------------------------------------------------
|
||||||
# Imports
|
# Imports
|
||||||
# -----------------------------------------------------------------------------
|
# -----------------------------------------------------------------------------
|
||||||
|
from typing import Any
|
||||||
|
|
||||||
import click
|
import click
|
||||||
import usb1
|
import usb1
|
||||||
|
|
||||||
@@ -166,13 +168,16 @@ def is_bluetooth_hci(device):
|
|||||||
# -----------------------------------------------------------------------------
|
# -----------------------------------------------------------------------------
|
||||||
@click.command()
|
@click.command()
|
||||||
@click.option('--verbose', is_flag=True, default=False, help='Print more details')
|
@click.option('--verbose', is_flag=True, default=False, help='Print more details')
|
||||||
def main(verbose):
|
@click.option('--hci-only', is_flag=True, default=False, help='only show HCI device')
|
||||||
|
@click.option('--manufacturer', help='filter by manufacturer')
|
||||||
|
@click.option('--product', help='filter by product')
|
||||||
|
def main(verbose: bool, manufacturer: str, product: str, hci_only: bool):
|
||||||
bumble.logging.setup_basic_logging('WARNING')
|
bumble.logging.setup_basic_logging('WARNING')
|
||||||
|
|
||||||
load_libusb()
|
load_libusb()
|
||||||
with usb1.USBContext() as context:
|
with usb1.USBContext() as context:
|
||||||
bluetooth_device_count = 0
|
bluetooth_device_count = 0
|
||||||
devices = {}
|
devices: dict[tuple[Any, Any], list[str | None]] = {}
|
||||||
|
|
||||||
for device in context.getDeviceIterator(skip_on_error=True):
|
for device in context.getDeviceIterator(skip_on_error=True):
|
||||||
device_class = device.getDeviceClass()
|
device_class = device.getDeviceClass()
|
||||||
@@ -234,6 +239,14 @@ def main(verbose):
|
|||||||
f'{basic_transport_name}/{device_serial_number}'
|
f'{basic_transport_name}/{device_serial_number}'
|
||||||
)
|
)
|
||||||
|
|
||||||
|
# Filter
|
||||||
|
if product and device_product != product:
|
||||||
|
continue
|
||||||
|
if manufacturer and device_manufacturer != manufacturer:
|
||||||
|
continue
|
||||||
|
if not is_bluetooth_hci(device) and hci_only:
|
||||||
|
continue
|
||||||
|
|
||||||
# Print the results
|
# Print the results
|
||||||
print(
|
print(
|
||||||
color(
|
color(
|
||||||
|
|||||||
Reference in New Issue
Block a user