diff options
author | Dean Camera <[email protected]> | 2009-07-30 14:06:52 +0000 |
---|---|---|
committer | Dean Camera <[email protected]> | 2009-07-30 14:06:52 +0000 |
commit | 41babf1cb78a2a8e05f40f5de61c3f52bb794fc4 (patch) | |
tree | 0ad2a05c55c83817a9cfefa6c2b68cd6ae0324d5 /LUFA/Drivers/USB/Class/Device/Audio.c | |
parent | 41b54a2acd2d5515cc7f3f1ed1c3d3b17d1988a1 (diff) | |
download | qmk_firmware-41babf1cb78a2a8e05f40f5de61c3f52bb794fc4.tar.gz qmk_firmware-41babf1cb78a2a8e05f40f5de61c3f52bb794fc4.zip |
Fix incorrect configuration in the ClassDriver AudioOutput demo.
Make all audio device Class Driver functions require a reference to the Audio class instance, so that the endpoint size can be checked (and to standardize the APIs).
Make LEDs more responsive in the AudioOutput device demos.
Diffstat (limited to 'LUFA/Drivers/USB/Class/Device/Audio.c')
-rw-r--r-- | LUFA/Drivers/USB/Class/Device/Audio.c | 32 |
1 files changed, 19 insertions, 13 deletions
diff --git a/LUFA/Drivers/USB/Class/Device/Audio.c b/LUFA/Drivers/USB/Class/Device/Audio.c index b018d66863..210a3c8001 100644 --- a/LUFA/Drivers/USB/Class/Device/Audio.c +++ b/LUFA/Drivers/USB/Class/Device/Audio.c @@ -89,75 +89,81 @@ void Audio_Device_USBTask(USB_ClassInfo_Audio_Device_t* const AudioInterfaceInfo }
-int8_t Audio_Device_ReadSample8(void)
+int8_t Audio_Device_ReadSample8(USB_ClassInfo_Audio_Device_t* const AudioInterfaceInfo)
{
int8_t Sample;
Sample = Endpoint_Read_Byte();
- if (!(Endpoint_IsReadWriteAllowed()))
+ if (!(Endpoint_BytesInEndpoint()))
Endpoint_ClearOUT();
return Sample;
}
-int16_t Audio_Device_ReadSample16(void)
+int16_t Audio_Device_ReadSample16(USB_ClassInfo_Audio_Device_t* const AudioInterfaceInfo)
{
int16_t Sample;
Sample = (int16_t)Endpoint_Read_Word_LE();
- if (!(Endpoint_IsReadWriteAllowed()))
+ if (!(Endpoint_BytesInEndpoint()))
Endpoint_ClearOUT();
return Sample;
}
-int32_t Audio_Device_ReadSample24(void)
+int32_t Audio_Device_ReadSample24(USB_ClassInfo_Audio_Device_t* const AudioInterfaceInfo)
{
int32_t Sample;
Sample = (((uint32_t)Endpoint_Read_Byte() << 16) | Endpoint_Read_Word_LE());
- if (!(Endpoint_IsReadWriteAllowed()))
+ if (!(Endpoint_BytesInEndpoint()))
Endpoint_ClearOUT();
return Sample;
}
-void Audio_Device_WriteSample8(const int8_t Sample)
+void Audio_Device_WriteSample8(USB_ClassInfo_Audio_Device_t* const AudioInterfaceInfo, const int8_t Sample)
{
Endpoint_Write_Byte(Sample);
- if (!(Endpoint_IsReadWriteAllowed()))
+ if (Endpoint_BytesInEndpoint() == AudioInterfaceInfo->Config.DataINEndpointSize)
Endpoint_ClearIN();
}
-void Audio_Device_WriteSample16(const int16_t Sample)
+void Audio_Device_WriteSample16(USB_ClassInfo_Audio_Device_t* const AudioInterfaceInfo, const int16_t Sample)
{
Endpoint_Write_Word_LE(Sample);
- if (!(Endpoint_IsReadWriteAllowed()))
+ if (Endpoint_BytesInEndpoint() == AudioInterfaceInfo->Config.DataINEndpointSize)
Endpoint_ClearIN();
}
-void Audio_Device_WriteSample24(const int32_t Sample)
+void Audio_Device_WriteSample24(USB_ClassInfo_Audio_Device_t* const AudioInterfaceInfo, const int32_t Sample)
{
Endpoint_Write_Byte(Sample >> 16);
Endpoint_Write_Word_LE(Sample);
- if (!(Endpoint_IsReadWriteAllowed()))
+ if (Endpoint_BytesInEndpoint() == AudioInterfaceInfo->Config.DataINEndpointSize)
Endpoint_ClearIN();
}
bool Audio_Device_IsSampleReceived(USB_ClassInfo_Audio_Device_t* const AudioInterfaceInfo)
{
- Endpoint_SelectEndpoint(AudioInterfaceInfo->Config.DataOUTEndpointNumber);
+ if ((USB_DeviceState != DEVICE_STATE_Configured) || !(AudioInterfaceInfo->State.InterfaceEnabled))
+ return false;
+
+ Endpoint_SelectEndpoint(AudioInterfaceInfo->Config.DataOUTEndpointNumber);
return Endpoint_IsOUTReceived();
}
bool Audio_Device_IsReadyForNextSample(USB_ClassInfo_Audio_Device_t* const AudioInterfaceInfo)
{
+ if ((USB_DeviceState != DEVICE_STATE_Configured) || !(AudioInterfaceInfo->State.InterfaceEnabled))
+ return false;
+
Endpoint_SelectEndpoint(AudioInterfaceInfo->Config.DataINEndpointNumber);
return Endpoint_IsINReady();
}
|