diff options
| author | hathach <[email protected]> | 2018-03-07 11:09:59 +0700 |
|---|---|---|
| committer | hathach <[email protected]> | 2018-03-07 11:09:59 +0700 |
| commit | 271015a014902c61fc42c01aa85ab73d51bb519f (patch) | |
| tree | 23aee3f0ba7dbd786e61cdb54a5cd5b76e6bacc4 /examples/device/src | |
| parent | 321324a485190a9dce2c49ef7019fc0eda83299b (diff) | |
move old examples to obsolete folder
Diffstat (limited to 'examples/device/src')
| -rw-r--r-- | examples/device/src/WinCDCdriver.inf | 106 | ||||
| -rw-r--r-- | examples/device/src/app_os_prio.h | 71 | ||||
| -rw-r--r-- | examples/device/src/cdc_device_app.c | 166 | ||||
| -rw-r--r-- | examples/device/src/cdc_device_app.h | 80 | ||||
| -rw-r--r-- | examples/device/src/keyboard_device_app.c | 151 | ||||
| -rw-r--r-- | examples/device/src/keyboard_device_app.h | 79 | ||||
| -rw-r--r-- | examples/device/src/main.c | 149 | ||||
| -rw-r--r-- | examples/device/src/mouse_device_app.c | 158 | ||||
| -rw-r--r-- | examples/device/src/mouse_device_app.h | 78 | ||||
| -rw-r--r-- | examples/device/src/msc_device_app.c | 174 | ||||
| -rw-r--r-- | examples/device/src/msc_device_app.h | 95 | ||||
| -rw-r--r-- | examples/device/src/msc_device_ramdisk.c | 236 | ||||
| -rw-r--r-- | examples/device/src/msc_device_romdisk.c | 119 | ||||
| -rw-r--r-- | examples/device/src/tusb_config.h | 119 | ||||
| -rw-r--r-- | examples/device/src/tusb_descriptors.c | 475 | ||||
| -rw-r--r-- | examples/device/src/tusb_descriptors.h | 178 |
16 files changed, 0 insertions, 2434 deletions
diff --git a/examples/device/src/WinCDCdriver.inf b/examples/device/src/WinCDCdriver.inf deleted file mode 100644 index b2ef6ba90..000000000 --- a/examples/device/src/WinCDCdriver.inf +++ /dev/null @@ -1,106 +0,0 @@ -;************************************************************ -; 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_CAFE&PID_4001&MI_00, USB\VID_CAFE&PID_4003&MI_00, USB\VID_CAFE&PID_4005&MI_00, USB\VID_CAFE&PID_4007&MI_00, USB\VID_CAFE&PID_4009&MI_00, USB\VID_CAFE&PID_400b&MI_00, USB\VID_CAFE&PID_400d&MI_00, USB\VID_CAFE&PID_400f&MI_00, USB\VID_CAFE&PID_4011&MI_00, USB\VID_CAFE&PID_4013&MI_00, USB\VID_CAFE&PID_4015&MI_00, USB\VID_CAFE&PID_4017&MI_00, USB\VID_CAFE&PID_4019&MI_00, USB\VID_CAFE&PID_401b&MI_00, USB\VID_CAFE&PID_401d&MI_00, USB\VID_CAFE&PID_401f&MI_00, USB\VID_CAFE&PID_4021&MI_00, USB\VID_CAFE&PID_4023&MI_00, USB\VID_CAFE&PID_4025&MI_00, USB\VID_CAFE&PID_4027&MI_00, USB\VID_CAFE&PID_4029&MI_00, USB\VID_CAFE&PID_402b&MI_00, USB\VID_CAFE&PID_402d&MI_00, USB\VID_CAFE&PID_402f&MI_00, USB\VID_CAFE&PID_4031&MI_00, USB\VID_CAFE&PID_4033&MI_00, USB\VID_CAFE&PID_4035&MI_00, USB\VID_CAFE&PID_4037&MI_00, USB\VID_CAFE&PID_4039&MI_00, USB\VID_CAFE&PID_403b&MI_00, USB\VID_CAFE&PID_403d&MI_00, USB\VID_CAFE&PID_403f&MI_00 - - -[DeviceList.NTamd64] -%DESCRIPTION%=DriverInstall, USB\VID_CAFE&PID_4001&MI_00, USB\VID_CAFE&PID_4003&MI_00, USB\VID_CAFE&PID_4005&MI_00, USB\VID_CAFE&PID_4007&MI_00, USB\VID_CAFE&PID_4009&MI_00, USB\VID_CAFE&PID_400b&MI_00, USB\VID_CAFE&PID_400d&MI_00, USB\VID_CAFE&PID_400f&MI_00, USB\VID_CAFE&PID_4011&MI_00, USB\VID_CAFE&PID_4013&MI_00, USB\VID_CAFE&PID_4015&MI_00, USB\VID_CAFE&PID_4017&MI_00, USB\VID_CAFE&PID_4019&MI_00, USB\VID_CAFE&PID_401b&MI_00, USB\VID_CAFE&PID_401d&MI_00, USB\VID_CAFE&PID_401f&MI_00, USB\VID_CAFE&PID_4021&MI_00, USB\VID_CAFE&PID_4023&MI_00, USB\VID_CAFE&PID_4025&MI_00, USB\VID_CAFE&PID_4027&MI_00, USB\VID_CAFE&PID_4029&MI_00, USB\VID_CAFE&PID_402b&MI_00, USB\VID_CAFE&PID_402d&MI_00, USB\VID_CAFE&PID_402f&MI_00, USB\VID_CAFE&PID_4031&MI_00, USB\VID_CAFE&PID_4033&MI_00, USB\VID_CAFE&PID_4035&MI_00, USB\VID_CAFE&PID_4037&MI_00, USB\VID_CAFE&PID_4039&MI_00, USB\VID_CAFE&PID_403b&MI_00, USB\VID_CAFE&PID_403d&MI_00, USB\VID_CAFE&PID_403f&MI_00 - -;------------------------------------------------------------------------------ -; String Definitions -;------------------------------------------------------------------------------ -;Modify these strings to customize your device -;------------------------------------------------------------------------------ -[Strings] -MFGFILENAME="CDC_vista" -DRIVERFILENAME ="usbser" -MFGNAME="tinyusb.org" -INSTDISK="tinyusb CDC driver" -DESCRIPTION="tinyusb Serial Port" -SERVICE="USB RS-232 Emulation Driver"
\ No newline at end of file diff --git a/examples/device/src/app_os_prio.h b/examples/device/src/app_os_prio.h deleted file mode 100644 index 5d932a41e..000000000 --- a/examples/device/src/app_os_prio.h +++ /dev/null @@ -1,71 +0,0 @@ -/**************************************************************************/ -/*! - @file app_os_prio.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. -*/ -/**************************************************************************/ - -#ifndef _TUSB_APP_OS_PRIO_H_ -#define _TUSB_APP_OS_PRIO_H_ - - -#ifdef __cplusplus - extern "C" { -#endif - -#include "tusb.h" - -#if TUSB_CFG_OS == TUSB_OS_NONE - #define LOWER_PRIO(x) 0 // does not matter -#elif TUSB_CFG_OS == TUSB_OS_FREERTOS - #define LOWER_PRIO(x) ((x)-1) // freeRTOS lower number --> lower priority -#else - #error Priority is not configured for this RTOS -#endif - -enum { - STANDARD_APP_TASK_PRIO = LOWER_PRIO(TUSB_CFG_OS_TASK_PRIO), // Application Task is lower than usb system task - LED_BLINKING_APP_TASK_PRIO = LOWER_PRIO(STANDARD_APP_TASK_PRIO), // Blinking task is lower than normal task - - KEYBOARD_APP_TASK_PRIO = STANDARD_APP_TASK_PRIO, - MOUSE_APP_TASK_PRIO = STANDARD_APP_TASK_PRIO, - CDC_SERIAL_APP_TASK_PRIO = STANDARD_APP_TASK_PRIO, - MSC_APP_TASK_PRIO = STANDARD_APP_TASK_PRIO -}; - -#ifdef __cplusplus - } -#endif - -#endif /* _TUSB_APP_OS_PRIO_H_ */ diff --git a/examples/device/src/cdc_device_app.c b/examples/device/src/cdc_device_app.c deleted file mode 100644 index cbc4f4ffe..000000000 --- a/examples/device/src/cdc_device_app.c +++ /dev/null @@ -1,166 +0,0 @@ -/**************************************************************************/ -/*! - @file cdc_device_app.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 "cdc_device_app.h" - -#if TUSB_CFG_DEVICE_CDC - -#include "common/fifo.h" // TODO refractor -#include "app_os_prio.h" - -//--------------------------------------------------------------------+ -// INCLUDE -//--------------------------------------------------------------------+ -enum { SERIAL_BUFFER_SIZE = 64 }; - -//--------------------------------------------------------------------+ -// MACRO CONSTANT TYPEDEF -//--------------------------------------------------------------------+ -static osal_semaphore_t sem_hdl; - -//--------------------------------------------------------------------+ -// INTERNAL OBJECT & FUNCTION DECLARATION -//--------------------------------------------------------------------+ -TUSB_CFG_ATTR_USBRAM static uint8_t serial_rx_buffer[SERIAL_BUFFER_SIZE]; -TUSB_CFG_ATTR_USBRAM static uint8_t serial_tx_buffer[SERIAL_BUFFER_SIZE]; - -FIFO_DEF(fifo_serial, SERIAL_BUFFER_SIZE, uint8_t, true); - -//--------------------------------------------------------------------+ -// tinyusb callbacks -//--------------------------------------------------------------------+ -void cdc_serial_app_mount(uint8_t coreid) -{ - osal_semaphore_reset(sem_hdl); - - tud_cdc_receive(coreid, serial_rx_buffer, SERIAL_BUFFER_SIZE, true); -} - -void cdc_serial_app_umount(uint8_t coreid) -{ - -} - -void tud_cdc_xfer_cb(uint8_t coreid, tusb_event_t event, cdc_pipeid_t pipe_id, uint32_t xferred_bytes) -{ - switch ( pipe_id ) - { - case CDC_PIPE_DATA_OUT: - switch(event) - { - case TUSB_EVENT_XFER_COMPLETE: - for(uint8_t i=0; i<xferred_bytes; i++) - { - fifo_write(&fifo_serial, serial_rx_buffer+i); - } - osal_semaphore_post(sem_hdl); // notify main task - break; - - case TUSB_EVENT_XFER_ERROR: - tud_cdc_receive(0, serial_rx_buffer, SERIAL_BUFFER_SIZE, true); // ignore, queue transfer again - break; - - case TUSB_EVENT_XFER_STALLED: - default : - break; - } - break; - - case CDC_PIPE_DATA_IN: - case CDC_PIPE_NOTIFICATION: - default: - break; - } -} - -//--------------------------------------------------------------------+ -// APPLICATION CODE -//--------------------------------------------------------------------+ -void cdc_serial_app_init(void) -{ - sem_hdl = osal_semaphore_create(1, 0); - VERIFY(sem_hdl, ); - - osal_task_create(cdc_serial_app_task, "cdc", 128, NULL, CDC_SERIAL_APP_TASK_PRIO); -} - -tusb_error_t cdc_serial_subtask(void); - -void cdc_serial_app_task(void* param) -{ - (void) param; - - OSAL_TASK_BEGIN - cdc_serial_subtask(); - OSAL_TASK_END -} - -tusb_error_t cdc_serial_subtask(void) -{ - OSAL_SUBTASK_BEGIN - - tusb_error_t error; - - osal_semaphore_wait(sem_hdl, OSAL_TIMEOUT_WAIT_FOREVER, &error); - (void) error; // suppress compiler's warnings - - if ( tud_mounted(0) ) - { - // echo back data in the fifo - if ( !tud_cdc_busy(0, CDC_PIPE_DATA_IN) ) - { - uint16_t count=0; - while( fifo_read(&fifo_serial, &serial_tx_buffer[count]) ) - { - count++; - } - - if (count) - { - tud_cdc_send(0, serial_tx_buffer, count, false); - } - } - - // getting more data from host - tud_cdc_receive(0, serial_rx_buffer, SERIAL_BUFFER_SIZE, true); - } - - OSAL_SUBTASK_END -} - -#endif diff --git a/examples/device/src/cdc_device_app.h b/examples/device/src/cdc_device_app.h deleted file mode 100644 index 5433da207..000000000 --- a/examples/device/src/cdc_device_app.h +++ /dev/null @@ -1,80 +0,0 @@ -/**************************************************************************/ -/*! - @file cdc_device_app.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_CDCD_DEVICE_APP_H_ -#define _TUSB_CDCD_DEVICE_APP_H_ - -#include "bsp/board.h" -#include "tusb.h" - -#ifdef __cplusplus - extern "C" { -#endif - -#if TUSB_CFG_DEVICE_CDC - -void cdc_serial_app_init(void); -void cdc_serial_app_task(void* param); - -void cdc_serial_app_mount(uint8_t coreid); -void cdc_serial_app_umount(uint8_t coreid); - -#else - -#define cdc_serial_app_init() -#define cdc_serial_app_task(x) -#define cdc_serial_app_mount(x) -#define cdc_serial_app_umount(x) - -#endif - - -#ifdef __cplusplus - } -#endif - -#endif /* _TUSB_CDCD_DEVICE_APP_H_ */ - -/** @} */ diff --git a/examples/device/src/keyboard_device_app.c b/examples/device/src/keyboard_device_app.c deleted file mode 100644 index b4a9cb69a..000000000 --- a/examples/device/src/keyboard_device_app.c +++ /dev/null @@ -1,151 +0,0 @@ -/**************************************************************************/ -/*! - @file keyboard_device_app.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 "keyboard_device_app.h" - -#if TUSB_CFG_DEVICE_HID_KEYBOARD -//--------------------------------------------------------------------+ -// INCLUDE -//--------------------------------------------------------------------+ -#include "app_os_prio.h" - -//--------------------------------------------------------------------+ -// MACRO CONSTANT TYPEDEF -//--------------------------------------------------------------------+ - -//--------------------------------------------------------------------+ -// INTERNAL OBJECT & FUNCTION DECLARATION -//--------------------------------------------------------------------+ -TUSB_CFG_ATTR_USBRAM hid_keyboard_report_t keyboard_report; - -//--------------------------------------------------------------------+ -// tinyusb callbacks -//--------------------------------------------------------------------+ -void keyboard_app_mount(uint8_t coreid) -{ - -} - -void keyboard_app_umount(uint8_t coreid) -{ - -} - -void tud_hid_keyboard_cb(uint8_t coreid, tusb_event_t event, uint32_t xferred_bytes) -{ - switch(event) - { - case TUSB_EVENT_XFER_COMPLETE: - case TUSB_EVENT_XFER_ERROR: - case TUSB_EVENT_XFER_STALLED: - default: break; - } -} - -uint16_t tud_hid_keyboard_get_report_cb(uint8_t coreid, hid_request_report_type_t report_type, void** pp_report, uint16_t requested_length) -{ - // get other than input report is not supported by this keyboard demo - if ( report_type != HID_REQUEST_REPORT_INPUT ) return 0; - - (*pp_report) = &keyboard_report; - return requested_length; -} - -void tud_hid_keyboard_set_report_cb(uint8_t coreid, hid_request_report_type_t report_type, uint8_t p_report_data[], uint16_t length) -{ - // set other than output report is not supported by this keyboard demo - if ( report_type != HID_REQUEST_REPORT_OUTPUT ) return; - - uint8_t kbd_led = p_report_data[0]; - uint32_t interval_divider = 1; // each LED will reduce blinking interval by a half - - if (kbd_led & KEYBOARD_LED_NUMLOCK ) interval_divider *= 2; - if (kbd_led & KEYBOARD_LED_CAPSLOCK ) interval_divider *= 2; - if (kbd_led & KEYBOARD_LED_SCROLLLOCK) interval_divider *= 2; - - led_blinking_set_interval( 1000 / interval_divider); -} - -//--------------------------------------------------------------------+ -// APPLICATION CODE -//--------------------------------------------------------------------+ -void keyboard_app_init(void) -{ - osal_task_create(keyboard_app_task, "kbd", 128, NULL, KEYBOARD_APP_TASK_PRIO); -} - -tusb_error_t keyboard_device_subtask(void); - -void keyboard_app_task(void* param) -{ - (void) param; - - OSAL_TASK_BEGIN - keyboard_device_subtask(); - OSAL_TASK_END -} - -tusb_error_t keyboard_device_subtask(void) -{ - OSAL_SUBTASK_BEGIN - - osal_task_delay(50); - - if ( tud_mounted(0) && !tud_hid_keyboard_busy(0) ) - { - static uint32_t button_mask = 0; - uint32_t new_button_mask = board_buttons(); - - //------------- button pressed -------------// - if (button_mask != new_button_mask) - { - button_mask = new_button_mask; - - for (uint8_t i=0; i<6; i++) - { // demo support up to 6 buttons, button0 = 'a', button1 = 'b', etc ... - keyboard_report.keycode[i] = BIT_TEST_(button_mask, i) ? (0x04+i) : 0; - } - - tud_hid_keyboard_send(0, &keyboard_report ); - } - } - - OSAL_SUBTASK_END -} - -#endif diff --git a/examples/device/src/keyboard_device_app.h b/examples/device/src/keyboard_device_app.h deleted file mode 100644 index 2c0817280..000000000 --- a/examples/device/src/keyboard_device_app.h +++ /dev/null @@ -1,79 +0,0 @@ -/**************************************************************************/ -/*! - @file keyboard_device_app.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_KEYBOARDD_DEVICE_APP_H_ -#define _TUSB_KEYBOARDD_DEVICE_APP_H_ - -#include "bsp/board.h" -#include "tusb.h" - -#ifdef __cplusplus - extern "C" { -#endif - -#if TUSB_CFG_DEVICE_HID_KEYBOARD - -void keyboard_app_init(void); -void keyboard_app_task(void* param); - -void keyboard_app_mount(uint8_t coreid); -void keyboard_app_umount(uint8_t coreid); - -#else - -#define keyboard_app_init() -#define keyboard_app_task(x) -#define keyboard_app_mount(x) -#define keyboard_app_umount(x) - -#endif - -#ifdef __cplusplus - } -#endif - -#endif /* _TUSB_KEYBOARDD_DEVICE_APP_H_ */ - -/** @} */ diff --git a/examples/device/src/main.c b/examples/device/src/main.c deleted file mode 100644 index 1e96077f3..000000000 --- a/examples/device/src/main.c +++ /dev/null @@ -1,149 +0,0 @@ -/**************************************************************************/ -/*! - @file main.c - @author hathach (tinyusb.org) - - @section LICENSE - - Software License Agreement (BSD License) - - Copyright (c) 2013, hathach (tinyusb.org) - All rights reserved. - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are met: - 1. Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - 2. Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - 3. Neither the name of the copyright holders nor the - names of its contributors may be used to endorse or promote products - derived from this software without specific prior written permission. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS ''AS IS'' AND ANY - EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE FOR ANY - DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION HOWEVER CAUSED AND - ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - INCLUDING NEGLIGENCE OR OTHERWISE ARISING IN ANY WAY OUT OF THE USE OF THIS - SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - - This file is part of the tinyusb stack. -*/ -/**************************************************************************/ - -//--------------------------------------------------------------------+ -// INCLUDE -//--------------------------------------------------------------------+ -#include <stdlib.h> -#include <stdio.h> -#include <string.h> - -#include "bsp/board.h" -#include "tusb.h" - -#include "msc_device_app.h" -#include "keyboard_device_app.h" -#include "mouse_device_app.h" -#include "cdc_device_app.h" - -//--------------------------------------------------------------------+ -// MACRO CONSTANT TYPEDEF -//--------------------------------------------------------------------+ - -//--------------------------------------------------------------------+ -// INTERNAL OBJECT & FUNCTION DECLARATION -//--------------------------------------------------------------------+ -void print_greeting(void); - -#if TUSB_CFG_OS == TUSB_OS_NONE -// like a real RTOS, this function is a main loop invoking each task in application and never return -void os_none_start_scheduler(void) -{ - while (1) - { - tusb_task_runner(); - led_blinking_task(NULL); - - msc_app_task(NULL); - keyboard_app_task(NULL); - mouse_app_task(NULL); - cdc_serial_app_task(NULL); - } -} -#endif - -int main(void) -{ - board_init(); - print_greeting(); - - tusb_init(); - - //------------- application task init -------------// - led_blinking_init(); - - msc_app_init(); - keyboard_app_init(); - mouse_app_init(); - cdc_serial_app_init(); - - //------------- start OS scheduler (never return) -------------// -#if TUSB_CFG_OS == TUSB_OS_FREERTOS - vTaskStartScheduler(); -#elif TUSB_CFG_OS == TUSB_OS_NONE - os_none_start_scheduler(); -#else - #error need to start RTOS schduler -#endif - - return 0; -} - -//--------------------------------------------------------------------+ -// tinyusb callbacks -//--------------------------------------------------------------------+ -void tud_mount_cb(uint8_t coreid) -{ - cdc_serial_app_mount(coreid); - keyboard_app_mount(coreid); - msc_app_mount(coreid); -} - -void tud_umount_cb(uint8_t coreid) -{ - cdc_serial_app_umount(coreid); - keyboard_app_umount(coreid); - msc_app_umount(coreid); -} - -//--------------------------------------------------------------------+ -// HELPER FUNCTION -//--------------------------------------------------------------------+ -void print_greeting(void) -{ - char const * const rtos_name[] = - { - [TUSB_OS_NONE] = "None", - [TUSB_OS_FREERTOS] = "FreeRTOS", - }; - - printf("\n\ ---------------------------------------------------------------------\n\ -- Device Demo (a tinyusb example)\n\ -- if you find any bugs or get any questions, feel free to file an\n\ -- issue at https://github.com/hathach/tinyusb\n\ ---------------------------------------------------------------------\n\n" - ); - - puts("This DEVICE demo is configured to support:"); - printf(" - RTOS = %s\n", rtos_name[TUSB_CFG_OS]); - if (TUSB_CFG_DEVICE_HID_MOUSE ) puts(" - HID Mouse"); - if (TUSB_CFG_DEVICE_HID_KEYBOARD ) puts(" - HID Keyboard"); - if (TUSB_CFG_DEVICE_MSC ) puts(" - Mass Storage"); - if (TUSB_CFG_DEVICE_CDC ) puts(" - Communication Device Class"); -} diff --git a/examples/device/src/mouse_device_app.c b/examples/device/src/mouse_device_app.c deleted file mode 100644 index 055a7b699..000000000 --- a/examples/device/src/mouse_device_app.c +++ /dev/null @@ -1,158 +0,0 @@ - /**************************************************************************/ -/*! - @file mouse_device_app.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 "mouse_device_app.h" - -#if TUSB_CFG_DEVICE_HID_MOUSE -//--------------------------------------------------------------------+ -// INCLUDE -//--------------------------------------------------------------------+ -#include "app_os_prio.h" - -//--------------------------------------------------------------------+ -// MACRO CONSTANT TYPEDEF -//--------------------------------------------------------------------+ - -//--------------------------------------------------------------------+ -// INTERNAL OBJECT & FUNCTION DECLARATION -//--------------------------------------------------------------------+ -TUSB_CFG_ATTR_USBRAM hid_mouse_report_t mouse_report; - -//--------------------------------------------------------------------+ -// tinyusb callbacks -//--------------------------------------------------------------------+ -void mouse_app_mount(uint8_t coreid) -{ - -} - -void mouse_app_umount(uint8_t coreid) -{ - -} - -void tusbd_hid_mouse_cb(uint8_t coreid, tusb_event_t event, uint32_t xferred_bytes) -{ - switch(event) - { - case TUSB_EVENT_XFER_COMPLETE: - case TUSB_EVENT_XFER_ERROR: - case TUSB_EVENT_XFER_STALLED: - default: break; - } -} - -uint16_t tusbd_hid_mouse_get_report_cb(uint8_t coreid, hid_request_report_type_t report_type, void** pp_report, uint16_t requested_length) -{ - if ( report_type != HID_REQUEST_REPORT_INPUT ) return 0; // not support other report type for this mouse demo - - (*pp_report) = &mouse_report; - return requested_length; -} - -void tusbd_hid_mouse_set_report_cb(uint8_t coreid, hid_request_report_type_t report_type, uint8_t report_data[], uint16_t length) -{ - // mouse demo does not support set report --> do nothing -} - -//--------------------------------------------------------------------+ -// APPLICATION CODE -//--------------------------------------------------------------------+ -void mouse_app_init(void) -{ - osal_task_create(mouse_app_task, "mouse", 128, NULL, MOUSE_APP_TASK_PRIO); -} - -void mouse_app_subtask(void); - -void mouse_app_task(void * param) -{ - (void) para; - OSAL_TASK_BEGIN - mouse_app_subtask(); - OSAL_TASK_END -} - -void mouse_app_subtask(void) -{ - OSAL_SUBTASK_BEGIN - - osal_task_delay(20); - - if ( tusbd_is_configured(0) && !tusbd_hid_mouse_is_busy(0) ) - { - static uint8_t prev_mouse_buttons = 0; - - enum { - BUTTON_UP = 0, // map to button mask - BUTTON_DOWN = 1, - BUTTON_LEFT = 2, - BUTTON_RIGHT = 3, - BUTTON_CLICK_LEFT = 4, - BUTTON_CLICK_RIGHT = 5, - BUTTON_CLICK_MIDDLE = 6 - }; - - enum { MOUSE_RESOLUTION = 5 }; - - uint32_t button_mask = board_buttons(); - memclr_(&mouse_report, sizeof(hid_mouse_report_t)); - - if ( BIT_TEST_(button_mask, BUTTON_UP ) ) mouse_report.y = -MOUSE_RESOLUTION; - if ( BIT_TEST_(button_mask, BUTTON_DOWN ) ) mouse_report.y = MOUSE_RESOLUTION; - - if ( BIT_TEST_(button_mask, BUTTON_LEFT ) ) mouse_report.x = -MOUSE_RESOLUTION; - if ( BIT_TEST_(button_mask, BUTTON_RIGHT ) ) mouse_report.x = MOUSE_RESOLUTION; - - if ( BIT_TEST_(button_mask, BUTTON_CLICK_LEFT ) ) mouse_report.buttons |= MOUSE_BUTTON_LEFT; - if ( BIT_TEST_(button_mask, BUTTON_CLICK_RIGHT ) ) mouse_report.buttons |= MOUSE_BUTTON_RIGHT; - if ( BIT_TEST_(button_mask, BUTTON_CLICK_MIDDLE ) ) mouse_report.buttons |= MOUSE_BUTTON_MIDDLE; - - if ( ! (prev_mouse_buttons == mouse_report.buttons && mouse_report.y == 0 && mouse_report.x == 0 && mouse_report.wheel == 0) ) - { // send report if clicked buttons are changed or there is any movement x, y, wheel - prev_mouse_buttons = mouse_report.buttons; - - tusbd_hid_mouse_send(0, &mouse_report); - } - } - - OSAL_SUBTASK_END -} - -#endif - diff --git a/examples/device/src/mouse_device_app.h b/examples/device/src/mouse_device_app.h deleted file mode 100644 index 027f3afe2..000000000 --- a/examples/device/src/mouse_device_app.h +++ /dev/null @@ -1,78 +0,0 @@ -/**************************************************************************/ -/*! - @file mouse_device_app.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_MOUSED_DEVICE_APP_H_ -#define _TUSB_MOUSED_DEVICE_APP_H_ - -#include "bsp/board.h" -#include "tusb.h" - -#ifdef __cplusplus - extern "C" { -#endif - -#if TUSB_CFG_DEVICE_HID_MOUSE - -void mouse_app_init(void); -void mouse_app_task(void * param); -void mouse_app_mount(uint8_t coreid); -void mouse_app_umount(uint8_t coreid); - -#else - -#define mouse_app_init() -#define mouse_app_task(x) -#define mouse_app_mount(x) -#define mouse_app_umount(x) - -#endif - -#ifdef __cplusplus - } -#endif - -#endif /* _TUSB_MOUSED_DEVICE_APP_H_ */ - -/** @} */ diff --git a/examples/device/src/msc_device_app.c b/examples/device/src/msc_device_app.c deleted file mode 100644 index 240f8f4dc..000000000 --- a/examples/device/src/msc_device_app.c +++ /dev/null @@ -1,174 +0,0 @@ -/**************************************************************************/ -/*! - @file msc_device_app.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 "msc_device_app.h" - -#if TUSB_CFG_DEVICE_MSC -//--------------------------------------------------------------------+ -// INCLUDE -//--------------------------------------------------------------------+ -#include "app_os_prio.h" - -//--------------------------------------------------------------------+ -// MACRO CONSTANT TYPEDEF -//--------------------------------------------------------------------+ -static scsi_inquiry_data_t const mscd_inquiry_data = -{ - .is_removable = 1, - .version = 2, - .response_data_format = 2, - .vendor_id = "tinyusb", - .product_id = "MSC Example", - .product_revision = "0.01" -}; - -static scsi_read_capacity10_data_t const mscd_read_capacity10_data = -{ - .last_lba = ENDIAN_BE(DISK_BLOCK_NUM-1), // read capacity - .block_size = ENDIAN_BE(DISK_BLOCK_SIZE) -}; - -scsi_sense_fixed_data_t mscd_sense_data = -{ - .response_code = 0x70, - .sense_key = 0, // no errors - .additional_sense_len = sizeof(scsi_sense_fixed_data_t) - 8 -}; - -static scsi_read_format_capacity_data_t const mscd_format_capacity_data = -{ - .list_length = 8, - .block_num = ENDIAN_BE(DISK_BLOCK_NUM), // write capacity - .descriptor_type = 2, // TODO formatted media, refractor to const - .block_size_u16 = ENDIAN_BE16(DISK_BLOCK_SIZE) -}; - -static scsi_mode_parameters_t const msc_dev_mode_para = -{ - .mode_data_length = 3, - .medium_type = 0, - .device_specific_para = 0, - .block_descriptor_length = 0 -}; - -//--------------------------------------------------------------------+ -// tinyusb callbacks -//--------------------------------------------------------------------+ -void msc_app_mount(uint8_t coreid) -{ - -} - -void msc_app_umount(uint8_t coreid) -{ - -} - -msc_csw_status_t tud_msc_scsi_cb (uint8_t coreid, uint8_t lun, uint8_t scsi_cmd[16], void const ** pp_buffer, uint16_t* p_length) -{ - // read10 & write10 has their own callback and MUST not be handled here - switch (scsi_cmd[0]) - { - case SCSI_CMD_INQUIRY: - (*pp_buffer) = &mscd_inquiry_data; - (*p_length) = sizeof(scsi_inquiry_data_t); - break; - - case SCSI_CMD_READ_CAPACITY_10: - (*pp_buffer) = &mscd_read_capacity10_data; - (*p_length) = sizeof(scsi_read_capacity10_data_t); - break; - - case SCSI_CMD_REQUEST_SENSE: - (*pp_buffer) = &mscd_sense_data; - (*p_length) = sizeof(scsi_sense_fixed_data_t); - break; - - case SCSI_CMD_READ_FORMAT_CAPACITY: - (*pp_buffer) = &mscd_format_capacity_data; - (*p_length) = sizeof(scsi_read_format_capacity_data_t); - break; - - case SCSI_CMD_MODE_SENSE_6: - (*pp_buffer) = &msc_dev_mode_para; - (*p_length) = sizeof(msc_dev_mode_para); - break; - - case SCSI_CMD_TEST_UNIT_READY: - (*pp_buffer) = NULL; - (*p_length) = 0; - break; - - case SCSI_CMD_PREVENT_ALLOW_MEDIUM_REMOVAL: - (*pp_buffer) = NULL; - (*p_length) = 0; - break; - - default: return MSC_CSW_STATUS_FAILED; - } - - //------------- clear sense data if it is not request sense command -------------// - if ( SCSI_CMD_REQUEST_SENSE != scsi_cmd[0] ) - { - mscd_sense_data.sense_key = SCSI_SENSEKEY_NONE; - mscd_sense_data.additional_sense_code = 0; - mscd_sense_data.additional_sense_qualifier = 0; - } - - return MSC_CSW_STATUS_PASSED; -} - -//--------------------------------------------------------------------+ -// APPLICATION CODE -//--------------------------------------------------------------------+ -void msc_app_task(void* param) -{ // no need to implement the task yet - (void) param; - - OSAL_TASK_BEGIN - - OSAL_TASK_END -} - -void msc_app_init (void) -{ - -} - - -#endif diff --git a/examples/device/src/msc_device_app.h b/examples/device/src/msc_device_app.h deleted file mode 100644 index 47803b7d4..000000000 --- a/examples/device/src/msc_device_app.h +++ /dev/null @@ -1,95 +0,0 @@ -/**************************************************************************/ -/*! - @file msc_device_app.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 group_demo - * \defgroup Mass Storage Device App - * @{ */ - -#ifndef _TUSB_MSCD_DEVICE_APP_H_ -#define _TUSB_MSCD_DEVICE_APP_H_ - -#include "bsp/board.h" -#include "tusb.h" - -#ifdef __cplusplus - extern "C" { -#endif - -#if TUSB_CFG_DEVICE_MSC - -enum -{ - DISK_BLOCK_NUM = 16, // 8KB is the smallest size that windows allow to mount - DISK_BLOCK_SIZE = 512 -}; - -#define README_CONTENTS \ -"This is tinyusb's MassStorage Class demo.\r\n\r\n\ -If you find any bugs or get any questions, feel free to file an\r\n\ -issue at github.com/hathach/tinyusb" - -#if TUSB_CFG_MCU==MCU_LPC11UXX || TUSB_CFG_MCU==MCU_LPC13UXX - #define MSCD_APP_ROMDISK -#else // defaults is ram disk - #define MSCD_APP_RAMDISK -#endif - -void msc_app_init(void); -void msc_app_task(void* param); - -void msc_app_mount(uint8_t coreid); -void msc_app_umount(uint8_t coreid); - -extern scsi_sense_fixed_data_t mscd_sense_data; - -#else - -#define msc_app_init() -#define msc_app_task(x) -#define msc_app_mount(x) -#define msc_app_umount(x) - -#endif - -#ifdef __cplusplus - } -#endif - -#endif /* _TUSB_MSCD_DEVICE_APP_H_ */ - -/** @} */ diff --git a/examples/device/src/msc_device_ramdisk.c b/examples/device/src/msc_device_ramdisk.c deleted file mode 100644 index 37ea923b3..000000000 --- a/examples/device/src/msc_device_ramdisk.c +++ /dev/null @@ -1,236 +0,0 @@ -/**************************************************************************/ -/*! - @file msc_device_ramdisk.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 "msc_device_app.h" - -#if TUSB_CFG_DEVICE_MSC && defined (MSCD_APP_RAMDISK) - -//--------------------------------------------------------------------+ -// MACRO CONSTANT TYPEDEF -//--------------------------------------------------------------------+ - -//--------------------------------------------------------------------+ -// INTERNAL OBJECT & FUNCTION DECLARATION -//--------------------------------------------------------------------+ -TUSB_CFG_ATTR_USBRAM -uint8_t msc_device_ramdisk[DISK_BLOCK_NUM][DISK_BLOCK_SIZE] = -{ - //------------- Boot Sector -------------// - // byte_per_sector = DISK_BLOCK_SIZE; fat12_sector_num_16 = DISK_BLOCK_NUM; - // sector_per_cluster = 1; reserved_sectors = 1; - // fat_num = 1; fat12_root_entry_num = 16; - // sector_per_fat = 1; sector_per_track = 1; head_num = 1; hidden_sectors = 0; - // drive_number = 0x80; media_type = 0xf8; extended_boot_signature = 0x29; - // filesystem_type = "FAT12 "; volume_serial_number = 0x1234; volume_label = "tinyusb msc"; - [0] = - { - 0xEB, 0x3C, 0x90, 0x4D, 0x53, 0x44, 0x4F, 0x53, 0x35, 0x2E, 0x30, 0x00, 0x02, 0x01, 0x01, 0x00, - 0x01, 0x10, 0x00, 0x10, 0x00, 0xF8, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x29, 0x34, 0x12, 0x00, 0x00, 0x74, 0x69, 0x6E, 0x79, 0x75, - 0x73, 0x62, 0x20, 0x6D, 0x73, 0x63, 0x46, 0x41, 0x54, 0x31, 0x32, 0x20, 0x20, 0x20, 0x00, 0x00, - [510] = 0x55, [511] = 0xAA // FAT magic code - }, - - //------------- FAT12 Table -------------// - [1] = - { - 0xF8, 0xFF, 0xFF, 0xFF, 0x0F // // first 2 entries must be F8FF, third entry is cluster end of readme file - }, - - //------------- Root Directory -------------// - [2] = - { - // first entry is volume label - 0x54, 0x49, 0x4E, 0x59, 0x55, 0x53, 0x42, 0x20, 0x4D, 0x53, 0x43, 0x08, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4F, 0x6D, 0x65, 0x43, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - // second entry is readme file - 'R' , 'E' , 'A' , 'D' , 'M' , 'E' , ' ' , ' ' , 'T' , 'X' , 'T' , 0x20, 0x00, 0xC6, 0x52, 0x6D, - 0x65, 0x43, 0x65, 0x43, 0x00, 0x00, 0x88, 0x6D, 0x65, 0x43, 0x02, 0x00, - sizeof(README_CONTENTS)-1, 0x00, 0x00, 0x00 // readme's filesize (4 Bytes) - }, - - //------------- Readme Content -------------// - [3] = README_CONTENTS -}; - -//--------------------------------------------------------------------+ -// IMPLEMENTATION -//--------------------------------------------------------------------+ -uint16_t tud_msc_read10_cb (uint8_t coreid, uint8_t lun, void** pp_buffer, uint32_t lba, uint16_t block_count) -{ - (*pp_buffer) = msc_device_ramdisk[lba]; - - return min16_of(block_count, DISK_BLOCK_NUM); -} -uint16_t tud_msc_write10_cb(uint8_t coreid, uint8_t lun, void** pp_buffer, uint32_t lba, uint16_t block_count) -{ - (*pp_buffer) = msc_device_ramdisk[lba]; - - return min16_of(block_count, DISK_BLOCK_NUM); -} - -//--------------------------------------------------------------------+ -// HELPER -//--------------------------------------------------------------------+ - -#if 0 // no need to use fat12 helper -typedef ATTR_PACKED_STRUCT(struct) { - //------------- common -------------// - uint8_t jump_code[3] ; ///< Assembly instruction to jump to boot code. - uint8_t oem_name[8] ; ///< OEM Name in ASCII. - uint16_t byte_per_sector ; ///< Bytes per sector. Allowed values include 512, 1024, 2048, and 4096. - uint8_t sector_per_cluster ; ///< Sectors per cluster (data unit). Allowed values are powers of 2, but the cluster size must be 32KB or smaller. - uint16_t reserved_sectors ; ///< Size in sectors of the reserved area. - uint8_t fat_num ; ///< Number of FATs. Typically two for redundancy, but according to Microsoft it can be one for some small storage devices. - uint16_t fat12_root_entry_num ; ///< Maximum number of files in the root directory for FAT12 and FAT16. This is 0 for FAT32 and typically 512 for FAT16. - uint16_t fat12_sector_num_16 ; ///< 16-bit number of sectors in file system. If the number of sectors is larger than can be represented in this 2-byte value, a 4-byte value exists later in the data structure and this should be 0. - uint8_t media_type ; ///< 0xf8 should be used for fixed disks and 0xf0 for removable. - uint16_t sector_per_fat ; ///< 16-bit size in sectors of each FAT for FAT12 and FAT16. For FAT32, this field is 0. - uint16_t sector_per_track ; ///< Sectors per track of storage device. - uint16_t head_num ; ///< Number of heads in storage device. - uint32_t hidden_sectors ; ///< Number of sectors before the start of partition. - uint32_t sector_num_32 ; ///< 32-bit value of number of sectors in file system. Either this value or the 16-bit value above must be 0. - - //------------- FAT32 -------------// - uint8_t drive_number ; ///< Physical drive number (0x00 for (first) removable media, 0x80 for (first) fixed disk - uint8_t reserved ; - uint8_t extended_boot_signature ; ///< should be 0x29 - uint32_t volume_serial_number ; ///< Volume serial number, which some versions of Windows will calculate based on the creation date and time. - uint8_t volume_label[11] ; - uint8_t filesystem_type[8] ; ///< File system type label in ASCII, padded with blank (0x20). Standard values include "FAT," "FAT12," and "FAT16," but nothing is required. - uint8_t reserved2[448] ; - uint16_t fat_signature ; ///< Signature value (0xAA55). -}fat12_boot_sector_t; - -STATIC_ASSERT(sizeof(fat12_boot_sector_t) == 512, "size is not correct"); - -typedef ATTR_PACKED_STRUCT(struct) { - uint8_t name[11]; - - ATTR_PACKED_STRUCT(struct){ - uint8_t readonly : 1; - uint8_t hidden : 1; - uint8_t system : 1; - uint8_t volume_label : 1; - uint8_t directory : 1; - uint8_t archive : 1; - } attr; // Long File Name = 0x0f - - uint8_t reserved; - uint8_t created_time_tenths_of_seconds; - uint16_t created_time; - uint16_t created_date; - uint16_t accessed_date; - uint16_t cluster_high; - uint16_t written_time; - uint16_t written_date; - uint16_t cluster_low; - uint32_t file_size; -}fat_directory_t; - -STATIC_ASSERT(sizeof(fat_directory_t) == 32, "size is not correct"); - -void fat12_fs_init(uint8_t msc_device_ramdisk[DISK_BLOCK_NUM][DISK_BLOCK_SIZE]) -{ - uint8_t const readme_contents[] = -"This is tinyusb's MassStorage Class demo.\r\n\r\n\ -If you find any bugs or get any questions, feel free to file an\r\n\ -issue at https://github.com/hathach/tinyusb"; - - //------------- Boot Sector -------------// - fat12_boot_sector_t* p_boot_fat = (fat12_boot_sector_t* ) msc_device_ramdisk[0]; - memclr_(p_boot_fat, sizeof(fat12_boot_sector_t)); - - memcpy(p_boot_fat->jump_code, "\xEB\x3C\x90", 3); - memcpy(p_boot_fat->oem_name, "MSDOS5.0", 8); - p_boot_fat->byte_per_sector = DISK_BLOCK_SIZE; - p_boot_fat->sector_per_cluster = 1; - p_boot_fat->reserved_sectors = 1; - p_boot_fat->fat_num = 1; - p_boot_fat->fat12_root_entry_num = 16; - p_boot_fat->fat12_sector_num_16 = DISK_BLOCK_NUM; - p_boot_fat->media_type = 0xf8; // fixed disk - p_boot_fat->sector_per_fat = 1; - p_boot_fat->sector_per_track = 1; - p_boot_fat->head_num = 1; - p_boot_fat->hidden_sectors = 0; - - p_boot_fat->drive_number = 0x80; - p_boot_fat->extended_boot_signature = 0x29; - p_boot_fat->volume_serial_number = 0x1234; - memcpy(p_boot_fat->volume_label , "tinyusb msc", 11); - memcpy(p_boot_fat->filesystem_type, "FAT12 ", 8); - p_boot_fat->fat_signature = 0xAA55; - - //------------- FAT12 Table (first 2 entries are F8FF, third entry is cluster end of readme file-------------// - memcpy(msc_device_ramdisk[1], "\xF8\xFF\xFF\xFF\x0F", 5); - - //------------- Root Directory -------------// - fat_directory_t* p_entry = (fat_directory_t*) msc_device_ramdisk[2]; - - // first entry is volume label - (*p_entry) = (fat_directory_t) - { - .name = "TINYUSB MSC", - .attr.volume_label = 1, - }; - - p_entry += 1; // advance to second entry, second entry is readme file - (*p_entry) = (fat_directory_t) - { - .name = "README TXT", - - .created_time = 0x6D52, - .written_time = 0x6D52, - - .created_date = 0x4365, - .accessed_date = 0x4365, - .written_date = 0x4365, - - .cluster_high = 0, - .cluster_low = 2, - .file_size = sizeof(readme_contents)-1 // exculde NULL - }; // first entry is volume label - - //------------- Readme Content -------------// - memcpy(msc_device_ramdisk[3], readme_contents, sizeof(readme_contents)-1); - -} -#endif - -#endif diff --git a/examples/device/src/msc_device_romdisk.c b/examples/device/src/msc_device_romdisk.c deleted file mode 100644 index 536d22dc7..000000000 --- a/examples/device/src/msc_device_romdisk.c +++ /dev/null @@ -1,119 +0,0 @@ -/**************************************************************************/ -/*! - @file msc_device_romdisk.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 "msc_device_app.h" - -#if TUSB_CFG_DEVICE_MSC && defined (MSCD_APP_ROMDISK) - -//--------------------------------------------------------------------+ -// INCLUDE -//--------------------------------------------------------------------+ - -//--------------------------------------------------------------------+ -// MACRO CONSTANT TYPEDEF -//--------------------------------------------------------------------+ - -//--------------------------------------------------------------------+ -// INTERNAL OBJECT & FUNCTION DECLARATION -//--------------------------------------------------------------------+ -const uint8_t msc_device_app_rommdisk[DISK_BLOCK_NUM][DISK_BLOCK_SIZE] = -{ - //------------- Boot Sector -------------// - // byte_per_sector = DISK_BLOCK_SIZE; fat12_sector_num_16 = DISK_BLOCK_NUM; - // sector_per_cluster = 1; reserved_sectors = 1; - // fat_num = 1; fat12_root_entry_num = 16; - // sector_per_fat = 1; sector_per_track = 1; head_num = 1; hidden_sectors = 0; - // drive_number = 0x80; media_type = 0xf8; extended_boot_signature = 0x29; - // filesystem_type = "FAT12 "; volume_serial_number = 0x1234; volume_label = "tinyusb msc"; - [0] = - { - 0xEB, 0x3C, 0x90, 0x4D, 0x53, 0x44, 0x4F, 0x53, 0x35, 0x2E, 0x30, 0x00, 0x02, 0x01, 0x01, 0x00, - 0x01, 0x10, 0x00, 0x10, 0x00, 0xF8, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x29, 0x34, 0x12, 0x00, 0x00, 0x74, 0x69, 0x6E, 0x79, 0x75, - 0x73, 0x62, 0x20, 0x6D, 0x73, 0x63, 0x46, 0x41, 0x54, 0x31, 0x32, 0x20, 0x20, 0x20, 0x00, 0x00, - [510] = 0x55, [511] = 0xAA // FAT magic code - }, - - //------------- FAT12 Table -------------// - [1] = - { - 0xF8, 0xFF, 0xFF, 0xFF, 0x0F // first 2 entries must be F8FF, third entry is cluster end of readme file - }, - - //------------- Root Directory -------------// - [2] = - { - // first entry is volume label - 0x54, 0x49, 0x4E, 0x59, 0x55, 0x53, 0x42, 0x20, 0x4D, 0x53, 0x43, 0x08, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4F, 0x6D, 0x65, 0x43, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - // second entry is readme file - 0x52, 0x45, 0x41, 0x44, 0x4D, 0x45, 0x20, 0x20, 0x54, 0x58, 0x54, 0x20, 0x00, 0xC6, 0x52, 0x6D, - 0x65, 0x43, 0x65, 0x43, 0x00, 0x00, 0x88, 0x6D, 0x65, 0x43, 0x02, 0x00, - sizeof(README_CONTENTS)-1, 0x00, 0x00, 0x00 // readme's filesize - }, - - //------------- Readme Content -------------// - [3] = README_CONTENTS -}; - -TUSB_CFG_ATTR_USBRAM -static uint8_t sector_buffer[DISK_BLOCK_SIZE]; - -//--------------------------------------------------------------------+ -// IMPLEMENTATION -//--------------------------------------------------------------------+ -uint16_t tusbd_msc_read10_cb (uint8_t coreid, uint8_t lun, void** pp_buffer, uint32_t lba, uint16_t block_count) -{ - memcpy(sector_buffer, msc_device_app_rommdisk[lba], DISK_BLOCK_SIZE); - (*pp_buffer) = sector_buffer; - - return 1; -} - -// Stall write10 by return 0, as this is readonly disk -uint16_t tusbd_msc_write10_cb(uint8_t coreid, uint8_t lun, void** pp_buffer, uint32_t lba, uint16_t block_count) -{ - (*pp_buffer) = NULL; - - mscd_sense_data.sense_key = SCSI_SENSEKEY_DATA_PROTECT; // let host know that this is read-only disk - - return 0; -} - -#endif - diff --git a/examples/device/src/tusb_config.h b/examples/device/src/tusb_config.h deleted file mode 100644 index 70ed713db..000000000 --- a/examples/device/src/tusb_config.h +++ /dev/null @@ -1,119 +0,0 @@ -/**************************************************************************/ -/*! - @file tusb_config.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. -*/ -/**************************************************************************/ - -#ifndef _TUSB_TUSB_CONFIG_H_ -#define _TUSB_TUSB_CONFIG_H_ - -#ifdef __cplusplus - extern "C" { -#endif - -//--------------------------------------------------------------------+ -// CONTROLLER CONFIGURATION -//--------------------------------------------------------------------+ -//#define TUSB_CFG_MCU will be passed from IDE/command line for easy board/mcu switching - -#define TUSB_CFG_CONTROLLER_0_MODE (TUSB_MODE_DEVICE) -//#define TUSB_CFG_CONTROLLER_1_MODE (TUSB_MODE_DEVICE) - -//--------------------------------------------------------------------+ -// DEVICE CONFIGURATION -//--------------------------------------------------------------------+ -#define TUSB_CFG_DEVICE_CONTROL_ENDOINT_SIZE 64 - -//------------- CLASS -------------// -#define TUSB_CFG_DEVICE_HID_KEYBOARD 1 -#define TUSB_CFG_DEVICE_HID_MOUSE 0 -#define TUSB_CFG_DEVICE_HID_GENERIC 0 // not supported yet -#define TUSB_CFG_DEVICE_MSC 1 -#define TUSB_CFG_DEVICE_CDC 1 - -//--------------------------------------------------------------------+ -// COMMON CONFIGURATION -//--------------------------------------------------------------------+ -#define TUSB_CFG_DEBUG 2 - -//#define TUSB_CFG_OS TUSB_OS_NONE // be passed from IDE/command line for easy project switching -//#define TUSB_CFG_OS_TASK_PRIO 0 // be passed from IDE/command line for easy project switching -#define TUSB_CFG_TICKS_HZ 1000 - -//--------------------------------------------------------------------+ -// USB RAM PLACEMENT -//--------------------------------------------------------------------+ -#ifdef __CODE_RED // compiled with lpcxpresso - - #if (TUSB_CFG_MCU == MCU_LPC11UXX) || (TUSB_CFG_MCU == MCU_LPC13UXX) - #define TUSB_CFG_ATTR_USBRAM ATTR_SECTION(.data.$RAM2) ATTR_ALIGNED(64) // lp11u & lp13u requires data to be 64 byte aligned - #elif TUSB_CFG_MCU == MCU_LPC175X_6X - #define TUSB_CFG_ATTR_USBRAM // LPC17xx USB DMA can access all - #elif (TUSB_CFG_MCU == MCU_LPC43XX) - #define TUSB_CFG_ATTR_USBRAM ATTR_SECTION(.data.$RAM3) - #endif - -#elif defined __CC_ARM // Compiled with Keil armcc, USBRAM_SECTION is defined in scatter files - - #if (TUSB_CFG_MCU == MCU_LPC11UXX) || (TUSB_CFG_MCU == MCU_LPC13UXX) - #define TUSB_CFG_ATTR_USBRAM ATTR_SECTION(USBRAM_SECTION) ATTR_ALIGNED(64) // lp11u & lp13u requires data to be 64 byte aligned - #elif (TUSB_CFG_MCU == MCU_LPC175X_6X) - #define TUSB_CFG_ATTR_USBRAM // LPC17xx USB DMA can access all address - #elif (TUSB_CFG_MCU == MCU_LPC43XX) - #define TUSB_CFG_ATTR_USBRAM // Use keil tool configure to have AHB SRAM as default memory - #endif - -#elif defined __ICCARM__ // compiled with IAR - - #if (TUSB_CFG_MCU == MCU_LPC11UXX) || (TUSB_CFG_MCU == MCU_LPC13UXX) - #define TUSB_CFG_ATTR_USBRAM _Pragma("location=\"USB_PACKET_MEMORY\"") ATTR_ALIGNED(64) - #elif (TUSB_CFG_MCU == MCU_LPC175X_6X) - #define TUSB_CFG_ATTR_USBRAM - #elif (TUSB_CFG_MCU == MCU_LPC43XX) - #define TUSB_CFG_ATTR_USBRAM _Pragma("location=\".ahb_sram1\"") - #endif - -#else - - #error compiler not specified - -#endif - - -#ifdef __cplusplus - } -#endif - -#endif /* _TUSB_TUSB_CONFIG_H_ */ diff --git a/examples/device/src/tusb_descriptors.c b/examples/device/src/tusb_descriptors.c deleted file mode 100644 index 82d9d1fbe..000000000 --- a/examples/device/src/tusb_descriptors.c +++ /dev/null @@ -1,475 +0,0 @@ -/**************************************************************************/ -/*! - @file tusb_descriptors.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_descriptors.h" - -//--------------------------------------------------------------------+ -// Keyboard Report Descriptor -//--------------------------------------------------------------------+ -#if TUSB_CFG_DEVICE_HID_KEYBOARD -uint8_t const desc_keyboard_report[] = { - HID_USAGE_PAGE ( HID_USAGE_PAGE_DESKTOP ), - HID_USAGE ( HID_USAGE_DESKTOP_KEYBOARD ), - HID_COLLECTION ( HID_COLLECTION_APPLICATION ), - HID_USAGE_PAGE ( HID_USAGE_PAGE_KEYBOARD ), - HID_USAGE_MIN ( 224 ), - HID_USAGE_MAX ( 231 ), - HID_LOGICAL_MIN ( 0 ), - HID_LOGICAL_MAX ( 1 ), - - HID_REPORT_SIZE ( 1 ), - HID_REPORT_COUNT ( 8 ), /* 8 bits */ - HID_INPUT ( HID_DATA | HID_VARIABLE | HID_ABSOLUTE ), /* maskable modifier key */ - - HID_REPORT_SIZE ( 8 ), - HID_REPORT_COUNT ( 1 ), - HID_INPUT ( HID_CONSTANT ), /* reserved */ - - HID_USAGE_PAGE ( HID_USAGE_PAGE_LED ), - HID_USAGE_MIN ( 1 ), - HID_USAGE_MAX ( 5 ), - HID_REPORT_COUNT ( 5 ), - HID_REPORT_SIZE ( 1 ), - HID_OUTPUT ( HID_DATA | HID_VARIABLE | HID_ABSOLUTE ), /* 5-bit Led report */ - - HID_REPORT_SIZE ( 3 ), /* led padding */ - HID_REPORT_COUNT ( 1 ), - HID_OUTPUT ( HID_CONSTANT ), - - HID_USAGE_PAGE (HID_USAGE_PAGE_KEYBOARD), - HID_USAGE_MIN ( 0 ), - HID_USAGE_MAX ( 101 ), - HID_LOGICAL_MIN ( 0 ), - HID_LOGICAL_MAX ( 101 ), - - HID_REPORT_SIZE ( 8 ), - HID_REPORT_COUNT ( 6 ), - HID_INPUT ( HID_DATA | HID_ARRAY | HID_ABSOLUTE ), /* keycodes array 6 items */ - HID_COLLECTION_END -}; -#endif - -//--------------------------------------------------------------------+ -// Mouse Report Descriptor -//--------------------------------------------------------------------+ -#if TUSB_CFG_DEVICE_HID_MOUSE -uint8_t const desc_mouse_report[] = { - HID_USAGE_PAGE ( HID_USAGE_PAGE_DESKTOP ), - HID_USAGE ( HID_USAGE_DESKTOP_MOUSE ), - HID_COLLECTION ( HID_COLLECTION_APPLICATION ), - HID_USAGE (HID_USAGE_DESKTOP_POINTER), - - HID_COLLECTION ( HID_COLLECTION_PHYSICAL ), - HID_USAGE_PAGE ( HID_USAGE_PAGE_BUTTON ), - HID_USAGE_MIN ( 1 ), - HID_USAGE_MAX ( 3 ), - HID_LOGICAL_MIN ( 0 ), - HID_LOGICAL_MAX ( 1 ), - - HID_REPORT_SIZE ( 1 ), - HID_REPORT_COUNT ( 3 ), /* Left, Right and Middle mouse*/ - HID_INPUT ( HID_DATA | HID_VARIABLE | HID_ABSOLUTE ), - - HID_REPORT_SIZE ( 5 ), - HID_REPORT_COUNT ( 1 ), - HID_INPUT ( HID_CONSTANT ), /* 5 bit padding followed 3 bit buttons */ - - HID_USAGE_PAGE ( HID_USAGE_PAGE_DESKTOP ), - HID_USAGE ( HID_USAGE_DESKTOP_X ), - HID_USAGE ( HID_USAGE_DESKTOP_Y ), - HID_LOGICAL_MIN ( 0x81 ), /* -127 */ - HID_LOGICAL_MAX ( 0x7f ), /* 127 */ - - HID_REPORT_SIZE ( 8 ), - HID_REPORT_COUNT ( 2 ), /* X, Y position */ - HID_INPUT ( HID_DATA | HID_VARIABLE | HID_RELATIVE ), /* relative values */ - - HID_USAGE ( HID_USAGE_DESKTOP_WHEEL ), /* mouse scroll */ - HID_LOGICAL_MIN ( 0x81 ), /* -127 */ - HID_LOGICAL_MAX ( 0x7f ), /* 127 */ - HID_REPORT_COUNT( 1 ), - HID_REPORT_SIZE ( 8 ), /* 8-bit value */ - HID_INPUT ( HID_DATA | HID_VARIABLE | HID_RELATIVE ), /* relative values */ - - HID_COLLECTION_END, - - HID_COLLECTION_END -}; -#endif - -//--------------------------------------------------------------------+ -// USB DEVICE DESCRIPTOR -//--------------------------------------------------------------------+ -tusb_descriptor_device_t const desc_device = -{ - .bLength = sizeof(tusb_descriptor_device_t), - .bDescriptorType = TUSB_DESC_TYPE_DEVICE, - .bcdUSB = 0x0200, - #if TUSB_CFG_DEVICE_CDC - // Use Interface Association Descriptor (IAD) for CDC - // As required by USB Specs IAD's subclass must be common class (2) and protocol must be IAD (1) - .bDeviceClass = TUSB_CLASS_MISC, - .bDeviceSubClass = MISC_SUBCLASS_COMMON, - .bDeviceProtocol = MISC_PROTOCOL_IAD, - #else - .bDeviceClass = 0x00, - .bDeviceSubClass = 0x00, - .bDeviceProtocol = 0x00, - #endif - - .bMaxPacketSize0 = TUSB_CFG_DEVICE_CONTROL_ENDOINT_SIZE, - - .idVendor = CFG_VENDORID, - .idProduct = CFG_PRODUCTID, - .bcdDevice = 0x0100, - - .iManufacturer = 0x01, - .iProduct = 0x02, - .iSerialNumber = 0x03, - - .bNumConfigurations = 0x01 // TODO multiple configurations -}; - -//--------------------------------------------------------------------+ -// USB COFNIGURATION DESCRIPTOR -//--------------------------------------------------------------------+ -app_descriptor_configuration_t const desc_configuration = -{ - .configuration = - { - .bLength = sizeof(tusb_descriptor_configuration_t), - .bDescriptorType = TUSB_DESC_TYPE_CONFIGURATION, - - .wTotalLength = sizeof(app_descriptor_configuration_t), - .bNumInterfaces = TOTAL_INTEFACES, - - .bConfigurationValue = 1, - .iConfiguration = 0x00, - .bmAttributes = TUSB_DESC_CONFIG_ATT_BUS_POWER, - .bMaxPower = TUSB_DESC_CONFIG_POWER_MA(500) - }, - - #if TUSB_CFG_DEVICE_CDC - // IAD points to CDC Interfaces - .cdc_iad = - { - .bLength = sizeof(tusb_descriptor_interface_association_t), - .bDescriptorType = TUSB_DESC_TYPE_INTERFACE_ASSOCIATION, - - .bFirstInterface = INTERFACE_NO_CDC, - .bInterfaceCount = 2, - - .bFunctionClass = TUSB_CLASS_CDC, - .bFunctionSubClass = CDC_COMM_SUBCLASS_ABSTRACT_CONTROL_MODEL, - .bFunctionProtocol = CDC_COMM_PROTOCOL_ATCOMMAND, - .iFunction = 0 - }, - - //------------- CDC Communication Interface -------------// - .cdc_comm_interface = - { - .bLength = sizeof(tusb_descriptor_interface_t), - .bDescriptorType = TUSB_DESC_TYPE_INTERFACE, - .bInterfaceNumber = INTERFACE_NO_CDC, - .bAlternateSetting = 0, - .bNumEndpoints = 1, - .bInterfaceClass = TUSB_CLASS_CDC, - .bInterfaceSubClass = CDC_COMM_SUBCLASS_ABSTRACT_CONTROL_MODEL, - .bInterfaceProtocol = CDC_COMM_PROTOCOL_ATCOMMAND, - .iInterface = 0x00 - }, - - .cdc_header = - { - .bLength = sizeof(cdc_desc_func_header_t), - .bDescriptorType = TUSB_DESC_TYPE_INTERFACE_CLASS_SPECIFIC, - .bDescriptorSubType = CDC_FUNC_DESC_HEADER, - .bcdCDC = 0x0120 - }, - - .cdc_call = - { - .bLength = sizeof(cdc_desc_func_call_management_t), - .bDescriptorType = TUSB_DESC_TYPE_INTERFACE_CLASS_SPECIFIC, - .bDescriptorSubType = CDC_FUNC_DESC_CALL_MANAGEMENT, - .bmCapabilities = { 0 }, - .bDataInterface = INTERFACE_NO_CDC+1, - }, - - .cdc_acm = - { - .bLength = sizeof(cdc_desc_func_abstract_control_management_t), - .bDescriptorType = TUSB_DESC_TYPE_INTERFACE_CLASS_SPECIFIC, - .bDescriptorSubType = CDC_FUNC_DESC_ABSTRACT_CONTROL_MANAGEMENT, - .bmCapabilities = { // 0x02 - .support_line_request = 1, - } - }, - - .cdc_union = - { - .bLength = sizeof(cdc_desc_func_union_t), // plus number of - .bDescriptorType = TUSB_DESC_TYPE_INTERFACE_CLASS_SPECIFIC, - .bDescriptorSubType = CDC_FUNC_DESC_UNION, - .bControlInterface = INTERFACE_NO_CDC, - .bSubordinateInterface = INTERFACE_NO_CDC+1, - }, - - .cdc_endpoint_notification = - { - .bLength = sizeof(tusb_descriptor_endpoint_t), - .bDescriptorType = TUSB_DESC_TYPE_ENDPOINT, - .bEndpointAddress = CDC_EDPT_NOTIFICATION_ADDR, - .bmAttributes = { .xfer = TUSB_XFER_INTERRUPT }, - .wMaxPacketSize = { .size = 0x08 }, - .bInterval = 0x10 - }, - - //------------- CDC Data Interface -------------// - .cdc_data_interface = - { - .bLength = sizeof(tusb_descriptor_interface_t), - .bDescriptorType = TUSB_DESC_TYPE_INTERFACE, - .bInterfaceNumber = INTERFACE_NO_CDC+1, - .bAlternateSetting = 0x00, - .bNumEndpoints = 2, - .bInterfaceClass = TUSB_CLASS_CDC_DATA, - .bInterfaceSubClass = 0, - .bInterfaceProtocol = 0, - .iInterface = 0x04 - }, - - .cdc_endpoint_out = - { - .bLength = sizeof(tusb_descriptor_endpoint_t), - .bDescriptorType = TUSB_DESC_TYPE_ENDPOINT, - .bEndpointAddress = CDC_EDPT_DATA_OUT_ADDR, - .bmAttributes = { .xfer = TUSB_XFER_BULK }, - .wMaxPacketSize = { .size = CDC_EDPT_DATA_PACKETSIZE }, - .bInterval = 0 - }, - - .cdc_endpoint_in = - { - .bLength = sizeof(tusb_descriptor_endpoint_t), - .bDescriptorType = TUSB_DESC_TYPE_ENDPOINT, - .bEndpointAddress = CDC_EDPT_DATA_IN_ADDR, - .bmAttributes = { .xfer = TUSB_XFER_BULK }, - .wMaxPacketSize = { .size = CDC_EDPT_DATA_PACKETSIZE }, - .bInterval = 0 - }, - #endif - - //------------- HID Keyboard -------------// - #if TUSB_CFG_DEVICE_HID_KEYBOARD - .keyboard_interface = - { - .bLength = sizeof(tusb_descriptor_interface_t), - .bDescriptorType = TUSB_DESC_TYPE_INTERFACE, - .bInterfaceNumber = INTERFACE_NO_HID_KEYBOARD, - .bAlternateSetting = 0x00, - .bNumEndpoints = 1, - .bInterfaceClass = TUSB_CLASS_HID, - .bInterfaceSubClass = HID_SUBCLASS_BOOT, - .bInterfaceProtocol = HID_PROTOCOL_KEYBOARD, - .iInterface = 0x05 - }, - - .keyboard_hid = - { - .bLength = sizeof(tusb_hid_descriptor_hid_t), - .bDescriptorType = HID_DESC_TYPE_HID, - .bcdHID = 0x0111, - .bCountryCode = HID_Local_NotSupported, - .bNumDescriptors = 1, - .bReportType = HID_DESC_TYPE_REPORT, - .wReportLength = sizeof(desc_keyboard_report) - }, - - .keyboard_endpoint = - { - .bLength = sizeof(tusb_descriptor_endpoint_t), - .bDescriptorType = TUSB_DESC_TYPE_ENDPOINT, - .bEndpointAddress = HID_KEYBOARD_EDPT_ADDR, - .bmAttributes = { .xfer = TUSB_XFER_INTERRUPT }, - .wMaxPacketSize = { .size = HID_KEYBOARD_EDPT_PACKETSIZE }, - .bInterval = 0x0A - }, - #endif - - //------------- HID Mouse -------------// - #if TUSB_CFG_DEVICE_HID_MOUSE - .mouse_interface = - { - .bLength = sizeof(tusb_descriptor_interface_t), - .bDescriptorType = TUSB_DESC_TYPE_INTERFACE, - .bInterfaceNumber = INTERFACE_NO_HID_MOUSE, - .bAlternateSetting = 0x00, - .bNumEndpoints = 1, - .bInterfaceClass = TUSB_CLASS_HID, - .bInterfaceSubClass = HID_SUBCLASS_BOOT, - .bInterfaceProtocol = HID_PROTOCOL_MOUSE, - .iInterface = 0x06 - }, - - .mouse_hid = - { - .bLength = sizeof(tusb_hid_descriptor_hid_t), - .bDescriptorType = HID_DESC_TYPE_HID, - .bcdHID = 0x0111, - .bCountryCode = HID_Local_NotSupported, - .bNumDescriptors = 1, - .bReportType = HID_DESC_TYPE_REPORT, - .wReportLength = sizeof(desc_mouse_report) - }, - - .mouse_endpoint = - { - .bLength = sizeof(tusb_descriptor_endpoint_t), - .bDescriptorType = TUSB_DESC_TYPE_ENDPOINT, - .bEndpointAddress = HID_MOUSE_EDPT_ADDR, // TODO - .bmAttributes = { .xfer = TUSB_XFER_INTERRUPT }, - .wMaxPacketSize = { .size = HID_MOUSE_EDPT_PACKETSIZE }, - .bInterval = 0x0A - }, - #endif - - //------------- Mass Storage -------------// - #if TUSB_CFG_DEVICE_MSC - .msc_interface = - { - .bLength = sizeof(tusb_descriptor_interface_t), - .bDescriptorType = TUSB_DESC_TYPE_INTERFACE, - .bInterfaceNumber = INTERFACE_NO_MSC, - .bAlternateSetting = 0x00, - .bNumEndpoints = 2, - .bInterfaceClass = TUSB_CLASS_MSC, - .bInterfaceSubClass = MSC_SUBCLASS_SCSI, - .bInterfaceProtocol = MSC_PROTOCOL_BOT, - .iInterface = 0x07 - }, - - .msc_endpoint_in = - { - .bLength = sizeof(tusb_descriptor_endpoint_t), - .bDescriptorType = TUSB_DESC_TYPE_ENDPOINT, - .bEndpointAddress = MSC_EDPT_IN_ADDR, - .bmAttributes = { .xfer = TUSB_XFER_BULK }, - .wMaxPacketSize = { .size = MSC_EDPT_PACKETSIZE }, - .bInterval = 1 - }, - - .msc_endpoint_out = - { - .bLength = sizeof(tusb_descriptor_endpoint_t), - .bDescriptorType = TUSB_DESC_TYPE_ENDPOINT, - .bEndpointAddress = MSC_EDPT_OUT_ADDR, - .bmAttributes = { .xfer = TUSB_XFER_BULK }, - .wMaxPacketSize = { .size = MSC_EDPT_PACKETSIZE }, - .bInterval = 1 - }, - #endif -}; - -//--------------------------------------------------------------------+ -// STRING DESCRIPTORS -//--------------------------------------------------------------------+ -#define STRING_LEN_UNICODE(n) (2 + (2*(n))) // also includes 2 byte header -#define ENDIAN_BE16_FROM( high, low) ENDIAN_BE16(high << 8 | low) - -// array of pointer to string descriptors -uint16_t const * const string_descriptor_arr [] = -{ - [0] = (uint16_t []) { // supported language - ENDIAN_BE16_FROM( STRING_LEN_UNICODE(1), TUSB_DESC_TYPE_STRING ), - 0x0409 // English - }, - - [1] = (uint16_t []) { // manufacturer - ENDIAN_BE16_FROM( STRING_LEN_UNICODE(11), TUSB_DESC_TYPE_STRING), - 't', 'i', 'n', 'y', 'u', 's', 'b', '.', 'o', 'r', 'g' // len = 11 - }, - - [2] = (uint16_t []) { // product - ENDIAN_BE16_FROM( STRING_LEN_UNICODE(14), TUSB_DESC_TYPE_STRING), - 't', 'i', 'n', 'y', 'u', 's', 'b', ' ', 'd', 'e', 'v', 'i', 'c', 'e' // len = 14 - }, - - [3] = (uint16_t []) { // serials - ENDIAN_BE16_FROM( STRING_LEN_UNICODE(4), TUSB_DESC_TYPE_STRING), - '1', '2', '3', '4' // len = 4 - }, - - [4] = (uint16_t []) { // CDC Interface - ENDIAN_BE16_FROM( STRING_LEN_UNICODE(3), TUSB_DESC_TYPE_STRING), - 'c', 'd', 'c' // len = 3 - }, - - [5] = (uint16_t []) { // Keyboard Interface - ENDIAN_BE16_FROM( STRING_LEN_UNICODE(5), TUSB_DESC_TYPE_STRING), - 'm', 'o', 'u', 's', 'e' // len = 5 - }, - - [6] = (uint16_t []) { // Keyboard Interface - ENDIAN_BE16_FROM( STRING_LEN_UNICODE(8), TUSB_DESC_TYPE_STRING), - 'k', 'e', 'y', 'b', 'o', 'a', 'r', 'd' // len = 8 - }, - - [7] = (uint16_t []) { // MSC Interface - ENDIAN_BE16_FROM( STRING_LEN_UNICODE(3), TUSB_DESC_TYPE_STRING), - 'm', 's', 'c' // len = 3 - } -}; - -//--------------------------------------------------------------------+ -// TINYUSB Descriptors Pointer (this variable is required by the stack) -//--------------------------------------------------------------------+ -tusbd_descriptor_pointer_t tusbd_descriptor_pointers = -{ - .p_device = (uint8_t const * ) &desc_device, - .p_configuration = (uint8_t const * ) &desc_configuration, - .p_string_arr = (uint8_t const **) string_descriptor_arr, - - #if TUSB_CFG_DEVICE_HID_KEYBOARD - .p_hid_keyboard_report = (uint8_t const *) desc_keyboard_report, - #endif - - #if TUSB_CFG_DEVICE_HID_MOUSE - .p_hid_mouse_report = (uint8_t const *) desc_mouse_report, - #endif -}; diff --git a/examples/device/src/tusb_descriptors.h b/examples/device/src/tusb_descriptors.h deleted file mode 100644 index 322af0392..000000000 --- a/examples/device/src/tusb_descriptors.h +++ /dev/null @@ -1,178 +0,0 @@ -/**************************************************************************/ -/*! - @file tusb_descriptors.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. -*/ -/**************************************************************************/ - -#ifndef _TUSB_DESCRIPTORS_H_ -#define _TUSB_DESCRIPTORS_H_ - -#include "tusb.h" - -//--------------------------------------------------------------------+ -// Descriptors Value (calculated by enabled Classes) -//--------------------------------------------------------------------+ -#define CFG_VENDORID 0xCAFE -//#define CFG_PRODUCTID 0x4567 // use auto product id to prevent conflict with pc's driver - -// each combination of interfaces need to have a unique productid, as windows will bind & remember device driver after the first plug. -// Auto ProductID layout's Bitmap: (MSB) MassStorage | Generic | Mouse | Key | CDC (LSB) -#ifndef CFG_PRODUCTID - #define PRODUCTID_BITMAP(interface, n) ( (TUSB_CFG_DEVICE_##interface) << (n) ) - #define CFG_PRODUCTID (0x4000 | ( PRODUCTID_BITMAP(CDC, 0) | PRODUCTID_BITMAP(HID_KEYBOARD, 1) | \ - PRODUCTID_BITMAP(HID_MOUSE, 2) | PRODUCTID_BITMAP(HID_GENERIC, 3) | \ - PRODUCTID_BITMAP(MSC, 4) ) ) -#endif - -#define INTERFACE_NO_CDC 0 -#define INTERFACE_NO_HID_KEYBOARD (INTERFACE_NO_CDC + 2*(TUSB_CFG_DEVICE_CDC ? 1 : 0) ) -#define INTERFACE_NO_HID_MOUSE (INTERFACE_NO_HID_KEYBOARD + TUSB_CFG_DEVICE_HID_KEYBOARD ) -#define INTERFACE_NO_HID_GENERIC (INTERFACE_NO_HID_MOUSE + TUSB_CFG_DEVICE_HID_MOUSE ) -#define INTERFACE_NO_MSC (INTERFACE_NO_HID_GENERIC + TUSB_CFG_DEVICE_HID_GENERIC ) - -#define TOTAL_INTEFACES (2*TUSB_CFG_DEVICE_CDC + TUSB_CFG_DEVICE_HID_KEYBOARD + TUSB_CFG_DEVICE_HID_MOUSE + \ - TUSB_CFG_DEVICE_HID_GENERIC + TUSB_CFG_DEVICE_MSC) - -#if (TUSB_CFG_MCU == MCU_LPC11UXX || TUSB_CFG_MCU == MCU_LPC13UXX) && (TOTAL_INTEFACES > 4) - #error These MCUs do not have enough number of endpoints for the current configuration -#endif - -//--------------------------------------------------------------------+ -// Endpoints Address & Max Packet Size -//--------------------------------------------------------------------+ -#define EDPT_IN(x) (0x80 | (x)) -#define EDPT_OUT(x) (x) - -#if TUSB_CFG_MCU == MCU_LPC175X_6X // MCUs's endpoint number has a fixed type - - //------------- CDC -------------// - #define CDC_EDPT_NOTIFICATION_ADDR EDPT_IN (1) - #define CDC_EDPT_NOTIFICATION_PACKETSIZE 64 - - #define CDC_EDPT_DATA_OUT_ADDR EDPT_OUT(2) - #define CDC_EDPT_DATA_IN_ADDR EDPT_IN (2) - #define CDC_EDPT_DATA_PACKETSIZE 64 - - //------------- HID Keyboard -------------// - #define HID_KEYBOARD_EDPT_ADDR EDPT_IN (4) - #define HID_KEYBOARD_EDPT_PACKETSIZE 8 - - //------------- HID Mouse -------------// - #define HID_MOUSE_EDPT_ADDR EDPT_IN (7) - #define HID_MOUSE_EDPT_PACKETSIZE 8 - - //------------- HID Generic -------------// - - //------------- Mass Storage -------------// - #define MSC_EDPT_OUT_ADDR EDPT_OUT(5) - #define MSC_EDPT_IN_ADDR EDPT_IN (5) - -#else - - //------------- CDC -------------// - #define CDC_EDPT_NOTIFICATION_ADDR EDPT_IN (INTERFACE_NO_CDC+1) - #define CDC_EDPT_NOTIFICATION_PACKETSIZE 64 - - #define CDC_EDPT_DATA_OUT_ADDR EDPT_OUT(INTERFACE_NO_CDC+2) - #define CDC_EDPT_DATA_IN_ADDR EDPT_IN (INTERFACE_NO_CDC+2) - #define CDC_EDPT_DATA_PACKETSIZE 64 - - //------------- HID Keyboard -------------// - #define HID_KEYBOARD_EDPT_ADDR EDPT_IN (INTERFACE_NO_HID_KEYBOARD+1) - #define HID_KEYBOARD_EDPT_PACKETSIZE 8 - - //------------- HID Mouse -------------// - #define HID_MOUSE_EDPT_ADDR EDPT_IN (INTERFACE_NO_HID_MOUSE+1) - #define HID_MOUSE_EDPT_PACKETSIZE 8 - - //------------- HID Generic -------------// - - //------------- Mass Storage -------------// - #define MSC_EDPT_OUT_ADDR EDPT_OUT(INTERFACE_NO_MSC+1) - #define MSC_EDPT_IN_ADDR EDPT_IN (INTERFACE_NO_MSC+1) - -#endif - -#define MSC_EDPT_PACKETSIZE (TUSB_CFG_MCU == MCU_LPC43XX ? 512 : 64) - -//--------------------------------------------------------------------+ -// CONFIGURATION DESCRIPTOR -//--------------------------------------------------------------------+ -typedef struct ATTR_PACKED -{ - tusb_descriptor_configuration_t configuration; - - //------------- CDC -------------// -#if TUSB_CFG_DEVICE_CDC - tusb_descriptor_interface_association_t cdc_iad; - - //CDC Control Interface - tusb_descriptor_interface_t cdc_comm_interface; - cdc_desc_func_header_t cdc_header; - cdc_desc_func_call_management_t cdc_call; - cdc_desc_func_abstract_control_management_t cdc_acm; - cdc_desc_func_union_t cdc_union; - tusb_descriptor_endpoint_t cdc_endpoint_notification; - - //CDC Data Interface - tusb_descriptor_interface_t cdc_data_interface; - tusb_descriptor_endpoint_t cdc_endpoint_out; - tusb_descriptor_endpoint_t cdc_endpoint_in; -#endif - - //------------- HID Keyboard -------------// -#if TUSB_CFG_DEVICE_HID_KEYBOARD - tusb_descriptor_interface_t keyboard_interface; - tusb_hid_descriptor_hid_t keyboard_hid; - tusb_descriptor_endpoint_t keyboard_endpoint; -#endif - -//------------- HID Mouse -------------// -#if TUSB_CFG_DEVICE_HID_MOUSE - tusb_descriptor_interface_t mouse_interface; - tusb_hid_descriptor_hid_t mouse_hid; - tusb_descriptor_endpoint_t mouse_endpoint; -#endif - -//------------- Mass Storage -------------// -#if TUSB_CFG_DEVICE_MSC - tusb_descriptor_interface_t msc_interface; - tusb_descriptor_endpoint_t msc_endpoint_in; - tusb_descriptor_endpoint_t msc_endpoint_out; -#endif - -} app_descriptor_configuration_t; - -#endif |
