USB_HostRequest renamed to USB_ControlRequest, entire control request header is now read into USB_ControlRequest in Device mode rather than having the library pass only partially read header data to the application.
The USB_UnhandledControlPacket event has had its parameters removed, in favour of accessing the new USB_ControlRequest structure. The Endpoint control stream functions now correctly send a ZLP to the host when less data than requested is sent.
This commit is contained in:
parent
e5e7eaee7a
commit
d860e9e842
43 changed files with 209 additions and 317 deletions
|
@ -305,7 +305,7 @@
|
|||
* parameters (wValue, wIndex, wLength, and Data) remain in the control endpoint bank until
|
||||
* read out by the user application for processing.
|
||||
*/
|
||||
void USB_UnhandledControlPacket(const uint8_t bRequest, const uint8_t bmRequestType);
|
||||
void USB_UnhandledControlPacket(void);
|
||||
|
||||
/** Event for USB configuration number changed. This event fires when a the USB host changes the
|
||||
* selected configuration number while in device mode. This event should be hooked in device
|
||||
|
@ -392,7 +392,7 @@
|
|||
#endif
|
||||
|
||||
#if defined(USB_CAN_BE_DEVICE)
|
||||
#define USB_UnhandledControlPacket_P (const uint8_t bRequest, const uint8_t bmRequestType)
|
||||
#define USB_UnhandledControlPacket_P (void)
|
||||
#define USB_ConfigurationChanged_P (void)
|
||||
#define USB_Suspend_P (void)
|
||||
#define USB_WakeUp_P (void)
|
||||
|
|
|
@ -135,6 +135,20 @@
|
|||
*/
|
||||
#define FEATURE_REMOTE_WAKEUP 0x01
|
||||
|
||||
/* Type Defines: */
|
||||
/** Type define for a standard USB control request.
|
||||
*
|
||||
* \see The USB 2.0 specification for more information on standard control requests.
|
||||
*/
|
||||
typedef struct
|
||||
{
|
||||
uint8_t bmRequestType; /**< Type of the request. */
|
||||
uint8_t bRequest; /**< Request command code. */
|
||||
uint16_t wValue; /**< wValue parameter of the request. */
|
||||
uint16_t wIndex; /**< wIndex parameter of the request. */
|
||||
uint16_t wLength; /**< Length of the data to transfer in bytes. */
|
||||
} USB_Request_Header_t;
|
||||
|
||||
/* Enums: */
|
||||
/** Enumeration for the various standard request commands. These commands are applicable when the
|
||||
* request type is REQTYPE_STANDARD (with the exception of REQ_GetDescriptor, which is always
|
||||
|
|
|
@ -33,9 +33,10 @@
|
|||
#define INCLUDE_FROM_USBTASK_C
|
||||
#include "USBTask.h"
|
||||
|
||||
volatile bool USB_IsSuspended;
|
||||
volatile bool USB_IsConnected;
|
||||
volatile bool USB_IsInitialized;
|
||||
volatile bool USB_IsSuspended;
|
||||
volatile bool USB_IsConnected;
|
||||
volatile bool USB_IsInitialized;
|
||||
USB_Request_Header_t USB_ControlRequest;
|
||||
|
||||
#if defined(USB_CAN_BE_HOST)
|
||||
volatile uint8_t USB_HostState;
|
||||
|
@ -169,7 +170,7 @@ static void USB_HostTask(void)
|
|||
USB_HostState = HOST_STATE_Default;
|
||||
break;
|
||||
case HOST_STATE_Default:
|
||||
USB_HostRequest = (USB_Host_Request_Header_t)
|
||||
USB_ControlRequest = (USB_Request_Header_t)
|
||||
{
|
||||
.bmRequestType = (REQDIR_DEVICETOHOST | REQTYPE_STANDARD | REQREC_DEVICE),
|
||||
.bRequest = REQ_GetDescriptor,
|
||||
|
@ -214,7 +215,7 @@ static void USB_HostTask(void)
|
|||
|
||||
Pipe_SetInfiniteINRequests();
|
||||
|
||||
USB_HostRequest = (USB_Host_Request_Header_t)
|
||||
USB_ControlRequest = (USB_Request_Header_t)
|
||||
{
|
||||
.bmRequestType = (REQDIR_HOSTTODEVICE | REQTYPE_STANDARD | REQREC_DEVICE),
|
||||
.bRequest = REQ_SetAddress,
|
||||
|
|
|
@ -40,6 +40,7 @@
|
|||
|
||||
#include "../../../Scheduler/Scheduler.h"
|
||||
#include "../LowLevel/LowLevel.h"
|
||||
#include "StdRequestType.h"
|
||||
#include "USBMode.h"
|
||||
#include "Events.h"
|
||||
#include "StdDescriptors.h"
|
||||
|
@ -82,6 +83,14 @@
|
|||
*/
|
||||
extern volatile bool USB_IsInitialized;
|
||||
|
||||
/** Structure containing the last received Control request when in Device mode (for use in user-applications
|
||||
* inside of the USB_UnhandledControlPacket() event, or for filling up with a control request to issue when
|
||||
* in Host mode before calling USB_Host_SendControlRequest().
|
||||
*
|
||||
* \ingroup Group_USBManagement
|
||||
*/
|
||||
extern USB_Request_Header_t USB_ControlRequest;
|
||||
|
||||
#if defined(USB_CAN_BE_DEVICE) || defined(__DOXYGEN__)
|
||||
/** Indicates if the USB interface is currently suspended by the host when in device mode. When suspended,
|
||||
* the device should consume minimal power, and cannot communicate to the host. If Remote Wakeup is
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue