1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192 |
- # -*- perl -*-
- #
- # Invoked from usbdescgen.pl
- #
- usb_languages('en_US', 'sv_SE');
- my $vendor_id = 0x1d50;
- my $device_id = 0x6149;
- my $version_id = 0x0100;
- my $serial = usb_serial('?' x 16);
- my $manufacturer = usb_string('' => 'Peter & Per');
- my $product = usb_string('' => 'MAX80 I/O card for ABC');
- my $mgmt_if, $data_if;
- usb_device {
- usb_desc('device',
- word(0x101), # USB version
- usb_class('cdc'), # Communications device class
- byte(8), # Max packet size on endpoint 0
- word($vendor_id), word($device_id), word($version_id),
- $manufacturer, $product, $serial,
- usb_children # Configuration count
- ),
- usb_dset {
- usb_desc('configuration',
- usb_totallen, # Total length for this dset
- usb_children, # Number of interfaces
- usb_index, # Configuration index
- usb_string(), # Text description (empty)
- byte(0xc0), # Self or bus powered
- byte(500 >> 1)), # Up to 500 mA
- # Management interface
- usb_dset {
- usb_desc('interface',
- $mgmt_if = usb_index,
- byte(0), # No alternate settings
- byte(1), # Endpoint count
- usb_class('cdc','acm','v25ter'),
- usb_string()),
- usb_desc('cs_interface.header',
- word(0x120)), # CDC spec version 1.20
- usb_desc('cs_interface.call_management',
- byte(0x01), # No AT commands over data
- byte(0)), # No interface applicable
- usb_desc('cs_interface.acm',
- byte(0x04)), # Supports SEND_BREAK
- usb_desc('cs_interface.union',
- byte(\$mgmt_if), # Controlling interface
- byte(\$data_if)), # Data interface
- # EP 3, input: notification
- usb_desc('endpoint',
- ep_i(3), # Endpoint 3 input
- byte(3), # Interrupt, data
- word(64), # Max packet size
- byte(2)), # Interval
- },
- # Data interface
- usb_dset {
- usb_desc('interface',
- $data_if = usb_index,
- byte(0), # No alternate settings
- byte(2), # Endpoint count
- usb_class('cdc_data'),
- usb_string()),
- # EP 1, output: downstream data
- usb_desc('endpoint',
- ep_o(1),
- byte(2), # Bulk, data
- word(64), # Max packet size
- byte(0)), # Interval
- # EP 2, input: upstream data
- usb_desc('endpoint',
- ep_i(2),
- byte(3), # Bulk, data
- word(64), # Max packet size
- byte(0)) # Interval
- }
- }
- };
|