forked from mfulz_github/qmk_firmware
Spell check all source code variables, comments and strings.
This commit is contained in:
parent
c647c27639
commit
d6edfe35c8
|
@ -343,7 +343,7 @@ static void WriteNextResponseByte(const uint8_t Response)
|
||||||
/* Select the IN endpoint so that the next data byte can be written */
|
/* Select the IN endpoint so that the next data byte can be written */
|
||||||
Endpoint_SelectEndpoint(CDC_TX_EPNUM);
|
Endpoint_SelectEndpoint(CDC_TX_EPNUM);
|
||||||
|
|
||||||
/* If IN endpoint full, clear it and wait util ready for the next packet to the host */
|
/* If IN endpoint full, clear it and wait until ready for the next packet to the host */
|
||||||
if (!(Endpoint_IsReadWriteAllowed()))
|
if (!(Endpoint_IsReadWriteAllowed()))
|
||||||
{
|
{
|
||||||
Endpoint_ClearIN();
|
Endpoint_ClearIN();
|
||||||
|
|
|
@ -104,7 +104,7 @@
|
||||||
};
|
};
|
||||||
|
|
||||||
/** Enum for the possible parity modes on a CDC-ACM virtual serial port */
|
/** Enum for the possible parity modes on a CDC-ACM virtual serial port */
|
||||||
enum BootloaderCDC_CDC_LineCodeingParity_t
|
enum BootloaderCDC_CDC_LineCodingParity_t
|
||||||
{
|
{
|
||||||
Parity_None = 0, /**< No data parity checking */
|
Parity_None = 0, /**< No data parity checking */
|
||||||
Parity_Odd = 1, /**< Odd data parity checking */
|
Parity_Odd = 1, /**< Odd data parity checking */
|
||||||
|
|
|
@ -108,7 +108,7 @@ USB_Descriptor_Configuration_t ConfigurationDescriptor =
|
||||||
|
|
||||||
.Attributes = (ATTR_CAN_UPLOAD | ATTR_CAN_DOWNLOAD),
|
.Attributes = (ATTR_CAN_UPLOAD | ATTR_CAN_DOWNLOAD),
|
||||||
|
|
||||||
.DetatchTimeout = 0x0000,
|
.DetachTimeout = 0x0000,
|
||||||
.TransferSize = 0x0c00,
|
.TransferSize = 0x0c00,
|
||||||
|
|
||||||
.DFUSpecification = VERSION_BCD(01.01)
|
.DFUSpecification = VERSION_BCD(01.01)
|
||||||
|
|
|
@ -137,7 +137,7 @@
|
||||||
uint8_t Attributes; /**< DFU device attributes, a mask comprising of the
|
uint8_t Attributes; /**< DFU device attributes, a mask comprising of the
|
||||||
* ATTR_* macros listed in this source file
|
* ATTR_* macros listed in this source file
|
||||||
*/
|
*/
|
||||||
uint16_t DetatchTimeout; /**< Timeout in milliseconds between a USB_DETACH
|
uint16_t DetachTimeout; /**< Timeout in milliseconds between a USB_DETACH
|
||||||
* command being issued and the device detaching
|
* command being issued and the device detaching
|
||||||
* from the USB bus
|
* from the USB bus
|
||||||
*/
|
*/
|
||||||
|
|
|
@ -113,7 +113,7 @@
|
||||||
USB_Descriptor_Endpoint_t Endpoint; /**< Standard endpoint descriptor describing the audio endpoint */
|
USB_Descriptor_Endpoint_t Endpoint; /**< Standard endpoint descriptor describing the audio endpoint */
|
||||||
|
|
||||||
uint8_t Refresh; /**< Always set to zero */
|
uint8_t Refresh; /**< Always set to zero */
|
||||||
uint8_t SyncEndpointNumber; /**< Endpoint address to send synchronisation information to, if needed (zero otherwise) */
|
uint8_t SyncEndpointNumber; /**< Endpoint address to send synchronization information to, if needed (zero otherwise) */
|
||||||
} USB_Audio_StreamEndpoint_Std_t;
|
} USB_Audio_StreamEndpoint_Std_t;
|
||||||
|
|
||||||
/** Type define for an Audio class specific MIDI IN jack. This gives information to the host on a MIDI input, either
|
/** Type define for an Audio class specific MIDI IN jack. This gives information to the host on a MIDI input, either
|
||||||
|
|
|
@ -88,7 +88,7 @@
|
||||||
|
|
||||||
union
|
union
|
||||||
{
|
{
|
||||||
uint16_t EtherType; /**< Ethernet packet subprotocol type, for Ethernet V2 packets */
|
uint16_t EtherType; /**< Ethernet packet sub-protocol type, for Ethernet V2 packets */
|
||||||
uint16_t Length; /**< Ethernet frame length, for Ethernet V1 packets */
|
uint16_t Length; /**< Ethernet frame length, for Ethernet V1 packets */
|
||||||
};
|
};
|
||||||
} Ethernet_Frame_Header_t;
|
} Ethernet_Frame_Header_t;
|
||||||
|
|
|
@ -40,7 +40,7 @@
|
||||||
/** Processes an ICMP packet inside an Ethernet frame, and writes the appropriate response
|
/** 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.
|
* to the output Ethernet frame if the host is issuing a ICMP ECHO request.
|
||||||
*
|
*
|
||||||
* \param[in] FrameIN Pointer to the incomming Ethernet frame information structure
|
* \param[in] FrameIN Pointer to the incoming Ethernet frame information structure
|
||||||
* \param[in] InDataStart Pointer to the start of the incoming packet's ICMP header
|
* \param[in] InDataStart Pointer to the start of the incoming packet's ICMP header
|
||||||
* \param[out] OutDataStart Pointer to the start of the outgoing packet's ICMP header
|
* \param[out] OutDataStart Pointer to the start of the outgoing packet's ICMP header
|
||||||
*
|
*
|
||||||
|
|
|
@ -37,9 +37,9 @@
|
||||||
#include "IP.h"
|
#include "IP.h"
|
||||||
|
|
||||||
/** Processes an IP packet inside an Ethernet frame, and writes the appropriate response
|
/** 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.
|
* to the output Ethernet frame if one is created by a sub-protocol handler.
|
||||||
*
|
*
|
||||||
* \param[in] FrameIN Pointer to the incomming Ethernet frame information structure
|
* \param[in] FrameIN Pointer to the incoming Ethernet frame information structure
|
||||||
* \param[in] InDataStart Pointer to the start of the incoming packet's IP header
|
* \param[in] InDataStart Pointer to the start of the incoming packet's IP header
|
||||||
* \param[out] OutDataStart Pointer to the start of the outgoing packet's IP header
|
* \param[out] OutDataStart Pointer to the start of the outgoing packet's IP header
|
||||||
*
|
*
|
||||||
|
|
|
@ -38,7 +38,7 @@
|
||||||
#include "UDP.h"
|
#include "UDP.h"
|
||||||
|
|
||||||
/** Processes a UDP packet inside an Ethernet frame, and writes the appropriate response
|
/** 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.
|
* to the output Ethernet frame if a sub-protocol handler has created a response packet.
|
||||||
*
|
*
|
||||||
* \param[in] IPHeaderInStart Pointer to the start of the incoming packet's IP header
|
* \param[in] IPHeaderInStart Pointer to the start of the incoming packet's IP header
|
||||||
* \param[in] UDPHeaderInStart Pointer to the start of the incoming packet's UDP header
|
* \param[in] UDPHeaderInStart Pointer to the start of the incoming packet's UDP header
|
||||||
|
|
|
@ -31,7 +31,7 @@
|
||||||
/** \file
|
/** \file
|
||||||
*
|
*
|
||||||
* Simple webserver application for demonstrating the RNDIS demo and TCP/IP stack. This
|
* Simple webserver application for demonstrating the RNDIS demo and TCP/IP stack. This
|
||||||
* application will serve up a static HTTP webpage when requested by the host.
|
* application will serve up a static HTTP web page when requested by the host.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include "Webserver.h"
|
#include "Webserver.h"
|
||||||
|
|
|
@ -37,7 +37,7 @@
|
||||||
appear as a new SideShow device which can have gadgets loaded onto
|
appear as a new SideShow device which can have gadgets loaded onto
|
||||||
it.
|
it.
|
||||||
|
|
||||||
Note that while the incomming content is buffered in packet struct
|
Note that while the incoming content is buffered in packet struct
|
||||||
form, the data is not actually displayed. It is left to the user to
|
form, the data is not actually displayed. It is left to the user to
|
||||||
write sufficient code to read out the packed data for display to a
|
write sufficient code to read out the packed data for display to a
|
||||||
screen.
|
screen.
|
||||||
|
|
|
@ -274,7 +274,7 @@
|
||||||
USB_Descriptor_Endpoint_t Endpoint; /**< Standard endpoint descriptor describing the audio endpoint */
|
USB_Descriptor_Endpoint_t Endpoint; /**< Standard endpoint descriptor describing the audio endpoint */
|
||||||
|
|
||||||
uint8_t Refresh; /**< Always set to zero */
|
uint8_t Refresh; /**< Always set to zero */
|
||||||
uint8_t SyncEndpointNumber; /**< Endpoint address to send synchronisation information to, if needed (zero otherwise) */
|
uint8_t SyncEndpointNumber; /**< Endpoint address to send synchronization information to, if needed (zero otherwise) */
|
||||||
} USB_Audio_StreamEndpoint_Std_t;
|
} USB_Audio_StreamEndpoint_Std_t;
|
||||||
|
|
||||||
/** Type define for an Audio class specific extended endpoint descriptor. This contains extra information
|
/** Type define for an Audio class specific extended endpoint descriptor. This contains extra information
|
||||||
|
|
|
@ -274,7 +274,7 @@
|
||||||
USB_Descriptor_Endpoint_t Endpoint; /**< Standard endpoint descriptor describing the audio endpoint */
|
USB_Descriptor_Endpoint_t Endpoint; /**< Standard endpoint descriptor describing the audio endpoint */
|
||||||
|
|
||||||
uint8_t Refresh; /**< Always set to zero */
|
uint8_t Refresh; /**< Always set to zero */
|
||||||
uint8_t SyncEndpointNumber; /**< Endpoint address to send synchronisation information to, if needed (zero otherwise) */
|
uint8_t SyncEndpointNumber; /**< Endpoint address to send synchronization information to, if needed (zero otherwise) */
|
||||||
} USB_Audio_StreamEndpoint_Std_t;
|
} USB_Audio_StreamEndpoint_Std_t;
|
||||||
|
|
||||||
/** Type define for an Audio class specific extended endpoint descriptor. This contains extra information
|
/** Type define for an Audio class specific extended endpoint descriptor. This contains extra information
|
||||||
|
|
|
@ -113,7 +113,7 @@
|
||||||
USB_Descriptor_Endpoint_t Endpoint; /**< Standard endpoint descriptor describing the audio endpoint */
|
USB_Descriptor_Endpoint_t Endpoint; /**< Standard endpoint descriptor describing the audio endpoint */
|
||||||
|
|
||||||
uint8_t Refresh; /**< Always set to zero */
|
uint8_t Refresh; /**< Always set to zero */
|
||||||
uint8_t SyncEndpointNumber; /**< Endpoint address to send synchronisation information to, if needed (zero otherwise) */
|
uint8_t SyncEndpointNumber; /**< Endpoint address to send synchronization information to, if needed (zero otherwise) */
|
||||||
} USB_Audio_StreamEndpoint_Std_t;
|
} USB_Audio_StreamEndpoint_Std_t;
|
||||||
|
|
||||||
/** Type define for an Audio class specific MIDI IN jack. This gives information to the host on a MIDI input, either
|
/** Type define for an Audio class specific MIDI IN jack. This gives information to the host on a MIDI input, either
|
||||||
|
|
|
@ -84,7 +84,7 @@ SCSI_Request_Sense_Response_t SenseData =
|
||||||
* to the appropriate SCSI command handling routine if the issued command is supported by the device, else it returns
|
* to the appropriate SCSI command handling routine if the issued command is supported by the device, else it returns
|
||||||
* a command failure due to a ILLEGAL REQUEST.
|
* a command failure due to a ILLEGAL REQUEST.
|
||||||
*
|
*
|
||||||
* \return Boolean true if the command completed sucessfully, false otherwise
|
* \return Boolean true if the command completed successfully, false otherwise
|
||||||
*/
|
*/
|
||||||
bool SCSI_DecodeSCSICommand(void)
|
bool SCSI_DecodeSCSICommand(void)
|
||||||
{
|
{
|
||||||
|
|
|
@ -31,7 +31,7 @@
|
||||||
/** \file
|
/** \file
|
||||||
*
|
*
|
||||||
* Ethernet frame packet handling routines. This protocol handles the processing of raw Ethernet
|
* Ethernet frame packet handling routines. This protocol handles the processing of raw Ethernet
|
||||||
* frames sent and received, deferring the processing of subpacket protocols to the appropriate
|
* frames sent and received, deferring the processing of sub-packet protocols to the appropriate
|
||||||
* protocol handlers, such as DHCP or ARP.
|
* protocol handlers, such as DHCP or ARP.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
|
|
@ -97,7 +97,7 @@
|
||||||
|
|
||||||
union
|
union
|
||||||
{
|
{
|
||||||
uint16_t EtherType; /**< Ethernet packet subprotocol type, for Ethernet V2 packets */
|
uint16_t EtherType; /**< Ethernet packet sub-protocol type, for Ethernet V2 packets */
|
||||||
uint16_t Length; /**< Ethernet frame length, for Ethernet V1 packets */
|
uint16_t Length; /**< Ethernet frame length, for Ethernet V1 packets */
|
||||||
};
|
};
|
||||||
} Ethernet_Frame_Header_t;
|
} Ethernet_Frame_Header_t;
|
||||||
|
|
|
@ -37,7 +37,7 @@
|
||||||
#include "IP.h"
|
#include "IP.h"
|
||||||
|
|
||||||
/** Processes an IP packet inside an Ethernet frame, and writes the appropriate response
|
/** 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.
|
* to the output Ethernet frame if one is created by a sub-protocol handler.
|
||||||
*
|
*
|
||||||
* \param[in] InDataStart Pointer to the start of the incoming packet's IP header
|
* \param[in] InDataStart Pointer to the start of the incoming packet's IP header
|
||||||
* \param[out] OutDataStart Pointer to the start of the outgoing packet's IP header
|
* \param[out] OutDataStart Pointer to the start of the outgoing packet's IP header
|
||||||
|
|
|
@ -38,7 +38,7 @@
|
||||||
#include "UDP.h"
|
#include "UDP.h"
|
||||||
|
|
||||||
/** Processes a UDP packet inside an Ethernet frame, and writes the appropriate response
|
/** 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.
|
* to the output Ethernet frame if a sub-protocol handler has created a response packet.
|
||||||
*
|
*
|
||||||
* \param[in] IPHeaderInStart Pointer to the start of the incoming packet's IP header
|
* \param[in] IPHeaderInStart Pointer to the start of the incoming packet's IP header
|
||||||
* \param[in] UDPHeaderInStart Pointer to the start of the incoming packet's UDP header
|
* \param[in] UDPHeaderInStart Pointer to the start of the incoming packet's UDP header
|
||||||
|
|
|
@ -263,7 +263,7 @@ bool CALLBACK_HIDParser_FilterHIDReportItem(HID_ReportItem_t* CurrentItem)
|
||||||
|
|
||||||
/* Iterate through the item's collection path, until either the root collection node or a collection with the
|
/* Iterate through the item's collection path, until either the root collection node or a collection with the
|
||||||
* Joystick Usage is found - this prevents Mice, which use identical descriptors except for the Joystick usage
|
* Joystick Usage is found - this prevents Mice, which use identical descriptors except for the Joystick usage
|
||||||
* parent node, from being erronously treated as a joystick
|
* parent node, from being erroneously treated as a joystick
|
||||||
*/
|
*/
|
||||||
for (HID_CollectionPath_t* CurrPath = CurrentItem->CollectionPath; CurrPath != NULL; CurrPath = CurrPath->Parent)
|
for (HID_CollectionPath_t* CurrPath = CurrentItem->CollectionPath; CurrPath != NULL; CurrPath = CurrPath->Parent)
|
||||||
{
|
{
|
||||||
|
|
|
@ -145,7 +145,7 @@ int main(void)
|
||||||
SCSI_Inquiry_Response_t InquiryData;
|
SCSI_Inquiry_Response_t InquiryData;
|
||||||
if (MS_Host_GetInquiryData(&FlashDisk_MS_Interface, 0, &InquiryData))
|
if (MS_Host_GetInquiryData(&FlashDisk_MS_Interface, 0, &InquiryData))
|
||||||
{
|
{
|
||||||
printf("Error retreiving device Inquiry data.\r\n");
|
printf("Error retrieving device Inquiry data.\r\n");
|
||||||
LEDs_SetAllLEDs(LEDMASK_USB_ERROR);
|
LEDs_SetAllLEDs(LEDMASK_USB_ERROR);
|
||||||
USB_HostState = HOST_STATE_WaitForDeviceRemoval;
|
USB_HostState = HOST_STATE_WaitForDeviceRemoval;
|
||||||
break;
|
break;
|
||||||
|
|
|
@ -278,7 +278,7 @@ bool CALLBACK_HIDParser_FilterHIDReportItem(HID_ReportItem_t* CurrentItem)
|
||||||
|
|
||||||
/* Iterate through the item's collection path, until either the root collection node or a collection with the
|
/* Iterate through the item's collection path, until either the root collection node or a collection with the
|
||||||
* Mouse Usage is found - this prevents Joysticks, which use identical descriptors except for the Joystick usage
|
* Mouse Usage is found - this prevents Joysticks, which use identical descriptors except for the Joystick usage
|
||||||
* parent node, from being erronously treated as a mouse
|
* parent node, from being erroneously treated as a mouse
|
||||||
*/
|
*/
|
||||||
for (HID_CollectionPath_t* CurrPath = CurrentItem->CollectionPath; CurrPath != NULL; CurrPath = CurrPath->Parent)
|
for (HID_CollectionPath_t* CurrPath = CurrentItem->CollectionPath; CurrPath != NULL; CurrPath = CurrPath->Parent)
|
||||||
{
|
{
|
||||||
|
|
|
@ -50,7 +50,7 @@ uint8_t ProcessConfigurationDescriptor(void)
|
||||||
return ControlErrorDuringConfigRead;
|
return ControlErrorDuringConfigRead;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* The bluetooth USB transport addendium mandates that the data (not streaming voice) endpoints
|
/* The bluetooth USB transport addendum mandates that the data (not streaming voice) endpoints
|
||||||
be in the first interface descriptor (interface 0) */
|
be in the first interface descriptor (interface 0) */
|
||||||
USB_GetNextDescriptorOfType(&CurrConfigBytesRem, &CurrConfigLocation, DTYPE_Interface);
|
USB_GetNextDescriptorOfType(&CurrConfigBytesRem, &CurrConfigLocation, DTYPE_Interface);
|
||||||
|
|
||||||
|
|
|
@ -76,7 +76,7 @@ void Bluetooth_ProcessACLPackets(void)
|
||||||
Pipe_Freeze();
|
Pipe_Freeze();
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
BT_DEBUG("(ACL) >> Unknown Signalling Command 0x%02X", SignalCommandHeader.Code);
|
BT_DEBUG("(ACL) >> Unknown Signaling Command 0x%02X", SignalCommandHeader.Code);
|
||||||
|
|
||||||
Pipe_Discard_Stream(ACLPacketHeader.DataLength);
|
Pipe_Discard_Stream(ACLPacketHeader.DataLength);
|
||||||
Pipe_ClearIN();
|
Pipe_ClearIN();
|
||||||
|
|
|
@ -85,7 +85,7 @@ bool CALLBACK_HIDParser_FilterHIDReportItem(HID_ReportItem_t* CurrentItem)
|
||||||
|
|
||||||
/* Iterate through the item's collection path, until either the root collection node or a collection with the
|
/* Iterate through the item's collection path, until either the root collection node or a collection with the
|
||||||
* Joystick Usage is found - this prevents Mice, which use identical descriptors except for the Mouse usage
|
* Joystick Usage is found - this prevents Mice, which use identical descriptors except for the Mouse usage
|
||||||
* parent node, from being erronously treated as a joystick
|
* parent node, from being erroneously treated as a joystick
|
||||||
*/
|
*/
|
||||||
for (HID_CollectionPath_t* CurrPath = CurrentItem->CollectionPath; CurrPath != NULL; CurrPath = CurrPath->Parent)
|
for (HID_CollectionPath_t* CurrPath = CurrentItem->CollectionPath; CurrPath != NULL; CurrPath = CurrPath->Parent)
|
||||||
{
|
{
|
||||||
|
|
|
@ -237,7 +237,7 @@ static uint8_t MassStore_GetReturnedStatus(CommandStatusWrapper_t* SCSICommandSt
|
||||||
{
|
{
|
||||||
uint8_t ErrorCode = PIPE_RWSTREAM_NoError;
|
uint8_t ErrorCode = PIPE_RWSTREAM_NoError;
|
||||||
|
|
||||||
/* If an error in the command ocurred, abort */
|
/* If an error in the command occurred, abort */
|
||||||
if ((ErrorCode = MassStore_WaitForDataReceived()) != PIPE_RWSTREAM_NoError)
|
if ((ErrorCode = MassStore_WaitForDataReceived()) != PIPE_RWSTREAM_NoError)
|
||||||
return ErrorCode;
|
return ErrorCode;
|
||||||
|
|
||||||
|
|
|
@ -108,7 +108,7 @@
|
||||||
*/
|
*/
|
||||||
typedef struct
|
typedef struct
|
||||||
{
|
{
|
||||||
uint8_t ReponseCode;
|
uint8_t ResponseCode;
|
||||||
|
|
||||||
uint8_t SegmentNumber;
|
uint8_t SegmentNumber;
|
||||||
|
|
||||||
|
|
|
@ -249,7 +249,7 @@ void MassStorage_Task(void)
|
||||||
if (!(ErrorCode))
|
if (!(ErrorCode))
|
||||||
break;
|
break;
|
||||||
|
|
||||||
/* If an error othe than a logical command failure (indicating device busy) returned, abort */
|
/* If an error other than a logical command failure (indicating device busy) returned, abort */
|
||||||
if (ErrorCode != MASS_STORE_SCSI_COMMAND_FAILED)
|
if (ErrorCode != MASS_STORE_SCSI_COMMAND_FAILED)
|
||||||
{
|
{
|
||||||
ShowDiskReadError(PSTR("Test Unit Ready"), ErrorCode);
|
ShowDiskReadError(PSTR("Test Unit Ready"), ErrorCode);
|
||||||
|
@ -276,7 +276,7 @@ void MassStorage_Task(void)
|
||||||
/* Display the disk capacity in blocks * block size bytes */
|
/* Display the disk capacity in blocks * block size bytes */
|
||||||
printf_P(PSTR("%lu blocks of %lu bytes.\r\n"), DiskCapacity.Blocks, DiskCapacity.BlockSize);
|
printf_P(PSTR("%lu blocks of %lu bytes.\r\n"), DiskCapacity.Blocks, DiskCapacity.BlockSize);
|
||||||
|
|
||||||
/* Create a new buffer capabable of holding a single block from the device */
|
/* Create a new buffer capable of holding a single block from the device */
|
||||||
uint8_t BlockBuffer[DiskCapacity.BlockSize];
|
uint8_t BlockBuffer[DiskCapacity.BlockSize];
|
||||||
|
|
||||||
/* Read in the first 512 byte block from the device */
|
/* Read in the first 512 byte block from the device */
|
||||||
|
|
|
@ -85,7 +85,7 @@ bool CALLBACK_HIDParser_FilterHIDReportItem(HID_ReportItem_t* CurrentItem)
|
||||||
|
|
||||||
/* Iterate through the item's collection path, until either the root collection node or a collection with the
|
/* Iterate through the item's collection path, until either the root collection node or a collection with the
|
||||||
* Mouse Usage is found - this prevents Joysticks, which use identical descriptors except for the Joystick usage
|
* Mouse Usage is found - this prevents Joysticks, which use identical descriptors except for the Joystick usage
|
||||||
* parent node, from being erronously treated as a mouse
|
* parent node, from being erroneously treated as a mouse
|
||||||
*/
|
*/
|
||||||
for (HID_CollectionPath_t* CurrPath = CurrentItem->CollectionPath; CurrPath != NULL; CurrPath = CurrPath->Parent)
|
for (HID_CollectionPath_t* CurrPath = CurrentItem->CollectionPath; CurrPath != NULL; CurrPath = CurrPath->Parent)
|
||||||
{
|
{
|
||||||
|
|
|
@ -61,7 +61,7 @@
|
||||||
/* Public Interface - May be used in end-application: */
|
/* Public Interface - May be used in end-application: */
|
||||||
/* Macros: */
|
/* Macros: */
|
||||||
/** Button mask for the first button on the board. */
|
/** Button mask for the first button on the board. */
|
||||||
#define BUTTONS_BUTTON1 // TODO: Add mask for first board buton here
|
#define BUTTONS_BUTTON1 // TODO: Add mask for first board button here
|
||||||
|
|
||||||
/* Inline Functions: */
|
/* Inline Functions: */
|
||||||
#if !defined(__DOXYGEN__)
|
#if !defined(__DOXYGEN__)
|
||||||
|
|
|
@ -185,7 +185,7 @@
|
||||||
Dataflash_SelectChip(SelectedChipMask);
|
Dataflash_SelectChip(SelectedChipMask);
|
||||||
}
|
}
|
||||||
|
|
||||||
/** Spinloops while the currently selected dataflash is busy executing a command, such as a main
|
/** Spin-loops while the currently selected dataflash is busy executing a command, such as a main
|
||||||
* memory page program or main memory to buffer transfer.
|
* memory page program or main memory to buffer transfer.
|
||||||
*/
|
*/
|
||||||
static inline void Dataflash_WaitWhileBusy(void)
|
static inline void Dataflash_WaitWhileBusy(void)
|
||||||
|
|
|
@ -205,7 +205,7 @@
|
||||||
ADCSRA |= (1 << ADSC);
|
ADCSRA |= (1 << ADSC);
|
||||||
}
|
}
|
||||||
|
|
||||||
/** Performs a complete single reading from channel, including a polling spinloop to wait for the
|
/** Performs a complete single reading from channel, including a polling spin-loop to wait for the
|
||||||
* conversion to complete, and the returning of the converted value.
|
* conversion to complete, and the returning of the converted value.
|
||||||
*
|
*
|
||||||
* \param[in] MUXMask Mask comprising of an ADC channel number, reference mask and adjustment mask
|
* \param[in] MUXMask Mask comprising of an ADC channel number, reference mask and adjustment mask
|
||||||
|
|
|
@ -41,7 +41,7 @@
|
||||||
* - None
|
* - None
|
||||||
*
|
*
|
||||||
* \section Module Description
|
* \section Module Description
|
||||||
* Driver for the hardware SPI port avaliable on most AVR models. This module provides
|
* Driver for the hardware SPI port available on most AVR models. This module provides
|
||||||
* an easy to use driver for the setup of and transfer of data over the AVR's SPI port.
|
* an easy to use driver for the setup of and transfer of data over the AVR's SPI port.
|
||||||
*
|
*
|
||||||
* @{
|
* @{
|
||||||
|
|
|
@ -100,7 +100,7 @@
|
||||||
void Serial_TxString(const char *StringPtr) ATTR_NON_NULL_PTR_ARG(1);
|
void Serial_TxString(const char *StringPtr) ATTR_NON_NULL_PTR_ARG(1);
|
||||||
|
|
||||||
/* Inline Functions: */
|
/* Inline Functions: */
|
||||||
/** Initializes the USART, ready for serial data transmission and reception. This initialises the interface to
|
/** Initializes the USART, ready for serial data transmission and reception. This initializes the interface to
|
||||||
* standard 8-bit, no parity, 1 stop bit settings suitable for most applications.
|
* standard 8-bit, no parity, 1 stop bit settings suitable for most applications.
|
||||||
*
|
*
|
||||||
* \param[in] BaudRate Serial baud rate, in bits per second
|
* \param[in] BaudRate Serial baud rate, in bits per second
|
||||||
|
|
|
@ -40,7 +40,7 @@
|
||||||
* USB mode only. User applications can use this class driver instead of implementing the Audio class manually via
|
* USB mode only. User applications can use this class driver instead of implementing the Audio class manually via
|
||||||
* the low-level LUFA APIs.
|
* the low-level LUFA APIs.
|
||||||
*
|
*
|
||||||
* This module is designed to simplify the user code by exposing only the required interface needed to interace with
|
* This module is designed to simplify the user code by exposing only the required interface needed to interface with
|
||||||
* Hosts or Devices using the USB Audio Class.
|
* Hosts or Devices using the USB Audio Class.
|
||||||
*
|
*
|
||||||
* @{
|
* @{
|
||||||
|
|
|
@ -41,7 +41,7 @@
|
||||||
* Ports, for both Device and Host USB modes. User applications can use this class driver instead of implementing the
|
* Ports, for both Device and Host USB modes. User applications can use this class driver instead of implementing the
|
||||||
* CDC class manually via the low-level LUFA APIs.
|
* CDC class manually via the low-level LUFA APIs.
|
||||||
*
|
*
|
||||||
* This module is designed to simplify the user code by exposing only the required interface needed to interace with
|
* This module is designed to simplify the user code by exposing only the required interface needed to interface with
|
||||||
* Hosts or Devices using the USB CDC Class.
|
* Hosts or Devices using the USB CDC Class.
|
||||||
*
|
*
|
||||||
* @{
|
* @{
|
||||||
|
|
|
@ -346,7 +346,7 @@
|
||||||
USB_Descriptor_Endpoint_t Endpoint; /**< Standard endpoint descriptor describing the audio endpoint */
|
USB_Descriptor_Endpoint_t Endpoint; /**< Standard endpoint descriptor describing the audio endpoint */
|
||||||
|
|
||||||
uint8_t Refresh; /**< Always set to zero */
|
uint8_t Refresh; /**< Always set to zero */
|
||||||
uint8_t SyncEndpointNumber; /**< Endpoint address to send synchronisation information to, if needed (zero otherwise) */
|
uint8_t SyncEndpointNumber; /**< Endpoint address to send synchronization information to, if needed (zero otherwise) */
|
||||||
} USB_Audio_StreamEndpoint_Std_t;
|
} USB_Audio_StreamEndpoint_Std_t;
|
||||||
|
|
||||||
/** Type define for an Audio class specific extended endpoint descriptor. This contains extra information
|
/** Type define for an Audio class specific extended endpoint descriptor. This contains extra information
|
||||||
|
|
|
@ -109,7 +109,7 @@
|
||||||
/** SCSI Command Code for a MODE SENSE (10) command. */
|
/** SCSI Command Code for a MODE SENSE (10) command. */
|
||||||
#define SCSI_CMD_MODE_SENSE_10 0x5A
|
#define SCSI_CMD_MODE_SENSE_10 0x5A
|
||||||
|
|
||||||
/** SCSI Sense Code to indicate no error has ocurred. */
|
/** SCSI Sense Code to indicate no error has occurred. */
|
||||||
#define SCSI_SENSE_KEY_GOOD 0x00
|
#define SCSI_SENSE_KEY_GOOD 0x00
|
||||||
|
|
||||||
/** SCSI Sense Code to indicate that the device has recovered from an error. */
|
/** SCSI Sense Code to indicate that the device has recovered from an error. */
|
||||||
|
@ -121,7 +121,7 @@
|
||||||
/** SCSI Sense Code to indicate an error whilst accessing the medium. */
|
/** SCSI Sense Code to indicate an error whilst accessing the medium. */
|
||||||
#define SCSI_SENSE_KEY_MEDIUM_ERROR 0x03
|
#define SCSI_SENSE_KEY_MEDIUM_ERROR 0x03
|
||||||
|
|
||||||
/** SCSI Sense Code to indicate a hardware has ocurred. */
|
/** SCSI Sense Code to indicate a hardware has occurred. */
|
||||||
#define SCSI_SENSE_KEY_HARDWARE_ERROR 0x04
|
#define SCSI_SENSE_KEY_HARDWARE_ERROR 0x04
|
||||||
|
|
||||||
/** SCSI Sense Code to indicate that an illegal request has been issued. */
|
/** SCSI Sense Code to indicate that an illegal request has been issued. */
|
||||||
|
@ -138,7 +138,7 @@
|
||||||
/** SCSI Sense Code to indicate an error while trying to write to a write-once medium. */
|
/** SCSI Sense Code to indicate an error while trying to write to a write-once medium. */
|
||||||
#define SCSI_SENSE_KEY_BLANK_CHECK 0x08
|
#define SCSI_SENSE_KEY_BLANK_CHECK 0x08
|
||||||
|
|
||||||
/** SCSI Sense Code to indicate a vendor specific error has ocurred. */
|
/** SCSI Sense Code to indicate a vendor specific error has occurred. */
|
||||||
#define SCSI_SENSE_KEY_VENDOR_SPECIFIC 0x09
|
#define SCSI_SENSE_KEY_VENDOR_SPECIFIC 0x09
|
||||||
|
|
||||||
/** SCSI Sense Code to indicate that an EXTENDED COPY command has aborted due to an error. */
|
/** SCSI Sense Code to indicate that an EXTENDED COPY command has aborted due to an error. */
|
||||||
|
@ -162,7 +162,7 @@
|
||||||
/** SCSI Additional Sense Code to indicate an invalid field was encountered while processing the issued command. */
|
/** SCSI Additional Sense Code to indicate an invalid field was encountered while processing the issued command. */
|
||||||
#define SCSI_ASENSE_INVALID_FIELD_IN_CDB 0x24
|
#define SCSI_ASENSE_INVALID_FIELD_IN_CDB 0x24
|
||||||
|
|
||||||
/** SCSI Additional Sense Code to indicate that an attemp to write to a protected area was made. */
|
/** SCSI Additional Sense Code to indicate that an attempt to write to a protected area was made. */
|
||||||
#define SCSI_ASENSE_WRITE_PROTECTED 0x27
|
#define SCSI_ASENSE_WRITE_PROTECTED 0x27
|
||||||
|
|
||||||
/** SCSI Additional Sense Code to indicate an error whilst formatting the device medium. */
|
/** SCSI Additional Sense Code to indicate an error whilst formatting the device medium. */
|
||||||
|
|
|
@ -69,10 +69,10 @@
|
||||||
* structure controls
|
* structure controls
|
||||||
*/
|
*/
|
||||||
|
|
||||||
uint8_t DataINEndpointNumber; /**< Endpoint number of the incomming Audio Streaming data, if available
|
uint8_t DataINEndpointNumber; /**< Endpoint number of the incoming Audio Streaming data, if available
|
||||||
* (zero if unused)
|
* (zero if unused)
|
||||||
*/
|
*/
|
||||||
uint16_t DataINEndpointSize; /**< Size in bytes of the incomming Audio Streaming data endpoint, if available
|
uint16_t DataINEndpointSize; /**< Size in bytes of the incoming Audio Streaming data endpoint, if available
|
||||||
* (zero if unused)
|
* (zero if unused)
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
@ -102,11 +102,11 @@
|
||||||
*
|
*
|
||||||
* \param[in,out] AudioInterfaceInfo Pointer to a structure containing an Audio Class configuration and state
|
* \param[in,out] AudioInterfaceInfo Pointer to a structure containing an Audio Class configuration and state
|
||||||
*
|
*
|
||||||
* \return Boolean true if the endpoints were sucessfully configured, false otherwise
|
* \return Boolean true if the endpoints were successfully configured, false otherwise
|
||||||
*/
|
*/
|
||||||
bool Audio_Device_ConfigureEndpoints(USB_ClassInfo_Audio_Device_t* const AudioInterfaceInfo) ATTR_NON_NULL_PTR_ARG(1);
|
bool Audio_Device_ConfigureEndpoints(USB_ClassInfo_Audio_Device_t* const AudioInterfaceInfo) ATTR_NON_NULL_PTR_ARG(1);
|
||||||
|
|
||||||
/** Processes incomming control requests from the host, that are directed to the given Audio class interface. This should be
|
/** Processes incoming control requests from the host, that are directed to the given Audio class interface. This should be
|
||||||
* linked to the library \ref EVENT_USB_Device_UnhandledControlRequest() event.
|
* linked to the library \ref EVENT_USB_Device_UnhandledControlRequest() event.
|
||||||
*
|
*
|
||||||
* \param[in,out] AudioInterfaceInfo Pointer to a structure containing an Audio Class configuration and state
|
* \param[in,out] AudioInterfaceInfo Pointer to a structure containing an Audio Class configuration and state
|
||||||
|
@ -141,7 +141,7 @@
|
||||||
/* Inline Functions: */
|
/* Inline Functions: */
|
||||||
/** Reads the next 8-bit audio sample from the current audio interface.
|
/** Reads the next 8-bit audio sample from the current audio interface.
|
||||||
*
|
*
|
||||||
* \note This should be preceeded immediately by a call to the USB_Audio_IsSampleReceived() function to ensure that
|
* \note This should be preceded immediately by a call to the USB_Audio_IsSampleReceived() function to ensure that
|
||||||
* the correct endpoint is selected and ready for data.
|
* the correct endpoint is selected and ready for data.
|
||||||
*
|
*
|
||||||
* \param[in,out] AudioInterfaceInfo Pointer to a structure containing an Audio Class configuration and state
|
* \param[in,out] AudioInterfaceInfo Pointer to a structure containing an Audio Class configuration and state
|
||||||
|
@ -163,7 +163,7 @@
|
||||||
|
|
||||||
/** Reads the next 16-bit audio sample from the current audio interface.
|
/** Reads the next 16-bit audio sample from the current audio interface.
|
||||||
*
|
*
|
||||||
* \note This should be preceeded immediately by a call to the USB_Audio_IsSampleReceived() function to ensure that
|
* \note This should be preceded immediately by a call to the USB_Audio_IsSampleReceived() function to ensure that
|
||||||
* the correct endpoint is selected and ready for data.
|
* the correct endpoint is selected and ready for data.
|
||||||
*
|
*
|
||||||
* \param[in,out] AudioInterfaceInfo Pointer to a structure containing an Audio Class configuration and state
|
* \param[in,out] AudioInterfaceInfo Pointer to a structure containing an Audio Class configuration and state
|
||||||
|
@ -185,7 +185,7 @@
|
||||||
|
|
||||||
/** Reads the next 24-bit audio sample from the current audio interface.
|
/** Reads the next 24-bit audio sample from the current audio interface.
|
||||||
*
|
*
|
||||||
* \note This should be preceeded immediately by a call to the USB_Audio_IsSampleReceived() function to ensure that
|
* \note This should be preceded immediately by a call to the USB_Audio_IsSampleReceived() function to ensure that
|
||||||
* the correct endpoint is selected and ready for data.
|
* the correct endpoint is selected and ready for data.
|
||||||
*
|
*
|
||||||
* \param[in,out] AudioInterfaceInfo Pointer to a structure containing an Audio Class configuration and state
|
* \param[in,out] AudioInterfaceInfo Pointer to a structure containing an Audio Class configuration and state
|
||||||
|
@ -206,7 +206,7 @@
|
||||||
|
|
||||||
/** Writes the next 8-bit audio sample to the current audio interface.
|
/** Writes the next 8-bit audio sample to the current audio interface.
|
||||||
*
|
*
|
||||||
* \note This should be preceeded immediately by a call to the USB_Audio_IsReadyForNextSample() function to ensure that
|
* \note This should be preceded immediately by a call to the USB_Audio_IsReadyForNextSample() function to ensure that
|
||||||
* the correct endpoint is selected and ready for data.
|
* the correct endpoint is selected and ready for data.
|
||||||
*
|
*
|
||||||
* \param[in,out] AudioInterfaceInfo Pointer to a structure containing an Audio Class configuration and state
|
* \param[in,out] AudioInterfaceInfo Pointer to a structure containing an Audio Class configuration and state
|
||||||
|
@ -225,7 +225,7 @@
|
||||||
|
|
||||||
/** Writes the next 16-bit audio sample to the current audio interface.
|
/** Writes the next 16-bit audio sample to the current audio interface.
|
||||||
*
|
*
|
||||||
* \note This should be preceeded immediately by a call to the USB_Audio_IsReadyForNextSample() function to ensure that
|
* \note This should be preceded immediately by a call to the USB_Audio_IsReadyForNextSample() function to ensure that
|
||||||
* the correct endpoint is selected and ready for data.
|
* the correct endpoint is selected and ready for data.
|
||||||
*
|
*
|
||||||
* \param[in,out] AudioInterfaceInfo Pointer to a structure containing an Audio Class configuration and state
|
* \param[in,out] AudioInterfaceInfo Pointer to a structure containing an Audio Class configuration and state
|
||||||
|
@ -244,7 +244,7 @@
|
||||||
|
|
||||||
/** Writes the next 24-bit audio sample to the current audio interface.
|
/** Writes the next 24-bit audio sample to the current audio interface.
|
||||||
*
|
*
|
||||||
* \note This should be preceeded immediately by a call to the USB_Audio_IsReadyForNextSample() function to ensure that
|
* \note This should be preceded immediately by a call to the USB_Audio_IsReadyForNextSample() function to ensure that
|
||||||
* the correct endpoint is selected and ready for data.
|
* the correct endpoint is selected and ready for data.
|
||||||
*
|
*
|
||||||
* \param[in,out] AudioInterfaceInfo Pointer to a structure containing an Audio Class configuration and state
|
* \param[in,out] AudioInterfaceInfo Pointer to a structure containing an Audio Class configuration and state
|
||||||
|
|
|
@ -116,11 +116,11 @@
|
||||||
*
|
*
|
||||||
* \param[in,out] CDCInterfaceInfo Pointer to a structure containing a CDC Class configuration and state
|
* \param[in,out] CDCInterfaceInfo Pointer to a structure containing a CDC Class configuration and state
|
||||||
*
|
*
|
||||||
* \return Boolean true if the endpoints were sucessfully configured, false otherwise
|
* \return Boolean true if the endpoints were successfully configured, false otherwise
|
||||||
*/
|
*/
|
||||||
bool CDC_Device_ConfigureEndpoints(USB_ClassInfo_CDC_Device_t* const CDCInterfaceInfo) ATTR_NON_NULL_PTR_ARG(1);
|
bool CDC_Device_ConfigureEndpoints(USB_ClassInfo_CDC_Device_t* const CDCInterfaceInfo) ATTR_NON_NULL_PTR_ARG(1);
|
||||||
|
|
||||||
/** Processes incomming control requests from the host, that are directed to the given CDC class interface. This should be
|
/** Processes incoming control requests from the host, that are directed to the given CDC class interface. This should be
|
||||||
* linked to the library \ref EVENT_USB_Device_UnhandledControlRequest() event.
|
* linked to the library \ref EVENT_USB_Device_UnhandledControlRequest() event.
|
||||||
*
|
*
|
||||||
* \param[in,out] CDCInterfaceInfo Pointer to a structure containing a CDC Class configuration and state
|
* \param[in,out] CDCInterfaceInfo Pointer to a structure containing a CDC Class configuration and state
|
||||||
|
@ -201,7 +201,7 @@
|
||||||
uint8_t CDC_Device_Flush(USB_ClassInfo_CDC_Device_t* const CDCInterfaceInfo) ATTR_NON_NULL_PTR_ARG(1);
|
uint8_t CDC_Device_Flush(USB_ClassInfo_CDC_Device_t* const CDCInterfaceInfo) ATTR_NON_NULL_PTR_ARG(1);
|
||||||
|
|
||||||
/** Sends a Serial Control Line State Change notification to the host. This should be called when the virtual serial
|
/** Sends a Serial Control Line State Change notification to the host. This should be called when the virtual serial
|
||||||
* control lines (DCD, DSR, etc.) have changed states, or to give BREAK notfications to the host. Line states persist
|
* control lines (DCD, DSR, etc.) have changed states, or to give BREAK notifications to the host. Line states persist
|
||||||
* until they are cleared via a second notification. This should be called each time the CDC class driver's
|
* until they are cleared via a second notification. This should be called each time the CDC class driver's
|
||||||
* ControlLineStates.DeviceToHost value is updated to push the new states to the USB host.
|
* ControlLineStates.DeviceToHost value is updated to push the new states to the USB host.
|
||||||
*
|
*
|
||||||
|
|
|
@ -61,7 +61,7 @@
|
||||||
* within the user application, and passed to each of the HID class driver functions as the
|
* within the user application, and passed to each of the HID class driver functions as the
|
||||||
* HIDInterfaceInfo parameter. This stores each HID interface's configuration and state information.
|
* HIDInterfaceInfo parameter. This stores each HID interface's configuration and state information.
|
||||||
*
|
*
|
||||||
* \note Due to technical limitations, the HID device class driver does not utilize a seperate OUT
|
* \note Due to technical limitations, the HID device class driver does not utilize a separate OUT
|
||||||
* endpoint for host->device communications. Instead, the host->device data (if any) is sent to
|
* endpoint for host->device communications. Instead, the host->device data (if any) is sent to
|
||||||
* the device via the control endpoint.
|
* the device via the control endpoint.
|
||||||
*/
|
*/
|
||||||
|
@ -112,11 +112,11 @@
|
||||||
*
|
*
|
||||||
* \param[in,out] HIDInterfaceInfo Pointer to a structure containing a HID Class configuration and state
|
* \param[in,out] HIDInterfaceInfo Pointer to a structure containing a HID Class configuration and state
|
||||||
*
|
*
|
||||||
* \return Boolean true if the endpoints were sucessfully configured, false otherwise
|
* \return Boolean true if the endpoints were successfully configured, false otherwise
|
||||||
*/
|
*/
|
||||||
bool HID_Device_ConfigureEndpoints(USB_ClassInfo_HID_Device_t* HIDInterfaceInfo) ATTR_NON_NULL_PTR_ARG(1);
|
bool HID_Device_ConfigureEndpoints(USB_ClassInfo_HID_Device_t* HIDInterfaceInfo) ATTR_NON_NULL_PTR_ARG(1);
|
||||||
|
|
||||||
/** Processes incomming control requests from the host, that are directed to the given HID class interface. This should be
|
/** Processes incoming control requests from the host, that are directed to the given HID class interface. This should be
|
||||||
* linked to the library \ref EVENT_USB_Device_UnhandledControlRequest() event.
|
* linked to the library \ref EVENT_USB_Device_UnhandledControlRequest() event.
|
||||||
*
|
*
|
||||||
* \param[in,out] HIDInterfaceInfo Pointer to a structure containing a HID Class configuration and state
|
* \param[in,out] HIDInterfaceInfo Pointer to a structure containing a HID Class configuration and state
|
||||||
|
|
|
@ -68,8 +68,8 @@
|
||||||
{
|
{
|
||||||
uint8_t StreamingInterfaceNumber; /**< Index of the Audio Streaming interface within the device this structure controls */
|
uint8_t StreamingInterfaceNumber; /**< Index of the Audio Streaming interface within the device this structure controls */
|
||||||
|
|
||||||
uint8_t DataINEndpointNumber; /**< Endpoint number of the incomming MIDI data, if available (zero if unused) */
|
uint8_t DataINEndpointNumber; /**< Endpoint number of the incoming MIDI data, if available (zero if unused) */
|
||||||
uint16_t DataINEndpointSize; /**< Size in bytes of the incomming MIDI data endpoint, if available (zero if unused) */
|
uint16_t DataINEndpointSize; /**< Size in bytes of the incoming MIDI data endpoint, if available (zero if unused) */
|
||||||
bool DataINEndpointDoubleBank; /** Indicates if the MIDI interface's IN data endpoint should use double banking */
|
bool DataINEndpointDoubleBank; /** Indicates if the MIDI interface's IN data endpoint should use double banking */
|
||||||
|
|
||||||
uint8_t DataOUTEndpointNumber; /**< Endpoint number of the outgoing MIDI data, if available (zero if unused) */
|
uint8_t DataOUTEndpointNumber; /**< Endpoint number of the outgoing MIDI data, if available (zero if unused) */
|
||||||
|
@ -93,11 +93,11 @@
|
||||||
*
|
*
|
||||||
* \param[in,out] MIDIInterfaceInfo Pointer to a structure containing a MIDI Class configuration and state
|
* \param[in,out] MIDIInterfaceInfo Pointer to a structure containing a MIDI Class configuration and state
|
||||||
*
|
*
|
||||||
* \return Boolean true if the endpoints were sucessfully configured, false otherwise
|
* \return Boolean true if the endpoints were successfully configured, false otherwise
|
||||||
*/
|
*/
|
||||||
bool MIDI_Device_ConfigureEndpoints(USB_ClassInfo_MIDI_Device_t* const MIDIInterfaceInfo) ATTR_NON_NULL_PTR_ARG(1);
|
bool MIDI_Device_ConfigureEndpoints(USB_ClassInfo_MIDI_Device_t* const MIDIInterfaceInfo) ATTR_NON_NULL_PTR_ARG(1);
|
||||||
|
|
||||||
/** Processes incomming control requests from the host, that are directed to the given MIDI class interface. This should be
|
/** Processes incoming control requests from the host, that are directed to the given MIDI class interface. This should be
|
||||||
* linked to the library \ref EVENT_USB_Device_UnhandledControlRequest() event.
|
* linked to the library \ref EVENT_USB_Device_UnhandledControlRequest() event.
|
||||||
*
|
*
|
||||||
* \param[in,out] MIDIInterfaceInfo Pointer to a structure containing a MIDI Class configuration and state
|
* \param[in,out] MIDIInterfaceInfo Pointer to a structure containing a MIDI Class configuration and state
|
||||||
|
|
|
@ -102,11 +102,11 @@
|
||||||
*
|
*
|
||||||
* \param[in,out] MSInterfaceInfo Pointer to a structure containing a Mass Storage Class configuration and state
|
* \param[in,out] MSInterfaceInfo Pointer to a structure containing a Mass Storage Class configuration and state
|
||||||
*
|
*
|
||||||
* \return Boolean true if the endpoints were sucessfully configured, false otherwise
|
* \return Boolean true if the endpoints were successfully configured, false otherwise
|
||||||
*/
|
*/
|
||||||
bool MS_Device_ConfigureEndpoints(USB_ClassInfo_MS_Device_t* const MSInterfaceInfo) ATTR_NON_NULL_PTR_ARG(1);
|
bool MS_Device_ConfigureEndpoints(USB_ClassInfo_MS_Device_t* const MSInterfaceInfo) ATTR_NON_NULL_PTR_ARG(1);
|
||||||
|
|
||||||
/** Processes incomming control requests from the host, that are directed to the given Mass Storage class interface. This should be
|
/** Processes incoming control requests from the host, that are directed to the given Mass Storage class interface. This should be
|
||||||
* linked to the library \ref EVENT_USB_Device_UnhandledControlRequest() event.
|
* linked to the library \ref EVENT_USB_Device_UnhandledControlRequest() event.
|
||||||
*
|
*
|
||||||
* \param[in,out] MSInterfaceInfo Pointer to a structure containing a Mass Storage Class configuration and state
|
* \param[in,out] MSInterfaceInfo Pointer to a structure containing a Mass Storage Class configuration and state
|
||||||
|
|
|
@ -111,11 +111,11 @@
|
||||||
*
|
*
|
||||||
* \param[in,out] RNDISInterfaceInfo Pointer to a structure containing a RNDIS Class configuration and state
|
* \param[in,out] RNDISInterfaceInfo Pointer to a structure containing a RNDIS Class configuration and state
|
||||||
*
|
*
|
||||||
* \return Boolean true if the endpoints were sucessfully configured, false otherwise
|
* \return Boolean true if the endpoints were successfully configured, false otherwise
|
||||||
*/
|
*/
|
||||||
bool RNDIS_Device_ConfigureEndpoints(USB_ClassInfo_RNDIS_Device_t* const RNDISInterfaceInfo) ATTR_NON_NULL_PTR_ARG(1);
|
bool RNDIS_Device_ConfigureEndpoints(USB_ClassInfo_RNDIS_Device_t* const RNDISInterfaceInfo) ATTR_NON_NULL_PTR_ARG(1);
|
||||||
|
|
||||||
/** Processes incomming control requests from the host, that are directed to the given RNDIS class interface. This should be
|
/** Processes incoming control requests from the host, that are directed to the given RNDIS class interface. This should be
|
||||||
* linked to the library \ref EVENT_USB_Device_UnhandledControlRequest() event.
|
* linked to the library \ref EVENT_USB_Device_UnhandledControlRequest() event.
|
||||||
*
|
*
|
||||||
* \param[in,out] RNDISInterfaceInfo Pointer to a structure containing a RNDIS Class configuration and state
|
* \param[in,out] RNDISInterfaceInfo Pointer to a structure containing a RNDIS Class configuration and state
|
||||||
|
|
|
@ -42,7 +42,7 @@
|
||||||
* and Host USB modes. User applications can use this class driver instead of implementing the HID class manually
|
* and Host USB modes. User applications can use this class driver instead of implementing the HID class manually
|
||||||
* via the low-level LUFA APIs.
|
* via the low-level LUFA APIs.
|
||||||
*
|
*
|
||||||
* This module is designed to simplify the user code by exposing only the required interface needed to interace with
|
* This module is designed to simplify the user code by exposing only the required interface needed to interface with
|
||||||
* Hosts or Devices using the USB HID Class.
|
* Hosts or Devices using the USB HID Class.
|
||||||
*
|
*
|
||||||
* @{
|
* @{
|
||||||
|
|
|
@ -105,10 +105,10 @@
|
||||||
bool SupportsBootProtocol; /**< Indicates if the current interface instance supports the HID Boot
|
bool SupportsBootProtocol; /**< Indicates if the current interface instance supports the HID Boot
|
||||||
* Protocol when enabled via \ref HID_Host_SetBootProtocol()
|
* Protocol when enabled via \ref HID_Host_SetBootProtocol()
|
||||||
*/
|
*/
|
||||||
bool DeviceUsesOUTPipe; /**< Indicates if the current interface instance uses a seperate OUT data pipe for
|
bool DeviceUsesOUTPipe; /**< Indicates if the current interface instance uses a separate OUT data pipe for
|
||||||
* OUT reports, or if OUT reports are sent via the control pipe instead.
|
* OUT reports, or if OUT reports are sent via the control pipe instead.
|
||||||
*/
|
*/
|
||||||
bool UsingBootProtocol; /**< Indicates that the interface is currently initialised in Boot Protocol mode */
|
bool UsingBootProtocol; /**< Indicates that the interface is currently initialized in Boot Protocol mode */
|
||||||
uint16_t HIDReportSize; /**< Size in bytes of the HID report descriptor in the device */
|
uint16_t HIDReportSize; /**< Size in bytes of the HID report descriptor in the device */
|
||||||
|
|
||||||
uint8_t LargestReportSize; /**< Largest report the device will send, in bytes */
|
uint8_t LargestReportSize; /**< Largest report the device will send, in bytes */
|
||||||
|
@ -159,7 +159,7 @@
|
||||||
|
|
||||||
/** Receives a HID IN report from the attached HID device, when a report has been received on the HID IN Data pipe.
|
/** Receives a HID IN report from the attached HID device, when a report has been received on the HID IN Data pipe.
|
||||||
*
|
*
|
||||||
* \note The destination buffer should be large enough to accomodate the largest report that the attached device
|
* \note The destination buffer should be large enough to accommodate the largest report that the attached device
|
||||||
* can generate.
|
* can generate.
|
||||||
*
|
*
|
||||||
* \param[in,out] HIDInterfaceInfo Pointer to a structure containing a HID Class host configuration and state
|
* \param[in,out] HIDInterfaceInfo Pointer to a structure containing a HID Class host configuration and state
|
||||||
|
|
|
@ -86,7 +86,7 @@
|
||||||
uint16_t DataINPipeSize; /**< Size in bytes of the Mass Storage interface's IN data pipe */
|
uint16_t DataINPipeSize; /**< Size in bytes of the Mass Storage interface's IN data pipe */
|
||||||
uint16_t DataOUTPipeSize; /**< Size in bytes of the Mass Storage interface's OUT data pipe */
|
uint16_t DataOUTPipeSize; /**< Size in bytes of the Mass Storage interface's OUT data pipe */
|
||||||
|
|
||||||
uint32_t TransactionTag; /**< Current transaction tag for data synchronising of packets */
|
uint32_t TransactionTag; /**< Current transaction tag for data synchronizing of packets */
|
||||||
} State; /**< State data for the USB class interface within the device. All elements in this section
|
} State; /**< State data for the USB class interface within the device. All elements in this section
|
||||||
* <b>may</b> be set to initial values, but may also be ignored to default to sane values when
|
* <b>may</b> be set to initial values, but may also be ignored to default to sane values when
|
||||||
* the interface is enumerated.
|
* the interface is enumerated.
|
||||||
|
|
|
@ -167,7 +167,7 @@
|
||||||
|
|
||||||
/** Retrieves the attached printer device's ID string, formatted according to IEEE 1284. This string is sent as a
|
/** Retrieves the attached printer device's ID string, formatted according to IEEE 1284. This string is sent as a
|
||||||
* Unicode string from the device and is automatically converted to an ASCII encoded C string by this function, thus
|
* Unicode string from the device and is automatically converted to an ASCII encoded C string by this function, thus
|
||||||
* the maximum reportable string length is two less than the size given (to accomodate the Unicode string length
|
* the maximum reportable string length is two less than the size given (to accommodate the Unicode string length
|
||||||
* bytes which are removed).
|
* bytes which are removed).
|
||||||
*
|
*
|
||||||
* This string, when supported, contains the model, manufacturer and acceptable printer languages for the attached device.
|
* This string, when supported, contains the model, manufacturer and acceptable printer languages for the attached device.
|
||||||
|
|
|
@ -38,10 +38,10 @@
|
||||||
*
|
*
|
||||||
* \section Module Description
|
* \section Module Description
|
||||||
* MIDI Class Driver module. This module contains an internal implementation of the USB MIDI Class, for both Device
|
* MIDI Class Driver module. This module contains an internal implementation of the USB MIDI Class, for both Device
|
||||||
* and Host USB modes. User applications can use this class driver instead of implementing the MIDI class manuall
|
* and Host USB modes. User applications can use this class driver instead of implementing the MIDI class manually
|
||||||
* via the low-level LUFA APIs.
|
* via the low-level LUFA APIs.
|
||||||
*
|
*
|
||||||
* This module is designed to simplify the user code by exposing only the required interface needed to interace with
|
* This module is designed to simplify the user code by exposing only the required interface needed to interface with
|
||||||
* Hosts or Devices using the USB MIDI Class.
|
* Hosts or Devices using the USB MIDI Class.
|
||||||
*
|
*
|
||||||
* \note The USB MIDI class is actually a special case of the regular Audio class, thus this module depends on
|
* \note The USB MIDI class is actually a special case of the regular Audio class, thus this module depends on
|
||||||
|
|
|
@ -41,7 +41,7 @@
|
||||||
* Device and Host USB modes. User applications can use this class driver instead of implementing the Mass Storage class
|
* Device and Host USB modes. User applications can use this class driver instead of implementing the Mass Storage class
|
||||||
* manually via the low-level LUFA APIs.
|
* manually via the low-level LUFA APIs.
|
||||||
*
|
*
|
||||||
* This module is designed to simplify the user code by exposing only the required interface needed to interace with
|
* This module is designed to simplify the user code by exposing only the required interface needed to interface with
|
||||||
* Hosts or Devices using the USB Mass Storage Class.
|
* Hosts or Devices using the USB Mass Storage Class.
|
||||||
*
|
*
|
||||||
* @{
|
* @{
|
||||||
|
|
|
@ -42,7 +42,7 @@
|
||||||
* than high level raster or text functions. User applications can use this class driver instead of implementing the Printer
|
* than high level raster or text functions. User applications can use this class driver instead of implementing the Printer
|
||||||
* class manually via the low-level LUFA APIs.
|
* class manually via the low-level LUFA APIs.
|
||||||
*
|
*
|
||||||
* This module is designed to simplify the user code by exposing only the required interface needed to interace with
|
* This module is designed to simplify the user code by exposing only the required interface needed to interface with
|
||||||
* Devices using the USB Printer Class.
|
* Devices using the USB Printer Class.
|
||||||
*
|
*
|
||||||
* @{
|
* @{
|
||||||
|
|
|
@ -40,7 +40,7 @@
|
||||||
* Class, for Device USB mode only. User applications can use this class driver instead of implementing the RNDIS
|
* Class, for Device USB mode only. User applications can use this class driver instead of implementing the RNDIS
|
||||||
* class manually via the low-level LUFA APIs.
|
* class manually via the low-level LUFA APIs.
|
||||||
*
|
*
|
||||||
* This module is designed to simplify the user code by exposing only the required interface needed to interace with
|
* This module is designed to simplify the user code by exposing only the required interface needed to interface with
|
||||||
* Hosts using the USB RNDIS Class.
|
* Hosts using the USB RNDIS Class.
|
||||||
*
|
*
|
||||||
* @{
|
* @{
|
||||||
|
|
|
@ -40,7 +40,7 @@
|
||||||
* for USB Host mode only. User applications can use this class driver instead of implementing the Still Image class
|
* for USB Host mode only. User applications can use this class driver instead of implementing the Still Image class
|
||||||
* manually via the low-level LUFA APIs.
|
* manually via the low-level LUFA APIs.
|
||||||
*
|
*
|
||||||
* This module is designed to simplify the user code by exposing only the required interface needed to interace with
|
* This module is designed to simplify the user code by exposing only the required interface needed to interface with
|
||||||
* Devices using the USB Still Image Class.
|
* Devices using the USB Still Image Class.
|
||||||
*
|
*
|
||||||
* @{
|
* @{
|
||||||
|
|
|
@ -192,7 +192,7 @@
|
||||||
* be a standard request that the library has no handler code for, or a class specific request
|
* be a standard request that the library has no handler code for, or a class specific request
|
||||||
* issued to the device which must be handled appropriately.
|
* issued to the device which must be handled appropriately.
|
||||||
*
|
*
|
||||||
* This event is time-critical; eack packet within the request transaction must be acknowedged or
|
* This event is time-critical; each packet within the request transaction must be acknowledged or
|
||||||
* sent within 50ms or the host will abort the transfer.
|
* sent within 50ms or the host will abort the transfer.
|
||||||
*
|
*
|
||||||
* \note This event does not exist if the USB_HOST_ONLY token is supplied to the compiler (see
|
* \note This event does not exist if the USB_HOST_ONLY token is supplied to the compiler (see
|
||||||
|
@ -258,7 +258,7 @@
|
||||||
void EVENT_USB_Device_Reset(void);
|
void EVENT_USB_Device_Reset(void);
|
||||||
|
|
||||||
/** Event for USB Start Of Frame detection, when enabled. This event fires at the start of each USB
|
/** Event for USB Start Of Frame detection, when enabled. This event fires at the start of each USB
|
||||||
* frame, once per millisecond, and is synchronised to the USB bus. This can be used as an accurate
|
* frame, once per millisecond, and is synchronized to the USB bus. This can be used as an accurate
|
||||||
* millisecond timer source when the USB bus is enumerated in device mode to a USB host.
|
* millisecond timer source when the USB bus is enumerated in device mode to a USB host.
|
||||||
*
|
*
|
||||||
* This event is time-critical; it is run once per millisecond and thus long handlers will significantly
|
* This event is time-critical; it is run once per millisecond and thus long handlers will significantly
|
||||||
|
|
|
@ -72,7 +72,7 @@
|
||||||
* a unique serial number internally, and setting the device descriptors serial number string index to this value
|
* a unique serial number internally, and setting the device descriptors serial number string index to this value
|
||||||
* will cause it to use the internal serial number.
|
* will cause it to use the internal serial number.
|
||||||
*
|
*
|
||||||
* On unsupported devices, this will evaluate to NO_DESCRIPTOR and so will force the host to create a pseduo-serial
|
* On unsupported devices, this will evaluate to NO_DESCRIPTOR and so will force the host to create a pseudo-serial
|
||||||
* number for the device.
|
* number for the device.
|
||||||
*/
|
*/
|
||||||
#define USE_INTERNAL_SERIAL 0xDC
|
#define USE_INTERNAL_SERIAL 0xDC
|
||||||
|
|
|
@ -113,7 +113,7 @@
|
||||||
static inline bool USB_Device_IsUSBSuspended(void);
|
static inline bool USB_Device_IsUSBSuspended(void);
|
||||||
|
|
||||||
/** Enables the device mode Start Of Frame events. When enabled, this causes the
|
/** Enables the device mode Start Of Frame events. When enabled, this causes the
|
||||||
* \ref EVENT_USB_Device_StartOfFrame() event to fire once per millisecond, synchronised to the USB bus,
|
* \ref EVENT_USB_Device_StartOfFrame() event to fire once per millisecond, synchronized to the USB bus,
|
||||||
* at the start of each USB frame when enumerated in device mode.
|
* at the start of each USB frame when enumerated in device mode.
|
||||||
*/
|
*/
|
||||||
static inline bool USB_Device_EnableSOFEvents(void);
|
static inline bool USB_Device_EnableSOFEvents(void);
|
||||||
|
|
|
@ -735,7 +735,7 @@
|
||||||
bool Endpoint_ConfigureEndpoint(const uint8_t Number, const uint8_t Type, const uint8_t Direction,
|
bool Endpoint_ConfigureEndpoint(const uint8_t Number, const uint8_t Type, const uint8_t Direction,
|
||||||
const uint16_t Size, const uint8_t Banks);
|
const uint16_t Size, const uint8_t Banks);
|
||||||
|
|
||||||
/** Spinloops until the currently selected non-control endpoint is ready for the next packet of data
|
/** Spin-loops until the currently selected non-control endpoint is ready for the next packet of data
|
||||||
* to be read or written to it.
|
* to be read or written to it.
|
||||||
*
|
*
|
||||||
* \note This routine should not be called on CONTROL type endpoints.
|
* \note This routine should not be called on CONTROL type endpoints.
|
||||||
|
|
|
@ -793,7 +793,7 @@
|
||||||
bool Pipe_ConfigurePipe(const uint8_t Number, const uint8_t Type, const uint8_t Token, const uint8_t EndpointNumber,
|
bool Pipe_ConfigurePipe(const uint8_t Number, const uint8_t Type, const uint8_t Token, const uint8_t EndpointNumber,
|
||||||
const uint16_t Size, const uint8_t Banks);
|
const uint16_t Size, const uint8_t Banks);
|
||||||
|
|
||||||
/** Spinloops until the currently selected non-control pipe is ready for the next packed of data to be read
|
/** Spin-loops until the currently selected non-control pipe is ready for the next packed of data to be read
|
||||||
* or written to it, aborting in the case of an error condition (such as a timeout or device disconnect).
|
* or written to it, aborting in the case of an error condition (such as a timeout or device disconnect).
|
||||||
*
|
*
|
||||||
* \ingroup Group_PipeRW
|
* \ingroup Group_PipeRW
|
||||||
|
|
|
@ -111,7 +111,7 @@ void EVENT_USB_Device_ConfigurationChanged(void)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/** Processes incomming V2 Protocol commands from the host, returning a response when required. */
|
/** Processes incoming V2 Protocol commands from the host, returning a response when required. */
|
||||||
void Process_AVRISP_Commands(void)
|
void Process_AVRISP_Commands(void)
|
||||||
{
|
{
|
||||||
/* Device must be connected and configured for the task to run */
|
/* Device must be connected and configured for the task to run */
|
||||||
|
|
|
@ -36,7 +36,7 @@
|
||||||
#define INCLUDE_FROM_V2PROTOCOL_C
|
#define INCLUDE_FROM_V2PROTOCOL_C
|
||||||
#include "V2Protocol.h"
|
#include "V2Protocol.h"
|
||||||
|
|
||||||
/** Master V2 Protocol packet handler, for receieved V2 Protocol packets from a connected host.
|
/** Master V2 Protocol packet handler, for received V2 Protocol packets from a connected host.
|
||||||
* This routine decodes the issued command and passes off the handling of the command to the
|
* This routine decodes the issued command and passes off the handling of the command to the
|
||||||
* appropriate function.
|
* appropriate function.
|
||||||
*/
|
*/
|
||||||
|
@ -105,7 +105,7 @@ void V2Protocol_ProcessCommand(void)
|
||||||
*/
|
*/
|
||||||
static void V2Protocol_Command_Unknown(uint8_t V2Command)
|
static void V2Protocol_Command_Unknown(uint8_t V2Command)
|
||||||
{
|
{
|
||||||
/* Discard all incomming data */
|
/* Discard all incoming data */
|
||||||
while (Endpoint_BytesInEndpoint() == AVRISP_DATA_EPSIZE)
|
while (Endpoint_BytesInEndpoint() == AVRISP_DATA_EPSIZE)
|
||||||
{
|
{
|
||||||
Endpoint_ClearOUT();
|
Endpoint_ClearOUT();
|
||||||
|
@ -151,7 +151,7 @@ static void V2Protocol_Command_GetSetParam(uint8_t V2Command)
|
||||||
|
|
||||||
Endpoint_Write_Byte(V2Command);
|
Endpoint_Write_Byte(V2Command);
|
||||||
|
|
||||||
uint8_t ParamPrivs = V2Params_GetParameterPrivellages(ParamID);
|
uint8_t ParamPrivs = V2Params_GetParameterPrivileges(ParamID);
|
||||||
|
|
||||||
if ((V2Command == CMD_SET_PARAMETER) && (ParamPrivs & PARAM_PRIV_WRITE))
|
if ((V2Command == CMD_SET_PARAMETER) && (ParamPrivs & PARAM_PRIV_WRITE))
|
||||||
{
|
{
|
||||||
|
|
|
@ -44,43 +44,43 @@ static ParameterItem_t ParameterTable[] =
|
||||||
{
|
{
|
||||||
{ .ParamID = PARAM_BUILD_NUMBER_LOW,
|
{ .ParamID = PARAM_BUILD_NUMBER_LOW,
|
||||||
.ParamValue = (LUFA_VERSION_INTEGER >> 8),
|
.ParamValue = (LUFA_VERSION_INTEGER >> 8),
|
||||||
.ParamPrivellages = PARAM_PRIV_READ },
|
.ParamPrivileges = PARAM_PRIV_READ },
|
||||||
|
|
||||||
{ .ParamID = PARAM_BUILD_NUMBER_HIGH,
|
{ .ParamID = PARAM_BUILD_NUMBER_HIGH,
|
||||||
.ParamValue = (LUFA_VERSION_INTEGER & 0xFF),
|
.ParamValue = (LUFA_VERSION_INTEGER & 0xFF),
|
||||||
.ParamPrivellages = PARAM_PRIV_READ },
|
.ParamPrivileges = PARAM_PRIV_READ },
|
||||||
|
|
||||||
{ .ParamID = PARAM_HW_VER,
|
{ .ParamID = PARAM_HW_VER,
|
||||||
.ParamValue = 0x00,
|
.ParamValue = 0x00,
|
||||||
.ParamPrivellages = PARAM_PRIV_READ },
|
.ParamPrivileges = PARAM_PRIV_READ },
|
||||||
|
|
||||||
{ .ParamID = PARAM_SW_MAJOR,
|
{ .ParamID = PARAM_SW_MAJOR,
|
||||||
.ParamValue = 0x01,
|
.ParamValue = 0x01,
|
||||||
.ParamPrivellages = PARAM_PRIV_READ },
|
.ParamPrivileges = PARAM_PRIV_READ },
|
||||||
|
|
||||||
{ .ParamID = PARAM_SW_MINOR,
|
{ .ParamID = PARAM_SW_MINOR,
|
||||||
.ParamValue = 0x0C,
|
.ParamValue = 0x0C,
|
||||||
.ParamPrivellages = PARAM_PRIV_READ },
|
.ParamPrivileges = PARAM_PRIV_READ },
|
||||||
|
|
||||||
{ .ParamID = PARAM_VTARGET,
|
{ .ParamID = PARAM_VTARGET,
|
||||||
.ParamValue = 0x32,
|
.ParamValue = 0x32,
|
||||||
.ParamPrivellages = PARAM_PRIV_READ },
|
.ParamPrivileges = PARAM_PRIV_READ },
|
||||||
|
|
||||||
{ .ParamID = PARAM_SCK_DURATION,
|
{ .ParamID = PARAM_SCK_DURATION,
|
||||||
.ParamValue = (TOTAL_PROGRAMMING_SPEEDS - 1),
|
.ParamValue = (TOTAL_PROGRAMMING_SPEEDS - 1),
|
||||||
.ParamPrivellages = PARAM_PRIV_READ | PARAM_PRIV_WRITE },
|
.ParamPrivileges = PARAM_PRIV_READ | PARAM_PRIV_WRITE },
|
||||||
|
|
||||||
{ .ParamID = PARAM_RESET_POLARITY,
|
{ .ParamID = PARAM_RESET_POLARITY,
|
||||||
.ParamValue = 0x00,
|
.ParamValue = 0x00,
|
||||||
.ParamPrivellages = PARAM_PRIV_WRITE },
|
.ParamPrivileges = PARAM_PRIV_WRITE },
|
||||||
|
|
||||||
{ .ParamID = PARAM_STATUS_TGT_CONN,
|
{ .ParamID = PARAM_STATUS_TGT_CONN,
|
||||||
.ParamValue = 0x00,
|
.ParamValue = 0x00,
|
||||||
.ParamPrivellages = PARAM_PRIV_READ },
|
.ParamPrivileges = PARAM_PRIV_READ },
|
||||||
|
|
||||||
{ .ParamID = PARAM_DISCHARGEDELAY,
|
{ .ParamID = PARAM_DISCHARGEDELAY,
|
||||||
.ParamValue = 0x00,
|
.ParamValue = 0x00,
|
||||||
.ParamPrivellages = PARAM_PRIV_WRITE },
|
.ParamPrivileges = PARAM_PRIV_WRITE },
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
@ -104,22 +104,22 @@ void V2Params_UpdateParamValues(void)
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
/** Retrieves the host PC read/write privellages for a given parameter in the parameter table. This should
|
/** Retrieves the host PC read/write privileges for a given parameter in the parameter table. This should
|
||||||
* be called before calls to \ref V2Params_GetParameterValue() or \ref V2Params_SetParameterValue() when
|
* be called before calls to \ref V2Params_GetParameterValue() or \ref V2Params_SetParameterValue() when
|
||||||
* getting or setting parameter values in response to requests from the host.
|
* getting or setting parameter values in response to requests from the host.
|
||||||
*
|
*
|
||||||
* \param[in] ParamID Parameter ID whose privellages are to be retrieved from the table
|
* \param[in] ParamID Parameter ID whose privileges are to be retrieved from the table
|
||||||
*
|
*
|
||||||
* \return Privellages for the requested parameter, as a mask of PARAM_PRIV_* masks
|
* \return Privileges for the requested parameter, as a mask of PARAM_PRIV_* masks
|
||||||
*/
|
*/
|
||||||
uint8_t V2Params_GetParameterPrivellages(uint8_t ParamID)
|
uint8_t V2Params_GetParameterPrivileges(uint8_t ParamID)
|
||||||
{
|
{
|
||||||
ParameterItem_t* ParamInfo = V2Params_GetParamFromTable(ParamID);
|
ParameterItem_t* ParamInfo = V2Params_GetParamFromTable(ParamID);
|
||||||
|
|
||||||
if (ParamInfo == NULL)
|
if (ParamInfo == NULL)
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
return ParamInfo->ParamPrivellages;
|
return ParamInfo->ParamPrivileges;
|
||||||
}
|
}
|
||||||
|
|
||||||
/** Retrieves the current value for a given parameter in the parameter table.
|
/** Retrieves the current value for a given parameter in the parameter table.
|
||||||
|
@ -132,7 +132,7 @@ uint8_t V2Params_GetParameterValue(uint8_t ParamID)
|
||||||
{
|
{
|
||||||
ParameterItem_t* ParamInfo = V2Params_GetParamFromTable(ParamID);
|
ParameterItem_t* ParamInfo = V2Params_GetParamFromTable(ParamID);
|
||||||
|
|
||||||
if ((ParamInfo == NULL) || !(ParamInfo->ParamPrivellages & PARAM_PRIV_READ))
|
if ((ParamInfo == NULL) || !(ParamInfo->ParamPrivileges & PARAM_PRIV_READ))
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
return ParamInfo->ParamValue;
|
return ParamInfo->ParamValue;
|
||||||
|
@ -149,7 +149,7 @@ void V2Params_SetParameterValue(uint8_t ParamID, uint8_t Value)
|
||||||
{
|
{
|
||||||
ParameterItem_t* ParamInfo = V2Params_GetParamFromTable(ParamID);
|
ParameterItem_t* ParamInfo = V2Params_GetParamFromTable(ParamID);
|
||||||
|
|
||||||
if ((ParamInfo == NULL) || !(ParamInfo->ParamPrivellages & PARAM_PRIV_WRITE))
|
if ((ParamInfo == NULL) || !(ParamInfo->ParamPrivileges & PARAM_PRIV_WRITE))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
ParamInfo->ParamValue = Value;
|
ParamInfo->ParamValue = Value;
|
||||||
|
@ -159,7 +159,7 @@ void V2Params_SetParameterValue(uint8_t ParamID, uint8_t Value)
|
||||||
eeprom_write_byte(&EEPROM_Rest_Polarity, Value);
|
eeprom_write_byte(&EEPROM_Rest_Polarity, Value);
|
||||||
}
|
}
|
||||||
|
|
||||||
/** Retrieves a parameter entry (including ID, value and privellages) from the parameter table that matches the given
|
/** Retrieves a parameter entry (including ID, value and privileges) from the parameter table that matches the given
|
||||||
* parameter ID.
|
* parameter ID.
|
||||||
*
|
*
|
||||||
* \param[in] ParamID Parameter ID to find in the table
|
* \param[in] ParamID Parameter ID to find in the table
|
||||||
|
|
|
@ -50,10 +50,10 @@
|
||||||
#include "V2ProtocolConstants.h"
|
#include "V2ProtocolConstants.h"
|
||||||
|
|
||||||
/* Macros: */
|
/* Macros: */
|
||||||
/** Parameter privellage mask to allow the host PC to read the parameter's value */
|
/** Parameter privilege mask to allow the host PC to read the parameter's value */
|
||||||
#define PARAM_PRIV_READ (1 << 0)
|
#define PARAM_PRIV_READ (1 << 0)
|
||||||
|
|
||||||
/** Parameter privellage mask to allow the host PC to change the parameter's value */
|
/** Parameter privilege mask to allow the host PC to change the parameter's value */
|
||||||
#define PARAM_PRIV_WRITE (1 << 1)
|
#define PARAM_PRIV_WRITE (1 << 1)
|
||||||
|
|
||||||
/* Type Defines: */
|
/* Type Defines: */
|
||||||
|
@ -62,14 +62,14 @@
|
||||||
{
|
{
|
||||||
const uint8_t ParamID; /**< Parameter ID number to uniquely identify the parameter within the device */
|
const uint8_t ParamID; /**< Parameter ID number to uniquely identify the parameter within the device */
|
||||||
uint8_t ParamValue; /**< Current parameter's value within the device */
|
uint8_t ParamValue; /**< Current parameter's value within the device */
|
||||||
uint8_t ParamPrivellages; /**< Parameter privellages to allow the host to read or write the parameter's value */
|
uint8_t ParamPrivileges; /**< Parameter privileges to allow the host to read or write the parameter's value */
|
||||||
} ParameterItem_t;
|
} ParameterItem_t;
|
||||||
|
|
||||||
/* Function Prototypes: */
|
/* Function Prototypes: */
|
||||||
void V2Params_LoadNonVolatileParamValues(void);
|
void V2Params_LoadNonVolatileParamValues(void);
|
||||||
void V2Params_UpdateParamValues(void);
|
void V2Params_UpdateParamValues(void);
|
||||||
|
|
||||||
uint8_t V2Params_GetParameterPrivellages(uint8_t ParamID);
|
uint8_t V2Params_GetParameterPrivileges(uint8_t ParamID);
|
||||||
uint8_t V2Params_GetParameterValue(uint8_t ParamID);
|
uint8_t V2Params_GetParameterValue(uint8_t ParamID);
|
||||||
void V2Params_SetParameterValue(uint8_t ParamID, uint8_t Value);
|
void V2Params_SetParameterValue(uint8_t ParamID, uint8_t Value);
|
||||||
|
|
||||||
|
|
|
@ -45,7 +45,7 @@ uint32_t CurrentAddress;
|
||||||
*/
|
*/
|
||||||
uint8_t V2Protocol_GetSPIPrescalerMask(void)
|
uint8_t V2Protocol_GetSPIPrescalerMask(void)
|
||||||
{
|
{
|
||||||
static const uint8_t SPIMaskFromSCKDuration[TOTAL_PROGRAMMING_SPEEDS] =
|
static const uint8_t SPIMaskFromSCKDuration[] =
|
||||||
{
|
{
|
||||||
#if (F_CPU == 8000000)
|
#if (F_CPU == 8000000)
|
||||||
SPI_SPEED_FCPU_DIV_2, // AVRStudio = 8MHz SPI, Actual = 4MHz SPI
|
SPI_SPEED_FCPU_DIV_2, // AVRStudio = 8MHz SPI, Actual = 4MHz SPI
|
||||||
|
@ -77,7 +77,7 @@ uint8_t V2Protocol_GetSPIPrescalerMask(void)
|
||||||
}
|
}
|
||||||
|
|
||||||
/** Asserts or deasserts the target's reset line, using the correct polarity as set by the host using a SET PARAM command.
|
/** Asserts or deasserts the target's reset line, using the correct polarity as set by the host using a SET PARAM command.
|
||||||
* When not asserted, the line is tristated so as not to intefere with normal device operation.
|
* When not asserted, the line is tristated so as not to interfere with normal device operation.
|
||||||
*
|
*
|
||||||
* \param[in] ResetTarget Boolean true when the target should be held in reset, false otherwise
|
* \param[in] ResetTarget Boolean true when the target should be held in reset, false otherwise
|
||||||
*/
|
*/
|
||||||
|
|
|
@ -83,7 +83,7 @@ RingBuff_Data_t Buffer_GetElement(RingBuff_t* Buffer)
|
||||||
if (!(Buffer->Elements))
|
if (!(Buffer->Elements))
|
||||||
return 0;
|
return 0;
|
||||||
#elif !defined(BUFF_NOEMPTYCHECK)
|
#elif !defined(BUFF_NOEMPTYCHECK)
|
||||||
#error No empty buffer check behaviour specified.
|
#error No empty buffer check behavior specified.
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
BuffData = *(Buffer->OutPtr);
|
BuffData = *(Buffer->OutPtr);
|
||||||
|
@ -109,7 +109,7 @@ RingBuff_Data_t Buffer_PeekElement(const RingBuff_t* Buffer)
|
||||||
if (!(Buffer->Elements))
|
if (!(Buffer->Elements))
|
||||||
return 0;
|
return 0;
|
||||||
#elif !defined(BUFF_NOEMPTYCHECK)
|
#elif !defined(BUFF_NOEMPTYCHECK)
|
||||||
#error No empty buffer check behaviour specified.
|
#error No empty buffer check behavior specified.
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
BuffData = *(Buffer->OutPtr);
|
BuffData = *(Buffer->OutPtr);
|
||||||
|
|
|
@ -25,30 +25,30 @@
|
||||||
NOTE: The user of this include file MUST define the following macros
|
NOTE: The user of this include file MUST define the following macros
|
||||||
prior to including the file:
|
prior to including the file:
|
||||||
|
|
||||||
MAG_T1_CLOCK_PIN Pin connected to Track 1 clock wire (ie. PORTC1)
|
MAG_T1_CLOCK_PIN Pin connected to Track 1 clock wire (i.e.. PORTC1)
|
||||||
MAG_T1_DATA_PIN Pin connected to Track 1 data wire (ie. PORTC2)
|
MAG_T1_DATA_PIN Pin connected to Track 1 data wire (i.e.. PORTC2)
|
||||||
MAG_T2_CLOCK_PIN Pin connected to Track 2 clock wire (ie. PORTC3)
|
MAG_T2_CLOCK_PIN Pin connected to Track 2 clock wire (i.e.. PORTC3)
|
||||||
MAG_T2_DATA_PIN Pin connected to Track 2 data wire (ie. PORTC0)
|
MAG_T2_DATA_PIN Pin connected to Track 2 data wire (i.e.. PORTC0)
|
||||||
MAG_T3_CLOCK_PIN Pin connected to Track 3 clock wire (ie. PORTC5)
|
MAG_T3_CLOCK_PIN Pin connected to Track 3 clock wire (i.e.. PORTC5)
|
||||||
MAG_T3_DATA_PIN Pin connected to Track 3 data wire (ie. PORTC6)
|
MAG_T3_DATA_PIN Pin connected to Track 3 data wire (i.e.. PORTC6)
|
||||||
MAG_CLS_PIN Pin connected to card loaded wire (ie. PORTC4)
|
MAG_CLS_PIN Pin connected to card loaded wire (i.e.. PORTC4)
|
||||||
MAG_PIN PIN macro for the reader's port (ie. PINC)
|
MAG_PIN PIN macro for the reader's port (i.e.. PINC)
|
||||||
MAG_DDR DDR macro for the reader's port (ie. DDRC)
|
MAG_DDR DDR macro for the reader's port (i.e.. DDRC)
|
||||||
MAG_PORT PORT macro for the reader's port (ie. PORTC)
|
MAG_PORT PORT macro for the reader's port (i.e.. PORTC)
|
||||||
|
|
||||||
The example macros listed above assume that the Track 2 data wire is
|
The example macros listed above assume that the Track 2 data wire is
|
||||||
connected to pin 0 on port C, the Track 2 clock wire is connected to
|
connected to pin 0 on port C, the Track 2 clock wire is connected to
|
||||||
pin 3 on port C (similarly for Tracks 1 and 3), and the card loaded
|
pin 3 on port C (similarly for Tracks 1 and 3), and the card loaded
|
||||||
wire is connected to pin 4 on port C.
|
wire is connected to pin 4 on port C.
|
||||||
|
|
||||||
If the magstripe reader you are using only reads one or two tracks,
|
If the mag-stripe reader you are using only reads one or two tracks,
|
||||||
then set the clock and data pins for the tracks it doesn't read to a
|
then set the clock and data pins for the tracks it doesn't read to a
|
||||||
pin that is unused. For example, on the AT90USBKey, any of the pins on
|
pin that is unused. For example, on the AT90USBKey, any of the pins on
|
||||||
port C that do not have wires attached will be unused since they are
|
port C that do not have wires attached will be unused since they are
|
||||||
not connected to any onboard devices (such as the joystick or
|
not connected to any onboard devices (such as the joystick or
|
||||||
temperature sensor).
|
temperature sensor).
|
||||||
|
|
||||||
Connecting wires to pins on different ports (ie. a data wire to pin 0
|
Connecting wires to pins on different ports (i.e.. a data wire to pin 0
|
||||||
on port C and a clock wire to pin 0 on port D) is currently
|
on port C and a clock wire to pin 0 on port D) is currently
|
||||||
unsupported. All pins specified above must be on the same port.
|
unsupported. All pins specified above must be on the same port.
|
||||||
*/
|
*/
|
||||||
|
@ -93,7 +93,7 @@
|
||||||
static inline uint8_t Magstripe_GetStatus(void) ATTR_WARN_UNUSED_RESULT;
|
static inline uint8_t Magstripe_GetStatus(void) ATTR_WARN_UNUSED_RESULT;
|
||||||
static inline uint8_t Magstripe_GetStatus(void)
|
static inline uint8_t Magstripe_GetStatus(void)
|
||||||
{
|
{
|
||||||
/* Magstripe IOs are active low and must be inverted when read */
|
/* Mag-stripe IOs are active low and must be inverted when read */
|
||||||
return ((uint8_t)~MAG_PIN & MAG_MASK);
|
return ((uint8_t)~MAG_PIN & MAG_MASK);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -83,7 +83,7 @@ RingBuff_Data_t Buffer_GetElement(RingBuff_t* Buffer)
|
||||||
if (!(Buffer->Elements))
|
if (!(Buffer->Elements))
|
||||||
return 0;
|
return 0;
|
||||||
#elif !defined(BUFF_NOEMPTYCHECK)
|
#elif !defined(BUFF_NOEMPTYCHECK)
|
||||||
#error No empty buffer check behaviour specified.
|
#error No empty buffer check behavior specified.
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
BuffData = *(Buffer->OutPtr);
|
BuffData = *(Buffer->OutPtr);
|
||||||
|
@ -109,7 +109,7 @@ RingBuff_Data_t Buffer_PeekElement(const RingBuff_t* Buffer)
|
||||||
if (!(Buffer->Elements))
|
if (!(Buffer->Elements))
|
||||||
return 0;
|
return 0;
|
||||||
#elif !defined(BUFF_NOEMPTYCHECK)
|
#elif !defined(BUFF_NOEMPTYCHECK)
|
||||||
#error No empty buffer check behaviour specified.
|
#error No empty buffer check behavior specified.
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
BuffData = *(Buffer->OutPtr);
|
BuffData = *(Buffer->OutPtr);
|
||||||
|
|
Loading…
Reference in New Issue