aboutsummaryrefslogtreecommitdiffstats
path: root/LUFA
diff options
context:
space:
mode:
authorDean Camera <dean@fourwalledcubicle.com>2011-07-12 04:52:21 +0000
committerDean Camera <dean@fourwalledcubicle.com>2011-07-12 04:52:21 +0000
commit065ed4da207173495d0a569b0f2973daebb841f0 (patch)
tree40967b9fc0fc3f7e0004737077138e9df0748502 /LUFA
parentf152ff26c7902a848c798c56adb981861beaf2bf (diff)
downloadlufa-065ed4da207173495d0a569b0f2973daebb841f0.tar.gz
lufa-065ed4da207173495d0a569b0f2973daebb841f0.tar.bz2
lufa-065ed4da207173495d0a569b0f2973daebb841f0.zip
Added new USB_Host_GetDeviceStatus() function for USB Host mode.
Diffstat (limited to 'LUFA')
-rw-r--r--LUFA/Drivers/Peripheral/AVR8/SPI_AVR8.h2
-rw-r--r--LUFA/Drivers/USB/Core/HostStandardReq.c16
-rw-r--r--LUFA/Drivers/USB/Core/HostStandardReq.h31
-rw-r--r--LUFA/ManPages/ChangeLog.txt10
4 files changed, 44 insertions, 15 deletions
diff --git a/LUFA/Drivers/Peripheral/AVR8/SPI_AVR8.h b/LUFA/Drivers/Peripheral/AVR8/SPI_AVR8.h
index 2caacaa00..fd42c5022 100644
--- a/LUFA/Drivers/Peripheral/AVR8/SPI_AVR8.h
+++ b/LUFA/Drivers/Peripheral/AVR8/SPI_AVR8.h
@@ -183,7 +183,7 @@
/* Switch /SS to input mode after configuration to allow for forced mode changes */
DDRB &= ~(1 << 0);
- SPCR = ((1 << SPE) | SPIOptions);
+ SPCR = ((1 << SPE) | SPIOptions);
}
/** Turns off the SPI driver, disabling and returning used hardware to their default configuration. */
diff --git a/LUFA/Drivers/USB/Core/HostStandardReq.c b/LUFA/Drivers/USB/Core/HostStandardReq.c
index 8304c2c28..12ccd91e3 100644
--- a/LUFA/Drivers/USB/Core/HostStandardReq.c
+++ b/LUFA/Drivers/USB/Core/HostStandardReq.c
@@ -238,6 +238,22 @@ uint8_t USB_Host_GetDeviceStringDescriptor(const uint8_t Index,
return USB_Host_SendControlRequest(Buffer);
}
+uint8_t USB_Host_GetDeviceStatus(uint8_t* const FeatureStatus)
+{
+ USB_ControlRequest = (USB_Request_Header_t)
+ {
+ .bmRequestType = (REQDIR_DEVICETOHOST | REQTYPE_STANDARD | REQREC_DEVICE),
+ .bRequest = REQ_GetFeature,
+ .wValue = 0,
+ .wIndex = 0,
+ .wLength = 0,
+ };
+
+ Pipe_SelectPipe(PIPE_CONTROLPIPE);
+
+ return USB_Host_SendControlRequest(FeatureStatus);
+}
+
uint8_t USB_Host_ClearPipeStall(const uint8_t EndpointAddress)
{
USB_ControlRequest = (USB_Request_Header_t)
diff --git a/LUFA/Drivers/USB/Core/HostStandardReq.h b/LUFA/Drivers/USB/Core/HostStandardReq.h
index 3358d2774..caa42e322 100644
--- a/LUFA/Drivers/USB/Core/HostStandardReq.h
+++ b/LUFA/Drivers/USB/Core/HostStandardReq.h
@@ -104,9 +104,7 @@
*/
uint8_t USB_Host_SendControlRequest(void* const BufferPtr);
- /** Convenience function. This routine sends a SET CONFIGURATION standard request to the attached
- * device, with the given configuration index. This can be used to easily set the device
- * configuration without creating and sending the request manually.
+ /** Sends a SET CONFIGURATION standard request to the attached device, with the given configuration index.
*
* This routine will automatically update the \ref USB_HostState and \ref USB_Host_ConfigurationNumber
* state variables according to the given function parameters and the result of the request.
@@ -121,9 +119,9 @@
*/
uint8_t USB_Host_SetDeviceConfiguration(const uint8_t ConfigNumber);
- /** Convenience function. This routine sends a GET DESCRIPTOR standard request to the attached
- * device, requesting the device descriptor. This can be used to easily retrieve information
- * about the device such as its VID, PID and power requirements.
+ /** Sends a GET DESCRIPTOR standard request to the attached device, requesting the device descriptor.
+ * This can be used to easily retrieve information about the device such as its VID, PID and power
+ * requirements.
*
* \note After this routine returns, the control pipe will be selected.
*
@@ -136,10 +134,9 @@
*/
uint8_t USB_Host_GetDeviceDescriptor(void* const DeviceDescriptorPtr);
- /** Convenience function. This routine sends a GET DESCRIPTOR standard request to the attached
- * device, requesting the string descriptor of the specified index. This can be used to easily
- * retrieve string descriptors from the device by index, after the index is obtained from the
- * Device or Configuration descriptors.
+ /** Sends a GET DESCRIPTOR standard request to the attached device, requesting the string descriptor
+ * of the specified index. This can be used to easily retrieve string descriptors from the device by
+ * index, after the index is obtained from the Device or Configuration descriptors.
*
* \note After this routine returns, the control pipe will be selected.
*
@@ -156,6 +153,20 @@
void* const Buffer,
const uint8_t BufferLength);
+ /** Retrieves the current feature status of the attached device, via a GET STATUS standard request. The
+ * retrieved feature status can then be examined by masking the retrieved value with the various
+ * FEATURE_* masks for bus/self power information and remote wakeup support.
+ *
+ * \note After this routine returns, the control pipe will be selected.
+ *
+ * \ingroup Group_PipeControlReq
+ *
+ * \param[out] FeatureStatus Location where the retrieved feature status should be stored.
+ *
+ * \return A value from the \ref USB_Host_SendControlErrorCodes_t enum to indicate the result.
+ */
+ uint8_t USB_Host_GetDeviceStatus(uint8_t* const FeatureStatus);
+
/** Clears a stall condition on the given pipe, via a CLEAR FEATURE standard request to the attached device.
*
* \note After this routine returns, the control pipe will be selected.
diff --git a/LUFA/ManPages/ChangeLog.txt b/LUFA/ManPages/ChangeLog.txt
index de27e010f..829ca44f4 100644
--- a/LUFA/ManPages/ChangeLog.txt
+++ b/LUFA/ManPages/ChangeLog.txt
@@ -18,13 +18,14 @@
* - Added support for the Audio class GET STATUS request in the Audio Device Class driver so that it is correctly ACKed when sent by the host
* - Added new EVENT_Audio_Device_StreamStartStop() event to the Audio Device Class driver to detect stream start/stop events
* - Added board driver support for the Busware TUL board
- * - Added new Host mode Audio Class driver
- * - Added new SPI_GetCurrentMode() function to the SPI peripheral driver
* - Added board hardware driver support for the EVK1100 board
* - Added board hardware driver support for the EVK1104 board
+ * - Added new Host mode Audio Class driver
+ * - Added new SPI_GetCurrentMode() function to the SPI peripheral driver
+ * - Added RingBuffer_GetFreeCount() function to the Ring Buffer driver
* - Added new HID_Host_SetIdlePeriod() function to the HID Host Class driver
* - Added new USB_Host_ConfigurationNumber global variable to indicate the selected configuration in an attached device
- * - Added RingBuffer_GetFreeCount() function to the Ring Buffer driver
+ * - Added new USB_Host_GetDeviceStatus() function to the host standard request function set
* - Library Applications:
* - Added RNDIS device mode to the Webserver project
* - Added new incomplete AndroidAccessoryHost Host LowLevel demo
@@ -46,7 +47,8 @@
* - Renamed global state variables that are specific to a certain USB mode to clearly indicate which mode the variable relates to,
* by changing the USB_* prefix to USB_Device_* or USB_Host_*
* - Removed the HOST_STATE_WaitForDeviceRemoval and HOST_STATE_Suspended host state machine states, as these are no longer required
- * - Altered the USB_Host_SetDeviceConfiguration() function to update the new USB_Host_ConfigurationNumber global as required
+ * - Altered the USB_Host_SetDeviceConfiguration() function to update the global Host state machine state and the new
+ * USB_Host_ConfigurationNumber global as required
* - Library Applications:
* - Modified the Low Level and Class Driver AudioInput and AudioOutput demos to support multiple audio sample rates
* - Updated all host mode demos and projects to use the EVENT_USB_Host_DeviceEnumerationComplete() event callback for device configuration