- if (USB_IsConnected)\r
- {\r
-#if 0\r
- /* NOTE: Here you can use the notification endpoint to send back line state changes to the host, for the special RS-232\r
- handshake signal lines (and some error states), via the CONTROL_LINE_IN_* masks and the following code:\r
- */\r
-\r
- USB_Notification_Header_t Notification = (USB_Notification_Header_t)\r
- {\r
- NotificationType: (REQDIR_DEVICETOHOST | REQTYPE_CLASS | REQREC_INTERFACE),\r
- Notification: NOTIF_SerialState,\r
- wValue: 0,\r
- wIndex: 0,\r
- wLength: sizeof(uint16_t),\r
- };\r
- \r
- uint16_t LineStateMask;\r
- \r
- // Set LineStateMask here to a mask of CONTROL_LINE_IN_* masks to set the input handshake line states to send to the host\r
- \r
- Endpoint_SelectEndpoint(CDC_NOTIFICATION_EPNUM);\r
- Endpoint_Write_Stream_LE(&Notification, sizeof(Notification));\r
- Endpoint_Write_Stream_LE(&LineStateMask, sizeof(LineStateMask));\r
- Endpoint_ClearIN();\r
-#endif\r
-\r
- /* Select the Serial Rx Endpoint */\r
- Endpoint_SelectEndpoint(CDC_RX_EPNUM);\r
- \r
- if (Endpoint_IsOUTReceived())\r
- {\r
- /* Read the bytes in from the endpoint into the buffer while space is available */\r
- while (Endpoint_BytesInEndpoint() && (BUFF_STATICSIZE - Rx_Buffer.Elements))\r
- {\r
- /* Store each character from the endpoint */\r
- Buffer_StoreElement(&Rx_Buffer, Endpoint_Read_Byte());\r
- }\r
- \r
- /* Check to see if all bytes in the current packet have been read */\r
- if (!(Endpoint_BytesInEndpoint()))\r
- {\r
- /* Clear the endpoint buffer */\r
- Endpoint_ClearOUT();\r
- }\r
- }\r
- \r
- /* Check if Rx buffer contains data */\r
- if (Rx_Buffer.Elements)\r
- {\r
- /* Initiate the transmission of the buffer contents if USART idle */\r
- if (!(Transmitting))\r
- {\r
- Transmitting = true;\r
- Serial_TxByte(Buffer_GetElement(&Rx_Buffer));\r
- }\r
- }\r
-\r
- /* Select the Serial Tx Endpoint */\r
- Endpoint_SelectEndpoint(CDC_TX_EPNUM);\r
-\r
- /* Check if the Tx buffer contains anything to be sent to the host */\r
- if (Tx_Buffer.Elements)\r
- {\r
- /* Wait until Serial Tx Endpoint Ready for Read/Write */\r
- while (!(Endpoint_IsReadWriteAllowed()));\r
- \r
- /* Write the bytes from the buffer to the endpoint while space is available */\r
- while (Tx_Buffer.Elements && (Endpoint_BytesInEndpoint() < CDC_TXRX_EPSIZE))\r
- {\r
- /* Write each byte retreived from the buffer to the endpoint */\r
- Endpoint_Write_Byte(Buffer_GetElement(&Tx_Buffer));\r
- }\r
- \r
- /* Remember if the packet to send completely fills the endpoint */\r
- bool IsFull = (Endpoint_BytesInEndpoint() == CDC_TXRX_EPSIZE);\r
- \r
- /* Send the data */\r
- Endpoint_ClearIN();\r