diff --git a/examples/device/cdc_msc_hid/Makefile b/examples/device/cdc_msc/Makefile similarity index 100% rename from examples/device/cdc_msc_hid/Makefile rename to examples/device/cdc_msc/Makefile diff --git a/examples/device/cdc_msc_hid/ses/cdc_msc_hid.emProject b/examples/device/cdc_msc/ses/cdc_msc_hid.emProject similarity index 100% rename from examples/device/cdc_msc_hid/ses/cdc_msc_hid.emProject rename to examples/device/cdc_msc/ses/cdc_msc_hid.emProject diff --git a/examples/device/cdc_msc_hid/ses/lpc11u6x/LPC1100_Startup.s b/examples/device/cdc_msc/ses/lpc11u6x/LPC1100_Startup.s similarity index 100% rename from examples/device/cdc_msc_hid/ses/lpc11u6x/LPC1100_Startup.s rename to examples/device/cdc_msc/ses/lpc11u6x/LPC1100_Startup.s diff --git a/examples/device/cdc_msc_hid/ses/lpc11u6x/LPC1100_Target.js b/examples/device/cdc_msc/ses/lpc11u6x/LPC1100_Target.js similarity index 100% rename from examples/device/cdc_msc_hid/ses/lpc11u6x/LPC1100_Target.js rename to examples/device/cdc_msc/ses/lpc11u6x/LPC1100_Target.js diff --git a/examples/device/cdc_msc_hid/ses/lpc11u6x/LPC11U68_MemoryMap.xml b/examples/device/cdc_msc/ses/lpc11u6x/LPC11U68_MemoryMap.xml similarity index 100% rename from examples/device/cdc_msc_hid/ses/lpc11u6x/LPC11U68_MemoryMap.xml rename to examples/device/cdc_msc/ses/lpc11u6x/LPC11U68_MemoryMap.xml diff --git a/examples/device/cdc_msc_hid/ses/lpc11u6x/LPC11U6x_Registers.xml b/examples/device/cdc_msc/ses/lpc11u6x/LPC11U6x_Registers.xml similarity index 100% rename from examples/device/cdc_msc_hid/ses/lpc11u6x/LPC11U6x_Registers.xml rename to examples/device/cdc_msc/ses/lpc11u6x/LPC11U6x_Registers.xml diff --git a/examples/device/cdc_msc_hid/ses/lpc11u6x/LPC11U6x_Vectors.s b/examples/device/cdc_msc/ses/lpc11u6x/LPC11U6x_Vectors.s similarity index 100% rename from examples/device/cdc_msc_hid/ses/lpc11u6x/LPC11U6x_Vectors.s rename to examples/device/cdc_msc/ses/lpc11u6x/LPC11U6x_Vectors.s diff --git a/examples/device/cdc_msc_hid/ses/lpc11u6x/flash_placement.xml b/examples/device/cdc_msc/ses/lpc11u6x/flash_placement.xml similarity index 100% rename from examples/device/cdc_msc_hid/ses/lpc11u6x/flash_placement.xml rename to examples/device/cdc_msc/ses/lpc11u6x/flash_placement.xml diff --git a/examples/device/cdc_msc_hid/ses/lpc11u6x/lpc11u6x.emProject b/examples/device/cdc_msc/ses/lpc11u6x/lpc11u6x.emProject similarity index 100% rename from examples/device/cdc_msc_hid/ses/lpc11u6x/lpc11u6x.emProject rename to examples/device/cdc_msc/ses/lpc11u6x/lpc11u6x.emProject diff --git a/examples/device/cdc_msc_hid/ses/lpc11u6x/thumb_crt0.s b/examples/device/cdc_msc/ses/lpc11u6x/thumb_crt0.s similarity index 100% rename from examples/device/cdc_msc_hid/ses/lpc11u6x/thumb_crt0.s rename to examples/device/cdc_msc/ses/lpc11u6x/thumb_crt0.s diff --git a/examples/device/cdc_msc_hid/ses/lpc13xx/LPC1300_Startup.s b/examples/device/cdc_msc/ses/lpc13xx/LPC1300_Startup.s similarity index 100% rename from examples/device/cdc_msc_hid/ses/lpc13xx/LPC1300_Startup.s rename to examples/device/cdc_msc/ses/lpc13xx/LPC1300_Startup.s diff --git a/examples/device/cdc_msc_hid/ses/lpc13xx/LPC1300_Target.js b/examples/device/cdc_msc/ses/lpc13xx/LPC1300_Target.js similarity index 100% rename from examples/device/cdc_msc_hid/ses/lpc13xx/LPC1300_Target.js rename to examples/device/cdc_msc/ses/lpc13xx/LPC1300_Target.js diff --git a/examples/device/cdc_msc_hid/ses/lpc13xx/LPC1347FBD64_MemoryMap.xml b/examples/device/cdc_msc/ses/lpc13xx/LPC1347FBD64_MemoryMap.xml similarity index 100% rename from examples/device/cdc_msc_hid/ses/lpc13xx/LPC1347FBD64_MemoryMap.xml rename to examples/device/cdc_msc/ses/lpc13xx/LPC1347FBD64_MemoryMap.xml diff --git a/examples/device/cdc_msc_hid/ses/lpc13xx/LPC13Uxx_Registers.xml b/examples/device/cdc_msc/ses/lpc13xx/LPC13Uxx_Registers.xml similarity index 100% rename from examples/device/cdc_msc_hid/ses/lpc13xx/LPC13Uxx_Registers.xml rename to examples/device/cdc_msc/ses/lpc13xx/LPC13Uxx_Registers.xml diff --git a/examples/device/cdc_msc_hid/ses/lpc13xx/LPC13Uxx_Vectors.s b/examples/device/cdc_msc/ses/lpc13xx/LPC13Uxx_Vectors.s similarity index 100% rename from examples/device/cdc_msc_hid/ses/lpc13xx/LPC13Uxx_Vectors.s rename to examples/device/cdc_msc/ses/lpc13xx/LPC13Uxx_Vectors.s diff --git a/examples/device/cdc_msc_hid/ses/lpc13xx/flash_placement.xml b/examples/device/cdc_msc/ses/lpc13xx/flash_placement.xml similarity index 100% rename from examples/device/cdc_msc_hid/ses/lpc13xx/flash_placement.xml rename to examples/device/cdc_msc/ses/lpc13xx/flash_placement.xml diff --git a/examples/device/cdc_msc_hid/ses/lpc13xx/lpc13xx.emProject b/examples/device/cdc_msc/ses/lpc13xx/lpc13xx.emProject similarity index 100% rename from examples/device/cdc_msc_hid/ses/lpc13xx/lpc13xx.emProject rename to examples/device/cdc_msc/ses/lpc13xx/lpc13xx.emProject diff --git a/examples/device/cdc_msc_hid/ses/lpc13xx/thumb_crt0.s b/examples/device/cdc_msc/ses/lpc13xx/thumb_crt0.s similarity index 100% rename from examples/device/cdc_msc_hid/ses/lpc13xx/thumb_crt0.s rename to examples/device/cdc_msc/ses/lpc13xx/thumb_crt0.s diff --git a/examples/device/cdc_msc_hid/ses/lpc175x_6x/LPC1700_Startup.s b/examples/device/cdc_msc/ses/lpc175x_6x/LPC1700_Startup.s similarity index 100% rename from examples/device/cdc_msc_hid/ses/lpc175x_6x/LPC1700_Startup.s rename to examples/device/cdc_msc/ses/lpc175x_6x/LPC1700_Startup.s diff --git a/examples/device/cdc_msc_hid/ses/lpc175x_6x/LPC1700_Target.js b/examples/device/cdc_msc/ses/lpc175x_6x/LPC1700_Target.js similarity index 100% rename from examples/device/cdc_msc_hid/ses/lpc175x_6x/LPC1700_Target.js rename to examples/device/cdc_msc/ses/lpc175x_6x/LPC1700_Target.js diff --git a/examples/device/cdc_msc_hid/ses/lpc175x_6x/LPC1769_MemoryMap.xml b/examples/device/cdc_msc/ses/lpc175x_6x/LPC1769_MemoryMap.xml similarity index 100% rename from examples/device/cdc_msc_hid/ses/lpc175x_6x/LPC1769_MemoryMap.xml rename to examples/device/cdc_msc/ses/lpc175x_6x/LPC1769_MemoryMap.xml diff --git a/examples/device/cdc_msc_hid/ses/lpc175x_6x/LPC176x5x_Registers.xml b/examples/device/cdc_msc/ses/lpc175x_6x/LPC176x5x_Registers.xml similarity index 100% rename from examples/device/cdc_msc_hid/ses/lpc175x_6x/LPC176x5x_Registers.xml rename to examples/device/cdc_msc/ses/lpc175x_6x/LPC176x5x_Registers.xml diff --git a/examples/device/cdc_msc_hid/ses/lpc175x_6x/LPC176x5x_Vectors.s b/examples/device/cdc_msc/ses/lpc175x_6x/LPC176x5x_Vectors.s similarity index 100% rename from examples/device/cdc_msc_hid/ses/lpc175x_6x/LPC176x5x_Vectors.s rename to examples/device/cdc_msc/ses/lpc175x_6x/LPC176x5x_Vectors.s diff --git a/examples/device/cdc_msc_hid/ses/lpc175x_6x/flash_placement.xml b/examples/device/cdc_msc/ses/lpc175x_6x/flash_placement.xml similarity index 100% rename from examples/device/cdc_msc_hid/ses/lpc175x_6x/flash_placement.xml rename to examples/device/cdc_msc/ses/lpc175x_6x/flash_placement.xml diff --git a/examples/device/cdc_msc_hid/ses/lpc175x_6x/lpc175x_6x.emProject b/examples/device/cdc_msc/ses/lpc175x_6x/lpc175x_6x.emProject similarity index 100% rename from examples/device/cdc_msc_hid/ses/lpc175x_6x/lpc175x_6x.emProject rename to examples/device/cdc_msc/ses/lpc175x_6x/lpc175x_6x.emProject diff --git a/examples/device/cdc_msc_hid/ses/lpc175x_6x/thumb_crt0.s b/examples/device/cdc_msc/ses/lpc175x_6x/thumb_crt0.s similarity index 100% rename from examples/device/cdc_msc_hid/ses/lpc175x_6x/thumb_crt0.s rename to examples/device/cdc_msc/ses/lpc175x_6x/thumb_crt0.s diff --git a/examples/device/cdc_msc_hid/ses/lpc18xx/LPC1800_Startup.s b/examples/device/cdc_msc/ses/lpc18xx/LPC1800_Startup.s similarity index 100% rename from examples/device/cdc_msc_hid/ses/lpc18xx/LPC1800_Startup.s rename to examples/device/cdc_msc/ses/lpc18xx/LPC1800_Startup.s diff --git a/examples/device/cdc_msc_hid/ses/lpc18xx/LPC1800_Target.js b/examples/device/cdc_msc/ses/lpc18xx/LPC1800_Target.js similarity index 100% rename from examples/device/cdc_msc_hid/ses/lpc18xx/LPC1800_Target.js rename to examples/device/cdc_msc/ses/lpc18xx/LPC1800_Target.js diff --git a/examples/device/cdc_msc_hid/ses/lpc18xx/LPC1857_MemoryMap.xml b/examples/device/cdc_msc/ses/lpc18xx/LPC1857_MemoryMap.xml similarity index 100% rename from examples/device/cdc_msc_hid/ses/lpc18xx/LPC1857_MemoryMap.xml rename to examples/device/cdc_msc/ses/lpc18xx/LPC1857_MemoryMap.xml diff --git a/examples/device/cdc_msc_hid/ses/lpc18xx/LPC18xx_Registers.xml b/examples/device/cdc_msc/ses/lpc18xx/LPC18xx_Registers.xml similarity index 100% rename from examples/device/cdc_msc_hid/ses/lpc18xx/LPC18xx_Registers.xml rename to examples/device/cdc_msc/ses/lpc18xx/LPC18xx_Registers.xml diff --git a/examples/device/cdc_msc_hid/ses/lpc18xx/LPC18xx_Vectors.s b/examples/device/cdc_msc/ses/lpc18xx/LPC18xx_Vectors.s similarity index 100% rename from examples/device/cdc_msc_hid/ses/lpc18xx/LPC18xx_Vectors.s rename to examples/device/cdc_msc/ses/lpc18xx/LPC18xx_Vectors.s diff --git a/examples/device/cdc_msc_hid/ses/lpc18xx/flash_placement.xml b/examples/device/cdc_msc/ses/lpc18xx/flash_placement.xml similarity index 100% rename from examples/device/cdc_msc_hid/ses/lpc18xx/flash_placement.xml rename to examples/device/cdc_msc/ses/lpc18xx/flash_placement.xml diff --git a/examples/device/cdc_msc_hid/ses/lpc18xx/lpc18xx.emProject b/examples/device/cdc_msc/ses/lpc18xx/lpc18xx.emProject similarity index 100% rename from examples/device/cdc_msc_hid/ses/lpc18xx/lpc18xx.emProject rename to examples/device/cdc_msc/ses/lpc18xx/lpc18xx.emProject diff --git a/examples/device/cdc_msc_hid/ses/lpc18xx/thumb_crt0.s b/examples/device/cdc_msc/ses/lpc18xx/thumb_crt0.s similarity index 100% rename from examples/device/cdc_msc_hid/ses/lpc18xx/thumb_crt0.s rename to examples/device/cdc_msc/ses/lpc18xx/thumb_crt0.s diff --git a/examples/device/cdc_msc_hid/ses/lpc40xx/LPC4000_Startup.s b/examples/device/cdc_msc/ses/lpc40xx/LPC4000_Startup.s similarity index 100% rename from examples/device/cdc_msc_hid/ses/lpc40xx/LPC4000_Startup.s rename to examples/device/cdc_msc/ses/lpc40xx/LPC4000_Startup.s diff --git a/examples/device/cdc_msc_hid/ses/lpc40xx/LPC4000_Target.js b/examples/device/cdc_msc/ses/lpc40xx/LPC4000_Target.js similarity index 100% rename from examples/device/cdc_msc_hid/ses/lpc40xx/LPC4000_Target.js rename to examples/device/cdc_msc/ses/lpc40xx/LPC4000_Target.js diff --git a/examples/device/cdc_msc_hid/ses/lpc40xx/LPC4088FBD208_MemoryMap.xml b/examples/device/cdc_msc/ses/lpc40xx/LPC4088FBD208_MemoryMap.xml similarity index 100% rename from examples/device/cdc_msc_hid/ses/lpc40xx/LPC4088FBD208_MemoryMap.xml rename to examples/device/cdc_msc/ses/lpc40xx/LPC4088FBD208_MemoryMap.xml diff --git a/examples/device/cdc_msc_hid/ses/lpc40xx/LPC408x_7x_Registers.xml b/examples/device/cdc_msc/ses/lpc40xx/LPC408x_7x_Registers.xml similarity index 100% rename from examples/device/cdc_msc_hid/ses/lpc40xx/LPC408x_7x_Registers.xml rename to examples/device/cdc_msc/ses/lpc40xx/LPC408x_7x_Registers.xml diff --git a/examples/device/cdc_msc_hid/ses/lpc40xx/LPC408x_7x_Vectors.s b/examples/device/cdc_msc/ses/lpc40xx/LPC408x_7x_Vectors.s similarity index 100% rename from examples/device/cdc_msc_hid/ses/lpc40xx/LPC408x_7x_Vectors.s rename to examples/device/cdc_msc/ses/lpc40xx/LPC408x_7x_Vectors.s diff --git a/examples/device/cdc_msc_hid/ses/lpc40xx/flash_placement.xml b/examples/device/cdc_msc/ses/lpc40xx/flash_placement.xml similarity index 100% rename from examples/device/cdc_msc_hid/ses/lpc40xx/flash_placement.xml rename to examples/device/cdc_msc/ses/lpc40xx/flash_placement.xml diff --git a/examples/device/cdc_msc_hid/ses/lpc40xx/lpc40xx.emProject b/examples/device/cdc_msc/ses/lpc40xx/lpc40xx.emProject similarity index 100% rename from examples/device/cdc_msc_hid/ses/lpc40xx/lpc40xx.emProject rename to examples/device/cdc_msc/ses/lpc40xx/lpc40xx.emProject diff --git a/examples/device/cdc_msc_hid/ses/lpc40xx/thumb_crt0.s b/examples/device/cdc_msc/ses/lpc40xx/thumb_crt0.s similarity index 100% rename from examples/device/cdc_msc_hid/ses/lpc40xx/thumb_crt0.s rename to examples/device/cdc_msc/ses/lpc40xx/thumb_crt0.s diff --git a/examples/device/cdc_msc_hid/ses/lpc43xx/LPC4300_Startup.s b/examples/device/cdc_msc/ses/lpc43xx/LPC4300_Startup.s similarity index 100% rename from examples/device/cdc_msc_hid/ses/lpc43xx/LPC4300_Startup.s rename to examples/device/cdc_msc/ses/lpc43xx/LPC4300_Startup.s diff --git a/examples/device/cdc_msc_hid/ses/lpc43xx/LPC4300_Target.js b/examples/device/cdc_msc/ses/lpc43xx/LPC4300_Target.js similarity index 100% rename from examples/device/cdc_msc_hid/ses/lpc43xx/LPC4300_Target.js rename to examples/device/cdc_msc/ses/lpc43xx/LPC4300_Target.js diff --git a/examples/device/cdc_msc_hid/ses/lpc43xx/LPC4357 Cortex-M4_MemoryMap.xml b/examples/device/cdc_msc/ses/lpc43xx/LPC4357 Cortex-M4_MemoryMap.xml similarity index 100% rename from examples/device/cdc_msc_hid/ses/lpc43xx/LPC4357 Cortex-M4_MemoryMap.xml rename to examples/device/cdc_msc/ses/lpc43xx/LPC4357 Cortex-M4_MemoryMap.xml diff --git a/examples/device/cdc_msc_hid/ses/lpc43xx/LPC43xx_Registers.xml b/examples/device/cdc_msc/ses/lpc43xx/LPC43xx_Registers.xml similarity index 100% rename from examples/device/cdc_msc_hid/ses/lpc43xx/LPC43xx_Registers.xml rename to examples/device/cdc_msc/ses/lpc43xx/LPC43xx_Registers.xml diff --git a/examples/device/cdc_msc_hid/ses/lpc43xx/LPC43xx_Vectors.s b/examples/device/cdc_msc/ses/lpc43xx/LPC43xx_Vectors.s similarity index 100% rename from examples/device/cdc_msc_hid/ses/lpc43xx/LPC43xx_Vectors.s rename to examples/device/cdc_msc/ses/lpc43xx/LPC43xx_Vectors.s diff --git a/examples/device/cdc_msc_hid/ses/lpc43xx/flash_placement.xml b/examples/device/cdc_msc/ses/lpc43xx/flash_placement.xml similarity index 100% rename from examples/device/cdc_msc_hid/ses/lpc43xx/flash_placement.xml rename to examples/device/cdc_msc/ses/lpc43xx/flash_placement.xml diff --git a/examples/device/cdc_msc_hid/ses/lpc43xx/lpc43xx.emProject b/examples/device/cdc_msc/ses/lpc43xx/lpc43xx.emProject similarity index 100% rename from examples/device/cdc_msc_hid/ses/lpc43xx/lpc43xx.emProject rename to examples/device/cdc_msc/ses/lpc43xx/lpc43xx.emProject diff --git a/examples/device/cdc_msc_hid/ses/lpc43xx/thumb_crt0.s b/examples/device/cdc_msc/ses/lpc43xx/thumb_crt0.s similarity index 100% rename from examples/device/cdc_msc_hid/ses/lpc43xx/thumb_crt0.s rename to examples/device/cdc_msc/ses/lpc43xx/thumb_crt0.s diff --git a/examples/device/cdc_msc_hid/ses/nrf5x/flash_placement.xml b/examples/device/cdc_msc/ses/nrf5x/flash_placement.xml similarity index 100% rename from examples/device/cdc_msc_hid/ses/nrf5x/flash_placement.xml rename to examples/device/cdc_msc/ses/nrf5x/flash_placement.xml diff --git a/examples/device/cdc_msc_hid/ses/nrf5x/nRF52840_xxAA_MemoryMap.xml b/examples/device/cdc_msc/ses/nrf5x/nRF52840_xxAA_MemoryMap.xml similarity index 100% rename from examples/device/cdc_msc_hid/ses/nrf5x/nRF52840_xxAA_MemoryMap.xml rename to examples/device/cdc_msc/ses/nrf5x/nRF52840_xxAA_MemoryMap.xml diff --git a/examples/device/cdc_msc_hid/ses/nrf5x/nRF52840_xxAA_s140v6_MemoryMap.xml b/examples/device/cdc_msc/ses/nrf5x/nRF52840_xxAA_s140v6_MemoryMap.xml similarity index 100% rename from examples/device/cdc_msc_hid/ses/nrf5x/nRF52840_xxAA_s140v6_MemoryMap.xml rename to examples/device/cdc_msc/ses/nrf5x/nRF52840_xxAA_s140v6_MemoryMap.xml diff --git a/examples/device/cdc_msc_hid/ses/nrf5x/nRF_Target.js b/examples/device/cdc_msc/ses/nrf5x/nRF_Target.js similarity index 100% rename from examples/device/cdc_msc_hid/ses/nrf5x/nRF_Target.js rename to examples/device/cdc_msc/ses/nrf5x/nRF_Target.js diff --git a/examples/device/cdc_msc_hid/ses/nrf5x/nrf52840_Registers.xml b/examples/device/cdc_msc/ses/nrf5x/nrf52840_Registers.xml similarity index 100% rename from examples/device/cdc_msc_hid/ses/nrf5x/nrf52840_Registers.xml rename to examples/device/cdc_msc/ses/nrf5x/nrf52840_Registers.xml diff --git a/examples/device/cdc_msc_hid/ses/nrf5x/nrf5x.emProject b/examples/device/cdc_msc/ses/nrf5x/nrf5x.emProject similarity index 100% rename from examples/device/cdc_msc_hid/ses/nrf5x/nrf5x.emProject rename to examples/device/cdc_msc/ses/nrf5x/nrf5x.emProject diff --git a/examples/device/cdc_msc_hid/ses/nrf5x/thumb_crt0.s b/examples/device/cdc_msc/ses/nrf5x/thumb_crt0.s similarity index 100% rename from examples/device/cdc_msc_hid/ses/nrf5x/thumb_crt0.s rename to examples/device/cdc_msc/ses/nrf5x/thumb_crt0.s diff --git a/examples/device/cdc_msc_hid/ses/samd21/ATSAMD21G18A_MemoryMap.xml b/examples/device/cdc_msc/ses/samd21/ATSAMD21G18A_MemoryMap.xml similarity index 100% rename from examples/device/cdc_msc_hid/ses/samd21/ATSAMD21G18A_MemoryMap.xml rename to examples/device/cdc_msc/ses/samd21/ATSAMD21G18A_MemoryMap.xml diff --git a/examples/device/cdc_msc_hid/ses/samd21/ATSAMD21G18A_Registers.xml b/examples/device/cdc_msc/ses/samd21/ATSAMD21G18A_Registers.xml similarity index 100% rename from examples/device/cdc_msc_hid/ses/samd21/ATSAMD21G18A_Registers.xml rename to examples/device/cdc_msc/ses/samd21/ATSAMD21G18A_Registers.xml diff --git a/examples/device/cdc_msc_hid/ses/samd21/ATSAMD21G18A_Vectors.s b/examples/device/cdc_msc/ses/samd21/ATSAMD21G18A_Vectors.s similarity index 100% rename from examples/device/cdc_msc_hid/ses/samd21/ATSAMD21G18A_Vectors.s rename to examples/device/cdc_msc/ses/samd21/ATSAMD21G18A_Vectors.s diff --git a/examples/device/cdc_msc_hid/ses/samd21/SAMD21_Startup.s b/examples/device/cdc_msc/ses/samd21/SAMD21_Startup.s similarity index 100% rename from examples/device/cdc_msc_hid/ses/samd21/SAMD21_Startup.s rename to examples/device/cdc_msc/ses/samd21/SAMD21_Startup.s diff --git a/examples/device/cdc_msc_hid/ses/samd21/SAMD21_Target.js b/examples/device/cdc_msc/ses/samd21/SAMD21_Target.js similarity index 100% rename from examples/device/cdc_msc_hid/ses/samd21/SAMD21_Target.js rename to examples/device/cdc_msc/ses/samd21/SAMD21_Target.js diff --git a/examples/device/cdc_msc_hid/ses/samd21/flash_placement.xml b/examples/device/cdc_msc/ses/samd21/flash_placement.xml similarity index 100% rename from examples/device/cdc_msc_hid/ses/samd21/flash_placement.xml rename to examples/device/cdc_msc/ses/samd21/flash_placement.xml diff --git a/examples/device/cdc_msc_hid/ses/samd21/samd21.emProject b/examples/device/cdc_msc/ses/samd21/samd21.emProject similarity index 100% rename from examples/device/cdc_msc_hid/ses/samd21/samd21.emProject rename to examples/device/cdc_msc/ses/samd21/samd21.emProject diff --git a/examples/device/cdc_msc_hid/ses/samd21/thumb_crt0.s b/examples/device/cdc_msc/ses/samd21/thumb_crt0.s similarity index 100% rename from examples/device/cdc_msc_hid/ses/samd21/thumb_crt0.s rename to examples/device/cdc_msc/ses/samd21/thumb_crt0.s diff --git a/examples/device/cdc_msc_hid/ses/samd51/ATSAMD51J19A_MemoryMap.xml b/examples/device/cdc_msc/ses/samd51/ATSAMD51J19A_MemoryMap.xml similarity index 100% rename from examples/device/cdc_msc_hid/ses/samd51/ATSAMD51J19A_MemoryMap.xml rename to examples/device/cdc_msc/ses/samd51/ATSAMD51J19A_MemoryMap.xml diff --git a/examples/device/cdc_msc_hid/ses/samd51/ATSAMD51J19A_Registers.xml b/examples/device/cdc_msc/ses/samd51/ATSAMD51J19A_Registers.xml similarity index 100% rename from examples/device/cdc_msc_hid/ses/samd51/ATSAMD51J19A_Registers.xml rename to examples/device/cdc_msc/ses/samd51/ATSAMD51J19A_Registers.xml diff --git a/examples/device/cdc_msc_hid/ses/samd51/ATSAMD51J19A_Vectors.s b/examples/device/cdc_msc/ses/samd51/ATSAMD51J19A_Vectors.s similarity index 100% rename from examples/device/cdc_msc_hid/ses/samd51/ATSAMD51J19A_Vectors.s rename to examples/device/cdc_msc/ses/samd51/ATSAMD51J19A_Vectors.s diff --git a/examples/device/cdc_msc_hid/ses/samd51/SAMD51_Startup.s b/examples/device/cdc_msc/ses/samd51/SAMD51_Startup.s similarity index 100% rename from examples/device/cdc_msc_hid/ses/samd51/SAMD51_Startup.s rename to examples/device/cdc_msc/ses/samd51/SAMD51_Startup.s diff --git a/examples/device/cdc_msc_hid/ses/samd51/SAMD51_Target.js b/examples/device/cdc_msc/ses/samd51/SAMD51_Target.js similarity index 100% rename from examples/device/cdc_msc_hid/ses/samd51/SAMD51_Target.js rename to examples/device/cdc_msc/ses/samd51/SAMD51_Target.js diff --git a/examples/device/cdc_msc_hid/ses/samd51/flash_placement.xml b/examples/device/cdc_msc/ses/samd51/flash_placement.xml similarity index 100% rename from examples/device/cdc_msc_hid/ses/samd51/flash_placement.xml rename to examples/device/cdc_msc/ses/samd51/flash_placement.xml diff --git a/examples/device/cdc_msc_hid/ses/samd51/samd51.emProject b/examples/device/cdc_msc/ses/samd51/samd51.emProject similarity index 100% rename from examples/device/cdc_msc_hid/ses/samd51/samd51.emProject rename to examples/device/cdc_msc/ses/samd51/samd51.emProject diff --git a/examples/device/cdc_msc_hid/ses/samd51/thumb_crt0.s b/examples/device/cdc_msc/ses/samd51/thumb_crt0.s similarity index 100% rename from examples/device/cdc_msc_hid/ses/samd51/thumb_crt0.s rename to examples/device/cdc_msc/ses/samd51/thumb_crt0.s diff --git a/examples/device/cdc_msc_hid/ses/stm32f4/STM32F407VG_MemoryMap.xml b/examples/device/cdc_msc/ses/stm32f4/STM32F407VG_MemoryMap.xml similarity index 100% rename from examples/device/cdc_msc_hid/ses/stm32f4/STM32F407VG_MemoryMap.xml rename to examples/device/cdc_msc/ses/stm32f4/STM32F407VG_MemoryMap.xml diff --git a/examples/device/cdc_msc_hid/ses/stm32f4/STM32F40x_Registers.xml b/examples/device/cdc_msc/ses/stm32f4/STM32F40x_Registers.xml similarity index 100% rename from examples/device/cdc_msc_hid/ses/stm32f4/STM32F40x_Registers.xml rename to examples/device/cdc_msc/ses/stm32f4/STM32F40x_Registers.xml diff --git a/examples/device/cdc_msc_hid/ses/stm32f4/STM32F40x_Vectors.s b/examples/device/cdc_msc/ses/stm32f4/STM32F40x_Vectors.s similarity index 100% rename from examples/device/cdc_msc_hid/ses/stm32f4/STM32F40x_Vectors.s rename to examples/device/cdc_msc/ses/stm32f4/STM32F40x_Vectors.s diff --git a/examples/device/cdc_msc_hid/ses/stm32f4/STM32F4xx_Startup.s b/examples/device/cdc_msc/ses/stm32f4/STM32F4xx_Startup.s similarity index 100% rename from examples/device/cdc_msc_hid/ses/stm32f4/STM32F4xx_Startup.s rename to examples/device/cdc_msc/ses/stm32f4/STM32F4xx_Startup.s diff --git a/examples/device/cdc_msc_hid/ses/stm32f4/STM32F4xx_Target.js b/examples/device/cdc_msc/ses/stm32f4/STM32F4xx_Target.js similarity index 100% rename from examples/device/cdc_msc_hid/ses/stm32f4/STM32F4xx_Target.js rename to examples/device/cdc_msc/ses/stm32f4/STM32F4xx_Target.js diff --git a/examples/device/cdc_msc_hid/ses/stm32f4/flash_placement.xml b/examples/device/cdc_msc/ses/stm32f4/flash_placement.xml similarity index 100% rename from examples/device/cdc_msc_hid/ses/stm32f4/flash_placement.xml rename to examples/device/cdc_msc/ses/stm32f4/flash_placement.xml diff --git a/examples/device/cdc_msc_hid/ses/stm32f4/stm32f4.emProject b/examples/device/cdc_msc/ses/stm32f4/stm32f4.emProject similarity index 100% rename from examples/device/cdc_msc_hid/ses/stm32f4/stm32f4.emProject rename to examples/device/cdc_msc/ses/stm32f4/stm32f4.emProject diff --git a/examples/device/cdc_msc_hid/ses/stm32f4/thumb_crt0.s b/examples/device/cdc_msc/ses/stm32f4/thumb_crt0.s similarity index 100% rename from examples/device/cdc_msc_hid/ses/stm32f4/thumb_crt0.s rename to examples/device/cdc_msc/ses/stm32f4/thumb_crt0.s diff --git a/examples/device/cdc_msc/src/main.c b/examples/device/cdc_msc/src/main.c new file mode 100644 index 00000000..c6ed4a92 --- /dev/null +++ b/examples/device/cdc_msc/src/main.c @@ -0,0 +1,164 @@ +/* + * The MIT License (MIT) + * + * Copyright (c) 2019 Ha Thach (tinyusb.org) + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + * + */ + +#include +#include +#include + +#include "bsp/board.h" +#include "tusb.h" + +//--------------------------------------------------------------------+ +// MACRO CONSTANT TYPEDEF PROTYPES +//--------------------------------------------------------------------+ + +/* Blink pattern + * - 250 ms : device not mounted + * - 1000 ms : device mounted + * - 2500 ms : device is suspended + */ +enum { + BLINK_NOT_MOUNTED = 250, + BLINK_MOUNTED = 1000, + BLINK_SUSPENDED = 2500, +}; + +static uint32_t blink_interval_ms = BLINK_NOT_MOUNTED; + +void led_blinking_task(void); + +void cdc_task(void); + +/*------------- MAIN -------------*/ +int main(void) +{ + board_init(); + + tusb_init(); + + while (1) + { + tud_task(); // tinyusb device task + led_blinking_task(); + + cdc_task(); + } + + return 0; +} + +//--------------------------------------------------------------------+ +// Device callbacks +//--------------------------------------------------------------------+ + +// Invoked when device is mounted +void tud_mount_cb(void) +{ + blink_interval_ms = BLINK_MOUNTED; +} + +// Invoked when device is unmounted +void tud_umount_cb(void) +{ + blink_interval_ms = BLINK_NOT_MOUNTED; +} + +// Invoked when usb bus is suspended +// remote_wakeup_en : if host allow us to perform remote wakeup +// Within 7ms, device must draw an average of current less than 2.5 mA from bus +void tud_suspend_cb(bool remote_wakeup_en) +{ + (void) remote_wakeup_en; + blink_interval_ms = BLINK_SUSPENDED; +} + +// Invoked when usb bus is resumed +void tud_resume_cb(void) +{ + blink_interval_ms = BLINK_MOUNTED; +} + + +//--------------------------------------------------------------------+ +// USB CDC +//--------------------------------------------------------------------+ +void cdc_task(void) +{ + if ( tud_cdc_connected() ) + { + // connected and there are data available + if ( tud_cdc_available() ) + { + uint8_t buf[64]; + + // read and echo back + uint32_t count = tud_cdc_read(buf, sizeof(buf)); + + for(uint32_t i=0; i 4) ? 1 : 0) -#else - #define CFG_TUD_HID 1 -#endif +#define CFG_TUD_HID 0 #define CFG_TUD_MIDI 0 #define CFG_TUD_VENDOR 0 diff --git a/examples/device/cdc_msc_hid/src/usb_descriptors.c b/examples/device/cdc_msc/src/usb_descriptors.c similarity index 81% rename from examples/device/cdc_msc_hid/src/usb_descriptors.c rename to examples/device/cdc_msc/src/usb_descriptors.c index 34f391df..ac8214e3 100644 --- a/examples/device/cdc_msc_hid/src/usb_descriptors.c +++ b/examples/device/cdc_msc/src/usb_descriptors.c @@ -24,7 +24,6 @@ */ #include "tusb.h" -#include "usb_descriptors.h" /* A combination of interfaces must have a unique product id, since PC will save device driver after the first plug. * Same VID/PID with different interface e.g MSC (first), then CDC (later) will possibly cause system error on PC. @@ -45,17 +44,11 @@ tusb_desc_device_t const desc_device = .bDescriptorType = TUSB_DESC_DEVICE, .bcdUSB = 0x0200, - #if CFG_TUD_CDC // Use Interface Association Descriptor (IAD) for CDC // As required by USB Specs IAD's subclass must be common class (2) and protocol must be IAD (1) .bDeviceClass = TUSB_CLASS_MISC, .bDeviceSubClass = MISC_SUBCLASS_COMMON, .bDeviceProtocol = MISC_PROTOCOL_IAD, - #else - .bDeviceClass = 0x00, - .bDeviceSubClass = 0x00, - .bDeviceProtocol = 0x00, - #endif .bMaxPacketSize0 = CFG_TUD_ENDOINT0_SIZE, @@ -77,50 +70,19 @@ uint8_t const * tud_descriptor_device_cb(void) return (uint8_t const *) &desc_device; } -//--------------------------------------------------------------------+ -// HID Report Descriptor -//--------------------------------------------------------------------+ -#if CFG_TUD_HID - -uint8_t const desc_hid_report[] = -{ - TUD_HID_REPORT_DESC_KEYBOARD( HID_REPORT_ID(REPORT_ID_KEYBOARD), ), - TUD_HID_REPORT_DESC_MOUSE ( HID_REPORT_ID(REPORT_ID_MOUSE), ) -}; - -// Invoked when received GET HID REPORT DESCRIPTOR -// Application return pointer to descriptor -// Descriptor contents must exist long enough for transfer to complete -uint8_t const * tud_hid_descriptor_report_cb(void) -{ - return desc_hid_report; -} - -#endif - //--------------------------------------------------------------------+ // Configuration Descriptor //--------------------------------------------------------------------+ enum { -#if CFG_TUD_CDC ITF_NUM_CDC = 0, ITF_NUM_CDC_DATA, -#endif - -#if CFG_TUD_MSC ITF_NUM_MSC, -#endif - -#if CFG_TUD_HID - ITF_NUM_HID, -#endif - ITF_NUM_TOTAL }; -#define CONFIG_TOTAL_LEN (TUD_CONFIG_DESC_LEN + CFG_TUD_CDC*TUD_CDC_DESC_LEN + CFG_TUD_MSC*TUD_MSC_DESC_LEN + CFG_TUD_HID*TUD_HID_DESC_LEN) +#define CONFIG_TOTAL_LEN (TUD_CONFIG_DESC_LEN + TUD_CDC_DESC_LEN + TUD_MSC_DESC_LEN) #if CFG_TUSB_MCU == OPT_MCU_LPC175X_6X || CFG_TUSB_MCU == OPT_MCU_LPC177X_8X || CFG_TUSB_MCU == OPT_MCU_LPC40XX // LPC 17xx and 40xx endpoint type (bulk/interrupt/iso) are fixed by its number @@ -137,20 +99,11 @@ uint8_t const desc_configuration[] = // Interface count, string index, total length, attribute, power in mA TUD_CONFIG_DESCRIPTOR(ITF_NUM_TOTAL, 0, CONFIG_TOTAL_LEN, TUSB_DESC_CONFIG_ATT_REMOTE_WAKEUP, 100), -#if CFG_TUD_CDC // Interface number, string index, EP notification address and size, EP data address (out, in) and size. TUD_CDC_DESCRIPTOR(ITF_NUM_CDC, 4, 0x81, 8, 0x02, 0x82, 64), -#endif -#if CFG_TUD_MSC // Interface number, string index, EP Out & EP In address, EP size TUD_MSC_DESCRIPTOR(ITF_NUM_MSC, 5, EPNUM_MSC, 0x80 | EPNUM_MSC, (CFG_TUSB_RHPORT0_MODE & OPT_MODE_HIGH_SPEED) ? 512 : 64), -#endif - -#if CFG_TUD_HID - // Interface number, string index, protocol, report descriptor len, EP In address, size & polling interval - TUD_HID_DESCRIPTOR(ITF_NUM_HID, 6, HID_PROTOCOL_NONE, sizeof(desc_hid_report), 0x84, 16, 10) -#endif }; @@ -176,7 +129,6 @@ char const* string_desc_arr [] = "123456", // 3: Serials, should use chip ID "TinyUSB CDC", // 4: CDC Interface "TinyUSB MSC", // 5: MSC Interface - "TinyUSB HID" // 6: HID }; static uint16_t _desc_str[32]; diff --git a/examples/device/cdc_msc_hid_mynewt/readme.md b/examples/device/cdc_msc_hid_mynewt/readme.md deleted file mode 100644 index 0dac39a8..00000000 --- a/examples/device/cdc_msc_hid_mynewt/readme.md +++ /dev/null @@ -1 +0,0 @@ -Please check out this repo https://github.com/hathach/mynewt-tinyusb-example For mynewt example \ No newline at end of file diff --git a/examples/device/hid_composite/Makefile b/examples/device/hid_composite/Makefile new file mode 100644 index 00000000..69b633fe --- /dev/null +++ b/examples/device/hid_composite/Makefile @@ -0,0 +1,12 @@ +include ../../../tools/top.mk +include ../../make.mk + +INC += \ + src \ + $(TOP)/hw \ + +# Example source +EXAMPLE_SOURCE += $(wildcard src/*.c) +SRC_C += $(addprefix $(CURRENT_PATH)/, $(EXAMPLE_SOURCE)) + +include ../../rules.mk diff --git a/examples/device/cdc_msc_hid/src/main.c b/examples/device/hid_composite/src/main.c similarity index 82% rename from examples/device/cdc_msc_hid/src/main.c rename to examples/device/hid_composite/src/main.c index 65ef1dcb..4529e24f 100644 --- a/examples/device/cdc_msc_hid/src/main.c +++ b/examples/device/hid_composite/src/main.c @@ -50,8 +50,6 @@ enum { static uint32_t blink_interval_ms = BLINK_NOT_MOUNTED; void led_blinking_task(void); - -void cdc_task(void); void hid_task(void); /*------------- MAIN -------------*/ @@ -66,13 +64,7 @@ int main(void) tud_task(); // tinyusb device task led_blinking_task(); -#if CFG_TUD_CDC - cdc_task(); -#endif - -#if CFG_TUD_HID hid_task(); -#endif } return 0; @@ -109,60 +101,9 @@ void tud_resume_cb(void) blink_interval_ms = BLINK_MOUNTED; } - -//--------------------------------------------------------------------+ -// USB CDC -//--------------------------------------------------------------------+ -#if CFG_TUD_CDC -void cdc_task(void) -{ - if ( tud_cdc_connected() ) - { - // connected and there are data available - if ( tud_cdc_available() ) - { - uint8_t buf[64]; - - // read and echo back - uint32_t count = tud_cdc_read(buf, sizeof(buf)); - - for(uint32_t i=0; i 31 ) chr_count = 31; + + for(uint8_t i=0; i