projects
/
pub
/
lufa.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Added new NO_DEVICE_SELF_POWER and NO_DEVICE_REMOTE_WAKEUP compile time options.
[pub/lufa.git]
/
LUFA
/
Drivers
/
USB
/
LowLevel
/
DevChapter9.c
diff --git
a/LUFA/Drivers/USB/LowLevel/DevChapter9.c
b/LUFA/Drivers/USB/LowLevel/DevChapter9.c
index
50afb61
..
3f0976b
100644
(file)
--- a/
LUFA/Drivers/USB/LowLevel/DevChapter9.c
+++ b/
LUFA/Drivers/USB/LowLevel/DevChapter9.c
@@
-36,8
+36,14
@@
#include "DevChapter9.h"
\r
\r
uint8_t USB_ConfigurationNumber;
\r
#include "DevChapter9.h"
\r
\r
uint8_t USB_ConfigurationNumber;
\r
-bool USB_RemoteWakeupEnabled;
\r
+
\r
+#if !defined(NO_DEVICE_SELF_POWER)
\r
bool USB_CurrentlySelfPowered;
\r
bool USB_CurrentlySelfPowered;
\r
+#endif
\r
+
\r
+#if !defined(NO_DEVICE_REMOTE_WAKEUP)
\r
+bool USB_RemoteWakeupEnabled;
\r
+#endif
\r
\r
void USB_Device_ProcessControlRequest(void)
\r
{
\r
\r
void USB_Device_ProcessControlRequest(void)
\r
{
\r
@@
-121,7
+127,7
@@
static void USB_Device_SetAddress(void)
\r
Endpoint_ClearSETUP();
\r
\r
\r
Endpoint_ClearSETUP();
\r
\r
- Endpoint_Clear
IN
();
\r
+ Endpoint_Clear
StatusStage
();
\r
\r
while (!(Endpoint_IsINReady()))
\r
{
\r
\r
while (!(Endpoint_IsINReady()))
\r
{
\r
@@
-129,11
+135,11
@@
static void USB_Device_SetAddress(void)
return;
\r
}
\r
\r
return;
\r
}
\r
\r
- UDADDR = ((1 << ADDEN) | DeviceAddress);
\r
-
\r
if (DeviceAddress)
\r
USB_DeviceState = DEVICE_STATE_Addressed;
\r
\r
if (DeviceAddress)
\r
USB_DeviceState = DEVICE_STATE_Addressed;
\r
\r
+ UDADDR = ((1 << ADDEN) | DeviceAddress);
\r
+
\r
return;
\r
}
\r
\r
return;
\r
}
\r
\r
@@
-190,12
+196,9
@@
static void USB_Device_SetConfiguration(void)
\r
USB_ConfigurationNumber = (uint8_t)USB_ControlRequest.wValue;
\r
\r
\r
USB_ConfigurationNumber = (uint8_t)USB_ControlRequest.wValue;
\r
\r
- Endpoint_Clear
IN
();
\r
+ Endpoint_Clear
StatusStage
();
\r
\r
\r
- if (USB_ConfigurationNumber)
\r
- USB_DeviceState = DEVICE_STATE_Configured;
\r
- else
\r
- USB_DeviceState = DEVICE_STATE_Addressed;
\r
+ USB_DeviceState = (USB_ConfigurationNumber) ? DEVICE_STATE_Configured : DEVICE_STATE_Addressed;
\r
\r
EVENT_USB_Device_ConfigurationChanged();
\r
}
\r
\r
EVENT_USB_Device_ConfigurationChanged();
\r
}
\r
@@
-205,16
+208,9
@@
void USB_Device_GetConfiguration(void)
Endpoint_ClearSETUP();
\r
\r
Endpoint_Write_Byte(USB_ConfigurationNumber);
\r
Endpoint_ClearSETUP();
\r
\r
Endpoint_Write_Byte(USB_ConfigurationNumber);
\r
-
\r
Endpoint_ClearIN();
\r
\r
Endpoint_ClearIN();
\r
\r
- while (!(Endpoint_IsOUTReceived()))
\r
- {
\r
- if (USB_DeviceState == DEVICE_STATE_Unattached)
\r
- return;
\r
- }
\r
-
\r
- Endpoint_ClearOUT();
\r
+ Endpoint_ClearStatusStage();
\r
}
\r
\r
#if !defined(NO_INTERNAL_SERIAL) && (defined(USB_SERIES_6_AVR) || defined(USB_SERIES_7_AVR))
\r
}
\r
\r
#if !defined(NO_INTERNAL_SERIAL) && (defined(USB_SERIES_6_AVR) || defined(USB_SERIES_7_AVR))
\r
@@
-232,10
+228,10
@@
static void USB_Device_GetInternalSerialDescriptor(void)
int16_t UnicodeString[20];
\r
} SignatureDescriptor;
\r
\r
int16_t UnicodeString[20];
\r
} SignatureDescriptor;
\r
\r
- SignatureDescriptor.Header.
Size = sizeof(SignatureDescriptor)
;
\r
- SignatureDescriptor.Header.
Type = DTYPE_String
;
\r
+ SignatureDescriptor.Header.
Type = DTYPE_String
;
\r
+ SignatureDescriptor.Header.
Size = sizeof(SignatureDescriptor)
;
\r
\r
\r
- uint8_t
SigReadAddress
= 0x0E;
\r
+ uint8_t
SigReadAddress
= 0x0E;
\r
\r
for (uint8_t SerialCharNum = 0; SerialCharNum < 20; SerialCharNum++)
\r
{
\r
\r
for (uint8_t SerialCharNum = 0; SerialCharNum < 20; SerialCharNum++)
\r
{
\r
@@
-251,7
+247,9
@@
static void USB_Device_GetInternalSerialDescriptor(void)
}
\r
\r
Endpoint_ClearSETUP();
\r
}
\r
\r
Endpoint_ClearSETUP();
\r
+
\r
Endpoint_Write_Control_Stream_LE(&SignatureDescriptor, sizeof(SignatureDescriptor));
\r
Endpoint_Write_Control_Stream_LE(&SignatureDescriptor, sizeof(SignatureDescriptor));
\r
+
\r
Endpoint_ClearOUT();
\r
}
\r
#endif
\r
Endpoint_ClearOUT();
\r
}
\r
#endif
\r
@@
-310,16
+308,20
@@
static void USB_Device_GetStatus(void)
switch (USB_ControlRequest.bmRequestType)
\r
{
\r
case (REQDIR_DEVICETOHOST | REQTYPE_STANDARD | REQREC_DEVICE):
\r
switch (USB_ControlRequest.bmRequestType)
\r
{
\r
case (REQDIR_DEVICETOHOST | REQTYPE_STANDARD | REQREC_DEVICE):
\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
-
\r
+#endif
\r
+
\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
-
\r
+#endif
\r
+
\r
break;
\r
#if !defined(CONTROL_ONLY_DEVICE)
\r
case (REQDIR_DEVICETOHOST | REQTYPE_STANDARD | REQREC_ENDPOINT):
\r
break;
\r
#if !defined(CONTROL_ONLY_DEVICE)
\r
case (REQDIR_DEVICETOHOST | REQTYPE_STANDARD | REQREC_ENDPOINT):
\r
- Endpoint_SelectEndpoint(
(uint8_t)USB_ControlRequest.wIndex
);
\r
+ Endpoint_SelectEndpoint(
USB_ControlRequest.wIndex & 0xFF
);
\r
\r
CurrentStatus = Endpoint_IsStalled();
\r
\r
\r
CurrentStatus = Endpoint_IsStalled();
\r
\r
@@
-334,16
+336,9
@@
static void USB_Device_GetStatus(void)
Endpoint_ClearSETUP();
\r
\r
Endpoint_Write_Word_LE(CurrentStatus);
\r
Endpoint_ClearSETUP();
\r
\r
Endpoint_Write_Word_LE(CurrentStatus);
\r
-
\r
Endpoint_ClearIN();
\r
\r
Endpoint_ClearIN();
\r
\r
- while (!(Endpoint_IsOUTReceived()))
\r
- {
\r
- if (USB_DeviceState == DEVICE_STATE_Unattached)
\r
- return;
\r
- }
\r
-
\r
- Endpoint_ClearOUT();
\r
+ Endpoint_ClearStatusStage();
\r
}
\r
\r
static void USB_Device_ClearSetFeature(void)
\r
}
\r
\r
static void USB_Device_ClearSetFeature(void)
\r
@@
-351,10
+346,12
@@
static void USB_Device_ClearSetFeature(void)
switch (USB_ControlRequest.bmRequestType & CONTROL_REQTYPE_RECIPIENT)
\r
{
\r
case REQREC_DEVICE:
\r
switch (USB_ControlRequest.bmRequestType & CONTROL_REQTYPE_RECIPIENT)
\r
{
\r
case REQREC_DEVICE:
\r
+#if !defined(NO_DEVICE_REMOTE_WAKEUP)
\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
#if !defined(CONTROL_ONLY_DEVICE)
\r
\r
break;
\r
#if !defined(CONTROL_ONLY_DEVICE)
\r
@@
-370,16
+367,16
@@
static void USB_Device_ClearSetFeature(void)
\r
if (Endpoint_IsEnabled())
\r
{
\r
\r
if (Endpoint_IsEnabled())
\r
{
\r
- if (USB_ControlRequest.bRequest == REQ_
Clear
Feature)
\r
+ if (USB_ControlRequest.bRequest == REQ_
Set
Feature)
\r
{
\r
{
\r
- Endpoint_ClearStall();
\r
- Endpoint_ResetFIFO(EndpointIndex);
\r
- Endpoint_ResetDataToggle();
\r
+ Endpoint_StallTransaction();
\r
}
\r
else
\r
{
\r
}
\r
else
\r
{
\r
- Endpoint_StallTransaction();
\r
- }
\r
+ Endpoint_ClearStall();
\r
+ Endpoint_ResetFIFO(EndpointIndex);
\r
+ Endpoint_ResetDataToggle();
\r
+ }
\r
}
\r
}
\r
\r
}
\r
}
\r
\r
@@
-391,7
+388,7
@@
static void USB_Device_ClearSetFeature(void)
\r
Endpoint_ClearSETUP();
\r
\r
\r
Endpoint_ClearSETUP();
\r
\r
- Endpoint_Clear
IN
();
\r
+ Endpoint_Clear
StatusStage
();
\r
}
\r
\r
#endif
\r
}
\r
\r
#endif
\r