projects
/
pub
/
USBasp.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Added new USB_DeviceState variable to keep track of the current Device mode USB state.
[pub/USBasp.git]
/
Demos
/
Device
/
LowLevel
/
USBtoSerial
/
USBtoSerial.c
diff --git
a/Demos/Device/LowLevel/USBtoSerial/USBtoSerial.c
b/Demos/Device/LowLevel/USBtoSerial/USBtoSerial.c
index
9160dd1
..
af963b1
100644
(file)
--- a/
Demos/Device/LowLevel/USBtoSerial/USBtoSerial.c
+++ b/
Demos/Device/LowLevel/USBtoSerial/USBtoSerial.c
@@
-192,9
+192,7
@@
void EVENT_USB_UnhandledControlPacket(void)
CONTROL_LINE_OUT_* masks to determine the RTS and DTR line states using the following code:
\r
*/
\r
\r
CONTROL_LINE_OUT_* masks to determine the RTS and DTR line states using the following code:
\r
*/
\r
\r
- /* Acknowledge status stage */
\r
- while (!(Endpoint_IsINReady()));
\r
- Endpoint_ClearIN();
\r
+ Endpoint_ClearStatusStage();
\r
}
\r
\r
break;
\r
}
\r
\r
break;
\r
@@
-205,7
+203,7
@@
void EVENT_USB_UnhandledControlPacket(void)
void CDC_Task(void)
\r
{
\r
/* Device must be connected and configured for the task to run */
\r
void CDC_Task(void)
\r
{
\r
/* Device must be connected and configured for the task to run */
\r
- if (
!(USB_IsConnected) || !(USB_ConfigurationNumber)
)
\r
+ if (
USB_DeviceState != DEVICE_STATE_Configured
)
\r
return;
\r
\r
#if 0
\r
return;
\r
\r
#if 0
\r
@@
-264,7
+262,11
@@
void CDC_Task(void)
if (Tx_Buffer.Elements)
\r
{
\r
/* Wait until Serial Tx Endpoint Ready for Read/Write */
\r
if (Tx_Buffer.Elements)
\r
{
\r
/* Wait until Serial Tx Endpoint Ready for Read/Write */
\r
- while (!(Endpoint_IsReadWriteAllowed()));
\r
+ while (!(Endpoint_IsReadWriteAllowed()))
\r
+ {
\r
+ if (USB_DeviceState == DEVICE_STATE_Unattached)
\r
+ return;
\r
+ }
\r
\r
/* Write the bytes from the buffer to the endpoint while space is available */
\r
while (Tx_Buffer.Elements && Endpoint_IsReadWriteAllowed())
\r
\r
/* Write the bytes from the buffer to the endpoint while space is available */
\r
while (Tx_Buffer.Elements && Endpoint_IsReadWriteAllowed())
\r
@@
-284,8
+286,12
@@
void CDC_Task(void)
if (IsFull && !(Tx_Buffer.Elements))
\r
{
\r
/* Wait until Serial Tx Endpoint Ready for Read/Write */
\r
if (IsFull && !(Tx_Buffer.Elements))
\r
{
\r
/* Wait until Serial Tx Endpoint Ready for Read/Write */
\r
- while (!(Endpoint_IsReadWriteAllowed()));
\r
-
\r
+ while (!(Endpoint_IsReadWriteAllowed()))
\r
+ {
\r
+ if (USB_DeviceState == DEVICE_STATE_Unattached)
\r
+ return;
\r
+ }
\r
+
\r
/* Send an empty packet to terminate the transfer */
\r
Endpoint_ClearIN();
\r
}
\r
/* Send an empty packet to terminate the transfer */
\r
Endpoint_ClearIN();
\r
}
\r
@@
-298,11
+304,8
@@
void CDC_Task(void)
ISR(USART1_RX_vect, ISR_BLOCK)
\r
{
\r
/* Only store received characters if the USB interface is connected */
\r
ISR(USART1_RX_vect, ISR_BLOCK)
\r
{
\r
/* Only store received characters if the USB interface is connected */
\r
- if (USB_IsConnected)
\r
- {
\r
- /* Character received, store it into the buffer */
\r
- Buffer_StoreElement(&Tx_Buffer, UDR1);
\r
- }
\r
+ if (USB_DeviceState != DEVICE_STATE_Configured)
\r
+ Buffer_StoreElement(&Tx_Buffer, UDR1);
\r
}
\r
\r
/** Reconfigures the USART to match the current serial port settings issued by the host as closely as possible. */
\r
}
\r
\r
/** Reconfigures the USART to match the current serial port settings issued by the host as closely as possible. */
\r