diff options
| author | hathach <[email protected]> | 2012-11-29 17:52:57 +0700 |
|---|---|---|
| committer | hathach <[email protected]> | 2012-11-29 17:52:57 +0700 |
| commit | 879fb21f99020bfb13a300e6e61089c7d0aa4619 (patch) | |
| tree | ffdfe88408f418847e7a35d4cd12246218e1a562 /tinyusb | |
| parent | 2dd9501f37b8e2b2fdfa43b12469498646ae3fe5 (diff) | |
change license email to website
added support for cdc devices
Diffstat (limited to 'tinyusb')
| -rw-r--r-- | tinyusb/class/WinCDCdriver.inf | 105 | ||||
| -rw-r--r-- | tinyusb/class/cdc.c | 325 | ||||
| -rw-r--r-- | tinyusb/class/cdc.h | 113 | ||||
| -rw-r--r-- | tinyusb/class/hid.c | 18 | ||||
| -rw-r--r-- | tinyusb/class/hid.h | 42 | ||||
| -rw-r--r-- | tinyusb/common/arch/arch.h | 2 | ||||
| -rw-r--r-- | tinyusb/common/arch/arch_lpc11xx.h | 60 | ||||
| -rw-r--r-- | tinyusb/common/arch/arch_lpc134x.h | 4 | ||||
| -rw-r--r-- | tinyusb/common/arch/arch_lpc43xx.h | 4 | ||||
| -rw-r--r-- | tinyusb/common/arch/arm_mx.h | 4 | ||||
| -rw-r--r-- | tinyusb/common/common.h | 4 | ||||
| -rw-r--r-- | tinyusb/common/compiler/compiler.h | 4 | ||||
| -rw-r--r-- | tinyusb/common/compiler/compiler_gcc.h | 6 | ||||
| -rw-r--r-- | tinyusb/common/errors.c | 4 | ||||
| -rw-r--r-- | tinyusb/common/errors.h | 4 | ||||
| -rw-r--r-- | tinyusb/common/errors_def | 4 | ||||
| -rw-r--r-- | tinyusb/common/fifo.c | 4 | ||||
| -rw-r--r-- | tinyusb/common/fifo.h | 4 | ||||
| -rw-r--r-- | tinyusb/device/dcd.c | 16 | ||||
| -rw-r--r-- | tinyusb/device/dcd.h | 4 | ||||
| -rw-r--r-- | tinyusb/host/hcd.c | 4 | ||||
| -rw-r--r-- | tinyusb/host/hcd.h | 4 | ||||
| -rw-r--r-- | tinyusb/tusb.c | 4 | ||||
| -rw-r--r-- | tinyusb/tusb.h | 8 | ||||
| -rw-r--r-- | tinyusb/tusb_cfg.h | 7 |
25 files changed, 699 insertions, 59 deletions
diff --git a/tinyusb/class/WinCDCdriver.inf b/tinyusb/class/WinCDCdriver.inf new file mode 100644 index 000000000..14af2be70 --- /dev/null +++ b/tinyusb/class/WinCDCdriver.inf @@ -0,0 +1,105 @@ +;************************************************************ +; Windows USB CDC ACM Setup File +; Copyright (c) 2000 Microsoft Corporation + + +[Version] +Signature="$Windows NT$" +Class=Ports +ClassGuid={4D36E978-E325-11CE-BFC1-08002BE10318} +Provider=%MFGNAME% +LayoutFile=layout.inf +CatalogFile=%MFGFILENAME%.cat +DriverVer=11/15/2007,5.1.2600.0 + +[Manufacturer] +%MFGNAME%=DeviceList, NTamd64 + +[DestinationDirs] +DefaultDestDir=12 + + +;------------------------------------------------------------------------------ +; Windows 2000/XP/Vista-32bit Sections +;------------------------------------------------------------------------------ + +[DriverInstall.nt] +include=mdmcpq.inf +CopyFiles=DriverCopyFiles.nt +AddReg=DriverInstall.nt.AddReg + +[DriverCopyFiles.nt] +usbser.sys,,,0x20 + +[DriverInstall.nt.AddReg] +HKR,,DevLoader,,*ntkern +HKR,,NTMPDriver,,%DRIVERFILENAME%.sys +HKR,,EnumPropPages32,,"MsPorts.dll,SerialPortPropPageProvider" + +[DriverInstall.nt.Services] +AddService=usbser, 0x00000002, DriverService.nt + +[DriverService.nt] +DisplayName=%SERVICE% +ServiceType=1 +StartType=3 +ErrorControl=1 +ServiceBinary=%12%\%DRIVERFILENAME%.sys + +;------------------------------------------------------------------------------ +; Vista-64bit Sections +;------------------------------------------------------------------------------ + +[DriverInstall.NTamd64] +include=mdmcpq.inf +CopyFiles=DriverCopyFiles.NTamd64 +AddReg=DriverInstall.NTamd64.AddReg + +[DriverCopyFiles.NTamd64] +%DRIVERFILENAME%.sys,,,0x20 + +[DriverInstall.NTamd64.AddReg] +HKR,,DevLoader,,*ntkern +HKR,,NTMPDriver,,%DRIVERFILENAME%.sys +HKR,,EnumPropPages32,,"MsPorts.dll,SerialPortPropPageProvider" + +[DriverInstall.NTamd64.Services] +AddService=usbser, 0x00000002, DriverService.NTamd64 + +[DriverService.NTamd64] +DisplayName=%SERVICE% +ServiceType=1 +StartType=3 +ErrorControl=1 +ServiceBinary=%12%\%DRIVERFILENAME%.sys + + +;------------------------------------------------------------------------------ +; Vendor and Product ID Definitions +;------------------------------------------------------------------------------ +; When developing your USB device, the VID and PID used in the PC side +; application program and the firmware on the microcontroller must match. +; Modify the below line to use your VID and PID. Use the format as shown below. +; Note: One INF file can be used for multiple devices with different VID and PIDs. +; For each supported device, append ",USB\VID_xxxx&PID_yyyy" to the end of the line. +;------------------------------------------------------------------------------ +[SourceDisksFiles] +[SourceDisksNames] +[DeviceList] +%DESCRIPTION%=DriverInstall, USB\VID_1FC9&PID_2001, USB\VID_1FC9&PID_2003&MI_00, USB\VID_1FC9&PID_2005&MI_00, USB\VID_1FC9&PID_2007&MI_00 + +[DeviceList.NTamd64] +%DESCRIPTION%=DriverInstall, USB\VID_1FC9&PID_2001, USB\VID_1FC9&PID_2003&MI_00, USB\VID_1FC9&PID_2005&MI_00, USB\VID_1FC9&PID_2007&MI_00 + +;------------------------------------------------------------------------------ +; String Definitions +;------------------------------------------------------------------------------ +;Modify these strings to customize your device +;------------------------------------------------------------------------------ +[Strings] +MFGFILENAME="CDC_vista" +DRIVERFILENAME ="usbser" +MFGNAME="tinyusb.net" +INSTDISK="tinyUSB CDC driver" +DESCRIPTION="Communications Port" +SERVICE="USB RS-232 Emulation Driver"
\ No newline at end of file diff --git a/tinyusb/class/cdc.c b/tinyusb/class/cdc.c new file mode 100644 index 000000000..539981348 --- /dev/null +++ b/tinyusb/class/cdc.c @@ -0,0 +1,325 @@ +/* + * ${file_name} + * + * Created on: ${date} + * 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. + */ + +#include "cdc.h" +#include "common/fifo.h" + +#ifdef CFG_CLASS_CDC + +static USBD_HANDLE_T g_hCdc; +static CDC_LINE_CODING line_coding; + +static uint8_t qBuffer[2][CDC_BUFFER_SIZE]; /* TX and RX buffers */ +static fifo_t ffTX, ffRX; + +void usb_cdc_recv_isr(void) ATTR_WEAK ATTR_ALIAS(usb_cdc_recv_isr_stub); +/**************************************************************************/ +/*! + @brief Stub for the optional CDC receive ISR that can be used + to perform some action when data arrives via USB CDC +*/ +/**************************************************************************/ +void usb_cdc_recv_isr_stub (void) +{ + return; +} + +/**************************************************************************/ +/*! + @brief Adds a single byte to the transmit buffer for USB CDC + + @param[in] c + The byte to send + + @returns TRUE if the byte was successfully added to the TX buffer + + @note See example for tusb_cdc_getc +*/ +/**************************************************************************/ +bool tusb_cdc_putc(uint8_t c) +{ + return fifo_write(&ffTX, c); +} + +/**************************************************************************/ +/*! + @brief Reads a single byte from the USB CDC buffer + + @param[in] c + Pointer to the location where the byte should be written + + @returns TRUE if a byte was read from the buffer + + @section EXAMPLE + + @code + + // Convert incoming characters to upper case and send back via CDC + if (usb_isConfigured()) + { + uint8_t cdc_char; + if( tusb_cdc_getc(&cdc_char) ) + { + switch (cdc_char) + { + default : + cdc_char = toupper(cdc_char); + tusb_cdc_putc(cdc_char); + break; + } + } + } + + @endcode +*/ +/**************************************************************************/ +bool tusb_cdc_getc(uint8_t *c) +{ + ASSERT(c, false); // not empty pointer + + return fifo_read(&ffRX, c); +} + +/**************************************************************************/ +/*! + @brief Writes the supplied buffer to the USB CDC device + + @param[in] buffer + Pointer to the buffer that should be written via USB CDC + @param[in] count + The number of bytes to write + + @returns The actual number of bytes sent out via USB CDC + + @section EXAMPLE + + @code + + // Capture printf output (in Red Suite) and send it to USB CDC + // (Note: With newlib this function should be renamed to _write) + int __sys_write(int file, char *ptr, int len) + { + #ifdef CFG_PRINTF_USBCDC + // Handle USB CDC output + if (usb_isConfigured()) + { + int length = len; + while(length > 0) + { + uint16_t transferredCount; + + transferredCount = tusb_cdc_send( (uint8_t*) ptr, length); + ptr += transferredCount; + length -= transferredCount; + } + } + #endif + + return len; + } + + @endcode +*/ +/**************************************************************************/ +uint16_t tusb_cdc_send(uint8_t* buffer, uint16_t count) +{ + uint16_t i=0; + + ASSERT(buffer && count, 0); + + while (i < count && fifo_write(&ffTX, buffer[i]) ) + { + i++; + } + + return i; +} + +/**************************************************************************/ +/*! + @brief Reads the incoming CDC buffer up to a maximum number of bytes + + @param[in] buffer + Pointer to the buffer where data should be written + @param[in] max + The maximum number of bytes to read + + @returns The actual number of bytes received +*/ +/**************************************************************************/ +uint16_t tusb_cdc_recv(uint8_t* buffer, uint16_t max) +{ + ASSERT(buffer && max, 0); + + return fifo_readArray(&ffRX, buffer, max); +} + +// ROM driver bug: cannot hook this to CIC_GetRequest +// Need this to implement GetLineCode & detect +//ErrorCode_t CDC_Control_GetRequest(USBD_HANDLE_T hUsb, USB_SETUP_PACKET *pSetup, uint8_t **pBuffer, uint16_t *length) +//{ +// return LPC_OK; +//} + +/**************************************************************************/ +/*! + @brief TODO Add description +*/ +/**************************************************************************/ +ErrorCode_t CDC_SetLineCoding(USBD_HANDLE_T hUsb, CDC_LINE_CODING *lineCoding) +{ + ASSERT(lineCoding, ERR_FAILED); + memcpy(&line_coding, lineCoding, sizeof(CDC_LINE_CODING)); + return LPC_OK; +} + +/**************************************************************************/ +/*! + @brief TODO Add description +*/ +/**************************************************************************/ +ErrorCode_t CDC_SendBreak(USBD_HANDLE_T hCDC, uint16_t mstime) +{ + return LPC_OK; +} + +/**************************************************************************/ +/*! + @brief Bulk Out handler for the USB ROM drivers (UART TX) +*/ +/**************************************************************************/ +ErrorCode_t CDC_BulkIn_Hdlr(USBD_HANDLE_T hUsb, void* data, uint32_t event) +{ + if (USB_EVT_IN == event) + { + uint8_t buffer[CDC_DATA_EP_MAXPACKET_SIZE]; + uint16_t count; + + count = fifo_readArray(&ffTX, buffer, CDC_DATA_EP_MAXPACKET_SIZE); + USBD_API->hw->WriteEP(hUsb, CDC_DATA_EP_IN, buffer, count); // write data to EP + } + + return LPC_OK; +} + +/**************************************************************************/ +/*! + @brief Bulk Out handler for the USB ROM drivers (UART RX) +*/ +/**************************************************************************/ +ErrorCode_t CDC_BulkOut_Hdlr(USBD_HANDLE_T hUsb, void* data, uint32_t event) +{ + if (USB_EVT_OUT == event) + { + uint16_t count, i; + uint8_t buffer[CDC_DATA_EP_MAXPACKET_SIZE]; + + count = USBD_API->hw->ReadEP(hUsb, CDC_DATA_EP_OUT, buffer); + for (i=0; i<count; i++) + { + fifo_write(&ffRX, buffer[i]); + } + + usb_cdc_recv_isr(); + } + + return LPC_OK; +} + +/**************************************************************************/ +/*! + @brief Initialises USB CDC using the ROM driver +*/ +/**************************************************************************/ +TUSB_Error_t tusb_cdc_init(USBD_HANDLE_T hUsb, USB_INTERFACE_DESCRIPTOR const *const pControlIntfDesc, USB_INTERFACE_DESCRIPTOR const *const pDataIntfDesc, uint32_t* mem_base, uint32_t* mem_size) +{ + USBD_CDC_INIT_PARAM_T cdc_param = + { + .mem_base = *mem_base, + .mem_size = *mem_size, + + .cif_intf_desc = (uint8_t*) pControlIntfDesc, + .dif_intf_desc = (uint8_t*) pDataIntfDesc, + + .SetLineCode = CDC_SetLineCoding, + .SendBreak = CDC_SendBreak, + + // .CIC_GetRequest = CDC_Control_GetRequest, // bug from romdrive cannot hook to this handler + // Bug from ROM driver: can not hook bulk in & out handler here, must use USBD API register instead + // .CDC_BulkIN_Hdlr = CDC_BulkIn_Hdlr, + // .CDC_BulkOUT_Hdlr = CDC_BulkOut_Hdlr, + }; + + ASSERT (pControlIntfDesc && pDataIntfDesc, ERR_FAILED); + + /* register Bulk IN & OUT endpoint interrupt handler */ + ASSERT ( LPC_OK == USBD_API->core->RegisterEpHandler (hUsb , ((CDC_DATA_EP_IN & 0x0F) << 1) +1 , CDC_BulkIn_Hdlr , NULL), tERROR_FAILED ); + ASSERT ( LPC_OK == USBD_API->core->RegisterEpHandler (hUsb , (CDC_DATA_EP_OUT & 0x0F) << 1 , CDC_BulkOut_Hdlr , NULL), tERROR_FAILED ); + + ASSERT ( LPC_OK == USBD_API->cdc->init(hUsb, &cdc_param, &g_hCdc), tERROR_FAILED); + + /* update memory variables */ + *mem_base = cdc_param.mem_base; + *mem_size = cdc_param.mem_size; + + return tERROR_NONE; +} + +/**************************************************************************/ +/*! + @brief TODO Add description +*/ +/**************************************************************************/ +TUSB_Error_t tusb_cdc_configured(USBD_HANDLE_T hUsb) +{ + uint8_t dummy=0; + USBD_API->hw->WriteEP(hUsb, CDC_DATA_EP_IN, &dummy, 1); // initial packet for IN endpoint, will not work if omitted + +// #if defined CFG_MCU_FAMILY_LPC11UXX +// fifo_init (&ffTX, qBuffer[0], CDC_BUFFER_SIZE, false, USB_IRQn); // TX is non-overwritable +// fifo_init (&ffRX, qBuffer[1], CDC_BUFFER_SIZE, true, USB_IRQn); // RX is overwritable +// #elif defined CFG_MCU_FAMILY_LPC13UXX + fifo_init (&ffTX, qBuffer[0], CDC_BUFFER_SIZE, false, USB_IRQ_IRQn); // TX is non-overwritable + fifo_init (&ffRX, qBuffer[1], CDC_BUFFER_SIZE, true, USB_IRQ_IRQn); // RX is overwritable +// #else +// #error "usb_cdc.c: No MCU defined" +// #endif + + return tERROR_NONE; +} + +#endif diff --git a/tinyusb/class/cdc.h b/tinyusb/class/cdc.h new file mode 100644 index 000000000..25a666f78 --- /dev/null +++ b/tinyusb/class/cdc.h @@ -0,0 +1,113 @@ +/* + * cdc.h + * + * Created on: Nov 27, 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 CDC Class Driver + * + * \note TBD + */ + +/** \ingroup Group_TinyUSB + * \addtogroup Group_ClassDriver Class Driver + * @{ + * \defgroup Group_CDC Communication Device Class + * @{ + */ + +#ifndef _TUSB_CDC_H__ +#define _TUSB_CDC_H__ + +// todo refractor later +#include "common/common.h" +#include "device/dcd.h" + +#define CDC_BUFFER_SIZE (2*CDC_DATA_EP_MAXPACKET_SIZE) + +/** \brief send a character to host + * + * \param[in] para1 + * \param[out] para2 + * \return Error Code of the \ref TUSB_ERROR enum + * \note + */ +bool tusb_cdc_putc(uint8_t c); + +/** \brief get a character from host + * + * \param[in] para1 + * \param[out] para2 + * \return Error Code of the \ref TUSB_ERROR enum + * \note + */ +bool tusb_cdc_getc(uint8_t *c); + +/** \brief send a number of characters to host + * + * \param[in] para1 + * \param[out] para2 + * \return Error Code of the \ref TUSB_ERROR enum + * \note + */ +uint16_t tusb_cdc_send(uint8_t* buffer, uint16_t count); + +/** \brief get a number of characters from host + * + * \param[in] para1 + * \param[out] para2 + * \return Error Code of the \ref TUSB_ERROR enum + * \note + */ +uint16_t tusb_cdc_recv(uint8_t* buffer, uint16_t max); + +/** \brief initialize cdc driver + * + * \param[in] para1 + * \param[out] para2 + * \return Error Code of the \ref TUSB_ERROR enum + * \note + */ +TUSB_Error_t tusb_cdc_init(USBD_HANDLE_T hUsb, USB_INTERFACE_DESCRIPTOR const *const pControlIntfDesc, USB_INTERFACE_DESCRIPTOR const *const pDataIntfDesc, uint32_t* mem_base, uint32_t* mem_size); + +/** \brief notify cdc driver that usb is configured + * + * \param[in] para1 + * \param[out] para2 + * \return Error Code of the \ref TUSB_ERROR enum + * \note + */ +TUSB_Error_t tusb_cdc_configured(USBD_HANDLE_T hUsb); +#endif diff --git a/tinyusb/class/hid.c b/tinyusb/class/hid.c index 7175fb55f..4058ea5db 100644 --- a/tinyusb/class/hid.c +++ b/tinyusb/class/hid.c @@ -2,12 +2,12 @@ * hid.c * * Created on: Nov 27, 2012 - * Author: hathach ([email protected]) + * Author: hathach */ /* * Software License Agreement (BSD License) - * Copyright (c) 2012, hathach ([email protected]) + * Copyright (c) 2012, hathach (tinyusb.net) * All rights reserved. * * Redistribution and use in source and binary forms, with or without modification, @@ -179,7 +179,7 @@ ErrorCode_t HID_EpOut_Hdlr (USBD_HANDLE_T hUsb, void* data, uint32_t event) @brief Initialises USB HID using the ROM based drivers */ /**************************************************************************/ -TUSB_Error_t usb_hid_init(USBD_HANDLE_T hUsb, USB_INTERFACE_DESCRIPTOR const *const pIntfDesc, uint8_t const * const pHIDReportDesc, uint32_t ReportDescLength, uint32_t* mem_base, uint32_t* mem_size) +TUSB_Error_t tusb_hid_init(USBD_HANDLE_T hUsb, USB_INTERFACE_DESCRIPTOR const *const pIntfDesc, uint8_t const * const pHIDReportDesc, uint32_t ReportDescLength, uint32_t* mem_base, uint32_t* mem_size) { USB_HID_REPORT_T reports_data = { @@ -220,7 +220,7 @@ TUSB_Error_t usb_hid_init(USBD_HANDLE_T hUsb, USB_INTERFACE_DESCRIPTOR const *co */ /**************************************************************************/ -TUSB_Error_t usb_hid_configured(USBD_HANDLE_T hUsb) +TUSB_Error_t tusb_hid_configured(USBD_HANDLE_T hUsb) { #ifdef CFG_CLASS_HID_KEYBOARD USBD_API->hw->WriteEP(hUsb , HID_KEYBOARD_EP_IN , (uint8_t* ) &hid_keyboard_report , sizeof(USB_HID_KeyboardReport_t) ); // initial packet for IN endpoint , will not work if omitted @@ -257,20 +257,20 @@ TUSB_Error_t usb_hid_configured(USBD_HANDLE_T hUsb) if (usb_isConfigured()) { uint8_t keys[6] = {HID_USAGE_KEYBOARD_aA}; - usb_hid_keyboard_sendKeys(0x00, keys, 1); + tusb_hid_keyboard_sendKeys(0x00, keys, 1); } // Send Windows + 'e' (shortcut for 'explorer.exe') if (usb_isConfigured()) { uint8_t keys[6] = {HID_USAGE_KEYBOARD_aA + 'e' - 'a'}; - usb_hid_keyboard_sendKeys((1<<HID_KEYMODIFIER_LEFTGUI), keys, 1); + tusb_hid_keyboard_sendKeys((1<<HID_KEYMODIFIER_LEFTGUI), keys, 1); } @endcode */ /**************************************************************************/ -TUSB_Error_t usb_hid_keyboard_sendKeys(uint8_t modifier, uint8_t keycodes[], uint8_t numkey) +TUSB_Error_t tusb_hid_keyboard_sendKeys(uint8_t modifier, uint8_t keycodes[], uint8_t numkey) { // uint32_t start_time = systickGetSecondsActive(); // while (bKeyChanged) // TODO blocking while previous key has yet sent - can use fifo to improve this @@ -315,13 +315,13 @@ TUSB_Error_t usb_hid_keyboard_sendKeys(uint8_t modifier, uint8_t keycodes[], uin if (usb_isConfigured()) { // Move the mouse +10 in the X direction and + 10 in the Y direction - usb_hid_mouse_send(0x00, 10, 10); + tusb_hid_mouse_send(0x00, 10, 10); } @endcode */ /**************************************************************************/ -TUSB_Error_t usb_hid_mouse_send(uint8_t buttons, int8_t x, int8_t y) +TUSB_Error_t tusb_hid_mouse_send(uint8_t buttons, int8_t x, int8_t y) { // uint32_t start_time = systickGetSecondsActive(); // while (bMouseChanged) // TODO Block while previous key hasn't been sent - can use fifo to improve this diff --git a/tinyusb/class/hid.h b/tinyusb/class/hid.h index daf7e6486..306e122c8 100644 --- a/tinyusb/class/hid.h +++ b/tinyusb/class/hid.h @@ -2,12 +2,12 @@ * hid.h * * Created on: Nov 27, 2012 - * Author: hathach ([email protected]) + * Author: hathach */ /* * Software License Agreement (BSD License) - * Copyright (c) 2012, hathach ([email protected]) + * Copyright (c) 2012, hathach (tinyusb.net) * All rights reserved. * * Redistribution and use in source and binary forms, with or without modification, @@ -152,11 +152,41 @@ enum USB_HID_LOCAL_CODE extern "C" { #endif -TUSB_Error_t usb_hid_init(USBD_HANDLE_T hUsb, USB_INTERFACE_DESCRIPTOR const *const pIntfDesc, uint8_t const * const pHIDReportDesc, uint32_t ReportDescLength, uint32_t* mem_base, uint32_t* mem_size) ATTR_NON_NULL; -TUSB_Error_t usb_hid_configured(USBD_HANDLE_T hUsb); +/** \brief Initialize HID driver + * + * \param[in] para1 + * \param[out] para2 + * \return Error Code of the \ref TUSB_ERROR enum + * \note + */ +TUSB_Error_t tusb_hid_init(USBD_HANDLE_T hUsb, USB_INTERFACE_DESCRIPTOR const *const pIntfDesc, uint8_t const * const pHIDReportDesc, uint32_t ReportDescLength, uint32_t* mem_base, uint32_t* mem_size) ATTR_NON_NULL; + +/** \brief Notify HID class that usb is configured + * + * \param[in] para1 + * \param[out] para2 + * \return Error Code of the \ref TUSB_ERROR enum + * \note + */ +TUSB_Error_t tusb_hid_configured(USBD_HANDLE_T hUsb); -TUSB_Error_t usb_hid_keyboard_sendKeys(uint8_t modifier, uint8_t keycodes[], uint8_t numkey) ATTR_NON_NULL; -TUSB_Error_t usb_hid_mouse_send(uint8_t buttons, int8_t x, int8_t y); +/** \brief Used by Application to send Keycode to Host + * + * \param[in] para1 + * \param[out] para2 + * \return Error Code of the \ref TUSB_ERROR enum + * \note + */ +TUSB_Error_t tusb_hid_keyboard_sendKeys(uint8_t modifier, uint8_t keycodes[], uint8_t numkey) ATTR_NON_NULL; + +/** \brief + * + * \param[in] para1 + * \param[out] para2 + * \return Error Code of the \ref TUSB_ERROR enum + * \note + */ +TUSB_Error_t tusb_hid_mouse_send(uint8_t buttons, int8_t x, int8_t y); #ifdef __cplusplus } diff --git a/tinyusb/common/arch/arch.h b/tinyusb/common/arch/arch.h index dba662416..d67c5510e 100644 --- a/tinyusb/common/arch/arch.h +++ b/tinyusb/common/arch/arch.h @@ -7,7 +7,7 @@ /* * Software License Agreement (BSD License) - * Copyright (c) 2012, hathach ([email protected]) + * Copyright (c) 2012, hathach (tinyusb.net) * All rights reserved. * * Redistribution and use in source and binary forms, with or without modification, diff --git a/tinyusb/common/arch/arch_lpc11xx.h b/tinyusb/common/arch/arch_lpc11xx.h new file mode 100644 index 000000000..6e5990f33 --- /dev/null +++ b/tinyusb/common/arch/arch_lpc11xx.h @@ -0,0 +1,60 @@ +/* + * arch_lpc11xx.h + * + * Created on: Nov 29, 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 LPC11xx Header File + * + * \note TBD + */ + +/** \ingroup Group_Arch + * + * @{ + */ + +#ifndef ARCH_LPC11XX_H_ +#define ARCH_LPC11XX_H_ + +#define ARM_M0 +#define DEVICE_ROMDRIVER + +#include "arm_mx.h" +#include "LPC11Uxx.h" + +#endif /* ARCH_LPC11XX_H_ */ + +/** @} */ diff --git a/tinyusb/common/arch/arch_lpc134x.h b/tinyusb/common/arch/arch_lpc134x.h index a9b9cb7c2..f4539acf7 100644 --- a/tinyusb/common/arch/arch_lpc134x.h +++ b/tinyusb/common/arch/arch_lpc134x.h @@ -2,12 +2,12 @@ * arch_lpc134x.h * * Created on: Nov 26, 2012 - * Author: hathach ([email protected]) + * Author: hathach */ /* * Software License Agreement (BSD License) - * Copyright (c) 2012, hathach ([email protected]) + * Copyright (c) 2012, hathach (tinyusb.net) * All rights reserved. * * Redistribution and use in source and binary forms, with or without modification, diff --git a/tinyusb/common/arch/arch_lpc43xx.h b/tinyusb/common/arch/arch_lpc43xx.h index 05c177cc0..b80f44c65 100644 --- a/tinyusb/common/arch/arch_lpc43xx.h +++ b/tinyusb/common/arch/arch_lpc43xx.h @@ -2,12 +2,12 @@ * arch_lpc43xx.h * * Created on: Nov 26, 2012 - * Author: hathach ([email protected]) + * Author: hathach */ /* * Software License Agreement (BSD License) - * Copyright (c) 2012, hathach ([email protected]) + * Copyright (c) 2012, hathach (tinyusb.net) * All rights reserved. * * Redistribution and use in source and binary forms, with or without modification, diff --git a/tinyusb/common/arch/arm_mx.h b/tinyusb/common/arch/arm_mx.h index ff77bff89..074f466f1 100644 --- a/tinyusb/common/arch/arm_mx.h +++ b/tinyusb/common/arch/arm_mx.h @@ -2,12 +2,12 @@ * arm_mx.h * * Created on: Nov 26, 2012 - * Author: hathach ([email protected]) + * Author: hathach */ /* * Software License Agreement (BSD License) - * Copyright (c) 2012, hathach ([email protected]) + * Copyright (c) 2012, hathach (tinyusb.net) * All rights reserved. * * Redistribution and use in source and binary forms, with or without modification, diff --git a/tinyusb/common/common.h b/tinyusb/common/common.h index 4d4dd1909..44158f487 100644 --- a/tinyusb/common/common.h +++ b/tinyusb/common/common.h @@ -2,12 +2,12 @@ * common.h * * Created on: Nov 26, 2012 - * Author: hathach ([email protected]) + * Author: hathach */ /* * Software License Agreement (BSD License) - * Copyright (c) 2012, hathach ([email protected]) + * Copyright (c) 2012, hathach (tinyusb.net) * All rights reserved. * * Redistribution and use in source and binary forms, with or without modification, diff --git a/tinyusb/common/compiler/compiler.h b/tinyusb/common/compiler/compiler.h index 4aae60f22..3ff94b3a4 100644 --- a/tinyusb/common/compiler/compiler.h +++ b/tinyusb/common/compiler/compiler.h @@ -2,12 +2,12 @@ * compiler.h * * Created on: Nov 26, 2012 - * Author: hathach ([email protected]) + * Author: hathach */ /* * Software License Agreement (BSD License) - * Copyright (c) 2012, hathach ([email protected]) + * Copyright (c) 2012, hathach (tinyusb.net) * All rights reserved. * * Redistribution and use in source and binary forms, with or without modification, diff --git a/tinyusb/common/compiler/compiler_gcc.h b/tinyusb/common/compiler/compiler_gcc.h index 8e2c89f28..a68d509d8 100644 --- a/tinyusb/common/compiler/compiler_gcc.h +++ b/tinyusb/common/compiler/compiler_gcc.h @@ -2,12 +2,12 @@ * compiler_gcc.h * * Created on: Nov 26, 2012 - * Author: hathach ([email protected]) + * Author: hathach */ /* * Software License Agreement (BSD License) - * Copyright (c) 2012, hathach ([email protected]) + * Copyright (c) 2012, hathach (tinyusb.net) * All rights reserved. * * Redistribution and use in source and binary forms, with or without modification, @@ -103,7 +103,7 @@ /// The alias attribute causes the declaration to be emitted as an alias for another symbol, which must be specified #define ATTR_ALIAS(func) __attribute__ ((alias(#func))) -/// The weakref attribute marks a declaration as a weak reference. It is equivalent with weak + alias attribute +/// The weakref attribute marks a declaration as a weak reference. It is equivalent with weak + alias attribute, but require function is static #define ATTR_WEAKREF(func) __attribute__ ((weakref(#func))) /// The warn_unused_result attribute causes a warning to be emitted if a caller of the function with this attribute does not use its return value. This is useful for functions where not checking the result is either a security problem or always a bug diff --git a/tinyusb/common/errors.c b/tinyusb/common/errors.c index 26db61241..a1042b058 100644 --- a/tinyusb/common/errors.c +++ b/tinyusb/common/errors.c @@ -2,12 +2,12 @@ * errors.c * * Created on: Nov 27, 2012 - * Author: hathach ([email protected]) + * Author: hathach */ /* * Software License Agreement (BSD License) - * Copyright (c) 2012, hathach ([email protected]) + * Copyright (c) 2012, hathach (tinyusb.net) * All rights reserved. * * Redistribution and use in source and binary forms, with or without modification, diff --git a/tinyusb/common/errors.h b/tinyusb/common/errors.h index d34b01963..48ff86aa2 100644 --- a/tinyusb/common/errors.h +++ b/tinyusb/common/errors.h @@ -2,12 +2,12 @@ * errors.h * * Created on: Nov 27, 2012 - * Author: hathach ([email protected]) + * Author: hathach */ /* * Software License Agreement (BSD License) - * Copyright (c) 2012, hathach ([email protected]) + * Copyright (c) 2012, hathach (tinyusb.net) * All rights reserved. * * Redistribution and use in source and binary forms, with or without modification, diff --git a/tinyusb/common/errors_def b/tinyusb/common/errors_def index 927c72d7d..55c9fdbdf 100644 --- a/tinyusb/common/errors_def +++ b/tinyusb/common/errors_def @@ -2,12 +2,12 @@ * errors_def * * Created on: Nov 27, 2012 - * Author: hathach ([email protected]) + * Author: hathach */ /* * Software License Agreement (BSD License) - * Copyright (c) 2012, hathach ([email protected]) + * Copyright (c) 2012, hathach (tinyusb.net) * All rights reserved. * * Redistribution and use in source and binary forms, with or without modification, diff --git a/tinyusb/common/fifo.c b/tinyusb/common/fifo.c index 1a8d3cce5..e72a5988d 100644 --- a/tinyusb/common/fifo.c +++ b/tinyusb/common/fifo.c @@ -2,12 +2,12 @@ * fifo.c * * Created on: Nov 27, 2012 - * Author: hathach ([email protected]) + * Author: hathach */ /* * Software License Agreement (BSD License) - * Copyright (c) 2012, hathach ([email protected]) + * Copyright (c) 2012, hathach (tinyusb.net) * All rights reserved. * * Redistribution and use in source and binary forms, with or without modification, diff --git a/tinyusb/common/fifo.h b/tinyusb/common/fifo.h index 3ee9da7e6..c0340517c 100644 --- a/tinyusb/common/fifo.h +++ b/tinyusb/common/fifo.h @@ -2,12 +2,12 @@ * fifo.h * * Created on: Nov 27, 2012 - * Author: hathach ([email protected]) + * Author: hathach */ /* * Software License Agreement (BSD License) - * Copyright (c) 2012, hathach ([email protected]) + * Copyright (c) 2012, hathach (tinyusb.net) * All rights reserved. * * Redistribution and use in source and binary forms, with or without modification, diff --git a/tinyusb/device/dcd.c b/tinyusb/device/dcd.c index a2cab2385..40a6044e3 100644 --- a/tinyusb/device/dcd.c +++ b/tinyusb/device/dcd.c @@ -2,12 +2,12 @@ * dcd.c * * Created on: Nov 27, 2012 - * Author: hathach ([email protected]) + * Author: hathach */ /* * Software License Agreement (BSD License) - * Copyright (c) 2012, hathach ([email protected]) + * Copyright (c) 2012, hathach (tinyusb.net) * All rights reserved. * * Redistribution and use in source and binary forms, with or without modification, @@ -60,11 +60,11 @@ ErrorCode_t USB_Configure_Event (USBD_HANDLE_T hUsb) if (pCtrl->config_value) { #if defined(CLASS_HID) - ASSERT( tERROR_NONE == usb_hid_configured(hUsb), ERR_FAILED ); + ASSERT( tERROR_NONE == tusb_hid_configured(hUsb), ERR_FAILED ); #endif - #ifdef CFG_USB_CDC - ASSERT_STATUS( usb_cdc_configured(hUsb) ); + #ifdef CFG_CLASS_CDC + ASSERT( tERROR_NONE == tusb_cdc_configured(hUsb), ERR_FAILED ); #endif } @@ -118,18 +118,18 @@ TUSB_Error_t dcd_init() /* Initialise the class driver(s) */ #ifdef CFG_CLASS_CDC - ASSERT_ERROR( usb_cdc_init(g_hUsb, &USB_FsConfigDescriptor.CDC_CCI_Interface, + ASSERT_ERROR( tusb_cdc_init(g_hUsb, &USB_FsConfigDescriptor.CDC_CCI_Interface, &USB_FsConfigDescriptor.CDC_DCI_Interface, &membase, &memsize) ); #endif #ifdef CFG_CLASS_HID_KEYBOARD - ASSERT_ERROR( usb_hid_init(g_hUsb , &USB_FsConfigDescriptor.HID_KeyboardInterface , + ASSERT_ERROR( tusb_hid_init(g_hUsb , &USB_FsConfigDescriptor.HID_KeyboardInterface , HID_KeyboardReportDescriptor, USB_FsConfigDescriptor.HID_KeyboardHID.DescriptorList[0].wDescriptorLength, &membase , &memsize) ); #endif #ifdef CFG_CLASS_HID_MOUSE - ASSERT_ERROR( usb_hid_init(g_hUsb , &USB_FsConfigDescriptor.HID_MouseInterface , + ASSERT_ERROR( tusb_hid_init(g_hUsb , &USB_FsConfigDescriptor.HID_MouseInterface , HID_MouseReportDescriptor, USB_FsConfigDescriptor.HID_MouseHID.DescriptorList[0].wDescriptorLength, &membase , &memsize) ); #endif diff --git a/tinyusb/device/dcd.h b/tinyusb/device/dcd.h index aefdaede1..ffd89b0a9 100644 --- a/tinyusb/device/dcd.h +++ b/tinyusb/device/dcd.h @@ -2,12 +2,12 @@ * dcd.h * * Created on: Nov 26, 2012 - * Author: hathach ([email protected]) + * Author: hathach */ /* * Software License Agreement (BSD License) - * Copyright (c) 2012, hathach ([email protected]) + * Copyright (c) 2012, hathach (tinyusb.net) * All rights reserved. * * Redistribution and use in source and binary forms, with or without modification, diff --git a/tinyusb/host/hcd.c b/tinyusb/host/hcd.c index 481dc91ae..aa8e0f691 100644 --- a/tinyusb/host/hcd.c +++ b/tinyusb/host/hcd.c @@ -2,12 +2,12 @@ * hcd.c * * Created on: Nov 29, 2012 - * Author: hathach ([email protected]) + * Author: hathach */ /* * Software License Agreement (BSD License) - * Copyright (c) 2012, hathach ([email protected]) + * Copyright (c) 2012, hathach (tinyusb.net) * All rights reserved. * * Redistribution and use in source and binary forms, with or without modification, diff --git a/tinyusb/host/hcd.h b/tinyusb/host/hcd.h index d807341ec..e118d9e24 100644 --- a/tinyusb/host/hcd.h +++ b/tinyusb/host/hcd.h @@ -2,12 +2,12 @@ * hcd.h * * Created on: Nov 26, 2012 - * Author: hathach ([email protected]) + * Author: hathach */ /* * Software License Agreement (BSD License) - * Copyright (c) 2012, hathach ([email protected]) + * Copyright (c) 2012, hathach (tinyusb.net) * All rights reserved. * * Redistribution and use in source and binary forms, with or without modification, diff --git a/tinyusb/tusb.c b/tinyusb/tusb.c index e2aed4d4e..4b028e29f 100644 --- a/tinyusb/tusb.c +++ b/tinyusb/tusb.c @@ -2,12 +2,12 @@ * tusb.c * * Created on: Nov 27, 2012 - * Author: hathach ([email protected]) + * Author: hathach */ /* * Software License Agreement (BSD License) - * Copyright (c) 2012, hathach ([email protected]) + * Copyright (c) 2012, hathach (tinyusb.net) * All rights reserved. * * Redistribution and use in source and binary forms, with or without modification, diff --git a/tinyusb/tusb.h b/tinyusb/tusb.h index fd02fadb7..29f05b3bd 100644 --- a/tinyusb/tusb.h +++ b/tinyusb/tusb.h @@ -2,12 +2,12 @@ * tusb.h * * Created on: Nov 27, 2012 - * Author: hathach ([email protected]) + * Author: hathach */ /* * Software License Agreement (BSD License) - * Copyright (c) 2012, hathach ([email protected]) + * Copyright (c) 2012, hathach (tinyusb.net) * All rights reserved. * * Redistribution and use in source and binary forms, with or without modification, @@ -68,6 +68,10 @@ #include "class/hid.h" #endif +#ifdef CFG_CLASS_CDC + #include "class/cdc.h" +#endif + #ifdef __cplusplus } #endif diff --git a/tinyusb/tusb_cfg.h b/tinyusb/tusb_cfg.h index 2a727147e..466b08fea 100644 --- a/tinyusb/tusb_cfg.h +++ b/tinyusb/tusb_cfg.h @@ -2,12 +2,12 @@ * tusb_cfg.h * * Created on: Nov 26, 2012 - * Author: hathach ([email protected]) + * Author: hathach */ /* * Software License Agreement (BSD License) - * Copyright (c) 2012, hathach ([email protected]) + * Copyright (c) 2012, hathach (tinyusb.net) * All rights reserved. * * Redistribution and use in source and binary forms, with or without modification, @@ -58,6 +58,9 @@ /// Enable Device Support #define CFG_TUSB_DEVICE +/// Enable CDC Support +#define CFG_CLASS_CDC + /// Enable HID Keyboard support #define CFG_CLASS_HID_KEYBOARD |
