Commit ac70ddd0 authored by Dean Camera's avatar Dean Camera
Browse files

Converted Host mode demos to schedulerless. Fixed host mode broken due to...

Converted Host mode demos to schedulerless. Fixed host mode broken due to earlier Start-of-frame event experiments.
parent 33a01847
...@@ -248,7 +248,7 @@ static void ReadWriteMemoryBlock(const uint8_t Command) ...@@ -248,7 +248,7 @@ static void ReadWriteMemoryBlock(const uint8_t Command)
else else
{ {
/* Read the next FLASH byte from the current FLASH page */ /* Read the next FLASH byte from the current FLASH page */
#if defined(RAMPZ) #if (FLASHEND > 0xFFFF)
WriteNextResponseByte(pgm_read_byte_far(CurrAddress | HighByte)); WriteNextResponseByte(pgm_read_byte_far(CurrAddress | HighByte));
#else #else
WriteNextResponseByte(pgm_read_byte(CurrAddress | HighByte)); WriteNextResponseByte(pgm_read_byte(CurrAddress | HighByte));
...@@ -513,7 +513,7 @@ TASK(CDC_Task) ...@@ -513,7 +513,7 @@ TASK(CDC_Task)
} }
else if (Command == 'R') else if (Command == 'R')
{ {
#if defined(RAMPZ) #if (FLASHEND > 0xFFFF)
uint16_t ProgramWord = pgm_read_word_far(CurrAddress); uint16_t ProgramWord = pgm_read_word_far(CurrAddress);
#else #else
uint16_t ProgramWord = pgm_read_word(CurrAddress); uint16_t ProgramWord = pgm_read_word(CurrAddress);
......
...@@ -342,7 +342,7 @@ void EVENT_USB_UnhandledControlPacket(void) ...@@ -342,7 +342,7 @@ void EVENT_USB_UnhandledControlPacket(void)
} }
/* Read the flash word and send it via USB to the host */ /* Read the flash word and send it via USB to the host */
#if defined(RAMPZ) #if (FLASHEND > 0xFFFF)
Endpoint_Write_Word_LE(pgm_read_word_far(CurrFlashAddress.Long)); Endpoint_Write_Word_LE(pgm_read_word_far(CurrFlashAddress.Long));
#else #else
Endpoint_Write_Word_LE(pgm_read_word(CurrFlashAddress.Long)); Endpoint_Write_Word_LE(pgm_read_word(CurrFlashAddress.Long));
...@@ -585,7 +585,7 @@ static void ProcessMemReadCommand(void) ...@@ -585,7 +585,7 @@ static void ProcessMemReadCommand(void)
while (CurrFlashAddress < BOOT_START_ADDR) while (CurrFlashAddress < BOOT_START_ADDR)
{ {
/* Check if the current byte is not blank */ /* Check if the current byte is not blank */
#if defined(RAMPZ) #if (FLASHEND > 0xFFFF)
if (pgm_read_byte_far(CurrFlashAddress) != 0xFF) if (pgm_read_byte_far(CurrFlashAddress) != 0xFF)
#else #else
if (pgm_read_byte(CurrFlashAddress) != 0xFF) if (pgm_read_byte(CurrFlashAddress) != 0xFF)
......
...@@ -119,10 +119,10 @@ static uint8_t MassStore_WaitForDataReceived(void) ...@@ -119,10 +119,10 @@ static uint8_t MassStore_WaitForDataReceived(void)
while (!(Pipe_IsINReceived())) while (!(Pipe_IsINReceived()))
{ {
/* Check to see if a new frame has been issued (1ms elapsed) */ /* Check to see if a new frame has been issued (1ms elapsed) */
if (FrameElapsed) if (USB_INT_HasOccurred(USB_INT_HSOFI))
{ {
/* Clear the flag and decrement the timeout period counter */ /* Clear the flag and decrement the timeout period counter */
FrameElapsed = false; USB_INT_Clear(USB_INT_HSOFI);
TimeoutMSRem--; TimeoutMSRem--;
/* Check to see if the timeout period for the command has elapsed */ /* Check to see if the timeout period for the command has elapsed */
......
...@@ -109,10 +109,10 @@ uint8_t SImage_RecieveBlockHeader(void) ...@@ -109,10 +109,10 @@ uint8_t SImage_RecieveBlockHeader(void)
while (!(Pipe_IsReadWriteAllowed())) while (!(Pipe_IsReadWriteAllowed()))
{ {
/* Check to see if a new frame has been issued (1ms elapsed) */ /* Check to see if a new frame has been issued (1ms elapsed) */
if (FrameElapsed) if (USB_INT_HasOccurred(USB_INT_HSOFI))
{ {
/* Clear the flag and decrement the timeout period counter */ /* Clear the flag and decrement the timeout period counter */
FrameElapsed = false; USB_INT_Clear(USB_INT_HSOFI);
TimeoutMSRem--; TimeoutMSRem--;
/* Check to see if the timeout period for the command has elapsed */ /* Check to see if the timeout period for the command has elapsed */
......
...@@ -58,6 +58,7 @@ int main(void) ...@@ -58,6 +58,7 @@ int main(void)
{ {
Bluetooth_Stack_Task(); Bluetooth_Stack_Task();
Bluetooth_Management_Task(); Bluetooth_Management_Task();
USB_USBTask();
} }
} }
......
...@@ -36,18 +36,27 @@ ...@@ -36,18 +36,27 @@
#include "CDCHost.h" #include "CDCHost.h"
/* Scheduler Task List */
TASK_LIST
{
{ .Task = USB_USBTask , .TaskStatus = TASK_STOP },
{ .Task = USB_CDC_Host , .TaskStatus = TASK_STOP },
};
/** Main program entry point. This routine configures the hardware required by the application, then /** Main program entry point. This routine configures the hardware required by the application, then
* starts the scheduler to run the application tasks. * starts the scheduler to run the application tasks.
*/ */
int main(void) int main(void)
{
SetupHardware();
puts_P(PSTR(ESC_RESET ESC_BG_WHITE ESC_INVERSE_ON ESC_ERASE_DISPLAY
"CDC Host Demo running.\r\n" ESC_INVERSE_OFF));
LEDs_SetAllLEDs(LEDMASK_USB_NOTREADY);
for (;;)
{
CDC_Host_Task();
USB_USBTask();
}
}
/** Configures the board hardware and chip peripherals for the demo's functionality. */
void SetupHardware(void)
{ {
/* Disable watchdog if enabled by bootloader/fuses */ /* Disable watchdog if enabled by bootloader/fuses */
MCUSR &= ~(1 << WDRF); MCUSR &= ~(1 << WDRF);
...@@ -59,22 +68,7 @@ int main(void) ...@@ -59,22 +68,7 @@ int main(void)
/* Hardware Initialization */ /* Hardware Initialization */
SerialStream_Init(9600, false); SerialStream_Init(9600, false);
LEDs_Init(); LEDs_Init();
/* Indicate USB not ready */
UpdateStatus(Status_USBNotReady);
/* Initialize Scheduler so that it can be used */
Scheduler_Init();
/* Initialize USB Subsystem */
USB_Init(); USB_Init();
/* Start-up message */
puts_P(PSTR(ESC_RESET ESC_BG_WHITE ESC_INVERSE_ON ESC_ERASE_DISPLAY
"CDC Host Demo running.\r\n" ESC_INVERSE_OFF));
/* Scheduling - routine never returns, so put this last in the main function */
Scheduler_Start();
} }
/** Event handler for the USB_DeviceAttached event. This indicates that a device has been attached to the host, and /** Event handler for the USB_DeviceAttached event. This indicates that a device has been attached to the host, and
...@@ -83,10 +77,7 @@ int main(void) ...@@ -83,10 +77,7 @@ int main(void)
void EVENT_USB_DeviceAttached(void) void EVENT_USB_DeviceAttached(void)
{ {
puts_P(PSTR("Device Attached.\r\n")); puts_P(PSTR("Device Attached.\r\n"));
UpdateStatus(Status_USBEnumerating); LEDs_SetAllLEDs(LEDMASK_USB_ENUMERATING);
/* Start USB management task to enumerate the device */
Scheduler_SetTaskMode(USB_USBTask, TASK_RUN);
} }
/** Event handler for the USB_DeviceUnattached event. This indicates that a device has been removed from the host, and /** Event handler for the USB_DeviceUnattached event. This indicates that a device has been removed from the host, and
...@@ -94,12 +85,8 @@ void EVENT_USB_DeviceAttached(void) ...@@ -94,12 +85,8 @@ void EVENT_USB_DeviceAttached(void)
*/ */
void EVENT_USB_DeviceUnattached(void) void EVENT_USB_DeviceUnattached(void)
{ {
/* Stop keyboard and USB management task */
Scheduler_SetTaskMode(USB_USBTask, TASK_STOP);
Scheduler_SetTaskMode(USB_CDC_Host, TASK_STOP);
puts_P(PSTR("\r\nDevice Unattached.\r\n")); puts_P(PSTR("\r\nDevice Unattached.\r\n"));
UpdateStatus(Status_USBNotReady); LEDs_SetAllLEDs(LEDMASK_USB_NOTREADY);
} }
/** Event handler for the USB_DeviceEnumerationComplete event. This indicates that a device has been successfully /** Event handler for the USB_DeviceEnumerationComplete event. This indicates that a device has been successfully
...@@ -107,11 +94,7 @@ void EVENT_USB_DeviceUnattached(void) ...@@ -107,11 +94,7 @@ void EVENT_USB_DeviceUnattached(void)
*/ */
void EVENT_USB_DeviceEnumerationComplete(void) void EVENT_USB_DeviceEnumerationComplete(void)
{ {
/* Start CDC Host task */ LEDs_SetAllLEDs(LEDMASK_USB_READY);
Scheduler_SetTaskMode(USB_CDC_Host, TASK_RUN);
/* Indicate device enumeration complete */
UpdateStatus(Status_USBReady);
} }
/** Event handler for the USB_HostError event. This indicates that a hardware error occurred while in host mode. */ /** Event handler for the USB_HostError event. This indicates that a hardware error occurred while in host mode. */
...@@ -122,7 +105,7 @@ void EVENT_USB_HostError(const uint8_t ErrorCode) ...@@ -122,7 +105,7 @@ void EVENT_USB_HostError(const uint8_t ErrorCode)
puts_P(PSTR(ESC_BG_RED "Host Mode Error\r\n")); puts_P(PSTR(ESC_BG_RED "Host Mode Error\r\n"));
printf_P(PSTR(" -- Error Code %d\r\n"), ErrorCode); printf_P(PSTR(" -- Error Code %d\r\n"), ErrorCode);
UpdateStatus(Status_HardwareError); LEDs_SetAllLEDs(LEDMASK_USB_ERROR);
for(;;); for(;;);
} }
...@@ -136,44 +119,13 @@ void EVENT_USB_DeviceEnumerationFailed(const uint8_t ErrorCode, const uint8_t Su ...@@ -136,44 +119,13 @@ void EVENT_USB_DeviceEnumerationFailed(const uint8_t ErrorCode, const uint8_t Su
printf_P(PSTR(" -- Sub Error Code %d\r\n"), SubErrorCode); printf_P(PSTR(" -- Sub Error Code %d\r\n"), SubErrorCode);
printf_P(PSTR(" -- In State %d\r\n"), USB_HostState); printf_P(PSTR(" -- In State %d\r\n"), USB_HostState);
UpdateStatus(Status_EnumerationError); LEDs_SetAllLEDs(LEDMASK_USB_ERROR);
}
/** Function to manage status updates to the user. This is done via LEDs on the given board, if available, but may be changed to
* log to a serial port, or anything else that is suitable for status updates.
*
* \param CurrentStatus Current status of the system, from the CDCHost_StatusCodes_t enum
*/
void UpdateStatus(uint8_t CurrentStatus)
{
uint8_t LEDMask = LEDS_NO_LEDS;
/* Set the LED mask to the appropriate LED mask based on the given status code */
switch (CurrentStatus)
{
case Status_USBNotReady:
LEDMask = (LEDS_LED1);
break;
case Status_USBEnumerating:
LEDMask = (LEDS_LED1 | LEDS_LED2);
break;
case Status_USBReady:
LEDMask = (LEDS_LED2);
break;
case Status_EnumerationError:
case Status_HardwareError:
LEDMask = (LEDS_LED1 | LEDS_LED3);
break;
}
/* Set the board LEDs to the new LED mask */
LEDs_SetAllLEDs(LEDMask);
} }
/** Task to set the configuration of the attached device after it has been enumerated, and to read in /** Task to set the configuration of the attached device after it has been enumerated, and to read in
* data received from the attached CDC device and print it to the serial port. * data received from the attached CDC device and print it to the serial port.
*/ */
TASK(USB_CDC_Host) void CDC_Host_Task(void)
{ {
uint8_t ErrorCode; uint8_t ErrorCode;
...@@ -200,7 +152,7 @@ TASK(USB_CDC_Host) ...@@ -200,7 +152,7 @@ TASK(USB_CDC_Host)
printf_P(PSTR(" -- Error Code: %d\r\n"), ErrorCode); printf_P(PSTR(" -- Error Code: %d\r\n"), ErrorCode);
/* Indicate error via status LEDs */ /* Indicate error via status LEDs */
UpdateStatus(Status_EnumerationError); LEDs_SetAllLEDs(LEDMASK_USB_ERROR);
/* Wait until USB device disconnected */ /* Wait until USB device disconnected */
while (USB_IsConnected); while (USB_IsConnected);
...@@ -223,7 +175,7 @@ TASK(USB_CDC_Host) ...@@ -223,7 +175,7 @@ TASK(USB_CDC_Host)
printf_P(PSTR(" -- Error Code: %d\r\n"), ErrorCode); printf_P(PSTR(" -- Error Code: %d\r\n"), ErrorCode);
/* Indicate error via status LEDs */ /* Indicate error via status LEDs */
UpdateStatus(Status_EnumerationError); LEDs_SetAllLEDs(LEDMASK_USB_ERROR);
/* Wait until USB device disconnected */ /* Wait until USB device disconnected */
while (USB_IsConnected); while (USB_IsConnected);
......
...@@ -43,12 +43,11 @@ ...@@ -43,12 +43,11 @@
#include <avr/power.h> #include <avr/power.h>
#include <stdio.h> #include <stdio.h>
#include <LUFA/Version.h> // Library Version Information #include <LUFA/Version.h>
#include <LUFA/Drivers/Misc/TerminalCodes.h> // ANSI Terminal Escape Codes #include <LUFA/Drivers/Misc/TerminalCodes.h>
#include <LUFA/Drivers/USB/USB.h> // USB Functionality #include <LUFA/Drivers/USB/USB.h>
#include <LUFA/Drivers/Peripheral/SerialStream.h> // Serial stream driver #include <LUFA/Drivers/Peripheral/SerialStream.h>
#include <LUFA/Drivers/Board/LEDs.h> // LEDs driver #include <LUFA/Drivers/Board/LEDs.h>
#include <LUFA/Scheduler/Scheduler.h> // Simple scheduler for task management
#include "ConfigDescriptor.h" #include "ConfigDescriptor.h"
...@@ -62,27 +61,26 @@ ...@@ -62,27 +61,26 @@
/** Pipe number for the CDC notification pipe */ /** Pipe number for the CDC notification pipe */
#define CDC_NOTIFICATIONPIPE 3 #define CDC_NOTIFICATIONPIPE 3
/* Enums: */ /** LED mask for the library LED driver, to indicate that the USB interface is not ready. */
/** Enum for the possible status codes for passing to the UpdateStatus() function. */ #define LEDMASK_USB_NOTREADY LEDS_LED1
enum CDCHost_StatusCodes_t
{
Status_USBNotReady = 0, /**< USB is not ready (disconnected from a USB device) */
Status_USBEnumerating = 1, /**< USB interface is enumerating */
Status_USBReady = 2, /**< USB interface is connected and ready */
Status_EnumerationError = 3, /**< Software error while enumerating the attached USB device */
Status_HardwareError = 4, /**< Hardware error while enumerating the attached USB device */
};
/* Task Definitions: */ /** LED mask for the library LED driver, to indicate that the USB interface is enumerating. */
TASK(USB_CDC_Host); #define LEDMASK_USB_ENUMERATING (LEDS_LED2 | LEDS_LED3)
/** LED mask for the library LED driver, to indicate that the USB interface is ready. */
#define LEDMASK_USB_READY (LEDS_LED2 | LEDS_LED4)
/** LED mask for the library LED driver, to indicate that an error has occurred in the USB interface. */
#define LEDMASK_USB_ERROR (LEDS_LED1 | LEDS_LED3)
/* Function Prototypes: */ /* Function Prototypes: */
void SetupHardware(void);
void CDC_Host_Task(void);
void EVENT_USB_HostError(const uint8_t ErrorCode); void EVENT_USB_HostError(const uint8_t ErrorCode);
void EVENT_USB_DeviceAttached(void); void EVENT_USB_DeviceAttached(void);
void EVENT_USB_DeviceUnattached(void); void EVENT_USB_DeviceUnattached(void);
void EVENT_USB_DeviceEnumerationFailed(const uint8_t ErrorCode, const uint8_t SubErrorCode); void EVENT_USB_DeviceEnumerationFailed(const uint8_t ErrorCode, const uint8_t SubErrorCode);
void EVENT_USB_DeviceEnumerationComplete(void); void EVENT_USB_DeviceEnumerationComplete(void);
void UpdateStatus(uint8_t CurrentStatus);
#endif #endif
...@@ -119,13 +119,12 @@ OBJDIR = . ...@@ -119,13 +119,12 @@ OBJDIR = .
# Path to the LUFA library # Path to the LUFA library
LUFA_PATH = ../../.. LUFA_PATH = ../../../..
# List C source files here. (C dependencies are automatically generated.) # List C source files here. (C dependencies are automatically generated.)
SRC = $(TARGET).c \ SRC = $(TARGET).c \
ConfigDescriptor.c \ ConfigDescriptor.c \
$(LUFA_PATH)/LUFA/Scheduler/Scheduler.c \
$(LUFA_PATH)/LUFA/Drivers/Peripheral/SerialStream.c \ $(LUFA_PATH)/LUFA/Drivers/Peripheral/SerialStream.c \
$(LUFA_PATH)/LUFA/Drivers/Peripheral/Serial.c \ $(LUFA_PATH)/LUFA/Drivers/Peripheral/Serial.c \
$(LUFA_PATH)/LUFA/Drivers/USB/LowLevel/DevChapter9.c \ $(LUFA_PATH)/LUFA/Drivers/USB/LowLevel/DevChapter9.c \
...@@ -138,7 +137,6 @@ SRC = $(TARGET).c \ ...@@ -138,7 +137,6 @@ SRC = $(TARGET).c \
$(LUFA_PATH)/LUFA/Drivers/USB/HighLevel/USBInterrupt.c \ $(LUFA_PATH)/LUFA/Drivers/USB/HighLevel/USBInterrupt.c \
$(LUFA_PATH)/LUFA/Drivers/USB/HighLevel/USBTask.c \ $(LUFA_PATH)/LUFA/Drivers/USB/HighLevel/USBTask.c \
$(LUFA_PATH)/LUFA/Drivers/USB/HighLevel/ConfigDescriptor.c \ $(LUFA_PATH)/LUFA/Drivers/USB/HighLevel/ConfigDescriptor.c \
$(LUFA_PATH)/LUFA/Drivers/USB/Class/HIDParser.c \
# List C++ source files here. (C dependencies are automatically generated.) # List C++ source files here. (C dependencies are automatically generated.)
......
...@@ -36,18 +36,27 @@ ...@@ -36,18 +36,27 @@
#include "GenericHIDHost.h" #include "GenericHIDHost.h"
/* Scheduler Task List */
TASK_LIST
{
{ .Task = USB_USBTask , .TaskStatus = TASK_STOP },
{ .Task = USB_HID_Host , .TaskStatus = TASK_STOP },
};
/** Main program entry point. This routine configures the hardware required by the application, then /** Main program entry point. This routine configures the hardware required by the application, then
* starts the scheduler to run the application tasks. * starts the scheduler to run the application tasks.
*/ */
int main(void) int main(void)
{
SetupHardware();
puts_P(PSTR(ESC_RESET ESC_BG_WHITE ESC_INVERSE_ON ESC_ERASE_DISPLAY
"Generic HID Host Demo running.\r\n" ESC_INVERSE_OFF));
LEDs_SetAllLEDs(LEDMASK_USB_NOTREADY);
for (;;)
{
HID_Host_Task();
USB_USBTask();
}
}
/** Configures the board hardware and chip peripherals for the demo's functionality. */
void SetupHardware(void)
{ {
/* Disable watchdog if enabled by bootloader/fuses */ /* Disable watchdog if enabled by bootloader/fuses */
MCUSR &= ~(1 << WDRF); MCUSR &= ~(1 << WDRF);
...@@ -55,26 +64,11 @@ int main(void) ...@@ -55,26 +64,11 @@ int main(void)
/* Disable clock division */ /* Disable clock division */
clock_prescale_set(clock_div_1); clock_prescale_set(clock_div_1);
/* Hardware Initialization */ /* Hardware Initialization */
SerialStream_Init(9600, false); SerialStream_Init(9600, false);
LEDs_Init(); LEDs_Init();
/* Indicate USB not ready */
UpdateStatus(Status_USBNotReady);
/* Initialize Scheduler so that it can be used */
Scheduler_Init();
/* Initialize USB Subsystem */
USB_Init(); USB_Init();
/* Start-up message */
puts_P(PSTR(ESC_RESET ESC_BG_WHITE ESC_INVERSE_ON ESC_ERASE_DISPLAY
"Generic HID Host Demo running.\r\n" ESC_INVERSE_OFF));
/* Scheduling - routine never returns, so put this last in the main function */
Scheduler_Start();
} }
/** Event handler for the USB_DeviceAttached event. This indicates that a device has been attached to the host, and /** Event handler for the USB_DeviceAttached event. This indicates that a device has been attached to the host, and
...@@ -83,10 +77,7 @@ int main(void) ...@@ -83,10 +77,7 @@ int main(void)
void EVENT_USB_DeviceAttached(void) void EVENT_USB_DeviceAttached(void)
{ {
puts_P(PSTR("Device Attached.\r\n")); puts_P(PSTR("Device Attached.\r\n"));
UpdateStatus(Status_USBEnumerating); LEDs_SetAllLEDs(LEDMASK_USB_ENUMERATING);
/* Start USB management task to enumerate the device */
Scheduler_SetTaskMode(USB_USBTask, TASK_RUN);
} }
/** Event handler for the USB_DeviceUnattached event. This indicates that a device has been removed from the host, and /** Event handler for the USB_DeviceUnattached event. This indicates that a device has been removed from the host, and
...@@ -94,12 +85,8 @@ void EVENT_USB_DeviceAttached(void) ...@@ -94,12 +85,8 @@ void EVENT_USB_DeviceAttached(void)
*/ */
void EVENT_USB_DeviceUnattached(void) void EVENT_USB_DeviceUnattached(void)
{ {
/* Stop HID and USB management task */
Scheduler_SetTaskMode(USB_USBTask, TASK_STOP);
Scheduler_SetTaskMode(USB_HID_Host, TASK_STOP);
puts_P(PSTR("Device Unattached.\r\n")); puts_P(PSTR("Device Unattached.\r\n"));
UpdateStatus(Status_USBNotReady); LEDs_SetAllLEDs(LEDMASK_USB_NOTREADY);
} }
/** Event handler for the USB_DeviceEnumerationComplete event. This indicates that a device has been successfully /** Event handler for the USB_DeviceEnumerationComplete event. This indicates that a device has been successfully
...@@ -107,11 +94,7 @@ void EVENT_USB_DeviceUnattached(void) ...@@ -107,11 +94,7 @@ void EVENT_USB_DeviceUnattached(void)
*/ */
void EVENT_USB_DeviceEnumerationComplete(void) void EVENT_USB_DeviceEnumerationComplete(void)
{ {
/* Start HID Host task */ LEDs_SetAllLEDs(LEDMASK_USB_READY);
Scheduler_SetTaskMode(USB_HID_Host, TASK_RUN);
/* Indicate device enumeration complete */
UpdateStatus(Status_USBReady);
} }
/** Event handler for the USB_HostError event. This indicates that a hardware error occurred while in host mode. */ /** Event handler for the USB_HostError event. This indicates that a hardware error occurred while in host mode. */
...@@ -122,7 +105,7 @@ void EVENT_USB_HostError(const uint8_t ErrorCode) ...@@ -122,7 +105,7 @@ void EVENT_USB_HostError(const uint8_t ErrorCode)
puts_P(PSTR(ESC_BG_RED "Host Mode Error\r\n")); puts_P(PSTR(ESC_BG_RED "Host Mode Error\r\n"));
printf_P(PSTR(" -- Error Code %d\r\n"), ErrorCode); printf_P(PSTR(" -- Error Code %d\r\n"), ErrorCode);
UpdateStatus(Status_HardwareError); LEDs_SetAllLEDs(LEDMASK_USB_ERROR);
for(;;); for(;;);
} }
...@@ -136,38 +119,7 @@ void EVENT_USB_DeviceEnumerationFailed(const uint8_t ErrorCode, const uint8_t Su ...@@ -136,38 +119,7 @@ void EVENT_USB_DeviceEnumerationFailed(const uint8_t ErrorCode, const uint8_t Su
printf_P(PSTR(" -- Sub Error Code %d\r\n"), SubErrorCode); printf_P(PSTR(" -- Sub Error Code %d\r\n"), SubErrorCode);
printf_P(PSTR(" -- In State %d\r\n"), USB_HostState); printf_P(PSTR(" -- In State %d\r\n"), USB_HostState);
UpdateStatus(Status_EnumerationError); LEDs_SetAllLEDs(LEDMASK_USB_ERROR);
}
/** Function to manage status updates to the user. This is done via LEDs on the given board, if available, but may be changed to
* log to a serial port, or anything else that is suitable for status updates.
*
* \param CurrentStatus Current status of the system, from the GenericHIDHost_StatusCodes_t enum
*/
void UpdateStatus(uint8_t CurrentStatus)
{
uint8_t LEDMask = LEDS_NO_LEDS;
/* Set the LED mask to the appropriate LED mask based on the given status code */
switch (CurrentStatus)
{
case Status_USBNotReady:
LEDMask = (LEDS_LED1);
break;
case Status_USBEnumerating:
LEDMask = (LEDS_LED1 | LEDS_LED2);
break;
case Status_USBReady:
LEDMask = (LEDS_LED2);
break;