/*\r
LUFA Library\r
- Copyright (C) Dean Camera, 2009.\r
+ Copyright (C) Dean Camera, 2010.\r
\r
dean [at] fourwalledcubicle [dot] com\r
www.fourwalledcubicle.com\r
*/\r
\r
/*\r
- Copyright 2009 Dean Camera (dean [at] fourwalledcubicle [dot] com)\r
-\r
- Permission to use, copy, modify, and distribute this software\r
- and its documentation for any purpose and without fee is hereby\r
- granted, provided that the above copyright notice appear in all\r
- copies and that both that the copyright notice and this\r
- permission notice and warranty disclaimer appear in supporting\r
- documentation, and that the name of the author not be used in\r
- advertising or publicity pertaining to distribution of the\r
+ Copyright 2010 Dean Camera (dean [at] fourwalledcubicle [dot] com)\r
+\r
+ Permission to use, copy, modify, distribute, and sell this \r
+ software and its documentation for any purpose is hereby granted\r
+ without fee, provided that the above copyright notice appear in \r
+ all copies and that both that the copyright notice and this\r
+ permission notice and warranty disclaimer appear in supporting \r
+ documentation, and that the name of the author not be used in \r
+ advertising or publicity pertaining to distribution of the \r
software without specific, written prior permission.\r
\r
The author disclaim all warranties with regard to this\r
#include "USBtoSerial.h"\r
\r
/** Circular buffer to hold data from the host before it is sent to the device via the serial port. */\r
-RingBuff_t Rx_Buffer;\r
+RingBuff_t USBtoUSART_Buffer;\r
\r
/** Circular buffer to hold data from the serial port before it is sent to the host. */\r
-RingBuff_t Tx_Buffer;\r
+RingBuff_t USARTtoUSB_Buffer;\r
\r
/** LUFA CDC Class driver interface configuration and state information. This structure is\r
* passed to all CDC Class driver functions, so that multiple instances of the same class\r
{\r
.Config = \r
{\r
- .ControlInterfaceNumber = 0,\r
+ .ControlInterfaceNumber = 0,\r
\r
- .DataINEndpointNumber = CDC_TX_EPNUM,\r
- .DataINEndpointSize = CDC_TXRX_EPSIZE,\r
+ .DataINEndpointNumber = CDC_TX_EPNUM,\r
+ .DataINEndpointSize = CDC_TXRX_EPSIZE,\r
+ .DataINEndpointDoubleBank = false,\r
\r
- .DataOUTEndpointNumber = CDC_RX_EPNUM,\r
- .DataOUTEndpointSize = CDC_TXRX_EPSIZE,\r
+ .DataOUTEndpointNumber = CDC_RX_EPNUM,\r
+ .DataOUTEndpointSize = CDC_TXRX_EPSIZE,\r
+ .DataOUTEndpointDoubleBank = false,\r
\r
- .NotificationEndpointNumber = CDC_NOTIFICATION_EPNUM,\r
- .NotificationEndpointSize = CDC_NOTIFICATION_EPSIZE,\r
+ .NotificationEndpointNumber = CDC_NOTIFICATION_EPNUM,\r
+ .NotificationEndpointSize = CDC_NOTIFICATION_EPSIZE,\r
+ .NotificationEndpointDoubleBank = false,\r
},\r
};\r
\r
{\r
SetupHardware();\r
\r
- Buffer_Initialize(&Rx_Buffer);\r
- Buffer_Initialize(&Tx_Buffer);\r
+ Buffer_Initialize(&USBtoUSART_Buffer);\r
+ Buffer_Initialize(&USARTtoUSB_Buffer);\r
\r
LEDs_SetAllLEDs(LEDMASK_USB_NOTREADY);\r
\r
/* Read bytes from the USB OUT endpoint into the USART transmit buffer */\r
for (uint8_t DataBytesRem = CDC_Device_BytesReceived(&VirtualSerial_CDC_Interface); DataBytesRem != 0; DataBytesRem--)\r
{\r
- if (!(BUFF_STATICSIZE - Rx_Buffer.Elements))\r
+ if (!(BUFF_STATICSIZE - USBtoUSART_Buffer.Elements))\r
break;\r
\r
- Buffer_StoreElement(&Rx_Buffer, CDC_Device_ReceiveByte(&VirtualSerial_CDC_Interface));\r
+ Buffer_StoreElement(&USBtoUSART_Buffer, CDC_Device_ReceiveByte(&VirtualSerial_CDC_Interface));\r
}\r
\r
/* Read bytes from the USART receive buffer into the USB IN endpoint */\r
- if (Tx_Buffer.Elements)\r
- CDC_Device_SendByte(&VirtualSerial_CDC_Interface, Buffer_GetElement(&Tx_Buffer));\r
+ while (USARTtoUSB_Buffer.Elements)\r
+ CDC_Device_SendByte(&VirtualSerial_CDC_Interface, Buffer_GetElement(&USARTtoUSB_Buffer));\r
\r
/* Load bytes from the USART transmit buffer into the USART */\r
- if (Rx_Buffer.Elements)\r
- Serial_TxByte(Buffer_GetElement(&Rx_Buffer));\r
+ while (USBtoUSART_Buffer.Elements)\r
+ Serial_TxByte(Buffer_GetElement(&USBtoUSART_Buffer));\r
\r
CDC_Device_USBTask(&VirtualSerial_CDC_Interface);\r
USB_USBTask();\r
uint8_t ReceivedByte = UDR1;\r
\r
if (USB_DeviceState == DEVICE_STATE_Configured)\r
- Buffer_StoreElement(&Tx_Buffer, ReceivedByte);\r
+ Buffer_StoreElement(&USARTtoUSB_Buffer, ReceivedByte);\r
}\r
\r
/** Event handler for the CDC Class driver Line Encoding Changed event.\r