Add const keyword to the demo function parameters where possible.
[pub/USBasp.git] / LUFA / Drivers / USB / Class / Common / MIDI.h
index a52b037..aa84382 100644 (file)
@@ -1,21 +1,21 @@
 /*\r
              LUFA Library\r
 /*\r
              LUFA Library\r
-     Copyright (C) Dean Camera, 2009.\r
+     Copyright (C) Dean Camera, 2010.\r
               \r
   dean [at] fourwalledcubicle [dot] com\r
       www.fourwalledcubicle.com\r
 */\r
 \r
 /*\r
               \r
   dean [at] fourwalledcubicle [dot] com\r
       www.fourwalledcubicle.com\r
 */\r
 \r
 /*\r
-  Copyright 2009  Dean Camera (dean [at] fourwalledcubicle [dot] com)\r
-\r
-  Permission to use, copy, modify, and distribute this software\r
-  and its documentation for any purpose and without fee is hereby\r
-  granted, provided that the above copyright notice appear in all\r
-  copies and that both that the copyright notice and this\r
-  permission notice and warranty disclaimer appear in supporting\r
-  documentation, and that the name of the author not be used in\r
-  advertising or publicity pertaining to distribution of the\r
+  Copyright 2010  Dean Camera (dean [at] fourwalledcubicle [dot] com)\r
+\r
+  Permission to use, copy, modify, distribute, and sell this \r
+  software and its documentation for any purpose is hereby granted\r
+  without fee, provided that the above copyright notice appear in \r
+  all copies and that both that the copyright notice and this\r
+  permission notice and warranty disclaimer appear in supporting \r
+  documentation, and that the name of the author not be used in \r
+  advertising or publicity pertaining to distribution of the \r
   software without specific, written prior permission.\r
 \r
   The author disclaim all warranties with regard to this\r
   software without specific, written prior permission.\r
 \r
   The author disclaim all warranties with regard to this\r
   this software.\r
 */\r
 \r
   this software.\r
 */\r
 \r
+/** \file\r
+ *  \brief Common definitions and declarations for the library USB MIDI Class driver.\r
+ *\r
+ *  Common definitions and declarations for the library USB MIDI Class driver.\r
+ *\r
+ *  \note This file should not be included directly. It is automatically included as needed by the class driver\r
+ *        dispatch header located in LUFA/Drivers/USB/Class/MIDI.h.\r
+ */\r
+\r
 /** \ingroup Group_USBClassMIDI\r
 /** \ingroup Group_USBClassMIDI\r
+ *  @defgroup Group_USBClassMIDICommon  Common Class Definitions\r
+ *\r
+ *  \section Module Description\r
+ *  Constants, Types and Enum definitions that are common to both Device and Host modes for the USB\r
+ *  MIDI Class.\r
+ *\r
  *  @{\r
  */\r
 \r
 #ifndef _MIDI_CLASS_COMMON_H_\r
 #define _MIDI_CLASS_COMMON_H_\r
 \r
  *  @{\r
  */\r
 \r
 #ifndef _MIDI_CLASS_COMMON_H_\r
 #define _MIDI_CLASS_COMMON_H_\r
 \r
+       /* Macros: */\r
+               #define __INCLUDE_FROM_AUDIO_DRIVER\r
+\r
        /* Includes: */\r
                #include "../../USB.h"\r
                #include "Audio.h"\r
        /* Includes: */\r
                #include "../../USB.h"\r
                #include "Audio.h"\r
                        extern "C" {\r
                #endif\r
 \r
                        extern "C" {\r
                #endif\r
 \r
+       /* Preprocessor Checks: */\r
+               #if !defined(__INCLUDE_FROM_MIDI_DRIVER)\r
+                       #error Do not include this file directly. Include LUFA/Drivers/Class/MIDI.h instead.\r
+               #endif\r
+               \r
        /* Macros: */\r
                /** Audio class descriptor subtype value for a Audio class specific MIDI input jack descriptor. */\r
                #define DSUBTYPE_InputJack          0x02\r
        /* Macros: */\r
                /** Audio class descriptor subtype value for a Audio class specific MIDI input jack descriptor. */\r
                #define DSUBTYPE_InputJack          0x02\r
                 *\r
                 *  \param[in] channel  MIDI channel number to address\r
                 */\r
                 *\r
                 *  \param[in] channel  MIDI channel number to address\r
                 */\r
-               #define MIDI_CHANNEL(channel)        (channel - 1)\r
+               #define MIDI_CHANNEL(channel)        ((channel) - 1)\r
                \r
        /* Type Defines: */\r
                \r
        /* Type Defines: */\r
-               /** Type define for an Audio class specific MIDI streaming interface descriptor. This indicates to the host\r
+               /** \brief MIDI Class Specific Streaming Interface Descriptor.\r
+                *\r
+                *  Type define for an Audio class specific MIDI streaming interface descriptor. This indicates to the host\r
                 *  how MIDI the specification compliance of the device and the total length of the Audio class specific descriptors.\r
                 *  See the USB Audio specification for more details.\r
                 */\r
                 *  how MIDI the specification compliance of the device and the total length of the Audio class specific descriptors.\r
                 *  See the USB Audio specification for more details.\r
                 */\r
                        uint16_t                  TotalLength; /**< Total length of the Audio class specific descriptors, including this descriptor */\r
                } USB_MIDI_AudioInterface_AS_t;\r
                \r
                        uint16_t                  TotalLength; /**< Total length of the Audio class specific descriptors, including this descriptor */\r
                } USB_MIDI_AudioInterface_AS_t;\r
                \r
-               /** Type define for an Audio class specific MIDI IN jack. This gives information to the host on a MIDI input, either\r
+               /** \brief MIDI Class Specific Input Jack Descriptor.\r
+                *\r
+                *  Type define for an Audio class specific MIDI IN jack. This gives information to the host on a MIDI input, either\r
                 *  a physical input jack, or a logical jack (receiving input data internally, or from the host via an endpoint).\r
                 */\r
                typedef struct\r
                 *  a physical input jack, or a logical jack (receiving input data internally, or from the host via an endpoint).\r
                 */\r
                typedef struct\r
                        uint8_t                   JackStrIndex; /**< Index of a string descriptor describing this descriptor within the device */\r
                } USB_MIDI_In_Jack_t;\r
 \r
                        uint8_t                   JackStrIndex; /**< Index of a string descriptor describing this descriptor within the device */\r
                } USB_MIDI_In_Jack_t;\r
 \r
-               /** Type define for an Audio class specific MIDI OUT jack. This gives information to the host on a MIDI output, either\r
+               /** \brief MIDI Class Specific Output Jack Descriptor.\r
+                *\r
+                *  Type define for an Audio class specific MIDI OUT jack. This gives information to the host on a MIDI output, either\r
                 *  a physical output jack, or a logical jack (sending output data internally, or to the host via an endpoint).\r
                 */\r
                typedef struct\r
                 *  a physical output jack, or a logical jack (sending output data internally, or to the host via an endpoint).\r
                 */\r
                typedef struct\r
                        uint8_t                   JackStrIndex; /**< Index of a string descriptor describing this descriptor within the device */\r
                } USB_MIDI_Out_Jack_t;\r
                \r
                        uint8_t                   JackStrIndex; /**< Index of a string descriptor describing this descriptor within the device */\r
                } USB_MIDI_Out_Jack_t;\r
                \r
-               /** Type define for an Audio class specific extended MIDI jack endpoint descriptor. This contains extra information\r
+               /** \brief Audio Class Specific Jack Endpoint Descriptor.\r
+                *\r
+                *  Type define for an Audio class specific extended MIDI jack endpoint descriptor. This contains extra information\r
                 *  on the usage of MIDI endpoints used to stream MIDI events in and out of the USB Audio device, and follows an Audio\r
                 *  class specific extended MIDI endpoint descriptor. See the USB Audio specification for more details.\r
                 */\r
                 *  on the usage of MIDI endpoints used to stream MIDI events in and out of the USB Audio device, and follows an Audio\r
                 *  class specific extended MIDI endpoint descriptor. See the USB Audio specification for more details.\r
                 */\r
                        uint8_t                   AssociatedJackID[1]; /**< IDs of each jack inside the endpoint */\r
                } USB_MIDI_Jack_Endpoint_t;\r
 \r
                        uint8_t                   AssociatedJackID[1]; /**< IDs of each jack inside the endpoint */\r
                } USB_MIDI_Jack_Endpoint_t;\r
 \r
-               /** Type define for a USB MIDI event packet, used to encapsulate sent and received MIDI messages from a USB MIDI interface. */\r
+               /** \brief MIDI Class Driver Event Packet.\r
+                *\r
+                *  Type define for a USB MIDI event packet, used to encapsulate sent and received MIDI messages from a USB MIDI interface.\r
+                */\r
                typedef struct\r
                {\r
                        unsigned char Command     : 4; /**< Upper nibble of the MIDI command being sent or received in the event packet */\r
                typedef struct\r
                {\r
                        unsigned char Command     : 4; /**< Upper nibble of the MIDI command being sent or received in the event packet */\r