diff options
| author | Dan Halbert <halbert@halwitz.org> | 2019-10-15 15:55:21 -0400 |
|---|---|---|
| committer | Dan Halbert <halbert@halwitz.org> | 2019-10-15 15:55:21 -0400 |
| commit | be8136dc6d09e2c3af5c20c881662ebf51a778d8 (patch) | |
| tree | d365470b40d1877449c929dce43c55a288550437 /tools | |
| parent | fc19e03128aeeb94a22fdff097e4d0576d768986 (diff) | |
| parent | 63790f01f833ff197d92f80816f21a61e924bd72 (diff) | |
Merge remote-tracking branch 'adafruit/master' into bonding1
Diffstat (limited to 'tools')
| -rw-r--r-- | tools/build_board_info.py | 4 | ||||
| -rw-r--r-- | tools/gen_usb_descriptor.py | 81 | ||||
| m--------- | tools/usb_descriptor | 0 |
3 files changed, 65 insertions, 20 deletions
diff --git a/tools/build_board_info.py b/tools/build_board_info.py index 7d0d2996c..efa481a63 100644 --- a/tools/build_board_info.py +++ b/tools/build_board_info.py @@ -12,18 +12,20 @@ from sh.contrib import git sys.path.append("adabot") import adabot.github_requests as github -SUPPORTED_PORTS = ["nrf", "atmel-samd", "stm32f4"] +SUPPORTED_PORTS = ["nrf", "atmel-samd", "stm32f4", "cxd56"] BIN = ('bin',) UF2 = ('uf2',) BIN_UF2 = ('bin', 'uf2') HEX = ('hex',) +SPK = ('spk',) # Default extensions extension_by_port = { "nrf": UF2, "atmel-samd": UF2, "stm32f4": BIN, + "cxd56": SPK, } # Per board overrides diff --git a/tools/gen_usb_descriptor.py b/tools/gen_usb_descriptor.py index c4ff74d39..21a480f99 100644 --- a/tools/gen_usb_descriptor.py +++ b/tools/gen_usb_descriptor.py @@ -32,8 +32,28 @@ parser.add_argument('--devices', type=lambda l: tuple(l.split(',')), default=DEF help='devices to include in descriptor (AUDIO includes MIDI support)') parser.add_argument('--hid_devices', type=lambda l: tuple(l.split(',')), default=DEFAULT_HID_DEVICES, help='HID devices to include in HID report descriptor') -parser.add_argument('--msc_num_endpoint_pairs', type=int, default=1, - help='Use 1 or 2 endpoint pairs for MSC (1 bidirectional, or 1 input + 1 output (required by SAMD21))') +parser.add_argument('--msc_max_packet_size', type=int, default=64, + help='Max packet size for MSC') +parser.add_argument('--no-renumber_endpoints', dest='renumber_endpoints', action='store_false', + help='use to not renumber endpoint') +parser.add_argument('--cdc_ep_num_notification', type=int, default=0, + help='endpoint number of CDC NOTIFICATION') +parser.add_argument('--cdc_ep_num_data_out', type=int, default=0, + help='endpoint number of CDC DATA OUT') +parser.add_argument('--cdc_ep_num_data_in', type=int, default=0, + help='endpoint number of CDC DATA IN') +parser.add_argument('--msc_ep_num_out', type=int, default=0, + help='endpoint number of MSC OUT') +parser.add_argument('--msc_ep_num_in', type=int, default=0, + help='endpoint number of MSC IN') +parser.add_argument('--hid_ep_num_out', type=int, default=0, + help='endpoint number of HID OUT') +parser.add_argument('--hid_ep_num_in', type=int, default=0, + help='endpoint number of HID IN') +parser.add_argument('--midi_ep_num_out', type=int, default=0, + help='endpoint number of MIDI OUT') +parser.add_argument('--midi_ep_num_in', type=int, default=0, + help='endpoint number of MIDI IN') parser.add_argument('--output_c_file', type=argparse.FileType('w'), required=True) parser.add_argument('--output_h_file', type=argparse.FileType('w'), required=True) @@ -47,9 +67,32 @@ unknown_hid_devices = list(frozenset(args.hid_devices) - ALL_HID_DEVICES_SET) if unknown_hid_devices: raise ValueError("Unknown HID devices(s)", unknown_hid_devices) -if args.msc_num_endpoint_pairs not in (1, 2): - raise ValueError("--msc_num_endpoint_pairs must be 1 or 2") - +if not args.renumber_endpoints: + if 'CDC' in args.devices: + if args.cdc_ep_num_notification == 0: + raise ValueError("CDC notification endpoint number must not be 0") + elif args.cdc_ep_num_data_out == 0: + raise ValueError("CDC data OUT endpoint number must not be 0") + elif args.cdc_ep_num_data_in == 0: + raise ValueError("CDC data IN endpoint number must not be 0") + + if 'MSC' in args.devices: + if args.msc_ep_num_out == 0: + raise ValueError("MSC endpoint OUT number must not be 0") + elif args.msc_ep_num_in == 0: + raise ValueError("MSC endpoint IN number must not be 0") + + if 'HID' in args.devices: + if args.args.hid_ep_num_out == 0: + raise ValueError("HID endpoint OUT number must not be 0") + elif args.hid_ep_num_in == 0: + raise ValueError("HID endpoint IN number must not be 0") + + if 'AUDIO' in args.devices: + if args.args.midi_ep_num_out == 0: + raise ValueError("MIDI endpoint OUT number must not be 0") + elif args.midi_ep_num_in == 0: + raise ValueError("MIDI endpoint IN number must not be 0") class StringIndex: """Assign a monotonically increasing index to each unique string. Start with 0.""" @@ -120,7 +163,7 @@ cdc_comm_interface = standard.InterfaceDescriptor( cdc_union, standard.EndpointDescriptor( description="CDC comm in", - bEndpointAddress=0x0 | standard.EndpointDescriptor.DIRECTION_IN, + bEndpointAddress=args.cdc_ep_num_notification | standard.EndpointDescriptor.DIRECTION_IN, bmAttributes=standard.EndpointDescriptor.TYPE_INTERRUPT, wMaxPacketSize=0x0040, bInterval=0x10) @@ -133,11 +176,11 @@ cdc_data_interface = standard.InterfaceDescriptor( subdescriptors=[ standard.EndpointDescriptor( description="CDC data out", - bEndpointAddress=0x0 | standard.EndpointDescriptor.DIRECTION_OUT, + bEndpointAddress=args.cdc_ep_num_data_out | standard.EndpointDescriptor.DIRECTION_OUT, bmAttributes=standard.EndpointDescriptor.TYPE_BULK), standard.EndpointDescriptor( description="CDC data in", - bEndpointAddress=0x0 | standard.EndpointDescriptor.DIRECTION_IN, + bEndpointAddress=args.cdc_ep_num_data_in | standard.EndpointDescriptor.DIRECTION_IN, bmAttributes=standard.EndpointDescriptor.TYPE_BULK), ]) @@ -153,16 +196,16 @@ msc_interfaces = [ subdescriptors=[ standard.EndpointDescriptor( description="MSC in", - bEndpointAddress=0x0 | standard.EndpointDescriptor.DIRECTION_IN, + bEndpointAddress=args.msc_ep_num_in | standard.EndpointDescriptor.DIRECTION_IN, bmAttributes=standard.EndpointDescriptor.TYPE_BULK, - bInterval=0), + bInterval=0, + wMaxPacketSize=args.msc_max_packet_size), standard.EndpointDescriptor( description="MSC out", - # SAMD21 needs to use a separate pair of endpoints for MSC. - bEndpointAddress=((0x1 if args.msc_num_endpoint_pairs == 2 else 0x0) | - standard.EndpointDescriptor.DIRECTION_OUT), + bEndpointAddress=(args.msc_ep_num_out | standard.EndpointDescriptor.DIRECTION_OUT), bmAttributes=standard.EndpointDescriptor.TYPE_BULK, - bInterval=0) + bInterval=0, + wMaxPacketSize=args.msc_max_packet_size) ] ) ] @@ -197,13 +240,13 @@ else: # and will fail (possibly silently) if both are not supplied. hid_endpoint_in_descriptor = standard.EndpointDescriptor( description="HID in", - bEndpointAddress=0x0 | standard.EndpointDescriptor.DIRECTION_IN, + bEndpointAddress=args.hid_ep_num_in | standard.EndpointDescriptor.DIRECTION_IN, bmAttributes=standard.EndpointDescriptor.TYPE_INTERRUPT, bInterval=8) hid_endpoint_out_descriptor = standard.EndpointDescriptor( description="HID out", - bEndpointAddress=0x0 | standard.EndpointDescriptor.DIRECTION_OUT, + bEndpointAddress=args.hid_ep_num_out | standard.EndpointDescriptor.DIRECTION_OUT, bmAttributes=standard.EndpointDescriptor.TYPE_INTERRUPT, bInterval=8) @@ -267,12 +310,12 @@ audio_midi_interface = standard.InterfaceDescriptor( ), standard.EndpointDescriptor( description="MIDI data out to CircuitPython", - bEndpointAddress=0x0 | standard.EndpointDescriptor.DIRECTION_OUT, + bEndpointAddress=args.midi_ep_num_out | standard.EndpointDescriptor.DIRECTION_OUT, bmAttributes=standard.EndpointDescriptor.TYPE_BULK), midi.DataEndpointDescriptor(baAssocJack=[midi_in_jack_emb]), standard.EndpointDescriptor( description="MIDI data in from CircuitPython", - bEndpointAddress=0x0 | standard.EndpointDescriptor.DIRECTION_IN, + bEndpointAddress=args.midi_ep_num_in | standard.EndpointDescriptor.DIRECTION_IN, bmAttributes=standard.EndpointDescriptor.TYPE_BULK, bInterval = 0x0), midi.DataEndpointDescriptor(baAssocJack=[midi_out_jack_emb]), @@ -316,7 +359,7 @@ if 'AUDIO' in args.devices: # util.join_interfaces() will renumber the endpoints to make them unique across descriptors, # and renumber the interfaces in order. But we still need to fix up certain # interface cross-references. -interfaces = util.join_interfaces(*interfaces_to_join) +interfaces = util.join_interfaces(interfaces_to_join, renumber_endpoints=args.renumber_endpoints) # Now adjust the CDC interface cross-references. diff --git a/tools/usb_descriptor b/tools/usb_descriptor -Subproject dac9689e274844294bbe4fd1b78defff9ff2753 +Subproject 701cafc50e2e574dccaf7a340eedbd64a0b41a4 |
