Simplify the internal serial extraction routines for each architecture.
[pub/USBasp.git] / LUFA / Drivers / USB / Class / Host / MIDI.h
index a21bdbd..fc31d40 100644 (file)
@@ -1,13 +1,13 @@
 /*
              LUFA Library
 /*
              LUFA Library
-     Copyright (C) Dean Camera, 2010.
+     Copyright (C) Dean Camera, 2011.
 
   dean [at] fourwalledcubicle [dot] com
 
   dean [at] fourwalledcubicle [dot] com
-      www.fourwalledcubicle.com
+           www.lufa-lib.org
 */
 
 /*
 */
 
 /*
-  Copyright 2010  Dean Camera (dean [at] fourwalledcubicle [dot] com)
+  Copyright 2011  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
 
   Permission to use, copy, modify, distribute, and sell this
   software and its documentation for any purpose is hereby granted
  */
 
 /** \ingroup Group_USBClassMIDI
  */
 
 /** \ingroup Group_USBClassMIDI
- *  @defgroup Group_USBClassMIDIHost MIDI Class Host Mode Driver
+ *  \defgroup Group_USBClassMIDIHost MIDI Class Host Mode Driver
  *
  *  \section Sec_Dependencies Module Source Dependencies
  *  The following files must be built with any user project that uses this module:
  *    - LUFA/Drivers/USB/Class/Host/MIDI.c <i>(Makefile source module name: LUFA_SRC_USBCLASS)</i>
  *
  *
  *  \section Sec_Dependencies Module Source Dependencies
  *  The following files must be built with any user project that uses this module:
  *    - LUFA/Drivers/USB/Class/Host/MIDI.c <i>(Makefile source module name: LUFA_SRC_USBCLASS)</i>
  *
- *  \section Module Description
+ *  \section Sec_ModDescription Module Description
  *  Host Mode USB Class driver framework interface, for the MIDI USB Class driver.
  *
  *  @{
  *  Host Mode USB Class driver framework interface, for the MIDI USB Class driver.
  *
  *  @{
                        #error Do not include this file directly. Include LUFA/Drivers/USB.h instead.
                #endif
 
                        #error Do not include this file directly. Include LUFA/Drivers/USB.h instead.
                #endif
 
-               #if defined(__INCLUDE_FROM_MIDI_HOST_C) && defined(NO_STREAM_CALLBACKS)
-                       #error The NO_STREAM_CALLBACKS compile time option cannot be used in projects using the library Class drivers.
-               #endif
-
        /* Public Interface - May be used in end-application: */
                /* Type Defines: */
                        /** \brief MIDI Class Host Mode Configuration and State Structure.
                         *
                         *  Class state structure. An instance of this structure should be made within the user application,
        /* Public Interface - May be used in end-application: */
                /* Type Defines: */
                        /** \brief MIDI Class Host Mode Configuration and State Structure.
                         *
                         *  Class state structure. An instance of this structure should be made within the user application,
-                        *  and passed to each of the MIDI class driver functions as the MIDIInterfaceInfo parameter. This
+                        *  and passed to each of the MIDI class driver functions as the \c MIDIInterfaceInfo parameter. This
                         *  stores each MIDI interface's configuration and state information.
                         */
                        typedef struct
                         *  stores each MIDI interface's configuration and state information.
                         */
                        typedef struct
                                MIDI_ENUMERROR_NoError                    = 0, /**< Configuration Descriptor was processed successfully. */
                                MIDI_ENUMERROR_InvalidConfigDescriptor    = 1, /**< The device returned an invalid Configuration Descriptor. */
                                MIDI_ENUMERROR_NoCompatibleInterfaceFound = 2, /**< A compatible MIDI interface was not found in the device's Configuration Descriptor. */
                                MIDI_ENUMERROR_NoError                    = 0, /**< Configuration Descriptor was processed successfully. */
                                MIDI_ENUMERROR_InvalidConfigDescriptor    = 1, /**< The device returned an invalid Configuration Descriptor. */
                                MIDI_ENUMERROR_NoCompatibleInterfaceFound = 2, /**< A compatible MIDI interface was not found in the device's Configuration Descriptor. */
+                               MIDI_ENUMERROR_PipeConfigurationFailed    = 3, /**< One or more pipes for the specified interface could not be configured correctly. */
                        };
 
                /* Function Prototypes: */
                        };
 
                /* Function Prototypes: */
                                                         uint16_t ConfigDescriptorSize,
                                                         void* DeviceConfigDescriptor) ATTR_NON_NULL_PTR_ARG(1) ATTR_NON_NULL_PTR_ARG(3);
 
                                                         uint16_t ConfigDescriptorSize,
                                                         void* DeviceConfigDescriptor) ATTR_NON_NULL_PTR_ARG(1) ATTR_NON_NULL_PTR_ARG(3);
 
+                       /** General management task for a given MIDI host class interface, required for the correct operation of the interface. This should
+                        *  be called frequently in the main program loop, before the master USB management task \ref USB_USBTask().
+                        *
+                        *  \param[in,out] MIDIInterfaceInfo  Pointer to a structure containing an MIDI Class host configuration and state.
+                        */
+                       void MIDI_Host_USBTask(USB_ClassInfo_MIDI_Host_t* const MIDIInterfaceInfo) ATTR_NON_NULL_PTR_ARG(1);
+
                        /** Sends a MIDI event packet to the device. If no device is connected, the event packet is discarded.
                         *
                         *  \pre This function must only be called when the Host state machine is in the \ref HOST_STATE_Configured state or the
                        /** Sends a MIDI event packet to the device. If no device is connected, the event packet is discarded.
                         *
                         *  \pre This function must only be called when the Host state machine is in the \ref HOST_STATE_Configured state or the
                         *  \param[in,out] MIDIInterfaceInfo  Pointer to a structure containing a MIDI Class configuration and state.
                         *  \param[out]    Event              Pointer to a USB_MIDI_EventPacket_t structure where the received MIDI event is to be placed.
                         *
                         *  \param[in,out] MIDIInterfaceInfo  Pointer to a structure containing a MIDI Class configuration and state.
                         *  \param[out]    Event              Pointer to a USB_MIDI_EventPacket_t structure where the received MIDI event is to be placed.
                         *
-                        *  \return Boolean true if a MIDI event packet was received, false otherwise.
+                        *  \return Boolean \c true if a MIDI event packet was received, \c false otherwise.
                         */
                        bool MIDI_Host_ReceiveEventPacket(USB_ClassInfo_MIDI_Host_t* const MIDIInterfaceInfo,
                                                          MIDI_EventPacket_t* const Event) ATTR_NON_NULL_PTR_ARG(1) ATTR_NON_NULL_PTR_ARG(2);
 
                         */
                        bool MIDI_Host_ReceiveEventPacket(USB_ClassInfo_MIDI_Host_t* const MIDIInterfaceInfo,
                                                          MIDI_EventPacket_t* const Event) ATTR_NON_NULL_PTR_ARG(1) ATTR_NON_NULL_PTR_ARG(2);
 
-               /* Inline Functions: */
-                       /** General management task for a given MIDI host class interface, required for the correct operation of the interface. This should
-                        *  be called frequently in the main program loop, before the master USB management task \ref USB_USBTask().
-                        *
-                        *  \param[in,out] MIDIInterfaceInfo  Pointer to a structure containing an MIDI Class host configuration and state.
-                        */
-                       static inline void MIDI_Host_USBTask(USB_ClassInfo_MIDI_Host_t* const MIDIInterfaceInfo) ATTR_NON_NULL_PTR_ARG(1);
-                       static inline void MIDI_Host_USBTask(USB_ClassInfo_MIDI_Host_t* const MIDIInterfaceInfo)
-                       {
-                               (void)MIDIInterfaceInfo;
-                       }
-
        /* Private Interface - For use in library only: */
        #if !defined(__DOXYGEN__)
                /* Function Prototypes: */
        /* Private Interface - For use in library only: */
        #if !defined(__DOXYGEN__)
                /* Function Prototypes: */