From 3eb7465e5ee8ea6298fcf134f853174fd9560a4c Mon Sep 17 00:00:00 2001 From: hathach Date: Mon, 10 Dec 2012 14:58:25 +0700 Subject: abstract usb enable/disable interrupt to hal layer --- tinyusb/common/common.h | 43 +++++++++++++++--------- tinyusb/common/fifo.h | 2 +- tinyusb/device/dcd.c | 9 ++--- tinyusb/doxygen/license.md | 27 +++++++++++++++ tinyusb/doxygen/overview.md | 3 ++ tinyusb/hal/hal.h | 18 ++++++++++ tinyusb/hal/hal_lpc11uxx.h | 80 +++++++++++++++++++++++++++++++++++++++++++++ tinyusb/hal/hal_lpc13uxx.h | 79 ++++++++++++++++++++++++++++++++++++++++++++ tinyusb/license.md | 27 --------------- tinyusb/overview.md | 3 -- 10 files changed, 238 insertions(+), 53 deletions(-) create mode 100644 tinyusb/doxygen/license.md create mode 100644 tinyusb/doxygen/overview.md create mode 100644 tinyusb/hal/hal_lpc11uxx.h create mode 100644 tinyusb/hal/hal_lpc13uxx.h delete mode 100644 tinyusb/license.md delete mode 100644 tinyusb/overview.md (limited to 'tinyusb') diff --git a/tinyusb/common/common.h b/tinyusb/common/common.h index e3db0d033..a10f31995 100644 --- a/tinyusb/common/common.h +++ b/tinyusb/common/common.h @@ -71,29 +71,42 @@ #include "core/std_descriptors.h" /// min value -#ifndef MIN -#define MIN(x, y) (((x) < (y)) ? (x) : (y)) -#endif +#define MIN_(x, y) (((x) < (y)) ? (x) : (y)) /// max value -#ifndef MAX -#define MAX(x, y) (((x) > (y)) ? (x) : (y)) -#endif +#define MAX_(x, y) (((x) > (y)) ? (x) : (y)) /// n-th Bit -#ifndef BIT -#define BIT(n) (1 << (n)) -#endif +#define BIT_(n) (1 << (n)) /// set n-th bit of x to 1 -#ifndef BIT_SET -#define BIT_SET(x, n) ( (x) | BIT(n) ) -#endif +#define BIT_SET_(x, n) ( (x) | BIT_(n) ) /// clear n-th bit of x -#ifndef BIT_CLR -#define BIT_CLR(x, n) ( (x) & (~BIT(n)) ) -#endif +#define BIT_CLR_(x, n) ( (x) & (~BIT_(n)) ) + +/// add hex represenation +#define HEX_(n) 0x##n##LU + +// internal macro of B8, B16, B32 +#define _B8__(x) ((x&0x0000000FLU)?1:0) \ + +((x&0x000000F0LU)?2:0) \ + +((x&0x00000F00LU)?4:0) \ + +((x&0x0000F000LU)?8:0) \ + +((x&0x000F0000LU)?16:0) \ + +((x&0x00F00000LU)?32:0) \ + +((x&0x0F000000LU)?64:0) \ + +((x&0xF0000000LU)?128:0) + +#define B8_(d) ((unsigned char)_B8__(HEX_(d))) +#define B16_(dmsb,dlsb) (((unsigned short)B8(dmsb)<<8) + B8(dlsb)) +#define B32_(dmsb,db2,db3,dlsb) \ + (((unsigned long)B8(dmsb)<<24) \ + + ((unsigned long)B8(db2)<<16) \ + + ((unsigned long)B8(db3)<<8) \ + + B8(dlsb)) + + //#if ( defined CFG_PRINTF_UART || defined CFG_PRINTF_USBCDC || defined CFG_PRINTF_DEBUG ) #if CFG_TUSB_DEBUG_LEVEL diff --git a/tinyusb/common/fifo.h b/tinyusb/common/fifo.h index d9e8389f1..7f8312e1f 100644 --- a/tinyusb/common/fifo.h +++ b/tinyusb/common/fifo.h @@ -74,7 +74,7 @@ void fifo_init(fifo_t* f, uint8_t* buffer, uint16_t size, bool overwritable, IRQ bool fifo_write(fifo_t* f, uint8_t data); bool fifo_read(fifo_t* f, uint8_t *data); uint16_t fifo_readArray(fifo_t* f, uint8_t * rx, uint16_t maxlen); -void fifo_clear(fifo_t*); +void fifo_clear(fifo_t *f); static inline bool fifo_isEmpty(fifo_t* f) { diff --git a/tinyusb/device/dcd.c b/tinyusb/device/dcd.c index 0310e7643..ee4ce361c 100644 --- a/tinyusb/device/dcd.c +++ b/tinyusb/device/dcd.c @@ -135,13 +135,8 @@ TUSB_Error_t dcd_init(uint8_t coreid) &membase , &memsize) ); #endif - // FIXME abstract to hal - /* Enable the USB interrupt */ -#if MCU == MCU_LPC13UXX - NVIC_EnableIRQ(USB_IRQ_IRQn); -#elif MCU == MCU_LPC11UXX - NVIC_EnableIRQ(USB_IRQn); -#endif + hal_interrupt_enable(); /* Enable the USB interrupt */ + /* Perform USB soft connect */ USBD_API->hw->Connect(g_hUsb, 1); #endif diff --git a/tinyusb/doxygen/license.md b/tinyusb/doxygen/license.md new file mode 100644 index 000000000..51aa2be2d --- /dev/null +++ b/tinyusb/doxygen/license.md @@ -0,0 +1,27 @@ +# License + +
Software License Agreement (BSD License)
+Copyright (c) 2012, hathach (tinyusb.net)
+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. The name of the author may not be used to endorse or promote products
+   derived from this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``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 AUTHOR 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.
\ No newline at end of file diff --git a/tinyusb/doxygen/overview.md b/tinyusb/doxygen/overview.md new file mode 100644 index 000000000..695690143 --- /dev/null +++ b/tinyusb/doxygen/overview.md @@ -0,0 +1,3 @@ +# What is tinyUSB + +![tinyUSB diagram](overview.png) diff --git a/tinyusb/hal/hal.h b/tinyusb/hal/hal.h index 4229f6ea1..10fcc6155 100644 --- a/tinyusb/hal/hal.h +++ b/tinyusb/hal/hal.h @@ -55,6 +55,7 @@ extern "C" { #endif +#include "common/compiler/compiler.h" #include "common/errors.h" /** \brief USB hardware init @@ -66,6 +67,23 @@ */ TUSB_Error_t hal_init(); +/** + * Enable USB Interrupt + */ +static inline void hal_interrupt_enable() ATTR_ALWAYS_INLINE; + +/** + * Disable USB Interrupt + */ +static inline void hal_interrupt_disable() ATTR_ALWAYS_INLINE; + +#if MCU == MCU_LPC11UXX + #include "hal_lpc11uxx.h" +#elif MCU == MCU_LPC13UXX + #include "hal_lpc13uxx.h" +#elif MCU == MCU_LPC43XX + +#endif #ifdef __cplusplus } #endif diff --git a/tinyusb/hal/hal_lpc11uxx.h b/tinyusb/hal/hal_lpc11uxx.h new file mode 100644 index 000000000..f65f95ad0 --- /dev/null +++ b/tinyusb/hal/hal_lpc11uxx.h @@ -0,0 +1,80 @@ +/* + * hal_lpc11uxx.h + * + * Created on: Dec 10, 2012 + * Author: hathach + */ + +/* + * Software License Agreement (BSD License) + * Copyright (c) 2012, hathach (tinyusb.net) + * 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. The name of the author may not be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``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 AUTHOR 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 tiny usb stack. + */ + +/** \file + * \brief TBD + * + * \note TBD + */ + +/** \ingroup TBD + * \defgroup TBD + * \brief TBD + * + * @{ + */ + +#ifndef _TUSB_HAL_LPC11UXX_H_ +#define _TUSB_HAL_LPC11UXX_H_ + +#include "common/mcu/mcu.h" + +#ifdef __cplusplus + extern "C" { +#endif + + +static inline void hal_interrupt_enable() +{ + NVIC_EnableIRQ(USB_IRQn); +} + +/** + * Disable USB Interrupt + */ +static inline void hal_interrupt_disable() +{ + NVIC_DisableIRQ(USB_IRQn); +} + +#ifdef __cplusplus + } +#endif + +#endif /* _TUSB_HAL_LPC11UXX_H_ */ + +/** @} */ diff --git a/tinyusb/hal/hal_lpc13uxx.h b/tinyusb/hal/hal_lpc13uxx.h new file mode 100644 index 000000000..795782fc3 --- /dev/null +++ b/tinyusb/hal/hal_lpc13uxx.h @@ -0,0 +1,79 @@ +/* + * hal_lpc13uxx.h + * + * Created on: Dec 10, 2012 + * Author: hathach + */ + +/* + * Software License Agreement (BSD License) + * Copyright (c) 2012, hathach (tinyusb.net) + * 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. The name of the author may not be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``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 AUTHOR 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 tiny usb stack. + */ + +/** \file + * \brief TBD + * + * \note TBD + */ + +/** \ingroup TBD + * \defgroup TBD + * \brief TBD + * + * @{ + */ + +#ifndef _TUSB_HAL_LPC13UXX_H_ +#define _TUSB_HAL_LPC13UXX_H_ + +#include "common/mcu/mcu.h" + +#ifdef __cplusplus + extern "C" { +#endif + +static inline void hal_interrupt_enable() +{ + NVIC_EnableIRQ(USB_IRQ_IRQn); +} + +/** + * Disable USB Interrupt + */ +static inline void hal_interrupt_disable() +{ + NVIC_DisableIRQ(USB_IRQ_IRQn); +} + +#ifdef __cplusplus + } +#endif + +#endif /* _TUSB_HAL_LPC13UXX_H_ */ + +/** @} */ diff --git a/tinyusb/license.md b/tinyusb/license.md deleted file mode 100644 index 51aa2be2d..000000000 --- a/tinyusb/license.md +++ /dev/null @@ -1,27 +0,0 @@ -# License - -
Software License Agreement (BSD License)
-Copyright (c) 2012, hathach (tinyusb.net)
-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. The name of the author may not be used to endorse or promote products
-   derived from this software without specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``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 AUTHOR 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.
\ No newline at end of file diff --git a/tinyusb/overview.md b/tinyusb/overview.md deleted file mode 100644 index 695690143..000000000 --- a/tinyusb/overview.md +++ /dev/null @@ -1,3 +0,0 @@ -# What is tinyUSB - -![tinyUSB diagram](overview.png) -- cgit v1.3.1