forked from mfulz_github/qmk_firmware
All comments in the library, bootloaders, demos and projects have now been spell-checked and spelling mistakes/typos corrected.
This commit is contained in:
parent
fb3fcb968e
commit
6933f2e1a5
|
@ -510,7 +510,7 @@ TASK(CDC_Task)
|
|||
}
|
||||
else if ((Command == 'B') || (Command == 'g'))
|
||||
{
|
||||
/* Delegate the block write/read to a seperate function for clarity */
|
||||
/* Delegate the block write/read to a separate function for clarity */
|
||||
ReadWriteMemoryBlock(Command);
|
||||
}
|
||||
else if (Command == 'R')
|
||||
|
|
|
@ -205,7 +205,7 @@ USB_Descriptor_String_t ProductString =
|
|||
|
||||
/** This function is called by the library when in device mode, and must be overridden (see StdDescriptors.h
|
||||
* 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 recieves a Get Descriptor request on the control endpoint, this function
|
||||
* to the USB library. When the device receives a Get Descriptor request on the control endpoint, this function
|
||||
* is called so that the descriptor details can be passed back and the appropriate descriptor sent back to the
|
||||
* USB host.
|
||||
*/
|
||||
|
|
|
@ -539,7 +539,7 @@ static void LoadStartEndAddresses(void)
|
|||
EndAddr = Address[1].Word;
|
||||
}
|
||||
|
||||
/** Handler for a Memory Program command issued by the host. This routine handles the preperations needed
|
||||
/** Handler for a Memory Program command issued by the host. This routine handles the preparations needed
|
||||
* to write subsequent data from the host into the specified memory.
|
||||
*/
|
||||
static void ProcessMemProgCommand(void)
|
||||
|
@ -569,7 +569,7 @@ static void ProcessMemProgCommand(void)
|
|||
}
|
||||
}
|
||||
|
||||
/** Handler for a Memory Read command issued by the host. This routine handles the preperations needed
|
||||
/** Handler for a Memory Read command issued by the host. This routine handles the preparations needed
|
||||
* to read subsequent data from the specified memory out to the host, as well as implementing the memory
|
||||
* blank check command.
|
||||
*/
|
||||
|
|
|
@ -63,7 +63,7 @@
|
|||
/** Minor bootloader version number. */
|
||||
#define BOOTLOADER_VERSION_REV 0
|
||||
|
||||
/** Complete bootloder version number expressed as a packed byte, constructed from the
|
||||
/** Complete bootloader version number expressed as a packed byte, constructed from the
|
||||
* two individual bootloader version macros.
|
||||
*/
|
||||
#define BOOTLOADER_VERSION ((BOOTLOADER_VERSION_MINOR << 4) | BOOTLOADER_VERSION_REV)
|
||||
|
@ -100,7 +100,7 @@
|
|||
*/
|
||||
#define DFU_FILLER_BYTES_SIZE 26
|
||||
|
||||
/** DFU class command request to detatch from the host. */
|
||||
/** DFU class command request to detach from the host. */
|
||||
#define DFU_DETATCH 0x00
|
||||
|
||||
/** DFU class command request to send data from the host to the bootloader. */
|
||||
|
@ -141,7 +141,7 @@
|
|||
/** Type define for a non-returning function pointer to the loaded application. */
|
||||
typedef void (*AppPtr_t)(void) ATTR_NO_RETURN;
|
||||
|
||||
/** Type define for a strucuture containing a complete DFU command issued by the host. */
|
||||
/** Type define for a structure containing a complete DFU command issued by the host. */
|
||||
typedef struct
|
||||
{
|
||||
uint8_t Command; /**< Single byte command to perform, one of the COMMAND_* macro values */
|
||||
|
|
|
@ -139,7 +139,7 @@ USB_Descriptor_String_t ProductString =
|
|||
|
||||
/** This function is called by the library when in device mode, and must be overridden (see StdDescriptors.h
|
||||
* 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 recieves a Get Descriptor request on the control endpoint, this function
|
||||
* to the USB library. When the device receives a Get Descriptor request on the control endpoint, this function
|
||||
* is called so that the descriptor details can be passed back and the appropriate descriptor sent back to the
|
||||
* USB host.
|
||||
*/
|
||||
|
|
|
@ -44,11 +44,11 @@
|
|||
#define DTYPE_DFUFunctional 0x21
|
||||
|
||||
/** DFU attribute mask, indicating that the DFU device will detach and re-attach when a DFU_DETACH
|
||||
* command is issued, rather than the host issing a USB Reset.
|
||||
* command is issued, rather than the host issuing a USB Reset.
|
||||
*/
|
||||
#define ATTR_WILL_DETATCH (1 << 3)
|
||||
|
||||
/** DFU attribute mask, indicating that the DFU device can communicate during the manefestation phase
|
||||
/** DFU attribute mask, indicating that the DFU device can communicate during the manifestation phase
|
||||
* (memory programming phase).
|
||||
*/
|
||||
#define ATTR_MANEFESTATION_TOLLERANT (1 << 2)
|
||||
|
|
|
@ -168,7 +168,7 @@ USB_Descriptor_String_t ProductString =
|
|||
|
||||
/** This function is called by the library when in device mode, and must be overridden (see StdDescriptors.h
|
||||
* 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 recieves a Get Descriptor request on the control endpoint, this function
|
||||
* to the USB library. When the device receives a Get Descriptor request on the control endpoint, this function
|
||||
* is called so that the descriptor details can be passed back and the appropriate descriptor sent back to the
|
||||
* USB host.
|
||||
*/
|
||||
|
|
|
@ -267,7 +267,7 @@ USB_Descriptor_String_t PROGMEM ProductString =
|
|||
|
||||
/** This function is called by the library when in device mode, and must be overridden (see StdDescriptors.h
|
||||
* 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 recieves a Get Descriptor request on the control endpoint, this function
|
||||
* to the USB library. When the device receives a Get Descriptor request on the control endpoint, this function
|
||||
* is called so that the descriptor details can be passed back and the appropriate descriptor sent back to the
|
||||
* USB host.
|
||||
*/
|
||||
|
|
|
@ -183,7 +183,7 @@
|
|||
uint8_t SourceID; /**< Source ID value of the audio source input into this feature unit */
|
||||
|
||||
uint8_t ControlSize; /**< Size of each element in the ChanelControlls array */
|
||||
uint8_t ChannelControls[3]; /**< Feature masks for the control channel, and each seperate audio channel */
|
||||
uint8_t ChannelControls[3]; /**< Feature masks for the control channel, and each separate audio channel */
|
||||
|
||||
uint8_t FeatureUnitStrIndex; /**< Index of a string descriptor describing this descriptor within the device */
|
||||
} USB_AudioFeatureUnit_t;
|
||||
|
@ -202,7 +202,7 @@
|
|||
uint8_t AssociatedOutputTerminal; /**< ID of associated output terminal, for physically grouped terminals
|
||||
* such as the speaker and microphone of a phone handset
|
||||
*/
|
||||
uint8_t TotalChannels; /**< Total number of seperate audio channels within this interface (right, left, etc.) */
|
||||
uint8_t TotalChannels; /**< Total number of separate audio channels within this interface (right, left, etc.) */
|
||||
uint16_t ChannelConfig; /**< CHANNEL_* masks indicating what channel layout is supported by this terminal */
|
||||
|
||||
uint8_t ChannelStrIndex; /**< Index of a string descriptor describing this channel within the device */
|
||||
|
|
|
@ -236,7 +236,7 @@ TASK(USB_Audio_Task)
|
|||
/* Clear the sample reload timer */
|
||||
TIFR0 |= (1 << OCF0A);
|
||||
|
||||
/* Retreive the signed 16-bit left and right audio samples */
|
||||
/* Retrieve the signed 16-bit left and right audio samples */
|
||||
int16_t LeftSample_16Bit = (int16_t)Endpoint_Read_Word_LE();
|
||||
int16_t RightSample_16Bit = (int16_t)Endpoint_Read_Word_LE();
|
||||
|
||||
|
|
|
@ -267,7 +267,7 @@ USB_Descriptor_String_t PROGMEM ProductString =
|
|||
|
||||
/** This function is called by the library when in device mode, and must be overridden (see StdDescriptors.h
|
||||
* 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 recieves a Get Descriptor request on the control endpoint, this function
|
||||
* to the USB library. When the device receives a Get Descriptor request on the control endpoint, this function
|
||||
* is called so that the descriptor details can be passed back and the appropriate descriptor sent back to the
|
||||
* USB host.
|
||||
*/
|
||||
|
|
|
@ -183,7 +183,7 @@
|
|||
uint8_t SourceID; /**< Source ID value of the audio source input into this feature unit */
|
||||
|
||||
uint8_t ControlSize; /**< Size of each element in the ChanelControlls array */
|
||||
uint8_t ChannelControls[3]; /**< Feature masks for the control channel, and each seperate audio channel */
|
||||
uint8_t ChannelControls[3]; /**< Feature masks for the control channel, and each separate audio channel */
|
||||
|
||||
uint8_t FeatureUnitStrIndex; /**< Index of a string descriptor describing this descriptor within the device */
|
||||
} USB_AudioFeatureUnit_t;
|
||||
|
@ -202,7 +202,7 @@
|
|||
uint8_t AssociatedOutputTerminal; /**< ID of associated output terminal, for physically grouped terminals
|
||||
* such as the speaker and microphone of a phone handset
|
||||
*/
|
||||
uint8_t TotalChannels; /**< Total number of seperate audio channels within this interface (right, left, etc.) */
|
||||
uint8_t TotalChannels; /**< Total number of separate audio channels within this interface (right, left, etc.) */
|
||||
uint16_t ChannelConfig; /**< CHANNEL_* masks indicating what channel layout is supported by this terminal */
|
||||
|
||||
uint8_t ChannelStrIndex; /**< Index of a string descriptor describing this channel within the device */
|
||||
|
|
|
@ -56,7 +56,7 @@ TASK_LIST
|
|||
*
|
||||
* These values are set by the host via a class-specific request, however they are not required to be used accurately.
|
||||
* It is possible to completely ignore these value or use other settings as the host is completely unaware of the physical
|
||||
* serial link characteristics and instead sends and recieves data in endpoint streams.
|
||||
* serial link characteristics and instead sends and receives data in endpoint streams.
|
||||
*/
|
||||
CDC_Line_Coding_t LineCoding = { BaudRateBPS: 9600,
|
||||
CharFormat: OneStopBit,
|
||||
|
@ -66,7 +66,7 @@ CDC_Line_Coding_t LineCoding = { BaudRateBPS: 9600,
|
|||
/** String to print through the virtual serial port when the joystick is pressed upwards. */
|
||||
char JoystickUpString[] = "Joystick Up\r\n";
|
||||
|
||||
/** String to print through the virtual serial port when the joystick is pressed downwards. */
|
||||
/** String to print through the virtual serial port when the joystick is pressed downward. */
|
||||
char JoystickDownString[] = "Joystick Down\r\n";
|
||||
|
||||
/** String to print through the virtual serial port when the joystick is pressed left. */
|
||||
|
|
|
@ -98,17 +98,17 @@
|
|||
#define CONTROL_LINE_IN_RING (1 << 3)
|
||||
|
||||
/** Mask for use with the a NOTIF_SerialState class specific notification from the device to the host,
|
||||
* to indicate that a framing error has ocurred on the virtual serial port.
|
||||
* to indicate that a framing error has occurred on the virtual serial port.
|
||||
*/
|
||||
#define CONTROL_LINE_IN_FRAMEERROR (1 << 4)
|
||||
|
||||
/** Mask for use with the a NOTIF_SerialState class specific notification from the device to the host,
|
||||
* to indicate that a parity error has ocurred on the virtual serial port.
|
||||
* to indicate that a parity error has occurred on the virtual serial port.
|
||||
*/
|
||||
#define CONTROL_LINE_IN_PARITYERROR (1 << 5)
|
||||
|
||||
/** Mask for use with the a NOTIF_SerialState class specific notification from the device to the host,
|
||||
* to indicate that a data overrun error has ocurred on the virtual serial port.
|
||||
* to indicate that a data overrun error has occurred on the virtual serial port.
|
||||
*/
|
||||
#define CONTROL_LINE_IN_OVERRUNERROR (1 << 6)
|
||||
|
||||
|
@ -138,7 +138,7 @@
|
|||
uint8_t ParityType; /**< Parity setting of the virtual serial port, a value from the
|
||||
* CDCDevice_LineCodingParity_t enum
|
||||
*/
|
||||
uint8_t DataBits; /**< Bits of data per charater of the virtual serial port */
|
||||
uint8_t DataBits; /**< Bits of data per character of the virtual serial port */
|
||||
} CDC_Line_Coding_t;
|
||||
|
||||
/** Type define for a CDC notification, sent to the host via the CDC notification endpoint to indicate a
|
||||
|
|
|
@ -216,7 +216,7 @@ USB_Descriptor_String_t PROGMEM ProductString =
|
|||
|
||||
/** This function is called by the library when in device mode, and must be overridden (see StdDescriptors.h
|
||||
* 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 recieves a Get Descriptor request on the control endpoint, this function
|
||||
* to the USB library. When the device receives a Get Descriptor request on the control endpoint, this function
|
||||
* is called so that the descriptor details can be passed back and the appropriate descriptor sent back to the
|
||||
* USB host.
|
||||
*/
|
||||
|
|
|
@ -338,7 +338,7 @@ USB_Descriptor_String_t PROGMEM ProductString =
|
|||
|
||||
/** This function is called by the library when in device mode, and must be overridden (see StdDescriptors.h
|
||||
* 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 recieves a Get Descriptor request on the control endpoint, this function
|
||||
* to the USB library. When the device receives a Get Descriptor request on the control endpoint, this function
|
||||
* is called so that the descriptor details can be passed back and the appropriate descriptor sent back to the
|
||||
* USB host.
|
||||
*/
|
||||
|
|
|
@ -57,7 +57,7 @@ TASK_LIST
|
|||
*
|
||||
* These values are set by the host via a class-specific request, however they are not required to be used accurately.
|
||||
* It is possible to completely ignore these value or use other settings as the host is completely unaware of the physical
|
||||
* serial link characteristics and instead sends and recieves data in endpoint streams.
|
||||
* serial link characteristics and instead sends and receives data in endpoint streams.
|
||||
*/
|
||||
CDC_Line_Coding_t LineCoding1 = { BaudRateBPS: 9600,
|
||||
CharFormat: OneStopBit,
|
||||
|
@ -70,7 +70,7 @@ CDC_Line_Coding_t LineCoding1 = { BaudRateBPS: 9600,
|
|||
*
|
||||
* These values are set by the host via a class-specific request, however they are not required to be used accurately.
|
||||
* It is possible to completely ignore these value or use other settings as the host is completely unaware of the physical
|
||||
* serial link characteristics and instead sends and recieves data in endpoint streams.
|
||||
* serial link characteristics and instead sends and receives data in endpoint streams.
|
||||
*/
|
||||
CDC_Line_Coding_t LineCoding2 = { BaudRateBPS: 9600,
|
||||
CharFormat: OneStopBit,
|
||||
|
@ -80,7 +80,7 @@ CDC_Line_Coding_t LineCoding2 = { BaudRateBPS: 9600,
|
|||
/** String to print through the first virtual serial port when the joystick is pressed upwards. */
|
||||
char JoystickUpString[] = "Joystick Up\r\n";
|
||||
|
||||
/** String to print through the first virtual serial port when the joystick is pressed downwards. */
|
||||
/** String to print through the first virtual serial port when the joystick is pressed downward. */
|
||||
char JoystickDownString[] = "Joystick Down\r\n";
|
||||
|
||||
/** String to print through the first virtual serial port when the joystick is pressed left. */
|
||||
|
@ -324,7 +324,7 @@ TASK(CDC1_Task)
|
|||
Endpoint_ClearCurrentBank();
|
||||
}
|
||||
|
||||
/** Function to manage CDC data transmission and reception to and from the host for the second CDC interface, which echos back
|
||||
/** Function to manage CDC data transmission and reception to and from the host for the second CDC interface, which echoes back
|
||||
* all data sent to it from the host.
|
||||
*/
|
||||
TASK(CDC2_Task)
|
||||
|
@ -335,13 +335,13 @@ TASK(CDC2_Task)
|
|||
/* Check to see if any data has been received */
|
||||
if (Endpoint_ReadWriteAllowed())
|
||||
{
|
||||
/* Create a temp buffer big enough to hold the incomming endpoint packet */
|
||||
/* Create a temp buffer big enough to hold the incoming endpoint packet */
|
||||
uint8_t Buffer[Endpoint_BytesInEndpoint()];
|
||||
|
||||
/* Remember how large the incomming packet is */
|
||||
/* Remember how large the incoming packet is */
|
||||
uint16_t DataLength = Endpoint_BytesInEndpoint();
|
||||
|
||||
/* Read in the incomming packet into the buffer */
|
||||
/* Read in the incoming packet into the buffer */
|
||||
Endpoint_Read_Stream_LE(&Buffer, DataLength);
|
||||
|
||||
/* Finalize the stream transfer to send the last packet */
|
||||
|
|
|
@ -87,7 +87,7 @@
|
|||
uint8_t ParityType; /**< Parity setting of the virtual serial port, a value from the
|
||||
* CDCDevice_LineCodingParity_t enum
|
||||
*/
|
||||
uint8_t DataBits; /**< Bits of data per charater of the virtual serial port */
|
||||
uint8_t DataBits; /**< Bits of data per character of the virtual serial port */
|
||||
} CDC_Line_Coding_t;
|
||||
|
||||
/* Enums: */
|
||||
|
|
|
@ -195,7 +195,7 @@ USB_Descriptor_String_t PROGMEM ProductString =
|
|||
|
||||
/** This function is called by the library when in device mode, and must be overridden (see StdDescriptors.h
|
||||
* 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 recieves a Get Descriptor request on the control endpoint, this function
|
||||
* to the USB library. When the device receives a Get Descriptor request on the control endpoint, this function
|
||||
* is called so that the descriptor details can be passed back and the appropriate descriptor sent back to the
|
||||
* USB host.
|
||||
*/
|
||||
|
|
|
@ -268,7 +268,7 @@ TASK(USB_HID_Report)
|
|||
|
||||
if (Endpoint_ReadWriteAllowed())
|
||||
{
|
||||
/* Create a tempoary buffer to hold the read in report from the host */
|
||||
/* Create a temporary buffer to hold the read in report from the host */
|
||||
uint8_t GenericData[GENERIC_REPORT_SIZE];
|
||||
|
||||
/* Read Generic Report Data */
|
||||
|
@ -285,7 +285,7 @@ TASK(USB_HID_Report)
|
|||
|
||||
if (Endpoint_ReadWriteAllowed())
|
||||
{
|
||||
/* Create a tempoary buffer to hold the report to send to the host */
|
||||
/* Create a temporary buffer to hold the report to send to the host */
|
||||
uint8_t GenericData[GENERIC_REPORT_SIZE];
|
||||
|
||||
/* Create Generic Report Data */
|
||||
|
|
|
@ -195,7 +195,7 @@ USB_Descriptor_String_t PROGMEM ProductString =
|
|||
|
||||
/** This function is called by the library when in device mode, and must be overridden (see StdDescriptors.h
|
||||
* 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 recieves a Get Descriptor request on the control endpoint, this function
|
||||
* to the USB library. When the device receives a Get Descriptor request on the control endpoint, this function
|
||||
* is called so that the descriptor details can be passed back and the appropriate descriptor sent back to the
|
||||
* USB host.
|
||||
*/
|
||||
|
|
|
@ -212,7 +212,7 @@ USB_Descriptor_String_t PROGMEM ProductString =
|
|||
|
||||
/** This function is called by the library when in device mode, and must be overridden (see StdDescriptors.h
|
||||
* 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 recieves a Get Descriptor request on the control endpoint, this function
|
||||
* to the USB library. When the device receives a Get Descriptor request on the control endpoint, this function
|
||||
* is called so that the descriptor details can be passed back and the appropriate descriptor sent back to the
|
||||
* USB host.
|
||||
*/
|
||||
|
|
|
@ -67,7 +67,7 @@ bool UsingReportProtocol = true;
|
|||
uint8_t IdleCount = 0;
|
||||
|
||||
/** Current Idle period remaining. When the IdleCount value is set, this tracks the remaining number of idle
|
||||
* milliseconds. This is seperate to the IdleCount timer and is incremented and compared as the host may request
|
||||
* milliseconds. This is separate to the IdleCount timer and is incremented and compared as the host may request
|
||||
* the current idle period via a Get Idle HID class request, thus its value must be preserved.
|
||||
*/
|
||||
uint16_t IdleMSRemaining = 0;
|
||||
|
@ -243,7 +243,7 @@ EVENT_HANDLER(USB_UnhandledControlPacket)
|
|||
/* Read in the LED report from the host */
|
||||
uint8_t LEDStatus = Endpoint_Read_Byte();
|
||||
|
||||
/* Process the incomming LED report */
|
||||
/* Process the incoming LED report */
|
||||
ProcessLEDReport(LEDStatus);
|
||||
|
||||
/* Clear the endpoint data */
|
||||
|
|
|
@ -282,7 +282,7 @@ USB_Descriptor_String_t PROGMEM ProductString =
|
|||
|
||||
/** This function is called by the library when in device mode, and must be overridden (see StdDescriptors.h
|
||||
* 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 recieves a Get Descriptor request on the control endpoint, this function
|
||||
* to the USB library. When the device receives a Get Descriptor request on the control endpoint, this function
|
||||
* is called so that the descriptor details can be passed back and the appropriate descriptor sent back to the
|
||||
* USB host.
|
||||
*/
|
||||
|
|
|
@ -278,7 +278,7 @@ USB_Descriptor_String_t PROGMEM ProductString =
|
|||
|
||||
/** This function is called by the library when in device mode, and must be overridden (see StdDescriptors.h
|
||||
* 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 recieves a Get Descriptor request on the control endpoint, this function
|
||||
* to the USB library. When the device receives a Get Descriptor request on the control endpoint, this function
|
||||
* is called so that the descriptor details can be passed back and the appropriate descriptor sent back to the
|
||||
* USB host.
|
||||
*/
|
||||
|
|
|
@ -117,7 +117,7 @@
|
|||
} USB_AudioStreamEndpoint_Std_t;
|
||||
|
||||
/** Type define for an Audio class specific MIDI IN jack. This gives information to the host on a MIDI input, either
|
||||
* a physical input jack, or a logical jack (recieving input data internally, or from the host via an endpoint).
|
||||
* a physical input jack, or a logical jack (receiving input data internally, or from the host via an endpoint).
|
||||
*/
|
||||
typedef struct
|
||||
{
|
||||
|
|
|
@ -172,7 +172,7 @@ USB_Descriptor_String_t PROGMEM SerialNumberString =
|
|||
|
||||
/** This function is called by the library when in device mode, and must be overridden (see StdDescriptors.h
|
||||
* 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 recieves a Get Descriptor request on the control endpoint, this function
|
||||
* to the USB library. When the device receives a Get Descriptor request on the control endpoint, this function
|
||||
* is called so that the descriptor details can be passed back and the appropriate descriptor sent back to the
|
||||
* USB host.
|
||||
*/
|
||||
|
|
|
@ -56,7 +56,7 @@ CommandBlockWrapper_t CommandBlock;
|
|||
/** Structure to hold the latest Command Status Wrapper to return to the host, containing the status of the last issued command. */
|
||||
CommandStatusWrapper_t CommandStatus = { Signature: CSW_SIGNATURE };
|
||||
|
||||
/** Flag to asyncronously abort any in-progress data transfers upon the reception of a mass storage reset command. */
|
||||
/** Flag to asynchronously abort any in-progress data transfers upon the reception of a mass storage reset command. */
|
||||
volatile bool IsMassStoreReset = false;
|
||||
|
||||
/** Main program entry point. This routine configures the hardware required by the application, then
|
||||
|
@ -262,7 +262,7 @@ TASK(USB_MassStorage)
|
|||
/* Return command status block to the host */
|
||||
ReturnCommandStatus();
|
||||
|
||||
/* Check if a Mass Storage Reset ocurred */
|
||||
/* Check if a Mass Storage Reset occurred */
|
||||
if (IsMassStoreReset)
|
||||
{
|
||||
/* Reset the data endpoint banks */
|
||||
|
|
|
@ -38,7 +38,7 @@
|
|||
#define INCLUDE_FROM_SCSI_C
|
||||
#include "SCSI.h"
|
||||
|
||||
/** Structure to hold the SCSI reponse data to a SCSI INQUIRY command. This gives information about the device's
|
||||
/** Structure to hold the SCSI response data to a SCSI INQUIRY command. This gives information about the device's
|
||||
* features and capabilities.
|
||||
*/
|
||||
SCSI_Inquiry_Response_t InquiryData =
|
||||
|
@ -88,7 +88,7 @@ void SCSI_DecodeSCSICommand(void)
|
|||
{
|
||||
bool CommandSuccess = false;
|
||||
|
||||
/* Run the apropriate SCSI command hander function based on the passed command */
|
||||
/* Run the appropriate SCSI command hander function based on the passed command */
|
||||
switch (CommandBlock.SCSICommandData[0])
|
||||
{
|
||||
case SCSI_CMD_INQUIRY:
|
||||
|
@ -235,7 +235,7 @@ static bool SCSI_Command_Read_Capacity_10(void)
|
|||
return true;
|
||||
}
|
||||
|
||||
/** Command processing for an issued SCSI SEND DIAGNOSTIC command. This command peforms a quick check of the Dataflash ICs on the
|
||||
/** Command processing for an issued SCSI SEND DIAGNOSTIC command. This command performs a quick check of the Dataflash ICs on the
|
||||
* board, and indicates if they are present and functioning correctly. Only the Self-Test portion of the diagnostic command is
|
||||
* supported.
|
||||
*
|
||||
|
|
|
@ -195,7 +195,7 @@ USB_Descriptor_String_t PROGMEM ProductString =
|
|||
|
||||
/** This function is called by the library when in device mode, and must be overridden (see StdDescriptors.h
|
||||
* 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 recieves a Get Descriptor request on the control endpoint, this function
|
||||
* to the USB library. When the device receives a Get Descriptor request on the control endpoint, this function
|
||||
* is called so that the descriptor details can be passed back and the appropriate descriptor sent back to the
|
||||
* USB host.
|
||||
*/
|
||||
|
|
|
@ -66,7 +66,7 @@ bool UsingReportProtocol = true;
|
|||
uint8_t IdleCount = 0;
|
||||
|
||||
/** Current Idle period remaining. When the IdleCount value is set, this tracks the remaining number of idle
|
||||
* milliseconds. This is seperate to the IdleCount timer and is incremented and compared as the host may request
|
||||
* milliseconds. This is separate to the IdleCount timer and is incremented and compared as the host may request
|
||||
* the current idle period via a Get Idle HID class request, thus its value must be preserved.
|
||||
*/
|
||||
uint16_t IdleMSRemaining = 0;
|
||||
|
|
|
@ -41,7 +41,7 @@
|
|||
* to the output Ethernet frame if the host is requesting the IP or MAC address of the
|
||||
* virtual server device on the network.
|
||||
*
|
||||
* \param InDataStart Pointer to the start of the incomming packet's ARP header
|
||||
* \param InDataStart Pointer to the start of the incoming packet's ARP header
|
||||
* \param OutDataStart Pointer to the start of the outgoing packet's ARP header
|
||||
*
|
||||
* \return The number of bytes written to the out Ethernet frame if any, NO_RESPONSE otherwise
|
||||
|
|
|
@ -40,8 +40,8 @@
|
|||
/** Processes a DHCP packet inside an Ethernet frame, and writes the appropriate response
|
||||
* to the output Ethernet frame if the host is requesting or accepting an IP address.
|
||||
*
|
||||
* \param IPHeaderInStart Pointer to the start of the incomming packet's IP header
|
||||
* \param DHCPHeaderInStart Pointer to the start of the incomming packet's DHCP header
|
||||
* \param IPHeaderInStart Pointer to the start of the incoming packet's IP header
|
||||
* \param DHCPHeaderInStart Pointer to the start of the incoming packet's DHCP header
|
||||
* \param DHCPHeaderOutStart Pointer to the start of the outgoing packet's DHCP header
|
||||
*
|
||||
* \return The number of bytes written to the out Ethernet frame if any, NO_RESPONSE otherwise
|
||||
|
@ -72,12 +72,12 @@ int16_t DHCP_ProcessDHCPPacket(void* IPHeaderInStart, void* DHCPHeaderInStart, v
|
|||
memcpy(&DHCPHeaderOUT->ClientHardwareAddress, &DHCPHeaderIN->ClientHardwareAddress, sizeof(MAC_Address_t));
|
||||
DHCPHeaderOUT->Cookie = SwapEndian_32(DHCP_MAGIC_COOKIE);
|
||||
|
||||
/* Alter the incomming IP packet header so that the corrected IP source and destinations are used - this means that
|
||||
/* Alter the incoming IP packet header so that the corrected IP source and destinations are used - this means that
|
||||
when the response IP header is generated, it will use the corrected addresses and not the null/broatcast addresses */
|
||||
IPHeaderIN->SourceAddress = ClientIPAddress;
|
||||
IPHeaderIN->DestinationAddress = ServerIPAddress;
|
||||
|
||||
/* Process the incomming DHCP packet options */
|
||||
/* Process the incoming DHCP packet options */
|
||||
while (DHCPOptionsINStart[0] != DHCP_OPTION_END)
|
||||
{
|
||||
/* Find the Message Type DHCP option, to determine the type of DHCP packet */
|
||||
|
|
|
@ -102,7 +102,7 @@
|
|||
uint8_t HardwareAddressLength; /**< Length in bytes of a hardware (MAC) address on the network */
|
||||
uint8_t Hops; /**< Number of hops required to reach the server, unused */
|
||||
|
||||
uint32_t TransactionID; /**< Unique ID of the DHCP packet, for postive matching between sent and recieved packets */
|
||||
uint32_t TransactionID; /**< Unique ID of the DHCP packet, for positive matching between sent and received packets */
|
||||
|
||||
uint16_t ElapsedSeconds; /**< Elapsed seconds since the request was made */
|
||||
uint16_t Flags; /**< BOOTP packet flags */
|
||||
|
|
|
@ -216,7 +216,7 @@ USB_Descriptor_String_t PROGMEM ProductString =
|
|||
|
||||
/** This function is called by the library when in device mode, and must be overridden (see StdDescriptors.h
|
||||
* 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 recieves a Get Descriptor request on the control endpoint, this function
|
||||
* to the USB library. When the device receives a Get Descriptor request on the control endpoint, this function
|
||||
* is called so that the descriptor details can be passed back and the appropriate descriptor sent back to the
|
||||
* USB host.
|
||||
*/
|
||||
|
|
|
@ -31,14 +31,14 @@
|
|||
/** \file
|
||||
*
|
||||
* Ethernet frame packet handling routines. This protocol handles the processing of raw Ethernet
|
||||
* frames sent and receieved, deferring the processing of subpacket protocols to the appropriate
|
||||
* frames sent and received, deferring the processing of subpacket protocols to the appropriate
|
||||
* protocol handlers, such as DHCP or ARP.
|
||||
*/
|
||||
|
||||
#include "Ethernet.h"
|
||||
|
||||
/* Global Variables: */
|
||||
/** Ethernet Frame buffer structure, to hold the incomming Ethernet frame from the host. */
|
||||
/** Ethernet Frame buffer structure, to hold the incoming Ethernet frame from the host. */
|
||||
Ethernet_Frame_Info_t FrameIN;
|
||||
|
||||
/** Ethernet Frame buffer structure, to hold the outgoing Ethernet frame to the host. */
|
||||
|
@ -60,14 +60,14 @@ const IP_Address_t BroadcastIPAddress = {BROADCAST_IP_ADDRESS};
|
|||
const IP_Address_t ClientIPAddress = {CLIENT_IP_ADDRESS};
|
||||
|
||||
|
||||
/** Processes an incomming Ethernet frame, and writes the appropriate response to the output Ethernet
|
||||
/** Processes an incoming Ethernet frame, and writes the appropriate response to the output Ethernet
|
||||
* frame buffer if the sub protocol handlers create a valid response.
|
||||
*/
|
||||
void Ethernet_ProcessPacket(void)
|
||||
{
|
||||
DecodeEthernetFrameHeader(FrameIN.FrameData);
|
||||
|
||||
/* Cast the incomming Ethernet frame to the Ethernet header type */
|
||||
/* Cast the incoming Ethernet frame to the Ethernet header type */
|
||||
Ethernet_Frame_Header_t* FrameINHeader = (Ethernet_Frame_Header_t*)&FrameIN.FrameData;
|
||||
Ethernet_Frame_Header_t* FrameOUTHeader = (Ethernet_Frame_Header_t*)&FrameOUT.FrameData;
|
||||
|
||||
|
@ -91,7 +91,7 @@ void Ethernet_ProcessPacket(void)
|
|||
break;
|
||||
}
|
||||
|
||||
/* Protcol processing routine has filled a response, complete the ethernet frame header */
|
||||
/* Protocol processing routine has filled a response, complete the ethernet frame header */
|
||||
if (RetSize > 0)
|
||||
{
|
||||
/* Fill out the response Ethernet frame header */
|
||||
|
|
|
@ -65,7 +65,7 @@
|
|||
*/
|
||||
#define MAC_COMPARE(MAC1, MAC2) (memcmp(MAC1, MAC2, sizeof(MAC_Address_t)) == 0)
|
||||
|
||||
/** Maximum size of an incomming or outgoing Ethernet frame in bytes */
|
||||
/** Maximum size of an incoming or outgoing Ethernet frame in bytes */
|
||||
#define ETHERNET_FRAME_SIZE_MAX 1500
|
||||
|
||||
/** Minimum size of an Ethernet packet in bytes, to conform to the Ethernet V2 packet standard */
|
||||
|
|
|
@ -40,7 +40,7 @@
|
|||
/** Processes an ICMP packet inside an Ethernet frame, and writes the appropriate response
|
||||
* to the output Ethernet frame if the host is issuing a ICMP ECHO request.
|
||||
*
|
||||
* \param InDataStart Pointer to the start of the incomming packet's ICMP header
|
||||
* \param InDataStart Pointer to the start of the incoming packet's ICMP header
|
||||
* \param OutDataStart Pointer to the start of the outgoing packet's ICMP header
|
||||
*
|
||||
* \return The number of bytes written to the out Ethernet frame if any, NO_RESPONSE otherwise
|
||||
|
|
|
@ -39,7 +39,7 @@
|
|||
/** Processes an IP packet inside an Ethernet frame, and writes the appropriate response
|
||||
* to the output Ethernet frame if one is created by a subprotocol handler.
|
||||
*
|
||||
* \param InDataStart Pointer to the start of the incomming packet's IP header
|
||||
* \param InDataStart Pointer to the start of the incoming packet's IP header
|
||||
* \param OutDataStart Pointer to the start of the outgoing packet's IP header
|
||||
*
|
||||
* \return The number of bytes written to the out Ethernet frame if any, NO_RESPONSE if no
|
||||
|
|
|
@ -51,7 +51,7 @@
|
|||
/** Protocol IP address of the virtual server machine */
|
||||
#define SERVER_IP_ADDRESS { 10, 0, 0, 2}
|
||||
|
||||
/** Protocol IP address of the broadcase address */
|
||||
/** Protocol IP address of the broadcast address */
|
||||
#define BROADCAST_IP_ADDRESS {0xFF, 0xFF, 0xFF, 0xFF}
|
||||
|
||||
/** Default Time To Live (TTL) value for sent packets, indicating the maximum allowable hops until their destination is reached */
|
||||
|
@ -75,7 +75,7 @@
|
|||
uint8_t TypeOfService; /**< Special service type identifier, indicating delay/throughput/reliability levels */
|
||||
uint16_t TotalLength; /**< Total length of the IP packet, in bytes */
|
||||
|
||||
uint16_t Identification; /**< Idenfication value for identifying fragmented packets */
|
||||
uint16_t Identification; /**< Identification value for identifying fragmented packets */
|
||||
unsigned int FragmentOffset : 13; /**< Offset of this IP fragment */
|
||||
unsigned int Flags : 3; /**< Fragment flags, to indicate if a packet is fragmented */
|
||||
|
||||
|
|
|
@ -29,7 +29,7 @@
|
|||
*/
|
||||
|
||||
/* Protocol decoders for Ethernet, TCP, IP, ICMP and ARP. Each of these routines
|
||||
accepts a header to the appropriate protocol and prints out pertient information
|
||||
accepts a header to the appropriate protocol and prints out pertinent information
|
||||
on the packet through the serial port.
|
||||
|
||||
To disable printing of a specific protocol, define the token NO_DECODE_{Protocol}
|
||||
|
@ -39,7 +39,7 @@
|
|||
/** \file
|
||||
*
|
||||
* Protocol decoding routines, for the plain-text decoding of Ethernet frames for debugging purposes.
|
||||
* Enabled protocol decoders will print incomming Ethernet frame contents through the USART in a human
|
||||
* Enabled protocol decoders will print incoming Ethernet frame contents through the USART in a human
|
||||
* readable format.
|
||||
*
|
||||
* Note that the USART is a slow transmission medium, and will slow down packet processing considerably.
|
||||
|
|
|
@ -45,7 +45,7 @@
|
|||
#include "Ethernet.h"
|
||||
|
||||
/* Macros: */
|
||||
/** Physical MAC Address of the USB netowork adapter */
|
||||
/** Physical MAC Address of the USB network adapter */
|
||||
#define ADAPTER_MAC_ADDRESS {0x02, 0x00, 0x02, 0x00, 0x02, 0x00}
|
||||
|
||||
/** Implemented RNDIS Version Major */
|
||||
|
|
|
@ -99,7 +99,7 @@ EVENT_HANDLER(USB_Connect)
|
|||
}
|
||||
|
||||
/** Event handler for the USB_Disconnect event. This indicates that the device is no longer connected to a host via
|
||||
* the status LEDs and stops all the relevent tasks.
|
||||
* the status LEDs and stops all the relevant tasks.
|
||||
*/
|
||||
EVENT_HANDLER(USB_Disconnect)
|
||||
{
|
||||
|
@ -114,7 +114,7 @@ EVENT_HANDLER(USB_Disconnect)
|
|||
}
|
||||
|
||||
/** Event handler for the USB_ConfigurationChanged event. This is fired when the host sets the current configuration
|
||||
* of the USB device after enumeration, and configures the RNDIS device endpoints and starts the relevent tasks.
|
||||
* of the USB device after enumeration, and configures the RNDIS device endpoints and starts the relevant tasks.
|
||||
*/
|
||||
EVENT_HANDLER(USB_ConfigurationChanged)
|
||||
{
|
||||
|
@ -238,7 +238,7 @@ void UpdateStatus(uint8_t CurrentStatus)
|
|||
}
|
||||
|
||||
/** Task to manage the sending and receiving of encapsulated RNDIS data and notifications. This removes the RNDIS
|
||||
* wrapper from recieved Ethernet frames and places them in the FrameIN global buffer, or adds the RNDIS wrapper
|
||||
* wrapper from received Ethernet frames and places them in the FrameIN global buffer, or adds the RNDIS wrapper
|
||||
* to a frame in the FrameOUT global before sending the buffer contents to the host.
|
||||
*/
|
||||
TASK(RNDIS_Task)
|
||||
|
|
|
@ -60,7 +60,7 @@ TASK(TCP_Task)
|
|||
{
|
||||
/* Task to hand off TCP packets to and from the listening applications. */
|
||||
|
||||
/* Run each application in sequence, to process incomming and generate outgoing packets */
|
||||
/* Run each application in sequence, to process incoming and generate outgoing packets */
|
||||
for (uint8_t CSTableEntry = 0; CSTableEntry < MAX_TCP_CONNECTIONS; CSTableEntry++)
|
||||
{
|
||||
/* Find the corresponding port entry in the port table */
|
||||
|
@ -179,7 +179,7 @@ void TCP_Init(void)
|
|||
*/
|
||||
bool TCP_SetPortState(uint16_t Port, uint8_t State, void (*Handler)(TCP_ConnectionState_t*, TCP_ConnectionBuffer_t*))
|
||||
{
|
||||
/* Note, Port number should be specified in BIG endian to simplfy network code */
|
||||
/* Note, Port number should be specified in BIG endian to simplify network code */
|
||||
|
||||
/* Check to see if the port entry is already in the port state table */
|
||||
for (uint8_t PTableEntry = 0; PTableEntry < MAX_TCP_CONNECTIONS; PTableEntry++)
|
||||
|
@ -226,7 +226,7 @@ bool TCP_SetPortState(uint16_t Port, uint8_t State, void (*Handler)(TCP_Connecti
|
|||
*/
|
||||
uint8_t TCP_GetPortState(uint16_t Port)
|
||||
{
|
||||
/* Note, Port number should be specified in BIG endian to simplfy network code */
|
||||
/* Note, Port number should be specified in BIG endian to simplify network code */
|
||||
|
||||
for (uint8_t PTableEntry = 0; PTableEntry < MAX_TCP_CONNECTIONS; PTableEntry++)
|
||||
{
|
||||
|
@ -251,7 +251,7 @@ uint8_t TCP_GetPortState(uint16_t Port)
|
|||
*/
|
||||
bool TCP_SetConnectionState(uint16_t Port, IP_Address_t RemoteAddress, uint16_t RemotePort, uint8_t State)
|
||||
{
|
||||
/* Note, Port number should be specified in BIG endian to simplfy network code */
|
||||
/* Note, Port number should be specified in BIG endian to simplify network code */
|
||||
|
||||
for (uint8_t CSTableEntry = 0; CSTableEntry < MAX_TCP_CONNECTIONS; CSTableEntry++)
|
||||
{
|
||||
|
@ -291,7 +291,7 @@ bool TCP_SetConnectionState(uint16_t Port, IP_Address_t RemoteAddress, uint16_t
|
|||
*/
|
||||
uint8_t TCP_GetConnectionState(uint16_t Port, IP_Address_t RemoteAddress, uint16_t RemotePort)
|
||||
{
|
||||
/* Note, Port number should be specified in BIG endian to simplfy network code */
|
||||
/* Note, Port number should be specified in BIG endian to simplify network code */
|
||||
|
||||
for (uint8_t CSTableEntry = 0; CSTableEntry < MAX_TCP_CONNECTIONS; CSTableEntry++)
|
||||
{
|
||||
|
@ -318,7 +318,7 @@ uint8_t TCP_GetConnectionState(uint16_t Port, IP_Address_t RemoteAddress, uint16
|
|||
*/
|
||||
TCP_ConnectionInfo_t* TCP_GetConnectionInfo(uint16_t Port, IP_Address_t RemoteAddress, uint16_t RemotePort)
|
||||
{
|
||||
/* Note, Port number should be specified in BIG endian to simplfy network code */
|
||||
/* Note, Port number should be specified in BIG endian to simplify network code */
|
||||
|
||||
for (uint8_t CSTableEntry = 0; CSTableEntry < MAX_TCP_CONNECTIONS; CSTableEntry++)
|
||||
{
|
||||
|
@ -337,8 +337,8 @@ TCP_ConnectionInfo_t* TCP_GetConnectionInfo(uint16_t Port, IP_Address_t RemoteAd
|
|||
/** Processes a TCP packet inside an Ethernet frame, and writes the appropriate response
|
||||
* to the output Ethernet frame if one is created by a application handler.
|
||||
*
|
||||
* \param IPHeaderInStart Pointer to the start of the incomming packet's IP header
|
||||
* \param TCPHeaderInStart Pointer to the start of the incomming packet's TCP header
|
||||
* \param IPHeaderInStart Pointer to the start of the incoming packet's IP header
|
||||
* \param TCPHeaderInStart Pointer to the start of the incoming packet's TCP header
|
||||
* \param TCPHeaderOutStart Pointer to the start of the outgoing packet's TCP header
|
||||
*
|
||||
* \return The number of bytes written to the out Ethernet frame if any, NO_RESPONSE if no
|
||||
|
@ -357,7 +357,7 @@ int16_t TCP_ProcessTCPPacket(void* IPHeaderInStart, void* TCPHeaderInStart, void
|
|||
|
||||
bool PacketResponse = false;
|
||||
|
||||
/* Check if the destination port is open and allows incomming connections */
|
||||
/* Check if the destination port is open and allows incoming connections */
|
||||
if (TCP_GetPortState(TCPHeaderIN->DestinationPort) == TCP_Port_Open)
|
||||
{
|
||||
/* Detect SYN from host to start a connection */
|
||||
|
@ -375,7 +375,7 @@ int16_t TCP_ProcessTCPPacket(void* IPHeaderInStart, void* TCPHeaderInStart, void
|
|||
}
|
||||
else
|
||||
{
|
||||
/* Process the incomming TCP packet based on the current connection state for the sender and port */
|
||||
/* Process the incoming TCP packet based on the current connection state for the sender and port */
|
||||
switch (TCP_GetConnectionState(TCPHeaderIN->DestinationPort, IPHeaderIN->SourceAddress, TCPHeaderIN->SourcePort))
|
||||
{
|
||||
case TCP_Connection_Listen:
|
||||
|
@ -470,7 +470,7 @@ int16_t TCP_ProcessTCPPacket(void* IPHeaderInStart, void* TCPHeaderInStart, void
|
|||
}
|
||||
else
|
||||
{
|
||||
/* Buffer is currently in use by the application, defer processing of the incomming packet */
|
||||
/* Buffer is currently in use by the application, defer processing of the incoming packet */
|
||||
return NO_PROCESS;
|
||||
}
|
||||
}
|
||||
|
@ -591,7 +591,7 @@ static uint16_t TCP_Checksum16(void* TCPHeaderOutStart, IP_Address_t SourceAddre
|
|||
{
|
||||
uint32_t Checksum = 0;
|
||||
|
||||
/* TCP/IP checksums are the addition of the one's compliment of each word including the IP psudo-header,
|
||||
/* TCP/IP checksums are the addition of the one's compliment of each word including the IP pseudo-header,
|
||||
complimented */
|
||||
|
||||
Checksum += ((uint16_t*)&SourceAddress)[0];
|
||||
|
|
|
@ -224,7 +224,7 @@
|
|||
unsigned char Reserved : 4; /**< Reserved, must be all 0 */
|
||||
unsigned char DataOffset : 4; /**< Offset of the data from the start of the header, in 4 byte chunks */
|
||||
uint8_t Flags; /**< TCP packet flags */
|
||||
uint16_t WindowSize; /**< Current data window size (bytes remaning in reception buffer) */
|
||||
uint16_t WindowSize; /**< Current data window size (bytes remaining in reception buffer) */
|
||||
|
||||
uint16_t Checksum; /**< TCP checksum */
|
||||
uint16_t UrgentPointer; /**< Urgent data pointer */
|
||||
|
|
|
@ -40,8 +40,8 @@
|
|||
/** Processes a UDP packet inside an Ethernet frame, and writes the appropriate response
|
||||
* to the output Ethernet frame if a subprotocol handler has created a response packet.
|
||||
*
|
||||
* \param IPHeaderInStart Pointer to the start of the incomming packet's IP header
|
||||
* \param UDPHeaderInStart Pointer to the start of the incomming packet's UDP header
|
||||
* \param IPHeaderInStart Pointer to the start of the incoming packet's IP header
|
||||
* \param UDPHeaderInStart Pointer to the start of the incoming packet's UDP header
|
||||
* \param UDPHeaderOutStart Pointer to the start of the outgoing packet's UDP header
|
||||
*
|
||||
* \return The number of bytes written to the out Ethernet frame if any, NO_RESPONSE otherwise
|
||||
|
|
|
@ -216,7 +216,7 @@ USB_Descriptor_String_t PROGMEM ProductString =
|
|||
|
||||
/** This function is called by the library when in device mode, and must be overridden (see StdDescriptors.h
|
||||
* 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 recieves a Get Descriptor request on the control endpoint, this function
|
||||
* to the USB library. When the device receives a Get Descriptor request on the control endpoint, this function
|
||||
* is called so that the descriptor details can be passed back and the appropriate descriptor sent back to the
|
||||
* USB host.
|
||||
*/
|
||||
|
|
|
@ -29,8 +29,8 @@
|
|||
*/
|
||||
|
||||
/* Buffer Configuration: */
|
||||
/* Buffer length - select static size of created ringbuffers: */
|
||||
#define BUFF_STATICSIZE 128 // Set to the static ringbuffer size for all ringbuffers (place size after define)
|
||||
/* Buffer length - select static size of created ring buffers: */
|
||||
#define BUFF_STATICSIZE 128 // Set to the static ring buffer size for all ring buffers (place size after define)
|
||||
|
||||
/* Volatile mode - uncomment to make buffers volatile, for use in ISRs, etc: */
|
||||
#define BUFF_VOLATILE // Uncomment to cause all ring buffers to become volatile (and atomic if multi-byte) in access
|
||||
|
@ -40,9 +40,9 @@
|
|||
// #define BUFF_DROPNEW // Uncomment to cause full ring buffers to drop the new character when full
|
||||
// #define BUFF_NODROPCHECK // Uncomment to ignore full ring buffer checks - checking left to user!
|
||||
|
||||
/* Underflow behaviour - select behaviour when Buffer_GetElement is called with an empty ringbuffer: */
|
||||
//#define BUFF_EMPTYRETURNSZERO // Uncomment to return 0 when an empty ringbuffer is read
|
||||
#define BUFF_NOEMPTYCHECK // Uncomment to disable checking of empty ringbuffers - checking left to user!
|
||||
/* Underflow behaviour - select behaviour when Buffer_GetElement is called with an empty ring buffer: */
|
||||
//#define BUFF_EMPTYRETURNSZERO // Uncomment to return 0 when an empty ring buffer is read
|
||||
#define BUFF_NOEMPTYCHECK // Uncomment to disable checking of empty ring buffers - checking left to user!
|
||||
|
||||
/* Buffer storage type - set the datatype for the stored data */
|
||||
#define BUFF_DATATYPE uint8_t // Change to the data type that is going to be stored into the buffer
|
||||
|
|
|
@ -79,7 +79,7 @@ int main(void)
|
|||
LEDs_Init();
|
||||
ReconfigureUSART();
|
||||
|
||||
/* Ringbuffer Initialization */
|
||||
/* Ring buffer Initialization */
|
||||
Buffer_Initialize(&Rx_Buffer);
|
||||
Buffer_Initialize(&Tx_Buffer);
|
||||
|
||||
|
|
|
@ -39,7 +39,7 @@
|
|||
/* Includes: */
|
||||
#include <avr/io.h>
|
||||
#include <avr/wdt.h>
|
||||
#include <avr/interrupt.h>
|
||||
#include <avr/interrupt.h>
|
||||
#include <avr/power.h>
|
||||
|
||||
#include "Descriptors.h"
|
||||
|
@ -99,17 +99,17 @@
|
|||
#define CONTROL_LINE_IN_RING (1 << 3)
|
||||
|
||||
/** Mask for use with the a NOTIF_SerialState class specific notification from the device to the host,
|
||||
* to indicate that a framing error has ocurred on the virtual serial port.
|
||||
* to indicate that a framing error has occurred on the virtual serial port.
|
||||
*/
|
||||
#define CONTROL_LINE_IN_FRAMEERROR (1 << 4)
|
||||
|
||||
/** Mask for use with the a NOTIF_SerialState class specific notification from the device to the host,
|
||||
* to indicate that a parity error has ocurred on the virtual serial port.
|
||||
* to indicate that a parity error has occurred on the virtual serial port.
|
||||
*/
|
||||
#define CONTROL_LINE_IN_PARITYERROR (1 << 5)
|
||||
|
||||
/** Mask for use with the a NOTIF_SerialState class specific notification from the device to the host,
|
||||
* to indicate that a data overrun error has ocurred on the virtual serial port.
|
||||
* to indicate that a data overrun error has occurred on the virtual serial port.
|
||||
*/
|
||||
#define CONTROL_LINE_IN_OVERRUNERROR (1 << 6)
|
||||
|
||||
|
@ -139,7 +139,7 @@
|
|||
uint8_t ParityType; /**< Parity setting of the virtual serial port, a value from the
|
||||
* CDCDevice_LineCodingParity_t enum
|
||||
*/
|
||||
uint8_t DataBits; /**< Bits of data per charater of the virtual serial port */
|
||||
uint8_t DataBits; /**< Bits of data per character of the virtual serial port */
|
||||
} CDC_Line_Coding_t;
|
||||
|
||||
/** Type define for a CDC notification, sent to the host via the CDC notification endpoint to indicate a
|
||||
|
|
|
@ -75,7 +75,7 @@ int main(void)
|
|||
/* Initialize USB Subsystem */
|
||||
USB_Init();
|
||||
|
||||
/* Startup message */
|
||||
/* 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));
|
||||
|
||||
|
@ -132,7 +132,7 @@ EVENT_HANDLER(USB_HostError)
|
|||
for(;;);
|
||||
}
|
||||
|
||||
/** Event handler for the USB_DeviceEnumerationFailed event. This indicates that a problem occured while
|
||||
/** Event handler for the USB_DeviceEnumerationFailed event. This indicates that a problem occurred while
|
||||
* enumerating an attached USB device.
|
||||
*/
|
||||
EVENT_HANDLER(USB_DeviceEnumerationFailed)
|
||||
|
@ -196,7 +196,7 @@ TASK(USB_CDC_Host)
|
|||
wLength: 0,
|
||||
};
|
||||
|
||||
/* Send the request, display error and wait for device detatch if request fails */
|
||||
/* Send the request, display error and wait for device detach if request fails */
|
||||
if ((ErrorCode = USB_Host_SendControlRequest(NULL)) != HOST_SENDCONTROL_Successful)
|
||||
{
|
||||
puts_P(PSTR("Control Error (Set Configuration).\r\n"));
|
||||
|
@ -248,7 +248,7 @@ TASK(USB_CDC_Host)
|
|||
uint16_t BufferLength = Pipe_BytesInPipe();
|
||||
uint8_t Buffer[BufferLength];
|
||||
|
||||
/* Read in the pipe data to the tempoary buffer */
|
||||
/* Read in the pipe data to the temporary buffer */
|
||||
Pipe_Read_Stream_LE(Buffer, BufferLength);
|
||||
|
||||
/* Clear the pipe after it is read, ready for the next packet */
|
||||
|
|
|
@ -73,7 +73,7 @@
|
|||
DescriptorTooLarge = 2, /**< The device's Configuration Descriptor is too large to process */
|
||||
InvalidConfigDataReturned = 3, /**< The device returned an invalid Configuration Descriptor */
|
||||
NoCDCInterfaceFound = 4, /**< A compatible CDC interface was not found in the device's Configuration Descriptor */
|
||||
NoEndpointFound = 5, /**< Cmpatible CDC endpoints were not found in the device's CDC interface */
|
||||
NoEndpointFound = 5, /**< Compatible CDC endpoints were not found in the device's CDC interface */
|
||||
};
|
||||
|
||||
/* Configuration Descriptor Comparison Functions: */
|
||||
|
|
|
@ -75,7 +75,7 @@ int main(void)
|
|||
/* Initialize USB Subsystem */
|
||||
USB_Init();
|
||||
|
||||
/* Startup message */
|
||||
/* 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));
|
||||
|
||||
|
@ -132,7 +132,7 @@ EVENT_HANDLER(USB_HostError)
|
|||
for(;;);
|
||||
}
|
||||
|
||||
/** Event handler for the USB_DeviceEnumerationFailed event. This indicates that a problem occured while
|
||||
/** Event handler for the USB_DeviceEnumerationFailed event. This indicates that a problem occurred while
|
||||
* enumerating an attached USB device.
|
||||
*/
|
||||
EVENT_HANDLER(USB_DeviceEnumerationFailed)
|
||||
|
@ -288,7 +288,7 @@ TASK(USB_HID_Host)
|
|||
wLength: 0,
|
||||
};
|
||||
|
||||
/* Send the request, display error and wait for device detatch if request fails */
|
||||
/* Send the request, display error and wait for device detach if request fails */
|
||||
if ((ErrorCode = USB_Host_SendControlRequest(NULL)) != HOST_SENDCONTROL_Successful)
|
||||
{
|
||||
puts_P(PSTR("Control Error (Set Configuration).\r\n"));
|
||||
|
|
|
@ -75,7 +75,7 @@ int main(void)
|
|||
/* Initialize USB Subsystem */
|
||||
USB_Init();
|
||||
|
||||
/* Startup message */
|
||||
/* Start-up message */
|
||||
puts_P(PSTR(ESC_RESET ESC_BG_WHITE ESC_INVERSE_ON ESC_ERASE_DISPLAY
|
||||
"Keyboard Host Demo running.\r\n" ESC_INVERSE_OFF));
|
||||
|
||||
|
@ -132,7 +132,7 @@ EVENT_HANDLER(USB_HostError)
|
|||
for(;;);
|
||||
}
|
||||
|
||||
/** Event handler for the USB_DeviceEnumerationFailed event. This indicates that a problem occured while
|
||||
/** Event handler for the USB_DeviceEnumerationFailed event. This indicates that a problem occurred while
|
||||
* enumerating an attached USB device.
|
||||
*/
|
||||
EVENT_HANDLER(USB_DeviceEnumerationFailed)
|
||||
|
@ -263,7 +263,7 @@ TASK(USB_Keyboard_Host)
|
|||
wLength: 0,
|
||||
};
|
||||
|
||||
/* Send the request, display error and wait for device detatch if request fails */
|
||||
/* Send the request, display error and wait for device detach if request fails */
|
||||
if ((ErrorCode = USB_Host_SendControlRequest(NULL)) != HOST_SENDCONTROL_Successful)
|
||||
{
|
||||
puts_P(PSTR("Control Error (Set Configuration).\r\n"));
|
||||
|
@ -310,7 +310,7 @@ TASK(USB_Keyboard_Host)
|
|||
wLength: 0,
|
||||
};
|
||||
|
||||
/* Send the request, display error and wait for device detatch if request fails */
|
||||
/* Send the request, display error and wait for device detach if request fails */
|
||||
if ((ErrorCode = USB_Host_SendControlRequest(NULL)) != HOST_SENDCONTROL_Successful)
|
||||
{
|
||||
puts_P(PSTR("Control Error (Set Protocol).\r\n"));
|
||||
|
|
|
@ -51,7 +51,7 @@
|
|||
{
|
||||
ParseSuccessful = 0, /**< HID report descriptor parsed successfully */
|
||||
ParseError = 1, /**< Failed to fully process the HID report descriptor */
|
||||
ParseControlError = 2, /**< Control error occured while trying to read the device HID descriptor */
|
||||
ParseControlError = 2, /**< Control error occurred while trying to read the device HID descriptor */
|
||||
};
|
||||
|
||||
/* Type Defines: */
|
||||
|
|
|
@ -75,7 +75,7 @@ int main(void)
|
|||
/* Initialize USB Subsystem */
|
||||
USB_Init();
|
||||
|
||||
/* Startup message */
|
||||
/* Start-up message */
|
||||
puts_P(PSTR(ESC_RESET ESC_BG_WHITE ESC_INVERSE_ON ESC_ERASE_DISPLAY
|
||||
"Keyboard Host Demo running.\r\n" ESC_INVERSE_OFF));
|
||||
|
||||
|
@ -132,7 +132,7 @@ EVENT_HANDLER(USB_HostError)
|
|||
for(;;);
|
||||
}
|
||||
|
||||
/** Event handler for the USB_DeviceEnumerationFailed event. This indicates that a problem occured while
|
||||
/** Event handler for the USB_DeviceEnumerationFailed event. This indicates that a problem occurred while
|
||||
* enumerating an attached USB device.
|
||||
*/
|
||||
EVENT_HANDLER(USB_DeviceEnumerationFailed)
|
||||
|
@ -199,7 +199,7 @@ TASK(USB_Keyboard_Host)
|
|||
wLength: 0,
|
||||
};
|
||||
|
||||
/* Send the request, display error and wait for device detatch if request fails */
|
||||
/* Send the request, display error and wait for device detach if request fails */
|
||||
if ((ErrorCode = USB_Host_SendControlRequest(NULL)) != HOST_SENDCONTROL_Successful)
|
||||
{
|
||||
puts_P(PSTR("Control Error (Set Configuration).\r\n"));
|
||||
|
@ -255,7 +255,7 @@ TASK(USB_Keyboard_Host)
|
|||
break;
|
||||
}
|
||||
|
||||
/* All LEDs off - ready to indicate keypresses */
|
||||
/* All LEDs off - ready to indicate key presses */
|
||||
UpdateStatus(Status_USBReady);
|
||||
|
||||
puts_P(PSTR("Keyboard Enumerated.\r\n"));
|
||||
|
@ -282,7 +282,7 @@ TASK(USB_Keyboard_Host)
|
|||
/* Check each HID report item in turn, looking for keyboard scan code reports */
|
||||
for (uint8_t ReportNumber = 0; ReportNumber < HIDReportInfo.TotalReportItems; ReportNumber++)
|
||||
{
|
||||
/* Create a tempoary item pointer to the next report item */
|
||||
/* Create a temporary item pointer to the next report item */
|
||||
HID_ReportItem_t* ReportItem = &HIDReportInfo.ReportItems[ReportNumber];
|
||||
|
||||
/* Check if the current report item is a keyboard scancode */
|
||||
|
|
|
@ -74,7 +74,7 @@ int main(void)
|
|||
/* Indicate USB not ready */
|
||||
UpdateStatus(Status_USBNotReady);
|
||||
|
||||
/* Startup message */
|
||||
/* Start-up message */
|
||||
puts_P(PSTR(ESC_RESET ESC_BG_WHITE ESC_INVERSE_ON ESC_ERASE_DISPLAY
|
||||
"MassStore Host Demo running.\r\n" ESC_INVERSE_OFF));
|
||||
|
||||
|
@ -137,7 +137,7 @@ EVENT_HANDLER(USB_HostError)
|
|||
for(;;);
|
||||
}
|
||||
|
||||
/** Event handler for the USB_DeviceEnumerationFailed event. This indicates that a problem occured while
|
||||
/** Event handler for the USB_DeviceEnumerationFailed event. This indicates that a problem occurred while
|
||||
* enumerating an attached USB device.
|
||||
*/
|
||||
EVENT_HANDLER(USB_DeviceEnumerationFailed)
|
||||
|
@ -170,7 +170,7 @@ TASK(USB_MassStore_Host)
|
|||
wLength: 0,
|
||||
};
|
||||
|
||||
/* Send the request, display error and wait for device detatch if request fails */
|
||||
/* Send the request, display error and wait for device detach if request fails */
|
||||
if ((ErrorCode = USB_Host_SendControlRequest(NULL)) != HOST_SENDCONTROL_Successful)
|
||||
{
|
||||
puts_P(PSTR("Control Error (Set Configuration).\r\n"));
|
||||
|
@ -222,7 +222,7 @@ TASK(USB_MassStore_Host)
|
|||
break;
|
||||
}
|
||||
|
||||
/* Send the request, display error and wait for device detatch if request fails */
|
||||
/* Send the request, display error and wait for device detach if request fails */
|
||||
if ((ErrorCode = MassStore_GetMaxLUN(&MassStore_MaxLUNIndex)) != HOST_SENDCONTROL_Successful)
|
||||
{
|
||||
ShowDiskReadError(PSTR("Get Max LUN"), ErrorCode);
|
||||
|
@ -240,7 +240,7 @@ TASK(USB_MassStore_Host)
|
|||
}
|
||||
|
||||
/* Get sense data from the device - many devices will not accept any other commands until the sense data
|
||||
* is read - both on startup and after a failed command */
|
||||
* is read - both on start-up and after a failed command */
|
||||
SCSI_Request_Sense_Response_t SenseData;
|
||||
if ((ErrorCode = MassStore_RequestSense(0, &SenseData)) != 0)
|
||||
{
|
||||
|
@ -397,7 +397,7 @@ void UpdateStatus(uint8_t CurrentStatus)
|
|||
LEDs_SetAllLEDs(LEDMask);
|
||||
}
|
||||
|
||||
/** Indicates that a communication error has ocurred with the attached Mass Storage Device,
|
||||
/** Indicates that a communication error has occurred with the attached Mass Storage Device,
|
||||
* printing error codes to the serial port and waiting until the device is removed before
|
||||
* continuing.
|
||||
*
|
||||
|
|
|
@ -66,7 +66,7 @@
|
|||
Status_EnumerationError = 3, /**< Software error while enumerating the attached USB device */
|
||||
Status_HardwareError = 4, /**< Hardware error while enumerating the attached USB device */
|
||||
Status_Busy = 5, /**< Busy reading or writing to the attached Mass Storage device */
|
||||
Status_SCSICommandError = 6, /**< Error sending or recieving a command to or from the attached SCSI device */
|
||||
Status_SCSICommandError = 6, /**< Error sending or receiving a command to or from the attached SCSI device */
|
||||
};
|
||||
|
||||
/* Task Definitions: */
|
||||
|
|
|
@ -37,8 +37,8 @@
|
|||
* to a FAT library to give file-level access to an attached device's contents.
|
||||
*
|
||||
* \note Many Mass Storage devices on the market are non-compliant to the
|
||||
* specifications and thus can proove difficult to interface with. It
|
||||
* may be neccesary to retry the functions in the module several times
|
||||
* specifications and thus can prove difficult to interface with. It
|
||||
* may be necessary to retry the functions in the module several times
|
||||
* after they have returned and error to successfully send the command
|
||||
* to the device. Some devices may also need to have the stream function
|
||||
* timeout period extended beyond 100ms (some badly designed devices exceeding
|
||||
|
@ -52,17 +52,17 @@
|
|||
|
||||
/* Globals: */
|
||||
/** Current CBW to send to the device. This is automatically filled by the routines
|
||||
* in this file and is not externally accessable.
|
||||
* in this file and is not externally accessible.
|
||||
*/
|
||||
static CommandBlockWrapper_t SCSICommandBlock;
|
||||
|
||||
/** Current CSW received from the device. This is automatically filled by the routines
|
||||
* in this file and is externally accessable so that the return codes may be checked.
|
||||
* in this file and is externally accessible so that the return codes may be checked.
|
||||
*/
|
||||
CommandStatusWrapper_t SCSICommandStatus;
|
||||
|
||||
/** Current Tag value used in issued CBWs to the device. This is automatically incremented
|
||||
* by the routines in this file, and is not externally accessable.
|
||||
* by the routines in this file, and is not externally accessible.
|
||||
*/
|
||||
static uint32_t MassStore_Tag = 1;
|
||||
|
||||
|
@ -122,7 +122,7 @@ static uint8_t MassStore_WaitForDataReceived(void)
|
|||
/* Check to see if a new frame has been issued (1ms elapsed) */
|
||||
if (USB_INT_HasOccurred(USB_INT_HSOFI))
|
||||
{
|
||||
/* Clear the flag and decrement the timout period counter */
|
||||
/* Clear the flag and decrement the timeout period counter */
|
||||
USB_INT_Clear(USB_INT_HSOFI);
|
||||
TimeoutMSRem--;
|
||||
|
||||
|
|
|
@ -54,7 +54,7 @@
|
|||
/** Command Block Wrapper signature byte, for verification of valid CBW blocks */
|
||||
#define CBW_SIGNATURE 0x43425355UL
|
||||
|
||||
/** Command Statuc Wrapper signature byte, for verification of valid CSW blocks */
|
||||
/** Command Static Wrapper signature byte, for verification of valid CSW blocks */
|
||||
#define CSW_SIGNATURE 0x53425355UL
|
||||
|
||||
/** Data direction mask for the Flags field of a CBW, indicating Host-to-Device transfer direction */
|
||||
|
@ -98,13 +98,13 @@
|
|||
{
|
||||
uint32_t Signature; /**< Command status signature, always equal to CSW_SIGNATURE */
|
||||
uint32_t Tag; /**< Current CBW tag, to positively associate a CBW with a CSW */
|
||||
uint32_t DataTransferResidue; /**< Length of data not transfered */
|
||||
uint32_t DataTransferResidue; /**< Length of data not transferred */
|
||||
uint8_t Status; /**< Command status, a value from the MassStorageHost_CommandStatusCodes_t enum */
|
||||
} CommandStatusWrapper_t;
|
||||
|
||||
/** Type define for a SCSI Sense structure. Structures of this type are filled out by the
|
||||
* device via the MassStore_RequestSense() function, indicating the current sense data of the
|
||||
* device (giving explitic error codes for the last issued command). For details of the
|
||||
* device (giving explicit error codes for the last issued command). For details of the
|
||||
* structure contents, refer to the SCSI specifications.
|
||||
*/
|
||||
typedef struct
|
||||
|
|
|
@ -75,7 +75,7 @@ int main(void)
|
|||
/* Initialize USB Subsystem */
|
||||
USB_Init();
|
||||
|
||||
/* Startup message */
|
||||
/* Start-up message */
|
||||
puts_P(PSTR(ESC_RESET ESC_BG_WHITE ESC_INVERSE_ON ESC_ERASE_DISPLAY
|
||||
"Mouse Host Demo running.\r\n" ESC_INVERSE_OFF));
|
||||
|
||||
|
@ -132,7 +132,7 @@ EVENT_HANDLER(USB_HostError)
|
|||
for(;;);
|
||||
}
|
||||
|
||||
/** Event handler for the USB_DeviceEnumerationFailed event. This indicates that a problem occured while
|
||||
/** Event handler for the USB_DeviceEnumerationFailed event. This indicates that a problem occurred while
|
||||
* enumerating an attached USB device.
|
||||
*/
|
||||
EVENT_HANDLER(USB_DeviceEnumerationFailed)
|
||||
|
@ -259,7 +259,7 @@ TASK(USB_Mouse_Host)
|
|||
wLength: 0,
|
||||
};
|
||||
|
||||
/* Send the request, display error and wait for device detatch if request fails */
|
||||
/* Send the request, display error and wait for device detach if request fails */
|
||||
if ((ErrorCode = USB_Host_SendControlRequest(NULL)) != HOST_SENDCONTROL_Successful)
|
||||
{
|
||||
puts_P(PSTR("Control Error (Set Configuration).\r\n"));
|
||||
|
@ -306,7 +306,7 @@ TASK(USB_Mouse_Host)
|
|||
wLength: 0,
|
||||
};
|
||||
|
||||
/* Send the request, display error and wait for device detatch if request fails */
|
||||
/* Send the request, display error and wait for device detach if request fails */
|
||||
if ((ErrorCode = USB_Host_SendControlRequest(NULL)) != HOST_SENDCONTROL_Successful)
|
||||
{
|
||||
puts_P(PSTR("Control Error (Set Protocol).\r\n"));
|
||||
|
|
|
@ -60,7 +60,7 @@
|
|||
{
|
||||
ParseSuccessful = 0, /**< HID report descriptor parsed successfully */
|
||||
ParseError = 1, /**< Failed to fully process the HID report descriptor */
|
||||
ParseControlError = 2, /**< Control error occured while trying to read the device HID descriptor */
|
||||
ParseControlError = 2, /**< Control error occurred while trying to read the device HID descriptor */
|
||||
};
|
||||
|
||||
/* Type Defines: */
|
||||
|
|
|
@ -75,7 +75,7 @@ int main(void)
|
|||
/* Initialize USB Subsystem */
|
||||
USB_Init();
|
||||
|
||||
/* Startup message */
|
||||
/* Start-up message */
|
||||
puts_P(PSTR(ESC_RESET ESC_BG_WHITE ESC_INVERSE_ON ESC_ERASE_DISPLAY
|
||||
"Mouse Host Demo running.\r\n" ESC_INVERSE_OFF));
|
||||
|
||||
|
@ -132,7 +132,7 @@ EVENT_HANDLER(USB_HostError)
|
|||
for(;;);
|
||||
}
|
||||
|
||||
/** Event handler for the USB_DeviceEnumerationFailed event. This indicates that a problem occured while
|
||||
/** Event handler for the USB_DeviceEnumerationFailed event. This indicates that a problem occurred while
|
||||
* enumerating an attached USB device.
|
||||
*/
|
||||
EVENT_HANDLER(USB_DeviceEnumerationFailed)
|
||||
|
@ -200,7 +200,7 @@ TASK(USB_Mouse_Host)
|
|||
wLength: 0,
|
||||
};
|
||||
|
||||
/* Send the request, display error and wait for device detatch if request fails */
|
||||
/* Send the request, display error and wait for device detach if request fails */
|
||||
if ((ErrorCode = USB_Host_SendControlRequest(NULL)) != HOST_SENDCONTROL_Successful)
|
||||
{
|
||||
puts_P(PSTR("Control Error (Set Configuration).\r\n"));
|
||||
|
@ -256,7 +256,7 @@ TASK(USB_Mouse_Host)
|
|||
break;
|
||||
}
|
||||
|
||||
/* All LEDs off - ready to indicate keypresses */
|
||||
/* All LEDs off - ready to indicate key presses */
|
||||
UpdateStatus(Status_USBReady);
|
||||
|
||||
puts_P(PSTR("Mouse Enumerated.\r\n"));
|
||||
|
@ -285,7 +285,7 @@ TASK(USB_Mouse_Host)
|
|||
/* Check each HID report item in turn, looking for mouse X/Y/button reports */
|
||||
for (uint8_t ReportNumber = 0; ReportNumber < HIDReportInfo.TotalReportItems; ReportNumber++)
|
||||
{
|
||||
/* Create a tempoary item pointer to the next report item */
|
||||
/* Create a temporary item pointer to the next report item */
|
||||
HID_ReportItem_t* ReportItem = &HIDReportInfo.ReportItems[ReportNumber];
|
||||
|
||||
bool FoundData;
|
||||
|
|
|
@ -111,7 +111,7 @@ uint8_t SImage_RecieveBlockHeader(void)
|
|||
/* Check to see if a new frame has been issued (1ms elapsed) */
|
||||
if (USB_INT_HasOccurred(USB_INT_HSOFI))
|
||||
{
|
||||
/* Clear the flag and decrement the timout period counter */
|
||||
/* Clear the flag and decrement the timeout period counter */
|
||||
USB_INT_Clear(USB_INT_HSOFI);
|
||||
TimeoutMSRem--;
|
||||
|
||||
|
|
|
@ -62,7 +62,7 @@
|
|||
(params * sizeof(PIMA_SendBlock.Params[0])))
|
||||
|
||||
/* Type Defines: */
|
||||
/** Type define for a PIMA container, use to send commands and receieve responses to and from an
|
||||
/** Type define for a PIMA container, use to send commands and receive responses to and from an
|
||||
* attached Still Image device.
|
||||
*/
|
||||
typedef struct
|
||||
|
|
|
@ -75,7 +75,7 @@ int main(void)
|
|||
/* Initialize USB Subsystem */
|
||||
USB_Init();
|
||||
|
||||
/* Startup message */
|
||||
/* Start-up message */
|
||||
puts_P(PSTR(ESC_RESET ESC_BG_WHITE ESC_INVERSE_ON ESC_ERASE_DISPLAY
|
||||
"Still Image Host Demo running.\r\n" ESC_INVERSE_OFF));
|
||||
|
||||
|
@ -132,7 +132,7 @@ EVENT_HANDLER(USB_HostError)
|
|||
for(;;);
|
||||
}
|
||||
|
||||
/** Event handler for the USB_DeviceEnumerationFailed event. This indicates that a problem occured while
|
||||
/** Event handler for the USB_DeviceEnumerationFailed event. This indicates that a problem occurred while
|
||||
* enumerating an attached USB device.
|
||||
*/
|
||||
EVENT_HANDLER(USB_DeviceEnumerationFailed)
|
||||
|
@ -165,7 +165,7 @@ TASK(USB_SImage_Host)
|
|||
wLength: 0,
|
||||
};
|
||||
|
||||
/* Send the request, display error and wait for device detatch if request fails */
|
||||
/* Send the request, display error and wait for device detach if request fails */
|
||||
if (USB_Host_SendControlRequest(NULL) != HOST_SENDCONTROL_Successful)
|
||||
{
|
||||
puts_P(PSTR("Control error.\r\n"));
|
||||
|
@ -223,7 +223,7 @@ TASK(USB_SImage_Host)
|
|||
/* Send the GETDEVICEINFO block */
|
||||
SImage_SendBlockHeader();
|
||||
|
||||
/* Recieve the response data block */
|
||||
/* Receive the response data block */
|
||||
if ((ErrorCode = SImage_RecieveBlockHeader()) != PIPE_RWSTREAM_ERROR_NoError)
|
||||
{
|
||||
ShowCommandError(ErrorCode, false);
|
||||
|
@ -274,7 +274,7 @@ TASK(USB_SImage_Host)
|
|||
UnicodeToASCII(DeviceInfoPos, DeviceVersion);
|
||||
printf_P(PSTR(" Device Version: %s\r\n"), DeviceVersion);
|
||||
|
||||
/* Recieve the final response block from the device */
|
||||
/* Receive the final response block from the device */
|
||||
if ((ErrorCode = SImage_RecieveBlockHeader()) != PIPE_RWSTREAM_ERROR_NoError)
|
||||
{
|
||||
ShowCommandError(ErrorCode, false);
|
||||
|
@ -302,7 +302,7 @@ TASK(USB_SImage_Host)
|
|||
/* Send the OPENSESSION block, open a session with an ID of 0x0001 */
|
||||
SImage_SendBlockHeader();
|
||||
|
||||
/* Recieve the response block from the device */
|
||||
/* Receive the response block from the device */
|
||||
if ((ErrorCode = SImage_RecieveBlockHeader()) != PIPE_RWSTREAM_ERROR_NoError)
|
||||
{
|
||||
ShowCommandError(ErrorCode, false);
|
||||
|
@ -330,7 +330,7 @@ TASK(USB_SImage_Host)
|
|||
/* Send the CLOSESESSION block, close the session with an ID of 0x0001 */
|
||||
SImage_SendBlockHeader();
|
||||
|
||||
/* Recieve the response block from the device */
|
||||
/* Receive the response block from the device */
|
||||
if ((ErrorCode = SImage_RecieveBlockHeader()) != PIPE_RWSTREAM_ERROR_NoError)
|
||||
{
|
||||
ShowCommandError(ErrorCode, false);
|
||||
|
|
|
@ -140,7 +140,7 @@ USB_Descriptor_String_t PROGMEM ProductString =
|
|||
|
||||
/** This function is called by the library when in device mode, and must be overridden (see StdDescriptors.h
|
||||
* 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 recieves a Get Descriptor request on the control endpoint, this function
|
||||
* to the USB library. When the device receives a Get Descriptor request on the control endpoint, this function
|
||||
* is called so that the descriptor details can be passed back and the appropriate descriptor sent back to the
|
||||
* USB host.
|
||||
*/
|
||||
|
|
|
@ -80,7 +80,7 @@ int main(void)
|
|||
/* Turn on interrupts */
|
||||
sei();
|
||||
|
||||
/* Startup message via USART */
|
||||
/* 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));
|
||||
|
||||
|
@ -130,7 +130,7 @@ TASK(TestApp_CheckJoystick)
|
|||
*/
|
||||
TASK(TestApp_CheckTemp)
|
||||
{
|
||||
static SchedulerDelayCounter_t DelayCounter = 10000; // Force immediate run on startup
|
||||
static SchedulerDelayCounter_t DelayCounter = 10000; // Force immediate run on start-up
|
||||
|
||||
/* Task runs every 10000 ticks, 10 seconds for this demo */
|
||||
if (Scheduler_HasDelayElapsed(10000, &DelayCounter))
|
||||
|
@ -161,7 +161,7 @@ TASK(TestApp_CheckHWB)
|
|||
/* Set flag, indicating that current pressed state has been handled */
|
||||
IsPressed = true;
|
||||
|
||||
/* First start of the USB interface permenantly blocks the joystick task */
|
||||
/* First start of the USB interface permanently blocks the joystick task */
|
||||
if (BlockingJoystickTask == false)
|
||||
{
|
||||
Scheduler_SetTaskMode(TestApp_CheckJoystick, TASK_STOP);
|
||||
|
|
|
@ -13,6 +13,7 @@
|
|||
* - KeyboardHost, MouseHost and GenericHIDHost demos now save and restore the currently selected pipe inside the pipe ISR
|
||||
* - Changed GenericHID device demo to use the LUFA scheduler, added INTERRUPT_DATA_ENDPOINT and INTERRUPT_CONTROL_ENDPOINT compile
|
||||
* time options
|
||||
* - All comments in the library, bootloaders, demos and projects have now been spell-checked and spelling mistakes/typos corrected
|
||||
*
|
||||
* \section Sec_ChangeLog090401 Version 090401
|
||||
*
|
||||
|
|
|
@ -31,7 +31,7 @@
|
|||
/** \file
|
||||
*
|
||||
* This file contains macros which are common to all library elements, and which may be useful in user code. It
|
||||
* also includes other common headees, such as Atomic.h, FunctionAttributes.h and BoardTypes.h.
|
||||
* also includes other common headers, such as Atomic.h, FunctionAttributes.h and BoardTypes.h.
|
||||
*/
|
||||
|
||||
#ifndef __COMMON_H__
|
||||
|
@ -49,27 +49,27 @@
|
|||
|
||||
/* Public Interface - May be used in end-application: */
|
||||
/* Macros: */
|
||||
/** Macro for encasing other multi-statment macros. This should be used along with an opening brace
|
||||
/** Macro for encasing other multi-statement macros. This should be used along with an opening brace
|
||||
* before the start of any multi-statement macro, so that the macros contents as a whole are treated
|
||||
* as a discreete block and not as a list of seperate statements which may cause problems when used as
|
||||
* a block (such as inline IF statments).
|
||||
* as a discrete block and not as a list of separate statements which may cause problems when used as
|
||||
* a block (such as inline IF statements).
|
||||
*/
|
||||
#define MACROS do
|
||||
|
||||
/** Macro for encasing other multi-statment macros. This should be used along with a preceeding closing
|
||||
/** Macro for encasing other multi-statement macros. This should be used along with a preceding closing
|
||||
* brace at the end of any multi-statement macro, so that the macros contents as a whole are treated
|
||||
* as a discreete block and not as a list of seperate statements which may cause problems when used as
|
||||
* a block (such as inline IF statments).
|
||||
* as a discrete block and not as a list of separate statements which may cause problems when used as
|
||||
* a block (such as inline IF statements).
|
||||
*/
|
||||
#define MACROE while (0)
|
||||
|
||||
/** Defines a volatile NOP statment which cannot be optimized out by the compiler, and thus can always
|
||||
/** Defines a volatile NOP statement which cannot be optimized out by the compiler, and thus can always
|
||||
* be set as a breakpoint in the resulting code. Useful for debugging purposes, where the optimizer
|
||||
* removes/reorders code to the point where break points cannot reliably be set.
|
||||
*/
|
||||
#define JTAG_DEBUG_POINT() asm volatile ("NOP" ::)
|
||||
|
||||
/** Defines an explicit JTAG break point in the resulting binary via the ASM BREAK statment. When
|
||||
/** Defines an explicit JTAG break point in the resulting binary via the ASM BREAK statement. When
|
||||
* a JTAG is used, this causes the program execution to halt when reached until manually resumed. */
|
||||
#define JTAG_DEBUG_BREAK() asm volatile ("BREAK" ::)
|
||||
|
||||
|
|
|
@ -32,7 +32,7 @@
|
|||
*
|
||||
* This file contains macros for applying GCC specific attributes to functions to control various optimizer
|
||||
* and code generation features of the compiler. Attributes may be placed in the function prototype in any
|
||||
* order, and multiple attributes can be specified for a single function via a space seperated list.
|
||||
* order, and multiple attributes can be specified for a single function via a space separated list.
|
||||
*
|
||||
* \note Do not include this file directly, rather include the Common.h header file instead to gain this file's
|
||||
* functionality.
|
||||
|
@ -49,11 +49,11 @@
|
|||
/* Public Interface - May be used in end-application: */
|
||||
/* Macros: */
|
||||
/** Indicates to the compiler that the function can not ever return, so that any stack restoring or
|
||||
* return code may be ommited by the compiler in the resulting binary.
|
||||
* return code may be omitted by the compiler in the resulting binary.
|
||||
*/
|
||||
#define ATTR_NO_RETURN __attribute__ ((noreturn))
|
||||
|
||||
/** Places the function in one of the initilization sections, which execute before the main function
|
||||
/** Places the function in one of the initialization sections, which execute before the main function
|
||||
* of the application. The init function number can be specified as "x", as an integer. Refer to the
|
||||
* avr-libc manual for more information on the initialization sections.
|
||||
*/
|
||||
|
@ -65,12 +65,12 @@
|
|||
#define ATTR_WARN_UNUSED_RESULT __attribute__ ((warn_unused_result))
|
||||
|
||||
/** Indicates that the specified parameters of the function are pointers which should never be NULL.
|
||||
* When applied as a 1-based comma seperated list the compiler will emmit a warning if the specified
|
||||
* When applied as a 1-based comma separated list the compiler will emit a warning if the specified
|
||||
* parameters are known at compiler time to be NULL at the point of calling the function.
|
||||
*/
|
||||
#define ATTR_NON_NULL_PTR_ARG(...) __attribute__ ((nonnull (__VA_ARGS__)))
|
||||
|
||||
/** Removes any preample or postample from the function. When used, the function will not have any
|
||||
/** Removes any preamble or postamble from the function. When used, the function will not have any
|
||||
* register or stack saving code. This should be used with caution, and when used the programmer
|
||||
* is responsible for maintaining stack and register integrity.
|
||||
*/
|
||||
|
|
|
@ -81,7 +81,7 @@
|
|||
#if !defined(__DOXYGEN__)
|
||||
static inline void Joystick_Init(void)
|
||||
{
|
||||
// TODO: Initialize joystick port pins as inputs with pullups
|
||||
// TODO: Initialize joystick port pins as inputs with pull-ups
|
||||
};
|
||||
|
||||
static inline uint8_t Joystick_GetStatus(void) ATTR_WARN_UNUSED_RESULT;
|
||||
|
|
|
@ -68,7 +68,7 @@
|
|||
#error The selected board does not contain a HWB.
|
||||
#endif
|
||||
|
||||
/* Psudo-Functions for Doxygen: */
|
||||
/* Pseudo-Functions for Doxygen: */
|
||||
#if defined(__DOXYGEN__)
|
||||
/** Initializes the HWB driver, so that the current button position can be read. This sets the appropriate
|
||||
* I/O pin to an input with pull-up enabled.
|
||||
|
|
|
@ -66,7 +66,7 @@
|
|||
#error The selected board does not contain a joystick.
|
||||
#endif
|
||||
|
||||
/* Psudo-Functions for Doxygen: */
|
||||
/* Pseudo-Functions for Doxygen: */
|
||||
#if defined(__DOXYGEN__)
|
||||
/** Initializes the joystick driver so that the joystick position can be read. This sets the appropriate
|
||||
* I/O pins to inputs with their pull-ups enabled.
|
||||
|
|
|
@ -68,7 +68,7 @@
|
|||
#include "Board/LEDs.h"
|
||||
#endif
|
||||
|
||||
/* Psudo-Functions for Doxygen: */
|
||||
/* Pseudo-Functions for Doxygen: */
|
||||
#if defined(__DOXYGEN__)
|
||||
/** Initializes the board LED driver so that the LEDs can be controlled. This sets the appropriate port
|
||||
* I/O pins as outputs, and sets the LEDs to default to off.
|
||||
|
|
|
@ -72,16 +72,16 @@
|
|||
/** Initializes the temperature sensor driver, including setting up the appropriate ADC channel.
|
||||
* This must be called before any other temperature sensor routines.
|
||||
*
|
||||
* The ADC itself (not the ADC channel) must be configured seperately before calling the temperature
|
||||
* The ADC itself (not the ADC channel) must be configured separately before calling the temperature
|
||||
* sensor functions.
|
||||
*/
|
||||
#define Temperature_Init() ADC_SetupChannel(TEMP_ADC_CHANNEL);
|
||||
|
||||
/* Function Prototypes: */
|
||||
/** Performs a complete ADC on the temperature sensor channel, and converts the result into a
|
||||
* valid temperature between TEMP_MIN_TEMP and TEMP_MAX_TEMP in degrees Celcius.
|
||||
* valid temperature between TEMP_MIN_TEMP and TEMP_MAX_TEMP in degrees Celsius.
|
||||
*
|
||||
* \return Signed temperature in degrees Celcius
|
||||
* \return Signed temperature in degrees Celsius
|
||||
*/
|
||||
int8_t Temperature_GetTemperature(void) ATTR_WARN_UNUSED_RESULT;
|
||||
|
||||
|
|
|
@ -97,13 +97,13 @@
|
|||
#define DESCRIPTOR_SIZE(DescriptorPtr) DESCRIPTOR_CAST(DescriptorPtr, USB_Descriptor_Header_t).bLength
|
||||
#endif
|
||||
|
||||
/** Creates a prototype for or begins a descriptor comparitor routine. Descriptor comparitor routines are
|
||||
/** Creates a prototype for or begins a descriptor comparator routine. Descriptor comparator routines are
|
||||
* small search routines which are passed a pointer to the current sub descriptor in the configuration
|
||||
* descriptor, and which analyse the sub descriptor to determine whether or not it matches the routine's
|
||||
* search parameters. Comparitor routines provide a powerful way to scan through the config descriptor
|
||||
* search parameters. Comparator routines provide a powerful way to scan through the config descriptor
|
||||
* for certain descriptors matching unique criteria.
|
||||
*
|
||||
* Comparitor routines are passed in a single pointer named CurrentDescriptor, and should return a value
|
||||
* Comparator routines are passed in a single pointer named CurrentDescriptor, and should return a value
|
||||
* of a member of the DSEARCH_Return_ErrorCodes_t enum.
|
||||
*/
|
||||
#define DESCRIPTOR_COMPARATOR(name) uint8_t DCOMP_##name (void* const CurrentDescriptor)
|
||||
|
@ -117,7 +117,7 @@
|
|||
*
|
||||
* \param DSize Pointer to an int storing the remaining bytes in the configuration descriptor
|
||||
* \param DPos Pointer to the current position in the configuration descriptor
|
||||
* \param DSearch Name of the comparitor search function to use on the configuration descriptor
|
||||
* \param DSearch Name of the comparator search function to use on the configuration descriptor
|
||||
*
|
||||
* \return Value of one of the members of the DSEARCH_Comp_Return_ErrorCodes_t enum
|
||||
*
|
||||
|
@ -156,7 +156,7 @@
|
|||
/** Enum for return values of USB_Host_GetNextDescriptorComp() */
|
||||
enum DSEARCH_Comp_Return_ErrorCodes_t
|
||||
{
|
||||
Descriptor_Search_Comp_Found = 0, /**< Configuration descriptor now points to decriptor which matches
|
||||
Descriptor_Search_Comp_Found = 0, /**< Configuration descriptor now points to descriptor which matches
|
||||
* search criteria of the given comparator function. */
|
||||
Descriptor_Search_Comp_Fail = 1, /**< Comparator function returned Descriptor_Search_Fail. */
|
||||
Descriptor_Search_Comp_EndOfDescriptor = 2, /**< End of configuration descriptor reached before match found. */
|
||||
|
|
|
@ -220,7 +220,7 @@
|
|||
bool GetReportItemInfo(const uint8_t* ReportData, HID_ReportItem_t* const ReportItem)
|
||||
ATTR_NON_NULL_PTR_ARG(1, 2);
|
||||
|
||||
/** Retreives the given report item's value out of the Value member of the report item's
|
||||
/** Retrieves the given report item's value out of the Value member of the report item's
|
||||
* HID_ReportItem_t structure and places it into the correct position in the HID report
|
||||
* buffer. The report buffer is assumed to have the appropriate bits cleared before calling
|
||||
* this function (i.e., the buffer should be explicitly cleared before report values are added).
|
||||
|
|
|
@ -84,7 +84,7 @@
|
|||
/** HID_ReportItem_t.ItemFlags flag for buffered bytes. */
|
||||
#define IOF_BUFFEREDBYTES (1 << 8)
|
||||
|
||||
/** HID_ReportItem_t.ItemFlags flag for bitfield data. */
|
||||
/** HID_ReportItem_t.ItemFlags flag for bit field data. */
|
||||
#define IOF_BITFIELD (0 << 8)
|
||||
|
||||
/* Private Interface - For use in library only: */
|
||||
|
|
|
@ -58,7 +58,7 @@
|
|||
/* Macros: */
|
||||
/** Raises a given event name, with the specified parameters. For events with no parameters the
|
||||
* only argument to the macro is the event name, events with parameters list the parameter values
|
||||
* after the name as a comma seperated list.
|
||||
* after the name as a comma separated list.
|
||||
*
|
||||
* When a given event is fired, its corresponding event handler code is executed.
|
||||
*
|
||||
|
@ -75,7 +75,7 @@
|
|||
*/
|
||||
#define RAISE_EVENT(e, ...) Event_ ## e (__VA_ARGS__)
|
||||
|
||||
/** Indicates that a given module can raise a given event. This is the equivelent of putting the
|
||||
/** Indicates that a given module can raise a given event. This is the equivalent of putting the
|
||||
* event function's prototype into the module, but in a cleaner way. Each event which may be
|
||||
* fired via the RAISE_EVENT macro in the module should have an accompanying RAISES_EVENT
|
||||
* prototype in the module's header file.
|
||||
|
@ -100,7 +100,7 @@
|
|||
*
|
||||
* Only one event handler may be defined in any user project for each individual event. Events may
|
||||
* or may not have parameters - for each event, refer to its documentation elsewhere in this module
|
||||
* to determine the presense and purpose of any event parameters.
|
||||
* to determine the presence and purpose of any event parameters.
|
||||
*
|
||||
* Usage Example:
|
||||
* \code
|
||||
|
@ -115,7 +115,7 @@
|
|||
*/
|
||||
#define EVENT_HANDLER(e) void Event_ ## e e ## _P
|
||||
|
||||
/** Indicates that a given module handles an event. This is the equivelent of putting the
|
||||
/** Indicates that a given module handles an event. This is the equivalent of putting the
|
||||
* event function's prototype into the module, but in a cleaner way. Each event which may be
|
||||
* handled via the EVENT_HANDLER macro in the module should have an accompanying HANDLES_EVENT
|
||||
* prototype in the module's header file.
|
||||
|
@ -136,7 +136,7 @@
|
|||
*/
|
||||
#define HANDLES_EVENT(e) EVENT_HANDLER(e)
|
||||
|
||||
/* Psudo-Functions for Doxygen: */
|
||||
/* Pseudo-Functions for Doxygen: */
|
||||
#if defined(__DOXYGEN__)
|
||||
/** Event for VBUS level change. This event fires when the VBUS line of the USB AVR changes from
|
||||
* high to low or vice-versa.
|
||||
|
@ -165,7 +165,7 @@
|
|||
* has been attached (but not yet fully enumerated), or when in device mode and the device is connected
|
||||
* to a host, beginning the enumeration process.
|
||||
*
|
||||
* When in device mode, this can be used to progmatically start the USB management task to reduce
|
||||
* When in device mode, this can be used to programmatically start the USB management task to reduce
|
||||
* CPU usage.
|
||||
*
|
||||
* \note For the smaller USB AVRs (AT90USBXX2) with limited USB controllers, VBUS is not available to the USB controller.
|
||||
|
@ -183,7 +183,7 @@
|
|||
* attached and enumerated device has been disconnected, or when in device mode and the device is
|
||||
* disconnected from the host.
|
||||
*
|
||||
* When in device mode, this can be used to progmatically stop the USB management task to reduce
|
||||
* When in device mode, this can be used to programmatically stop the USB management task to reduce
|
||||
* CPU usage.
|
||||
*
|
||||
* \note For the smaller USB AVRs (AT90USBXX2) with limited USB controllers, VBUS is not available to the USB controller.
|
||||
|
@ -231,7 +231,7 @@
|
|||
|
||||
/** Event for USB device attachment. This event fires when a the USB interface is in host mode, and
|
||||
* a USB device has been connected to the USB interface. This is interrupt driven, thus fires before
|
||||
* the standard USB_DeviceConnect event and so can be used to programatically start the USB management
|
||||
* the standard USB_DeviceConnect event and so can be used to programmatically start the USB management
|
||||
* task to reduce CPU consumption.
|
||||
*
|
||||
* \note This event only exists on USB AVR models which supports host mode.
|
||||
|
@ -245,7 +245,7 @@
|
|||
|
||||
/** Event for USB device removal. This event fires when a the USB interface is in host mode, and
|
||||
* a USB device has been removed the USB interface whether or not it has been enumerated. This
|
||||
* can be used to programatically stop the USB management task to reduce CPU consumption.
|
||||
* can be used to programmatically stop the USB management task to reduce CPU consumption.
|
||||
*
|
||||
* \note This event only exists on USB AVR models which supports host mode.
|
||||
*
|
||||
|
|
|
@ -31,7 +31,7 @@
|
|||
/** \file
|
||||
*
|
||||
* Standard USB device descriptor defines and retrieval routines, for USB devices. This module contains
|
||||
* strucutures and macros for the easy creation of standard USB descriptors in USB device projects.
|
||||
* structures and macros for the easy creation of standard USB descriptors in USB device projects.
|
||||
*
|
||||
* All standard descriptors have their elements named in an identical manner to the official USB specification,
|
||||
* however slightly more verbose alternate (non-standard) names are also supplied if the macro
|
||||
|
@ -245,7 +245,7 @@
|
|||
uint16_t ReleaseNumber; /**< Product release (version) number. */
|
||||
|
||||
uint8_t ManufacturerStrIndex; /**< String index for the manufacturer's name. The
|
||||
* host will request this string via a seperate
|
||||
* host will request this string via a separate
|
||||
* control request for the string descriptor.
|
||||
*
|
||||
* \note If no string supplied, use NO_DESCRIPTOR.
|
||||
|
@ -255,7 +255,7 @@
|
|||
* \see ManufacturerStrIndex structure entry.
|
||||
*/
|
||||
uint8_t SerialNumStrIndex; /**< String index for the product's globally unique hexadecimal
|
||||
* serial number, in uppercase Unicoded ASCII.
|
||||
* serial number, in uppercase Unicode ASCII.
|
||||
*
|
||||
* \see ManufacturerStrIndex structure entry.
|
||||
*/
|
||||
|
@ -363,7 +363,7 @@
|
|||
|
||||
/** Type define for a standard interface association descriptor.
|
||||
*
|
||||
* This descriptor has been added as a suppliment to the USB2.0 standard, in the ECN located at
|
||||
* This descriptor has been added as a supplement to the USB2.0 standard, in the ECN located at
|
||||
* <a>http://www.usb.org/developers/docs/InterfaceAssociationDescriptor_ecn.pdf</a>. It allows compound
|
||||
* devices with multiple interfaces related to the same function to have the multiple interfaces bound
|
||||
* together at the point of enumeration, loading one generic driver for all the interfaces in the single
|
||||
|
@ -425,7 +425,7 @@
|
|||
* maximum packet size that the endpoint can receive at a time.
|
||||
*/
|
||||
|
||||
uint8_t PollingIntervalMS; /**< Polling interval in milliseconds for the endpont
|
||||
uint8_t PollingIntervalMS; /**< Polling interval in milliseconds for the endpoint
|
||||
* if it is an INTERRUPT or ISOCHRONOUS type.
|
||||
*/
|
||||
#else
|
||||
|
|
|
@ -79,7 +79,7 @@
|
|||
#define USB_INT_IsEnabled(int) ((USB_INT_GET_EN_REG(int) & USB_INT_GET_EN_MASK(int)) ? true : false)
|
||||
|
||||
/** Returns boolean true if the given interrupt flag is set (i.e. the condition for the interrupt has occurred,
|
||||
* but the interrupt vector is not neccesarily enabled), otherwise returns false.
|
||||
* but the interrupt vector is not necessarily enabled), otherwise returns false.
|
||||
*/
|
||||
#define USB_INT_HasOccurred(int) ((USB_INT_GET_INT_REG(int) & USB_INT_GET_INT_MASK(int)) ? true : false)
|
||||
|
||||
|
|
|
@ -76,7 +76,7 @@
|
|||
*/
|
||||
extern volatile bool USB_IsConnected;
|
||||
|
||||
/** Indicates if the USB interface is currently initialized but not neccesarily connected to a host
|
||||
/** Indicates if the USB interface is currently initialized but not necessarily connected to a host
|
||||
* or device (i.e. if USB_Init() has been run). If this is false, all other library globals are invalid.
|
||||
*
|
||||
* \note This variable should be treated as read-only in the user application, and never manually
|
||||
|
@ -166,10 +166,10 @@
|
|||
* The USB task must be serviced within 50mS in all modes, when needed. The task may be serviced
|
||||
* at all times, or (for minimum CPU consumption):
|
||||
*
|
||||
* - In device mode, it may be disabled at startup, enabled on the firing of the USB_Connect event
|
||||
* - In device mode, it may be disabled at start-up, enabled on the firing of the USB_Connect event
|
||||
* and disabled again on the firing of the USB_Disconnect event.
|
||||
*
|
||||
* - In host mode, it may be disabled at startup, enabled on the firing of the USB_DeviceAttached
|
||||
* - In host mode, it may be disabled at start-up, enabled on the firing of the USB_DeviceAttached
|
||||
* event and disabled again on the firing of the USB_DeviceUnattached event.
|
||||
*
|
||||
* \see Events.h for more information on the USB events.
|
||||
|
|
|
@ -94,7 +94,7 @@
|
|||
|
||||
/** Indicates if the device is currently suspended by the host. While suspended, the device is
|
||||
* to enter a low power state until resumed by the host. While suspended no USB traffic to or
|
||||
* from the device can ocurr (except for Remote Wakeup requests).
|
||||
* from the device can occur (except for Remote Wakeup requests).
|
||||
*
|
||||
* This macro returns true if the USB communications have been suspended by the host, false
|
||||
* otherwise.
|
||||
|
|
|
@ -32,7 +32,7 @@
|
|||
*
|
||||
* Functions, macros and enums related to endpoint management when in USB Device mode. This
|
||||
* module contains the endpoint management macros, as well as endpoint interrupt and data
|
||||
* send/recieve functions for various datatypes.
|
||||
* send/recieve functions for various data types.
|
||||
*/
|
||||
|
||||
#ifndef __ENDPOINT_H__
|
||||
|
@ -210,7 +210,7 @@
|
|||
|
||||
/** Returns true if the currently selected endpoint may be read from (if data is waiting in the endpoint
|
||||
* bank and the endpoint is an OUT direction, or if the bank is not yet full if the endpoint is an
|
||||
* IN direction). This function will return false if an error has occured in the endpoint, or if
|
||||
* IN direction). This function will return false if an error has occurred in the endpoint, or if
|
||||
* the endpoint is an OUT direction and no packet has been received, or if the endpoint is an IN
|
||||
* direction and the endpoint bank is full.
|
||||
*/
|
||||
|
@ -262,10 +262,10 @@
|
|||
*/
|
||||
#define Endpoint_ClearSetupOUT() MACROS{ UEINTX &= ~(1 << RXOUTI); }MACROE
|
||||
|
||||
/** Stalls the current endpoint, indicating to the host that a logical problem occured with the
|
||||
/** Stalls the current endpoint, indicating to the host that a logical problem occurred with the
|
||||
* indicated endpoint and that the current transfer sequence should be aborted. This provides a
|
||||
* way for devices to indicate invalid commands to the host so that the current transfer can be
|
||||
* aborted and the host can begin its own recovery seqeuence.
|
||||
* aborted and the host can begin its own recovery sequence.
|
||||
*
|
||||
* The currently selected endpoint remains stalled until either the Endpoint_ClearStall() macro
|
||||
* is called, or the host issues a CLEAR FEATURE request to the device for the currently selected
|
||||
|
@ -276,7 +276,7 @@
|
|||
/** Clears the stall on the currently selected endpoint. */
|
||||
#define Endpoint_ClearStall() MACROS{ UECONX |= (1 << STALLRQC); }MACROE
|
||||
|
||||
/** Returns true if the currently selected endpoint is stalled, false othewise. */
|
||||
/** Returns true if the currently selected endpoint is stalled, false otherwise. */
|
||||
#define Endpoint_IsStalled() ((UECONX & (1 << STALLRQ)) ? true : false)
|
||||
|
||||
/** Resets the data toggle of the currently selected endpoint. */
|
||||
|
@ -552,12 +552,12 @@
|
|||
*
|
||||
* The callback routine should be created using the STREAM_CALLBACK() macro. If the token
|
||||
* NO_STREAM_CALLBACKS is passed via the -D option to the compiler, stream callbacks are disabled
|
||||
* and this function has the Callback parameter ommitted.
|
||||
* and this function has the Callback parameter omitted.
|
||||
*
|
||||
* \note This routine should not be used on CONTROL type endpoints.
|
||||
*
|
||||
* \param Length Number of bytes to send via the currently selected endpoint.
|
||||
* \param Callback Name of a callback routine to call between sucessive USB packet transfers, NULL if no callback
|
||||
* \param Callback Name of a callback routine to call between successive USB packet transfers, NULL if no callback
|
||||
*
|
||||
* \return A value from the Endpoint_Stream_RW_ErrorCodes_t enum.
|
||||
*/
|
||||
|
@ -576,13 +576,13 @@
|
|||
*
|
||||
* The callback routine should be created using the STREAM_CALLBACK() macro. If the token
|
||||
* NO_STREAM_CALLBACKS is passed via the -D option to the compiler, stream callbacks are disabled
|
||||
* and this function has the Callback parameter ommitted.
|
||||
* and this function has the Callback parameter omitted.
|
||||
*
|
||||
* \note This routine should not be used on CONTROL type endpoints.
|
||||
*
|
||||
* \param Buffer Pointer to the source data buffer to read from.
|
||||
* \param Length Number of bytes to read for the currently selected endpoint into the buffer.
|
||||
* \param Callback Name of a callback routine to call between sucessive USB packet transfers, NULL if no callback
|
||||
* \param Callback Name of a callback routine to call between successive USB packet transfers, NULL if no callback
|
||||
*
|
||||
* \return A value from the Endpoint_Stream_RW_ErrorCodes_t enum.
|
||||
*/
|
||||
|
@ -601,13 +601,13 @@
|
|||
*
|
||||
* The callback routine should be created using the STREAM_CALLBACK() macro. If the token
|
||||
* NO_STREAM_CALLBACKS is passed via the -D option to the compiler, stream callbacks are disabled
|
||||
* and this function has the Callback parameter ommitted.
|
||||
* and this function has the Callback parameter omitted.
|
||||
*
|
||||
* \note This routine should not be used on CONTROL type endpoints.
|
||||
*
|
||||
* \param Buffer Pointer to the source data buffer to read from.
|
||||
* \param Length Number of bytes to read for the currently selected endpoint into the buffer.
|
||||
* \param Callback Name of a callback routine to call between sucessive USB packet transfers, NULL if no callback
|
||||
* \param Callback Name of a callback routine to call between successive USB packet transfers, NULL if no callback
|
||||
*
|
||||
* \return A value from the Endpoint_Stream_RW_ErrorCodes_t enum.
|
||||
*/
|
||||
|
@ -626,13 +626,13 @@
|
|||
*
|
||||
* The callback routine should be created using the STREAM_CALLBACK() macro. If the token
|
||||
* NO_STREAM_CALLBACKS is passed via the -D option to the compiler, stream callbacks are disabled
|
||||
* and this function has the Callback parameter ommitted.
|
||||
* and this function has the Callback parameter omitted.
|
||||
*
|
||||
* \note This routine should not be used on CONTROL type endpoints.
|
||||
*
|
||||
* \param Buffer Pointer to the destination data buffer to write to.
|
||||
* \param Length Number of bytes to send via the currently selected endpoint.
|
||||
* \param Callback Name of a callback routine to call between sucessive USB packet transfers, NULL if no callback
|
||||
* \param Callback Name of a callback routine to call between successive USB packet transfers, NULL if no callback
|
||||
*
|
||||
* \return A value from the Endpoint_Stream_RW_ErrorCodes_t enum.
|
||||
*/
|
||||
|
@ -651,13 +651,13 @@
|
|||
*
|
||||
* The callback routine should be created using the STREAM_CALLBACK() macro. If the token
|
||||
* NO_STREAM_CALLBACKS is passed via the -D option to the compiler, stream callbacks are disabled
|
||||
* and this function has the Callback parameter ommitted.
|
||||
* and this function has the Callback parameter omitted.
|
||||
*
|
||||
* \note This routine should not be used on CONTROL type endpoints.
|
||||
*
|
||||
* \param Buffer Pointer to the destination data buffer to write to.
|
||||
* \param Length Number of bytes to send via the currently selected endpoint.
|
||||
* \param Callback Name of a callback routine to call between sucessive USB packet transfers, NULL if no callback
|
||||
* \param Callback Name of a callback routine to call between successive USB packet transfers, NULL if no callback
|
||||
*
|
||||
* \return A value from the Endpoint_Stream_RW_ErrorCodes_t enum.
|
||||
*/
|
||||
|
@ -749,27 +749,27 @@
|
|||
#define Endpoint_Ignore_DWord() Endpoint_Discard_DWord()
|
||||
|
||||
/** Alias for Endpoint_Read_Word_LE(). By default USB transfers use little endian format, thus
|
||||
* the command with no endianness specifier indicates little endian mode.
|
||||
* the command with no endianness specified indicates little endian mode.
|
||||
*/
|
||||
#define Endpoint_Read_Word() Endpoint_Read_Word_LE()
|
||||
|
||||
/** Alias for Endpoint_Write_Word_LE(). By default USB transfers use little endian format, thus
|
||||
* the command with no endianness specifier indicates little endian mode.
|
||||
* the command with no endianness specified indicates little endian mode.
|
||||
*/
|
||||
#define Endpoint_Write_Word(Word) Endpoint_Write_Word_LE(Word)
|
||||
|
||||
/** Alias for Endpoint_Read_DWord_LE(). By default USB transfers use little endian format, thus
|
||||
* the command with no endianness specifier indicates little endian mode.
|
||||
* the command with no endianness specified indicates little endian mode.
|
||||
*/
|
||||
#define Endpoint_Read_DWord() Endpoint_Read_DWord_LE()
|
||||
|
||||
/** Alias for Endpoint_Write_DWord_LE(). By default USB transfers use little endian format, thus
|
||||
* the command with no endianness specifier indicates little endian mode.
|
||||
* the command with no endianness specified indicates little endian mode.
|
||||
*/
|
||||
#define Endpoint_Write_DWord(DWord) Endpoint_Write_DWord_LE(DWord)
|
||||
|
||||
/** Alias for Endpoint_Read_Stream_LE(). By default USB transfers use little endian format, thus
|
||||
* the command with no endianness specifier indicates little endian mode.
|
||||
* the command with no endianness specified indicates little endian mode.
|
||||
*/
|
||||
#if !defined(NO_STREAM_CALLBACKS)
|
||||
#define Endpoint_Read_Stream(Buffer, Length, Callback) Endpoint_Read_Stream_LE(Buffer, Length, Callback)
|
||||
|
@ -778,7 +778,7 @@
|
|||
#endif
|
||||
|
||||
/** Alias for Endpoint_Write_Stream_LE(). By default USB transfers use little endian format, thus
|
||||
* the command with no endianness specifier indicates little endian mode.
|
||||
* the command with no endianness specified indicates little endian mode.
|
||||
*/
|
||||
#if !defined(NO_STREAM_CALLBACKS)
|
||||
#define Endpoint_Write_Stream(Buffer, Length, Callback) Endpoint_Write_Stream_LE(Buffer, Length, Callback)
|
||||
|
@ -787,12 +787,12 @@
|
|||
#endif
|
||||
|
||||
/** Alias for Endpoint_Read_Control_Stream_LE(). By default USB transfers use little endian format, thus
|
||||
* the command with no endianness specifier indicates little endian mode.
|
||||
* the command with no endianness specified indicates little endian mode.
|
||||
*/
|
||||
#define Endpoint_Read_Control_Stream(Data, Length) Endpoint_Read_Control_Stream_LE(Data, Length)
|
||||
|
||||
/** Alias for Endpoint_Write_Control_Stream_LE(). By default USB transfers use little endian format, thus
|
||||
* the command with no endianness specifier indicates little endian mode.
|
||||
* the command with no endianness specified indicates little endian mode.
|
||||
*/
|
||||
#define Endpoint_Write_Control_Stream(Data, Length) Endpoint_Write_Control_Stream_LE(Data, Length)
|
||||
|
||||
|
|
|
@ -93,8 +93,8 @@ void USB_Host_ResetDevice(void)
|
|||
|
||||
for (uint8_t MSRem = 10; MSRem != 0; MSRem--)
|
||||
{
|
||||
/* Workaround for powerless-pullup devices. After a USB bus reset,
|
||||
all disconnection interrupts are supressed while a USB frame is
|
||||
/* Workaround for powerless-pull-up devices. After a USB bus reset,
|
||||
all disconnection interrupts are suppressed while a USB frame is
|
||||
looked for - if it is found within 10ms, the device is still
|
||||
present. */
|
||||
|
||||
|
|
|
@ -102,7 +102,7 @@
|
|||
*/
|
||||
#define USB_Host_ResumeBus() MACROS{ UHCON |= (1 << SOFEN); }MACROE
|
||||
|
||||
/** Suspends the USB bus, preventing any communications from occuring between the host and attached
|
||||
/** Suspends the USB bus, preventing any communications from occurring between the host and attached
|
||||
* device until the bus has been resumed. This stops the transmission of the 1MS Start Of Frame
|
||||
* messages to the device.
|
||||
*/
|
||||
|
@ -192,14 +192,14 @@
|
|||
* event.
|
||||
*/
|
||||
HOST_ENUMERROR_WaitStage = 1, /**< One of the delays between enumeration steps failed
|
||||
* to complete successfuly, due to a timeout or other
|
||||
* to complete successfully, due to a timeout or other
|
||||
* error.
|
||||
*/
|
||||
HOST_ENUMERROR_NoDeviceDetected = 2, /**< No device was detected, despite the USB data lines
|
||||
* indicating the attachment of a device.
|
||||
*/
|
||||
HOST_ENUMERROR_ControlError = 3, /**< One of the enumeration control requests failed to
|
||||
* complete successfuly.
|
||||
* complete successfully.
|
||||
*/
|
||||
HOST_ENUMERROR_PipeConfigError = 4, /**< The default control pipe (address 0) failed to
|
||||
* configure correctly.
|
||||
|
|
|
@ -77,7 +77,7 @@
|
|||
HOST_SENDCONTROL_DeviceDisconnect = 1, /**< The attached device was disconnected during the
|
||||
* request transfer.
|
||||
*/
|
||||
HOST_SENDCONTROL_PipeError = 2, /**< An error occured in the pipe while sending the request. */
|
||||
HOST_SENDCONTROL_PipeError = 2, /**< An error occurred in the pipe while sending the request. */
|
||||
HOST_SENDCONTROL_SetupStalled = 3, /**< The attached device stalled the request, usually
|
||||
* indicating that the request is unsupported on the device.
|
||||
*/
|
||||
|
|
|
@ -82,7 +82,7 @@
|
|||
* host mode indicates that VBUS should be applied and a session started.
|
||||
*
|
||||
* There are two different methods of sending a SRP - either pulses on the VBUS line, or by
|
||||
* pulsing the Data + line via the internal pullup resistor. The SRP mode is given as the
|
||||
* pulsing the Data + line via the internal pull-up resistor. The SRP mode is given as the
|
||||
* "type" parameter, and can be either USB_OTG_SRP_VBUS or USB_OTG_STP_DATA.
|
||||
*/
|
||||
#define USB_OTG_DEV_Initiate_SRP(type) MACROS{ OTGCON = ((OTGCON & ~(1 << SRPSEL)) | (type | (1 << SRPREQ))); }MACROE
|
||||
|
|
|
@ -32,7 +32,7 @@
|
|||
*
|
||||
* Functions, macros and enums related to pipe management when in USB Host mode. This
|
||||
* module contains the pipe management macros, as well as pipe interrupt and data
|
||||
* send/recieve functions for various datatypes.
|
||||
* send/recieve functions for various data types.
|
||||
*/
|
||||
|
||||
#ifndef __PIPE_H__
|
||||
|
@ -303,7 +303,7 @@
|
|||
/** Returns true if the master pipe error flag is set for the currently selected pipe, indicating that
|
||||
* some sort of hardware error has occurred on the pipe.
|
||||
*
|
||||
* \see Pipe_GetErrorFlags() macro for information on retreiving the exact error flag.
|
||||
* \see Pipe_GetErrorFlags() macro for information on retrieving the exact error flag.
|
||||
*/
|
||||
#define Pipe_IsError() ((UPINTX & (1 << PERRI)) ? true : false)
|
||||
|
||||
|
@ -311,14 +311,14 @@
|
|||
* flag for the pipe. */
|
||||
#define Pipe_ClearErrorFlags() MACROS{ UPERRX = 0; }MACROE
|
||||
|
||||
/** Returns a mask of the hardware error flags which have occured on the currently selected pipe. This
|
||||
/** Returns a mask of the hardware error flags which have occurred on the currently selected pipe. This
|
||||
* value can then be masked against the PIPE_ERRORFLAG_* masks to determine what error has occurred.
|
||||
*/
|
||||
#define Pipe_GetErrorFlags() UPERRX
|
||||
|
||||
/** Returns true if the currently selected pipe may be read from (if data is waiting in the pipe
|
||||
* bank and the pipe is an IN direction, or if the bank is not yet full if the pipe is an OUT
|
||||
* direction). This function will return false if an error has occured in the pipe, or if the pipe
|
||||
* direction). This function will return false if an error has occurred in the pipe, or if the pipe
|
||||
* is an IN direction and no packet has been received, or if the pipe is an OUT direction and the
|
||||
* pipe bank is full.
|
||||
*/
|
||||
|
@ -358,9 +358,9 @@
|
|||
#define Pipe_ClearSetupOUT() MACROS{ UPINTX &= ~(1 << TXOUTI); UPINTX &= ~(1 << FIFOCON); }MACROE
|
||||
|
||||
/** Returns true if the device sent a NAK (Negative Acknowledge) in response to the last sent packet on
|
||||
* the currently selected pipe. This ocurrs when the host sends a packet to the device, but the device
|
||||
* the currently selected pipe. This occurs when the host sends a packet to the device, but the device
|
||||
* is not currently ready to handle the packet (i.e. its endpoint banks are full). Once a NAK has been
|
||||
* received, it must be cleard using Pipe_ClearNAKReceived() before the previous (or any other) packet
|
||||
* received, it must be cleared using Pipe_ClearNAKReceived() before the previous (or any other) packet
|
||||
* can be re-sent.
|
||||
*/
|
||||
#define Pipe_IsNAKReceived() ((UPINTX & (1 << NAKEDI)) ? true : false)
|
||||
|
@ -607,11 +607,11 @@
|
|||
*
|
||||
* The callback routine should be created using the STREAM_CALLBACK() macro. If the token
|
||||
* NO_STREAM_CALLBACKS is passed via the -D option to the compiler, stream callbacks are disabled
|
||||
* and this function has the Callback parameter ommitted.
|
||||
* and this function has the Callback parameter omitted.
|
||||
*
|
||||
* \param Buffer Pointer to the source data buffer to read from.
|
||||
* \param Length Number of bytes to read for the currently selected pipe into the buffer.
|
||||
* \param Callback Name of a callback routine to call between sucessive USB packet transfers, NULL if no callback
|
||||
* \param Callback Name of a callback routine to call between successive USB packet transfers, NULL if no callback
|
||||
*
|
||||
* \return A value from the Pipe_Stream_RW_ErrorCodes_t enum.
|
||||
*/
|
||||
|
@ -629,11 +629,11 @@
|
|||
*
|
||||
* The callback routine should be created using the STREAM_CALLBACK() macro. If the token
|
||||
* NO_STREAM_CALLBACKS is passed via the -D option to the compiler, stream callbacks are disabled
|
||||
* and this function has the Callback parameter ommitted.
|
||||
* and this function has the Callback parameter omitted.
|
||||
*
|
||||
* \param Buffer Pointer to the source data buffer to read from.
|
||||
* \param Length Number of bytes to read for the currently selected pipe into the buffer.
|
||||
* \param Callback Name of a callback routine to call between sucessive USB packet transfers, NULL if no callback
|
||||
* \param Callback Name of a callback routine to call between successive USB packet transfers, NULL if no callback
|
||||
*
|
||||
* \return A value from the Pipe_Stream_RW_ErrorCodes_t enum.
|
||||
*/
|
||||
|
@ -651,10 +651,10 @@
|
|||
*
|
||||
* The callback routine should be created using the STREAM_CALLBACK() macro. If the token
|
||||
* NO_STREAM_CALLBACKS is passed via the -D option to the compiler, stream callbacks are disabled
|
||||
* and this function has the Callback parameter ommitted.
|
||||
* and this function has the Callback parameter omitted.
|
||||
*
|
||||
* \param Length Number of bytes to send via the currently selected pipe.
|
||||
* \param Callback Name of a callback routine to call between sucessive USB packet transfers, NULL if no callback
|
||||
* \param Callback Name of a callback routine to call between successive USB packet transfers, NULL if no callback
|
||||
*
|
||||
* \return A value from the Pipe_Stream_RW_ErrorCodes_t enum.
|
||||
*/
|
||||
|
@ -672,11 +672,11 @@
|
|||
*
|
||||
* The callback routine should be created using the STREAM_CALLBACK() macro. If the token
|
||||
* NO_STREAM_CALLBACKS is passed via the -D option to the compiler, stream callbacks are disabled
|
||||
* and this function has the Callback parameter ommitted.
|
||||
* and this function has the Callback parameter omitted.
|
||||
*
|
||||
* \param Buffer Pointer to the source data buffer to write to.
|
||||
* \param Length Number of bytes to read for the currently selected pipe to read from.
|
||||
* \param Callback Name of a callback routine to call between sucessive USB packet transfers, NULL if no callback
|
||||
* \param Callback Name of a callback routine to call between successive USB packet transfers, NULL if no callback
|
||||
*
|
||||
* \return A value from the Pipe_Stream_RW_ErrorCodes_t enum.
|
||||
*/
|
||||
|
@ -694,11 +694,11 @@
|
|||
*
|
||||
* The callback routine should be created using the STREAM_CALLBACK() macro. If the token
|
||||
* NO_STREAM_CALLBACKS is passed via the -D option to the compiler, stream callbacks are disabled
|
||||
* and this function has the Callback parameter ommitted.
|
||||
* and this function has the Callback parameter omitted.
|
||||
*
|
||||
* \param Buffer Pointer to the source data buffer to write to.
|
||||
* \param Length Number of bytes to read for the currently selected pipe to read from.
|
||||
* \param Callback Name of a callback routine to call between sucessive USB packet transfers, NULL if no callback
|
||||
* \param Callback Name of a callback routine to call between successive USB packet transfers, NULL if no callback
|
||||
*
|
||||
* \return A value from the Pipe_Stream_RW_ErrorCodes_t enum.
|
||||
*/
|
||||
|
@ -722,27 +722,27 @@
|
|||
#define Pipe_Ignore_DWord() Pipe_Discard_DWord()
|
||||
|
||||
/** Alias for Pipe_Read_Word_LE(). By default USB transfers use little endian format, thus
|
||||
* the command with no endianness specifier indicates little endian mode.
|
||||
* the command with no endianness specified indicates little endian mode.
|
||||
*/
|
||||
#define Pipe_Read_Word() Pipe_Read_Word_LE()
|
||||
|
||||
/** Alias for Pipe_Write_Word_LE(). By default USB transfers use little endian format, thus
|
||||
* the command with no endianness specifier indicates little endian mode.
|
||||
* the command with no endianness specified indicates little endian mode.
|
||||
*/
|
||||
#define Pipe_Write_Word(Word) Pipe_Write_Word_LE(Word)
|
||||
|
||||
/** Alias for Pipe_Read_DWord_LE(). By default USB transfers use little endian format, thus
|
||||
* the command with no endianness specifier indicates little endian mode.
|
||||
* the command with no endianness specified indicates little endian mode.
|
||||
*/
|
||||
#define Pipe_Read_DWord() Pipe_Read_DWord_LE()
|
||||
|
||||
/** Alias for Pipe_Write_DWord_LE(). By default USB transfers use little endian format, thus
|
||||
* the command with no endianness specifier indicates little endian mode.
|
||||
* the command with no endianness specified indicates little endian mode.
|
||||
*/
|
||||
#define Pipe_Write_DWord(DWord) Pipe_Write_DWord_LE(DWord)
|
||||
|
||||
/** Alias for Pipe_Read_Stream_LE(). By default USB transfers use little endian format, thus
|
||||
* the command with no endianness specifier indicates little endian mode.
|
||||
* the command with no endianness specified indicates little endian mode.
|
||||
*/
|
||||
#if !defined(NO_STREAM_CALLBACKS)
|
||||
#define Pipe_Read_Stream(Buffer, Length, Callback) Pipe_Read_Stream_LE(Buffer, Length, Callback)
|
||||
|
@ -751,7 +751,7 @@
|
|||
#endif
|
||||
|
||||
/** Alias for Pipe_Write_Stream_LE(). By default USB transfers use little endian format, thus
|
||||
* the command with no endianness specifier indicates little endian mode.
|
||||
* the command with no endianness specified indicates little endian mode.
|
||||
*/
|
||||
#if !defined(NO_STREAM_CALLBACKS)
|
||||
#define Pipe_Write_Stream(Buffer, Length, Callback) Pipe_Read_Stream_LE(Buffer, Length, Callback)
|
||||
|
|
|
@ -45,9 +45,9 @@
|
|||
* The constants NUM_BLOCKS, BLOCK_SIZE and NUM_HANDLES must be defined in the project makefile (and passed to the
|
||||
* preprocessor via the -D GCC switch) for this library to compile.
|
||||
*
|
||||
* NUM_BLOCKS indicates the number of memory blocks in the memory psudoheap which can be chaned together and handed
|
||||
* NUM_BLOCKS indicates the number of memory blocks in the memory psudoheap which can be chained together and handed
|
||||
* to the application via a memory handle. NUM_HANDLES is the maximum number of memory handles (pointing to one or
|
||||
* more chained memory blocks) which can be handed out simultaneously before requring a handle (and its associated
|
||||
* more chained memory blocks) which can be handed out simultaneously before requiring a handle (and its associated
|
||||
* memory) to be freed. BLOCK_SIZE gives the number of bytes in each memory block.
|
||||
*/
|
||||
|
||||
|
@ -67,7 +67,7 @@
|
|||
/* Public Interface - May be used in end-application: */
|
||||
/* Macros: */
|
||||
/** Macro to dereference a given memory handle into the given type. The given type should be a pointer
|
||||
* if the memory is to contain an array of items, or should be a standard type (such as a primative or
|
||||
* if the memory is to contain an array of items, or should be a standard type (such as a primitive or
|
||||
* structure) if the memory is to hold a single item of a single type. */
|
||||
#define DEREF(handle, type) (*(type*)handle)
|
||||
|
||||
|
|
|
@ -30,10 +30,10 @@
|
|||
|
||||
/** \file
|
||||
*
|
||||
* Simple round-robbin cooperative scheduler for use in basic projects where non realtime tasks need
|
||||
* Simple round-robbin cooperative scheduler for use in basic projects where non real-time tasks need
|
||||
* to be executed. Each task is executed in sequence, and can be enabled or disabled individually or as a group.
|
||||
*
|
||||
* For a task to yield it must return, thus each task should have persistant data marked with the static attribute.
|
||||
* For a task to yield it must return, thus each task should have persistent data marked with the static attribute.
|
||||
*
|
||||
* Usage Example:
|
||||
* \code
|
||||
|
@ -126,8 +126,8 @@
|
|||
#define Scheduler_Start() Scheduler_GoSchedule(TOTAL_TASKS);
|
||||
|
||||
/** Initializes the scheduler so that the scheduler functions can be called before the scheduler itself
|
||||
* is started. This must be exeucted before any scheduler function calls other than Scheduler_Start(),
|
||||
* and can be ommitted if no such functions could be called before the scheduler is started.
|
||||
* is started. This must be executed before any scheduler function calls other than Scheduler_Start(),
|
||||
* and can be omitted if no such functions could be called before the scheduler is started.
|
||||
*/
|
||||
#define Scheduler_Init() Scheduler_InitScheduler(TOTAL_TASKS);
|
||||
|
||||
|
@ -194,7 +194,7 @@
|
|||
*
|
||||
* Usage Example:
|
||||
* \code
|
||||
* static SchedulerDelayCounter_t DelayCounter = 10000; // Force immediate run on startup
|
||||
* static SchedulerDelayCounter_t DelayCounter = 10000; // Force immediate run on start-up
|
||||
*
|
||||
* // Task runs every 10000 ticks, 10 seconds for this demo
|
||||
* if (Scheduler_HasDelayElapsed(10000, &DelayCounter))
|
||||
|
|
|
@ -46,7 +46,7 @@
|
|||
/* Macros: */
|
||||
#if (defined(__AVR_AT90USB1287__) || defined(__AVR_AT90USB647__) || \
|
||||
defined(__AVR_AT90USB1286__) || defined(__AVR_AT90USB646__)) || defined(__DOXYGEN__)
|
||||
/** Maximum number of bits which can be stored into a bit buffer. The memory usage is one eigth of this value per buffer. */
|
||||
/** Maximum number of bits which can be stored into a bit buffer. The memory usage is one eighth of this value per buffer. */
|
||||
#define MAX_BITS 8192
|
||||
#else
|
||||
#define MAX_BITS 1024
|
||||
|
|
|
@ -192,7 +192,7 @@ USB_Descriptor_String_t PROGMEM ProductString =
|
|||
|
||||
/** This function is called by the library when in device mode, and must be overridden (see StdDescriptors.h
|
||||
* 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 recieves a Get Descriptor request on the control endpoint, this function
|
||||
* to the USB library. When the device receives a Get Descriptor request on the control endpoint, this function
|
||||
* is called so that the descriptor details can be passed back and the appropriate descriptor sent back to the
|
||||
* USB host.
|
||||
*/
|
||||
|
|
|
@ -78,7 +78,7 @@ BitBuffer_t Track2Data;
|
|||
/** Circular buffer to hold the read bits from track 3 of the inserted magnetic card. */
|
||||
BitBuffer_t Track3Data;
|
||||
|
||||
/** Delay counter between sucessive key strokes. This is to prevent the OS from ignoring multiple keys in a short
|
||||
/** Delay counter between successive key strokes. This is to prevent the OS from ignoring multiple keys in a short
|
||||
* period of time due to key repeats. Two milliseconds works for most OSes.
|
||||
*/
|
||||
uint8_t KeyDelayRemaining;
|
||||
|
@ -312,7 +312,7 @@ bool GetNextReport(USB_KeyboardReport_Data_t* ReportData)
|
|||
/* Set the flag indicating that a null report must eventually be sent to release all pressed keys */
|
||||
MustRelease = true;
|
||||
|
||||
/* Only send the next key on odd reports, so that they are interpersed with null reports to release keys */
|
||||
/* Only send the next key on odd reports, so that they are interspersed with null reports to release keys */
|
||||
if (OddReport)
|
||||
{
|
||||
/* Set the report key code to the key code for the next data bit */
|
||||
|
@ -337,12 +337,12 @@ bool GetNextReport(USB_KeyboardReport_Data_t* ReportData)
|
|||
return false;
|
||||
}
|
||||
|
||||
/** Task to read out data from inserted magnetic cards and place the seperate track data into their respective
|
||||
/** Task to read out data from inserted magnetic cards and place the separate track data into their respective
|
||||
* data buffers for later sending to the host as keyboard key presses.
|
||||
*/
|
||||
TASK(Magstripe_Read)
|
||||
{
|
||||
/* Arrays to hold the buffer pointers, clock and data bit masks for the seperate card tracks */
|
||||
/* Arrays to hold the buffer pointers, clock and data bit masks for the separate card tracks */
|
||||
const struct
|
||||
{
|
||||
BitBuffer_t* Buffer;
|
||||
|
@ -396,7 +396,7 @@ TASK(Magstripe_Read)
|
|||
}
|
||||
|
||||
/** Task for the magnetic card reading and keyboard report generation. This task waits until a card is inserted,
|
||||
* then reads off the card data and sends it to the host as a series of keyboard keypresses via keyboard reports.
|
||||
* then reads off the card data and sends it to the host as a series of keyboard key presses via keyboard reports.
|
||||
*/
|
||||
TASK(USB_Keyboard_Report)
|
||||
{
|
||||
|
|
Loading…
Reference in New Issue