diff options
Diffstat (limited to 'Projects/Magstripe/Magstripe.c')
-rw-r--r-- | Projects/Magstripe/Magstripe.c | 37 |
1 files changed, 9 insertions, 28 deletions
diff --git a/Projects/Magstripe/Magstripe.c b/Projects/Magstripe/Magstripe.c index 94eed314d..24172d82c 100644 --- a/Projects/Magstripe/Magstripe.c +++ b/Projects/Magstripe/Magstripe.c @@ -155,33 +155,20 @@ EVENT_HANDLER(USB_ConfigurationChanged) EVENT_HANDLER(USB_UnhandledControlPacket)
{
/* Handle HID Class specific requests */
- switch (bRequest)
+ switch (USB_ControlRequest.bRequest)
{
case REQ_GetReport:
- if (bmRequestType == (REQDIR_DEVICETOHOST | REQTYPE_CLASS | REQREC_INTERFACE))
+ if (USB_ControlRequest.bmRequestType == (REQDIR_DEVICETOHOST | REQTYPE_CLASS | REQREC_INTERFACE))
{
USB_KeyboardReport_Data_t KeyboardReportData;
/* Create the next keyboard report for transmission to the host */
GetNextReport(&KeyboardReportData);
- /* Ignore report type and ID number value */
- Endpoint_Discard_Word();
-
- /* Ignore unused Interface number value */
- Endpoint_Discard_Word();
-
- /* Read in the number of bytes in the report to send to the host */
- uint16_t wLength = Endpoint_Read_Word_LE();
-
- /* If trying to send more bytes than exist to the host, clamp the value at the report size */
- if (wLength > sizeof(KeyboardReportData))
- wLength = sizeof(KeyboardReportData);
-
Endpoint_ClearSETUP();
/* Write the report data to the control endpoint */
- Endpoint_Write_Control_Stream_LE(&KeyboardReportData, wLength);
+ Endpoint_Write_Control_Stream_LE(&KeyboardReportData, sizeof(KeyboardReportData));
/* Finalize the stream transfer to send the last packet or clear the host abort */
Endpoint_ClearOUT();
@@ -189,7 +176,7 @@ EVENT_HANDLER(USB_UnhandledControlPacket) break;
case REQ_GetProtocol:
- if (bmRequestType == (REQDIR_DEVICETOHOST | REQTYPE_CLASS | REQREC_INTERFACE))
+ if (USB_ControlRequest.bmRequestType == (REQDIR_DEVICETOHOST | REQTYPE_CLASS | REQREC_INTERFACE))
{
Endpoint_ClearSETUP();
@@ -206,15 +193,12 @@ EVENT_HANDLER(USB_UnhandledControlPacket) break;
case REQ_SetProtocol:
- if (bmRequestType == (REQDIR_HOSTTODEVICE | REQTYPE_CLASS | REQREC_INTERFACE))
+ if (USB_ControlRequest.bmRequestType == (REQDIR_HOSTTODEVICE | REQTYPE_CLASS | REQREC_INTERFACE))
{
- /* Read in the wValue parameter containing the new protocol mode */
- uint16_t wValue = Endpoint_Read_Word_LE();
-
Endpoint_ClearSETUP();
/* Set or clear the flag depending on what the host indicates that the current Protocol should be */
- UsingReportProtocol = (wValue != 0x0000);
+ UsingReportProtocol = (USB_ControlRequest.wValue != 0x0000);
/* Acknowledge status stage */
while (!(Endpoint_IsINReady()));
@@ -223,15 +207,12 @@ EVENT_HANDLER(USB_UnhandledControlPacket) break;
case REQ_SetIdle:
- if (bmRequestType == (REQDIR_HOSTTODEVICE | REQTYPE_CLASS | REQREC_INTERFACE))
+ if (USB_ControlRequest.bmRequestType == (REQDIR_HOSTTODEVICE | REQTYPE_CLASS | REQREC_INTERFACE))
{
- /* Read in the wValue parameter containing the idle period */
- uint16_t wValue = Endpoint_Read_Word_LE();
-
Endpoint_ClearSETUP();
/* Get idle period in MSB */
- IdleCount = (wValue >> 8);
+ IdleCount = (USB_ControlRequest.wValue >> 8);
/* Acknowledge status stage */
while (!(Endpoint_IsINReady()));
@@ -240,7 +221,7 @@ EVENT_HANDLER(USB_UnhandledControlPacket) break;
case REQ_GetIdle:
- if (bmRequestType == (REQDIR_DEVICETOHOST | REQTYPE_CLASS | REQREC_INTERFACE))
+ if (USB_ControlRequest.bmRequestType == (REQDIR_DEVICETOHOST | REQTYPE_CLASS | REQREC_INTERFACE))
{
Endpoint_ClearSETUP();
|