Added incomplete MIDIToneGenerator project.
[pub/USBasp.git] / Projects / USBtoSerial / USBtoSerial.c
index 31c80da..73be33e 100644 (file)
@@ -1,21 +1,21 @@
 /*\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
@@ -50,16 +50,19 @@ USB_ClassInfo_CDC_Device_t VirtualSerial_CDC_Interface =
        {\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
@@ -70,8 +73,8 @@ int main(void)
 {\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
@@ -80,19 +83,19 @@ int main(void)
                /* 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
@@ -150,7 +153,7 @@ ISR(USART1_RX_vect, ISR_BLOCK)
        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