diff options
author | Dean Camera <dean@fourwalledcubicle.com> | 2009-06-04 06:26:35 +0000 |
---|---|---|
committer | Dean Camera <dean@fourwalledcubicle.com> | 2009-06-04 06:26:35 +0000 |
commit | 7665bf323e76ed1ebcfd137e2ab0bd356b43a5e8 (patch) | |
tree | 2c188510edd76b4ef83f64639810f6dfbdd86b6b /Demos/OTG | |
parent | dc42c5eb6b663b0b117b5660ba5818186744efd5 (diff) | |
download | lufa-7665bf323e76ed1ebcfd137e2ab0bd356b43a5e8.tar.gz lufa-7665bf323e76ed1ebcfd137e2ab0bd356b43a5e8.tar.bz2 lufa-7665bf323e76ed1ebcfd137e2ab0bd356b43a5e8.zip |
Fixed EVENT_USB_CDC_ControLineStateChanged() event not taking the CDC interface structure as a parameter.
Converted TestApp demo over to the new demo structure.
More class driver documentation improvements.
Diffstat (limited to 'Demos/OTG')
-rw-r--r-- | Demos/OTG/TestApp/TestApp.c | 105 | ||||
-rw-r--r-- | Demos/OTG/TestApp/TestApp.h | 29 | ||||
-rw-r--r-- | Demos/OTG/TestApp/TestApp.txt | 10 | ||||
-rw-r--r-- | Demos/OTG/TestApp/TestEvents.c | 14 | ||||
-rw-r--r-- | Demos/OTG/TestApp/TestEvents.h | 11 | ||||
-rw-r--r-- | Demos/OTG/TestApp/makefile | 1 |
6 files changed, 61 insertions, 109 deletions
diff --git a/Demos/OTG/TestApp/TestApp.c b/Demos/OTG/TestApp/TestApp.c index 4dc9b44e3..dc10aadfc 100644 --- a/Demos/OTG/TestApp/TestApp.c +++ b/Demos/OTG/TestApp/TestApp.c @@ -36,20 +36,31 @@ #include "TestApp.h"
-/* Scheduler Task List */
-TASK_LIST
-{
- { .Task = TestApp_CheckJoystick, .TaskStatus = TASK_RUN },
- { .Task = TestApp_CheckButton , .TaskStatus = TASK_RUN },
- { .Task = TestApp_CheckTemp , .TaskStatus = TASK_RUN },
- { .Task = USB_USBTask , .TaskStatus = TASK_RUN },
-};
-
/** Main program entry point. This routine configures the hardware required by the application, then
* starts the scheduler to run the application tasks.
*/
int main(void)
{
+ SetupHardware();
+
+ puts_P(PSTR(ESC_RESET ESC_BG_WHITE ESC_INVERSE_ON ESC_ERASE_DISPLAY
+ "LUFA Demo running.\r\n" ESC_INVERSE_OFF));
+
+ for (;;)
+ {
+ CheckJoystick();
+ CheckButton();
+ CheckTemperature();
+
+ /* Clear output-compare flag (logic 1 clears the flag) */
+ TIFR0 |= (1 << OCF0A);
+
+ USB_USBTask();
+ }
+}
+
+void SetupHardware(void)
+{
/* Disable watchdog if enabled by bootloader/fuses */
MCUSR &= ~(1 << WDRF);
wdt_disable();
@@ -65,41 +76,20 @@ int main(void) LEDs_Init();
Buttons_Init();
- /* Millisecond timer initialization, with output compare interrupt enabled */
+ /* Millisecond timer initialization */
OCR0A = 0x7D;
TCCR0A = (1 << WGM01);
TCCR0B = ((1 << CS01) | (1 << CS00));
- TIMSK0 = (1 << OCIE0A);
-
- /* Turn on interrupts */
- sei();
-
- /* Start-up message via USART */
- puts_P(PSTR(ESC_RESET ESC_BG_WHITE ESC_INVERSE_ON ESC_ERASE_DISPLAY
- "LUFA Demo running.\r\n" ESC_INVERSE_OFF));
-
- /* Scheduling - routine never returns, so put this last in the main function */
- Scheduler_Start();
-}
-
-/** ISR for the timer 0 compare vector. This ISR fires once each millisecond, and increments the
- * scheduler tick counter.
- */
-ISR(TIMER0_COMPA_vect, ISR_BLOCK)
-{
- /* Scheduler test - increment scheduler tick counter once each millisecond */
- Scheduler_TickCounter++;
}
/** Task responsible for checking the joystick position, and displaying the joystick position onto the
* board LEDs.
*/
-TASK(TestApp_CheckJoystick)
+void CheckJoystick(void)
{
uint8_t JoyStatus_LCL = Joystick_GetStatus();
- uint8_t LEDMask = 0;
+ uint8_t LEDMask = LEDS_NO_LEDS;
- /* Test of the Joystick - change a mask in response to joystick */
if (JoyStatus_LCL & JOY_UP)
LEDMask |= LEDS_LED1;
@@ -115,78 +105,61 @@ TASK(TestApp_CheckJoystick) if (JoyStatus_LCL & JOY_PRESS)
LEDMask = LEDS_ALL_LEDS;
- /* Test of LEDs - light up in response to joystick */
LEDs_SetAllLEDs(LEDMask);
}
/** Task responsible for checking the current temperature via the temperature sensor mounted on the
* board, and displaying it through the serial USART.
*/
-TASK(TestApp_CheckTemp)
+void CheckTemperature(void)
{
- static SchedulerDelayCounter_t DelayCounter = 10000; // Force immediate run on start-up
+ static uint16_t MSElapsed = 0;
+
+ if (TIFR0 & (1 << OCF0A))
+ MSElapsed++;
/* Task runs every 10000 ticks, 10 seconds for this demo */
- if (Scheduler_HasDelayElapsed(10000, &DelayCounter))
+ if (MSElapsed == 1000)
{
printf_P(PSTR("Current temperature: %d Degrees Celcius\r\n\r\n"),
(int8_t)Temperature_GetTemperature());
- /* Reset the delay counter, ready to count another 10000 tick interval */
- Scheduler_ResetDelay(&DelayCounter);
+ MSElapsed = 0;
}
}
/** Task responsible for checking the board's first button' position, and start-stopping other tasks and the USB
* interface in response to user joystick movements.
*/
-TASK(TestApp_CheckButton)
+void CheckButton(void)
{
- static SchedulerDelayCounter_t DelayCounter = 0;
- static bool IsPressed;
- static bool BlockingJoystickTask;
+ static uint16_t DebounceMSElapsed = 0;
+ static bool IsPressed;
- /* Check if board button pressed (start USB) */
+ if (TIFR0 & (1 << OCF0A))
+ DebounceMSElapsed++;
+
if (Buttons_GetStatus() & BUTTONS_BUTTON1)
{
- /* Debounce - check 100 ticks later to see if button is still being pressed */
- if ((IsPressed == false) && (Scheduler_HasDelayElapsed(100, &DelayCounter)))
+ if (!(IsPressed) && (DebounceMSElapsed == 100))
{
- /* Set flag, indicating that current pressed state has been handled */
IsPressed = true;
-
- /* First start of the USB interface permanently blocks the joystick task */
- if (BlockingJoystickTask == false)
- {
- Scheduler_SetTaskMode(TestApp_CheckJoystick, TASK_STOP);
- BlockingJoystickTask = true;
- }
- /* Toggle USB interface */
if (USB_IsInitialized == true)
{
USB_ShutDown();
-
- LEDs_SetAllLEDs(LEDS_LED1);
puts_P(PSTR(ESC_BG_WHITE "USB Power Off.\r\n"));
-
- Scheduler_SetTaskMode(TestApp_CheckTemp, TASK_RUN);
}
else
{
- Scheduler_SetTaskMode(TestApp_CheckTemp, TASK_STOP);
-
- LEDs_SetAllLEDs(LEDS_LED2 | LEDS_LED3);
- puts_P(PSTR(ESC_BG_YELLOW "USB Power On.\r\n"));
-
+ puts_P(PSTR(ESC_BG_YELLOW "USB Power On.\r\n"));
USB_Init(USB_MODE_UID, USB_DEVICE_OPT_FULLSPEED | USB_OPT_REG_ENABLED | USB_OPT_AUTO_PLL);
}
}
}
else
{
- /* Board button not pressed - reset debounce interval counter and press handled flag */
- Scheduler_ResetDelay(&DelayCounter);
+ DebounceMSElapsed = 0;
IsPressed = false;
}
}
diff --git a/Demos/OTG/TestApp/TestApp.h b/Demos/OTG/TestApp/TestApp.h index 7ae5663d9..832b5f977 100644 --- a/Demos/OTG/TestApp/TestApp.h +++ b/Demos/OTG/TestApp/TestApp.h @@ -42,20 +42,21 @@ #include <avr/wdt.h>
#include <avr/power.h>
- #include <LUFA/Version.h> // Library Version Information
- #include <LUFA/Drivers/USB/USB.h> // USB Functionality
- #include <LUFA/Scheduler/Scheduler.h> // Simple scheduler for task management
- #include <LUFA/Drivers/Misc/TerminalCodes.h> // ANSI Terminal Escape Codes
- #include <LUFA/Drivers/Peripheral/ADC.h> // ADC driver
- #include <LUFA/Drivers/Peripheral/SerialStream.h> // USART Stream driver
- #include <LUFA/Drivers/Board/Joystick.h> // Joystick driver
- #include <LUFA/Drivers/Board/LEDs.h> // LED driver
- #include <LUFA/Drivers/Board/Buttons.h> // Board Buttons driver
- #include <LUFA/Drivers/Board/Temperature.h> // Temperature sensor driver
+ #include <LUFA/Version.h>
+ #include <LUFA/Drivers/USB/USB.h>
+ #include <LUFA/Drivers/Misc/TerminalCodes.h>
+ #include <LUFA/Drivers/Peripheral/ADC.h>
+ #include <LUFA/Drivers/Peripheral/SerialStream.h>
+ #include <LUFA/Drivers/Board/Joystick.h>
+ #include <LUFA/Drivers/Board/LEDs.h>
+ #include <LUFA/Drivers/Board/Buttons.h>
+ #include <LUFA/Drivers/Board/Temperature.h>
- /* Task Definitions: */
- TASK(TestApp_CheckJoystick);
- TASK(TestApp_CheckButton);
- TASK(TestApp_CheckTemp);
+ /* Function Prototypes: */
+ void SetupHardware(void);
+
+ void CheckJoystick(void);
+ void CheckButton(void);
+ void CheckTemperature(void);
#endif
diff --git a/Demos/OTG/TestApp/TestApp.txt b/Demos/OTG/TestApp/TestApp.txt index a0f1488ec..540a59ce1 100644 --- a/Demos/OTG/TestApp/TestApp.txt +++ b/Demos/OTG/TestApp/TestApp.txt @@ -42,19 +42,13 @@ * Pressing the HWB will initiate the USB subsystem, enumerating
* the device (which has <b>no actual functionality beyond
* enumeration as a device or as a host in this demo</b>, and serves
- * only to demonstrate the USB portion of the library). It will
- * also suspend the joystick and temperature monitoring tasks.
+ * only to demonstrate the USB portion of the library).
*
- * Pressing the HWB a second time will turn off the USB system
- * and resume the temperature printing task (but not the joystick
- * monitoring task).
+ * Pressing the HWB a second time will turn off the USB system.
*
* When activated, the USB events will be printed through the
* serial USART.
*
- * When the USB subsystem is activated, the board LEDs will show
- * the current USB status.
- *
* \section SSec_Options Project Options
*
* The following defines can be found in this demo, which can control the demo behaviour when defined, or changed in value.
diff --git a/Demos/OTG/TestApp/TestEvents.c b/Demos/OTG/TestApp/TestEvents.c index ea7fa4b55..9b091472f 100644 --- a/Demos/OTG/TestApp/TestEvents.c +++ b/Demos/OTG/TestApp/TestEvents.c @@ -79,9 +79,6 @@ void EVENT_USB_VBUSDisconnect(void) void EVENT_USB_Connect(void)
{
puts_P(PSTR(EVENT_PREFIX "USB +\r\n"));
- LEDs_SetAllLEDs(LEDS_LED2 | LEDS_LED3 | LEDS_LED4);
-
- Scheduler_SetTaskMode(USB_USBTask, TASK_RUN);
}
/**
@@ -90,24 +87,19 @@ void EVENT_USB_Connect(void) */
void EVENT_USB_Disconnect(void)
{
- Scheduler_SetTaskMode(USB_USBTask, TASK_STOP);
-
puts_P(PSTR(EVENT_PREFIX "USB -\r\n"));
- LEDs_SetAllLEDs(LEDS_LED2 | LEDS_LED3 | LEDS_LED3);
}
/** Event handler for the USB_Suspend event. When fired, the event is logged to the USART. */
void EVENT_USB_Suspend(void)
{
puts_P(PSTR(EVENT_PREFIX ESC_BG_YELLOW "USB Sleep\r\n"));
- LEDs_SetAllLEDs(LEDS_ALL_LEDS);
}
/** Event handler for the USB_WakeUp event. When fired, the event is logged to the USART. */
void EVENT_USB_WakeUp(void)
{
puts_P(PSTR(EVENT_PREFIX ESC_BG_GREEN "USB Wakeup\r\n"));
- LEDs_SetAllLEDs(LEDS_LED2 | LEDS_LED4);
}
/** Event handler for the USB_Reset event. When fired, the event is logged to the USART. */
@@ -129,8 +121,6 @@ void EVENT_USB_UIDChange(void) ModeStrPtr = PSTR("DEVICE");
else
ModeStrPtr = PSTR("N/A");
-
- LEDs_SetAllLEDs(LEDS_LED2 | LEDS_LED3);
printf_P(PSTR(" -- New Mode %S\r\n"), ModeStrPtr);
}
@@ -192,16 +182,12 @@ void EVENT_USB_UnhandledControlPacket(void) void EVENT_USB_ConfigurationChanged(void)
{
puts_P(PSTR(EVENT_PREFIX "Configuration Number Changed\r\n"));
-
- LEDs_SetAllLEDs(LEDS_LED2 | LEDS_LED4);
}
/** Event handler for the USB_DeviceAttached event. When fired, the event is logged to the USART. */
void EVENT_USB_DeviceAttached(void)
{
puts_P(PSTR(EVENT_PREFIX ESC_BG_GREEN "Device +\r\n"));
-
- Scheduler_SetTaskMode(USB_USBTask, TASK_RUN);
}
/** Event handler for the USB_DeviceUnattached event. When fired, the event is logged to the USART. */
diff --git a/Demos/OTG/TestApp/TestEvents.h b/Demos/OTG/TestApp/TestEvents.h index 3642428f5..b82936fb4 100644 --- a/Demos/OTG/TestApp/TestEvents.h +++ b/Demos/OTG/TestApp/TestEvents.h @@ -39,12 +39,11 @@ /* Includes: */
#include <avr/io.h>
- #include <LUFA/Common/Common.h> // Commonly used macros
- #include <LUFA/Drivers/USB/USB.h> // USB Functionality
- #include <LUFA/Drivers/Board/LEDs.h> // LED driver
- #include <LUFA/Drivers/Peripheral/SerialStream.h> // USART Stream driver
- #include <LUFA/Drivers/Misc/TerminalCodes.h> // ANSI Terminal Escape Codes
- #include <LUFA/Scheduler/Scheduler.h> // Simple scheduler for task management
+ #include <LUFA/Common/Common.h>
+ #include <LUFA/Drivers/USB/USB.h>
+ #include <LUFA/Drivers/Board/LEDs.h>
+ #include <LUFA/Drivers/Peripheral/SerialStream.h>
+ #include <LUFA/Drivers/Misc/TerminalCodes.h> /* Macros: */
/** Prefix sent through the USART when an even fires before the actual event message. */
diff --git a/Demos/OTG/TestApp/makefile b/Demos/OTG/TestApp/makefile index a8bf4ac42..55b98815a 100644 --- a/Demos/OTG/TestApp/makefile +++ b/Demos/OTG/TestApp/makefile @@ -126,7 +126,6 @@ LUFA_PATH = ../../.. SRC = $(TARGET).c \
TestEvents.c \
Descriptors.c \
- $(LUFA_PATH)/LUFA/Scheduler/Scheduler.c \
$(LUFA_PATH)/LUFA/Drivers/Board/Temperature.c \
$(LUFA_PATH)/LUFA/Drivers/Peripheral/SerialStream.c \
$(LUFA_PATH)/LUFA/Drivers/Peripheral/Serial.c \
|