From f797c4e02a1a2451e6ba9beca5a1be74fd0bf1ab Mon Sep 17 00:00:00 2001 From: hathach Date: Fri, 1 Nov 2013 12:17:54 +0700 Subject: rename device project --- demos/device/device_os_none/.cproject | 1019 ++++++++++++++++++++++++ demos/device/device_os_none/.project | 114 +++ demos/device/device_os_none/_makefile.defs | 10 + demos/device/device_os_none/main.c | 134 ++++ demos/device/device_os_none/makefile | 100 +++ demos/device/device_os_none/mscd_app.c | 95 +++ demos/device/device_os_none/mscd_app.h | 66 ++ demos/device/device_os_none/tusb_config.h | 139 ++++ demos/device/device_os_none/tusb_descriptors.c | 417 ++++++++++ demos/device/device_os_none/tusb_descriptors.h | 155 ++++ demos/device/keyboard/.cproject | 1019 ------------------------ demos/device/keyboard/.project | 114 --- demos/device/keyboard/_makefile.defs | 10 - demos/device/keyboard/main.c | 134 ---- demos/device/keyboard/makefile | 100 --- demos/device/keyboard/mscd_app.c | 95 --- demos/device/keyboard/mscd_app.h | 66 -- demos/device/keyboard/tusb_config.h | 139 ---- demos/device/keyboard/tusb_descriptors.c | 417 ---------- demos/device/keyboard/tusb_descriptors.h | 155 ---- 20 files changed, 2249 insertions(+), 2249 deletions(-) create mode 100644 demos/device/device_os_none/.cproject create mode 100644 demos/device/device_os_none/.project create mode 100644 demos/device/device_os_none/_makefile.defs create mode 100644 demos/device/device_os_none/main.c create mode 100644 demos/device/device_os_none/makefile create mode 100644 demos/device/device_os_none/mscd_app.c create mode 100644 demos/device/device_os_none/mscd_app.h create mode 100644 demos/device/device_os_none/tusb_config.h create mode 100644 demos/device/device_os_none/tusb_descriptors.c create mode 100644 demos/device/device_os_none/tusb_descriptors.h delete mode 100644 demos/device/keyboard/.cproject delete mode 100644 demos/device/keyboard/.project delete mode 100644 demos/device/keyboard/_makefile.defs delete mode 100644 demos/device/keyboard/main.c delete mode 100644 demos/device/keyboard/makefile delete mode 100644 demos/device/keyboard/mscd_app.c delete mode 100644 demos/device/keyboard/mscd_app.h delete mode 100644 demos/device/keyboard/tusb_config.h delete mode 100644 demos/device/keyboard/tusb_descriptors.c delete mode 100644 demos/device/keyboard/tusb_descriptors.h diff --git a/demos/device/device_os_none/.cproject b/demos/device/device_os_none/.cproject new file mode 100644 index 000000000..465b04542 --- /dev/null +++ b/demos/device/device_os_none/.cproject @@ -0,0 +1,1019 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + <?xml version="1.0" encoding="UTF-8"?> +<TargetConfig> +<Properties property_0="" property_2="LPC18x7_43x7_2x512_BootA.cfx" property_3="NXP" property_4="LPC4357" property_count="5" version="1"/> +<infoList vendor="NXP"><info chip="LPC4357" flash_driver="LPC18x7_43x7_2x512_BootA.cfx" match_id="0x0" name="LPC4357" 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="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="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"/> +</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/demos/device/device_os_none/.project b/demos/device/device_os_none/.project new file mode 100644 index 000000000..3e6d5dbb7 --- /dev/null +++ b/demos/device/device_os_none/.project @@ -0,0 +1,114 @@ + + + device_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:/device_keyboard/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 + + + + bsp + 2 + PARENT-2-PROJECT_LOC/bsp + + + tinyusb + 2 + PARENT-3-PROJECT_LOC/tinyusb + + + + + 1382883671880 + + 26 + + org.eclipse.ui.ide.multiFilter + 1.0-name-matches-false-false-startup_keil + + + + 1382883671891 + + 26 + + org.eclipse.ui.ide.multiFilter + 1.0-name-matches-false-false-startup_iar + + + + diff --git a/demos/device/device_os_none/_makefile.defs b/demos/device/device_os_none/_makefile.defs new file mode 100644 index 000000000..bf691d5f0 --- /dev/null +++ b/demos/device/device_os_none/_makefile.defs @@ -0,0 +1,10 @@ +#Project absolute path +build_dir = $(subst \,/,$(PWD)) +proj_path = $(build_dir)/.. + +#get workspace absolute path +workspace_dir = $(shell cd $(proj_path)/../../.. ; pwd) +#workspace_dir = $(proj_path)/../../../ +#$(warning workspace $(workspace_dir)) + +#include $(workspace_dir)/demos/demos.mk diff --git a/demos/device/device_os_none/main.c b/demos/device/device_os_none/main.c new file mode 100644 index 000000000..a4f6f899c --- /dev/null +++ b/demos/device/device_os_none/main.c @@ -0,0 +1,134 @@ +#include +#include +#include + +#include "boards/board.h" +#include "tusb.h" + +void print_greeting(void); + +void led_blinking_task(void * p_para); +void keyboard_device_app_task(void * p_para); +void mouse_device_app_task(void * p_para); + +int main(void) +{ + uint32_t current_tick = system_ticks; + + board_init(); + tusb_init(); + + print_greeting(); + while (1) + { + if (current_tick + 1000 < system_ticks) + { + current_tick += 1000; + + led_blinking_task(NULL); + + #if TUSB_CFG_DEVICE_HID_KEYBOARD + keyboard_device_app_task(NULL); + #endif + + #if TUSB_CFG_DEVICE_HID_MOUSE + mouse_device_app_task(NULL); + #endif + } + + #if TUSB_CFG_DEVICE_CDC && 0 + if (tusb_device_is_configured()) + { + uint8_t cdc_char; + if( tusb_cdc_getc(&cdc_char) ) + { + switch (cdc_char) + { + #ifdef TUSB_CFG_DEVICE_HID_KEYBOARD + case '1' : + { + uint8_t keys[6] = {HID_USAGE_KEYBOARD_aA + 'e' - 'a'}; + tusbd_hid_keyboard_send_report(0x08, keys, 1); // windows + E --> open explorer + } + break; + #endif + + #ifdef TUSB_CFG_DEVICE_HID_MOUSE + case '2' : + tusb_hid_mouse_send(0, 10, 10); + break; + #endif + + default : + cdc_char = toupper(cdc_char); + tusb_cdc_putc(cdc_char); + break; + + } + } + } +#endif + } + + return 0; +} + +void led_blinking_task(void * p_para) +{ + static uint32_t led_on_mask = 0; + + board_leds(led_on_mask, 1 - led_on_mask); + led_on_mask = 1 - led_on_mask; // toggle +} + +#if TUSB_CFG_DEVICE_HID_KEYBOARD +hid_keyboard_report_t keyboard_report TUSB_CFG_ATTR_USBRAM; +void keyboard_device_app_task(void * p_para) +{ + if (tusbd_is_configured(0)) + { + static uint32_t count =0; + if (count++ < 10) + { + if (!tusbd_hid_keyboard_is_busy(0)) + { + keyboard_report.keycode[0] = (count%2) ? 0x04 : 0x00; + tusbd_hid_keyboard_send(0, &keyboard_report ); + } + } + } +} +#endif + +#if TUSB_CFG_DEVICE_HID_MOUSE +hid_mouse_report_t mouse_report TUSB_CFG_ATTR_USBRAM; +void mouse_device_app_task(void * p_para) +{ + if (tusbd_is_configured(0)) + { + static uint32_t count =0; + if (count++ < 10) + { + if ( !tusbd_hid_mouse_is_busy(0) ) + { + mouse_report.x = mouse_report.y = 20; + tusbd_hid_mouse_send(0, &mouse_report ); + } + } + } +} +#endif + +//--------------------------------------------------------------------+ +// HELPER FUNCTION +//--------------------------------------------------------------------+ +void print_greeting(void) +{ + printf("\r\n\ +--------------------------------------------------------------------\r\n\ +- Device Demo (a tinyusb example)\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\r\n\ +--------------------------------------------------------------------\r\n\r\n" + ); +} diff --git a/demos/device/device_os_none/makefile b/demos/device/device_os_none/makefile new file mode 100644 index 000000000..8fa92b54d --- /dev/null +++ b/demos/device/device_os_none/makefile @@ -0,0 +1,100 @@ +####################################################################################### +# Software License Agreement (BSD License) +# Copyright (c) 2012, 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. The name of the author may not be used to endorse or promote products +# derived from this software without specific prior written permission. +# +# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED +# WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT +# SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +# EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT +# OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING +# IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY +# OF SUCH DAMAGE. +####################################################################################### + +################################################## +# Keyboard makefile +################################################## + +############ Toolchain ############ +toolchain := lpcxpresso +CC := arm-none-eabi-gcc +RM := rm -rf +#AR LD + +toolchain_def = __REDLIB__ __CODE_RED __USE_CMSIS=CMSISv2p00_LPC11Uxx +mcu = lpc11uxx +build_path = ../build/ + +#helper function +rel2abs = $(shell cd $(1); pwd) + +#path +tinyusb_path = ../../../tinyusb +bsp_path = ../../bsp +cmsis_path = ../../../../CMSISv2p00_LPC11Uxx + +build_path_abs = $(CURDIR)/$(build_path_relative) +tinyusb_path_abs = $(CURDIR)/$(tinyusb_path) +bsp_path_abs = $(CURDIR)/$(bsp_path) +cmsis_path_abs = $(CURDIR)/$(cmsis_path) + +############ Sources ############ +src = $(shell find $(CURDIR) -type f -name "*.c") $(tinyusb_src) $(bsp_src) +objects = $(subst .c,.o,$(src)) +dependencies = $(subst .c,.d,$(src)) + +tinyusb_src = $(shell find $(tinyusb_path_abs) \( ! -name "*hal*" \) -type f -name "*.c") $(tinyusb_path_abs)/hal/hal_$(mcu).c +bsp_src = $(shell find $(bsp_path_abs)/boards -type f -name "*.c") $(shell find $(bsp_path_abs)/$(mcu) -type f -name "*.c") +cmsis_src = $(shell find $(cmsis_path_abs) -type f -name "*.c") + +############ CFLAGS C Compiler Flag ############## +#CFLAGS = $(addprefix -D,$(toolchain_def) $(macros_def)) $(addprefix -I,$(inc_path)) + +############ LDFLAGS Linker Flag ############## +#LDFLAGS + +############ CPPFLAGS C Preprocessor Flag ############## +CPPFLAGS = $(addprefix -D,$(toolchain_def) $(macros_def)) $(addprefix -I,$(inc_path)) + +macros_def += BOARD=BOARD_AT86RF2XX +macros_def += MCU=MCU_LPC11UXX + +inc_path = $(CURDIR) $(tinyusb_path_abs) $(bsp_path_abs) $(cmsis_path_abs)/inc + +############ Compile Rules ############## +#%.o : %.c + +############ Target ############## +all: keyboard.axf + +keyboard.axf : $(objects) + +clean: + -$(RM) $(objects) $(dependencies) keyboard.axf + +.PHONY: all clean + +############ Dependencies Generate and Inlcude ############ +ifneq ($(MAKECMDGOALS),clean) +include $(dependencies) +endif + +%.d: %.c + $(CC) -M $(CPPFLAGS) $< > $@.$$$$; \ + sed 's,\($*\)\.o[ :]*,\1.o $@ : ,g' < $@.$$$$ > $@; \ + rm -f $@.$$$$ diff --git a/demos/device/device_os_none/mscd_app.c b/demos/device/device_os_none/mscd_app.c new file mode 100644 index 000000000..8153809a0 --- /dev/null +++ b/demos/device/device_os_none/mscd_app.c @@ -0,0 +1,95 @@ +/**************************************************************************/ +/*! + @file mscd_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 "mscd_app.h" + +#if TUSB_CFG_DEVICE_MSC +//--------------------------------------------------------------------+ +// INCLUDE +//--------------------------------------------------------------------+ + +//--------------------------------------------------------------------+ +// MACRO CONSTANT TYPEDEF +//--------------------------------------------------------------------+ +static scsi_inquiry_data_t mscd_inquiry_data TUSB_CFG_ATTR_USBRAM = +{ + .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 mscd_read_capacity10_data TUSB_CFG_ATTR_USBRAM = +{ + .last_lba = (16*1024*1024)/512, + .block_size = 512 +}; + +//--------------------------------------------------------------------+ +// INTERNAL OBJECT & FUNCTION DECLARATION +//--------------------------------------------------------------------+ + +//--------------------------------------------------------------------+ +// tinyusb callback (ISR context) +//--------------------------------------------------------------------+ +msc_csw_status_t tusbd_msc_scsi_received_isr(uint8_t coreid, uint8_t lun, uint8_t scsi_cmd[16], void ** pp_buffer, uint16_t expected_length) +{ + switch(scsi_cmd[0]) + { + case SCSI_CMD_INQUIRY: + (*pp_buffer) = &mscd_inquiry_data; + break; + + case SCSI_CMD_READ_CAPACITY_10: + + break; + + default: return MSC_CSW_STATUS_FAILED; + } + + return MSC_CSW_STATUS_PASSED; +} + +//--------------------------------------------------------------------+ +// IMPLEMENTATION +//--------------------------------------------------------------------+ + + +#endif diff --git a/demos/device/device_os_none/mscd_app.h b/demos/device/device_os_none/mscd_app.h new file mode 100644 index 000000000..e2897f772 --- /dev/null +++ b/demos/device/device_os_none/mscd_app.h @@ -0,0 +1,66 @@ +/**************************************************************************/ +/*! + @file mscd_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_MSCD_APP_H_ +#define _TUSB_MSCD_APP_H_ + +#include "boards/board.h" +#include "tusb.h" + +#ifdef __cplusplus + extern "C" { +#endif + +#if TUSB_CFG_DEVICE_MSC + +#endif + +#ifdef __cplusplus + } +#endif + +#endif /* _TUSB_MSCD_APP_H_ */ + +/** @} */ diff --git a/demos/device/device_os_none/tusb_config.h b/demos/device/device_os_none/tusb_config.h new file mode 100644 index 000000000..26132c3b8 --- /dev/null +++ b/demos/device/device_os_none/tusb_config.h @@ -0,0 +1,139 @@ +/**************************************************************************/ +/*! + @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. +*/ +/**************************************************************************/ + +/** \file + * \brief TBD + * + * \note TBD + */ + +/** \ingroup TBD + * \defgroup TBD + * \brief TBD + * + * @{ + */ + +#ifndef _TUSB_TUSB_CONFIG_H_ +#define _TUSB_TUSB_CONFIG_H_ + +#ifdef __cplusplus + extern "C" { +#endif + +//--------------------------------------------------------------------+ +// CONTROLLER CONFIGURATION +//--------------------------------------------------------------------+ +#define TUSB_CFG_CONTROLLER_0_MODE (TUSB_MODE_DEVICE) +#define TUSB_CFG_CONTROLLER_1_MODE (TUSB_MODE_NONE) + +//--------------------------------------------------------------------+ +// HOST CONFIGURATION +//--------------------------------------------------------------------+ +#define TUSB_CFG_HOST_DEVICE_MAX 1 +#define TUSB_CFG_CONFIGURATION_MAX 1 + +//------------- USBD -------------// +#define TUSB_CFG_HOST_ENUM_BUFFER_SIZE 256 + +//------------- CLASS -------------// +#define TUSB_CFG_HOST_HUB 0 +#define TUSB_CFG_HOST_HID_KEYBOARD 0 +#define TUSB_CFG_HOST_HID_MOUSE 0 +#define TUSB_CFG_HOST_HID_GENERIC 0 +#define TUSB_CFG_HOST_MSC 0 + +//--------------------------------------------------------------------+ +// DEVICE CONFIGURATION +//--------------------------------------------------------------------+ +#define TUSB_CFG_DEVICE_FULLSPEED 1 // TODO refractor + +#define TUSB_CFG_DEVICE_USE_ROM_DRIVER 0 + +//------------- descriptors -------------// +#define TUSB_CFG_DEVICE_STRING_MANUFACTURER "tinyusb.org" +#define TUSB_CFG_DEVICE_STRING_PRODUCT "Device Example" +#define TUSB_CFG_DEVICE_STRING_SERIAL "1234" +#define TUSB_CFG_DEVICE_VENDORID 0x1FC9 // NXP +//#define TUSB_CFG_DEVICE_PRODUCTID 0x4567 + +#define TUSB_CFG_DEVICE_CONTROL_ENDOINT_SIZE 64 + +//------------- CLASS -------------// +#define TUSB_CFG_DEVICE_HID_KEYBOARD 0 +#define TUSB_CFG_DEVICE_HID_MOUSE 0 +#define TUSB_CFG_DEVICE_HID_GENERIC 0 +#define TUSB_CFG_DEVICE_MSC 1 +#define TUSB_CFG_DEVICE_CDC 0 + +//--------------------------------------------------------------------+ +// COMMON CONFIGURATION +//--------------------------------------------------------------------+ + +#define TUSB_CFG_DEBUG 3 + +#define TUSB_CFG_OS TUSB_OS_NONE // defined using eclipse build +//#define TUSB_CFG_OS_TASK_PRIO +#define TUSB_CFG_OS_TICKS_PER_SECOND 1000 + +#ifdef __CODE_RED // make use of code red's support for ram region macros + #if (MCU == MCU_LPC11UXX) || (MCU == MCU_LPC13UXX) + #define TUSB_RAM_SECTION ".data.$RAM1" // TODO overflow usb ram + #elif (MCU == MCU_LPC43XX) + #define TUSB_RAM_SECTION ".data.$RAM3" + #elif (MCU == MCU_LPC175X_6X) + #define TUSB_RAM_SECTION ".data.$RAM2" + #else + forgot something thach ? + #endif + + #define TUSB_CFG_ATTR_USBRAM __attribute__ ((section(TUSB_RAM_SECTION))) +#elif defined __CC_ARM // Compiled with Keil armcc + #define TUSB_CFG_ATTR_USBRAM +#else + #error compiler not specified +#endif + + +#ifdef __cplusplus + } +#endif + +#endif /* _TUSB_TUSB_CONFIG_H_ */ + +/** @} */ diff --git a/demos/device/device_os_none/tusb_descriptors.c b/demos/device/device_os_none/tusb_descriptors.c new file mode 100644 index 000000000..2661bda54 --- /dev/null +++ b/demos/device/device_os_none/tusb_descriptors.c @@ -0,0 +1,417 @@ +/**************************************************************************/ +/*! + @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" + +#if TUSB_CFG_DEVICE_HID_KEYBOARD +TUSB_CFG_ATTR_USBRAM ATTR_ALIGNED(4) +uint8_t app_tusb_keyboard_desc_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 + +#if TUSB_CFG_DEVICE_HID_MOUSE +TUSB_CFG_ATTR_USBRAM ATTR_ALIGNED(4) +uint8_t app_tusb_mouse_desc_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 + +TUSB_CFG_ATTR_USBRAM ATTR_ALIGNED(4) +tusb_descriptor_device_t app_tusb_desc_device = +{ + .bLength = sizeof(tusb_descriptor_device_t), + .bDescriptorType = TUSB_DESC_TYPE_DEVICE, + .bcdUSB = 0x0200, + .bDeviceClass = 0x00, + .bDeviceSubClass = 0x00, + .bDeviceProtocol = 0x00, + + .bMaxPacketSize0 = TUSB_CFG_DEVICE_CONTROL_ENDOINT_SIZE, + + .idVendor = TUSB_CFG_DEVICE_VENDORID, + .idProduct = TUSB_CFG_PRODUCT_ID, + .bcdDevice = 0x0100, + + .iManufacturer = 0x01, + .iProduct = 0x02, + .iSerialNumber = 0x03, + + .bNumConfigurations = 0x01 // TODO multiple configurations +}; + + +TUSB_CFG_ATTR_USBRAM ATTR_ALIGNED(4) +app_descriptor_configuration_t app_tusb_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(100) + }, + + #if IAD_DESC_REQUIRED + // IAD points to CDC Interfaces + .CDC_IAD = + { + .bLength = sizeof(tusb_descriptor_interface_association_t), + .bDescriptorType = TUSB_DESC_TYPE_INTERFACE_ASSOCIATION, + + .bFirstInterface = 0, + .bInterfaceCount = 2, + + .bFunctionClass = CDC_COMMUNICATION_INTERFACE_CLASS, + .bFunctionSubClass = CDC_ABSTRACT_CONTROL_MODEL, + .bFunctionProtocol = CDC_PROTOCOL_COMMON_AT_COMMANDS, + + .iFunction = 0 + }, + #endif + + #if TUSB_CFG_DEVICE_CDC + // USB CDC Serial Interface + // CDC Control Interface + .CDC_CCI_Interface = + { + .bLength = sizeof(tusb_descriptor_interface_t), + .bDescriptorType = TUSB_DESC_TYPE_INTERFACE, + .bInterfaceNumber = INTERFACE_INDEX_CDC, + .bAlternateSetting = 0, + .bNumEndpoints = 1, + .bInterfaceClass = CDC_COMMUNICATION_INTERFACE_CLASS, + .bInterfaceSubClass = CDC_ABSTRACT_CONTROL_MODEL, + .bInterfaceProtocol = CDC_PROTOCOL_COMMON_AT_COMMANDS, + .iInterface = 0x00 + }, + + .CDC_Header = + { + .bFunctionLength = sizeof(CDC_HEADER_DESCRIPTOR), + .bDescriptorType = CDC_CS_INTERFACE, + .bDescriptorSubtype = CDC_HEADER, + .bcdCDC = 0x0120 + }, + + .CDC_ACM = + { + .bFunctionLength = sizeof(CDC_ABSTRACT_CONTROL_MANAGEMENT_DESCRIPTOR), + .bDescriptorType = CDC_CS_INTERFACE, + .bDescriptorSubtype = CDC_ABSTRACT_CONTROL_MANAGEMENT, + .bmCapabilities = 0x06 // Support Send_Break and Set_Line_Coding, Set_Control_Line_State, Get_Line_Coding, and the notification Serial_State + }, + + .CDC_Union = + { + .sUnion = + { + .bFunctionLength = sizeof(CDC_UNION_1SLAVE_DESCRIPTOR), + .bDescriptorType = CDC_CS_INTERFACE, + .bDescriptorSubtype = CDC_UNION, + .bMasterInterface = 0 + }, + .bSlaveInterfaces[0] = 1 + }, + + .CDC_NotificationEndpoint = + { + .bLength = sizeof(tusb_descriptor_endpoint_t), + .bDescriptorType = TUSB_DESC_TYPE_ENDPOINT, + .bEndpointAddress = CDC_NOTIFICATION_EP, + .bmAttributes = USB_ENDPOINT_TYPE_INTERRUPT, + .wMaxPacketSize = CDC_NOTIFICATION_EP_MAXPACKETSIZE, + .bInterval = 0xff // lowest polling rate + }, + + // CDC Data Interface + .CDC_DCI_Interface = + { + .bLength = sizeof(tusb_descriptor_interface_t), + .bDescriptorType = TUSB_DESC_TYPE_INTERFACE, + .bInterfaceNumber = INTERFACE_INDEX_CDC+1, + .bAlternateSetting = 0x00, + .bNumEndpoints = 2, + .bInterfaceClass = CDC_DATA_INTERFACE_CLASS, + .bInterfaceSubClass = 0, + .bInterfaceProtocol = 0, + .iInterface = 0x00 + }, + + .CDC_DataOutEndpoint = + { + .bLength = sizeof(tusb_descriptor_endpoint_t), + .bDescriptorType = TUSB_DESC_TYPE_ENDPOINT, + .bEndpointAddress = CDC_DATA_EP_OUT, + .bmAttributes = USB_ENDPOINT_TYPE_BULK, + .wMaxPacketSize = CDC_DATA_EP_MAXPACKET_SIZE, + .bInterval = 0 + }, + + .CDC_DataInEndpoint = + { + .bLength = sizeof(tusb_descriptor_endpoint_t), + .bDescriptorType = TUSB_DESC_TYPE_ENDPOINT, + .bEndpointAddress = CDC_DATA_EP_IN, + .bmAttributes = USB_ENDPOINT_TYPE_BULK, + .wMaxPacketSize = CDC_DATA_EP_MAXPACKET_SIZE, + .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_INDEX_HID_KEYBOARD, + .bAlternateSetting = 0x00, + .bNumEndpoints = 1, + .bInterfaceClass = TUSB_CLASS_HID, + .bInterfaceSubClass = HID_SUBCLASS_BOOT, + .bInterfaceProtocol = HID_PROTOCOL_KEYBOARD, + .iInterface = 0x00 + }, + + .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(app_tusb_keyboard_desc_report) + }, + + .keyboard_endpoint = + { + .bLength = sizeof(tusb_descriptor_endpoint_t), + .bDescriptorType = TUSB_DESC_TYPE_ENDPOINT, + .bEndpointAddress = HID_KEYBOARD_EP_IN, //todo HID_KEYBOARD_EP_IN, + .bmAttributes = { .xfer = TUSB_XFER_INTERRUPT }, + .wMaxPacketSize = { .size = 0x08 }, + .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_INDEX_HID_MOUSE, + .bAlternateSetting = 0x00, + .bNumEndpoints = 1, + .bInterfaceClass = TUSB_CLASS_HID, + .bInterfaceSubClass = HID_SUBCLASS_BOOT, + .bInterfaceProtocol = HID_PROTOCOL_MOUSE, + .iInterface = 0x00 + }, + + .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(app_tusb_mouse_desc_report) + }, + + .mouse_endpoint = + { + .bLength = sizeof(tusb_descriptor_endpoint_t), + .bDescriptorType = TUSB_DESC_TYPE_ENDPOINT, + .bEndpointAddress = HID_MOUSE_EP_IN, // TODO + .bmAttributes = { .xfer = TUSB_XFER_INTERRUPT }, + .wMaxPacketSize = { .size = 0x08 }, + .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_INDEX_MASS_STORAGE, + .bAlternateSetting = 0x00, + .bNumEndpoints = 2, + .bInterfaceClass = TUSB_CLASS_MSC, + .bInterfaceSubClass = MSC_SUBCLASS_SCSI, + .bInterfaceProtocol = MSC_PROTOCOL_BOT, + .iInterface = 0x00 + }, + + .msc_endpoint_in = + { + .bLength = sizeof(tusb_descriptor_endpoint_t), + .bDescriptorType = TUSB_DESC_TYPE_ENDPOINT, + .bEndpointAddress = 0x83, + .bmAttributes = { .xfer = TUSB_XFER_BULK }, + .wMaxPacketSize = { .size = 64 /*512*/ }, + .bInterval = 1 + }, + + .msc_endpoint_out = + { + .bLength = sizeof(tusb_descriptor_endpoint_t), + .bDescriptorType = TUSB_DESC_TYPE_ENDPOINT, + .bEndpointAddress = 0x03, + .bmAttributes = { .xfer = TUSB_XFER_BULK }, + .wMaxPacketSize = { .size = 64 /*512*/ }, + .bInterval = 1 + }, + #endif +}; + +TUSB_CFG_ATTR_USBRAM ATTR_ALIGNED(4) +app_descriptor_string_t app_tusb_desc_strings = +{ + //------------- index 0 -------------// + .language = { + .bLength = 0x04, + .bDescriptorType = TUSB_DESC_TYPE_STRING, + .id = 0x0409, // US English + }, + + //------------- index 1 -------------// + .manufacturer = { + .bLength = STRING_LEN_BYTE2UNICODE(sizeof(TUSB_CFG_DEVICE_STRING_MANUFACTURER)-1), + .bDescriptorType = TUSB_DESC_TYPE_STRING, + }, + + //------------- index 2 -------------// + .product = { + .bLength = STRING_LEN_BYTE2UNICODE(sizeof(TUSB_CFG_DEVICE_STRING_PRODUCT)-1), + .bDescriptorType = TUSB_DESC_TYPE_STRING, + }, + + //------------- index 3 -------------// + .serial = { + .bLength = STRING_LEN_BYTE2UNICODE(sizeof(TUSB_CFG_DEVICE_STRING_SERIAL)-1), + .bDescriptorType = TUSB_DESC_TYPE_STRING, + } +}; diff --git a/demos/device/device_os_none/tusb_descriptors.h b/demos/device/device_os_none/tusb_descriptors.h new file mode 100644 index 000000000..2795d17be --- /dev/null +++ b/demos/device/device_os_none/tusb_descriptors.h @@ -0,0 +1,155 @@ +/**************************************************************************/ +/*! + @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" + +#define INTERFACES_OF_CDC (TUSB_CFG_DEVICE_CDC ? 2 : 0) +#define INTERFACES_OF_HID_KEYBOARD (TUSB_CFG_DEVICE_HID_KEYBOARD ? 1 : 0) +#define INTERFACES_OF_HID_MOUSE (TUSB_CFG_DEVICE_HID_MOUSE ? 1 : 0) +#define INTERFACES_OF_HID_GENERIC (TUSB_CFG_DEVICE_HID_GENERIC ? 1 : 0) +#define INTERFACES_OF_MASS_STORAGE (TUSB_CFG_DEVICE_MSC ? 1 : 0) + +#define INTERFACE_INDEX_CDC 0 +#define INTERFACE_INDEX_HID_KEYBOARD (INTERFACE_INDEX_CDC + INTERFACES_OF_CDC ) +#define INTERFACE_INDEX_HID_MOUSE (INTERFACE_INDEX_HID_KEYBOARD + INTERFACES_OF_HID_KEYBOARD ) +#define INTERFACE_INDEX_HID_GENERIC (INTERFACE_INDEX_HID_MOUSE + INTERFACES_OF_HID_MOUSE ) +#define INTERFACE_INDEX_MASS_STORAGE (INTERFACE_INDEX_HID_GENERIC + INTERFACES_OF_HID_GENERIC ) + +#define TOTAL_INTEFACES (INTERFACES_OF_CDC + INTERFACES_OF_HID_KEYBOARD + INTERFACES_OF_HID_MOUSE + \ + INTERFACES_OF_HID_GENERIC + INTERFACES_OF_MASS_STORAGE) + +// USB Interface Assosication Descriptor +#define USB_DEVICE_CLASS_IAD USB_DEVICE_CLASS_MISCELLANEOUS +#define USB_DEVICE_SUBCLASS_IAD 0x02 +#define USB_DEVICE_PROTOCOL_IAD 0x01 + +// Interface Assosication Descriptor if device is CDC + other class +#define IAD_DESC_REQUIRED ( TUSB_CFG_DEVICE_CDC && (TOTAL_INTEFACES > 2) ) + + +// each combination of interfaces need to have different productid, as windows will bind & remember device driver after the +// first plug. +#ifndef TUSB_CFG_PRODUCT_ID +// Bitmap: MassStorage | Generic | Mouse | Key | CDC +#define PRODUCTID_BITMAP(interface, n) ( (INTERFACES_OF_##interface ? 1 : 0) << (n) ) +#define TUSB_CFG_PRODUCT_ID (0x2000 | ( PRODUCTID_BITMAP(CDC, 0) | PRODUCTID_BITMAP(HID_KEYBOARD, 1) | \ + PRODUCTID_BITMAP(HID_MOUSE, 2) | PRODUCTID_BITMAP(HID_GENERIC, 3) | \ + PRODUCTID_BITMAP(MASS_STORAGE, 4) ) ) +#endif + +//--------------------------------------------------------------------+ +// CONFIGURATION DESCRIPTOR +//--------------------------------------------------------------------+ +typedef ATTR_PACKED_STRUCT(struct) +{ + tusb_descriptor_configuration_t configuration; + + //------------- 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; + +//--------------------------------------------------------------------+ +// STRINGS DESCRIPTOR +//--------------------------------------------------------------------+ +typedef ATTR_PACKED_STRUCT(struct) +{ + //------------- index 0 -------------// + struct { + uint8_t const bLength; + uint8_t const bDescriptorType; + uint16_t id; + }language; + + //------------- index 1 -------------// + struct { + uint8_t const bLength; + uint8_t const bDescriptorType; + uint16_t unicode_string[sizeof(TUSB_CFG_DEVICE_STRING_MANUFACTURER)-1]; // exclude null-character + } manufacturer; + + //------------- index 2 -------------// + struct { + uint8_t const bLength; + uint8_t const bDescriptorType; + uint16_t unicode_string[sizeof(TUSB_CFG_DEVICE_STRING_PRODUCT)-1]; // exclude null-character + } product; + + //------------- index 3 -------------// + struct { + uint8_t const bLength; + uint8_t const bDescriptorType; + uint16_t unicode_string[sizeof(TUSB_CFG_DEVICE_STRING_SERIAL)-1]; // exclude null-character + } serial; + + //------------- more string index -------------// + +} app_descriptor_string_t; + +//--------------------------------------------------------------------+ +// Export descriptors +//--------------------------------------------------------------------+ +extern tusb_descriptor_device_t app_tusb_desc_device; +extern app_descriptor_configuration_t app_tusb_desc_configuration; +extern app_descriptor_string_t app_tusb_desc_strings; + +extern uint8_t app_tusb_keyboard_desc_report[]; +extern uint8_t app_tusb_mouse_desc_report[]; + +#endif diff --git a/demos/device/keyboard/.cproject b/demos/device/keyboard/.cproject deleted file mode 100644 index 465b04542..000000000 --- a/demos/device/keyboard/.cproject +++ /dev/null @@ -1,1019 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - <?xml version="1.0" encoding="UTF-8"?> -<TargetConfig> -<Properties property_0="" property_2="LPC18x7_43x7_2x512_BootA.cfx" property_3="NXP" property_4="LPC4357" property_count="5" version="1"/> -<infoList vendor="NXP"><info chip="LPC4357" flash_driver="LPC18x7_43x7_2x512_BootA.cfx" match_id="0x0" name="LPC4357" 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="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="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"/> -</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/demos/device/keyboard/.project b/demos/device/keyboard/.project deleted file mode 100644 index 3e6d5dbb7..000000000 --- a/demos/device/keyboard/.project +++ /dev/null @@ -1,114 +0,0 @@ - - - device_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:/device_keyboard/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 - - - - bsp - 2 - PARENT-2-PROJECT_LOC/bsp - - - tinyusb - 2 - PARENT-3-PROJECT_LOC/tinyusb - - - - - 1382883671880 - - 26 - - org.eclipse.ui.ide.multiFilter - 1.0-name-matches-false-false-startup_keil - - - - 1382883671891 - - 26 - - org.eclipse.ui.ide.multiFilter - 1.0-name-matches-false-false-startup_iar - - - - diff --git a/demos/device/keyboard/_makefile.defs b/demos/device/keyboard/_makefile.defs deleted file mode 100644 index bf691d5f0..000000000 --- a/demos/device/keyboard/_makefile.defs +++ /dev/null @@ -1,10 +0,0 @@ -#Project absolute path -build_dir = $(subst \,/,$(PWD)) -proj_path = $(build_dir)/.. - -#get workspace absolute path -workspace_dir = $(shell cd $(proj_path)/../../.. ; pwd) -#workspace_dir = $(proj_path)/../../../ -#$(warning workspace $(workspace_dir)) - -#include $(workspace_dir)/demos/demos.mk diff --git a/demos/device/keyboard/main.c b/demos/device/keyboard/main.c deleted file mode 100644 index a4f6f899c..000000000 --- a/demos/device/keyboard/main.c +++ /dev/null @@ -1,134 +0,0 @@ -#include -#include -#include - -#include "boards/board.h" -#include "tusb.h" - -void print_greeting(void); - -void led_blinking_task(void * p_para); -void keyboard_device_app_task(void * p_para); -void mouse_device_app_task(void * p_para); - -int main(void) -{ - uint32_t current_tick = system_ticks; - - board_init(); - tusb_init(); - - print_greeting(); - while (1) - { - if (current_tick + 1000 < system_ticks) - { - current_tick += 1000; - - led_blinking_task(NULL); - - #if TUSB_CFG_DEVICE_HID_KEYBOARD - keyboard_device_app_task(NULL); - #endif - - #if TUSB_CFG_DEVICE_HID_MOUSE - mouse_device_app_task(NULL); - #endif - } - - #if TUSB_CFG_DEVICE_CDC && 0 - if (tusb_device_is_configured()) - { - uint8_t cdc_char; - if( tusb_cdc_getc(&cdc_char) ) - { - switch (cdc_char) - { - #ifdef TUSB_CFG_DEVICE_HID_KEYBOARD - case '1' : - { - uint8_t keys[6] = {HID_USAGE_KEYBOARD_aA + 'e' - 'a'}; - tusbd_hid_keyboard_send_report(0x08, keys, 1); // windows + E --> open explorer - } - break; - #endif - - #ifdef TUSB_CFG_DEVICE_HID_MOUSE - case '2' : - tusb_hid_mouse_send(0, 10, 10); - break; - #endif - - default : - cdc_char = toupper(cdc_char); - tusb_cdc_putc(cdc_char); - break; - - } - } - } -#endif - } - - return 0; -} - -void led_blinking_task(void * p_para) -{ - static uint32_t led_on_mask = 0; - - board_leds(led_on_mask, 1 - led_on_mask); - led_on_mask = 1 - led_on_mask; // toggle -} - -#if TUSB_CFG_DEVICE_HID_KEYBOARD -hid_keyboard_report_t keyboard_report TUSB_CFG_ATTR_USBRAM; -void keyboard_device_app_task(void * p_para) -{ - if (tusbd_is_configured(0)) - { - static uint32_t count =0; - if (count++ < 10) - { - if (!tusbd_hid_keyboard_is_busy(0)) - { - keyboard_report.keycode[0] = (count%2) ? 0x04 : 0x00; - tusbd_hid_keyboard_send(0, &keyboard_report ); - } - } - } -} -#endif - -#if TUSB_CFG_DEVICE_HID_MOUSE -hid_mouse_report_t mouse_report TUSB_CFG_ATTR_USBRAM; -void mouse_device_app_task(void * p_para) -{ - if (tusbd_is_configured(0)) - { - static uint32_t count =0; - if (count++ < 10) - { - if ( !tusbd_hid_mouse_is_busy(0) ) - { - mouse_report.x = mouse_report.y = 20; - tusbd_hid_mouse_send(0, &mouse_report ); - } - } - } -} -#endif - -//--------------------------------------------------------------------+ -// HELPER FUNCTION -//--------------------------------------------------------------------+ -void print_greeting(void) -{ - printf("\r\n\ ---------------------------------------------------------------------\r\n\ -- Device Demo (a tinyusb example)\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\r\n\ ---------------------------------------------------------------------\r\n\r\n" - ); -} diff --git a/demos/device/keyboard/makefile b/demos/device/keyboard/makefile deleted file mode 100644 index 8fa92b54d..000000000 --- a/demos/device/keyboard/makefile +++ /dev/null @@ -1,100 +0,0 @@ -####################################################################################### -# Software License Agreement (BSD License) -# Copyright (c) 2012, 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. The name of the author may not be used to endorse or promote products -# derived from this software without specific prior written permission. -# -# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED -# WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF -# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT -# SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, -# EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT -# OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS -# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN -# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING -# IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY -# OF SUCH DAMAGE. -####################################################################################### - -################################################## -# Keyboard makefile -################################################## - -############ Toolchain ############ -toolchain := lpcxpresso -CC := arm-none-eabi-gcc -RM := rm -rf -#AR LD - -toolchain_def = __REDLIB__ __CODE_RED __USE_CMSIS=CMSISv2p00_LPC11Uxx -mcu = lpc11uxx -build_path = ../build/ - -#helper function -rel2abs = $(shell cd $(1); pwd) - -#path -tinyusb_path = ../../../tinyusb -bsp_path = ../../bsp -cmsis_path = ../../../../CMSISv2p00_LPC11Uxx - -build_path_abs = $(CURDIR)/$(build_path_relative) -tinyusb_path_abs = $(CURDIR)/$(tinyusb_path) -bsp_path_abs = $(CURDIR)/$(bsp_path) -cmsis_path_abs = $(CURDIR)/$(cmsis_path) - -############ Sources ############ -src = $(shell find $(CURDIR) -type f -name "*.c") $(tinyusb_src) $(bsp_src) -objects = $(subst .c,.o,$(src)) -dependencies = $(subst .c,.d,$(src)) - -tinyusb_src = $(shell find $(tinyusb_path_abs) \( ! -name "*hal*" \) -type f -name "*.c") $(tinyusb_path_abs)/hal/hal_$(mcu).c -bsp_src = $(shell find $(bsp_path_abs)/boards -type f -name "*.c") $(shell find $(bsp_path_abs)/$(mcu) -type f -name "*.c") -cmsis_src = $(shell find $(cmsis_path_abs) -type f -name "*.c") - -############ CFLAGS C Compiler Flag ############## -#CFLAGS = $(addprefix -D,$(toolchain_def) $(macros_def)) $(addprefix -I,$(inc_path)) - -############ LDFLAGS Linker Flag ############## -#LDFLAGS - -############ CPPFLAGS C Preprocessor Flag ############## -CPPFLAGS = $(addprefix -D,$(toolchain_def) $(macros_def)) $(addprefix -I,$(inc_path)) - -macros_def += BOARD=BOARD_AT86RF2XX -macros_def += MCU=MCU_LPC11UXX - -inc_path = $(CURDIR) $(tinyusb_path_abs) $(bsp_path_abs) $(cmsis_path_abs)/inc - -############ Compile Rules ############## -#%.o : %.c - -############ Target ############## -all: keyboard.axf - -keyboard.axf : $(objects) - -clean: - -$(RM) $(objects) $(dependencies) keyboard.axf - -.PHONY: all clean - -############ Dependencies Generate and Inlcude ############ -ifneq ($(MAKECMDGOALS),clean) -include $(dependencies) -endif - -%.d: %.c - $(CC) -M $(CPPFLAGS) $< > $@.$$$$; \ - sed 's,\($*\)\.o[ :]*,\1.o $@ : ,g' < $@.$$$$ > $@; \ - rm -f $@.$$$$ diff --git a/demos/device/keyboard/mscd_app.c b/demos/device/keyboard/mscd_app.c deleted file mode 100644 index 8153809a0..000000000 --- a/demos/device/keyboard/mscd_app.c +++ /dev/null @@ -1,95 +0,0 @@ -/**************************************************************************/ -/*! - @file mscd_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 "mscd_app.h" - -#if TUSB_CFG_DEVICE_MSC -//--------------------------------------------------------------------+ -// INCLUDE -//--------------------------------------------------------------------+ - -//--------------------------------------------------------------------+ -// MACRO CONSTANT TYPEDEF -//--------------------------------------------------------------------+ -static scsi_inquiry_data_t mscd_inquiry_data TUSB_CFG_ATTR_USBRAM = -{ - .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 mscd_read_capacity10_data TUSB_CFG_ATTR_USBRAM = -{ - .last_lba = (16*1024*1024)/512, - .block_size = 512 -}; - -//--------------------------------------------------------------------+ -// INTERNAL OBJECT & FUNCTION DECLARATION -//--------------------------------------------------------------------+ - -//--------------------------------------------------------------------+ -// tinyusb callback (ISR context) -//--------------------------------------------------------------------+ -msc_csw_status_t tusbd_msc_scsi_received_isr(uint8_t coreid, uint8_t lun, uint8_t scsi_cmd[16], void ** pp_buffer, uint16_t expected_length) -{ - switch(scsi_cmd[0]) - { - case SCSI_CMD_INQUIRY: - (*pp_buffer) = &mscd_inquiry_data; - break; - - case SCSI_CMD_READ_CAPACITY_10: - - break; - - default: return MSC_CSW_STATUS_FAILED; - } - - return MSC_CSW_STATUS_PASSED; -} - -//--------------------------------------------------------------------+ -// IMPLEMENTATION -//--------------------------------------------------------------------+ - - -#endif diff --git a/demos/device/keyboard/mscd_app.h b/demos/device/keyboard/mscd_app.h deleted file mode 100644 index e2897f772..000000000 --- a/demos/device/keyboard/mscd_app.h +++ /dev/null @@ -1,66 +0,0 @@ -/**************************************************************************/ -/*! - @file mscd_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_MSCD_APP_H_ -#define _TUSB_MSCD_APP_H_ - -#include "boards/board.h" -#include "tusb.h" - -#ifdef __cplusplus - extern "C" { -#endif - -#if TUSB_CFG_DEVICE_MSC - -#endif - -#ifdef __cplusplus - } -#endif - -#endif /* _TUSB_MSCD_APP_H_ */ - -/** @} */ diff --git a/demos/device/keyboard/tusb_config.h b/demos/device/keyboard/tusb_config.h deleted file mode 100644 index 26132c3b8..000000000 --- a/demos/device/keyboard/tusb_config.h +++ /dev/null @@ -1,139 +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. -*/ -/**************************************************************************/ - -/** \file - * \brief TBD - * - * \note TBD - */ - -/** \ingroup TBD - * \defgroup TBD - * \brief TBD - * - * @{ - */ - -#ifndef _TUSB_TUSB_CONFIG_H_ -#define _TUSB_TUSB_CONFIG_H_ - -#ifdef __cplusplus - extern "C" { -#endif - -//--------------------------------------------------------------------+ -// CONTROLLER CONFIGURATION -//--------------------------------------------------------------------+ -#define TUSB_CFG_CONTROLLER_0_MODE (TUSB_MODE_DEVICE) -#define TUSB_CFG_CONTROLLER_1_MODE (TUSB_MODE_NONE) - -//--------------------------------------------------------------------+ -// HOST CONFIGURATION -//--------------------------------------------------------------------+ -#define TUSB_CFG_HOST_DEVICE_MAX 1 -#define TUSB_CFG_CONFIGURATION_MAX 1 - -//------------- USBD -------------// -#define TUSB_CFG_HOST_ENUM_BUFFER_SIZE 256 - -//------------- CLASS -------------// -#define TUSB_CFG_HOST_HUB 0 -#define TUSB_CFG_HOST_HID_KEYBOARD 0 -#define TUSB_CFG_HOST_HID_MOUSE 0 -#define TUSB_CFG_HOST_HID_GENERIC 0 -#define TUSB_CFG_HOST_MSC 0 - -//--------------------------------------------------------------------+ -// DEVICE CONFIGURATION -//--------------------------------------------------------------------+ -#define TUSB_CFG_DEVICE_FULLSPEED 1 // TODO refractor - -#define TUSB_CFG_DEVICE_USE_ROM_DRIVER 0 - -//------------- descriptors -------------// -#define TUSB_CFG_DEVICE_STRING_MANUFACTURER "tinyusb.org" -#define TUSB_CFG_DEVICE_STRING_PRODUCT "Device Example" -#define TUSB_CFG_DEVICE_STRING_SERIAL "1234" -#define TUSB_CFG_DEVICE_VENDORID 0x1FC9 // NXP -//#define TUSB_CFG_DEVICE_PRODUCTID 0x4567 - -#define TUSB_CFG_DEVICE_CONTROL_ENDOINT_SIZE 64 - -//------------- CLASS -------------// -#define TUSB_CFG_DEVICE_HID_KEYBOARD 0 -#define TUSB_CFG_DEVICE_HID_MOUSE 0 -#define TUSB_CFG_DEVICE_HID_GENERIC 0 -#define TUSB_CFG_DEVICE_MSC 1 -#define TUSB_CFG_DEVICE_CDC 0 - -//--------------------------------------------------------------------+ -// COMMON CONFIGURATION -//--------------------------------------------------------------------+ - -#define TUSB_CFG_DEBUG 3 - -#define TUSB_CFG_OS TUSB_OS_NONE // defined using eclipse build -//#define TUSB_CFG_OS_TASK_PRIO -#define TUSB_CFG_OS_TICKS_PER_SECOND 1000 - -#ifdef __CODE_RED // make use of code red's support for ram region macros - #if (MCU == MCU_LPC11UXX) || (MCU == MCU_LPC13UXX) - #define TUSB_RAM_SECTION ".data.$RAM1" // TODO overflow usb ram - #elif (MCU == MCU_LPC43XX) - #define TUSB_RAM_SECTION ".data.$RAM3" - #elif (MCU == MCU_LPC175X_6X) - #define TUSB_RAM_SECTION ".data.$RAM2" - #else - forgot something thach ? - #endif - - #define TUSB_CFG_ATTR_USBRAM __attribute__ ((section(TUSB_RAM_SECTION))) -#elif defined __CC_ARM // Compiled with Keil armcc - #define TUSB_CFG_ATTR_USBRAM -#else - #error compiler not specified -#endif - - -#ifdef __cplusplus - } -#endif - -#endif /* _TUSB_TUSB_CONFIG_H_ */ - -/** @} */ diff --git a/demos/device/keyboard/tusb_descriptors.c b/demos/device/keyboard/tusb_descriptors.c deleted file mode 100644 index 2661bda54..000000000 --- a/demos/device/keyboard/tusb_descriptors.c +++ /dev/null @@ -1,417 +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" - -#if TUSB_CFG_DEVICE_HID_KEYBOARD -TUSB_CFG_ATTR_USBRAM ATTR_ALIGNED(4) -uint8_t app_tusb_keyboard_desc_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 - -#if TUSB_CFG_DEVICE_HID_MOUSE -TUSB_CFG_ATTR_USBRAM ATTR_ALIGNED(4) -uint8_t app_tusb_mouse_desc_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 - -TUSB_CFG_ATTR_USBRAM ATTR_ALIGNED(4) -tusb_descriptor_device_t app_tusb_desc_device = -{ - .bLength = sizeof(tusb_descriptor_device_t), - .bDescriptorType = TUSB_DESC_TYPE_DEVICE, - .bcdUSB = 0x0200, - .bDeviceClass = 0x00, - .bDeviceSubClass = 0x00, - .bDeviceProtocol = 0x00, - - .bMaxPacketSize0 = TUSB_CFG_DEVICE_CONTROL_ENDOINT_SIZE, - - .idVendor = TUSB_CFG_DEVICE_VENDORID, - .idProduct = TUSB_CFG_PRODUCT_ID, - .bcdDevice = 0x0100, - - .iManufacturer = 0x01, - .iProduct = 0x02, - .iSerialNumber = 0x03, - - .bNumConfigurations = 0x01 // TODO multiple configurations -}; - - -TUSB_CFG_ATTR_USBRAM ATTR_ALIGNED(4) -app_descriptor_configuration_t app_tusb_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(100) - }, - - #if IAD_DESC_REQUIRED - // IAD points to CDC Interfaces - .CDC_IAD = - { - .bLength = sizeof(tusb_descriptor_interface_association_t), - .bDescriptorType = TUSB_DESC_TYPE_INTERFACE_ASSOCIATION, - - .bFirstInterface = 0, - .bInterfaceCount = 2, - - .bFunctionClass = CDC_COMMUNICATION_INTERFACE_CLASS, - .bFunctionSubClass = CDC_ABSTRACT_CONTROL_MODEL, - .bFunctionProtocol = CDC_PROTOCOL_COMMON_AT_COMMANDS, - - .iFunction = 0 - }, - #endif - - #if TUSB_CFG_DEVICE_CDC - // USB CDC Serial Interface - // CDC Control Interface - .CDC_CCI_Interface = - { - .bLength = sizeof(tusb_descriptor_interface_t), - .bDescriptorType = TUSB_DESC_TYPE_INTERFACE, - .bInterfaceNumber = INTERFACE_INDEX_CDC, - .bAlternateSetting = 0, - .bNumEndpoints = 1, - .bInterfaceClass = CDC_COMMUNICATION_INTERFACE_CLASS, - .bInterfaceSubClass = CDC_ABSTRACT_CONTROL_MODEL, - .bInterfaceProtocol = CDC_PROTOCOL_COMMON_AT_COMMANDS, - .iInterface = 0x00 - }, - - .CDC_Header = - { - .bFunctionLength = sizeof(CDC_HEADER_DESCRIPTOR), - .bDescriptorType = CDC_CS_INTERFACE, - .bDescriptorSubtype = CDC_HEADER, - .bcdCDC = 0x0120 - }, - - .CDC_ACM = - { - .bFunctionLength = sizeof(CDC_ABSTRACT_CONTROL_MANAGEMENT_DESCRIPTOR), - .bDescriptorType = CDC_CS_INTERFACE, - .bDescriptorSubtype = CDC_ABSTRACT_CONTROL_MANAGEMENT, - .bmCapabilities = 0x06 // Support Send_Break and Set_Line_Coding, Set_Control_Line_State, Get_Line_Coding, and the notification Serial_State - }, - - .CDC_Union = - { - .sUnion = - { - .bFunctionLength = sizeof(CDC_UNION_1SLAVE_DESCRIPTOR), - .bDescriptorType = CDC_CS_INTERFACE, - .bDescriptorSubtype = CDC_UNION, - .bMasterInterface = 0 - }, - .bSlaveInterfaces[0] = 1 - }, - - .CDC_NotificationEndpoint = - { - .bLength = sizeof(tusb_descriptor_endpoint_t), - .bDescriptorType = TUSB_DESC_TYPE_ENDPOINT, - .bEndpointAddress = CDC_NOTIFICATION_EP, - .bmAttributes = USB_ENDPOINT_TYPE_INTERRUPT, - .wMaxPacketSize = CDC_NOTIFICATION_EP_MAXPACKETSIZE, - .bInterval = 0xff // lowest polling rate - }, - - // CDC Data Interface - .CDC_DCI_Interface = - { - .bLength = sizeof(tusb_descriptor_interface_t), - .bDescriptorType = TUSB_DESC_TYPE_INTERFACE, - .bInterfaceNumber = INTERFACE_INDEX_CDC+1, - .bAlternateSetting = 0x00, - .bNumEndpoints = 2, - .bInterfaceClass = CDC_DATA_INTERFACE_CLASS, - .bInterfaceSubClass = 0, - .bInterfaceProtocol = 0, - .iInterface = 0x00 - }, - - .CDC_DataOutEndpoint = - { - .bLength = sizeof(tusb_descriptor_endpoint_t), - .bDescriptorType = TUSB_DESC_TYPE_ENDPOINT, - .bEndpointAddress = CDC_DATA_EP_OUT, - .bmAttributes = USB_ENDPOINT_TYPE_BULK, - .wMaxPacketSize = CDC_DATA_EP_MAXPACKET_SIZE, - .bInterval = 0 - }, - - .CDC_DataInEndpoint = - { - .bLength = sizeof(tusb_descriptor_endpoint_t), - .bDescriptorType = TUSB_DESC_TYPE_ENDPOINT, - .bEndpointAddress = CDC_DATA_EP_IN, - .bmAttributes = USB_ENDPOINT_TYPE_BULK, - .wMaxPacketSize = CDC_DATA_EP_MAXPACKET_SIZE, - .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_INDEX_HID_KEYBOARD, - .bAlternateSetting = 0x00, - .bNumEndpoints = 1, - .bInterfaceClass = TUSB_CLASS_HID, - .bInterfaceSubClass = HID_SUBCLASS_BOOT, - .bInterfaceProtocol = HID_PROTOCOL_KEYBOARD, - .iInterface = 0x00 - }, - - .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(app_tusb_keyboard_desc_report) - }, - - .keyboard_endpoint = - { - .bLength = sizeof(tusb_descriptor_endpoint_t), - .bDescriptorType = TUSB_DESC_TYPE_ENDPOINT, - .bEndpointAddress = HID_KEYBOARD_EP_IN, //todo HID_KEYBOARD_EP_IN, - .bmAttributes = { .xfer = TUSB_XFER_INTERRUPT }, - .wMaxPacketSize = { .size = 0x08 }, - .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_INDEX_HID_MOUSE, - .bAlternateSetting = 0x00, - .bNumEndpoints = 1, - .bInterfaceClass = TUSB_CLASS_HID, - .bInterfaceSubClass = HID_SUBCLASS_BOOT, - .bInterfaceProtocol = HID_PROTOCOL_MOUSE, - .iInterface = 0x00 - }, - - .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(app_tusb_mouse_desc_report) - }, - - .mouse_endpoint = - { - .bLength = sizeof(tusb_descriptor_endpoint_t), - .bDescriptorType = TUSB_DESC_TYPE_ENDPOINT, - .bEndpointAddress = HID_MOUSE_EP_IN, // TODO - .bmAttributes = { .xfer = TUSB_XFER_INTERRUPT }, - .wMaxPacketSize = { .size = 0x08 }, - .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_INDEX_MASS_STORAGE, - .bAlternateSetting = 0x00, - .bNumEndpoints = 2, - .bInterfaceClass = TUSB_CLASS_MSC, - .bInterfaceSubClass = MSC_SUBCLASS_SCSI, - .bInterfaceProtocol = MSC_PROTOCOL_BOT, - .iInterface = 0x00 - }, - - .msc_endpoint_in = - { - .bLength = sizeof(tusb_descriptor_endpoint_t), - .bDescriptorType = TUSB_DESC_TYPE_ENDPOINT, - .bEndpointAddress = 0x83, - .bmAttributes = { .xfer = TUSB_XFER_BULK }, - .wMaxPacketSize = { .size = 64 /*512*/ }, - .bInterval = 1 - }, - - .msc_endpoint_out = - { - .bLength = sizeof(tusb_descriptor_endpoint_t), - .bDescriptorType = TUSB_DESC_TYPE_ENDPOINT, - .bEndpointAddress = 0x03, - .bmAttributes = { .xfer = TUSB_XFER_BULK }, - .wMaxPacketSize = { .size = 64 /*512*/ }, - .bInterval = 1 - }, - #endif -}; - -TUSB_CFG_ATTR_USBRAM ATTR_ALIGNED(4) -app_descriptor_string_t app_tusb_desc_strings = -{ - //------------- index 0 -------------// - .language = { - .bLength = 0x04, - .bDescriptorType = TUSB_DESC_TYPE_STRING, - .id = 0x0409, // US English - }, - - //------------- index 1 -------------// - .manufacturer = { - .bLength = STRING_LEN_BYTE2UNICODE(sizeof(TUSB_CFG_DEVICE_STRING_MANUFACTURER)-1), - .bDescriptorType = TUSB_DESC_TYPE_STRING, - }, - - //------------- index 2 -------------// - .product = { - .bLength = STRING_LEN_BYTE2UNICODE(sizeof(TUSB_CFG_DEVICE_STRING_PRODUCT)-1), - .bDescriptorType = TUSB_DESC_TYPE_STRING, - }, - - //------------- index 3 -------------// - .serial = { - .bLength = STRING_LEN_BYTE2UNICODE(sizeof(TUSB_CFG_DEVICE_STRING_SERIAL)-1), - .bDescriptorType = TUSB_DESC_TYPE_STRING, - } -}; diff --git a/demos/device/keyboard/tusb_descriptors.h b/demos/device/keyboard/tusb_descriptors.h deleted file mode 100644 index 2795d17be..000000000 --- a/demos/device/keyboard/tusb_descriptors.h +++ /dev/null @@ -1,155 +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" - -#define INTERFACES_OF_CDC (TUSB_CFG_DEVICE_CDC ? 2 : 0) -#define INTERFACES_OF_HID_KEYBOARD (TUSB_CFG_DEVICE_HID_KEYBOARD ? 1 : 0) -#define INTERFACES_OF_HID_MOUSE (TUSB_CFG_DEVICE_HID_MOUSE ? 1 : 0) -#define INTERFACES_OF_HID_GENERIC (TUSB_CFG_DEVICE_HID_GENERIC ? 1 : 0) -#define INTERFACES_OF_MASS_STORAGE (TUSB_CFG_DEVICE_MSC ? 1 : 0) - -#define INTERFACE_INDEX_CDC 0 -#define INTERFACE_INDEX_HID_KEYBOARD (INTERFACE_INDEX_CDC + INTERFACES_OF_CDC ) -#define INTERFACE_INDEX_HID_MOUSE (INTERFACE_INDEX_HID_KEYBOARD + INTERFACES_OF_HID_KEYBOARD ) -#define INTERFACE_INDEX_HID_GENERIC (INTERFACE_INDEX_HID_MOUSE + INTERFACES_OF_HID_MOUSE ) -#define INTERFACE_INDEX_MASS_STORAGE (INTERFACE_INDEX_HID_GENERIC + INTERFACES_OF_HID_GENERIC ) - -#define TOTAL_INTEFACES (INTERFACES_OF_CDC + INTERFACES_OF_HID_KEYBOARD + INTERFACES_OF_HID_MOUSE + \ - INTERFACES_OF_HID_GENERIC + INTERFACES_OF_MASS_STORAGE) - -// USB Interface Assosication Descriptor -#define USB_DEVICE_CLASS_IAD USB_DEVICE_CLASS_MISCELLANEOUS -#define USB_DEVICE_SUBCLASS_IAD 0x02 -#define USB_DEVICE_PROTOCOL_IAD 0x01 - -// Interface Assosication Descriptor if device is CDC + other class -#define IAD_DESC_REQUIRED ( TUSB_CFG_DEVICE_CDC && (TOTAL_INTEFACES > 2) ) - - -// each combination of interfaces need to have different productid, as windows will bind & remember device driver after the -// first plug. -#ifndef TUSB_CFG_PRODUCT_ID -// Bitmap: MassStorage | Generic | Mouse | Key | CDC -#define PRODUCTID_BITMAP(interface, n) ( (INTERFACES_OF_##interface ? 1 : 0) << (n) ) -#define TUSB_CFG_PRODUCT_ID (0x2000 | ( PRODUCTID_BITMAP(CDC, 0) | PRODUCTID_BITMAP(HID_KEYBOARD, 1) | \ - PRODUCTID_BITMAP(HID_MOUSE, 2) | PRODUCTID_BITMAP(HID_GENERIC, 3) | \ - PRODUCTID_BITMAP(MASS_STORAGE, 4) ) ) -#endif - -//--------------------------------------------------------------------+ -// CONFIGURATION DESCRIPTOR -//--------------------------------------------------------------------+ -typedef ATTR_PACKED_STRUCT(struct) -{ - tusb_descriptor_configuration_t configuration; - - //------------- 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; - -//--------------------------------------------------------------------+ -// STRINGS DESCRIPTOR -//--------------------------------------------------------------------+ -typedef ATTR_PACKED_STRUCT(struct) -{ - //------------- index 0 -------------// - struct { - uint8_t const bLength; - uint8_t const bDescriptorType; - uint16_t id; - }language; - - //------------- index 1 -------------// - struct { - uint8_t const bLength; - uint8_t const bDescriptorType; - uint16_t unicode_string[sizeof(TUSB_CFG_DEVICE_STRING_MANUFACTURER)-1]; // exclude null-character - } manufacturer; - - //------------- index 2 -------------// - struct { - uint8_t const bLength; - uint8_t const bDescriptorType; - uint16_t unicode_string[sizeof(TUSB_CFG_DEVICE_STRING_PRODUCT)-1]; // exclude null-character - } product; - - //------------- index 3 -------------// - struct { - uint8_t const bLength; - uint8_t const bDescriptorType; - uint16_t unicode_string[sizeof(TUSB_CFG_DEVICE_STRING_SERIAL)-1]; // exclude null-character - } serial; - - //------------- more string index -------------// - -} app_descriptor_string_t; - -//--------------------------------------------------------------------+ -// Export descriptors -//--------------------------------------------------------------------+ -extern tusb_descriptor_device_t app_tusb_desc_device; -extern app_descriptor_configuration_t app_tusb_desc_configuration; -extern app_descriptor_string_t app_tusb_desc_strings; - -extern uint8_t app_tusb_keyboard_desc_report[]; -extern uint8_t app_tusb_mouse_desc_report[]; - -#endif -- cgit v1.3.1