Clean up XPLAINBridge code.
authorDean Camera <dean@fourwalledcubicle.com>
Tue, 16 Feb 2010 13:12:59 +0000 (13:12 +0000)
committerDean Camera <dean@fourwalledcubicle.com>
Tue, 16 Feb 2010 13:12:59 +0000 (13:12 +0000)
Projects/Webserver/USBDeviceMode.h
Projects/Webserver/USBHostMode.h
Projects/XPLAINBridge/Lib/SoftUART.c
Projects/XPLAINBridge/Lib/SoftUART.h
Projects/XPLAINBridge/XPLAINBridge.c
Projects/XPLAINBridge/XPLAINBridge.h

index d76c667..999df6e 100644 (file)
@@ -37,6 +37,7 @@
 #define _USBDEVICEMODE_H_\r
 \r
        /* Includes: */\r
+               #include <LUFA/Drivers/USB/USB.h>\r
                #include <LUFA/Drivers/USB/Class/MassStorage.h>\r
                \r
                #include "Webserver.h"\r
index 03387ed..b548e6b 100644 (file)
@@ -37,6 +37,7 @@
 #define _USBHOSTMODE_H_\r
 \r
        /* Includes: */\r
+               #include <LUFA/Drivers/USB/USB.h>\r
                #include <LUFA/Drivers/USB/Class/RNDIS.h>\r
                \r
                #include "Webserver.h"\r
index bc02653..01f9b2e 100644 (file)
 volatile uint8_t srx_done, stx_count;\r
 volatile uint8_t srx_data, srx_mask, srx_tmp, stx_data;\r
 \r
-unsigned char SoftUART_IsReady(void)\r
+uint8_t SoftUART_IsReady(void)\r
 {\r
        return !(stx_count);\r
 }\r
 \r
-unsigned char SoftUART_TxByte(unsigned char c)\r
+uint8_t SoftUART_TxByte(uint8_t c)\r
 {\r
        while (stx_count);\r
 \r
@@ -50,12 +50,12 @@ unsigned char SoftUART_TxByte(unsigned char c)
        return c;\r
 }\r
 \r
-unsigned char SoftUART_IsReceived(void)\r
+uint8_t SoftUART_IsReceived(void)\r
 {\r
        return srx_done;\r
 }\r
 \r
-unsigned char SoftUART_RxByte(void)\r
+uint8_t SoftUART_RxByte(void)\r
 {\r
        while (!(srx_done));\r
 \r
index 7dbf2d5..d6b2432 100644 (file)
                #define STXDDR     DDRD\r
 \r
        /* Function Prototypes: */\r
-               unsigned char SoftUART_IsReady(void);\r
-               unsigned char SoftUART_TxByte(unsigned char c);\r
-               unsigned char SoftUART_IsReceived(void);\r
-               unsigned char SoftUART_RxByte(void);\r
-               void SoftUART_Init(void);\r
+               uint8_t SoftUART_IsReady(void);\r
+               uint8_t SoftUART_TxByte(uint8_t c);\r
+               uint8_t SoftUART_IsReceived(void);\r
+               uint8_t SoftUART_RxByte(void);\r
+               void    SoftUART_Init(void);\r
 \r
 #endif
\ No newline at end of file
index 2de545f..13752ef 100644 (file)
@@ -80,22 +80,25 @@ int main(void)
        Buffer_Initialize(&USBtoUART_Buffer);\r
        Buffer_Initialize(&UARTtoUSB_Buffer);\r
 \r
+       LEDs_SetAllLEDs(LEDMASK_USB_NOTREADY);\r
+\r
        for (;;)\r
        {\r
-               if (USB_DeviceState == DEVICE_STATE_Configured)\r
-               {\r
-                       if (CurrentFirmwareMode == MODE_USART_BRIDGE)\r
-                         USARTBridge_Task();\r
-                       else\r
-                         AVRISP_Task();\r
-               }\r
-               \r
+               if (CurrentFirmwareMode == MODE_USART_BRIDGE)\r
+                 USARTBridge_Task();\r
+               else\r
+                 AVRISP_Task();\r
+\r
                USB_USBTask();\r
        }\r
 }\r
 \r
 void AVRISP_Task(void)\r
 {\r
+       /* Must be in the configured state for the AVRISP code to process data */\r
+       if (USB_DeviceState != DEVICE_STATE_Configured)\r
+         return;\r
+\r
        Endpoint_SelectEndpoint(AVRISP_DATA_EPNUM);\r
        \r
        /* Check to see if a V2 Protocol command has been received */\r
@@ -112,6 +115,10 @@ void AVRISP_Task(void)
 \r
 void USARTBridge_Task(void)\r
 {\r
+       /* Must be in the configured state for the USART Bridge code to process data */\r
+       if (USB_DeviceState != DEVICE_STATE_Configured)\r
+         return;\r
+\r
        /* Read bytes from the USB OUT endpoint into the UART transmit buffer */\r
        for (uint8_t DataBytesRem = CDC_Device_BytesReceived(&VirtualSerial_CDC_Interface); DataBytesRem != 0; DataBytesRem--)\r
        {\r
@@ -130,8 +137,8 @@ void USARTBridge_Task(void)
          SoftUART_TxByte(Buffer_GetElement(&USBtoUART_Buffer));\r
        \r
        /* Load bytes from the UART into the UART receive buffer */\r
-       if(SoftUART_IsReceived())\r
-               Buffer_StoreElement(&UARTtoUSB_Buffer, SoftUART_RxByte());\r
+       if (SoftUART_IsReceived())\r
+         Buffer_StoreElement(&UARTtoUSB_Buffer, SoftUART_RxByte());\r
 \r
        CDC_Device_USBTask(&VirtualSerial_CDC_Interface);\r
 }\r
@@ -169,6 +176,7 @@ void EVENT_USB_Device_ConfigurationChanged(void)
 {\r
        bool EndpointConfigSuccess;\r
 \r
+       /* Configure the device endpoints according to the selected mode */\r
        if (CurrentFirmwareMode == MODE_USART_BRIDGE)\r
        {\r
                EndpointConfigSuccess = CDC_Device_ConfigureEndpoints(&VirtualSerial_CDC_Interface);\r
@@ -193,6 +201,18 @@ void EVENT_USB_Device_UnhandledControlRequest(void)
          CDC_Device_ProcessControlRequest(&VirtualSerial_CDC_Interface);\r
 }\r
 \r
+/** Event handler for the library USB Connection event. */\r
+void EVENT_USB_Device_Connect(void)\r
+{\r
+       LEDs_SetAllLEDs(LEDMASK_USB_ENUMERATING);\r
+}\r
+\r
+/** Event handler for the library USB Disconnection event. */\r
+void EVENT_USB_Device_Disconnect(void)\r
+{\r
+       LEDs_SetAllLEDs(LEDMASK_USB_NOTREADY);\r
+}\r
+\r
 /** This function is called by the library when in device mode, and must be overridden (see library "USB Descriptors"\r
  *  documentation) by the application code so that the address and size of a requested descriptor can be given\r
  *  to the USB library. When the device receives a Get Descriptor request on the control endpoint, this function\r
@@ -201,6 +221,7 @@ void EVENT_USB_Device_UnhandledControlRequest(void)
  */\r
 uint16_t CALLBACK_USB_GetDescriptor(const uint16_t wValue, const uint8_t wIndex, void** const DescriptorAddress)\r
 {\r
+       /* Return the correct descriptors based on the selected mode */\r
        if (CurrentFirmwareMode == MODE_USART_BRIDGE)\r
          return USART_GetDescriptor(wValue, wIndex, DescriptorAddress);\r
        else\r
index 805c30d..0c3a56c 100644 (file)
@@ -85,8 +85,8 @@
 \r
                void EVENT_USB_Device_ConfigurationChanged(void);\r
                void EVENT_USB_Device_UnhandledControlRequest(void);\r
-               \r
-               void EVENT_CDC_Device_LineEncodingChanged(USB_ClassInfo_CDC_Device_t* const CDCInterfaceInfo);\r
+               void EVENT_USB_Device_Connect(void);\r
+               void EVENT_USB_Device_Disconnect(void);         \r
 \r
                uint16_t CALLBACK_USB_GetDescriptor(const uint16_t wValue, const uint8_t wIndex, void** const DescriptorAddress);\r
 \r