Commit of new class abstraction APIs for all device demos other than the MIDI demo - not documented yet.

Removed scheduler and memory allocation libraries.

Added new EVENT_USB_StartOfFrame event in the library to indicate the start of each USB frame (when generated).

Removed Tx interrupt from the USBtoSerial demo; now sends characters via polling to ensure more time for the Rx interrupt.
This commit is contained in:
Dean Camera 2009-06-01 11:03:39 +00:00
parent 2440ca268a
commit d1e5266036
106 changed files with 3072 additions and 5760 deletions

View file

@ -267,6 +267,11 @@
* \ref Group_USBManagement documentation).
*/
void EVENT_USB_Reset(void);
/** Event for the USB start of frame interrupt, firing once each millisecond in either device or host
* mode, while USB frames are being generated or recieved.
*/
void EVENT_USB_StartOfFrame(void);
#endif
/* Private Interface - For use in library only: */
@ -303,6 +308,7 @@
void EVENT_USB_Suspend(void) ATTR_WEAK ATTR_ALIAS(USB_Event_Stub);
void EVENT_USB_WakeUp(void) ATTR_WEAK ATTR_ALIAS(USB_Event_Stub);
void EVENT_USB_Reset(void) ATTR_WEAK ATTR_ALIAS(USB_Event_Stub);
void EVENT_USB_StartOfFrame(void) ATTR_WEAK ATTR_ALIAS(USB_Event_Stub);
#endif
#endif

View file

@ -180,6 +180,15 @@ ISR(USB_GEN_vect, ISR_BLOCK)
EVENT_USB_Reset();
}
if (USB_INT_HasOccurred(USB_INT_SOFI) && USB_INT_IsEnabled(USB_INT_SOFI))
{
USB_INT_Clear(USB_INT_SOFI);
FrameElapsed = true;
EVENT_USB_StartOfFrame();
}
#endif
#if defined(USB_CAN_BE_HOST)
@ -232,6 +241,15 @@ ISR(USB_GEN_vect, ISR_BLOCK)
USB_ResetInterface();
}
if (USB_INT_HasOccurred(USB_INT_HSOFI) && USB_INT_IsEnabled(USB_INT_HSOFI))
{
USB_INT_Clear(USB_INT_HSOFI);
FrameElapsed = true;
EVENT_USB_StartOfFrame();
}
#endif
#if defined(USB_CAN_BE_BOTH)

View file

@ -42,7 +42,7 @@ USB_Request_Header_t USB_ControlRequest;
volatile uint8_t USB_HostState;
#endif
TASK(USB_USBTask)
void USB_USBTask(void)
{
#if defined(USB_HOST_ONLY)
USB_HostTask();

View file

@ -38,7 +38,6 @@
#include <stdbool.h>
#include <stddef.h>
#include "../../../Scheduler/Scheduler.h"
#include "../LowLevel/LowLevel.h"
#include "StdRequestType.h"
#include "USBMode.h"
@ -122,11 +121,11 @@
extern volatile uint8_t USB_HostState;
#endif
/* Tasks: */
/* Function Prototypes: */
/** This is the main USB management task. The USB driver requires that this task be executed
* continuously when the USB system is active (device attached in host mode, or attached to a host
* in device mode) in order to manage USB communications. This task may be executed inside an RTOS,
* scheduler (e.g. the simple LUFA Scheduler), fast timer ISR or the main user application loop.
* fast timer ISR or the main user application loop.
*
* The USB task must be serviced within 30ms while in device mode, or within 1ms while in host mode.
* The task may be serviced at all times, or (for minimum CPU consumption):
@ -145,7 +144,7 @@
*
* \ingroup Group_USBManagement
*/
TASK(USB_USBTask);
void USB_USBTask(void);
/* Private Interface - For use in library only: */
#if !defined(__DOXYGEN__)