aboutsummaryrefslogtreecommitdiffstats
path: root/LUFA/Drivers/USB/Class/Device
diff options
context:
space:
mode:
authorDean Camera <dean@fourwalledcubicle.com>2011-06-08 01:26:52 +0000
committerDean Camera <dean@fourwalledcubicle.com>2011-06-08 01:26:52 +0000
commite572ee7ff271a3f454fcd8a5fb0d2079bbda4be2 (patch)
tree623b40f35b2918661580673959b28996fedeaa0e /LUFA/Drivers/USB/Class/Device
parent605ef921cc189d9a55ce3787a2ac1dd78ef4d14e (diff)
downloadlufa-e572ee7ff271a3f454fcd8a5fb0d2079bbda4be2.tar.gz
lufa-e572ee7ff271a3f454fcd8a5fb0d2079bbda4be2.tar.bz2
lufa-e572ee7ff271a3f454fcd8a5fb0d2079bbda4be2.zip
Added new Host mode Audio Class driver.
Added new EVENT_Audio_StreamStartStopChange() event to the Audio Device Class driver to detect stream start/stop events.
Diffstat (limited to 'LUFA/Drivers/USB/Class/Device')
-rw-r--r--LUFA/Drivers/USB/Class/Device/Audio.c6
-rw-r--r--LUFA/Drivers/USB/Class/Device/Audio.h26
-rw-r--r--LUFA/Drivers/USB/Class/Device/CDC.h2
3 files changed, 30 insertions, 4 deletions
diff --git a/LUFA/Drivers/USB/Class/Device/Audio.c b/LUFA/Drivers/USB/Class/Device/Audio.c
index dbf62dae2..60c091e7f 100644
--- a/LUFA/Drivers/USB/Class/Device/Audio.c
+++ b/LUFA/Drivers/USB/Class/Device/Audio.c
@@ -70,6 +70,7 @@ void Audio_Device_ProcessControlRequest(USB_ClassInfo_Audio_Device_t* const Audi
Endpoint_ClearStatusStage();
AudioInterfaceInfo->State.InterfaceEnabled = ((USB_ControlRequest.wValue & 0xFF) != 0);
+ EVENT_Audio_StreamStartStopChange(AudioInterfaceInfo);
}
break;
@@ -164,4 +165,9 @@ bool Audio_Device_ConfigureEndpoints(USB_ClassInfo_Audio_Device_t* const AudioIn
return true;
}
+void Audio_Device_Event_Stub(void)
+{
+
+}
+
#endif
diff --git a/LUFA/Drivers/USB/Class/Device/Audio.h b/LUFA/Drivers/USB/Class/Device/Audio.h
index cad87f3b6..7e7dad88d 100644
--- a/LUFA/Drivers/USB/Class/Device/Audio.h
+++ b/LUFA/Drivers/USB/Class/Device/Audio.h
@@ -101,9 +101,9 @@
*/
struct
{
- bool InterfaceEnabled; /**< Set and cleared by the class driver to indicate if the host has enabled the streaming endpoints
- * of the Audio Streaming interface.
- */
+ bool InterfaceEnabled; /**< Set and cleared by the class driver to indicate if the host has enabled the streaming endpoints
+ * of the Audio Streaming interface.
+ */
} State; /**< State data for the USB class interface within the device. All elements in this section
* are reset to their defaults when the interface is enumerated.
*/
@@ -160,6 +160,14 @@
uint16_t* const DataLength,
uint8_t* Data);
+ /** Audio class driver event for an Audio Stream start/stop change. This event fires each time the device receives a stream enable or
+ * disable control request from the host, to start and stop the audio stream. The current state of the stream can be determined by the
+ * State.InterfaceEnabled value inside the Audio interface structure passed as a parameter.
+ *
+ * \param[in,out] AudioInterfaceInfo Pointer to a structure containing an Audio Class configuration and state.
+ */
+ void EVENT_Audio_StreamStartStopChange(USB_ClassInfo_Audio_Device_t* const AudioInterfaceInfo);
+
/* Inline Functions: */
/** General management task for a given Audio 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().
@@ -348,6 +356,18 @@
Endpoint_ClearIN();
}
+ /* Private Interface - For use in library only: */
+ #if !defined(__DOXYGEN__)
+ /* Function Prototypes: */
+ #if defined(__INCLUDE_FROM_AUDIO_DEVICE_C)
+ void Audio_Device_Event_Stub(void) ATTR_CONST;
+
+ void EVENT_Audio_StreamStartStopChange(USB_ClassInfo_Audio_Device_t* const AudioInterfaceInfo)
+ ATTR_WEAK ATTR_NON_NULL_PTR_ARG(1) ATTR_ALIAS(Audio_Device_Event_Stub);
+ #endif
+
+ #endif
+
/* Disable C linkage for C++ Compilers: */
#if defined(__cplusplus)
}
diff --git a/LUFA/Drivers/USB/Class/Device/CDC.h b/LUFA/Drivers/USB/Class/Device/CDC.h
index 6f78a24dd..7dc565c82 100644
--- a/LUFA/Drivers/USB/Class/Device/CDC.h
+++ b/LUFA/Drivers/USB/Class/Device/CDC.h
@@ -177,7 +177,7 @@
/** CDC class driver event for a control line state change on a CDC interface. This event fires each time the host requests a
* control line state change (containing the virtual serial control line states, such as DTR) and may be hooked in the
* user program by declaring a handler function with the same name and parameters listed here. The new control line states
- * are available in the ControlLineStates.HostToDevice value inside the CDC interface structure passed as a parameter, set as
+ * are available in the State.ControlLineStates.HostToDevice value inside the CDC interface structure passed as a parameter, set as
* a mask of CDC_CONTROL_LINE_OUT_* masks.
*
* \param[in,out] CDCInterfaceInfo Pointer to a structure containing a CDC Class configuration and state.