projects
/
pub
/
USBasp.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
|
inline
| side by side (from parent 1:
c99f665
)
Ensure that unsupported SetFeature/ClearFeature request targets cause a STALL back...
author
Dean Camera
<dean@fourwalledcubicle.com>
Mon, 21 Dec 2009 08:29:12 +0000
(08:29 +0000)
committer
Dean Camera
<dean@fourwalledcubicle.com>
Mon, 21 Dec 2009 08:29:12 +0000
(08:29 +0000)
Bootloaders/TeensyHID/makefile
patch
|
blob
|
blame
|
history
LUFA/Drivers/USB/LowLevel/DevChapter9.c
patch
|
blob
|
blame
|
history
LUFA/Drivers/USB/LowLevel/Endpoint.c
patch
|
blob
|
blame
|
history
LUFA/Drivers/USB/LowLevel/Pipe.c
patch
|
blob
|
blame
|
history
diff --git
a/Bootloaders/TeensyHID/makefile
b/Bootloaders/TeensyHID/makefile
index
8de8f8f
..
e728c49
100644
(file)
--- a/
Bootloaders/TeensyHID/makefile
+++ b/
Bootloaders/TeensyHID/makefile
@@
-80,7
+80,7
@@
BOARD =
# does not *change* the processor frequency - it should merely be updated to
\r
# reflect the processor speed set externally so that the code can use accurate
\r
# software delays.
\r
# does not *change* the processor frequency - it should merely be updated to
\r
# reflect the processor speed set externally so that the code can use accurate
\r
# software delays.
\r
-F_CPU =
16
000000
\r
+F_CPU =
8
000000
\r
\r
\r
# Input clock frequency.
\r
\r
\r
# Input clock frequency.
\r
diff --git
a/LUFA/Drivers/USB/LowLevel/DevChapter9.c
b/LUFA/Drivers/USB/LowLevel/DevChapter9.c
index
3f0976b
..
39b7a62
100644
(file)
--- a/
LUFA/Drivers/USB/LowLevel/DevChapter9.c
+++ b/
LUFA/Drivers/USB/LowLevel/DevChapter9.c
@@
-307,18
+307,19
@@
static void USB_Device_GetStatus(void)
\r
switch (USB_ControlRequest.bmRequestType)
\r
{
\r
\r
switch (USB_ControlRequest.bmRequestType)
\r
{
\r
+#if !defined(NO_DEVICE_SELF_POWER) || !defined(NO_DEVICE_REMOTE_WAKEUP)
\r
case (REQDIR_DEVICETOHOST | REQTYPE_STANDARD | REQREC_DEVICE):
\r
case (REQDIR_DEVICETOHOST | REQTYPE_STANDARD | REQREC_DEVICE):
\r
-#if !defined(NO_DEVICE_SELF_POWER)
\r
+
#if !defined(NO_DEVICE_SELF_POWER)
\r
if (USB_CurrentlySelfPowered)
\r
CurrentStatus |= FEATURE_SELFPOWERED_ENABLED;
\r
if (USB_CurrentlySelfPowered)
\r
CurrentStatus |= FEATURE_SELFPOWERED_ENABLED;
\r
-#endif
\r
+
#endif
\r
\r
\r
-#if !defined(NO_DEVICE_REMOTE_WAKEUP)
\r
+ #if !defined(NO_DEVICE_REMOTE_WAKEUP)
\r
if (USB_RemoteWakeupEnabled)
\r
CurrentStatus |= FEATURE_REMOTE_WAKEUP_ENABLED;
\r
if (USB_RemoteWakeupEnabled)
\r
CurrentStatus |= FEATURE_REMOTE_WAKEUP_ENABLED;
\r
-#endif
\r
-
\r
+ #endif
\r
break;
\r
break;
\r
+#endif
\r
#if !defined(CONTROL_ONLY_DEVICE)
\r
case (REQDIR_DEVICETOHOST | REQTYPE_STANDARD | REQREC_ENDPOINT):
\r
Endpoint_SelectEndpoint(USB_ControlRequest.wIndex & 0xFF);
\r
#if !defined(CONTROL_ONLY_DEVICE)
\r
case (REQDIR_DEVICETOHOST | REQTYPE_STANDARD | REQREC_ENDPOINT):
\r
Endpoint_SelectEndpoint(USB_ControlRequest.wIndex & 0xFF);
\r
@@
-345,15
+346,15
@@
static void USB_Device_ClearSetFeature(void)
{
\r
switch (USB_ControlRequest.bmRequestType & CONTROL_REQTYPE_RECIPIENT)
\r
{
\r
{
\r
switch (USB_ControlRequest.bmRequestType & CONTROL_REQTYPE_RECIPIENT)
\r
{
\r
- case REQREC_DEVICE:
\r
#if !defined(NO_DEVICE_REMOTE_WAKEUP)
\r
#if !defined(NO_DEVICE_REMOTE_WAKEUP)
\r
+ case REQREC_DEVICE:
\r
if ((uint8_t)USB_ControlRequest.wValue == FEATURE_REMOTE_WAKEUP)
\r
USB_RemoteWakeupEnabled = (USB_ControlRequest.bRequest == REQ_SetFeature);
\r
else
\r
return;
\r
if ((uint8_t)USB_ControlRequest.wValue == FEATURE_REMOTE_WAKEUP)
\r
USB_RemoteWakeupEnabled = (USB_ControlRequest.bRequest == REQ_SetFeature);
\r
else
\r
return;
\r
-#endif
\r
\r
break;
\r
\r
break;
\r
+#endif
\r
#if !defined(CONTROL_ONLY_DEVICE)
\r
case REQREC_ENDPOINT:
\r
if ((uint8_t)USB_ControlRequest.wValue == FEATURE_ENDPOINT_HALT)
\r
#if !defined(CONTROL_ONLY_DEVICE)
\r
case REQREC_ENDPOINT:
\r
if ((uint8_t)USB_ControlRequest.wValue == FEATURE_ENDPOINT_HALT)
\r
@@
-382,6
+383,8
@@
static void USB_Device_ClearSetFeature(void)
\r
break;
\r
#endif
\r
\r
break;
\r
#endif
\r
+ default:
\r
+ return;
\r
}
\r
\r
Endpoint_SelectEndpoint(ENDPOINT_CONTROLEP);
\r
}
\r
\r
Endpoint_SelectEndpoint(ENDPOINT_CONTROLEP);
\r
diff --git
a/LUFA/Drivers/USB/LowLevel/Endpoint.c
b/LUFA/Drivers/USB/LowLevel/Endpoint.c
index
b0c09ca
..
2244996
100644
(file)
--- a/
LUFA/Drivers/USB/LowLevel/Endpoint.c
+++ b/
LUFA/Drivers/USB/LowLevel/Endpoint.c
@@
-207,6
+207,9
@@
uint8_t Endpoint_Discard_Stream(uint16_t Length
return ENDPOINT_RWSTREAM_NoError;
\r
}
\r
\r
return ENDPOINT_RWSTREAM_NoError;
\r
}
\r
\r
+/* The following abuses the C preprocessor in order to copy-past common code with slight alterations,
\r
+ * so that the code needs to be written once. It is a crude form of templating to reduce code maintenance. */
\r
+
\r
#define TEMPLATE_FUNC_NAME Endpoint_Write_Stream_LE
\r
#define TEMPLATE_BUFFER_TYPE const void*
\r
#define TEMPLATE_CLEAR_ENDPOINT() Endpoint_ClearIN()
\r
#define TEMPLATE_FUNC_NAME Endpoint_Write_Stream_LE
\r
#define TEMPLATE_BUFFER_TYPE const void*
\r
#define TEMPLATE_CLEAR_ENDPOINT() Endpoint_ClearIN()
\r
diff --git
a/LUFA/Drivers/USB/LowLevel/Pipe.c
b/LUFA/Drivers/USB/LowLevel/Pipe.c
index
5c7b32a
..
897c50b
100644
(file)
--- a/
LUFA/Drivers/USB/LowLevel/Pipe.c
+++ b/
LUFA/Drivers/USB/LowLevel/Pipe.c
@@
-199,6
+199,9
@@
uint8_t Pipe_Discard_Stream(uint16_t Length
return PIPE_RWSTREAM_NoError;
\r
}
\r
\r
return PIPE_RWSTREAM_NoError;
\r
}
\r
\r
+/* The following abuses the C preprocessor in order to copy-past common code with slight alterations,
\r
+ * so that the code needs to be written once. It is a crude form of templating to reduce code maintenance. */
\r
+
\r
#define TEMPLATE_FUNC_NAME Pipe_Write_Stream_LE
\r
#define TEMPLATE_BUFFER_TYPE const void*
\r
#define TEMPLATE_TOKEN PIPE_TOKEN_OUT
\r
#define TEMPLATE_FUNC_NAME Pipe_Write_Stream_LE
\r
#define TEMPLATE_BUFFER_TYPE const void*
\r
#define TEMPLATE_TOKEN PIPE_TOKEN_OUT
\r