summaryrefslogtreecommitdiffstats
path: root/lib/lufa/Demos/Host/LowLevel/MIDIHost
diff options
context:
space:
mode:
Diffstat (limited to 'lib/lufa/Demos/Host/LowLevel/MIDIHost')
-rw-r--r--lib/lufa/Demos/Host/LowLevel/MIDIHost/Config/LUFAConfig.h93
-rw-r--r--lib/lufa/Demos/Host/LowLevel/MIDIHost/ConfigDescriptor.c173
-rw-r--r--lib/lufa/Demos/Host/LowLevel/MIDIHost/ConfigDescriptor.h69
-rw-r--r--lib/lufa/Demos/Host/LowLevel/MIDIHost/MIDIHost.c266
-rw-r--r--lib/lufa/Demos/Host/LowLevel/MIDIHost/MIDIHost.h82
-rw-r--r--lib/lufa/Demos/Host/LowLevel/MIDIHost/MIDIHost.txt60
-rw-r--r--lib/lufa/Demos/Host/LowLevel/MIDIHost/asf.xml52
-rw-r--r--lib/lufa/Demos/Host/LowLevel/MIDIHost/doxyfile2395
-rw-r--r--lib/lufa/Demos/Host/LowLevel/MIDIHost/makefile43
9 files changed, 0 insertions, 3233 deletions
diff --git a/lib/lufa/Demos/Host/LowLevel/MIDIHost/Config/LUFAConfig.h b/lib/lufa/Demos/Host/LowLevel/MIDIHost/Config/LUFAConfig.h
deleted file mode 100644
index 197122fce1..0000000000
--- a/lib/lufa/Demos/Host/LowLevel/MIDIHost/Config/LUFAConfig.h
+++ /dev/null
@@ -1,93 +0,0 @@
-/*
- LUFA Library
- Copyright (C) Dean Camera, 2017.
-
- dean [at] fourwalledcubicle [dot] com
- www.lufa-lib.org
-*/
-
-/*
- Copyright 2017 Dean Camera (dean [at] fourwalledcubicle [dot] com)
-
- Permission to use, copy, modify, distribute, and sell this
- software and its documentation for any purpose is hereby granted
- without fee, provided that the above copyright notice appear in
- all copies and that both that the copyright notice and this
- permission notice and warranty disclaimer appear in supporting
- documentation, and that the name of the author not be used in
- advertising or publicity pertaining to distribution of the
- software without specific, written prior permission.
-
- The author disclaims all warranties with regard to this
- software, including all implied warranties of merchantability
- and fitness. In no event shall the author be liable for any
- special, indirect or consequential damages or any damages
- whatsoever resulting from loss of use, data or profits, whether
- in an action of contract, negligence or other tortious action,
- arising out of or in connection with the use or performance of
- this software.
-*/
-
-/** \file
- * \brief LUFA Library Configuration Header File
- *
- * This header file is used to configure LUFA's compile time options,
- * as an alternative to the compile time constants supplied through
- * a makefile.
- *
- * For information on what each token does, refer to the LUFA
- * manual section "Summary of Compile Tokens".
- */
-
-#ifndef _LUFA_CONFIG_H_
-#define _LUFA_CONFIG_H_
-
- #if (ARCH == ARCH_AVR8)
-
- /* Non-USB Related Configuration Tokens: */
-// #define DISABLE_TERMINAL_CODES
-
- /* USB Class Driver Related Tokens: */
-// #define HID_HOST_BOOT_PROTOCOL_ONLY
-// #define HID_STATETABLE_STACK_DEPTH {Insert Value Here}
-// #define HID_USAGE_STACK_DEPTH {Insert Value Here}
-// #define HID_MAX_COLLECTIONS {Insert Value Here}
-// #define HID_MAX_REPORTITEMS {Insert Value Here}
-// #define HID_MAX_REPORT_IDS {Insert Value Here}
-// #define NO_CLASS_DRIVER_AUTOFLUSH
-
- /* General USB Driver Related Tokens: */
-// #define ORDERED_EP_CONFIG
- #define USE_STATIC_OPTIONS (USB_OPT_REG_ENABLED | USB_OPT_AUTO_PLL)
-// #define USB_DEVICE_ONLY
- #define USB_HOST_ONLY
-// #define USB_STREAM_TIMEOUT_MS {Insert Value Here}
-// #define NO_LIMITED_CONTROLLER_CONNECT
-// #define NO_SOF_EVENTS
-
- /* USB Device Mode Driver Related Tokens: */
-// #define USE_RAM_DESCRIPTORS
-// #define USE_FLASH_DESCRIPTORS
-// #define USE_EEPROM_DESCRIPTORS
-// #define NO_INTERNAL_SERIAL
-// #define FIXED_CONTROL_ENDPOINT_SIZE {Insert Value Here}
-// #define DEVICE_STATE_AS_GPIOR {Insert Value Here}
-// #define FIXED_NUM_CONFIGURATIONS {Insert Value Here}
-// #define CONTROL_ONLY_DEVICE
-// #define INTERRUPT_CONTROL_ENDPOINT
-// #define NO_DEVICE_REMOTE_WAKEUP
-// #define NO_DEVICE_SELF_POWER
-
- /* USB Host Mode Driver Related Tokens: */
-// #define HOST_STATE_AS_GPIOR {Insert Value Here}
-// #define USB_HOST_TIMEOUT_MS {Insert Value Here}
-// #define HOST_DEVICE_SETTLE_DELAY_MS {Insert Value Here}
-// #define NO_AUTO_VBUS_MANAGEMENT
-// #define INVERTED_VBUS_ENABLE_LINE
-
- #else
-
- #error Unsupported architecture for this LUFA configuration file.
-
- #endif
-#endif
diff --git a/lib/lufa/Demos/Host/LowLevel/MIDIHost/ConfigDescriptor.c b/lib/lufa/Demos/Host/LowLevel/MIDIHost/ConfigDescriptor.c
deleted file mode 100644
index c02ec555c1..0000000000
--- a/lib/lufa/Demos/Host/LowLevel/MIDIHost/ConfigDescriptor.c
+++ /dev/null
@@ -1,173 +0,0 @@
-/*
- LUFA Library
- Copyright (C) Dean Camera, 2017.
-
- dean [at] fourwalledcubicle [dot] com
- www.lufa-lib.org
-*/
-
-/*
- Copyright 2017 Dean Camera (dean [at] fourwalledcubicle [dot] com)
-
- Permission to use, copy, modify, distribute, and sell this
- software and its documentation for any purpose is hereby granted
- without fee, provided that the above copyright notice appear in
- all copies and that both that the copyright notice and this
- permission notice and warranty disclaimer appear in supporting
- documentation, and that the name of the author not be used in
- advertising or publicity pertaining to distribution of the
- software without specific, written prior permission.
-
- The author disclaims all warranties with regard to this
- software, including all implied warranties of merchantability
- and fitness. In no event shall the author be liable for any
- special, indirect or consequential damages or any damages
- whatsoever resulting from loss of use, data or profits, whether
- in an action of contract, negligence or other tortious action,
- arising out of or in connection with the use or performance of
- this software.
-*/
-
-/** \file
- *
- * USB Device Configuration Descriptor processing routines, to determine the correct pipe configurations
- * needed to communication with an attached USB device. Descriptors are special computer-readable structures
- * which the host requests upon device enumeration, to determine the device's capabilities and functions.
- */
-
-#include "ConfigDescriptor.h"
-
-/** Reads and processes an attached device's descriptors, to determine compatibility and pipe configurations. This
- * routine will read in the entire configuration descriptor, and configure the hosts pipes to correctly communicate
- * with compatible devices.
- *
- * This routine searches for a MIDI interface descriptor pair containing bulk data IN and OUT endpoints.
- *
- * \return An error code from the \ref MIDIHost_GetConfigDescriptorDataCodes_t enum.
- */
-uint8_t ProcessConfigurationDescriptor(void)
-{
- uint8_t ConfigDescriptorData[512];
- void* CurrConfigLocation = ConfigDescriptorData;
- uint16_t CurrConfigBytesRem;
-
- USB_Descriptor_Interface_t* MIDIInterface = NULL;
- USB_Descriptor_Endpoint_t* DataINEndpoint = NULL;
- USB_Descriptor_Endpoint_t* DataOUTEndpoint = NULL;
-
- /* Retrieve the entire configuration descriptor into the allocated buffer */
- switch (USB_Host_GetDeviceConfigDescriptor(1, &CurrConfigBytesRem, ConfigDescriptorData, sizeof(ConfigDescriptorData)))
- {
- case HOST_GETCONFIG_Successful:
- break;
- case HOST_GETCONFIG_InvalidData:
- return InvalidConfigDataReturned;
- case HOST_GETCONFIG_BuffOverflow:
- return DescriptorTooLarge;
- default:
- return ControlError;
- }
-
- while (!(DataINEndpoint) || !(DataOUTEndpoint))
- {
- /* See if we've found a likely compatible interface, and if there is an endpoint within that interface */
- if (!(MIDIInterface) ||
- USB_GetNextDescriptorComp(&CurrConfigBytesRem, &CurrConfigLocation,
- DComp_NextMIDIStreamingDataEndpoint) != DESCRIPTOR_SEARCH_COMP_Found)
- {
- /* Get the next Mass Storage interface from the configuration descriptor */
- if (USB_GetNextDescriptorComp(&CurrConfigBytesRem, &CurrConfigLocation,
- DComp_NextMIDIStreamingInterface) != DESCRIPTOR_SEARCH_COMP_Found)
- {
- /* Descriptor not found, error out */
- return NoCompatibleInterfaceFound;
- }
-
- /* Save the interface in case we need to refer back to it later */
- MIDIInterface = DESCRIPTOR_PCAST(CurrConfigLocation, USB_Descriptor_Interface_t);
-
- /* Clear any found endpoints */
- DataINEndpoint = NULL;
- DataOUTEndpoint = NULL;
-
- /* Skip the remainder of the loop as we have not found an endpoint yet */
- continue;
- }
-
- /* Retrieve the endpoint address from the endpoint descriptor */
- USB_Descriptor_Endpoint_t* EndpointData = DESCRIPTOR_PCAST(CurrConfigLocation, USB_Descriptor_Endpoint_t);
-
- /* If the endpoint is a IN type endpoint */
- if ((EndpointData->EndpointAddress & ENDPOINT_DIR_MASK) == ENDPOINT_DIR_IN)
- DataINEndpoint = EndpointData;
- else
- DataOUTEndpoint = EndpointData;
- }
-
- /* Configure the MIDI data IN pipe */
- Pipe_ConfigurePipe(MIDI_DATA_IN_PIPE, EP_TYPE_BULK, DataINEndpoint->EndpointAddress, DataINEndpoint->EndpointSize, 1);
-
- /* Configure the MIDI data OUT pipe */
- Pipe_ConfigurePipe(MIDI_DATA_OUT_PIPE, EP_TYPE_BULK, DataOUTEndpoint->EndpointAddress, DataOUTEndpoint->EndpointSize, 1);
-
- /* Valid data found, return success */
- return SuccessfulConfigRead;
-}
-
-/** Descriptor comparator function. This comparator function is can be called while processing an attached USB device's
- * configuration descriptor, to search for a specific sub descriptor. It can also be used to abort the configuration
- * descriptor processing if an incompatible descriptor configuration is found.
- *
- * This comparator searches for the next Interface descriptor of the correct MIDI Streaming Class, Subclass and Protocol values.
- *
- * \return A value from the DSEARCH_Return_ErrorCodes_t enum
- */
-uint8_t DComp_NextMIDIStreamingInterface(void* CurrentDescriptor)
-{
- USB_Descriptor_Header_t* Header = DESCRIPTOR_PCAST(CurrentDescriptor, USB_Descriptor_Header_t);
-
- if (Header->Type == DTYPE_Interface)
- {
- USB_Descriptor_Interface_t* Interface = DESCRIPTOR_PCAST(CurrentDescriptor, USB_Descriptor_Interface_t);
-
- /* Check the MIDI descriptor class, subclass and protocol, break out if correct data interface found */
- if ((Interface->Class == AUDIO_CSCP_AudioClass) &&
- (Interface->SubClass == AUDIO_CSCP_MIDIStreamingSubclass) &&
- (Interface->Protocol == AUDIO_CSCP_StreamingProtocol))
- {
- return DESCRIPTOR_SEARCH_Found;
- }
- }
-
- return DESCRIPTOR_SEARCH_NotFound;
-}
-
-/** Descriptor comparator function. This comparator function is can be called while processing an attached USB device's
- * configuration descriptor, to search for a specific sub descriptor. It can also be used to abort the configuration
- * descriptor processing if an incompatible descriptor configuration is found.
- *
- * This comparator searches for the next bulk IN or OUT endpoint within the current interface, aborting the search if
- * another interface descriptor is found before the required endpoint.
- *
- * \return A value from the DSEARCH_Return_ErrorCodes_t enum
- */
-uint8_t DComp_NextMIDIStreamingDataEndpoint(void* CurrentDescriptor)
-{
- USB_Descriptor_Header_t* Header = DESCRIPTOR_PCAST(CurrentDescriptor, USB_Descriptor_Header_t);
-
- if (Header->Type == DTYPE_Endpoint)
- {
- USB_Descriptor_Endpoint_t* Endpoint = DESCRIPTOR_PCAST(CurrentDescriptor, USB_Descriptor_Endpoint_t);
-
- /* Check the endpoint type, break out if correct BULK type endpoint found */
- if ((Endpoint->Attributes & EP_TYPE_MASK) == EP_TYPE_BULK)
- return DESCRIPTOR_SEARCH_Found;
- }
- else if (Header->Type == DTYPE_Interface)
- {
- return DESCRIPTOR_SEARCH_Fail;
- }
-
- return DESCRIPTOR_SEARCH_NotFound;
-}
-
diff --git a/lib/lufa/Demos/Host/LowLevel/MIDIHost/ConfigDescriptor.h b/lib/lufa/Demos/Host/LowLevel/MIDIHost/ConfigDescriptor.h
deleted file mode 100644
index 7cceba0597..0000000000
--- a/lib/lufa/Demos/Host/LowLevel/MIDIHost/ConfigDescriptor.h
+++ /dev/null
@@ -1,69 +0,0 @@
-/*
- LUFA Library
- Copyright (C) Dean Camera, 2017.
-
- dean [at] fourwalledcubicle [dot] com
- www.lufa-lib.org
-*/
-
-/*
- Copyright 2017 Dean Camera (dean [at] fourwalledcubicle [dot] com)
-
- Permission to use, copy, modify, distribute, and sell this
- software and its documentation for any purpose is hereby granted
- without fee, provided that the above copyright notice appear in
- all copies and that both that the copyright notice and this
- permission notice and warranty disclaimer appear in supporting
- documentation, and that the name of the author not be used in
- advertising or publicity pertaining to distribution of the
- software without specific, written prior permission.
-
- The author disclaims all warranties with regard to this
- software, including all implied warranties of merchantability
- and fitness. In no event shall the author be liable for any
- special, indirect or consequential damages or any damages
- whatsoever resulting from loss of use, data or profits, whether
- in an action of contract, negligence or other tortious action,
- arising out of or in connection with the use or performance of
- this software.
-*/
-
-/** \file
- *
- * Header file for ConfigDescriptor.c.
- */
-
-#ifndef _CONFIGDESCRIPTOR_H_
-#define _CONFIGDESCRIPTOR_H_
-
- /* Includes: */
- #include <LUFA/Drivers/USB/USB.h>
-
- #include "MIDIHost.h"
-
- /* Macros: */
- /** Pipe address for the MIDI data IN pipe. */
- #define MIDI_DATA_IN_PIPE (PIPE_DIR_IN | 1)
-
- /** Pipe address for the MIDI data OUT pipe. */
- #define MIDI_DATA_OUT_PIPE (PIPE_DIR_OUT | 2)
-
- /* Enums: */
- /** Enum for the possible return codes of the \ref ProcessConfigurationDescriptor() function. */
- enum MIDIHost_GetConfigDescriptorDataCodes_t
- {
- SuccessfulConfigRead = 0, /**< Configuration Descriptor was processed successfully */
- ControlError = 1, /**< A control request to the device failed to complete successfully */
- DescriptorTooLarge = 2, /**< The device's Configuration Descriptor is too large to process */
- InvalidConfigDataReturned = 3, /**< The device returned an invalid Configuration Descriptor */
- NoCompatibleInterfaceFound = 4, /**< A compatible interface with the required endpoints was not found */
- };
-
- /* Function Prototypes: */
- uint8_t ProcessConfigurationDescriptor(void);
-
- uint8_t DComp_NextMIDIStreamingInterface(void* CurrentDescriptor);
- uint8_t DComp_NextMIDIStreamingDataEndpoint(void* CurrentDescriptor);
-
-#endif
-
diff --git a/lib/lufa/Demos/Host/LowLevel/MIDIHost/MIDIHost.c b/lib/lufa/Demos/Host/LowLevel/MIDIHost/MIDIHost.c
deleted file mode 100644
index 95043d724e..0000000000
--- a/lib/lufa/Demos/Host/LowLevel/MIDIHost/MIDIHost.c
+++ /dev/null
@@ -1,266 +0,0 @@
-/*
- LUFA Library
- Copyright (C) Dean Camera, 2017.
-
- dean [at] fourwalledcubicle [dot] com
- www.lufa-lib.org
-*/
-
-/*
- Copyright 2017 Dean Camera (dean [at] fourwalledcubicle [dot] com)
-
- Permission to use, copy, modify, distribute, and sell this
- software and its documentation for any purpose is hereby granted
- without fee, provided that the above copyright notice appear in
- all copies and that both that the copyright notice and this
- permission notice and warranty disclaimer appear in supporting
- documentation, and that the name of the author not be used in
- advertising or publicity pertaining to distribution of the
- software without specific, written prior permission.
-
- The author disclaims all warranties with regard to this
- software, including all implied warranties of merchantability
- and fitness. In no event shall the author be liable for any
- special, indirect or consequential damages or any damages
- whatsoever resulting from loss of use, data or profits, whether
- in an action of contract, negligence or other tortious action,
- arising out of or in connection with the use or performance of
- this software.
-*/
-
-/** \file
- *
- * Main source file for the MIDIHost demo. This file contains the main tasks of
- * the demo and is responsible for the initial application hardware configuration.
- */
-
-#include "MIDIHost.h"
-
-/** Main program entry point. This routine configures the hardware required by the application, then
- * enters a loop to run the application tasks in sequence.
- */
-int main(void)
-{
- SetupHardware();
-
- puts_P(PSTR(ESC_FG_CYAN "MIDI Host Demo running.\r\n" ESC_FG_WHITE));
-
- LEDs_SetAllLEDs(LEDMASK_USB_NOTREADY);
- GlobalInterruptEnable();
-
- for (;;)
- {
- MIDIHost_Task();
-
- USB_USBTask();
- }
-}
-
-/** Configures the board hardware and chip peripherals for the demo's functionality. */
-void SetupHardware(void)
-{
-#if (ARCH == ARCH_AVR8)
- /* Disable watchdog if enabled by bootloader/fuses */
- MCUSR &= ~(1 << WDRF);
- wdt_disable();
-
- /* Disable clock division */
- clock_prescale_set(clock_div_1);
-#endif
-
- /* Hardware Initialization */
- Serial_Init(9600, false);
- LEDs_Init();
- Buttons_Init();
- Joystick_Init();
- USB_Init();
-
- /* Create a stdio stream for the serial port for stdin and stdout */
- Serial_CreateStream(NULL);
-}
-
-/** Event handler for the USB_DeviceAttached event. This indicates that a device has been attached to the host, and
- * starts the library USB task to begin the enumeration and USB management process.
- */
-void EVENT_USB_Host_DeviceAttached(void)
-{
- puts_P(PSTR(ESC_FG_GREEN "Device Attached.\r\n" ESC_FG_WHITE));
- LEDs_SetAllLEDs(LEDMASK_USB_ENUMERATING);
-}
-
-/** Event handler for the USB_DeviceUnattached event. This indicates that a device has been removed from the host, and
- * stops the library USB task management process.
- */
-void EVENT_USB_Host_DeviceUnattached(void)
-{
- puts_P(PSTR(ESC_FG_GREEN "\r\nDevice Unattached.\r\n" ESC_FG_WHITE));
- LEDs_SetAllLEDs(LEDMASK_USB_NOTREADY);
-}
-
-/** Event handler for the USB_DeviceEnumerationComplete event. This indicates that a device has been successfully
- * enumerated by the host and is now ready to be used by the application.
- */
-void EVENT_USB_Host_DeviceEnumerationComplete(void)
-{
- puts_P(PSTR("Getting Config Data.\r\n"));
-
- uint8_t ErrorCode;
-
- /* Get and process the configuration descriptor data */
- if ((ErrorCode = ProcessConfigurationDescriptor()) != SuccessfulConfigRead)
- {
- if (ErrorCode == ControlError)
- puts_P(PSTR(ESC_FG_RED "Control Error (Get Configuration).\r\n"));
- else
- puts_P(PSTR(ESC_FG_RED "Invalid Device.\r\n"));
-
- printf_P(PSTR(" -- Error Code: %d\r\n" ESC_FG_WHITE), ErrorCode);
-
- LEDs_SetAllLEDs(LEDMASK_USB_ERROR);
- return;
- }
-
- /* Set the device configuration to the first configuration (rarely do devices use multiple configurations) */
- if ((ErrorCode = USB_Host_SetDeviceConfiguration(1)) != HOST_SENDCONTROL_Successful)
- {
- printf_P(PSTR(ESC_FG_RED "Control Error (Set Configuration).\r\n"
- " -- Error Code: %d\r\n" ESC_FG_WHITE), ErrorCode);
-
- LEDs_SetAllLEDs(LEDMASK_USB_ERROR);
- return;
- }
-
- puts_P(PSTR("MIDI Device Enumerated.\r\n"));
- LEDs_SetAllLEDs(LEDMASK_USB_READY);
-}
-
-/** Event handler for the USB_HostError event. This indicates that a hardware error occurred while in host mode. */
-void EVENT_USB_Host_HostError(const uint8_t ErrorCode)
-{
- USB_Disable();
-
- printf_P(PSTR(ESC_FG_RED "Host Mode Error\r\n"
- " -- Error Code %d\r\n" ESC_FG_WHITE), ErrorCode);
-
- LEDs_SetAllLEDs(LEDMASK_USB_ERROR);
- for(;;);
-}
-
-/** Event handler for the USB_DeviceEnumerationFailed event. This indicates that a problem occurred while
- * enumerating an attached USB device.
- */
-void EVENT_USB_Host_DeviceEnumerationFailed(const uint8_t ErrorCode,
- const uint8_t SubErrorCode)
-{
- printf_P(PSTR(ESC_FG_RED "Dev Enum Error\r\n"
- " -- Error Code %d\r\n"
- " -- Sub Error Code %d\r\n"
- " -- In State %d\r\n" ESC_FG_WHITE), ErrorCode, SubErrorCode, USB_HostState);
-
- LEDs_SetAllLEDs(LEDMASK_USB_ERROR);
-}
-
-/** Task to read in note on/off messages from the attached MIDI device and print it to the serial port.
- * When the board joystick or buttons are pressed, note on/off messages are sent to the attached device.
- */
-void MIDIHost_Task(void)
-{
- if (USB_HostState != HOST_STATE_Configured)
- return;
-
- Pipe_SelectPipe(MIDI_DATA_IN_PIPE);
- Pipe_Unfreeze();
-
- if (Pipe_IsINReceived())
- {
- MIDI_EventPacket_t MIDIEvent;
-
- Pipe_Read_Stream_LE(&MIDIEvent, sizeof(MIDIEvent), NULL);
-
- if (!(Pipe_BytesInPipe()))
- Pipe_ClearIN();
-
- bool NoteOnEvent = (MIDIEvent.Event == MIDI_EVENT(0, MIDI_COMMAND_NOTE_ON));
- bool NoteOffEvent = (MIDIEvent.Event == MIDI_EVENT(0, MIDI_COMMAND_NOTE_OFF));
-
- if (NoteOnEvent || NoteOffEvent)
- {
- printf_P(PSTR("MIDI Note %s - Channel %d, Pitch %d, Velocity %d\r\n"), NoteOnEvent ? "On" : "Off",
- ((MIDIEvent.Data1 & 0x0F) + 1),
- MIDIEvent.Data2, MIDIEvent.Data3);
- }
- }
-
- Pipe_Freeze();
-
- Pipe_SelectPipe(MIDI_DATA_OUT_PIPE);
- Pipe_Unfreeze();
-
- if (Pipe_IsOUTReady())
- {
- uint8_t MIDICommand = 0;
- uint8_t MIDIPitch;
-
- static uint8_t PrevJoystickStatus;
- uint8_t JoystickStatus = Joystick_GetStatus();
- uint8_t JoystickChanges = (JoystickStatus ^ PrevJoystickStatus);
-
- /* Get board button status - if pressed use channel 10 (percussion), otherwise use channel 1 */
- uint8_t Channel = ((Buttons_GetStatus() & BUTTONS_BUTTON1) ? MIDI_CHANNEL(10) : MIDI_CHANNEL(1));
-
- if (JoystickChanges & JOY_LEFT)
- {
- MIDICommand = ((JoystickStatus & JOY_LEFT)? MIDI_COMMAND_NOTE_ON : MIDI_COMMAND_NOTE_OFF);
- MIDIPitch = 0x3C;
- }
-
- if (JoystickChanges & JOY_UP)
- {
- MIDICommand = ((JoystickStatus & JOY_UP)? MIDI_COMMAND_NOTE_ON : MIDI_COMMAND_NOTE_OFF);
- MIDIPitch = 0x3D;
- }
-
- if (JoystickChanges & JOY_RIGHT)
- {
- MIDICommand = ((JoystickStatus & JOY_RIGHT)? MIDI_COMMAND_NOTE_ON : MIDI_COMMAND_NOTE_OFF);
- MIDIPitch = 0x3E;
- }
-
- if (JoystickChanges & JOY_DOWN)
- {
- MIDICommand = ((JoystickStatus & JOY_DOWN)? MIDI_COMMAND_NOTE_ON : MIDI_COMMAND_NOTE_OFF);
- MIDIPitch = 0x3F;
- }
-
- if (JoystickChanges & JOY_PRESS)
- {
- MIDICommand = ((JoystickStatus & JOY_PRESS)? MIDI_COMMAND_NOTE_ON : MIDI_COMMAND_NOTE_OFF);
- MIDIPitch = 0x3B;
- }
-
- /* Check if a MIDI command is to be sent */
- if (MIDICommand)
- {
- MIDI_EventPacket_t MIDIEvent = (MIDI_EventPacket_t)
- {
- .Event = MIDI_EVENT(0, MIDICommand),
-
- .Data1 = MIDICommand | Channel,
- .Data2 = MIDIPitch,
- .Data3 = MIDI_STANDARD_VELOCITY,
- };
-
- /* Write the MIDI event packet to the pipe */
- Pipe_Write_Stream_LE(&MIDIEvent, sizeof(MIDIEvent), NULL);
-
- /* Send the data in the pipe to the device */
- Pipe_ClearOUT();
- }
-
- Pipe_Freeze();
-
- /* Save previous joystick value for next joystick change detection */
- PrevJoystickStatus = JoystickStatus;
- }
-}
-
diff --git a/lib/lufa/Demos/Host/LowLevel/MIDIHost/MIDIHost.h b/lib/lufa/Demos/Host/LowLevel/MIDIHost/MIDIHost.h
deleted file mode 100644
index eceea09778..0000000000
--- a/lib/lufa/Demos/Host/LowLevel/MIDIHost/MIDIHost.h
+++ /dev/null
@@ -1,82 +0,0 @@
-/*
- LUFA Library
- Copyright (C) Dean Camera, 2017.
-
- dean [at] fourwalledcubicle [dot] com
- www.lufa-lib.org
-*/
-
-/*
- Copyright 2017 Dean Camera (dean [at] fourwalledcubicle [dot] com)
-
- Permission to use, copy, modify, distribute, and sell this
- software and its documentation for any purpose is hereby granted
- without fee, provided that the above copyright notice appear in
- all copies and that both that the copyright notice and this
- permission notice and warranty disclaimer appear in supporting
- documentation, and that the name of the author not be used in
- advertising or publicity pertaining to distribution of the
- software without specific, written prior permission.
-
- The author disclaims all warranties with regard to this
- software, including all implied warranties of merchantability
- and fitness. In no event shall the author be liable for any
- special, indirect or consequential damages or any damages
- whatsoever resulting from loss of use, data or profits, whether
- in an action of contract, negligence or other tortious action,
- arising out of or in connection with the use or performance of
- this software.
-*/
-
-/** \file
- *
- * Header file for MIDIHost.c.
- */
-
-#ifndef _MIDI_HOST_H_
-#define _MIDI_HOST_H_
-
- /* Includes: */
- #include <avr/io.h>
- #include <avr/wdt.h>
- #include <avr/pgmspace.h>
- #include <avr/power.h>
- #include <avr/interrupt.h>
- #include <stdio.h>
-
- #include <LUFA/Drivers/Misc/TerminalCodes.h>
- #include <LUFA/Drivers/USB/USB.h>
- #include <LUFA/Drivers/Peripheral/Serial.h>
- #include <LUFA/Drivers/Board/LEDs.h>
- #include <LUFA/Drivers/Board/Buttons.h>
- #include <LUFA/Drivers/Board/Joystick.h>
- #include <LUFA/Platform/Platform.h>
-
- #include "ConfigDescriptor.h"
-
- /* Macros: */
- /** LED mask for the library LED driver, to indicate that the USB interface is not ready. */
- #define LEDMASK_USB_NOTREADY LEDS_LED1
-
- /** LED mask for the library LED driver, to indicate that the USB interface is enumerating. */
- #define LEDMASK_USB_ENUMERATING (LEDS_LED2 | LEDS_LED3)
-
- /** LED mask for the library LED driver, to indicate that the USB interface is ready. */
- #define LEDMASK_USB_READY (LEDS_LED2 | LEDS_LED4)
-
- /** LED mask for the library LED driver, to indicate that an error has occurred in the USB interface. */
- #define LEDMASK_USB_ERROR (LEDS_LED1 | LEDS_LED3)
-
- /* Function Prototypes: */
- void SetupHardware(void);
- void MIDIHost_Task(void);
-
- void EVENT_USB_Host_HostError(const uint8_t ErrorCode);
- void EVENT_USB_Host_DeviceAttached(void);
- void EVENT_USB_Host_DeviceUnattached(void);
- void EVENT_USB_Host_DeviceEnumerationFailed(const uint8_t ErrorCode,
- const uint8_t SubErrorCode);
- void EVENT_USB_Host_DeviceEnumerationComplete(void);
-
-#endif
-
diff --git a/lib/lufa/Demos/Host/LowLevel/MIDIHost/MIDIHost.txt b/lib/lufa/Demos/Host/LowLevel/MIDIHost/MIDIHost.txt
deleted file mode 100644
index 33a8319f06..0000000000
--- a/lib/lufa/Demos/Host/LowLevel/MIDIHost/MIDIHost.txt
+++ /dev/null
@@ -1,60 +0,0 @@
-/** \file
- *
- * This file contains special DoxyGen information for the generation of the main page and other special
- * documentation pages. It is not a project source file.
- */
-
-/** \mainpage MIDI Host Demo
- *
- * \section Sec_Compat Demo Compatibility:
- *
- * The following list indicates what microcontrollers are compatible with this demo.
- *
- * \li Series 7 USB AVRs (AT90USBxxx7)
- *
- * \section Sec_Info USB Information:
- *
- * The following table gives a rundown of the USB utilization of this demo.
- *
- * <table>
- * <tr>
- * <td><b>USB Mode:</b></td>
- * <td>Host</td>
- * </tr>
- * <tr>
- * <td><b>USB Class:</b></td>
- * <td>Audio Class Device</td>
- * </tr>
- * <tr>
- * <td><b>USB Subclass:</b></td>
- * <td>MIDI Subclass</td>
- * </tr>
- * <tr>
- * <td><b>Relevant Standards:</b></td>
- * <td>USBIF USB MIDI Audio Class Standard</td>
- * </tr>
- * <tr>
- * <td><b>Supported USB Speeds:</b></td>
- * <td>Full Speed Mode</td>
- * </tr>
- * </table>
- *
- * \section Sec_Description Project Description:
- *
- * MIDI host demonstration application. This demo will enumerate an attached USB-MIDI device, and print incoming MIDI note
- * on and off messages on any channel to the serial port. Pressing the board joystick will send note on and off messages to
- * the attached MIDI device, with the board HWB controlling the note channel.
- *
- * \section Sec_Options Project Options
- *
- * The following defines can be found in this demo, which can control the demo behaviour when defined, or changed in value.
- *
- * <table>
- * <tr>
- * <td>
- * None
- * </td>
- * </tr>
- * </table>
- */
-
diff --git a/lib/lufa/Demos/Host/LowLevel/MIDIHost/asf.xml b/lib/lufa/Demos/Host/LowLevel/MIDIHost/asf.xml
deleted file mode 100644
index f2c933bfd8..0000000000
--- a/lib/lufa/Demos/Host/LowLevel/MIDIHost/asf.xml
+++ /dev/null
@@ -1,52 +0,0 @@
-<asf xmlversion="1.0">
- <project caption="MIDI Host Demo (Low Level APIs)" id="lufa.demos.host.lowlevel.midi.example.avr8">
- <require idref="lufa.demos.host.lowlevel.midi"/>
- <require idref="lufa.boards.dummy.avr8"/>
- <generator value="as5_8"/>
-
- <device-support value="at90usb1287"/>
- <config name="lufa.drivers.board.name" value="none"/>
-
- <build type="define" name="F_CPU" value="16000000UL"/>
- <build type="define" name="F_USB" value="16000000UL"/>
- </project>
-
- <module type="application" id="lufa.demos.host.lowlevel.midi" caption="MIDI Host Demo (Low Level APIs)">
- <info type="description" value="summary">
- MIDI Host demo, capable of sending and receiving MIDI messages to and from an attached device. This demo uses the Low Level LUFA APIs to manually implement a USB Class for demonstration purposes without using the simpler in-built LUFA Class Driver APIs.
- </info>
-
- <info type="gui-flag" value="move-to-root"/>
-
- <info type="keyword" value="Technology">
- <keyword value="Low Level APIs"/>
- <keyword value="USB Host"/>
- <keyword value="MIDI Class"/>
- </info>
-
- <device-support-alias value="lufa_avr8"/>
- <device-support-alias value="lufa_xmega"/>
- <device-support-alias value="lufa_uc3"/>
-
- <build type="distribute" subtype="user-file" value="doxyfile"/>
- <build type="distribute" subtype="user-file" value="MIDIHost.txt"/>
-
- <build type="c-source" value="MIDIHost.c"/>
- <build type="c-source" value="ConfigDescriptor.c"/>
- <build type="header-file" value="MIDIHost.h"/>
- <build type="header-file" value="ConfigDescriptor.h"/>
-
- <build type="module-config" subtype="path" value="Config"/>
- <build type="header-file" value="Config/LUFAConfig.h"/>
-
- <require idref="lufa.common"/>
- <require idref="lufa.platform"/>
- <require idref="lufa.drivers.usb"/>
- <require idref="lufa.drivers.peripheral.usart"/>
- <require idref="lufa.drivers.misc.ansi"/>
- <require idref="lufa.drivers.board"/>
- <require idref="lufa.drivers.board.leds"/>
- <require idref="lufa.drivers.board.buttons"/>
- <require idref="lufa.drivers.board.joystick"/>
- </module>
-</asf>
diff --git a/lib/lufa/Demos/Host/LowLevel/MIDIHost/doxyfile b/lib/lufa/Demos/Host/LowLevel/MIDIHost/doxyfile
deleted file mode 100644
index 7a6906a271..0000000000
--- a/lib/lufa/Demos/Host/LowLevel/MIDIHost/doxyfile
+++ /dev/null
@@ -1,2395 +0,0 @@
-# Doxyfile 1.8.9
-
-# This file describes the settings to be used by the documentation system
-# doxygen (www.doxygen.org) for a project.
-#
-# All text after a double hash (##) is considered a comment and is placed in
-# front of the TAG it is preceding.
-#
-# All text after a single hash (#) is considered a comment and will be ignored.
-# The format is:
-# TAG = value [value, ...]
-# For lists, items can also be appended using:
-# TAG += value [value, ...]
-# Values that contain spaces should be placed between quotes (\" \").
-
-#---------------------------------------------------------------------------
-# Project related configuration options
-#---------------------------------------------------------------------------
-
-# This tag specifies the encoding used for all characters in the config file
-# that follow. The default is UTF-8 which is also the encoding used for all text
-# before the first occurrence of this tag. Doxygen uses libiconv (or the iconv
-# built into libc) for the transcoding. See http://www.gnu.org/software/libiconv
-# for the list of possible encodings.
-# The default value is: UTF-8.
-
-DOXYFILE_ENCODING = UTF-8
-
-# The PROJECT_NAME tag is a single word (or a sequence of words surrounded by
-# double-quotes, unless you are using Doxywizard) that should identify the
-# project for which the documentation is generated. This name is used in the
-# title of most generated pages and in a few other places.
-# The default value is: My Project.
-
-PROJECT_NAME = "LUFA Library - MIDI Host Demo"
-
-# The PROJECT_NUMBER tag can be used to enter a project or revision number. This
-# could be handy for archiving the generated documentation or if some version
-# control system is used.
-
-PROJECT_NUMBER =
-
-# Using the PROJECT_BRIEF tag one can provide an optional one line description
-# for a project that appears at the top of each page and should give viewer a
-# quick idea about the purpose of the project. Keep the description short.
-
-PROJECT_BRIEF =
-
-# With the PROJECT_LOGO tag one can specify a logo or an icon that is included
-# in the documentation. The maximum height of the logo should not exceed 55
-# pixels and the maximum width should not exceed 200 pixels. Doxygen will copy
-# the logo to the output directory.
-
-PROJECT_LOGO =
-
-# The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute) path
-# into which the generated documentation will be written. If a relative path is
-# entered, it will be relative to the location where doxygen was started. If
-# left blank the current directory will be used.
-
-OUTPUT_DIRECTORY = ./Documentation/
-
-# If the CREATE_SUBDIRS tag is set to YES then doxygen will create 4096 sub-
-# directories (in 2 levels) under the output directory of each output format and
-# will distribute the generated files over these directories. Enabling this
-# option can be useful when feeding doxygen a huge amount of source files, where
-# putting all generated files in the same directory would otherwise causes
-# performance problems for the file system.
-# The default value is: NO.
-
-CREATE_SUBDIRS = NO
-
-# If the ALLOW_UNICODE_NAMES tag is set to YES, doxygen will allow non-ASCII
-# characters to appear in the names of generated files. If set to NO, non-ASCII
-# characters will be escaped, for example _xE3_x81_x84 will be used for Unicode
-# U+3044.
-# The default value is: NO.
-
-ALLOW_UNICODE_NAMES = NO
-
-# The OUTPUT_LANGUAGE tag is used to specify the language in which all
-# documentation generated by doxygen is written. Doxygen will use this
-# information to generate all constant output in the proper language.
-# Possible values are: Afrikaans, Arabic, Armenian, Brazilian, Catalan, Chinese,
-# Chinese-Traditional, C