diff --git a/examples/obsolete/host/host_os_none/.cproject b/examples/obsolete/host/host_os_none/.cproject
deleted file mode 100644
index 8082dcfa..00000000
--- a/examples/obsolete/host/host_os_none/.cproject
+++ /dev/null
@@ -1,1039 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- <?xml version="1.0" encoding="UTF-8"?>
-<TargetConfig>
-<Properties property_0="None" property_2="LPC18x7_43x7_2x512_BootA.cfx" property_3="NXP" property_4="LPC4357" property_count="5" version="70200"/>
-<infoList vendor="NXP"><info chip="LPC4357" flash_driver="LPC18x7_43x7_2x512_BootA.cfx" match_id="0x0" name="LPC4357" resetscript="LPC18LPC43InternalFLASHBootResetscript.scp" stub="crt_emu_lpc18_43_nxp"><chip><name>LPC4357</name>
-<family>LPC43xx</family>
-<vendor>NXP (formerly Philips)</vendor>
-<reset board="None" core="Real" sys="Real"/>
-<clock changeable="TRUE" freq="20MHz" is_accurate="TRUE"/>
-<memory can_program="true" id="Flash" is_ro="true" type="Flash"/>
-<memory id="RAM" type="RAM"/>
-<memory id="Periph" is_volatile="true" type="Peripheral"/>
-<memoryInstance derived_from="Flash" id="MFlashA512" location="0x1a000000" size="0x80000"/>
-<memoryInstance derived_from="Flash" id="MFlashB512" location="0x1b000000" size="0x80000"/>
-<memoryInstance derived_from="RAM" id="RamLoc32" location="0x10000000" size="0x8000"/>
-<memoryInstance derived_from="RAM" id="RamLoc40" location="0x10080000" size="0xa000"/>
-<memoryInstance derived_from="RAM" id="RamAHB32" location="0x20000000" size="0x8000"/>
-<memoryInstance derived_from="RAM" id="RamAHB16" location="0x20008000" size="0x4000"/>
-<memoryInstance derived_from="RAM" id="RamAHB_ETB16" location="0x2000c000" size="0x4000"/>
-<prog_flash blocksz="0x2000" location="0x1a000000" maxprgbuff="0x400" progwithcode="TRUE" size="0x10000"/>
-<prog_flash blocksz="0x10000" location="0x1a010000" maxprgbuff="0x400" progwithcode="TRUE" size="0x70000"/>
-<prog_flash blocksz="0x2000" location="0x1b000000" maxprgbuff="0x400" progwithcode="TRUE" size="0x10000"/>
-<prog_flash blocksz="0x10000" location="0x1b010000" maxprgbuff="0x400" progwithcode="TRUE" size="0x70000"/>
-<peripheralInstance derived_from="V7M_MPU" id="MPU" location="0xe000ed90"/>
-<peripheralInstance derived_from="V7M_NVIC" id="NVIC" location="0xe000e000"/>
-<peripheralInstance derived_from="V7M_DCR" id="DCR" location="0xe000edf0"/>
-<peripheralInstance derived_from="V7M_ITM" id="ITM" location="0xe0000000"/>
-<peripheralInstance derived_from="SCT" id="SCT" location="0x40000000"/>
-<peripheralInstance derived_from="GPDMA" id="GPDMA" location="0x40002000"/>
-<peripheralInstance derived_from="SPIFI" id="SPIFI" location="0x40003000"/>
-<peripheralInstance derived_from="SDMMC" id="SDMMC" location="0x40004000"/>
-<peripheralInstance derived_from="EMC" id="EMC" location="0x40005000"/>
-<peripheralInstance derived_from="USB0" id="USB0" location="0x40006000"/>
-<peripheralInstance derived_from="USB1" id="USB1" location="0x40007000"/>
-<peripheralInstance derived_from="LCD" id="LCD" location="0x40008000"/>
-<peripheralInstance derived_from="EEPROM" id="EEPROM" location="0x4000e000"/>
-<peripheralInstance derived_from="ETHERNET" id="ETHERNET" location="0x40010000"/>
-<peripheralInstance derived_from="ATIMER" id="ATIMER" location="0x40040000"/>
-<peripheralInstance derived_from="REGFILE" id="REGFILE" location="0x40041000"/>
-<peripheralInstance derived_from="PMC" id="PMC" location="0x40042000"/>
-<peripheralInstance derived_from="CREG" id="CREG" location="0x40043000"/>
-<peripheralInstance derived_from="EVENTROUTER" id="EVENTROUTER" location="0x40044000"/>
-<peripheralInstance derived_from="RTC" id="RTC" location="0x40046000"/>
-<peripheralInstance derived_from="CGU" id="CGU" location="0x40050000"/>
-<peripheralInstance derived_from="CCU1" id="CCU1" location="0x40051000"/>
-<peripheralInstance derived_from="CCU2" id="CCU2" location="0x40052000"/>
-<peripheralInstance derived_from="RGU" id="RGU" location="0x40053000"/>
-<peripheralInstance derived_from="WWDT" id="WWDT" location="0x40080000"/>
-<peripheralInstance derived_from="USART0" id="USART0" location="0x40081000"/>
-<peripheralInstance derived_from="USART2" id="USART2" location="0x400c1000"/>
-<peripheralInstance derived_from="USART3" id="USART3" location="0x400c2000"/>
-<peripheralInstance derived_from="UART1" id="UART1" location="0x40082000"/>
-<peripheralInstance derived_from="SSP0" id="SSP0" location="0x40083000"/>
-<peripheralInstance derived_from="SSP1" id="SSP1" location="0x400c5000"/>
-<peripheralInstance derived_from="TIMER0" id="TIMER0" location="0x40084000"/>
-<peripheralInstance derived_from="TIMER1" id="TIMER1" location="0x40085000"/>
-<peripheralInstance derived_from="TIMER2" id="TIMER2" location="0x400c3000"/>
-<peripheralInstance derived_from="TIMER3" id="TIMER3" location="0x400c4000"/>
-<peripheralInstance derived_from="SCU" id="SCU" location="0x40086000"/>
-<peripheralInstance derived_from="GPIO-PIN-INT" id="GPIO-PIN-INT" location="0x40087000"/>
-<peripheralInstance derived_from="GPIO-GROUP-INT0" id="GPIO-GROUP-INT0" location="0x40088000"/>
-<peripheralInstance derived_from="GPIO-GROUP-INT1" id="GPIO-GROUP-INT1" location="0x40089000"/>
-<peripheralInstance derived_from="MCPWM" id="MCPWM" location="0x400a0000"/>
-<peripheralInstance derived_from="I2C0" id="I2C0" location="0x400a1000"/>
-<peripheralInstance derived_from="I2C1" id="I2C1" location="0x400e0000"/>
-<peripheralInstance derived_from="I2S0" id="I2S0" location="0x400a2000"/>
-<peripheralInstance derived_from="I2S1" id="I2S1" location="0x400a3000"/>
-<peripheralInstance derived_from="C-CAN1" id="C-CAN1" location="0x400a4000"/>
-<peripheralInstance derived_from="RITIMER" id="RITIMER" location="0x400c0000"/>
-<peripheralInstance derived_from="QEI" id="QEI" location="0x400c6000"/>
-<peripheralInstance derived_from="GIMA" id="GIMA" location="0x400c7000"/>
-<peripheralInstance derived_from="DAC" id="DAC" location="0x400e1000"/>
-<peripheralInstance derived_from="C-CAN0" id="C-CAN0" location="0x400e2000"/>
-<peripheralInstance derived_from="ADC0" id="ADC0" location="0x400e3000"/>
-<peripheralInstance derived_from="ADC1" id="ADC1" location="0x400e4000"/>
-<peripheralInstance derived_from="GPIO-PORT" id="GPIO-PORT" location="0x400f4000"/>
-<peripheralInstance derived_from="SPI" id="SPI" location="0x40100000"/>
-<peripheralInstance derived_from="SGPIO" id="SGPIO" location="0x40101000"/>
-</chip>
-<processor><name gcc_name="cortex-m4">Cortex-M4</name>
-<family>Cortex-M</family>
-</processor>
-<link href="nxp_lpc43xx_peripheral.xme" show="embed" type="simple"/>
-</info>
-</infoList>
-</TargetConfig>
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/examples/obsolete/host/host_os_none/.project b/examples/obsolete/host/host_os_none/.project
deleted file mode 100644
index c633d669..00000000
--- a/examples/obsolete/host/host_os_none/.project
+++ /dev/null
@@ -1,129 +0,0 @@
-
-
- host_os_none
-
-
-
-
-
- org.eclipse.cdt.managedbuilder.core.genmakebuilder
- clean,full,incremental,
-
-
- ?name?
-
-
-
- org.eclipse.cdt.make.core.append_environment
- true
-
-
- org.eclipse.cdt.make.core.autoBuildTarget
- all
-
-
- org.eclipse.cdt.make.core.buildArguments
-
-
-
- org.eclipse.cdt.make.core.buildCommand
- make
-
-
- org.eclipse.cdt.make.core.buildLocation
- ${workspace_loc:/host/Debug}
-
-
- org.eclipse.cdt.make.core.cleanBuildTarget
- clean
-
-
- org.eclipse.cdt.make.core.contents
- org.eclipse.cdt.make.core.activeConfigSettings
-
-
- org.eclipse.cdt.make.core.enableAutoBuild
- false
-
-
- org.eclipse.cdt.make.core.enableCleanBuild
- true
-
-
- org.eclipse.cdt.make.core.enableFullBuild
- true
-
-
- org.eclipse.cdt.make.core.fullBuildTarget
- all
-
-
- org.eclipse.cdt.make.core.stopOnError
- true
-
-
- org.eclipse.cdt.make.core.useDefaultBuildCmd
- true
-
-
-
-
- org.eclipse.cdt.managedbuilder.core.ScannerConfigBuilder
- full,incremental,
-
-
-
-
-
- org.eclipse.cdt.core.cnature
- org.eclipse.cdt.managedbuilder.core.managedBuildNature
- org.eclipse.cdt.managedbuilder.core.ScannerConfigNature
-
-
-
- boards
- 2
- PARENT-3-PROJECT_LOC/boards
-
-
- fatfs
- 2
- PARENT-3-PROJECT_LOC/vendor/fatfs
-
-
- mcu
- 2
- PARENT-3-PROJECT_LOC/mcu
-
-
- src
- 2
- PARENT-1-PROJECT_LOC/src
-
-
- tinyusb
- 2
- PARENT-3-PROJECT_LOC/tinyusb
-
-
-
-
- 1394685086167
- mcu
- 26
-
- org.eclipse.ui.ide.multiFilter
- 1.0-name-matches-false-false-iar
-
-
-
- 1394685086182
- mcu
- 26
-
- org.eclipse.ui.ide.multiFilter
- 1.0-name-matches-false-false-keil
-
-
-
-
diff --git a/examples/obsolete/host/src/app_os_prio.h b/examples/obsolete/host/src/app_os_prio.h
deleted file mode 100644
index a9e964a7..00000000
--- a/examples/obsolete/host/src/app_os_prio.h
+++ /dev/null
@@ -1,70 +0,0 @@
-/*
- * The MIT License (MIT)
- *
- * Copyright (c) 2019 Ha Thach (tinyusb.org)
- *
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to deal
- * in the Software without restriction, including without limitation the rights
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
- * THE SOFTWARE.
- *
- * This file is part of the TinyUSB stack.
- */
-
-/** \ingroup TBD
- * \defgroup TBD
- * \brief TBD
- *
- * @{
- */
-
-#ifndef _TUSB_APP_OS_PRIO_H_
-#define _TUSB_APP_OS_PRIO_H_
-
-
-#ifdef __cplusplus
- extern "C" {
-#endif
-
-#include "tusb.h"
-
-#if CFG_TUSB_OS == OPT_OS_NONE
- #define LOWER_PRIO(x) 0 // does not matter
-#elif CFG_TUSB_OS == OPT_OS_FREERTOS
- #define LOWER_PRIO(x) ((x)-1) // freeRTOS lower number --> lower priority
-#elif CFG_TUSB_OS == TUSB_OS_CMSIS_RTX
- #define LOWER_PRIO(x) ((x)-1) // CMSIS-RTOS lower number --> lower priority
-#else
- #error Priority is not configured for this RTOS
-#endif
-
-enum {
- STANDARD_APP_TASK_PRIO = LOWER_PRIO(CFG_TUD_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/obsolete/host/src/cdc_serial_host_app.c b/examples/obsolete/host/src/cdc_serial_host_app.c
deleted file mode 100644
index a70ac09b..00000000
--- a/examples/obsolete/host/src/cdc_serial_host_app.c
+++ /dev/null
@@ -1,157 +0,0 @@
-/*
- * The MIT License (MIT)
- *
- * Copyright (c) 2019 Ha Thach (tinyusb.org)
- *
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to deal
- * in the Software without restriction, including without limitation the rights
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
- * THE SOFTWARE.
- *
- * This file is part of the TinyUSB stack.
- */
-
-#include "cdc_serial_host_app.h"
-#include "app_os_prio.h"
-
-#if CFG_TUH_CDC
-
-#define QUEUE_SERIAL_DEPTH 100
-
-//--------------------------------------------------------------------+
-// MACRO CONSTANT TYPEDEF
-//--------------------------------------------------------------------+
-static osal_semaphore_t sem_hdl;
-
-enum { SERIAL_BUFFER_SIZE = 64 };
-CFG_TUSB_MEM_SECTION static uint8_t serial_in_buffer[SERIAL_BUFFER_SIZE];
-CFG_TUSB_MEM_SECTION static uint8_t serial_out_buffer[SERIAL_BUFFER_SIZE];
-
-static uint8_t received_bytes; // set by transfer complete callback
-
-//--------------------------------------------------------------------+
-// tinyusb callbacks
-//--------------------------------------------------------------------+
-void tuh_cdc_mounted_cb(uint8_t dev_addr)
-{ // application set-up
- printf("\na CDC device (address %d) is mounted\n", dev_addr);
-
- tu_memclr(serial_in_buffer, sizeof(serial_in_buffer));
- tu_memclr(serial_out_buffer, sizeof(serial_out_buffer));
- received_bytes = 0;
-
- osal_semaphore_reset(sem_hdl);
- tuh_cdc_receive(dev_addr, serial_in_buffer, SERIAL_BUFFER_SIZE, true); // schedule first transfer
-}
-
-void tuh_cdc_unmounted_cb(uint8_t dev_addr)
-{ // application tear-down
- printf("\na CDC device (address %d) is unmounted \n", dev_addr);
-}
-
-// invoked ISR context
-void tuh_cdc_xfer_isr(uint8_t dev_addr, xfer_result_t event, cdc_pipeid_t pipe_id, uint32_t xferred_bytes)
-{
- (void) dev_addr; // compiler warnings
-
- switch ( pipe_id )
- {
- case CDC_PIPE_DATA_IN:
- switch(event)
- {
- case XFER_RESULT_SUCCESS:
- received_bytes = xferred_bytes;
- osal_semaphore_post(sem_hdl); // notify main task
- break;
-
- case XFER_RESULT_FAILED:
- received_bytes = 0; // ignore
- tuh_cdc_receive(dev_addr, serial_in_buffer, SERIAL_BUFFER_SIZE, true); // waiting for next data
- break;
-
- case XFER_RESULT_STALLED:
- default :
- break;
- }
- break;
-
- case CDC_PIPE_DATA_OUT:
- case CDC_PIPE_NOTIFICATION:
- default:
- break;
- }
-}
-
-//--------------------------------------------------------------------+
-// APPLICATION
-//--------------------------------------------------------------------+
-void cdc_serial_host_app_init(void)
-{
- sem_hdl = osal_semaphore_create(1, 0);
- TU_ASSERT( sem_hdl, VOID_RETURN);
-
- TU_VERIFY( osal_task_create(cdc_serial_host_app_task, "cdc", 128, NULL, CDC_SERIAL_APP_TASK_PRIO), );
-}
-
-//------------- main task -------------//
-void cdc_serial_host_app_task( void* param )
-{
- (void) param;
-
- OSAL_TASK_BEGIN
-
- //------------- send characters got from uart terminal to the first CDC device -------------//
- for(uint8_t dev_addr=1; dev_addr <= CFG_TUSB_HOST_DEVICE_MAX; dev_addr++)
- {
- if ( tuh_cdc_serial_is_mounted(dev_addr) )
- {
- int ch_tx = getchar();
- if ( ch_tx > 0 )
- { // USB is much faster than serial, here we assume usb is always complete. There could be some characters missing though
- serial_out_buffer[0] = (uint8_t) ch_tx;
-
- if ( !tuh_cdc_is_busy(dev_addr, CDC_PIPE_DATA_OUT) )
- {
- tuh_cdc_send(dev_addr, serial_out_buffer, 1, false); // no need for callback on serial out pipe
- }
- }
- break; // demo app only communicate with the first CDC-capable device
- }
- }
-
- //------------- print out received characters -------------//
- tusb_error_t error;
- osal_semaphore_wait(sem_hdl, 100, &error); // waiting for incoming data
-
- if ( TUSB_ERROR_NONE == error)
- {
- for(uint8_t i=0; ikeycode[i] == keycode) return true;
- }
-
- return false;
-}
-
-static inline void process_kbd_report(hid_keyboard_report_t const *p_new_report)
-{
- static hid_keyboard_report_t prev_report = { 0, 0, {0} }; // previous report to check key released
-
- //------------- example code ignore control (non-printable) key affects -------------//
- for(uint8_t i=0; i<6; i++)
- {
- if ( p_new_report->keycode[i] )
- {
- if ( find_key_in_report(&prev_report, p_new_report->keycode[i]) )
- {
- // exist in previous report means the current key is holding
- }else
- {
- // not existed in previous report means the current key is pressed
- uint8_t ch = keycode_to_ascii(p_new_report->modifier, p_new_report->keycode[i]);
- putchar(ch);
- if ( ch == '\r' ) putchar('\n'); // added new line for enter key
- }
- }
- // TODO example skips key released
- }
-
- prev_report = *p_new_report;
-}
-
-static inline uint8_t keycode_to_ascii(uint8_t modifier, uint8_t keycode)
-{
- // TODO max of keycode_ascii_tbl
- return keycode > 128 ? 0 :
- hid_keycode_to_ascii_tbl [modifier & (KEYBOARD_MODIFIER_LEFTSHIFT | KEYBOARD_MODIFIER_RIGHTSHIFT) ? 1 : 0] [keycode];
-}
-
-#endif
diff --git a/examples/obsolete/host/src/keyboard_host_app.h b/examples/obsolete/host/src/keyboard_host_app.h
deleted file mode 100644
index 12d7fded..00000000
--- a/examples/obsolete/host/src/keyboard_host_app.h
+++ /dev/null
@@ -1,68 +0,0 @@
-/*
- * The MIT License (MIT)
- *
- * Copyright (c) 2019 Ha Thach (tinyusb.org)
- *
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to deal
- * in the Software without restriction, including without limitation the rights
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
- * THE SOFTWARE.
- *
- * This file is part of the TinyUSB stack.
- */
-
-/** \file
- * \brief TBD
- *
- * \note TBD
- */
-
-/** \ingroup TBD
- * \defgroup TBD
- * \brief TBD
- *
- * @{
- */
-
-#ifndef _TUSB_KEYBOARD_HOST_APP_H_
-#define _TUSB_KEYBOARD_HOST_APP_H_
-
-#include "board.h"
-#include "tusb.h"
-
-#ifdef __cplusplus
- extern "C" {
-#endif
-
-#if CFG_TUH_HID_KEYBOARD
-
-void keyboard_host_app_init(void);
-void keyboard_host_app_task(void* param);
-
-#else
-
-#define keyboard_host_app_init()
-#define keyboard_host_app_task(x)
-
-#endif
-
-#ifdef __cplusplus
- }
-#endif
-
-#endif /* _TUSB_KEYBOARD_HOST_APP_H_ */
-
-/** @} */
diff --git a/examples/obsolete/host/src/main.c b/examples/obsolete/host/src/main.c
deleted file mode 100644
index 59860b78..00000000
--- a/examples/obsolete/host/src/main.c
+++ /dev/null
@@ -1,131 +0,0 @@
-/*
- * The MIT License (MIT)
- *
- * Copyright (c) 2019 Ha Thach (tinyusb.org)
- *
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to deal
- * in the Software without restriction, including without limitation the rights
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
- * THE SOFTWARE.
- *
- * This file is part of the TinyUSB stack.
- */
-
-//--------------------------------------------------------------------+
-// INCLUDE
-//--------------------------------------------------------------------+
-#include
-#include
-#include
-
-#include "board.h"
-#include "tusb.h"
-
-#include "mouse_host_app.h"
-#include "keyboard_host_app.h"
-#include "msc_host_app.h"
-#include "cdc_serial_host_app.h"
-
-//--------------------------------------------------------------------+
-// MACRO CONSTANT TYPEDEF
-//--------------------------------------------------------------------+
-
-//--------------------------------------------------------------------+
-// INTERNAL OBJECT & FUNCTION DECLARATION
-//--------------------------------------------------------------------+
-void print_greeting(void);
-
-//--------------------------------------------------------------------+
-// IMPLEMENTATION
-//--------------------------------------------------------------------+
-
-#if CFG_TUSB_OS == OPT_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();
- led_blinking_task(NULL);
-
- keyboard_host_app_task(NULL);
- mouse_host_app_task(NULL);
- msc_host_app_task(NULL);
- cdc_serial_host_app_task(NULL);
- }
-}
-#endif
-
-int main(void)
-{
-#if CFG_TUSB_OS == TUSB_OS_CMSIS_RTX
- osKernelInitialize(); // CMSIS RTX requires kernel init before any other OS functions
-#endif
-
- board_init();
- print_greeting();
-
- tusb_init();
-
- //------------- application task init -------------//
- led_blinking_init();
-
- keyboard_host_app_init();
- mouse_host_app_init();
- msc_host_app_init();
- cdc_serial_host_app_init();
-
- //------------- start OS scheduler (never return) -------------//
-#if CFG_TUSB_OS == OPT_OS_FREERTOS
- vTaskStartScheduler();
-#elif CFG_TUSB_OS == OPT_OS_NONE
- os_none_start_scheduler();
-#elif CFG_TUSB_OS == TUSB_OS_CMSIS_RTX
- osKernelStart();
-#else
- #error need to start RTOS schduler
-#endif
-
- return 0;
-}
-
-//--------------------------------------------------------------------+
-// HELPER FUNCTION
-//--------------------------------------------------------------------+
-void print_greeting(void)
-{
- char const * const rtos_name[] =
- {
- [OPT_OS_NONE] = "None",
- [OPT_OS_FREERTOS] = "FreeRTOS",
- };
-
- puts("\n\
---------------------------------------------------------------------\n\
-- Host 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"
- );
-
- puts("This HOST demo is configured to support:");
- printf(" - RTOS = %s\n", rtos_name[CFG_TUSB_OS]);
- if (CFG_TUH_HUB ) puts(" - Hub (1 level only)");
- if (CFG_TUH_HID_MOUSE ) puts(" - HID Mouse");
- if (CFG_TUH_HID_KEYBOARD ) puts(" - HID Keyboard");
- if (CFG_TUH_MSC ) puts(" - Mass Storage");
- if (CFG_TUH_CDC ) puts(" - Communication Device Class");
-}
diff --git a/examples/obsolete/host/src/mouse_host_app.c b/examples/obsolete/host/src/mouse_host_app.c
deleted file mode 100644
index 6fd6bcdb..00000000
--- a/examples/obsolete/host/src/mouse_host_app.c
+++ /dev/null
@@ -1,169 +0,0 @@
-/*
- * The MIT License (MIT)
- *
- * Copyright (c) 2019 Ha Thach (tinyusb.org)
- *
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to deal
- * in the Software without restriction, including without limitation the rights
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
- * THE SOFTWARE.
- *
- * This file is part of the TinyUSB stack.
- */
-
-//--------------------------------------------------------------------+
-// INCLUDE
-//--------------------------------------------------------------------+
-#include "mouse_host_app.h"
-#include "app_os_prio.h"
-
-#if CFG_TUH_HID_MOUSE
-
-//--------------------------------------------------------------------+
-// MACRO CONSTANT TYPEDEF
-//--------------------------------------------------------------------+
-#define QUEUE_MOUSE_REPORT_DEPTH 4
-
-//--------------------------------------------------------------------+
-// INTERNAL OBJECT & FUNCTION DECLARATION
-//--------------------------------------------------------------------+
-static osal_queue_t queue_mouse_hdl;
-CFG_TUSB_MEM_SECTION static hid_mouse_report_t usb_mouse_report;
-
-static inline void process_mouse_report(hid_mouse_report_t const * p_report);
-
-//--------------------------------------------------------------------+
-// tinyusb callbacks
-//--------------------------------------------------------------------+
-void tuh_hid_mouse_mounted_cb(uint8_t dev_addr)
-{
- // application set-up
- printf("\na Mouse device (address %d) is mounted\n", dev_addr);
-
- osal_queue_flush(queue_mouse_hdl);
- (void) tuh_hid_mouse_get_report(dev_addr, (uint8_t*) &usb_mouse_report); // first report
-}
-
-void tuh_hid_mouse_unmounted_cb(uint8_t dev_addr)
-{
- // application tear-down
- printf("\na Mouse device (address %d) is unmounted\n", dev_addr);
-}
-
-// invoked ISR context
-void tuh_hid_mouse_isr(uint8_t dev_addr, xfer_result_t event)
-{
- switch(event)
- {
- case XFER_RESULT_SUCCESS:
- osal_queue_send(queue_mouse_hdl, &usb_mouse_report);
- (void) tuh_hid_mouse_get_report(dev_addr, (uint8_t*) &usb_mouse_report);
- break;
-
- case XFER_RESULT_FAILED:
- (void) tuh_hid_mouse_get_report(dev_addr, (uint8_t*) &usb_mouse_report); // ignore & continue
- break;
-
- default :
- break;
- }
-}
-
-//--------------------------------------------------------------------+
-// APPLICATION CODE
-// NOTICE: MOUSE REPORT IS NOT CORRECT UNTIL A DECENT HID PARSER IS
-// IMPLEMENTED, MEANWHILE IT CAN MISS DISPLAY BUTTONS OR X,Y etc
-//--------------------------------------------------------------------+
-void mouse_host_app_init(void)
-{
- tu_memclr(&usb_mouse_report, sizeof(hid_mouse_report_t));
-
- queue_mouse_hdl = osal_queue_create( QUEUE_MOUSE_REPORT_DEPTH, sizeof(hid_mouse_report_t) );
- TU_ASSERT( queue_mouse_hdl, VOID_RETURN);
-
- TU_VERIFY( osal_task_create(mouse_host_app_task, "mouse", 128, NULL, MOUSE_APP_TASK_PRIO), );
-}
-
-//------------- main task -------------//
-void mouse_host_app_task(void* param)
-{
- (void) param;
-
- OSAL_TASK_BEGIN
-
- tusb_error_t error;
- hid_mouse_report_t mouse_report;
-
- osal_queue_receive(queue_mouse_hdl, &mouse_report, OSAL_TIMEOUT_WAIT_FOREVER, &error);
- (void) error; // suppress compiler's warnings
-
- process_mouse_report(&mouse_report);
-
- OSAL_TASK_END
-}
-
-//--------------------------------------------------------------------+
-// HELPER
-//--------------------------------------------------------------------+
-void cursor_movement(int8_t x, int8_t y, int8_t wheel)
-{
- //------------- X -------------//
- if ( x < 0)
- {
- printf(ANSI_CURSOR_BACKWARD(%d), (-x)); // move left
- }else if ( x > 0)
- {
- printf(ANSI_CURSOR_FORWARD(%d), x); // move right
- }else { }
-
- //------------- Y -------------//
- if ( y < 0)
- {
- printf(ANSI_CURSOR_UP(%d), (-y)); // move up
- }else if ( y > 0)
- {
- printf(ANSI_CURSOR_DOWN(%d), y); // move down
- }else { }
-
- //------------- wheel -------------//
- if (wheel < 0)
- {
- printf(ANSI_SCROLL_UP(%d), (-wheel)); // scroll up
- }else if (wheel > 0)
- {
- printf(ANSI_SCROLL_DOWN(%d), wheel); // scroll down
- }else { }
-}
-
-static inline void process_mouse_report(hid_mouse_report_t const * p_report)
-{
- static hid_mouse_report_t prev_report = { 0, 0, 0, 0 };
-
- //------------- button state -------------//
- uint8_t button_changed_mask = p_report->buttons ^ prev_report.buttons;
- if ( button_changed_mask & p_report->buttons)
- {
- printf(" %c%c%c ",
- p_report->buttons & MOUSE_BUTTON_LEFT ? 'L' : '-',
- p_report->buttons & MOUSE_BUTTON_MIDDLE ? 'M' : '-',
- p_report->buttons & MOUSE_BUTTON_RIGHT ? 'R' : '-');
- }
-
- //------------- cursor movement -------------//
- cursor_movement(p_report->x, p_report->y, p_report->wheel);
-}
-
-#endif
diff --git a/examples/obsolete/host/src/mouse_host_app.h b/examples/obsolete/host/src/mouse_host_app.h
deleted file mode 100644
index 0193a914..00000000
--- a/examples/obsolete/host/src/mouse_host_app.h
+++ /dev/null
@@ -1,71 +0,0 @@
-/*
- * The MIT License (MIT)
- *
- * Copyright (c) 2019 Ha Thach (tinyusb.org)
- *
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to deal
- * in the Software without restriction, including without limitation the rights
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
- * THE SOFTWARE.
- *
- * This file is part of the TinyUSB stack.
- */
-
-/** \file
- * \brief TBD
- *
- * \note TBD
- */
-
-/** \ingroup TBD
- * \defgroup TBD
- * \brief TBD
- *
- * @{
- */
-
-#ifndef _TUSB_MOUSE_HOST_APP_H_
-#define _TUSB_MOUSE_HOST_APP_H_
-
-#include
-#include
-
-#include "board.h"
-#include "tusb.h"
-
-#ifdef __cplusplus
- extern "C" {
-#endif
-
-#if CFG_TUH_HID_MOUSE
-
-void mouse_host_app_init(void);
-void mouse_host_app_task(void* param);
-
-#else
-
-#define mouse_host_app_init()
-#define mouse_host_app_task(x)
-
-#endif
-
-#ifdef __cplusplus
- }
-#endif
-
-#endif /* _TUSB_MOUSE_HOST_APP_H_ */
-
-/** @} */
diff --git a/examples/obsolete/host/src/msc_cli.c b/examples/obsolete/host/src/msc_cli.c
deleted file mode 100644
index c15bcda3..00000000
--- a/examples/obsolete/host/src/msc_cli.c
+++ /dev/null
@@ -1,473 +0,0 @@
-/*
- * The MIT License (MIT)
- *
- * Copyright (c) 2019 Ha Thach (tinyusb.org)
- *
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to deal
- * in the Software without restriction, including without limitation the rights
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
- * THE SOFTWARE.
- *
- * This file is part of the TinyUSB stack.
- */
-
-#include "msc_cli.h"
-#include "ctype.h"
-
-#if CFG_TUH_MSC
-
-#include "ff.h"
-#include "diskio.h"
-
-//--------------------------------------------------------------------+
-// MACRO CONSTANT TYPEDEF
-//--------------------------------------------------------------------+
-#define CLI_MAX_BUFFER 256
-#define CLI_FILE_READ_BUFFER (4*1024)
-
-enum {
- ASCII_BACKSPACE = 8,
-};
-
-typedef enum
-{
- CLI_ERROR_NONE = 0,
- CLI_ERROR_INVALID_PARA,
- CLI_ERROR_INVALID_PATH,
- CLI_ERROR_FILE_EXISTED,
- CLI_ERROR_FAILED
-}cli_error_t;
-
-static char const * const cli_error_message[] =
-{
- [CLI_ERROR_NONE ] = 0,
- [CLI_ERROR_INVALID_PARA ] = "Invalid parameter(s)",
- [CLI_ERROR_INVALID_PATH ] = "No such file or directory",
- [CLI_ERROR_FILE_EXISTED ] = "file or directory already exists",
- [CLI_ERROR_FAILED ] = "failed to execute"
-};
-
-//--------------------------------------------------------------------+
-// CLI Database definition
-//--------------------------------------------------------------------+
-
-// command, function, description
-#define CLI_COMMAND_TABLE(ENTRY) \
- ENTRY(unknown , cli_cmd_unknown , NULL ) \
- ENTRY(help , cli_cmd_help , NULL ) \
- ENTRY(cls , cli_cmd_clear , "Clear the screen.\n cls\n" ) \
- ENTRY(ls , cli_cmd_list , "List information of the FILEs.\n ls\n" ) \
- ENTRY(cd , cli_cmd_changedir, "change the current directory.\n cd a_folder\n" ) \
- ENTRY(cat , cli_cmd_cat , "display contents of a file.\n cat a_file.txt\n" ) \
- ENTRY(cp , cli_cmd_copy , "Copies one or more files to another location.\n cp a_file.txt dir1/another_file.txt\n cp a_file.txt dir1\n" ) \
- ENTRY(mkdir , cli_cmd_mkdir , "Create a DIRECTORY, if it does not already exist.\n mkdir \n" ) \
- ENTRY(mv , cli_cmd_move , "Rename or move a DIRECTORY or a FILE.\n mv old_name.txt new_name.txt\n mv old_name.txt dir1/new_name.txt\n" ) \
- ENTRY(rm , cli_cmd_remove , "Remove (delete) an empty DIRECTORY or FILE.\n rm deleted_name.txt\n rm empty_dir\n" ) \
-
-//--------------------------------------------------------------------+
-// Expands the function to have the standard function signature
-//--------------------------------------------------------------------+
-#define CLI_PROTOTYPE_EXPAND(command, function, description) \
- cli_error_t function(char * p_para);
-
-CLI_COMMAND_TABLE(CLI_PROTOTYPE_EXPAND)
-
-//--------------------------------------------------------------------+
-// Expand to enum value
-//--------------------------------------------------------------------+
-#define CLI_ENUM_EXPAND(command, function, description) CLI_CMDTYPE_##command,
-typedef enum
-{
- CLI_COMMAND_TABLE(CLI_ENUM_EXPAND)
- CLI_CMDTYPE_COUNT
-}cli_cmdtype_t;
-
-//--------------------------------------------------------------------+
-// Expand to string table
-//--------------------------------------------------------------------+
-#define CLI_STRING_EXPAND(command, function, description) #command,
-char const* const cli_string_tbl[] =
-{
- CLI_COMMAND_TABLE(CLI_STRING_EXPAND)
-};
-
-//--------------------------------------------------------------------+
-// Expand to Description table
-//--------------------------------------------------------------------+
-#define CLI_DESCRIPTION_EXPAND(command, function, description) description,
-char const* const cli_description_tbl[] =
-{
- CLI_COMMAND_TABLE(CLI_DESCRIPTION_EXPAND)
-};
-
-
-//--------------------------------------------------------------------+
-// Expand to Command Lookup Table
-//--------------------------------------------------------------------+
-#define CMD_LOOKUP_EXPAND(command, function, description)\
- [CLI_CMDTYPE_##command] = function,\
-
-typedef cli_error_t (* const cli_cmdfunc_t)(char *);
-static cli_cmdfunc_t cli_command_tbl[] =
-{
- CLI_COMMAND_TABLE(CMD_LOOKUP_EXPAND)
-};
-
-//--------------------------------------------------------------------+
-// INTERNAL OBJECT & FUNCTION DECLARATION
-//--------------------------------------------------------------------+
-CFG_TUSB_MEM_SECTION uint8_t fileread_buffer[CLI_FILE_READ_BUFFER];
-static char cli_buffer[CLI_MAX_BUFFER];
-static char volume_label[20];
-
-static inline void drive_number2letter(char * p_path)
-{
- if (p_path[1] == ':')
- {
- p_path[0] = 'E' + p_path[0] - '0' ;
- }
-}
-
-static inline void drive_letter2number(char * p_path)
-{
- if (p_path[1] == ':')
- {
- p_path[0] = p_path[0] - 'E' + '0';
- }
-}
-
-
-//--------------------------------------------------------------------+
-// IMPLEMENTATION
-//--------------------------------------------------------------------+
-// NOTES: prompt re-use cli_buffer --> should not be called when cli_buffer has contents
-void cli_command_prompt(void)
-{
- f_getcwd(cli_buffer, CLI_MAX_BUFFER);
- drive_number2letter(cli_buffer);
- printf("\n%s %s\n$ ",
- (volume_label[0] !=0) ? volume_label : "No Label",
- cli_buffer);
-
- tu_memclr(cli_buffer, CLI_MAX_BUFFER);
-}
-
-void cli_init(void)
-{
- tu_memclr(cli_buffer, CLI_MAX_BUFFER);
- f_getlabel(NULL, volume_label, NULL);
- cli_command_prompt();
-}
-
-void cli_poll(char ch)
-{
- if ( isprint(ch) )
- { // accumulate & echo
- if (strlen(cli_buffer) < CLI_MAX_BUFFER)
- {
- cli_buffer[ strlen(cli_buffer) ] = ch;
- putchar(ch);
- }else
- {
- puts("cli buffer overflows");
- tu_memclr(cli_buffer, CLI_MAX_BUFFER);
- }
- }
- else if ( ch == ASCII_BACKSPACE && strlen(cli_buffer))
- {
- printf(ANSI_CURSOR_BACKWARD(1) ANSI_ERASE_LINE(0) ); // move cursor back & clear to the end of line
- cli_buffer[ strlen(cli_buffer)-1 ] = 0;
- }
- else if ( ch == '\r')
- { // execute command
- //------------- Separate Command & Parameter -------------//
- putchar('\n');
- char* p_space = strchr(cli_buffer, ' ');
- uint32_t command_len = (p_space == NULL) ? strlen(cli_buffer) : (uint32_t) (p_space - cli_buffer);
- char* p_para = (p_space == NULL) ? (cli_buffer+command_len) : (p_space+1); // point to NULL-character or after space
-
- //------------- Find entered command in lookup table & execute it -------------//
- uint8_t cmd_id;
- for(cmd_id = CLI_CMDTYPE_COUNT - 1; cmd_id > CLI_CMDTYPE_unknown; cmd_id--)
- {
- if( 0 == strncmp(cli_buffer, cli_string_tbl[cmd_id], command_len) ) break;
- }
-
- cli_error_t error = cli_command_tbl[cmd_id]( p_para ); // command execution, (unknown command if cannot find)
-
- if (CLI_ERROR_NONE != error) puts(cli_error_message[error]); // error message output if any
- cli_command_prompt(); // print out current path
- }
- else if (ch=='\t') // \t may be used for auto-complete later
- {
-
- }
-}
-
-//--------------------------------------------------------------------+
-// UNKNOWN Command
-//--------------------------------------------------------------------+
-cli_error_t cli_cmd_unknown(char * p_para)
-{
- (void) p_para;
- puts("unknown command, please type \"help\" for list of supported commands");
- return CLI_ERROR_NONE;
-}
-
-//--------------------------------------------------------------------+
-// HELP command
-//--------------------------------------------------------------------+
-cli_error_t cli_cmd_help(char * p_para)
-{
- (void) p_para;
-
- puts("current supported commands are:");
- for(uint8_t cmd_id = CLI_CMDTYPE_help+1; cmd_id < CLI_CMDTYPE_COUNT; cmd_id++)
- {
- printf("%s\t%s\n", cli_string_tbl[cmd_id], cli_description_tbl[cmd_id]);
- }
-
- return CLI_ERROR_NONE;
-}
-
-//--------------------------------------------------------------------+
-// Clear Screen Command
-//--------------------------------------------------------------------+
-cli_error_t cli_cmd_clear(char* p_para)
-{
- (void) p_para;
- printf(ANSI_ERASE_SCREEN(2) ANSI_CURSOR_POSITION(1,1) );
- return CLI_ERROR_NONE;
-}
-
-//--------------------------------------------------------------------+
-// LS Command
-//--------------------------------------------------------------------+
-cli_error_t cli_cmd_list(char * p_para)
-{
- if ( strlen(p_para) == 0 ) // list current directory
- {
- DIR target_dir;
- if ( FR_OK != f_opendir(&target_dir, ".") ) return CLI_ERROR_FAILED;
-
- TCHAR long_filename[_MAX_LFN];
- FILINFO dir_entry =
- {
- .lfname = long_filename,
- .lfsize = _MAX_LFN
- };
- while( (f_readdir(&target_dir, &dir_entry) == FR_OK) && dir_entry.fname[0] != 0)
- {
- if ( dir_entry.fname[0] != '.' ) // ignore . and .. entry
- {
- TCHAR const * const p_name = (dir_entry.lfname[0] != 0) ? dir_entry.lfname : dir_entry.fname;
- if ( dir_entry.fattrib & AM_DIR ) // directory
- {
- printf("/%s", p_name);
- }else
- {
- printf("%-40s%d KB", p_name, dir_entry.fsize / 1000);
- }
- putchar('\n');
- }
- }
-
-// (void) f_closedir(&target_dir);
- }
- else
- {
- puts("ls only supports list current directory only, try to cd to that folder first");
- return CLI_ERROR_INVALID_PARA;
- }
-
- return CLI_ERROR_NONE;
-}
-
-//--------------------------------------------------------------------+
-// CD Command
-//--------------------------------------------------------------------+
-cli_error_t cli_cmd_changedir(char * p_para)
-{
- if ( strlen(p_para) == 0 ) return CLI_ERROR_INVALID_PARA;
-
- drive_letter2number(p_para);
-
- if ( FR_OK != f_chdir(p_para) )
- {
- return CLI_ERROR_INVALID_PATH;
- }
-
- if ( p_para[1] == ':')
- { // path has drive letter --> change drive, update volume label
- f_chdrive(p_para[0] - '0');
- f_getlabel(NULL, volume_label, NULL);
- }
-
- return CLI_ERROR_NONE;
-}
-
-//--------------------------------------------------------------------+
-// CAT Command
-//--------------------------------------------------------------------+
-cli_error_t cli_cmd_cat(char *p_para)
-{
- if ( strlen(p_para) == 0 ) return CLI_ERROR_INVALID_PARA;
-
- FIL file;
-
- switch( f_open(&file, p_para, FA_READ) )
- {
- case FR_OK:
- {
- uint32_t bytes_read = 0;
-
- if ( (FR_OK == f_read(&file, fileread_buffer, CLI_FILE_READ_BUFFER, &bytes_read)) && (bytes_read > 0) )
- {
- if ( file.fsize < 0x80000 ) // ~ 500KB
- {
- putchar('\n');
- do {
- for(uint32_t i=0; i 0) );
- }else
- { // not display file contents if first character is not printable (high chance of binary file)
- printf("%s 's contents is too large\n", p_para);
- }
- }
- f_close(&file);
- }
- break;
-
- case FR_INVALID_NAME:
- return CLI_ERROR_INVALID_PATH;
-
- default :
- return CLI_ERROR_FAILED;
- }
-
- return CLI_ERROR_NONE;
-}
-
-//--------------------------------------------------------------------+
-// Make Directory command
-//--------------------------------------------------------------------+
-cli_error_t cli_cmd_mkdir(char *p_para)
-{
- if ( strlen(p_para) == 0 ) return CLI_ERROR_INVALID_PARA;
-
- return (f_mkdir(p_para) == FR_OK) ? CLI_ERROR_NONE : CLI_ERROR_FAILED;
-}
-
-//--------------------------------------------------------------------+
-// COPY command
-//--------------------------------------------------------------------+
-cli_error_t cli_cmd_copy(char *p_para)
-{
- char* p_space = strchr(p_para, ' ');
- if ( p_space == NULL ) return CLI_ERROR_INVALID_PARA;
- *p_space = 0; // replace space by NULL-character
-
- char* p_dest = p_space+1;
- if ( strlen(p_dest) == 0 ) return CLI_ERROR_INVALID_PARA;
-
- drive_letter2number(p_para);
- drive_letter2number(p_dest);
-
- //------------- Check Existence of source file -------------//
- FIL src_file;
- if ( FR_OK != f_open(&src_file , p_para, FA_READ) ) return CLI_ERROR_INVALID_PATH;
-
- //------------- Check if dest path is a folder or a non-existing file (overwritten is not allowed) -------------//
- FILINFO dest_entry;
- if ( (f_stat(p_dest, &dest_entry) == FR_OK) && (dest_entry.fattrib & AM_DIR) )
- { // the destination is an existed folder --> auto append dest filename to be the folder
- strcat(p_dest, "/");
- strcat(p_dest, p_para);
- }
-
- //------------- Open dest file and start the copy -------------//
- cli_error_t error = CLI_ERROR_NONE;
- FIL dest_file;
-
- switch ( f_open(&dest_file, p_dest, FA_WRITE | FA_CREATE_NEW) )
- {
- case FR_EXIST:
- error = CLI_ERROR_FILE_EXISTED;
- break;
-
- case FR_OK:
- while(1) // copying
- {
- uint32_t bytes_read = 0;
- uint32_t bytes_write = 0;
- FRESULT res;
-
- res = f_read(&src_file, fileread_buffer, CLI_FILE_READ_BUFFER, &bytes_read); /* Read a chunk of src file */
- if ( (res != FR_OK) || (bytes_read == 0) ) break; /* error or eof */
-
- res = f_write(&dest_file, fileread_buffer, bytes_read, &bytes_write); /* Write it to the dst file */
- if ( (res != FR_OK) || (bytes_write < bytes_read) ) break; /* error or disk full */
- }
-
- f_close(&dest_file);
- break;
-
- default:
- error = CLI_ERROR_FAILED;
- break;
- }
-
- f_close(&src_file);
-
- return error;
-}
-
-//--------------------------------------------------------------------+
-// MOVE/RENAME
-//--------------------------------------------------------------------+
-cli_error_t cli_cmd_move(char *p_para)
-{
- char* p_space = strchr(p_para, ' ');
- if ( p_space == NULL ) return CLI_ERROR_INVALID_PARA;
- *p_space = 0; // replace space by NULL-character
-
- char* p_dest = p_space+1;
- if ( strlen(p_dest) == 0 ) return CLI_ERROR_INVALID_PARA;
-
- return (f_rename(p_para, p_dest) == FR_OK ) ? CLI_ERROR_NONE : CLI_ERROR_FAILED;
-}
-
-//--------------------------------------------------------------------+
-// REMOVE
-//--------------------------------------------------------------------+
-cli_error_t cli_cmd_remove(char *p_para)
-{
- if ( strlen(p_para) == 0 ) return CLI_ERROR_INVALID_PARA;
-
- switch( f_unlink(p_para) )
- {
- case FR_OK: return CLI_ERROR_NONE;
-
- case FR_DENIED:
- printf("cannot remove readonly file/foler or non-empty folder\n");
- break;
-
- default: break;
- }
-
- return CLI_ERROR_FAILED;
-}
-#endif
diff --git a/examples/obsolete/host/src/msc_cli.h b/examples/obsolete/host/src/msc_cli.h
deleted file mode 100644
index de90bebd..00000000
--- a/examples/obsolete/host/src/msc_cli.h
+++ /dev/null
@@ -1,52 +0,0 @@
-/*
- * The MIT License (MIT)
- *
- * Copyright (c) 2019 Ha Thach (tinyusb.org)
- *
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to deal
- * in the Software without restriction, including without limitation the rights
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
- * THE SOFTWARE.
- *
- * This file is part of the TinyUSB stack.
- */
-#ifndef _TUSB_MSC_CLI_H_
-#define _TUSB_MSC_CLI_H_
-
-#include "board.h"
-#include "tusb.h"
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-
-//--------------------------------------------------------------------+
-// PUBLIC API
-//--------------------------------------------------------------------+
-void cli_init(void);
-void cli_poll(char ch);
-
-//--------------------------------------------------------------------+
-// Callback API
-//--------------------------------------------------------------------+
-
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif // _TUSB_CLI_H_
diff --git a/examples/obsolete/host/src/msc_host_app.c b/examples/obsolete/host/src/msc_host_app.c
deleted file mode 100644
index 5399e662..00000000
--- a/examples/obsolete/host/src/msc_host_app.c
+++ /dev/null
@@ -1,170 +0,0 @@
-/*
- * The MIT License (MIT)
- *
- * Copyright (c) 2019 Ha Thach (tinyusb.org)
- *
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to deal
- * in the Software without restriction, including without limitation the rights
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
- * THE SOFTWARE.
- *
- * This file is part of the TinyUSB stack.
- */
-
-//--------------------------------------------------------------------+
-// INCLUDE
-//--------------------------------------------------------------------+
-#include "msc_host_app.h"
-#include "app_os_prio.h"
-
-#if CFG_TUH_MSC
-
-#include "msc_cli.h"
-#include "ff.h"
-#include "diskio.h"
-
-//--------------------------------------------------------------------+
-// MACRO CONSTANT TYPEDEF
-//--------------------------------------------------------------------+
-
-//--------------------------------------------------------------------+
-// INTERNAL OBJECT & FUNCTION DECLARATION
-//--------------------------------------------------------------------+
-CFG_TUSB_MEM_SECTION static FATFS fatfs[CFG_TUSB_HOST_DEVICE_MAX];
-
-//--------------------------------------------------------------------+
-// tinyusb callbacks
-//--------------------------------------------------------------------+
-void tuh_msc_mount_cb(uint8_t dev_addr)
-{
- puts("\na MassStorage device is mounted");
-
- //------------- Disk Information -------------//
- // SCSI VendorID[8] & ProductID[16] from Inquiry Command
- uint8_t const* p_vendor = tuh_msc_get_vendor_name(dev_addr);
- uint8_t const* p_product = tuh_msc_get_product_name(dev_addr);
-
- for(uint8_t i=0; i<8; i++) putchar(p_vendor[i]);
-
- putchar(' ');
- for(uint8_t i=0; i<16; i++) putchar(p_product[i]);
- putchar('\n');
-
- uint32_t last_lba, block_size;
- tuh_msc_read_capacity(dev_addr, &last_lba, &block_size);
- printf("Disk Size: %d MB\n", (last_lba+1)/ ((1024*1024)/block_size) );
- printf("LBA 0-0x%X Block Size: %d\n", last_lba, block_size);
-
- //------------- file system (only 1 LUN support) -------------//
- uint8_t phy_disk = dev_addr-1;
- disk_initialize(phy_disk);
-
- if ( disk_is_ready(phy_disk) )
- {
- if ( f_mount(phy_disk, &fatfs[phy_disk]) != FR_OK )
- {
- puts("mount failed");
- return;
- }
-
- puts("---------------------------------------------------------------------");
- puts("- MASSSTORAGE CLASS CLI IS A IMMATURE CODE. DISK-WRITING COMMANDS");
- puts("- SUCH AS cp(COPY), mkdir(MAKE DIRECTORY) ARE POTENTIAL TO DAMAGE");
- puts("- YOUR USB THUMBDRIVE. USING THOSE COMMANDS ARE AT YOUR OWN RISK.");
- puts("- THE AUTHOR HAS NO RESPONSIBILITY WITH YOUR DEVICE NOR ITS DATA");
- puts("---------------------------------------------------------------------");
-
- f_chdrive(phy_disk); // change to newly mounted drive
- f_chdir("/"); // root as current dir
-
- cli_init();
- }
-}
-
-void tuh_msc_unmount_cb(uint8_t dev_addr)
-{
- puts("\na MassStorage device is unmounted");
-
- uint8_t phy_disk = dev_addr-1;
-
- f_mount(phy_disk, NULL); // unmount disk
- disk_deinitialize(phy_disk);
-
- if ( phy_disk == f_get_current_drive() )
- { // active drive is unplugged --> change to other drive
- for(uint8_t i=0; i 0 )
- {
- cli_poll( (char) ch);
- }
- }
-
- OSAL_TASK_END
-}
-
-#endif
diff --git a/examples/obsolete/host/src/msc_host_app.h b/examples/obsolete/host/src/msc_host_app.h
deleted file mode 100644
index 7a160e07..00000000
--- a/examples/obsolete/host/src/msc_host_app.h
+++ /dev/null
@@ -1,63 +0,0 @@
-/*
- * The MIT License (MIT)
- *
- * Copyright (c) 2019 Ha Thach (tinyusb.org)
- *
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to deal
- * in the Software without restriction, including without limitation the rights
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
- * THE SOFTWARE.
- *
- * This file is part of the TinyUSB stack.
- */
-
-/** \ingroup TBD
- * \defgroup TBD
- * \brief TBD
- *
- * @{
- */
-
-#ifndef _TUSB_MSC_HOST_APP_H_
-#define _TUSB_MSC_HOST_APP_H_
-
-#include "board.h"
-#include "tusb.h"
-
-
-#ifdef __cplusplus
- extern "C" {
-#endif
-
-#if CFG_TUH_MSC
-
-void msc_host_app_init(void);
-void msc_host_app_task(void* param);
-
-#else
-
-#define msc_host_app_init()
-#define msc_host_app_task(x)
-
-#endif
-
-#ifdef __cplusplus
- }
-#endif
-
-#endif /* _TUSB_MSC_HOST_APP_H_ */
-
-/** @} */
diff --git a/examples/obsolete/host/src/rndis_host_app.c b/examples/obsolete/host/src/rndis_host_app.c
deleted file mode 100644
index 66da33d0..00000000
--- a/examples/obsolete/host/src/rndis_host_app.c
+++ /dev/null
@@ -1,64 +0,0 @@
-/*
- * The MIT License (MIT)
- *
- * Copyright (c) 2019 Ha Thach (tinyusb.org)
- *
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to deal
- * in the Software without restriction, including without limitation the rights
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
- * THE SOFTWARE.
- *
- * This file is part of the TinyUSB stack.
- */
-
-#include "rndis_host_app.h"
-#include "app_os_prio.h"
-
-#if CFG_TUH_CDC && CFG_TUH_CDC_RNDIS
-
-//--------------------------------------------------------------------+
-// MACRO CONSTANT TYPEDEF
-//--------------------------------------------------------------------+
-void tusbh_cdc_rndis_mounted_cb(uint8_t dev_addr)
-{ // application set-up
- uint8_t mac_address[6];
-
- printf("\nan RNDIS device is mounted\n");
- tusbh_cdc_rndis_get_mac_addr(dev_addr, mac_address);
-
- printf("MAC Address ");
- for(uint8_t i=0; i<6; i++) printf("%X ", mac_address[i]);
- printf("\n");
-}
-
-void tusbh_cdc_rndis_unmounted_cb(uint8_t dev_addr)
-{
- // application tear-down
- printf("\nan RNDIS device is unmounted\n");
-}
-
-void rndis_host_app_init(void)
-{
-
-}
-
-void rndis_host_app_task(void* param)
-{
- OSAL_TASK_BEGIN
- OSAL_TASK_END
-}
-
-#endif
diff --git a/examples/obsolete/host/src/rndis_host_app.h b/examples/obsolete/host/src/rndis_host_app.h
deleted file mode 100644
index 97ff6e27..00000000
--- a/examples/obsolete/host/src/rndis_host_app.h
+++ /dev/null
@@ -1,63 +0,0 @@
-/*
- * The MIT License (MIT)
- *
- * Copyright (c) 2019 Ha Thach (tinyusb.org)
- *
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to deal
- * in the Software without restriction, including without limitation the rights
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
- * THE SOFTWARE.
- *
- * This file is part of the TinyUSB stack.
- */
-
-/** \ingroup TBD
- * \defgroup TBD
- * \brief TBD
- *
- * @{
- */
-
-#ifndef _TUSB_RNDIS_HOST_APP_H_
-#define _TUSB_RNDIS_HOST_APP_H_
-
-#include "board.h"
-#include "tusb.h"
-
-#ifdef __cplusplus
- extern "C" {
-#endif
-
-#if CFG_TUH_CDC && CFG_TUH_CDC_RNDIS
-
-void rndis_host_app_init(void);
-void rndis_host_app_task(void* param);
-
-#else
-
-#define rndis_host_app_init()
-#define rndis_host_app_task(x)
-
-#endif
-
-
-#ifdef __cplusplus
- }
-#endif
-
-#endif /* _TUSB_RNDIS_HOST_APP_H_ */
-
-/** @} */
diff --git a/examples/obsolete/host/src/tusb_config.h b/examples/obsolete/host/src/tusb_config.h
deleted file mode 100644
index a025e909..00000000
--- a/examples/obsolete/host/src/tusb_config.h
+++ /dev/null
@@ -1,101 +0,0 @@
-/*
- * The MIT License (MIT)
- *
- * Copyright (c) 2019 Ha Thach (tinyusb.org)
- *
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to deal
- * in the Software without restriction, including without limitation the rights
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
- * THE SOFTWARE.
- *
- * This file is part of the TinyUSB stack.
- */
-
-#ifndef _TUSB_CONFIG_H_
-#define _TUSB_CONFIG_H_
-
-#ifdef __cplusplus
- extern "C" {
-#endif
-
-//--------------------------------------------------------------------+
-// CONTROLLER CONFIGURATION
-//--------------------------------------------------------------------+
-//#define CFG_TUSB_MCU will be passed from IDE for easy board/mcu switching
-#define CFG_TUSB_RHPORT0_MODE (OPT_MODE_HOST)
-
-//--------------------------------------------------------------------+
-// HOST CONFIGURATION
-//--------------------------------------------------------------------+
-
-//------------- CLASS -------------//
-#define CFG_TUH_HUB 1
-#define CFG_TUH_HID_KEYBOARD 1
-#define CFG_TUH_HID_MOUSE 1
-#define CFG_TUSB_HOST_HID_GENERIC 0 // (not yet supported)
-#define CFG_TUH_MSC 1
-#define CFG_TUH_CDC 1
-
-#define CFG_TUSB_HOST_DEVICE_MAX (CFG_TUH_HUB ? 5 : 1) // normal hub has 4 ports
-
-//--------------------------------------------------------------------+
-// COMMON CONFIGURATION
-//--------------------------------------------------------------------+
-#define CFG_TUSB_DEBUG 1
-
-//#define CFG_TUSB_OS OPT_OS_NONE // defined using eclipse build
-//#define CFG_TUD_TASK_PRIO 0 // defined using eclipse build
-
-//--------------------------------------------------------------------+
-// USB RAM PLACEMENT
-//--------------------------------------------------------------------+
-#ifdef __CODE_RED // make use of code red's support for ram region macros
-
- #if CFG_TUSB_MCU == OPT_MCU_LPC175X_6X
- #define CFG_TUSB_MEM_SECTION // LPC17xx USB DMA can access all address
- #elif (CFG_TUSB_MCU == OPT_MCU_LPC43XX)
- #define CFG_TUSB_MEM_SECTION TU_ATTR_SECTION(.data.$RAM3)
- #endif
-
-#elif defined __CC_ARM // Compiled with Keil armcc
-
- #if (CFG_TUSB_MCU == OPT_MCU_LPC175X_6X)
- #define CFG_TUSB_MEM_SECTION // LPC17xx USB DMA can access all address
- #elif (CFG_TUSB_MCU == OPT_MCU_LPC43XX)
- #define CFG_TUSB_MEM_SECTION // Use keil tool configure to have AHB SRAM as default memory
- #endif
-
-#elif defined __ICCARM__ // compiled with IAR
-
- #if (CFG_TUSB_MCU == OPT_MCU_LPC175X_6X)
- // LP175x_6x can access all but CMSIS-RTX causes overflow in 32KB SRAM --> move to AHB ram
- #define CFG_TUSB_MEM_SECTION _Pragma("location=\".sram\"")
- #elif (CFG_TUSB_MCU == OPT_MCU_LPC43XX)
- #define CFG_TUSB_MEM_SECTION _Pragma("location=\".ahb_sram1\"")
- #endif
-
-#else
-
- #error compiler not specified
-
-#endif
-
-
-#ifdef __cplusplus
- }
-#endif
-
-#endif /* _TUSB_CONFIG_H_ */