| /* |
| * Copyright (c) 2018 Intel Corporation |
| * |
| * SPDX-License-Identifier: Apache-2.0 |
| */ |
| |
| #ifndef ZEPHYR_INCLUDE_USB_BOS_H_ |
| #define ZEPHYR_INCLUDE_USB_BOS_H_ |
| |
| #if defined(CONFIG_USB_DEVICE_BOS) |
| #define USB_DEVICE_BOS_DESC_DEFINE_HDR \ |
| static __in_section(usb, bos_desc_area, 0) __aligned(1) __used |
| #define USB_DEVICE_BOS_DESC_DEFINE_CAP \ |
| static __in_section(usb, bos_desc_area, 1) __aligned(1) __used |
| |
| /* BOS descriptor type */ |
| #define DESCRIPTOR_TYPE_BOS 0x0F |
| |
| #define USB_BOS_CAPABILITY_PLATFORM 0x05 |
| |
| /* BOS Capability Descriptor */ |
| struct usb_bos_platform_descriptor { |
| uint8_t bLength; |
| uint8_t bDescriptorType; |
| uint8_t bDevCapabilityType; |
| uint8_t bReserved; |
| uint8_t PlatformCapabilityUUID[16]; |
| } __packed; |
| |
| /* BOS Descriptor */ |
| struct usb_bos_descriptor { |
| uint8_t bLength; |
| uint8_t bDescriptorType; |
| uint16_t wTotalLength; |
| uint8_t bNumDeviceCaps; |
| } __packed; |
| |
| /* BOS Capability webusb */ |
| struct usb_bos_capability_webusb { |
| uint16_t bcdVersion; |
| uint8_t bVendorCode; |
| uint8_t iLandingPage; |
| } __packed; |
| |
| /* BOS Capability MS OS Descriptors version 2 */ |
| struct usb_bos_capability_msos { |
| uint32_t dwWindowsVersion; |
| uint16_t wMSOSDescriptorSetTotalLength; |
| uint8_t bMS_VendorCode; |
| uint8_t bAltEnumCode; |
| } __packed; |
| |
| size_t usb_bos_get_length(void); |
| void usb_bos_fix_total_length(void); |
| void usb_bos_register_cap(struct usb_bos_platform_descriptor *hdr); |
| const void *usb_bos_get_header(void); |
| int usb_handle_bos(struct usb_setup_packet *setup, int32_t *len, uint8_t **data); |
| #else |
| #define usb_handle_bos(x, y, z) -ENOTSUP |
| #endif |
| |
| #endif /* ZEPHYR_INCLUDE_USB_BOS_H_ */ |