Added new USB_Host_GetDeviceStatus() function for USB Host mode.
authorDean Camera <dean@fourwalledcubicle.com>
Tue, 12 Jul 2011 04:52:21 +0000 (04:52 +0000)
committerDean Camera <dean@fourwalledcubicle.com>
Tue, 12 Jul 2011 04:52:21 +0000 (04:52 +0000)
LUFA/Drivers/Peripheral/AVR8/SPI_AVR8.h
LUFA/Drivers/USB/Core/HostStandardReq.c
LUFA/Drivers/USB/Core/HostStandardReq.h
LUFA/ManPages/ChangeLog.txt

index 2caacaa..fd42c50 100644 (file)
                                /* 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. */
index 8304c2c..12ccd91 100644 (file)
@@ -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)
index 3358d27..caa42e3 100644 (file)
                         */
                        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.
                         */
                        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.
                         *
                         */
                        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.
                         *
                                                                   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.
index de27e01..829ca44 100644 (file)
   *   - 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