Zephyr API Documentation  2.7.0-rc2
A Scalable Open Source RTOS
bos.h
Go to the documentation of this file.
1/*
2 * Copyright (c) 2018 Intel Corporation
3 *
4 * SPDX-License-Identifier: Apache-2.0
5 */
6
7#ifndef ZEPHYR_INCLUDE_USB_BOS_H_
8#define ZEPHYR_INCLUDE_USB_BOS_H_
9
10#if defined(CONFIG_USB_DEVICE_BOS)
11#define USB_DEVICE_BOS_DESC_DEFINE_HDR \
12 static __in_section(usb, bos_desc_area, 0) __aligned(1) __used
13#define USB_DEVICE_BOS_DESC_DEFINE_CAP \
14 static __in_section(usb, bos_desc_area, 1) __aligned(1) __used
15
16/*
17 * DESCRIPTOR_TYPE_BOS macro is deprecated in 2.7 release.
18 * Please replace with macros from Chapter 9 header, include/usb/usb_ch9.h
19 */
20#define DESCRIPTOR_TYPE_BOS __DEPRECATED_MACRO 0x0F
21
22#define USB_BOS_CAPABILITY_EXTENSION 0x02
23#define USB_BOS_CAPABILITY_PLATFORM 0x05
24
25/* BOS Capability Descriptor */
26struct usb_bos_platform_descriptor {
27 uint8_t bLength;
28 uint8_t bDescriptorType;
29 uint8_t bDevCapabilityType;
30 uint8_t bReserved;
31 uint8_t PlatformCapabilityUUID[16];
32} __packed;
33
34/* BOS Descriptor */
35struct usb_bos_descriptor {
36 uint8_t bLength;
37 uint8_t bDescriptorType;
38 uint16_t wTotalLength;
39 uint8_t bNumDeviceCaps;
40} __packed;
41
42/* BOS Capability webusb */
43struct usb_bos_capability_webusb {
44 uint16_t bcdVersion;
45 uint8_t bVendorCode;
46 uint8_t iLandingPage;
47} __packed;
48
49/* BOS Capability MS OS Descriptors version 2 */
50struct usb_bos_capability_msos {
51 uint32_t dwWindowsVersion;
52 uint16_t wMSOSDescriptorSetTotalLength;
53 uint8_t bMS_VendorCode;
54 uint8_t bAltEnumCode;
55} __packed;
56
57struct usb_bos_capability_lpm {
58 uint8_t bLength;
59 uint8_t bDescriptorType;
60 uint8_t bDevCapabilityType;
61 uint32_t bmAttributes;
62} __packed;
63
64size_t usb_bos_get_length(void);
65void usb_bos_fix_total_length(void);
66void usb_bos_register_cap(struct usb_bos_platform_descriptor *hdr);
67const void *usb_bos_get_header(void);
68int usb_handle_bos(struct usb_setup_packet *setup, int32_t *len, uint8_t **data);
69#else
70#define usb_handle_bos(x, y, z) -ENOTSUP
71#endif
72
73#endif /* ZEPHYR_INCLUDE_USB_BOS_H_ */
#define usb_handle_bos(x, y, z)
Definition: bos.h:70
__UINT32_TYPE__ uint32_t
Definition: stdint.h:60
__INT32_TYPE__ int32_t
Definition: stdint.h:44
__UINT8_TYPE__ uint8_t
Definition: stdint.h:58
__UINT16_TYPE__ uint16_t
Definition: stdint.h:59
Definition: usb_ch9.h:38
static fdata_t data[2]
Definition: test_fifo_contexts.c:15