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:
parent
2440ca268a
commit
d1e5266036
106 changed files with 3072 additions and 5760 deletions
|
@ -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
|
||||
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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();
|
||||
|
|
|
@ -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__)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue