aboutsummaryrefslogtreecommitdiffstats
path: root/Demos/Device/LowLevel/RNDISEthernet/Descriptors.h
diff options
context:
space:
mode:
Diffstat (limited to 'Demos/Device/LowLevel/RNDISEthernet/Descriptors.h')
-rw-r--r--Demos/Device/LowLevel/RNDISEthernet/Descriptors.h26
1 files changed, 24 insertions, 2 deletions
diff --git a/Demos/Device/LowLevel/RNDISEthernet/Descriptors.h b/Demos/Device/LowLevel/RNDISEthernet/Descriptors.h
index 84c336f16..b797d643d 100644
--- a/Demos/Device/LowLevel/RNDISEthernet/Descriptors.h
+++ b/Demos/Device/LowLevel/RNDISEthernet/Descriptors.h
@@ -1,13 +1,13 @@
/*
LUFA Library
- Copyright (C) Dean Camera, 2017.
+ Copyright (C) Dean Camera, 2019.
dean [at] fourwalledcubicle [dot] com
www.lufa-lib.org
*/
/*
- Copyright 2017 Dean Camera (dean [at] fourwalledcubicle [dot] com)
+ Copyright 2019 Dean Camera (dean [at] fourwalledcubicle [dot] com)
Permission to use, copy, modify, distribute, and sell this
software and its documentation for any purpose is hereby granted
@@ -59,6 +59,10 @@
/** Size in bytes of the CDC device-to-host notification IN endpoint. */
#define CDC_NOTIFICATION_EPSIZE 8
+ /** Vendor request (0-255) the host should issue to retrieve the
+ * Microsoft OS Compatibility Descriptors. */
+ #define VENDOR_REQUEST_ID_MS_COMPAT 0x01
+
/* Type Defines: */
/** Type define for the device configuration descriptor structure. This must be defined in the
* application code, as the configuration descriptor contains several sub-descriptors which
@@ -81,6 +85,21 @@
USB_Descriptor_Endpoint_t RNDIS_DataInEndpoint;
} USB_Descriptor_Configuration_t;
+ /** Type define for a Microsoft OS Compatibility 1.0 descriptor. */
+ typedef struct
+ {
+ uint32_t dwLength;
+ uint16_t bcdVersion;
+ uint16_t wIndex;
+ uint8_t bCount;
+ uint8_t bReserved[7];
+ uint8_t bFirstInterfaceNumber;
+ uint8_t bReserved2;
+ char compatibleID[8];
+ char subCompatibleID[8];
+ uint8_t bReserved3[6];
+ } USB_Descriptor_MSCompatibility_t;
+
/** Enum for the device interface descriptor IDs within the device. Each interface descriptor
* should have a unique ID index associated with it, which can be used to refer to the
* interface from other descriptors.
@@ -100,6 +119,7 @@
STRING_ID_Language = 0, /**< Supported Languages string descriptor ID (must be zero) */
STRING_ID_Manufacturer = 1, /**< Manufacturer string ID */
STRING_ID_Product = 2, /**< Product string ID */
+ STRING_ID_MS_Compat = 0xEE, /**< MS OS Compatibility string descriptor ID (magic value set by Microsoft) */
};
/* Function Prototypes: */
@@ -108,5 +128,7 @@
const void** const DescriptorAddress)
ATTR_WARN_UNUSED_RESULT ATTR_NON_NULL_PTR_ARG(3);
+ void CheckIfMSCompatibilityDescriptorRequest(void);
+
#endif