Changeset 5e718d9 in mainline for uspace/dist/src/bithenge/usbdesc.bh
- Timestamp:
- 2012-08-21T10:04:16Z (12 years ago)
- Branches:
- lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- 67edca6
- Parents:
- 0da6c04 (diff), 6a97f2e (diff)
Note: this is a merge changeset, the changes displayed below correspond to the merge itself.
Use the(diff)
links above to see all the changes relative to each parent. - File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
uspace/dist/src/bithenge/usbdesc.bh
r0da6c04 r5e718d9 7 7 # Originally by Vojtech Horky. 8 8 9 # Block prefixed with a byte length 10 transform block = (in.data) <- struct { 11 .bLength <- uint8; 12 .data <- known_length(.bLength - 1); 13 }; 14 9 15 # USB configuration descriptor 10 16 # This is not the full configuration descriptor (i.e. with interface 11 17 # and endpoint descriptors included) but only the header. 12 18 transform usb_configuration_descriptor_bare = struct { 13 .bLength <- uint8; # assert bLength = 914 .bDescriptorType <- uint8; # assert: bDescriptorType == 215 19 .wTotalLength <- uint16le; 16 20 .bNumInterfaces <- uint8; … … 23 27 # USB interface descriptor 24 28 transform usb_interface_descriptor = struct { 25 .bLength <- uint8; # assert bLength = 926 .bDescriptorType <- uint8; # assert: bDescriptorType == 427 29 .bInterfaceNumber <- uint8; 28 30 .bAlternateSetting <- uint8; … … 36 38 # USB endpoint descriptor 37 39 transform usb_endpoint_descriptor = struct { 38 .bLength <- uint8; # assert bLength = 739 .bDescriptorType <- uint8; # assert: bDescriptorType == 540 40 .bEndpointAddress <- uint8; 41 41 .bmAttributes <- uint8; … … 46 46 # USB HID descriptor 47 47 transform usb_hid_descriptor = struct { 48 .bLength <- uint8;49 .bDescriptorType <- uint8; # assert: bDescriptorType == 3350 48 .bcdHID <- uint16le; 51 49 .bCountryCode <- uint8; 52 50 .bNumDescriptors <- uint8; 53 # Following is repeated bNumDescriptors times 54 .bDescriptorType <- uint8; 55 .wDescriptorLength <- uint16le; 51 <- repeat(.bNumDescriptors) { struct { 52 .bDescriptorType <- uint8; 53 .wDescriptorLength <- uint16le; 54 } }; 56 55 }; 57 56 58 # Fixed configuration for QEMU USB keyboard. 59 transform qemu_usb_keyboard = struct { 60 .configuration_descriptor <- usb_configuration_descriptor_bare; 61 .interface_descriptor <- usb_interface_descriptor; 62 .hid_descriptor <- usb_hid_descriptor; 63 .endpoint_descriptor <- usb_endpoint_descriptor; 64 }; 57 # USB descriptor 58 transform usb_descriptor = struct { 59 .bDescriptorType <- uint8; 60 <- switch (.bDescriptorType) { 61 2: usb_configuration_descriptor_bare; 62 4: usb_interface_descriptor; 63 5: usb_endpoint_descriptor; 64 33: usb_hid_descriptor; 65 }; 66 } <- block; 65 67 66 transform main = qemu_usb_keyboard;68 transform main = repeat { usb_descriptor };
Note:
See TracChangeset
for help on using the changeset viewer.