summaryrefslogtreecommitdiff
path: root/tinyusb
diff options
context:
space:
mode:
authorhathach <[email protected]>2013-05-28 15:24:27 +0700
committerhathach <[email protected]>2013-05-28 15:24:27 +0700
commit1e5bd82af28c6005fa0ecf008e44322a6ee46461 (patch)
treee9618a6a79880a0c681a6c213d8560c286e3475f /tinyusb
parent7ae986de95ccb049611340164246e17ee0023c87 (diff)
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
Diffstat (limited to 'tinyusb')
-rw-r--r--tinyusb/class/hid.h66
-rw-r--r--tinyusb/class/hid_device.c62
-rw-r--r--tinyusb/common/binary.h2
-rw-r--r--tinyusb/device/dcd.c10
-rw-r--r--tinyusb/device/dcd.h22
-rw-r--r--tinyusb/device/dcd_lpc13xx.h63
-rw-r--r--tinyusb/device/dcd_lpc175x_6x.c (renamed from tinyusb/device/dcd_lpc43xx.c)23
-rw-r--r--tinyusb/device/dcd_lpc175x_6x.h (renamed from tinyusb/device/dcd_lpc43xx.h)11
-rw-r--r--tinyusb/device/dcd_lpc18xx_lpc43xx.h62
-rw-r--r--tinyusb/device/dcd_nxp_romdriver.c166
-rw-r--r--tinyusb/device/dcd_nxp_romdriver.h67
-rw-r--r--tinyusb/device/romdriver/mw_usbd_hiduser.h2
-rw-r--r--tinyusb/device/usbd.c18
-rw-r--r--tinyusb/hal/hal_lpc11uxx.h5
-rw-r--r--tinyusb/hal/hal_lpc13uxx.h4
-rw-r--r--tinyusb/hal/hal_lpc43xx.c8
-rw-r--r--tinyusb/hal/hal_lpc43xx.h3
-rw-r--r--tinyusb/tusb_option.h4
18 files changed, 494 insertions, 104 deletions
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/tinyusb/device/dcd_lpc13xx.h b/tinyusb/device/dcd_lpc13xx.h
new file mode 100644
index 000000000..9d9780b36
--- /dev/null
+++ b/tinyusb/device/dcd_lpc13xx.h
@@ -0,0 +1,63 @@
+/**************************************************************************/
+/*!
+ @file dcd_lpc13xx.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_LPC13XX_H_
+#define _TUSB_DCD_LPC13XX_H_
+
+#define DEVICE_ROM_REG_BASE LPC_USB_BASE
+#define DEVICE_ROM_DRIVER_ADDR 0x1FFF1FF8
+
+#ifdef __cplusplus
+ extern "C" {
+#endif
+
+
+#ifdef __cplusplus
+ }
+#endif
+
+#endif /* _TUSB_DCD_LPC13XX_H_ */
+
+/** @} */
diff --git a/tinyusb/device/dcd_lpc43xx.c b/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
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/tinyusb/device/dcd_nxp_romdriver.h b/tinyusb/device/dcd_nxp_romdriver.h
new file mode 100644
index 000000000..c185bab07
--- /dev/null
+++ b/tinyusb/device/dcd_nxp_romdriver.h
@@ -0,0 +1,67 @@
+/**************************************************************************/
+/*!
+ @file dcd_nxp_romdriver.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_NXP_ROMDRIVER_H_
+#define _TUSB_DCD_NXP_ROMDRIVER_H_
+
+#include "common/common.h"
+
+#ifdef __cplusplus
+ extern "C" {
+#endif
+
+#if (MCU == MCU_LPC18XX) || (MCU == MCU_LPC43XX)
+ #include "dcd_lpc18xx_lpc43xx.h"
+#else
+ #error forgot something, thach ?
+#endif
+
+#ifdef __cplusplus
+ }
+#endif
+
+#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