diff options
| author | hathach <[email protected]> | 2018-03-23 14:15:35 +0700 |
|---|---|---|
| committer | hathach <[email protected]> | 2018-03-23 14:15:35 +0700 |
| commit | e8b0500d403e71da5898cdce01708e0f8111813c (patch) | |
| tree | 00398807f5412ae27c9464dd69a6da2a9f077aad /examples/device/nrf52840/src | |
| parent | 3e5e1f70bfc320b1940a2ab0771b1dd23e6744f3 (diff) | |
MSC tested with nrf52840
Diffstat (limited to 'examples/device/nrf52840/src')
| -rw-r--r-- | examples/device/nrf52840/src/tusb_config.h | 11 | ||||
| -rw-r--r-- | examples/device/nrf52840/src/tusb_descriptors.c | 62 | ||||
| -rw-r--r-- | examples/device/nrf52840/src/tusb_descriptors.h | 27 |
3 files changed, 79 insertions, 21 deletions
diff --git a/examples/device/nrf52840/src/tusb_config.h b/examples/device/nrf52840/src/tusb_config.h index 953f05858..e517376c3 100644 --- a/examples/device/nrf52840/src/tusb_config.h +++ b/examples/device/nrf52840/src/tusb_config.h @@ -60,7 +60,7 @@ #define TUSB_CFG_DEVICE_HID_KEYBOARD 0 #define TUSB_CFG_DEVICE_HID_MOUSE 0 #define TUSB_CFG_DEVICE_HID_GENERIC 0 // not supported yet -#define TUSB_CFG_DEVICE_MSC 0 +#define TUSB_CFG_DEVICE_MSC 1 #define TUSB_CFG_DEVICE_CDC 1 //--------------------------------------------------------------------+ @@ -79,6 +79,15 @@ //--------------------------------------------------------------------+ #define TUSB_CFG_ATTR_USBRAM +// LPC11uxx and LPC13uxx requires each buffer has to be 64-byte alignment +#if TUSB_CFG_MCU == MCU_LPC11UXX || TUSB_CFG_MCU == MCU_LPC13UXX + #define ATTR_USB_MIN_ALIGNMENT ATTR_ALIGNED(64) +#elif defined NRF52840_XXAA + #define ATTR_USB_MIN_ALIGNMENT ATTR_ALIGNED(4) +#else + #define ATTR_USB_MIN_ALIGNMENT +#endif + #ifdef __cplusplus } #endif diff --git a/examples/device/nrf52840/src/tusb_descriptors.c b/examples/device/nrf52840/src/tusb_descriptors.c index 5e1e421f1..a36786961 100644 --- a/examples/device/nrf52840/src/tusb_descriptors.c +++ b/examples/device/nrf52840/src/tusb_descriptors.c @@ -77,7 +77,7 @@ app_descriptor_configuration_t const desc_configuration = .bDescriptorType = TUSB_DESC_CONFIGURATION, .wTotalLength = sizeof(app_descriptor_configuration_t), - .bNumInterfaces = TOTAL_INTEFACES, + .bNumInterfaces = ITF_TOTAL, .bConfigurationValue = 1, .iConfiguration = 0x00, @@ -93,7 +93,7 @@ app_descriptor_configuration_t const desc_configuration = .bLength = sizeof(tusb_desc_interface_assoc_t), .bDescriptorType = TUSB_DESC_INTERFACE_ASSOCIATION, - .bFirstInterface = INTERFACE_NO_CDC, + .bFirstInterface = ITF_NUM_CDC, .bInterfaceCount = 2, .bFunctionClass = TUSB_CLASS_CDC, @@ -107,7 +107,7 @@ app_descriptor_configuration_t const desc_configuration = { .bLength = sizeof(tusb_desc_interface_t), .bDescriptorType = TUSB_DESC_INTERFACE, - .bInterfaceNumber = INTERFACE_NO_CDC, + .bInterfaceNumber = ITF_NUM_CDC, .bAlternateSetting = 0, .bNumEndpoints = 1, .bInterfaceClass = TUSB_CLASS_CDC, @@ -130,7 +130,7 @@ app_descriptor_configuration_t const desc_configuration = .bDescriptorType = TUSB_DESC_CLASS_SPECIFIC, .bDescriptorSubType = CDC_FUNC_DESC_CALL_MANAGEMENT, .bmCapabilities = { 0 }, - .bDataInterface = INTERFACE_NO_CDC+1, + .bDataInterface = ITF_NUM_CDC+1, }, .acm = @@ -148,17 +148,17 @@ app_descriptor_configuration_t const desc_configuration = .bLength = sizeof(cdc_desc_func_union_t), // plus number of .bDescriptorType = TUSB_DESC_CLASS_SPECIFIC, .bDescriptorSubType = CDC_FUNC_DESC_UNION, - .bControlInterface = INTERFACE_NO_CDC, - .bSubordinateInterface = INTERFACE_NO_CDC+1, + .bControlInterface = ITF_NUM_CDC, + .bSubordinateInterface = ITF_NUM_CDC+1, }, .ep_notif = { .bLength = sizeof(tusb_desc_endpoint_t), .bDescriptorType = TUSB_DESC_ENDPOINT, - .bEndpointAddress = CDC_EDPT_NOTIFICATION_ADDR, + .bEndpointAddress = CDC_EDPT_NOTIF, .bmAttributes = { .xfer = TUSB_XFER_INTERRUPT }, - .wMaxPacketSize = { .size = 0x08 }, + .wMaxPacketSize = { .size = CDC_EDPT_NOTIF_SIZE }, .bInterval = 0x10 }, @@ -167,7 +167,7 @@ app_descriptor_configuration_t const desc_configuration = { .bLength = sizeof(tusb_desc_interface_t), .bDescriptorType = TUSB_DESC_INTERFACE, - .bInterfaceNumber = INTERFACE_NO_CDC+1, + .bInterfaceNumber = ITF_NUM_CDC+1, .bAlternateSetting = 0x00, .bNumEndpoints = 2, .bInterfaceClass = TUSB_CLASS_CDC_DATA, @@ -180,9 +180,9 @@ app_descriptor_configuration_t const desc_configuration = { .bLength = sizeof(tusb_desc_endpoint_t), .bDescriptorType = TUSB_DESC_ENDPOINT, - .bEndpointAddress = CDC_EDPT_DATA_OUT_ADDR, + .bEndpointAddress = CDC_EDPT_OUT, .bmAttributes = { .xfer = TUSB_XFER_BULK }, - .wMaxPacketSize = { .size = CDC_EDPT_DATA_PACKETSIZE }, + .wMaxPacketSize = { .size = CDC_EDPT_SIZE }, .bInterval = 0 }, @@ -190,11 +190,47 @@ app_descriptor_configuration_t const desc_configuration = { .bLength = sizeof(tusb_desc_endpoint_t), .bDescriptorType = TUSB_DESC_ENDPOINT, - .bEndpointAddress = CDC_EDPT_DATA_IN_ADDR, + .bEndpointAddress = CDC_EDPT_IN, .bmAttributes = { .xfer = TUSB_XFER_BULK }, - .wMaxPacketSize = { .size = CDC_EDPT_DATA_PACKETSIZE }, + .wMaxPacketSize = { .size = CDC_EDPT_SIZE }, .bInterval = 0 }, + }, + + .msc = + { + .interface = + { + .bLength = sizeof(tusb_desc_interface_t), + .bDescriptorType = TUSB_DESC_INTERFACE, + .bInterfaceNumber = ITF_NUM_MSC, + .bAlternateSetting = 0x00, + .bNumEndpoints = 2, + .bInterfaceClass = TUSB_CLASS_MSC, + .bInterfaceSubClass = MSC_SUBCLASS_SCSI, + .bInterfaceProtocol = MSC_PROTOCOL_BOT, + .iInterface = 0x07 + }, + + .ep_out = + { + .bLength = sizeof(tusb_desc_endpoint_t), + .bDescriptorType = TUSB_DESC_ENDPOINT, + .bEndpointAddress = MSC_EDPT_OUT, + .bmAttributes = { .xfer = TUSB_XFER_BULK }, + .wMaxPacketSize = { .size = MSC_EDPT_SIZE}, + .bInterval = 1 + }, + + .ep_in = + { + .bLength = sizeof(tusb_desc_endpoint_t), + .bDescriptorType = TUSB_DESC_ENDPOINT, + .bEndpointAddress = MSC_EDPT_IN, + .bmAttributes = { .xfer = TUSB_XFER_BULK }, + .wMaxPacketSize = { .size = MSC_EDPT_SIZE}, + .bInterval = 1 + } } }; diff --git a/examples/device/nrf52840/src/tusb_descriptors.h b/examples/device/nrf52840/src/tusb_descriptors.h index 5a82764f4..cf291e25e 100644 --- a/examples/device/nrf52840/src/tusb_descriptors.h +++ b/examples/device/nrf52840/src/tusb_descriptors.h @@ -56,8 +56,10 @@ PRODUCTID_BITMAP(MSC, 4) ) ) #endif -#define INTERFACE_NO_CDC 0 -#define TOTAL_INTEFACES 2 +#define ITF_NUM_CDC 0 +#define ITF_NUM_MSC 2 + +#define ITF_TOTAL 3 // total number of interfaces //--------------------------------------------------------------------+ // Endpoints Address & Max Packet Size @@ -65,12 +67,16 @@ #define EDPT_IN(x) (0x80 | (x)) #define EDPT_OUT(x) (x) -#define CDC_EDPT_NOTIFICATION_ADDR EDPT_IN (1) -#define CDC_EDPT_NOTIFICATION_PACKETSIZE 64 +#define CDC_EDPT_NOTIF EDPT_IN (1) +#define CDC_EDPT_NOTIF_SIZE 8 + +#define CDC_EDPT_OUT EDPT_OUT(2) +#define CDC_EDPT_IN EDPT_IN (2) +#define CDC_EDPT_SIZE 64 -#define CDC_EDPT_DATA_OUT_ADDR EDPT_OUT(2) -#define CDC_EDPT_DATA_IN_ADDR EDPT_IN (2) -#define CDC_EDPT_DATA_PACKETSIZE 64 +#define MSC_EDPT_OUT EDPT_OUT(3) +#define MSC_EDPT_IN EDPT_IN(3) +#define MSC_EDPT_SIZE 64 //--------------------------------------------------------------------+ @@ -98,6 +104,13 @@ typedef struct ATTR_PACKED tusb_desc_endpoint_t ep_in; }cdc; + struct ATTR_PACKED + { + tusb_desc_interface_t interface; + tusb_desc_endpoint_t ep_out; + tusb_desc_endpoint_t ep_in; + }msc; + } app_descriptor_configuration_t; #endif |
