Skip to content

3.1.0

Latest
Compare
Choose a tag to compare
@antoinevg antoinevg released this 08 Jan 07:45
3.1.0
f46d3a1

This is a breaking release which may require updates to your usage of Facedancer API's.

Changed

  • Dropped support for Python 3.8 and 3.9. The minimum supported Python version is now Python 3.10.
  • The descriptor API has been changed and expanded to handle more complex device definitions:
    • New USBDescriptor property: include_in_config, which specifies whether the descriptor should be included in a
      GET_CONFIGURATION response.
    • Descriptors attached to endpoints are now instantiated (replaces #139)
    • The instantiate_subordinates function is redesigned to avoid silent dropping of subordinates with duplicate
      identifiers.
    • Orderings of declaration/insertion of subordinates are preserved, allowing control of ordering in binary
      configurations.
    • Fixes to convert some fields to the right types in from_binary_descriptor methods.
    • A dictionary of known strings and their indexes may be passed to from_binary_descriptor methods.
    • The number field of USBDescriptor is made optional, as it is not required for descriptors attached in a
      configuration.
    • The type_number field will now be inferred from the raw bytes if not otherwise specified.
    • Add @include_in_config and @requestable(number=N) decorators for use on declared descriptor classes.
    • Add docstrings for all USBDescriptor fields.
    • More information: #126 #141

Fixed

  • USBProxy errors after changes for alternate interface settings.

Added

  • Round-trip support for creating Facedancer devices, configurations, interfaces, endpoints and descriptors from
    binary data to objects, to code, to objects and back to binary data.
  • New backend method: validate_configuration for rejecting USB device configurations that are not supported by a
    given backend.