aboutsummaryrefslogtreecommitdiffstats
path: root/Projects
diff options
context:
space:
mode:
Diffstat (limited to 'Projects')
-rw-r--r--Projects/Webserver/USBDeviceMode.h1
-rw-r--r--Projects/Webserver/USBHostMode.h1
-rw-r--r--Projects/XPLAINBridge/Lib/SoftUART.c8
-rw-r--r--Projects/XPLAINBridge/Lib/SoftUART.h10
-rw-r--r--Projects/XPLAINBridge/XPLAINBridge.c41
-rw-r--r--Projects/XPLAINBridge/XPLAINBridge.h4
6 files changed, 44 insertions, 21 deletions
diff --git a/Projects/Webserver/USBDeviceMode.h b/Projects/Webserver/USBDeviceMode.h
index d76c66778..999df6ef0 100644
--- a/Projects/Webserver/USBDeviceMode.h
+++ b/Projects/Webserver/USBDeviceMode.h
@@ -37,6 +37,7 @@
#define _USBDEVICEMODE_H_
/* Includes: */
+ #include <LUFA/Drivers/USB/USB.h>
#include <LUFA/Drivers/USB/Class/MassStorage.h>
#include "Webserver.h"
diff --git a/Projects/Webserver/USBHostMode.h b/Projects/Webserver/USBHostMode.h
index 03387edd2..b548e6b8d 100644
--- a/Projects/Webserver/USBHostMode.h
+++ b/Projects/Webserver/USBHostMode.h
@@ -37,6 +37,7 @@
#define _USBHOSTMODE_H_
/* Includes: */
+ #include <LUFA/Drivers/USB/USB.h>
#include <LUFA/Drivers/USB/Class/RNDIS.h>
#include "Webserver.h"
diff --git a/Projects/XPLAINBridge/Lib/SoftUART.c b/Projects/XPLAINBridge/Lib/SoftUART.c
index bc0265378..01f9b2e12 100644
--- a/Projects/XPLAINBridge/Lib/SoftUART.c
+++ b/Projects/XPLAINBridge/Lib/SoftUART.c
@@ -35,12 +35,12 @@
volatile uint8_t srx_done, stx_count;
volatile uint8_t srx_data, srx_mask, srx_tmp, stx_data;
-unsigned char SoftUART_IsReady(void)
+uint8_t SoftUART_IsReady(void)
{
return !(stx_count);
}
-unsigned char SoftUART_TxByte(unsigned char c)
+uint8_t SoftUART_TxByte(uint8_t c)
{
while (stx_count);
@@ -50,12 +50,12 @@ unsigned char SoftUART_TxByte(unsigned char c)
return c;
}
-unsigned char SoftUART_IsReceived(void)
+uint8_t SoftUART_IsReceived(void)
{
return srx_done;
}
-unsigned char SoftUART_RxByte(void)
+uint8_t SoftUART_RxByte(void)
{
while (!(srx_done));
diff --git a/Projects/XPLAINBridge/Lib/SoftUART.h b/Projects/XPLAINBridge/Lib/SoftUART.h
index 7dbf2d56b..d6b24320f 100644
--- a/Projects/XPLAINBridge/Lib/SoftUART.h
+++ b/Projects/XPLAINBridge/Lib/SoftUART.h
@@ -51,10 +51,10 @@
#define STXDDR DDRD
/* Function Prototypes: */
- unsigned char SoftUART_IsReady(void);
- unsigned char SoftUART_TxByte(unsigned char c);
- unsigned char SoftUART_IsReceived(void);
- unsigned char SoftUART_RxByte(void);
- void SoftUART_Init(void);
+ uint8_t SoftUART_IsReady(void);
+ uint8_t SoftUART_TxByte(uint8_t c);
+ uint8_t SoftUART_IsReceived(void);
+ uint8_t SoftUART_RxByte(void);
+ void SoftUART_Init(void);
#endif \ No newline at end of file
diff --git a/Projects/XPLAINBridge/XPLAINBridge.c b/Projects/XPLAINBridge/XPLAINBridge.c
index 2de545f95..13752ef82 100644
--- a/Projects/XPLAINBridge/XPLAINBridge.c
+++ b/Projects/XPLAINBridge/XPLAINBridge.c
@@ -80,22 +80,25 @@ int main(void)
Buffer_Initialize(&USBtoUART_Buffer);
Buffer_Initialize(&UARTtoUSB_Buffer);
+ LEDs_SetAllLEDs(LEDMASK_USB_NOTREADY);
+
for (;;)
{
- if (USB_DeviceState == DEVICE_STATE_Configured)
- {
- if (CurrentFirmwareMode == MODE_USART_BRIDGE)
- USARTBridge_Task();
- else
- AVRISP_Task();
- }
-
+ if (CurrentFirmwareMode == MODE_USART_BRIDGE)
+ USARTBridge_Task();
+ else
+ AVRISP_Task();
+
USB_USBTask();
}
}
void AVRISP_Task(void)
{
+ /* Must be in the configured state for the AVRISP code to process data */
+ if (USB_DeviceState != DEVICE_STATE_Configured)
+ return;
+
Endpoint_SelectEndpoint(AVRISP_DATA_EPNUM);
/* Check to see if a V2 Protocol command has been received */
@@ -112,6 +115,10 @@ void AVRISP_Task(void)
void USARTBridge_Task(void)
{
+ /* Must be in the configured state for the USART Bridge code to process data */
+ if (USB_DeviceState != DEVICE_STATE_Configured)
+ return;
+
/* Read bytes from the USB OUT endpoint into the UART transmit buffer */
for (uint8_t DataBytesRem = CDC_Device_BytesReceived(&VirtualSerial_CDC_Interface); DataBytesRem != 0; DataBytesRem--)
{
@@ -130,8 +137,8 @@ void USARTBridge_Task(void)
SoftUART_TxByte(Buffer_GetElement(&USBtoUART_Buffer));
/* Load bytes from the UART into the UART receive buffer */
- if(SoftUART_IsReceived())
- Buffer_StoreElement(&UARTtoUSB_Buffer, SoftUART_RxByte());
+ if (SoftUART_IsReceived())
+ Buffer_StoreElement(&UARTtoUSB_Buffer, SoftUART_RxByte());
CDC_Device_USBTask(&VirtualSerial_CDC_Interface);
}
@@ -169,6 +176,7 @@ void EVENT_USB_Device_ConfigurationChanged(void)
{
bool EndpointConfigSuccess;
+ /* Configure the device endpoints according to the selected mode */
if (CurrentFirmwareMode == MODE_USART_BRIDGE)
{
EndpointConfigSuccess = CDC_Device_ConfigureEndpoints(&VirtualSerial_CDC_Interface);
@@ -193,6 +201,18 @@ void EVENT_USB_Device_UnhandledControlRequest(void)
CDC_Device_ProcessControlRequest(&VirtualSerial_CDC_Interface);
}
+/** Event handler for the library USB Connection event. */
+void EVENT_USB_Device_Connect(void)
+{
+ LEDs_SetAllLEDs(LEDMASK_USB_ENUMERATING);
+}
+
+/** Event handler for the library USB Disconnection event. */
+void EVENT_USB_Device_Disconnect(void)
+{
+ LEDs_SetAllLEDs(LEDMASK_USB_NOTREADY);
+}
+
/** This function is called by the library when in device mode, and must be overridden (see library "USB Descriptors"
* documentation) by the application code so that the address and size of a requested descriptor can be given
* to the USB library. When the device receives a Get Descriptor request on the control endpoint, this function
@@ -201,6 +221,7 @@ void EVENT_USB_Device_UnhandledControlRequest(void)
*/
uint16_t CALLBACK_USB_GetDescriptor(const uint16_t wValue, const uint8_t wIndex, void** const DescriptorAddress)
{
+ /* Return the correct descriptors based on the selected mode */
if (CurrentFirmwareMode == MODE_USART_BRIDGE)
return USART_GetDescriptor(wValue, wIndex, DescriptorAddress);
else
diff --git a/Projects/XPLAINBridge/XPLAINBridge.h b/Projects/XPLAINBridge/XPLAINBridge.h
index 805c30d09..0c3a56c9d 100644
--- a/Projects/XPLAINBridge/XPLAINBridge.h
+++ b/Projects/XPLAINBridge/XPLAINBridge.h
@@ -85,8 +85,8 @@
void EVENT_USB_Device_ConfigurationChanged(void);
void EVENT_USB_Device_UnhandledControlRequest(void);
-
- void EVENT_CDC_Device_LineEncodingChanged(USB_ClassInfo_CDC_Device_t* const CDCInterfaceInfo);
+ void EVENT_USB_Device_Connect(void);
+ void EVENT_USB_Device_Disconnect(void);
uint16_t CALLBACK_USB_GetDescriptor(const uint16_t wValue, const uint8_t wIndex, void** const DescriptorAddress);