From 1e5bd82af28c6005fa0ecf008e44322a6ee46461 Mon Sep 17 00:00:00 2001 From: hathach Date: Tue, 28 May 2013 15:24:27 +0700 Subject: [PATCH] rename NGX to ngx add a bunch of stub header for dcd (175x_6x, 13xx, 18xx_43xx) add dcd_nxp_romdriver for handling usb rom driver add BIT_TEST_ in binary.h remove mw_usbd_hid.h include due to lexical conflict --- demos/bsp/boards/NGX/board_ngx4330.c | 115 ------------ demos/device/keyboard/.cproject | 4 +- demos/device/keyboard/.project | 4 +- demos/device/keyboard/tusb_config.h | 3 +- .../{descriptors.c => tusb_descriptors.c} | 23 +-- .../{descriptors.h => tusb_descriptors.h} | 45 ++--- tests/test/device/usbd/test_usbd.c | 72 ++++++++ tests/test/host/usbh/test_enum_task.c | 8 +- tests/test/support/tusb_config.h | 3 +- tinyusb/class/hid.h | 66 +++---- tinyusb/class/hid_device.c | 62 +++++++ tinyusb/common/binary.h | 2 + tinyusb/device/dcd.c | 10 -- tinyusb/device/dcd.h | 22 +-- .../device/dcd_lpc13xx.h | 28 +-- .../{dcd_lpc43xx.c => dcd_lpc175x_6x.c} | 23 +-- .../{dcd_lpc43xx.h => dcd_lpc175x_6x.h} | 11 +- tinyusb/device/dcd_lpc18xx_lpc43xx.h | 62 +++++++ tinyusb/device/dcd_nxp_romdriver.c | 166 ++++++++++++++++++ .../device/dcd_nxp_romdriver.h | 32 ++-- tinyusb/device/romdriver/mw_usbd_hiduser.h | 2 +- tinyusb/device/usbd.c | 18 ++ tinyusb/hal/hal_lpc11uxx.h | 5 +- tinyusb/hal/hal_lpc13uxx.h | 4 - tinyusb/hal/hal_lpc43xx.c | 8 +- tinyusb/hal/hal_lpc43xx.h | 3 - tinyusb/tusb_option.h | 4 + 27 files changed, 504 insertions(+), 301 deletions(-) delete mode 100644 demos/bsp/boards/NGX/board_ngx4330.c rename demos/device/keyboard/{descriptors.c => tusb_descriptors.c} (94%) rename demos/device/keyboard/{descriptors.h => tusb_descriptors.h} (83%) create mode 100644 tests/test/device/usbd/test_usbd.c create mode 100644 tinyusb/class/hid_device.c rename demos/bsp/boards/NGX/board_ngx4330.h => tinyusb/device/dcd_lpc13xx.h (74%) rename tinyusb/device/{dcd_lpc43xx.c => dcd_lpc175x_6x.c} (89%) rename tinyusb/device/{dcd_lpc43xx.h => dcd_lpc175x_6x.h} (93%) create mode 100644 tinyusb/device/dcd_lpc18xx_lpc43xx.h create mode 100644 tinyusb/device/dcd_nxp_romdriver.c rename demos/bsp/boards/ngx/board_ngx4330.h => tinyusb/device/dcd_nxp_romdriver.h (74%) diff --git a/demos/bsp/boards/NGX/board_ngx4330.c b/demos/bsp/boards/NGX/board_ngx4330.c deleted file mode 100644 index 620393d21..000000000 --- a/demos/bsp/boards/NGX/board_ngx4330.c +++ /dev/null @@ -1,115 +0,0 @@ -/**************************************************************************/ -/*! - @file board_ngx4330.c - @author hathach (tinyusb.org) - - @section LICENSE - - Software License Agreement (BSD License) - - Copyright (c) 2013, hathach (tinyusb.org) - All rights reserved. - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are met: - 1. Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - 2. Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - 3. Neither the name of the copyright holders nor the - names of its contributors may be used to endorse or promote products - derived from this software without specific prior written permission. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS ''AS IS'' AND ANY - EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE FOR ANY - DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION HOWEVER CAUSED AND - ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - INCLUDING NEGLIGENCE OR OTHERWISE ARISING IN ANY WAY OUT OF THE USE OF THIS - SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - - This file is part of the tinyusb stack. -*/ -/**************************************************************************/ - -#include "../board.h" - -#if BOARD == BOARD_NGX4330 - -#define BOARD_MAX_LEDS 2 -const static struct { - uint8_t port; - uint8_t pin; -}leds[BOARD_MAX_LEDS] = { {1, 11}, {1,12} }; - -void board_init(void) -{ - SystemInit(); - CGU_Init(); - SysTick_Config( CGU_GetPCLKFrequency(CGU_PERIPHERAL_M4CORE)/CFG_TICKS_PER_SECOND ); /* 1 ms Timer */ - - //------------- USB Bus power HOST ONLY-------------// - scu_pinmux(0x1, 7, MD_PUP | MD_EZI, FUNC4); // P1_7 USB0_PWR_EN, USB0 VBus function Xplorer - - scu_pinmux(0x2, 6, MD_PUP | MD_EZI, FUNC4); // P2_6 is configured as GPIO5[6] for USB1_PWR_EN - GPIO_SetDir (5, BIT_(6), 1); // GPIO5[6] is output - GPIO_SetValue (5, BIT_(6)); // GPIO5[6] output high - - // Leds Init - for (uint8_t i=0; i - + @@ -1389,7 +1389,7 @@ - + diff --git a/demos/device/keyboard/.project b/demos/device/keyboard/.project index ebcb46372..d2ab64e32 100644 --- a/demos/device/keyboard/.project +++ b/demos/device/keyboard/.project @@ -88,12 +88,12 @@ tinyusb 2 - C:/Users/hathach/Dropbox/tinyusb/workspace/tinyusb/tinyusb + PARENT-3-PROJECT_LOC/tinyusb - 1357896068317 + 1369631005268 26 diff --git a/demos/device/keyboard/tusb_config.h b/demos/device/keyboard/tusb_config.h index 8ca515033..e7e9207ab 100644 --- a/demos/device/keyboard/tusb_config.h +++ b/demos/device/keyboard/tusb_config.h @@ -81,8 +81,7 @@ //--------------------------------------------------------------------+ // DEVICE CONFIGURATION //--------------------------------------------------------------------+ - -//------------- CORE/CONTROLLER -------------// +#define TUSB_CFG_DEVICE_USE_ROM_DRIVER 1 //------------- CLASS -------------// #define TUSB_CFG_DEVICE_HID_KEYBOARD 1 diff --git a/demos/device/keyboard/descriptors.c b/demos/device/keyboard/tusb_descriptors.c similarity index 94% rename from demos/device/keyboard/descriptors.c rename to demos/device/keyboard/tusb_descriptors.c index e17527f63..f392d65ea 100644 --- a/demos/device/keyboard/descriptors.c +++ b/demos/device/keyboard/tusb_descriptors.c @@ -1,5 +1,5 @@ /* - * descriptors.c + * tusb_descriptors.c * * Created on: Nov 26, 2012 * Author: hathach @@ -35,7 +35,7 @@ * This file is part of the tinyUSB stack */ -#include "descriptors.h" +#include "tusb_descriptors.h" #if TUSB_CFG_DEVICE_HID_KEYBOARD TUSB_CFG_ATTR_USBRAM ATTR_ALIGNED(4) @@ -120,7 +120,7 @@ const uint8_t mouse_report_descriptor[] = { #endif TUSB_CFG_ATTR_USBRAM ATTR_ALIGNED(4) -tusb_descriptor_device_t const desc_device = +tusb_descriptor_device_t const app_desc_device = { .bLength = sizeof(tusb_descriptor_device_t), .bDescriptorType = TUSB_DESC_TYPE_DEVICE, @@ -131,7 +131,7 @@ tusb_descriptor_device_t const desc_device = .bMaxPacketSize0 = USB_MAX_PACKET0, - .idVendor = CFG_USB_VENDORID, + .idVendor = TUSB_CFG_DEVICE_VENDORID, .idProduct = USB_PRODUCT_ID, .bcdDevice = 0x0100, @@ -144,14 +144,14 @@ tusb_descriptor_device_t const desc_device = TUSB_CFG_ATTR_USBRAM ATTR_ALIGNED(4) -const app_configuration_desc_t desc_configuration = +const app_descriptor_configuration_t app_desc_configuration = { .configuration = { .bLength = sizeof(tusb_descriptor_configuration_t), .bDescriptorType = TUSB_DESC_TYPE_CONFIGURATION, - .wTotalLength = sizeof(app_configuration_desc_t) - 1, // exclude termination + .wTotalLength = sizeof(app_descriptor_configuration_t) - 1, // exclude termination .bNumInterfaces = TOTAL_INTEFACES, .bConfigurationValue = 1, @@ -380,17 +380,18 @@ const app_configuration_desc_t desc_configuration = .null_termination = 0, }; -TUSB_CFG_ATTR_USBRAM ATTR_ALIGNED(4) const USB_STR_DESCRIPTOR USB_StringDescriptor = +TUSB_CFG_ATTR_USBRAM ATTR_ALIGNED(4) +const app_descriptor_string_t app_desc_strings = { - .LangID = { .bLength = 0x04, .bDescriptorType = USB_STRING_DESCRIPTOR_TYPE }, + .LangID = { .bLength = 0x04, .bDescriptorType = TUSB_DESC_TYPE_STRING }, .strLangID= {0x0409}, // US English - .Manufacturer = { .bLength = USB_STRING_LEN(sizeof(CFG_USB_STRING_MANUFACTURER)-1), .bDescriptorType = USB_STRING_DESCRIPTOR_TYPE }, + .Manufacturer = { .bLength = USB_STRING_LEN(sizeof(TUSB_CFG_DEVICE_STRING_MANUFACTURER)-1), .bDescriptorType = TUSB_DESC_TYPE_STRING }, .strManufacturer = {'t', 'i', 'n', 'y', 'U', 'S', 'B'}, - .Product = { .bLength = USB_STRING_LEN(sizeof(CFG_USB_STRING_PRODUCT)-1), .bDescriptorType = USB_STRING_DESCRIPTOR_TYPE }, + .Product = { .bLength = USB_STRING_LEN(sizeof(TUSB_CFG_DEVICE_STRING_PRODUCT)-1), .bDescriptorType = TUSB_DESC_TYPE_STRING }, .strProduct = {'D', 'e', 'v', 'i', 'c', 'e', ' ', 'K', 'e', 'y', 'b', 'o', 'a', 'r', 'd'}, - .Serial = { .bLength = USB_STRING_LEN(sizeof(CFG_USB_STRING_SERIAL)-1), .bDescriptorType = USB_STRING_DESCRIPTOR_TYPE }, + .Serial = { .bLength = USB_STRING_LEN(sizeof(TUSB_CFG_DEVICE_STRING_SERIAL)-1), .bDescriptorType = TUSB_DESC_TYPE_STRING }, .strSerial = {'1', '2', '3', '4'} }; diff --git a/demos/device/keyboard/descriptors.h b/demos/device/keyboard/tusb_descriptors.h similarity index 83% rename from demos/device/keyboard/descriptors.h rename to demos/device/keyboard/tusb_descriptors.h index 0c89ba4bd..a3beb66f2 100644 --- a/demos/device/keyboard/descriptors.h +++ b/demos/device/keyboard/tusb_descriptors.h @@ -1,5 +1,5 @@ /* - * descriptors.h + * tusb_descriptors.h * * Created on: Nov 26, 2012 * Author: hathachtware License Agreement (BSD License) @@ -35,30 +35,31 @@ #include "tusb.h" -#define CFG_USB_STRING_MANUFACTURER "tinyUSB" -#define CFG_USB_STRING_PRODUCT "Device Keyboard" -#define CFG_USB_STRING_SERIAL "1234" -#define CFG_USB_VENDORID 0x1FC9 +#define TUSB_CFG_DEVICE_STRING_MANUFACTURER "tinyUSB" +#define TUSB_CFG_DEVICE_STRING_PRODUCT "Device Keyboard" +#define TUSB_CFG_DEVICE_STRING_SERIAL "1234" +#define TUSB_CFG_DEVICE_VENDORID 0x1FC9 +//#define TUSB_CFG_DEVICE_PRODUCTID /* USB Serial uses the MCUs unique 128-bit chip ID via an IAP call = 32 hex chars */ #define USB_STRING_SERIAL_LEN 32 #define USB_STRING_LEN(n) (2 + ((n)<<1)) -typedef ATTR_PREPACKED struct ATTR_PACKED _USB_STR_DESCRIPTOR +typedef ATTR_PACKED_STRUCT(struct) { - USB_COMMON_DESCRIPTOR LangID; + tusb_descriptor_header_t LangID; uint16_t strLangID[1]; - USB_COMMON_DESCRIPTOR Manufacturer; - uint16_t strManufacturer[sizeof(CFG_USB_STRING_MANUFACTURER)-1]; // exclude null-character + tusb_descriptor_header_t Manufacturer; + uint16_t strManufacturer[sizeof(TUSB_CFG_DEVICE_STRING_MANUFACTURER)-1]; // exclude null-character - USB_COMMON_DESCRIPTOR Product; - uint16_t strProduct[sizeof(CFG_USB_STRING_PRODUCT)-1]; // exclude null-character + tusb_descriptor_header_t Product; + uint16_t strProduct[sizeof(TUSB_CFG_DEVICE_STRING_PRODUCT)-1]; // exclude null-character - USB_COMMON_DESCRIPTOR Serial; - uint16_t strSerial[sizeof(CFG_USB_STRING_SERIAL)-1]; -} USB_STR_DESCRIPTOR; + tusb_descriptor_header_t Serial; + uint16_t strSerial[sizeof(TUSB_CFG_DEVICE_STRING_SERIAL)-1]; +} app_descriptor_string_t; // USB Interface Assosication Descriptor #define USB_DEVICE_CLASS_IAD USB_DEVICE_CLASS_MISCELLANEOUS @@ -113,7 +114,7 @@ typedef ATTR_PREPACKED struct ATTR_PACKED _USB_STR_DESCRIPTOR PRODUCTID_BITMAP(HID_GENERIC, 3) | PRODUCTID_BITMAP(MASS_STORAGE, 4) ) ) /////////////////////////////////////////////////////////////////////// -typedef struct +typedef ATTR_PACKED_STRUCT(struct) { tusb_descriptor_configuration_t configuration; @@ -150,14 +151,14 @@ typedef struct tusb_descriptor_endpoint_t mouse_endpoint; #endif - uint8_t null_termination; -} app_configuration_desc_t; - -extern const tusb_descriptor_device_t desc_device; -extern const app_configuration_desc_t desc_configuration; -extern const USB_STR_DESCRIPTOR USB_StringDescriptor; + uint8_t null_termination; // NXP rom driver requires this to work +} app_descriptor_configuration_t; +extern const tusb_descriptor_device_t app_desc_device; +extern const app_descriptor_configuration_t app_desc_configuration; +extern const app_descriptor_string_t app_desc_strings; extern const uint8_t keyboard_report_descriptor[]; -extern const uint8_t HID_MouseReportDescriptor[]; + +//extern const uint8_t HID_MouseReportDescriptor[]; #endif diff --git a/tests/test/device/usbd/test_usbd.c b/tests/test/device/usbd/test_usbd.c new file mode 100644 index 000000000..a41118201 --- /dev/null +++ b/tests/test/device/usbd/test_usbd.c @@ -0,0 +1,72 @@ +/**************************************************************************/ +/*! + @file test_usbd.c + @author hathach (tinyusb.org) + + @section LICENSE + + Software License Agreement (BSD License) + + Copyright (c) 2013, hathach (tinyusb.org) + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are met: + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + 3. Neither the name of the copyright holders nor the + names of its contributors may be used to endorse or promote products + derived from this software without specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS ''AS IS'' AND ANY + EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE FOR ANY + DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + This file is part of the tinyusb stack. +*/ +/**************************************************************************/ + +#include +#include "unity.h" +#include "errors.h" +#include "type_helper.h" + +#include "mock_dcd.h" +#include "usbd.h" + +void setUp(void) +{ + +} + +void tearDown(void) +{ +} + +void test_dcd_init_failed(void) +{ + dcd_init_ExpectAndReturn(TUSB_ERROR_FAILED); + + //------------- Code Under Test -------------// + TEST_ASSERT_EQUAL( TUSB_ERROR_FAILED, usbd_init() ); +} + +void test_usbd_init_ok(void) +{ + dcd_init_ExpectAndReturn(TUSB_ERROR_NONE); + + + //------------- Code Under Test -------------// + TEST_ASSERT_EQUAL( TUSB_ERROR_NONE, usbd_init() ); + +} diff --git a/tests/test/host/usbh/test_enum_task.c b/tests/test/host/usbh/test_enum_task.c index eef0a0ce6..3d0f9f193 100644 --- a/tests/test/host/usbh/test_enum_task.c +++ b/tests/test/host/usbh/test_enum_task.c @@ -122,7 +122,7 @@ tusb_error_t control_xfer_stub(uint8_t dev_addr, const tusb_std_request_t * cons { case 0: // get 8 bytes of device descriptor TEST_ASSERT_EQUAL(TUSB_REQUEST_GET_DESCRIPTOR, p_request->bRequest); - TEST_ASSERT_EQUAL(TUSB_DESC_DEVICE, p_request->wValue >> 8); + TEST_ASSERT_EQUAL(TUSB_DESC_TYPE_DEVICE, p_request->wValue >> 8); TEST_ASSERT_EQUAL(8, p_request->wLength); memcpy(data, &desc_device, p_request->wLength); break; @@ -134,21 +134,21 @@ tusb_error_t control_xfer_stub(uint8_t dev_addr, const tusb_std_request_t * cons case 2: // get full device decriptor for new address TEST_ASSERT_EQUAL(TUSB_REQUEST_GET_DESCRIPTOR, p_request->bRequest); - TEST_ASSERT_EQUAL(TUSB_DESC_DEVICE, p_request->wValue >> 8); + TEST_ASSERT_EQUAL(TUSB_DESC_TYPE_DEVICE, p_request->wValue >> 8); TEST_ASSERT_EQUAL(18, p_request->wLength); memcpy(data, &desc_device, p_request->wLength); break; case 3: // get 9 bytes of configuration descriptor TEST_ASSERT_EQUAL(TUSB_REQUEST_GET_DESCRIPTOR, p_request->bRequest); - TEST_ASSERT_EQUAL(TUSB_DESC_CONFIGURATION, p_request->wValue >> 8); + TEST_ASSERT_EQUAL(TUSB_DESC_TYPE_CONFIGURATION, p_request->wValue >> 8); TEST_ASSERT_EQUAL(9, p_request->wLength); memcpy(data, &desc_configuration, p_request->wLength); break; case 4: // get full-length configuration descriptor TEST_ASSERT_EQUAL(TUSB_REQUEST_GET_DESCRIPTOR, p_request->bRequest); - TEST_ASSERT_EQUAL(TUSB_DESC_CONFIGURATION, p_request->wValue >> 8); + TEST_ASSERT_EQUAL(TUSB_DESC_TYPE_CONFIGURATION, p_request->wValue >> 8); TEST_ASSERT_EQUAL(desc_configuration.configuration.wTotalLength, p_request->wLength); memcpy(data, &desc_configuration, p_request->wLength); break; diff --git a/tests/test/support/tusb_config.h b/tests/test/support/tusb_config.h index fe881551d..ad882c65c 100644 --- a/tests/test/support/tusb_config.h +++ b/tests/test/support/tusb_config.h @@ -59,7 +59,7 @@ //--------------------------------------------------------------------+ // CONTROLLER CONFIGURATION //--------------------------------------------------------------------+ -#define TUSB_CFG_CONTROLLER0_MODE TUSB_MODE_HOST +#define TUSB_CFG_CONTROLLER0_MODE (TUSB_MODE_HOST | TUSB_MODE_DEVICE) #define TUSB_CFG_CONTROLLER1_MODE TUSB_MODE_HOST //--------------------------------------------------------------------+ @@ -86,6 +86,7 @@ //--------------------------------------------------------------------+ // DEVICE CONFIGURATION //--------------------------------------------------------------------+ +#define TUSB_CFG_DEVICE_USE_ROM_DRIVER 1 //------------- CLASS -------------// //#define TUSB_CFG_DEVICE_CDC diff --git a/tinyusb/class/hid.h b/tinyusb/class/hid.h index 5cf9a4907..43af4d7cd 100644 --- a/tinyusb/class/hid.h +++ b/tinyusb/class/hid.h @@ -51,17 +51,17 @@ #ifdef __cplusplus extern "C" { #endif -// -//enum { -// HID_SUBCLASS_NONE = 0, -// HID_SUBCLASS_BOOT = 1 -//}; -// -//enum { -// HID_PROTOCOL_NONE = 0, -// HID_PROTOCOL_KEYBOARD = 1, -// HID_PROTOCOL_MOUSE = 2 -//}; + +enum { + HID_SUBCLASS_NONE = 0, + HID_SUBCLASS_BOOT = 1 +}; + +enum { + HID_PROTOCOL_NONE = 0, + HID_PROTOCOL_KEYBOARD = 1, + HID_PROTOCOL_MOUSE = 2 +}; enum { HID_DESC_TYPE_HID = 0x21, @@ -382,28 +382,28 @@ enum { HID_USAGE_PAGE_DESKTOP = 0x01, HID_USAGE_PAGE_SIMULATE = 0x02, HID_USAGE_PAGE_VIRTUAL_REALITY = 0x03, -// HID_USAGE_PAGE_SPORT = 0x04, -// HID_USAGE_PAGE_GAME = 0x05, -// HID_USAGE_PAGE_GENERIC_DEVICE = 0x06, -// HID_USAGE_PAGE_KEYBOARD = 0x07, -// HID_USAGE_PAGE_LED = 0x08, -// HID_USAGE_PAGE_BUTTON = 0x09, -// HID_USAGE_PAGE_ORDINAL = 0x0a, -// HID_USAGE_PAGE_TELEPHONY = 0x0b, -// HID_USAGE_PAGE_CONSUMER = 0x0c, -// HID_USAGE_PAGE_DIGITIZER = 0x0d, -// HID_USAGE_PAGE_PID = 0x0f, -// HID_USAGE_PAGE_UNICODE = 0x10, -// HID_USAGE_PAGE_ALPHA_DISPLAY = 0x14, -// HID_USAGE_PAGE_MEDICAL = 0x40, -// HID_USAGE_PAGE_MONITOR = 0x80, //0x80 - 0x83 -// HID_USAGE_PAGE_POWER = 0x84, // 0x084 - 0x87 -// HID_USAGE_PAGE_BARCODE_SCANNER = 0x8c, -// HID_USAGE_PAGE_SCALE = 0x8d, -// HID_USAGE_PAGE_MSR = 0x8e, -// HID_USAGE_PAGE_CAMERA = 0x90, -// HID_USAGE_PAGE_ARCADE = 0x91, -// HID_USAGE_PAGE_VENDOR = 0xFFFF // 0xFF00 - 0xFFFF + HID_USAGE_PAGE_SPORT = 0x04, + HID_USAGE_PAGE_GAME = 0x05, + HID_USAGE_PAGE_GENERIC_DEVICE = 0x06, + HID_USAGE_PAGE_KEYBOARD = 0x07, + HID_USAGE_PAGE_LED = 0x08, + HID_USAGE_PAGE_BUTTON = 0x09, + HID_USAGE_PAGE_ORDINAL = 0x0a, + HID_USAGE_PAGE_TELEPHONY = 0x0b, + HID_USAGE_PAGE_CONSUMER = 0x0c, + HID_USAGE_PAGE_DIGITIZER = 0x0d, + HID_USAGE_PAGE_PID = 0x0f, + HID_USAGE_PAGE_UNICODE = 0x10, + HID_USAGE_PAGE_ALPHA_DISPLAY = 0x14, + HID_USAGE_PAGE_MEDICAL = 0x40, + HID_USAGE_PAGE_MONITOR = 0x80, //0x80 - 0x83 + HID_USAGE_PAGE_POWER = 0x84, // 0x084 - 0x87 + HID_USAGE_PAGE_BARCODE_SCANNER = 0x8c, + HID_USAGE_PAGE_SCALE = 0x8d, + HID_USAGE_PAGE_MSR = 0x8e, + HID_USAGE_PAGE_CAMERA = 0x90, + HID_USAGE_PAGE_ARCADE = 0x91, + HID_USAGE_PAGE_VENDOR = 0xFFFF // 0xFF00 - 0xFFFF }; /// HID Usage Table - Table 6: Generic Desktop Page diff --git a/tinyusb/class/hid_device.c b/tinyusb/class/hid_device.c new file mode 100644 index 000000000..02f1974aa --- /dev/null +++ b/tinyusb/class/hid_device.c @@ -0,0 +1,62 @@ +/**************************************************************************/ +/*! + @file hid_device.c + @author hathach (tinyusb.org) + + @section LICENSE + + Software License Agreement (BSD License) + + Copyright (c) 2013, hathach (tinyusb.org) + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are met: + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + 3. Neither the name of the copyright holders nor the + names of its contributors may be used to endorse or promote products + derived from this software without specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS ''AS IS'' AND ANY + EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE FOR ANY + DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + This file is part of the tinyusb stack. +*/ +/**************************************************************************/ + +#include "tusb_option.h" + +#if (MODE_DEVICE_SUPPORTED && defined HOST_CLASS_HID) + +#define _TINY_USB_SOURCE_FILE_ +//--------------------------------------------------------------------+ +// INCLUDE +//--------------------------------------------------------------------+ +#include "common/common.h" +#include "hid_device.h" + +//--------------------------------------------------------------------+ +// MACRO CONSTANT TYPEDEF +//--------------------------------------------------------------------+ + +//--------------------------------------------------------------------+ +// INTERNAL OBJECT & FUNCTION DECLARATION +//--------------------------------------------------------------------+ + +//--------------------------------------------------------------------+ +// IMPLEMENTATION +//--------------------------------------------------------------------+ + +#endif diff --git a/tinyusb/common/binary.h b/tinyusb/common/binary.h index 30be2a130..78305ea60 100644 --- a/tinyusb/common/binary.h +++ b/tinyusb/common/binary.h @@ -65,6 +65,8 @@ /// clear n-th bit of x #define BIT_CLR_(x, n) ( (x) & (~BIT_(n)) ) +/// test n-th bit of x +#define BIT_TEST_(x, n) ( (x) & BIT_(n) ) #if defined(__GNUC__) && !defined(__CC_ARM) diff --git a/tinyusb/device/dcd.c b/tinyusb/device/dcd.c index cd3c85063..c0115c4e5 100644 --- a/tinyusb/device/dcd.c +++ b/tinyusb/device/dcd.c @@ -151,14 +151,4 @@ bool usb_isConfigured(void) return isConfigured; } -/**************************************************************************/ -/*! - @brief Redirect the USB IRQ handler to the ROM handler -*/ -/**************************************************************************/ -void USB_IRQHandler(void) -{ - USBD_API->hw->ISR(g_hUsb); -} - #endif diff --git a/tinyusb/device/dcd.h b/tinyusb/device/dcd.h index b040bed77..be139b713 100644 --- a/tinyusb/device/dcd.h +++ b/tinyusb/device/dcd.h @@ -57,26 +57,10 @@ #include "common/common.h" -#ifdef DEVICE_ROMDRIVER - #include "romdriver/mw_usbd_rom_api.h" - #define USBD_API ((USBD_API_T*) DEVICE_ROM_DRIVER_ADDR) -#endif - - -/** \brief Initialize DCD - * - * \param[in] para1 - * \param[out] para2 - * \return Error Code of the \ref TUSB_ERROR enum - * \note - */ - -tusb_error_t dcd_init(uint8_t coreid) ATTR_WARN_UNUSED_RESULT; - +tusb_error_t dcd_init(void) ATTR_WARN_UNUSED_RESULT; tusb_error_t dcd_controller_reset(uint8_t coreid) ATTR_WARN_UNUSED_RESULT; -tusb_error_t dcd_controller_connect(uint8_t coreid) ATTR_WARN_UNUSED_RESULT; - -void dcd_isr(uint8_t hostid); +void dcd_controller_connect(uint8_t coreid); +void dcd_isr(uint8_t coreid); #ifdef __cplusplus } diff --git a/demos/bsp/boards/NGX/board_ngx4330.h b/tinyusb/device/dcd_lpc13xx.h similarity index 74% rename from demos/bsp/boards/NGX/board_ngx4330.h rename to tinyusb/device/dcd_lpc13xx.h index d7c485cd7..9d9780b36 100644 --- a/demos/bsp/boards/NGX/board_ngx4330.h +++ b/tinyusb/device/dcd_lpc13xx.h @@ -1,6 +1,6 @@ /**************************************************************************/ /*! - @file board_ngx4330.h + @file dcd_lpc13xx.h @author hathach (tinyusb.org) @section LICENSE @@ -26,22 +26,16 @@ WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION HOWEVER CAUSED AND + (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - INCLUDING NEGLIGENCE OR OTHERWISE ARISING IN ANY WAY OUT OF THE USE OF THIS + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. This file is part of the tinyusb stack. */ /**************************************************************************/ -/** \file - * \brief TBD - * - * \note TBD - */ - /** \ingroup TBD * \defgroup TBD * \brief TBD @@ -49,25 +43,21 @@ * @{ */ -#ifndef _TUSB_BOARD_NGX4330_H_ -#define _TUSB_BOARD_NGX4330_H_ +#ifndef _TUSB_DCD_LPC13XX_H_ +#define _TUSB_DCD_LPC13XX_H_ -#include "LPC43xx.h" -#include "lpc43xx_scu.h" -#include "lpc43xx_cgu.h" -#include "lpc43xx_gpio.h" -#include "lpc43xx_uart.h" +#define DEVICE_ROM_REG_BASE LPC_USB_BASE +#define DEVICE_ROM_DRIVER_ADDR 0x1FFF1FF8 #ifdef __cplusplus extern "C" { #endif -#define CFG_PRINTF_TARGET PRINTF_TARGET_DEBUG_CONSOLE #ifdef __cplusplus } #endif -#endif /* _TUSB_BOARD_NGX4330_H_ */ +#endif /* _TUSB_DCD_LPC13XX_H_ */ /** @} */ diff --git a/tinyusb/device/dcd_lpc43xx.c b/tinyusb/device/dcd_lpc175x_6x.c similarity index 89% rename from tinyusb/device/dcd_lpc43xx.c rename to tinyusb/device/dcd_lpc175x_6x.c index 0d38740ba..8d7717e56 100644 --- a/tinyusb/device/dcd_lpc43xx.c +++ b/tinyusb/device/dcd_lpc175x_6x.c @@ -1,6 +1,6 @@ /**************************************************************************/ /*! - @file dcd_lpc43xx.c + @file dcd_lpc175x_6x.c @author hathach (tinyusb.org) @section LICENSE @@ -38,14 +38,15 @@ #include "tusb_option.h" -#if MODE_DEVICE_SUPPORTED && (MCU == MCU_LPC43XX) +#if MODE_DEVICE_SUPPORTED && (MCU == MCU_LPC175X_6X) #define _TINY_USB_SOURCE_FILE_ //--------------------------------------------------------------------+ // INCLUDE //--------------------------------------------------------------------+ -#include "dcd_lpc43xx.h" +#include "dcd.h" +#include "dcd_lpc175x_6x.h" //--------------------------------------------------------------------+ // MACRO CONSTANT TYPEDEF @@ -58,21 +59,5 @@ //--------------------------------------------------------------------+ // IMPLEMENTATION //--------------------------------------------------------------------+ -tusb_error_t dcd_controller_reset(uint8_t hostid) -{ - - return TUSB_ERROR_NONE; -} - -tusb_error_t dcd_controller_connect(uint8_t coreid) -{ - return TUSB_ERROR_NONE; -} - -void dcd_isr(uint8_t hostid) -{ - -} #endif - diff --git a/tinyusb/device/dcd_lpc43xx.h b/tinyusb/device/dcd_lpc175x_6x.h similarity index 93% rename from tinyusb/device/dcd_lpc43xx.h rename to tinyusb/device/dcd_lpc175x_6x.h index 777626743..e57bfcab1 100644 --- a/tinyusb/device/dcd_lpc43xx.h +++ b/tinyusb/device/dcd_lpc175x_6x.h @@ -1,6 +1,6 @@ /**************************************************************************/ /*! - @file dcd_lpc43xx.h + @file dcd_lpc175x_6x.h @author hathach (tinyusb.org) @section LICENSE @@ -43,21 +43,18 @@ * @{ */ -#ifndef _TUSB_DCD_LPC43XX_H_ -#define _TUSB_DCD_LPC43XX_H_ - -#include "common/common.h" +#ifndef _TUSB_DCD_LPC175X_6X_H_ +#define _TUSB_DCD_LPC175X_6X_H_ #ifdef __cplusplus extern "C" { #endif - #ifdef __cplusplus } #endif -#endif /* _TUSB_DCD_LPC43XX_H_ */ +#endif /* _TUSB_DCD_LPC175X_6X_H_ */ /** @} */ diff --git a/tinyusb/device/dcd_lpc18xx_lpc43xx.h b/tinyusb/device/dcd_lpc18xx_lpc43xx.h new file mode 100644 index 000000000..a98196f6a --- /dev/null +++ b/tinyusb/device/dcd_lpc18xx_lpc43xx.h @@ -0,0 +1,62 @@ +/**************************************************************************/ +/*! + @file dcd_lpc18xx_lpc43xx.h + @author hathach (tinyusb.org) + + @section LICENSE + + Software License Agreement (BSD License) + + Copyright (c) 2013, hathach (tinyusb.org) + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are met: + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + 3. Neither the name of the copyright holders nor the + names of its contributors may be used to endorse or promote products + derived from this software without specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS ''AS IS'' AND ANY + EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE FOR ANY + DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + This file is part of the tinyusb stack. +*/ +/**************************************************************************/ + +/** \ingroup TBD + * \defgroup TBD + * \brief TBD + * + * @{ + */ + +#ifndef _TUSB_DCD_LPC18XX_LPC43XX_H_ +#define _TUSB_DCD_LPC18XX_LPC43XX_H_ + +#ifdef __cplusplus + extern "C" { +#endif + +#define DEVICE_ROM_REG_BASE LPC_USB0_BASE // TODO USB1 +#define DEVICE_ROM_DRIVER_ADDR 0x1040011C + +#ifdef __cplusplus + } +#endif + +#endif /* _TUSB_DCD_LPC18XX_LPC43XX_H_ */ + +/** @} */ diff --git a/tinyusb/device/dcd_nxp_romdriver.c b/tinyusb/device/dcd_nxp_romdriver.c new file mode 100644 index 000000000..8587a66f3 --- /dev/null +++ b/tinyusb/device/dcd_nxp_romdriver.c @@ -0,0 +1,166 @@ +/**************************************************************************/ +/*! + @file dcd_nxp_romdriver.c + @author hathach (tinyusb.org) + + @section LICENSE + + Software License Agreement (BSD License) + + Copyright (c) 2013, hathach (tinyusb.org) + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are met: + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + 3. Neither the name of the copyright holders nor the + names of its contributors may be used to endorse or promote products + derived from this software without specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS ''AS IS'' AND ANY + EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE FOR ANY + DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + This file is part of the tinyusb stack. +*/ +/**************************************************************************/ + +#include "tusb_option.h" + +#if MODE_DEVICE_SUPPORTED && TUSB_CFG_DEVICE_USE_ROM_DRIVER + +#define _TINY_USB_SOURCE_FILE_ + +//--------------------------------------------------------------------+ +// INCLUDE +//--------------------------------------------------------------------+ +#include "dcd.h" +#include "dcd_nxp_romdriver.h" +#include "romdriver/mw_usbd_rom_api.h" + +#include "tusb_descriptors.h" + +#define USBD_API ((USBD_API_T*) DEVICE_ROM_DRIVER_ADDR) +#define USB_ROM_SIZE (1024*2) // TODO dcd abstract later +uint8_t usb_RomDriver_buffer[USB_ROM_SIZE] ATTR_ALIGNED(2048) TUSB_CFG_ATTR_USBRAM; +USBD_HANDLE_T g_hUsb; + +//--------------------------------------------------------------------+ +// MACRO CONSTANT TYPEDEF +//--------------------------------------------------------------------+ + + +//--------------------------------------------------------------------+ +// INTERNAL OBJECT & FUNCTION DECLARATION +//--------------------------------------------------------------------+ + + +//--------------------------------------------------------------------+ +// IMPLEMENTATION +//--------------------------------------------------------------------+ +ErrorCode_t USB_Configure_Event (USBD_HANDLE_T hUsb) +{ + USB_CORE_CTRL_T* pCtrl = (USB_CORE_CTRL_T*)hUsb; + if (pCtrl->config_value) + { +// usbd_info.state = TUSB_DEVICE_STATE_CONFIGURED; + + #if defined(DEVICE_CLASS_HID) +// ASSERT( TUSB_ERROR_NONE == tusb_hid_configured(hUsb), ERR_FAILED ); + #endif + + #ifdef TUSB_CFG_DEVICE_CDC + ASSERT( TUSB_ERROR_NONE == tusb_cdc_configured(hUsb), ERR_FAILED ); + #endif + } + + + return LPC_OK; +} + +ErrorCode_t USB_Reset_Event (USBD_HANDLE_T hUsb) +{ +// usbd_info.state = TUSB_DEVICE_STATE_UNPLUG; + return LPC_OK; +} + + +tusb_error_t dcd_init(void) +{ + uint32_t membase = (uint32_t) usb_RomDriver_buffer; + uint32_t memsize = USB_ROM_SIZE; + + USBD_API_INIT_PARAM_T usb_param = + { + .usb_reg_base = DEVICE_ROM_REG_BASE, + .max_num_ep = USB_MAX_EP_NUM, + .mem_base = membase, + .mem_size = memsize, + + .USB_Configure_Event = USB_Configure_Event, + .USB_Reset_Event = USB_Reset_Event + }; + + USB_CORE_DESCS_T desc_core = + { + .device_desc = (uint8_t*) &app_desc_device, + .string_desc = (uint8_t*) &app_desc_strings, + .full_speed_desc = (uint8_t*) &app_desc_configuration, + .high_speed_desc = (uint8_t*) &app_desc_configuration, + .device_qualifier = NULL + }; + + /* USB hardware core initialization */ + ASSERT(LPC_OK == USBD_API->hw->Init(&g_hUsb, &desc_core, &usb_param), TUSB_ERROR_FAILED); + + // TODO need to confirm the mem_size is reduced by the number of byte used + membase += (memsize - usb_param.mem_size); + memsize = usb_param.mem_size; + + + #if TUSB_CFG_DEVICE_HID_KEYBOARD + ASSERT_STATUS( tusb_hid_init(g_hUsb , &app_desc_configuration.keyboard_interface, + keyboard_report_descriptor, app_desc_configuration.keyboard_hid.wReportLength, + &membase , &memsize) ); + #endif + + #if TUSB_CFG_DEVICE_HID_MOUSE + ASSERT_STATUS( tusb_hid_init(g_hUsb , &USB_FsConfigDescriptor.HID_MouseInterface , + HID_MouseReportDescriptor, USB_FsConfigDescriptor.HID_MouseHID.DescriptorList[0].wDescriptorLength, + &membase , &memsize) ); + #endif + + + return TUSB_ERROR_NONE; +} + +tusb_error_t dcd_controller_reset(uint8_t coreid) +{ +//TODO merge with hcd_controller_reset +// default mode is device ? + return TUSB_ERROR_NONE; +} + +void dcd_controller_connect(uint8_t coreid) +{ +// USBD_API->hw->Connect(g_hUsb, 1); +} + +void dcd_isr(uint8_t coreid) +{ +// USBD_API->hw->ISR(g_hUsb); +} + +#endif + diff --git a/demos/bsp/boards/ngx/board_ngx4330.h b/tinyusb/device/dcd_nxp_romdriver.h similarity index 74% rename from demos/bsp/boards/ngx/board_ngx4330.h rename to tinyusb/device/dcd_nxp_romdriver.h index d7c485cd7..c185bab07 100644 --- a/demos/bsp/boards/ngx/board_ngx4330.h +++ b/tinyusb/device/dcd_nxp_romdriver.h @@ -1,6 +1,6 @@ /**************************************************************************/ /*! - @file board_ngx4330.h + @file dcd_nxp_romdriver.h @author hathach (tinyusb.org) @section LICENSE @@ -26,22 +26,16 @@ WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION HOWEVER CAUSED AND + (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - INCLUDING NEGLIGENCE OR OTHERWISE ARISING IN ANY WAY OUT OF THE USE OF THIS + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. This file is part of the tinyusb stack. */ /**************************************************************************/ -/** \file - * \brief TBD - * - * \note TBD - */ - /** \ingroup TBD * \defgroup TBD * \brief TBD @@ -49,25 +43,25 @@ * @{ */ -#ifndef _TUSB_BOARD_NGX4330_H_ -#define _TUSB_BOARD_NGX4330_H_ +#ifndef _TUSB_DCD_NXP_ROMDRIVER_H_ +#define _TUSB_DCD_NXP_ROMDRIVER_H_ -#include "LPC43xx.h" -#include "lpc43xx_scu.h" -#include "lpc43xx_cgu.h" -#include "lpc43xx_gpio.h" -#include "lpc43xx_uart.h" +#include "common/common.h" #ifdef __cplusplus extern "C" { #endif -#define CFG_PRINTF_TARGET PRINTF_TARGET_DEBUG_CONSOLE +#if (MCU == MCU_LPC18XX) || (MCU == MCU_LPC43XX) + #include "dcd_lpc18xx_lpc43xx.h" +#else + #error forgot something, thach ? +#endif #ifdef __cplusplus } #endif -#endif /* _TUSB_BOARD_NGX4330_H_ */ +#endif /* _TUSB_DCD_NXP_ROMDRIVER_H_ */ /** @} */ diff --git a/tinyusb/device/romdriver/mw_usbd_hiduser.h b/tinyusb/device/romdriver/mw_usbd_hiduser.h index 79fa55d0b..72b983a5d 100644 --- a/tinyusb/device/romdriver/mw_usbd_hiduser.h +++ b/tinyusb/device/romdriver/mw_usbd_hiduser.h @@ -26,7 +26,7 @@ #define __HIDUSER_H__ #include "mw_usbd.h" -#include "mw_usbd_hid.h" +//#include "mw_usbd_hid.h" #include "mw_usbd_core.h" /** \file diff --git a/tinyusb/device/usbd.c b/tinyusb/device/usbd.c index b5a4044c0..cbbc28995 100644 --- a/tinyusb/device/usbd.c +++ b/tinyusb/device/usbd.c @@ -50,6 +50,22 @@ //--------------------------------------------------------------------+ // MACRO CONSTANT TYPEDEF //--------------------------------------------------------------------+ +//typedef struct { +// volatile uint8_t state; +// +//}; +typedef struct { + volatile uint8_t state; +}usbd_info_t; // TODO rename + +usbd_info_t usbd_info; // TODO rename + +typedef struct { + void (* const init) (void); + void (* const configured) (void); + void (* const unmounted) (void); +}device_class_driver_t; + //--------------------------------------------------------------------+ // INTERNAL OBJECT & FUNCTION DECLARATION @@ -60,6 +76,8 @@ //--------------------------------------------------------------------+ tusb_error_t usbd_init (void) { + ASSERT_STATUS ( dcd_init() ); + return TUSB_ERROR_NONE; } diff --git a/tinyusb/hal/hal_lpc11uxx.h b/tinyusb/hal/hal_lpc11uxx.h index 4b77461fc..4374586d2 100644 --- a/tinyusb/hal/hal_lpc11uxx.h +++ b/tinyusb/hal/hal_lpc11uxx.h @@ -54,12 +54,9 @@ #include "LPC11Uxx.h" -#define DEVICE_ROMDRIVER -#define DEVICE_ROM_REG_BASE LPC_USB_BASE +#define DEVICE_ROM_REG_BASE LPC_USB_BASE #define DEVICE_ROM_DRIVER_ADDR 0x1FFF1FF8 - - #ifdef __cplusplus extern "C" { #endif diff --git a/tinyusb/hal/hal_lpc13uxx.h b/tinyusb/hal/hal_lpc13uxx.h index da4481341..259f9de11 100644 --- a/tinyusb/hal/hal_lpc13uxx.h +++ b/tinyusb/hal/hal_lpc13uxx.h @@ -54,10 +54,6 @@ #include "LPC13Uxx.h" -#define DEVICE_ROMDRIVER -#define DEVICE_ROM_REG_BASE LPC_USB_BASE -#define DEVICE_ROM_DRIVER_ADDR 0x1FFF1FF8 - #ifdef __cplusplus extern "C" { #endif diff --git a/tinyusb/hal/hal_lpc43xx.c b/tinyusb/hal/hal_lpc43xx.c index 2863aba0a..e700041b1 100644 --- a/tinyusb/hal/hal_lpc43xx.c +++ b/tinyusb/hal/hal_lpc43xx.c @@ -69,8 +69,8 @@ tusb_error_t hal_init(void) hcd_controller_reset(0); // TODO where to place prototype LPC_USB0->USBMODE_H = LPC43XX_USBMODE_HOST | (LPC43XX_USBMODE_VBUS_HIGH << 5); #else // TODO OTG - dcd_controller_reset(0); - LPC_USB0->USBMODE_D = LPC43XX_USBMODE_DEVICE; +// dcd_controller_reset(0); +// LPC_USB0->USBMODE_D = LPC43XX_USBMODE_DEVICE; dcd_controller_connect(0); #endif @@ -91,8 +91,8 @@ tusb_error_t hal_init(void) hcd_controller_reset(1); // TODO where to place prototype LPC_USB1->USBMODE_H = LPC43XX_USBMODE_HOST | (LPC43XX_USBMODE_VBUS_HIGH << 5); #else // TODO OTG - dcd_controller_reset(1); - LPC_USB0->USBMODE_D = LPC43XX_USBMODE_DEVICE; +// dcd_controller_reset(1); +// LPC_USB0->USBMODE_D = LPC43XX_USBMODE_DEVICE; dcd_controller_connect(1); #endif diff --git a/tinyusb/hal/hal_lpc43xx.h b/tinyusb/hal/hal_lpc43xx.h index 1f56e8284..77a0332de 100644 --- a/tinyusb/hal/hal_lpc43xx.h +++ b/tinyusb/hal/hal_lpc43xx.h @@ -58,9 +58,6 @@ extern "C" { #endif -#define DEVICE_ROMDRIVER -#define DEVICE_ROM_REG_BASE LPC_USB0_BASE // TODO USB1 -#define DEVICE_ROM_DRIVER_ADDR 0x1040011C static inline void hal_interrupt_enable(uint8_t controller_id) { diff --git a/tinyusb/tusb_option.h b/tinyusb/tusb_option.h index 75a01f103..11f961d2c 100644 --- a/tinyusb/tusb_option.h +++ b/tinyusb/tusb_option.h @@ -158,6 +158,10 @@ //--------------------------------------------------------------------+ //#if MODE_DEVICE_SUPPORTED +#if !TUSB_CFG_DEVICE_USE_ROM_DRIVER + #error only rom driver is supported now +#endif + #define DEVICE_CLASS_HID ( (defined TUSB_CFG_DEVICE_HID_KEYBOARD) || (defined TUSB_CFG_DEVICE_HID_MOUSE) ) // TODO Device APP