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…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user