aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--core/usb/descriptors.c41
-rw-r--r--core/usb/descriptors.h10
2 files changed, 49 insertions, 2 deletions
diff --git a/core/usb/descriptors.c b/core/usb/descriptors.c
index eca3f3f..522b8d6 100644
--- a/core/usb/descriptors.c
+++ b/core/usb/descriptors.c
@@ -1,5 +1,6 @@
/* insert license */
+
#include "descriptors.h"
USB_Descriptor_Device usbVcomDescriptor_Device = {
@@ -118,5 +119,43 @@ USB_Descriptor_Configuration usbVcomDescriptor_Config = {
bmAttributes: EP_TYPE_BULK,
wMaxPacketSize: VCOM_TX_EPSIZE,
bInterval: 0x00
- },
+ }
};
+
+/*
+ String Identifiers:
+
+ we may choose to specify any or none of the following string
+ identifiers:
+
+ iManufacturer: LeafLabs
+ iProduct: Maple R3
+ iSerialNumber: NONE
+ iConfiguration: NONE
+ iInterface(CCI): NONE
+ iInterface(DCI): NONE
+
+ additionally we must provide the unicode language identifier,
+ which is 0x0409 for US English
+*/
+
+USB_Descriptor_String usbVcomDescriptor_LangID =
+ {
+ bLength: USB_DESCRIPTOR_STRING_LEN(1),
+ bDescriptorType: USB_DESCRIPTOR_TYPE_STRING,
+ bString: 0x0409
+ };
+
+USB_Descriptor_String usbVcomDescriptor_iManufacturer =
+ {
+ bLength: USB_DESCRIPTOR_STRING_LEN(8),
+ bDescriptorType: USB_DESCRIPTOR_TYPE_STRING,
+ bString: L"LeafLabs"
+ };
+
+USB_Descriptor_String usbVcomDescriptor_iProduct =
+ {
+ bLength: USB_DESCRIPTOR_STRING_LEN(8),
+ bDescriptorType: USB_DESCRIPTOR_TYPE_STRING,
+ bString: L"Maple R3"
+ };
diff --git a/core/usb/descriptors.h b/core/usb/descriptors.h
index 1463221..1beabcc 100644
--- a/core/usb/descriptors.h
+++ b/core/usb/descriptors.h
@@ -18,6 +18,8 @@
uint8 Data[DataSize]; \
}
+#define USB_DESCRIPTOR_STRING_LEN(x) (2 + (x << 1))
+
typedef struct {
uint8 bLength;
uint8 bDescriptorType;
@@ -78,7 +80,13 @@ typedef struct {
USB_Descriptor_Interface DCI_Interface;
USB_Descriptor_Endpoint DataOutEndpoint;
USB_Descriptor_Endpoint DataInEndpoint;
-} USB_Descriptor_Configuration;
+}USB_Descriptor_Configuration;
+
+typedef struct {
+ uint8 bLength;
+ uint8 bDescriptorType;
+ uint16 bString[];
+} USB_Descriptor_String;
#if defined(__cplusplus)