|
- #!/usr/bin/env python3
- #
- # This file is part of usb-protocol.
- #
- """ Example that builds a device-worth of descriptors using a collection object. """
-
- from usb_protocol.emitters.descriptors import DeviceDescriptorCollection
-
- collection = DeviceDescriptorCollection()
-
- # Create our device descriptor, and populate it with some fields.
- # Many fields have sane/common defaults; and thus can be omitted.
- with collection.DeviceDescriptor() as d:
- d.idVendor = 0xc001
- d.idProduct = 0xc0de
- d.bNumConfigurations = 1
-
- d.iManufacturer = "usb-tools"
- d.iProduct = "Illegitimate USB Device"
- d.iSerialNumber = "123456"
-
-
- # Create our configuration descriptor, and its subordinates.
- with collection.ConfigurationDescriptor() as c:
- # Here, this is our first configuration, and is automatically assigned number '1'.
-
- # We'll create a simple interface with a couple of endpoints.
- with c.InterfaceDescriptor() as i:
- i.bInterfaceNumber = 0
-
- # Our endpoints default to bulk; with mostly-sane defaults.
- with i.EndpointDescriptor() as e:
- e.bEndpointAddress = 0x01
- e.wMaxPacketSize = 512
-
- with i.EndpointDescriptor() as e:
- e.bEndpointAddress = 0x81
- e.wMaxPacketSize = 512
-
-
- print("This device's descriptors would look like:")
-
- # Iterate over all of our descriptors.
- for value, index, raw in collection:
- print(f" type {value} (index {index}) = {raw}")
|