diff options
| author | hathach <[email protected]> | 2018-03-07 15:30:32 +0700 |
|---|---|---|
| committer | hathach <[email protected]> | 2018-03-07 15:30:32 +0700 |
| commit | 7092db264f9284c23d777562947111369baf7f68 (patch) | |
| tree | bbbb70ec1b8caf7f90d0574193916c13258672c4 /examples/device/device_virtual_com/src | |
| parent | 889169d4d06266e1f827e79259a1ac1aac1bbcb3 (diff) | |
update
Diffstat (limited to 'examples/device/device_virtual_com/src')
3 files changed, 14 insertions, 336 deletions
diff --git a/examples/device/device_virtual_com/src/cdc_device_app.c b/examples/device/device_virtual_com/src/cdc_device_app.c index cbc4f4ffe..2a10d2ca6 100644 --- a/examples/device/device_virtual_com/src/cdc_device_app.c +++ b/examples/device/device_virtual_com/src/cdc_device_app.c @@ -76,36 +76,10 @@ void cdc_serial_app_umount(uint8_t coreid) } -void tud_cdc_xfer_cb(uint8_t coreid, tusb_event_t event, cdc_pipeid_t pipe_id, uint32_t xferred_bytes) +void tud_cdc_rx_cb(uint8_t coreid, uint32_t xferred_bytes) { - switch ( pipe_id ) - { - case CDC_PIPE_DATA_OUT: - switch(event) - { - case TUSB_EVENT_XFER_COMPLETE: - for(uint8_t i=0; i<xferred_bytes; i++) - { - fifo_write(&fifo_serial, serial_rx_buffer+i); - } - osal_semaphore_post(sem_hdl); // notify main task - break; - - case TUSB_EVENT_XFER_ERROR: - tud_cdc_receive(0, serial_rx_buffer, SERIAL_BUFFER_SIZE, true); // ignore, queue transfer again - break; - - case TUSB_EVENT_XFER_STALLED: - default : - break; - } - break; - - case CDC_PIPE_DATA_IN: - case CDC_PIPE_NOTIFICATION: - default: - break; - } + fifo_write_n(&fifo_serial, serial_rx_buffer, xferred_bytes); + osal_semaphore_post(sem_hdl); // notify main task } //--------------------------------------------------------------------+ @@ -135,9 +109,9 @@ tusb_error_t cdc_serial_subtask(void) OSAL_SUBTASK_BEGIN tusb_error_t error; + (void) error; // suppress compiler's warnings osal_semaphore_wait(sem_hdl, OSAL_TIMEOUT_WAIT_FOREVER, &error); - (void) error; // suppress compiler's warnings if ( tud_mounted(0) ) { diff --git a/examples/device/device_virtual_com/src/tusb_descriptors.c b/examples/device/device_virtual_com/src/tusb_descriptors.c index 82d9d1fbe..11c52390e 100644 --- a/examples/device/device_virtual_com/src/tusb_descriptors.c +++ b/examples/device/device_virtual_com/src/tusb_descriptors.c @@ -39,100 +39,6 @@ #include "tusb_descriptors.h" //--------------------------------------------------------------------+ -// Keyboard Report Descriptor -//--------------------------------------------------------------------+ -#if TUSB_CFG_DEVICE_HID_KEYBOARD -uint8_t const desc_keyboard_report[] = { - HID_USAGE_PAGE ( HID_USAGE_PAGE_DESKTOP ), - HID_USAGE ( HID_USAGE_DESKTOP_KEYBOARD ), - HID_COLLECTION ( HID_COLLECTION_APPLICATION ), - HID_USAGE_PAGE ( HID_USAGE_PAGE_KEYBOARD ), - HID_USAGE_MIN ( 224 ), - HID_USAGE_MAX ( 231 ), - HID_LOGICAL_MIN ( 0 ), - HID_LOGICAL_MAX ( 1 ), - - HID_REPORT_SIZE ( 1 ), - HID_REPORT_COUNT ( 8 ), /* 8 bits */ - HID_INPUT ( HID_DATA | HID_VARIABLE | HID_ABSOLUTE ), /* maskable modifier key */ - - HID_REPORT_SIZE ( 8 ), - HID_REPORT_COUNT ( 1 ), - HID_INPUT ( HID_CONSTANT ), /* reserved */ - - HID_USAGE_PAGE ( HID_USAGE_PAGE_LED ), - HID_USAGE_MIN ( 1 ), - HID_USAGE_MAX ( 5 ), - HID_REPORT_COUNT ( 5 ), - HID_REPORT_SIZE ( 1 ), - HID_OUTPUT ( HID_DATA | HID_VARIABLE | HID_ABSOLUTE ), /* 5-bit Led report */ - - HID_REPORT_SIZE ( 3 ), /* led padding */ - HID_REPORT_COUNT ( 1 ), - HID_OUTPUT ( HID_CONSTANT ), - - HID_USAGE_PAGE (HID_USAGE_PAGE_KEYBOARD), - HID_USAGE_MIN ( 0 ), - HID_USAGE_MAX ( 101 ), - HID_LOGICAL_MIN ( 0 ), - HID_LOGICAL_MAX ( 101 ), - - HID_REPORT_SIZE ( 8 ), - HID_REPORT_COUNT ( 6 ), - HID_INPUT ( HID_DATA | HID_ARRAY | HID_ABSOLUTE ), /* keycodes array 6 items */ - HID_COLLECTION_END -}; -#endif - -//--------------------------------------------------------------------+ -// Mouse Report Descriptor -//--------------------------------------------------------------------+ -#if TUSB_CFG_DEVICE_HID_MOUSE -uint8_t const desc_mouse_report[] = { - HID_USAGE_PAGE ( HID_USAGE_PAGE_DESKTOP ), - HID_USAGE ( HID_USAGE_DESKTOP_MOUSE ), - HID_COLLECTION ( HID_COLLECTION_APPLICATION ), - HID_USAGE (HID_USAGE_DESKTOP_POINTER), - - HID_COLLECTION ( HID_COLLECTION_PHYSICAL ), - HID_USAGE_PAGE ( HID_USAGE_PAGE_BUTTON ), - HID_USAGE_MIN ( 1 ), - HID_USAGE_MAX ( 3 ), - HID_LOGICAL_MIN ( 0 ), - HID_LOGICAL_MAX ( 1 ), - - HID_REPORT_SIZE ( 1 ), - HID_REPORT_COUNT ( 3 ), /* Left, Right and Middle mouse*/ - HID_INPUT ( HID_DATA | HID_VARIABLE | HID_ABSOLUTE ), - - HID_REPORT_SIZE ( 5 ), - HID_REPORT_COUNT ( 1 ), - HID_INPUT ( HID_CONSTANT ), /* 5 bit padding followed 3 bit buttons */ - - HID_USAGE_PAGE ( HID_USAGE_PAGE_DESKTOP ), - HID_USAGE ( HID_USAGE_DESKTOP_X ), - HID_USAGE ( HID_USAGE_DESKTOP_Y ), - HID_LOGICAL_MIN ( 0x81 ), /* -127 */ - HID_LOGICAL_MAX ( 0x7f ), /* 127 */ - - HID_REPORT_SIZE ( 8 ), - HID_REPORT_COUNT ( 2 ), /* X, Y position */ - HID_INPUT ( HID_DATA | HID_VARIABLE | HID_RELATIVE ), /* relative values */ - - HID_USAGE ( HID_USAGE_DESKTOP_WHEEL ), /* mouse scroll */ - HID_LOGICAL_MIN ( 0x81 ), /* -127 */ - HID_LOGICAL_MAX ( 0x7f ), /* 127 */ - HID_REPORT_COUNT( 1 ), - HID_REPORT_SIZE ( 8 ), /* 8-bit value */ - HID_INPUT ( HID_DATA | HID_VARIABLE | HID_RELATIVE ), /* relative values */ - - HID_COLLECTION_END, - - HID_COLLECTION_END -}; -#endif - -//--------------------------------------------------------------------+ // USB DEVICE DESCRIPTOR //--------------------------------------------------------------------+ tusb_descriptor_device_t const desc_device = @@ -140,17 +46,12 @@ tusb_descriptor_device_t const desc_device = .bLength = sizeof(tusb_descriptor_device_t), .bDescriptorType = TUSB_DESC_TYPE_DEVICE, .bcdUSB = 0x0200, - #if TUSB_CFG_DEVICE_CDC + // Use Interface Association Descriptor (IAD) for CDC // As required by USB Specs IAD's subclass must be common class (2) and protocol must be IAD (1) .bDeviceClass = TUSB_CLASS_MISC, .bDeviceSubClass = MISC_SUBCLASS_COMMON, .bDeviceProtocol = MISC_PROTOCOL_IAD, - #else - .bDeviceClass = 0x00, - .bDeviceSubClass = 0x00, - .bDeviceProtocol = 0x00, - #endif .bMaxPacketSize0 = TUSB_CFG_DEVICE_CONTROL_ENDOINT_SIZE, @@ -162,7 +63,7 @@ tusb_descriptor_device_t const desc_device = .iProduct = 0x02, .iSerialNumber = 0x03, - .bNumConfigurations = 0x01 // TODO multiple configurations + .bNumConfigurations = 0x01 }; //--------------------------------------------------------------------+ @@ -184,7 +85,6 @@ app_descriptor_configuration_t const desc_configuration = .bMaxPower = TUSB_DESC_CONFIG_POWER_MA(500) }, - #if TUSB_CFG_DEVICE_CDC // IAD points to CDC Interfaces .cdc_iad = { @@ -271,7 +171,7 @@ app_descriptor_configuration_t const desc_configuration = .bInterfaceClass = TUSB_CLASS_CDC_DATA, .bInterfaceSubClass = 0, .bInterfaceProtocol = 0, - .iInterface = 0x04 + .iInterface = 0x00 }, .cdc_endpoint_out = @@ -293,117 +193,6 @@ app_descriptor_configuration_t const desc_configuration = .wMaxPacketSize = { .size = CDC_EDPT_DATA_PACKETSIZE }, .bInterval = 0 }, - #endif - - //------------- HID Keyboard -------------// - #if TUSB_CFG_DEVICE_HID_KEYBOARD - .keyboard_interface = - { - .bLength = sizeof(tusb_descriptor_interface_t), - .bDescriptorType = TUSB_DESC_TYPE_INTERFACE, - .bInterfaceNumber = INTERFACE_NO_HID_KEYBOARD, - .bAlternateSetting = 0x00, - .bNumEndpoints = 1, - .bInterfaceClass = TUSB_CLASS_HID, - .bInterfaceSubClass = HID_SUBCLASS_BOOT, - .bInterfaceProtocol = HID_PROTOCOL_KEYBOARD, - .iInterface = 0x05 - }, - - .keyboard_hid = - { - .bLength = sizeof(tusb_hid_descriptor_hid_t), - .bDescriptorType = HID_DESC_TYPE_HID, - .bcdHID = 0x0111, - .bCountryCode = HID_Local_NotSupported, - .bNumDescriptors = 1, - .bReportType = HID_DESC_TYPE_REPORT, - .wReportLength = sizeof(desc_keyboard_report) - }, - - .keyboard_endpoint = - { - .bLength = sizeof(tusb_descriptor_endpoint_t), - .bDescriptorType = TUSB_DESC_TYPE_ENDPOINT, - .bEndpointAddress = HID_KEYBOARD_EDPT_ADDR, - .bmAttributes = { .xfer = TUSB_XFER_INTERRUPT }, - .wMaxPacketSize = { .size = HID_KEYBOARD_EDPT_PACKETSIZE }, - .bInterval = 0x0A - }, - #endif - - //------------- HID Mouse -------------// - #if TUSB_CFG_DEVICE_HID_MOUSE - .mouse_interface = - { - .bLength = sizeof(tusb_descriptor_interface_t), - .bDescriptorType = TUSB_DESC_TYPE_INTERFACE, - .bInterfaceNumber = INTERFACE_NO_HID_MOUSE, - .bAlternateSetting = 0x00, - .bNumEndpoints = 1, - .bInterfaceClass = TUSB_CLASS_HID, - .bInterfaceSubClass = HID_SUBCLASS_BOOT, - .bInterfaceProtocol = HID_PROTOCOL_MOUSE, - .iInterface = 0x06 - }, - - .mouse_hid = - { - .bLength = sizeof(tusb_hid_descriptor_hid_t), - .bDescriptorType = HID_DESC_TYPE_HID, - .bcdHID = 0x0111, - .bCountryCode = HID_Local_NotSupported, - .bNumDescriptors = 1, - .bReportType = HID_DESC_TYPE_REPORT, - .wReportLength = sizeof(desc_mouse_report) - }, - - .mouse_endpoint = - { - .bLength = sizeof(tusb_descriptor_endpoint_t), - .bDescriptorType = TUSB_DESC_TYPE_ENDPOINT, - .bEndpointAddress = HID_MOUSE_EDPT_ADDR, // TODO - .bmAttributes = { .xfer = TUSB_XFER_INTERRUPT }, - .wMaxPacketSize = { .size = HID_MOUSE_EDPT_PACKETSIZE }, - .bInterval = 0x0A - }, - #endif - - //------------- Mass Storage -------------// - #if TUSB_CFG_DEVICE_MSC - .msc_interface = - { - .bLength = sizeof(tusb_descriptor_interface_t), - .bDescriptorType = TUSB_DESC_TYPE_INTERFACE, - .bInterfaceNumber = INTERFACE_NO_MSC, - .bAlternateSetting = 0x00, - .bNumEndpoints = 2, - .bInterfaceClass = TUSB_CLASS_MSC, - .bInterfaceSubClass = MSC_SUBCLASS_SCSI, - .bInterfaceProtocol = MSC_PROTOCOL_BOT, - .iInterface = 0x07 - }, - - .msc_endpoint_in = - { - .bLength = sizeof(tusb_descriptor_endpoint_t), - .bDescriptorType = TUSB_DESC_TYPE_ENDPOINT, - .bEndpointAddress = MSC_EDPT_IN_ADDR, - .bmAttributes = { .xfer = TUSB_XFER_BULK }, - .wMaxPacketSize = { .size = MSC_EDPT_PACKETSIZE }, - .bInterval = 1 - }, - - .msc_endpoint_out = - { - .bLength = sizeof(tusb_descriptor_endpoint_t), - .bDescriptorType = TUSB_DESC_TYPE_ENDPOINT, - .bEndpointAddress = MSC_EDPT_OUT_ADDR, - .bmAttributes = { .xfer = TUSB_XFER_BULK }, - .wMaxPacketSize = { .size = MSC_EDPT_PACKETSIZE }, - .bInterval = 1 - }, - #endif }; //--------------------------------------------------------------------+ @@ -464,12 +253,4 @@ tusbd_descriptor_pointer_t tusbd_descriptor_pointers = .p_device = (uint8_t const * ) &desc_device, .p_configuration = (uint8_t const * ) &desc_configuration, .p_string_arr = (uint8_t const **) string_descriptor_arr, - - #if TUSB_CFG_DEVICE_HID_KEYBOARD - .p_hid_keyboard_report = (uint8_t const *) desc_keyboard_report, - #endif - - #if TUSB_CFG_DEVICE_HID_MOUSE - .p_hid_mouse_report = (uint8_t const *) desc_mouse_report, - #endif }; diff --git a/examples/device/device_virtual_com/src/tusb_descriptors.h b/examples/device/device_virtual_com/src/tusb_descriptors.h index 322af0392..0c74b5297 100644 --- a/examples/device/device_virtual_com/src/tusb_descriptors.h +++ b/examples/device/device_virtual_com/src/tusb_descriptors.h @@ -56,18 +56,8 @@ PRODUCTID_BITMAP(MSC, 4) ) ) #endif -#define INTERFACE_NO_CDC 0 -#define INTERFACE_NO_HID_KEYBOARD (INTERFACE_NO_CDC + 2*(TUSB_CFG_DEVICE_CDC ? 1 : 0) ) -#define INTERFACE_NO_HID_MOUSE (INTERFACE_NO_HID_KEYBOARD + TUSB_CFG_DEVICE_HID_KEYBOARD ) -#define INTERFACE_NO_HID_GENERIC (INTERFACE_NO_HID_MOUSE + TUSB_CFG_DEVICE_HID_MOUSE ) -#define INTERFACE_NO_MSC (INTERFACE_NO_HID_GENERIC + TUSB_CFG_DEVICE_HID_GENERIC ) - -#define TOTAL_INTEFACES (2*TUSB_CFG_DEVICE_CDC + TUSB_CFG_DEVICE_HID_KEYBOARD + TUSB_CFG_DEVICE_HID_MOUSE + \ - TUSB_CFG_DEVICE_HID_GENERIC + TUSB_CFG_DEVICE_MSC) - -#if (TUSB_CFG_MCU == MCU_LPC11UXX || TUSB_CFG_MCU == MCU_LPC13UXX) && (TOTAL_INTEFACES > 4) - #error These MCUs do not have enough number of endpoints for the current configuration -#endif +#define INTERFACE_NO_CDC 0 +#define TOTAL_INTEFACES 2 //--------------------------------------------------------------------+ // Endpoints Address & Max Packet Size @@ -75,57 +65,13 @@ #define EDPT_IN(x) (0x80 | (x)) #define EDPT_OUT(x) (x) -#if TUSB_CFG_MCU == MCU_LPC175X_6X // MCUs's endpoint number has a fixed type - - //------------- CDC -------------// - #define CDC_EDPT_NOTIFICATION_ADDR EDPT_IN (1) - #define CDC_EDPT_NOTIFICATION_PACKETSIZE 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 - - //------------- HID Keyboard -------------// - #define HID_KEYBOARD_EDPT_ADDR EDPT_IN (4) - #define HID_KEYBOARD_EDPT_PACKETSIZE 8 - - //------------- HID Mouse -------------// - #define HID_MOUSE_EDPT_ADDR EDPT_IN (7) - #define HID_MOUSE_EDPT_PACKETSIZE 8 - - //------------- HID Generic -------------// - - //------------- Mass Storage -------------// - #define MSC_EDPT_OUT_ADDR EDPT_OUT(5) - #define MSC_EDPT_IN_ADDR EDPT_IN (5) - -#else - - //------------- CDC -------------// - #define CDC_EDPT_NOTIFICATION_ADDR EDPT_IN (INTERFACE_NO_CDC+1) - #define CDC_EDPT_NOTIFICATION_PACKETSIZE 64 - - #define CDC_EDPT_DATA_OUT_ADDR EDPT_OUT(INTERFACE_NO_CDC+2) - #define CDC_EDPT_DATA_IN_ADDR EDPT_IN (INTERFACE_NO_CDC+2) - #define CDC_EDPT_DATA_PACKETSIZE 64 - - //------------- HID Keyboard -------------// - #define HID_KEYBOARD_EDPT_ADDR EDPT_IN (INTERFACE_NO_HID_KEYBOARD+1) - #define HID_KEYBOARD_EDPT_PACKETSIZE 8 +#define CDC_EDPT_NOTIFICATION_ADDR EDPT_IN (1) +#define CDC_EDPT_NOTIFICATION_PACKETSIZE 64 - //------------- HID Mouse -------------// - #define HID_MOUSE_EDPT_ADDR EDPT_IN (INTERFACE_NO_HID_MOUSE+1) - #define HID_MOUSE_EDPT_PACKETSIZE 8 +#define CDC_EDPT_DATA_OUT_ADDR EDPT_OUT(2) +#define CDC_EDPT_DATA_IN_ADDR EDPT_IN (2) +#define CDC_EDPT_DATA_PACKETSIZE 64 - //------------- HID Generic -------------// - - //------------- Mass Storage -------------// - #define MSC_EDPT_OUT_ADDR EDPT_OUT(INTERFACE_NO_MSC+1) - #define MSC_EDPT_IN_ADDR EDPT_IN (INTERFACE_NO_MSC+1) - -#endif - -#define MSC_EDPT_PACKETSIZE (TUSB_CFG_MCU == MCU_LPC43XX ? 512 : 64) //--------------------------------------------------------------------+ // CONFIGURATION DESCRIPTOR @@ -135,7 +81,6 @@ typedef struct ATTR_PACKED tusb_descriptor_configuration_t configuration; //------------- CDC -------------// -#if TUSB_CFG_DEVICE_CDC tusb_descriptor_interface_association_t cdc_iad; //CDC Control Interface @@ -150,28 +95,6 @@ typedef struct ATTR_PACKED tusb_descriptor_interface_t cdc_data_interface; tusb_descriptor_endpoint_t cdc_endpoint_out; tusb_descriptor_endpoint_t cdc_endpoint_in; -#endif - - //------------- HID Keyboard -------------// -#if TUSB_CFG_DEVICE_HID_KEYBOARD - tusb_descriptor_interface_t keyboard_interface; - tusb_hid_descriptor_hid_t keyboard_hid; - tusb_descriptor_endpoint_t keyboard_endpoint; -#endif - -//------------- HID Mouse -------------// -#if TUSB_CFG_DEVICE_HID_MOUSE - tusb_descriptor_interface_t mouse_interface; - tusb_hid_descriptor_hid_t mouse_hid; - tusb_descriptor_endpoint_t mouse_endpoint; -#endif - -//------------- Mass Storage -------------// -#if TUSB_CFG_DEVICE_MSC - tusb_descriptor_interface_t msc_interface; - tusb_descriptor_endpoint_t msc_endpoint_in; - tusb_descriptor_endpoint_t msc_endpoint_out; -#endif } app_descriptor_configuration_t; |
