diff options
| author | hathach <[email protected]> | 2013-05-28 15:24:27 +0700 |
|---|---|---|
| committer | hathach <[email protected]> | 2013-05-28 15:24:27 +0700 |
| commit | 1e5bd82af28c6005fa0ecf008e44322a6ee46461 (patch) | |
| tree | e9618a6a79880a0c681a6c213d8560c286e3475f /tinyusb | |
| parent | 7ae986de95ccb049611340164246e17ee0023c87 (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.h | 66 | ||||
| -rw-r--r-- | tinyusb/class/hid_device.c | 62 | ||||
| -rw-r--r-- | tinyusb/common/binary.h | 2 | ||||
| -rw-r--r-- | tinyusb/device/dcd.c | 10 | ||||
| -rw-r--r-- | tinyusb/device/dcd.h | 22 | ||||
| -rw-r--r-- | tinyusb/device/dcd_lpc13xx.h | 63 | ||||
| -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.h | 62 | ||||
| -rw-r--r-- | tinyusb/device/dcd_nxp_romdriver.c | 166 | ||||
| -rw-r--r-- | tinyusb/device/dcd_nxp_romdriver.h | 67 | ||||
| -rw-r--r-- | tinyusb/device/romdriver/mw_usbd_hiduser.h | 2 | ||||
| -rw-r--r-- | tinyusb/device/usbd.c | 18 | ||||
| -rw-r--r-- | tinyusb/hal/hal_lpc11uxx.h | 5 | ||||
| -rw-r--r-- | tinyusb/hal/hal_lpc13uxx.h | 4 | ||||
| -rw-r--r-- | tinyusb/hal/hal_lpc43xx.c | 8 | ||||
| -rw-r--r-- | tinyusb/hal/hal_lpc43xx.h | 3 | ||||
| -rw-r--r-- | tinyusb/tusb_option.h | 4 |
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 |
