Fixed incorrect HID interface class and subclass values in the Mouse and KeyboardMouse demos (thanks to Brian Dickman).

Capitolised the "Descriptor_Search" and "Descriptor_Search_Comp" prefixes of the values in the DSearch_Return_ErrorCodes_t and DSearch_Comp_Return_ErrorCodes_t enums.

Minor documentation improvements.
pull/1469/head
Dean Camera 16 years ago
parent 32e735b2b2
commit 663f449c10

@ -173,7 +173,7 @@ USB_Descriptor_Configuration_t PROGMEM ConfigurationDescriptor =
Class: 0x03, Class: 0x03,
SubClass: 0x01, SubClass: 0x01,
Protocol: 0x00, Protocol: 0x01,
InterfaceStrIndex: NO_DESCRIPTOR InterfaceStrIndex: NO_DESCRIPTOR
}, },
@ -219,8 +219,8 @@ USB_Descriptor_Configuration_t PROGMEM ConfigurationDescriptor =
TotalEndpoints: 1, TotalEndpoints: 1,
Class: 0x03, Class: 0x03,
SubClass: 0x02, SubClass: 0x01,
Protocol: 0x00, Protocol: 0x02,
InterfaceStrIndex: NO_DESCRIPTOR InterfaceStrIndex: NO_DESCRIPTOR
}, },

@ -132,8 +132,8 @@ USB_Descriptor_Configuration_t PROGMEM ConfigurationDescriptor =
TotalEndpoints: 1, TotalEndpoints: 1,
Class: 0x03, Class: 0x03,
SubClass: 0x02, SubClass: 0x01,
Protocol: 0x01, Protocol: 0x02,
InterfaceStrIndex: NO_DESCRIPTOR InterfaceStrIndex: NO_DESCRIPTOR
}, },

@ -181,11 +181,11 @@ DESCRIPTOR_COMPARATOR(NextCDCControlInterface)
(DESCRIPTOR_CAST(CurrentDescriptor, USB_Descriptor_Interface_t).SubClass == CDC_CONTROL_SUBCLASS) && (DESCRIPTOR_CAST(CurrentDescriptor, USB_Descriptor_Interface_t).SubClass == CDC_CONTROL_SUBCLASS) &&
(DESCRIPTOR_CAST(CurrentDescriptor, USB_Descriptor_Interface_t).Protocol == CDC_CONTROL_PROTOCOL)) (DESCRIPTOR_CAST(CurrentDescriptor, USB_Descriptor_Interface_t).Protocol == CDC_CONTROL_PROTOCOL))
{ {
return Descriptor_Search_Found; return DESCRIPTOR_SEARCH_Found;
} }
} }
return Descriptor_Search_NotFound; return DESCRIPTOR_SEARCH_NotFound;
} }
/** Descriptor comparator function. This comparator function is can be called while processing an attached USB device's /** Descriptor comparator function. This comparator function is can be called while processing an attached USB device's
@ -205,11 +205,11 @@ DESCRIPTOR_COMPARATOR(NextCDCDataInterface)
(DESCRIPTOR_CAST(CurrentDescriptor, USB_Descriptor_Interface_t).SubClass == CDC_DATA_SUBCLASS) && (DESCRIPTOR_CAST(CurrentDescriptor, USB_Descriptor_Interface_t).SubClass == CDC_DATA_SUBCLASS) &&
(DESCRIPTOR_CAST(CurrentDescriptor, USB_Descriptor_Interface_t).Protocol == CDC_DATA_PROTOCOL)) (DESCRIPTOR_CAST(CurrentDescriptor, USB_Descriptor_Interface_t).Protocol == CDC_DATA_PROTOCOL))
{ {
return Descriptor_Search_Found; return DESCRIPTOR_SEARCH_Found;
} }
} }
return Descriptor_Search_NotFound; return DESCRIPTOR_SEARCH_NotFound;
} }
/** Descriptor comparator function. This comparator function is can be called while processing an attached USB device's /** Descriptor comparator function. This comparator function is can be called while processing an attached USB device's
@ -230,12 +230,12 @@ DESCRIPTOR_COMPARATOR(NextInterfaceCDCDataEndpoint)
USB_Descriptor_Endpoint_t).Attributes & EP_TYPE_MASK); USB_Descriptor_Endpoint_t).Attributes & EP_TYPE_MASK);
if ((EndpointType == EP_TYPE_BULK) || (EndpointType == EP_TYPE_INTERRUPT)) if ((EndpointType == EP_TYPE_BULK) || (EndpointType == EP_TYPE_INTERRUPT))
return Descriptor_Search_Found; return DESCRIPTOR_SEARCH_Found;
} }
else if (DESCRIPTOR_TYPE(CurrentDescriptor) == DTYPE_Interface) else if (DESCRIPTOR_TYPE(CurrentDescriptor) == DTYPE_Interface)
{ {
return Descriptor_Search_Fail; return DESCRIPTOR_SEARCH_Fail;
} }
return Descriptor_Search_NotFound; return DESCRIPTOR_SEARCH_NotFound;
} }

@ -143,12 +143,12 @@ DESCRIPTOR_COMPARATOR(NextHIDInterface)
if (DESCRIPTOR_CAST(CurrentDescriptor, USB_Descriptor_Interface_t).Class == HID_CLASS) if (DESCRIPTOR_CAST(CurrentDescriptor, USB_Descriptor_Interface_t).Class == HID_CLASS)
{ {
/* Indicate that the descriptor being searched for has been found */ /* Indicate that the descriptor being searched for has been found */
return Descriptor_Search_Found; return DESCRIPTOR_SEARCH_Found;
} }
} }
/* Current descriptor does not match what this comparator is looking for */ /* Current descriptor does not match what this comparator is looking for */
return Descriptor_Search_NotFound; return DESCRIPTOR_SEARCH_NotFound;
} }
/** Descriptor comparator function. This comparator function is can be called while processing an attached USB device's /** Descriptor comparator function. This comparator function is can be called while processing an attached USB device's
@ -166,14 +166,14 @@ DESCRIPTOR_COMPARATOR(NextInterfaceHIDDataEndpoint)
if (DESCRIPTOR_TYPE(CurrentDescriptor) == DTYPE_Endpoint) if (DESCRIPTOR_TYPE(CurrentDescriptor) == DTYPE_Endpoint)
{ {
/* Indicate that the descriptor being searched for has been found */ /* Indicate that the descriptor being searched for has been found */
return Descriptor_Search_Found; return DESCRIPTOR_SEARCH_Found;
} }
else if (DESCRIPTOR_TYPE(CurrentDescriptor) == DTYPE_Interface) else if (DESCRIPTOR_TYPE(CurrentDescriptor) == DTYPE_Interface)
{ {
/* Indicate that the search has failed prematurely and should be aborted */ /* Indicate that the search has failed prematurely and should be aborted */
return Descriptor_Search_Fail; return DESCRIPTOR_SEARCH_Fail;
} }
/* Current descriptor does not match what this comparator is looking for */ /* Current descriptor does not match what this comparator is looking for */
return Descriptor_Search_NotFound; return DESCRIPTOR_SEARCH_NotFound;
} }

@ -117,9 +117,9 @@ DESCRIPTOR_COMPARATOR(NextKeyboardInterface)
{ {
/* Check the HID descriptor class and protocol, break out if correct class/protocol interface found */ /* Check the HID descriptor class and protocol, break out if correct class/protocol interface found */
if ((DESCRIPTOR_CAST(CurrentDescriptor, USB_Descriptor_Interface_t).Class == KEYBOARD_CLASS) && if ((DESCRIPTOR_CAST(CurrentDescriptor, USB_Descriptor_Interface_t).Class == KEYBOARD_CLASS) &&
(DESCRIPTOR_CAST(CurrentDescriptor, USB_Descriptor_Interface_t).Protocol == KEYBOARD_PROTOCOL)) (DESCRIPTOR_CAST(CurrentDescriptor, USB_Descriptor_Interface_t).Subclass == KEYBOARD_SUBCLASS))
{ {
return Descriptor_Search_Found; return DESCRIPTOR_SEARCH_Found;
} }
} }
@ -140,12 +140,12 @@ DESCRIPTOR_COMPARATOR(NextInterfaceKeyboardDataEndpoint)
if (DESCRIPTOR_TYPE(CurrentDescriptor) == DTYPE_Endpoint) if (DESCRIPTOR_TYPE(CurrentDescriptor) == DTYPE_Endpoint)
{ {
if (DESCRIPTOR_CAST(CurrentDescriptor, USB_Descriptor_Endpoint_t).EndpointAddress & ENDPOINT_DESCRIPTOR_DIR_IN) if (DESCRIPTOR_CAST(CurrentDescriptor, USB_Descriptor_Endpoint_t).EndpointAddress & ENDPOINT_DESCRIPTOR_DIR_IN)
return Descriptor_Search_Found; return DESCRIPTOR_SEARCH_Found;
} }
else if (DESCRIPTOR_TYPE(CurrentDescriptor) == DTYPE_Interface) else if (DESCRIPTOR_TYPE(CurrentDescriptor) == DTYPE_Interface)
{ {
return Descriptor_Search_Fail; return DESCRIPTOR_SEARCH_Fail;
} }
return Descriptor_Search_NotFound; return DESCRIPTOR_SEARCH_NotFound;
} }

@ -123,11 +123,11 @@ DESCRIPTOR_COMPARATOR(NextKeyboardInterface)
if ((DESCRIPTOR_CAST(CurrentDescriptor, USB_Descriptor_Interface_t).Class == KEYBOARD_CLASS) && if ((DESCRIPTOR_CAST(CurrentDescriptor, USB_Descriptor_Interface_t).Class == KEYBOARD_CLASS) &&
(DESCRIPTOR_CAST(CurrentDescriptor, USB_Descriptor_Interface_t).Protocol == KEYBOARD_PROTOCOL)) (DESCRIPTOR_CAST(CurrentDescriptor, USB_Descriptor_Interface_t).Protocol == KEYBOARD_PROTOCOL))
{ {
return Descriptor_Search_Found; return DESCRIPTOR_SEARCH_Found;
} }
} }
return Descriptor_Search_NotFound; return DESCRIPTOR_SEARCH_NotFound;
} }
/** Descriptor comparator function. This comparator function is can be called while processing an attached USB device's /** Descriptor comparator function. This comparator function is can be called while processing an attached USB device's
@ -144,14 +144,14 @@ DESCRIPTOR_COMPARATOR(NextInterfaceKeyboardDataEndpoint)
if (DESCRIPTOR_TYPE(CurrentDescriptor) == DTYPE_Endpoint) if (DESCRIPTOR_TYPE(CurrentDescriptor) == DTYPE_Endpoint)
{ {
if (DESCRIPTOR_CAST(CurrentDescriptor, USB_Descriptor_Endpoint_t).EndpointAddress & ENDPOINT_DESCRIPTOR_DIR_IN) if (DESCRIPTOR_CAST(CurrentDescriptor, USB_Descriptor_Endpoint_t).EndpointAddress & ENDPOINT_DESCRIPTOR_DIR_IN)
return Descriptor_Search_Found; return DESCRIPTOR_SEARCH_Found;
} }
else if (DESCRIPTOR_TYPE(CurrentDescriptor) == DTYPE_Interface) else if (DESCRIPTOR_TYPE(CurrentDescriptor) == DTYPE_Interface)
{ {
return Descriptor_Search_Fail; return DESCRIPTOR_SEARCH_Fail;
} }
return Descriptor_Search_NotFound; return DESCRIPTOR_SEARCH_NotFound;
} }
/** Descriptor comparator function. This comparator function is can be called while processing an attached USB device's /** Descriptor comparator function. This comparator function is can be called while processing an attached USB device's
@ -165,7 +165,7 @@ DESCRIPTOR_COMPARATOR(NextInterfaceKeyboardDataEndpoint)
DESCRIPTOR_COMPARATOR(NextHID) DESCRIPTOR_COMPARATOR(NextHID)
{ {
if (DESCRIPTOR_TYPE(CurrentDescriptor) == DTYPE_HID) if (DESCRIPTOR_TYPE(CurrentDescriptor) == DTYPE_HID)
return Descriptor_Search_Found; return DESCRIPTOR_SEARCH_Found;
else else
return Descriptor_Search_NotFound; return DESCRIPTOR_SEARCH_NotFound;
} }

@ -64,7 +64,7 @@ uint8_t GetHIDReportData(void)
return ParseControlError; return ParseControlError;
/* Send the HID report to the parser for processing */ /* Send the HID report to the parser for processing */
if (ProcessHIDReport(HIDReportData, HIDReportSize, &HIDReportInfo) != HID_PARSE_Successful) if (USB_ProcessHIDReport(HIDReportData, HIDReportSize, &HIDReportInfo) != HID_PARSE_Successful)
return ParseError; return ParseError;
return ParseSuccessful; return ParseSuccessful;

@ -310,7 +310,7 @@ void ProcessKeyboardReport(uint8_t* KeyboardReport)
(ReportItem->ItemType == REPORT_ITEM_TYPE_In)) (ReportItem->ItemType == REPORT_ITEM_TYPE_In))
{ {
/* Retrieve the keyboard scancode from the report data retrieved from the device */ /* Retrieve the keyboard scancode from the report data retrieved from the device */
bool FoundData = GetReportItemInfo(KeyboardReport, ReportItem); bool FoundData = USB_GetHIDReportItemInfo(KeyboardReport, ReportItem);
/* For multi-report devices - if the requested data was not in the issued report, continue */ /* For multi-report devices - if the requested data was not in the issued report, continue */
if (!(FoundData)) if (!(FoundData))

@ -137,11 +137,11 @@ DESCRIPTOR_COMPARATOR(NextMassStorageInterface)
(DESCRIPTOR_CAST(CurrentDescriptor, USB_Descriptor_Interface_t).SubClass == MASS_STORE_SUBCLASS) && (DESCRIPTOR_CAST(CurrentDescriptor, USB_Descriptor_Interface_t).SubClass == MASS_STORE_SUBCLASS) &&
(DESCRIPTOR_CAST(CurrentDescriptor, USB_Descriptor_Interface_t).Protocol == MASS_STORE_PROTOCOL)) (DESCRIPTOR_CAST(CurrentDescriptor, USB_Descriptor_Interface_t).Protocol == MASS_STORE_PROTOCOL))
{ {
return Descriptor_Search_Found; return DESCRIPTOR_SEARCH_Found;
} }
} }
return Descriptor_Search_NotFound; return DESCRIPTOR_SEARCH_NotFound;
} }
/** Descriptor comparator function. This comparator function is can be called while processing an attached USB device's /** Descriptor comparator function. This comparator function is can be called while processing an attached USB device's
@ -162,12 +162,12 @@ DESCRIPTOR_COMPARATOR(NextInterfaceBulkDataEndpoint)
/* Check the endpoint type, break out if correct BULK type endpoint found */ /* Check the endpoint type, break out if correct BULK type endpoint found */
if (EndpointType == EP_TYPE_BULK) if (EndpointType == EP_TYPE_BULK)
return Descriptor_Search_Found; return DESCRIPTOR_SEARCH_Found;
} }
else if (DESCRIPTOR_TYPE(CurrentDescriptor) == DTYPE_Interface) else if (DESCRIPTOR_TYPE(CurrentDescriptor) == DTYPE_Interface)
{ {
return Descriptor_Search_Fail; return DESCRIPTOR_SEARCH_Fail;
} }
return Descriptor_Search_NotFound; return DESCRIPTOR_SEARCH_NotFound;
} }

@ -69,15 +69,15 @@ uint8_t ProcessConfigurationDescriptor(void)
return InvalidConfigDataReturned; return InvalidConfigDataReturned;
/* Get the mouse interface from the configuration descriptor */ /* Get the mouse interface from the configuration descriptor */
if (USB_Host_GetNextDescriptorComp(&ConfigDescriptorSize, &ConfigDescriptorData, NextMouseInterface)) if (USB_GetNextDescriptorComp(&ConfigDescriptorSize, &ConfigDescriptorData, NextMouseInterface))
{ {
/* Descriptor not found, error out */ /* Descriptor not found, error out */
return NoHIDInterfaceFound; return NoHIDInterfaceFound;
} }
/* Get the mouse interface's data endpoint descriptor */ /* Get the mouse interface's data endpoint descriptor */
if (USB_Host_GetNextDescriptorComp(&ConfigDescriptorSize, &ConfigDescriptorData, if (USB_GetNextDescriptorComp(&ConfigDescriptorSize, &ConfigDescriptorData,
NextInterfaceMouseDataEndpoint)) NextInterfaceMouseDataEndpoint))
{ {
/* Descriptor not found, error out */ /* Descriptor not found, error out */
return NoEndpointFound; return NoEndpointFound;
@ -121,12 +121,12 @@ DESCRIPTOR_COMPARATOR(NextMouseInterface)
(DESCRIPTOR_CAST(CurrentDescriptor, USB_Descriptor_Interface_t).Protocol == MOUSE_PROTOCOL)) (DESCRIPTOR_CAST(CurrentDescriptor, USB_Descriptor_Interface_t).Protocol == MOUSE_PROTOCOL))
{ {
/* Indicate that the descriptor being searched for has been found */ /* Indicate that the descriptor being searched for has been found */
return Descriptor_Search_Found; return DESCRIPTOR_SEARCH_Found;
} }
} }
/* Current descriptor does not match what this comparator is looking for */ /* Current descriptor does not match what this comparator is looking for */
return Descriptor_Search_NotFound; return DESCRIPTOR_SEARCH_NotFound;
} }
/** Descriptor comparator function. This comparator function is can be called while processing an attached USB device's /** Descriptor comparator function. This comparator function is can be called while processing an attached USB device's
@ -147,15 +147,15 @@ DESCRIPTOR_COMPARATOR(NextInterfaceMouseDataEndpoint)
if (DESCRIPTOR_CAST(CurrentDescriptor, USB_Descriptor_Endpoint_t).EndpointAddress & ENDPOINT_DESCRIPTOR_DIR_IN) if (DESCRIPTOR_CAST(CurrentDescriptor, USB_Descriptor_Endpoint_t).EndpointAddress & ENDPOINT_DESCRIPTOR_DIR_IN)
{ {
/* Indicate that the descriptor being searched for has been found */ /* Indicate that the descriptor being searched for has been found */
return Descriptor_Search_Found; return DESCRIPTOR_SEARCH_Found;
} }
} }
else if (DESCRIPTOR_TYPE(CurrentDescriptor) == DTYPE_Interface) else if (DESCRIPTOR_TYPE(CurrentDescriptor) == DTYPE_Interface)
{ {
/* Indicate that the search has failed prematurely and should be aborted */ /* Indicate that the search has failed prematurely and should be aborted */
return Descriptor_Search_Fail; return DESCRIPTOR_SEARCH_Fail;
} }
/* Current descriptor does not match what this comparator is looking for */ /* Current descriptor does not match what this comparator is looking for */
return Descriptor_Search_NotFound; return DESCRIPTOR_SEARCH_NotFound;
} }

@ -123,11 +123,11 @@ DESCRIPTOR_COMPARATOR(NextMouseInterface)
if ((DESCRIPTOR_CAST(CurrentDescriptor, USB_Descriptor_Interface_t).Class == MOUSE_CLASS) && if ((DESCRIPTOR_CAST(CurrentDescriptor, USB_Descriptor_Interface_t).Class == MOUSE_CLASS) &&
(DESCRIPTOR_CAST(CurrentDescriptor, USB_Descriptor_Interface_t).Protocol == MOUSE_PROTOCOL)) (DESCRIPTOR_CAST(CurrentDescriptor, USB_Descriptor_Interface_t).Protocol == MOUSE_PROTOCOL))
{ {
return Descriptor_Search_Found; return DESCRIPTOR_SEARCH_Found;
} }
} }
return Descriptor_Search_NotFound; return DESCRIPTOR_SEARCH_NotFound;
} }
/** Descriptor comparator function. This comparator function is can be called while processing an attached USB device's /** Descriptor comparator function. This comparator function is can be called while processing an attached USB device's
@ -144,14 +144,14 @@ DESCRIPTOR_COMPARATOR(NextInterfaceMouseDataEndpoint)
if (DESCRIPTOR_TYPE(CurrentDescriptor) == DTYPE_Endpoint) if (DESCRIPTOR_TYPE(CurrentDescriptor) == DTYPE_Endpoint)
{ {
if (DESCRIPTOR_CAST(CurrentDescriptor, USB_Descriptor_Endpoint_t).EndpointAddress & ENDPOINT_DESCRIPTOR_DIR_IN) if (DESCRIPTOR_CAST(CurrentDescriptor, USB_Descriptor_Endpoint_t).EndpointAddress & ENDPOINT_DESCRIPTOR_DIR_IN)
return Descriptor_Search_Found; return DESCRIPTOR_SEARCH_Found;
} }
else if (DESCRIPTOR_TYPE(CurrentDescriptor) == DTYPE_Interface) else if (DESCRIPTOR_TYPE(CurrentDescriptor) == DTYPE_Interface)
{ {
return Descriptor_Search_Fail; return DESCRIPTOR_SEARCH_Fail;
} }
return Descriptor_Search_NotFound; return DESCRIPTOR_SEARCH_NotFound;
} }
/** Descriptor comparator function. This comparator function is can be called while processing an attached USB device's /** Descriptor comparator function. This comparator function is can be called while processing an attached USB device's
@ -165,7 +165,7 @@ DESCRIPTOR_COMPARATOR(NextInterfaceMouseDataEndpoint)
DESCRIPTOR_COMPARATOR(NextHID) DESCRIPTOR_COMPARATOR(NextHID)
{ {
if (DESCRIPTOR_TYPE(CurrentDescriptor) == DTYPE_HID) if (DESCRIPTOR_TYPE(CurrentDescriptor) == DTYPE_HID)
return Descriptor_Search_Found; return DESCRIPTOR_SEARCH_Found;
else else
return Descriptor_Search_NotFound; return DESCRIPTOR_SEARCH_NotFound;
} }

@ -64,7 +64,7 @@ uint8_t GetHIDReportData(void)
return ParseControlError; return ParseControlError;
/* Send the HID report to the parser for processing */ /* Send the HID report to the parser for processing */
if (ProcessHIDReport(HIDReportData, HIDReportSize, &HIDReportInfo) != HID_PARSE_Successful) if (USB_ProcessHIDReport(HIDReportData, HIDReportSize, &HIDReportInfo) != HID_PARSE_Successful)
return ParseError; return ParseError;
return ParseSuccessful; return ParseSuccessful;

@ -37,7 +37,7 @@
#define _HID_REPORT_H_ #define _HID_REPORT_H_
/* Includes: */ /* Includes: */
#include <LUFA/Drivers/USB/USB.h> // HID Class Report Parser #include <LUFA/Drivers/USB/USB.h> // USB Functionality
#include "MouseHostWithParser.h" #include "MouseHostWithParser.h"

@ -312,7 +312,7 @@ void ProcessMouseReport(uint8_t* MouseReport)
(ReportItem->ItemType == REPORT_ITEM_TYPE_In)) (ReportItem->ItemType == REPORT_ITEM_TYPE_In))
{ {
/* Get the mouse button value */ /* Get the mouse button value */
FoundData = GetReportItemInfo(MouseReport, ReportItem); FoundData = USB_GetHIDReportItemInfo(MouseReport, ReportItem);
/* For multi-report devices - if the requested data was not in the issued report, continue */ /* For multi-report devices - if the requested data was not in the issued report, continue */
if (!(FoundData)) if (!(FoundData))
@ -328,7 +328,7 @@ void ProcessMouseReport(uint8_t* MouseReport)
(ReportItem->ItemType == REPORT_ITEM_TYPE_In)) (ReportItem->ItemType == REPORT_ITEM_TYPE_In))
{ {
/* Get the mouse relative position value */ /* Get the mouse relative position value */
FoundData = GetReportItemInfo(MouseReport, ReportItem); FoundData = USB_GetHIDReportItemInfo(MouseReport, ReportItem);
/* For multi-report devices - if the requested data was not in the issued report, continue */ /* For multi-report devices - if the requested data was not in the issued report, continue */
if (!(FoundData)) if (!(FoundData))

@ -156,11 +156,11 @@ DESCRIPTOR_COMPARATOR(NextStillImageInterface)
(DESCRIPTOR_CAST(CurrentDescriptor, USB_Descriptor_Interface_t).SubClass == SIMAGE_SUBCLASS) && (DESCRIPTOR_CAST(CurrentDescriptor, USB_Descriptor_Interface_t).SubClass == SIMAGE_SUBCLASS) &&
(DESCRIPTOR_CAST(CurrentDescriptor, USB_Descriptor_Interface_t).Protocol == SIMAGE_PROTOCOL)) (DESCRIPTOR_CAST(CurrentDescriptor, USB_Descriptor_Interface_t).Protocol == SIMAGE_PROTOCOL))
{ {
return Descriptor_Search_Found; return DESCRIPTOR_SEARCH_Found;
} }
} }
return Descriptor_Search_NotFound; return DESCRIPTOR_SEARCH_NotFound;
} }
/** Descriptor comparator function. This comparator function is can be called while processing an attached USB device's /** Descriptor comparator function. This comparator function is can be called while processing an attached USB device's
@ -180,12 +180,12 @@ DESCRIPTOR_COMPARATOR(NextSImageInterfaceDataEndpoint)
USB_Descriptor_Endpoint_t).Attributes & EP_TYPE_MASK); USB_Descriptor_Endpoint_t).Attributes & EP_TYPE_MASK);
if ((EndpointType == EP_TYPE_BULK) || (EndpointType == EP_TYPE_INTERRUPT)) if ((EndpointType == EP_TYPE_BULK) || (EndpointType == EP_TYPE_INTERRUPT))
return Descriptor_Search_Found; return DESCRIPTOR_SEARCH_Found;
} }
else if (DESCRIPTOR_TYPE(CurrentDescriptor) == DTYPE_Interface) else if (DESCRIPTOR_TYPE(CurrentDescriptor) == DTYPE_Interface)
{ {
return Descriptor_Search_Fail; return DESCRIPTOR_SEARCH_Fail;
} }
return Descriptor_Search_NotFound; return DESCRIPTOR_SEARCH_NotFound;
} }

@ -52,6 +52,9 @@
* - Removed "Host_" section of the function names in ConfigDescriptor.h, as most of the routines can now be used in device mode on the * - Removed "Host_" section of the function names in ConfigDescriptor.h, as most of the routines can now be used in device mode on the
* device descriptor * device descriptor
* - Renamed functions in the HID parser to have a "USB_" prefix and the acronym "HID" in the name * - Renamed functions in the HID parser to have a "USB_" prefix and the acronym "HID" in the name
* - Fixed incorrect HID interface class and subclass values in the Mouse and KeyboardMouse demos (thanks to Brian Dickman)
* - Capitolised the "Descriptor_Search" and "Descriptor_Search_Comp" prefixes of the values in the DSearch_Return_ErrorCodes_t and
* DSearch_Comp_Return_ErrorCodes_t enums
* *
* *
* \section Sec_ChangeLog090401 Version 090401 * \section Sec_ChangeLog090401 Version 090401

@ -66,7 +66,7 @@
#if !defined(__DOXYGEN__) #if !defined(__DOXYGEN__)
static inline void HWB_Init(void) static inline void HWB_Init(void)
{ {
// TODO: Initialize the appropriate port pin as an input here, with pullup // TODO: Initialize the appropriate port pin as an input here, with pull-up
} }
static inline bool HWB_GetStatus(void) ATTR_WARN_UNUSED_RESULT; static inline bool HWB_GetStatus(void) ATTR_WARN_UNUSED_RESULT;

@ -75,7 +75,7 @@
#endif #endif
/* Public Interface - May be used in end-application: */ /* Public Interface - May be used in end-application: */
/* Psuedo-Function Macros: */ /* Pseudo-Function Macros: */
#if defined(__DOXYGEN__) #if defined(__DOXYGEN__)
/** Determines the currently selected dataflash chip. /** Determines the currently selected dataflash chip.
* *

@ -82,7 +82,7 @@
/** Maximum returnable temperature from the Temperature_GetTemperature() function. */ /** Maximum returnable temperature from the Temperature_GetTemperature() function. */
#define TEMP_MAX_TEMP ((TEMP_TABLE_SIZE - 1) + TEMP_TABLE_OFFSET) #define TEMP_MAX_TEMP ((TEMP_TABLE_SIZE - 1) + TEMP_TABLE_OFFSET)
/* Psuedo-Functions: */ /* Pseudo-Function Macros: */
#if defined(__DOXYGEN__) #if defined(__DOXYGEN__)
/** Initializes the temperature sensor driver, including setting up the appropriate ADC channel. /** Initializes the temperature sensor driver, including setting up the appropriate ADC channel.
* This must be called before any other temperature sensor routines. * This must be called before any other temperature sensor routines.

@ -63,31 +63,6 @@
/* Public Interface - May be used in end-application: */ /* Public Interface - May be used in end-application: */
/* Macros: */ /* Macros: */
/** Initializes the ADC, ready for conversions. This must be called before any other ADC operations.
* The "mode" parameter should be a mask comprised of a conversion mode (free running or single) and
* prescaler masks.
*/
#define ADC_Init(mode) MACROS{ ADCSRA = ((1 << ADEN) | mode); }MACROE
/** Turns off the ADC. If this is called, any further ADC operations will require a call to the
* ADC_Init() macro before the ADC can be used again.
*/
#define ADC_Off() MACROS{ ADCSRA = 0; }MACROE
/** Indicates if the ADC is enabled. This macro will return boolean true if the ADC subsystem is
* currently enabled, or false otherwise.
*/
#define ADC_GetStatus() ((ADCSRA & (1 << ADEN)) ? true : false)
/** Indicates if the current ADC conversion is completed, or still in progress. This returns boolean
* false if the reading is still taking place, or true if the conversion is complete and ready to be
* read out with ADC_GetResult().
*/
#define ADC_IsReadingComplete() (!(ADCSRA & (1 << ADSC)))
/** Returns the result of the last conversion, as a 16-bit wide integer. */
#define ADC_GetResult() ADC
/** Reference mask, for using the voltage present at the AVR's AREF pin for the ADC reference. */ /** Reference mask, for using the voltage present at the AVR's AREF pin for the ADC reference. */
#define ADC_REFERENCE_AREF 0 #define ADC_REFERENCE_AREF 0
@ -134,6 +109,51 @@
/** Sets the ADC input clock to prescale by a factor of 128 the AVR's system clock. */ /** Sets the ADC input clock to prescale by a factor of 128 the AVR's system clock. */
#define ADC_PRESCALE_128 ((1 << ADPS2) | (1 << ADPS1) | (1 << ADPS0)) #define ADC_PRESCALE_128 ((1 << ADPS2) | (1 << ADPS1) | (1 << ADPS0))
/* Pseudo-Function Macros: */
#if defined(__DOXYGEN__)
/** Initializes the ADC, ready for conversions. This must be called before any other ADC operations.
* The "mode" parameter should be a mask comprised of a conversion mode (free running or single) and
* prescaler masks.
*
* \param Mode Mask of ADC settings, including adjustment, prescale, mode and reference
*/
static inline void ADC_Init(uint8_t Mode);
/** Turns off the ADC. If this is called, any further ADC operations will require a call to
* ADC_Init() before the ADC can be used again.
*/
static inline void ADC_Off(void);
/** Indicates if the ADC is currently enabled.
*
* \return Boolean true if the ADC subsystem is currently enabled, false otherwise.
*/
static inline bool ADC_GetStatus(void);
/** Indicates if the current ADC conversion is completed, or still in progress.
*
* \return Boolean false if the reading is still taking place, or true if the conversion is
* complete and ready to be read out with ADC_GetResult()
*/
static inline bool ADC_IsReadingComplete(void);
/** Retrieves the conversion value of the last completed ADC conversion.
*
* \return The result of the last ADC conversion
*/
static inline uint16_t ADC_GetResult(void);
#else
#define ADC_Init(mode) MACROS{ ADCSRA = ((1 << ADEN) | mode); }MACROE
#define ADC_Off() MACROS{ ADCSRA = 0; }MACROE
#define ADC_GetStatus() ((ADCSRA & (1 << ADEN)) ? true : false)
#define ADC_IsReadingComplete() (!(ADCSRA & (1 << ADSC)))
#define ADC_GetResult() ADC
#endif
/* Inline Functions: */ /* Inline Functions: */
/** Configures the given ADC channel, ready for ADC conversions. This function sets the /** Configures the given ADC channel, ready for ADC conversions. This function sets the
* associated port pin as an input and disables the digital portion of the I/O to reduce * associated port pin as an input and disables the digital portion of the I/O to reduce

@ -74,7 +74,7 @@
*/ */
#define SERIAL_2X_UBBRVAL(baud) (((F_CPU / 8) / baud) - 1) #define SERIAL_2X_UBBRVAL(baud) (((F_CPU / 8) / baud) - 1)
/* Psuedo-Functions: */ /* Pseudo-Function Macros: */
#if defined(__DOXYGEN__) #if defined(__DOXYGEN__)
/** Indicates whether a character has been received through the USART. /** Indicates whether a character has been received through the USART.
* *

@ -125,9 +125,9 @@ uint8_t USB_GetNextDescriptorComp_P(uint16_t* BytesRem, uint8_t** CurrConfigLoc,
USB_GetNextDescriptor(BytesRem, CurrConfigLoc); USB_GetNextDescriptor(BytesRem, CurrConfigLoc);
if ((ErrorCode = ComparatorRoutine(*CurrConfigLoc)) != Descriptor_Search_NotFound) if ((ErrorCode = ComparatorRoutine(*CurrConfigLoc)) != DESCRIPTOR_SEARCH_NotFound)
{ {
if (ErrorCode == Descriptor_Search_Fail) if (ErrorCode == DESCRIPTOR_SEARCH_Fail)
{ {
*CurrConfigLoc = PrevDescLoc; *CurrConfigLoc = PrevDescLoc;
*BytesRem = PrevBytesRem; *BytesRem = PrevBytesRem;
@ -137,5 +137,5 @@ uint8_t USB_GetNextDescriptorComp_P(uint16_t* BytesRem, uint8_t** CurrConfigLoc,
} }
} }
return Descriptor_Search_Comp_EndOfDescriptor; return DESCRIPTOR_SEARCH_COMP_EndOfDescriptor;
} }

@ -122,7 +122,7 @@
*/ */
#define DESCRIPTOR_COMPARATOR(name) uint8_t DCOMP_##name (void* const CurrentDescriptor) #define DESCRIPTOR_COMPARATOR(name) uint8_t DCOMP_##name (void* const CurrentDescriptor)
/* Psuedo-Functions: */ /* Pseudo-Function Macros: */
#if defined(__DOXYGEN__) #if defined(__DOXYGEN__)
/** Searches for the next descriptor in the given configuration descriptor using a premade comparator /** Searches for the next descriptor in the given configuration descriptor using a premade comparator
* function. The routine updates the position and remaining configuration descriptor bytes values * function. The routine updates the position and remaining configuration descriptor bytes values
@ -146,9 +146,9 @@
* DESCRIPTOR_COMPARATOR(EndpointSearcher) * DESCRIPTOR_COMPARATOR(EndpointSearcher)
* { * {
* if (DESCRIPTOR_TYPE(CurrentDescriptor) == DTYPE_Endpoint) * if (DESCRIPTOR_TYPE(CurrentDescriptor) == DTYPE_Endpoint)
* return Descriptor_Search_Found; * return DESCRIPTOR_SEARCH_Found;
* else * else
* return Descriptor_Search_NotFound; * return DESCRIPTOR_SEARCH_NotFound;
* } * }
* *
* //... * //...
@ -169,18 +169,18 @@
/** Enum for return values of a descriptor comparator made with DESCRIPTOR_COMPARATOR. */ /** Enum for return values of a descriptor comparator made with DESCRIPTOR_COMPARATOR. */
enum DSearch_Return_ErrorCodes_t enum DSearch_Return_ErrorCodes_t
{ {
Descriptor_Search_Found = 0, /**< Current descriptor matches comparator criteria. */ DESCRIPTOR_SEARCH_Found = 0, /**< Current descriptor matches comparator criteria. */
Descriptor_Search_Fail = 1, /**< No further descriptor could possibly match criteria, fail the search. */ DESCRIPTOR_SEARCH_Fail = 1, /**< No further descriptor could possibly match criteria, fail the search. */
Descriptor_Search_NotFound = 2, /**< Current descriptor does not match comparator criteria. */ DESCRIPTOR_SEARCH_NotFound = 2, /**< Current descriptor does not match comparator criteria. */
}; };
/** Enum for return values of USB_GetNextDescriptorComp(). */ /** Enum for return values of USB_GetNextDescriptorComp(). */
enum DSearch_Comp_Return_ErrorCodes_t enum DSearch_Comp_Return_ErrorCodes_t
{ {
Descriptor_Search_Comp_Found = 0, /**< Configuration descriptor now points to descriptor which matches DESCRIPTOR_SEARCH_COMP_Found = 0, /**< Configuration descriptor now points to descriptor which matches
* search criteria of the given comparator function. */ * search criteria of the given comparator function. */
Descriptor_Search_Comp_Fail = 1, /**< Comparator function returned Descriptor_Search_Fail. */ DESCRIPTOR_SEARCH_COMP_Fail = 1, /**< Comparator function returned Descriptor_Search_Fail. */
Descriptor_Search_Comp_EndOfDescriptor = 2, /**< End of configuration descriptor reached before match found. */ DESCRIPTOR_SEARCH_COMP_EndOfDescriptor = 2, /**< End of configuration descriptor reached before match found. */
}; };
/* Function Prototypes: */ /* Function Prototypes: */

@ -30,7 +30,7 @@
#include "HIDParser.h" #include "HIDParser.h"
uint8_t ProcessHIDReport(const uint8_t* ReportData, uint16_t ReportSize, HID_ReportInfo_t* const ParserData) uint8_t USB_ProcessHIDReport(const uint8_t* ReportData, uint16_t ReportSize, HID_ReportInfo_t* const ParserData)
{ {
HID_StateTable_t StateTable[HID_STATETABLE_STACK_DEPTH]; HID_StateTable_t StateTable[HID_STATETABLE_STACK_DEPTH];
HID_StateTable_t* CurrStateTable = &StateTable[0]; HID_StateTable_t* CurrStateTable = &StateTable[0];
@ -275,7 +275,7 @@ uint8_t ProcessHIDReport(const uint8_t* ReportData, uint16_t ReportSize, HID_Rep
return HID_PARSE_Successful; return HID_PARSE_Successful;
} }
bool GetReportItemInfo(const uint8_t* ReportData, HID_ReportItem_t* const ReportItem) bool USB_GetHIDReportItemInfo(const uint8_t* ReportData, HID_ReportItem_t* const ReportItem)
{ {
uint16_t DataBitsRem = ReportItem->Attributes.BitSize; uint16_t DataBitsRem = ReportItem->Attributes.BitSize;
uint16_t CurrentBit = ReportItem->BitOffset; uint16_t CurrentBit = ReportItem->BitOffset;
@ -303,7 +303,7 @@ bool GetReportItemInfo(const uint8_t* ReportData, HID_ReportItem_t* const Report
return true; return true;
} }
void SetReportItemInfo(uint8_t* ReportData, const HID_ReportItem_t* ReportItem) void USB_SetHIDReportItemInfo(uint8_t* ReportData, const HID_ReportItem_t* ReportItem)
{ {
uint16_t DataBitsRem = ReportItem->Attributes.BitSize; uint16_t DataBitsRem = ReportItem->Attributes.BitSize;
uint16_t CurrentBit = ReportItem->BitOffset; uint16_t CurrentBit = ReportItem->BitOffset;

@ -31,9 +31,8 @@
/** \ingroup Group_USB /** \ingroup Group_USB
* @defgroup Group_StreamCallbacks Endpoint and Pipe Stream Callbacks * @defgroup Group_StreamCallbacks Endpoint and Pipe Stream Callbacks
* *
* Macros and enums for the stream callback routines in Endpoint.h and Pipe.c. This module contains the * Macros and enums for the stream callback routines. This module contains the code required to easily set up
* code required to easily set up stream callback functions which can be used to force early abort of a * stream callback functions which can be used to force early abort of a stream read/write process.
* stream read/write process.
* *
* @{ * @{
*/ */

@ -86,7 +86,7 @@
/** Indicates if the USB interface is currently suspended by the host when in device mode. When suspended, /** Indicates if the USB interface is currently suspended by the host when in device mode. When suspended,
* the device should consume minimal power, and cannot communicate to the host. If Remote Wakeup is * the device should consume minimal power, and cannot communicate to the host. If Remote Wakeup is
* supported by the device and USB_RemoteWakeupEnabled is true, suspension can be terminated by the device * supported by the device and USB_RemoteWakeupEnabled is true, suspension can be terminated by the device
* by issuing a Remote Wakup request. * by issuing a Remote Wakeup request.
* *
* \note This global is only present if the user application can be a USB device. * \note This global is only present if the user application can be a USB device.
* *

@ -67,7 +67,7 @@
*/ */
#define USB_DEVICE_OPT_FULLSPEED (0 << 0) #define USB_DEVICE_OPT_FULLSPEED (0 << 0)
/* Psuedo-Function Macros: */ /* Pseudo-Function Macros: */
#if defined(__DOXYGEN__) #if defined(__DOXYGEN__)
/** Sends a Remote Wakeup request to the host. This signals to the host that the device should /** Sends a Remote Wakeup request to the host. This signals to the host that the device should
* be taken out of suspended mode, and communications should resume. * be taken out of suspended mode, and communications should resume.

@ -178,7 +178,7 @@
*/ */
#define ENDPOINT_INT_OUT UEIENX, (1 << RXOUTE), UEINTX, (1 << RXOUTI) #define ENDPOINT_INT_OUT UEIENX, (1 << RXOUTE), UEINTX, (1 << RXOUTI)
/* Psuedo-Function Macros: */ /* Pseudo-Function Macros: */
#if defined(__DOXYGEN__) #if defined(__DOXYGEN__)
/** Indicates the number of bytes currently stored in the current endpoint's selected bank. /** Indicates the number of bytes currently stored in the current endpoint's selected bank.
* *

@ -85,7 +85,7 @@
#define HOST_DEVICE_SETTLE_DELAY_MS 1500 #define HOST_DEVICE_SETTLE_DELAY_MS 1500
#endif #endif
/* Psuedo-Function Macros: */ /* Pseudo-Function Macros: */
#if defined(__DOXYGEN__) #if defined(__DOXYGEN__)
/** Resets the USB bus, including the endpoints in any attached device and pipes on the AVR host. /** Resets the USB bus, including the endpoints in any attached device and pipes on the AVR host.
* USB bus resets leave the default control pipe configured (if already configured). * USB bus resets leave the default control pipe configured (if already configured).

@ -61,7 +61,7 @@
*/ */
#define USB_OTG_STP_DATA 0 #define USB_OTG_STP_DATA 0
/* Psuedo-Function Macros: */ /* Pseudo-Function Macros: */
#if defined(__DOXYGEN__) #if defined(__DOXYGEN__)
/** Initiate a Host Negotiation Protocol request. This indicates to the other connected device /** Initiate a Host Negotiation Protocol request. This indicates to the other connected device
* that the device wishes to change device/host roles. * that the device wishes to change device/host roles.

@ -242,7 +242,7 @@
*/ */
#define PIPE_INT_STALL UPIENX, (1 << RXSTALLE), UPINTX, (1 << RXSTALLI) #define PIPE_INT_STALL UPIENX, (1 << RXSTALLE), UPINTX, (1 << RXSTALLI)
/* Psuedo-Function Macros: */ /* Pseudo-Function Macros: */
#if defined(__DOXYGEN__) #if defined(__DOXYGEN__)
/** Indicates the number of bytes currently stored in the current pipes's selected bank. /** Indicates the number of bytes currently stored in the current pipes's selected bank.
* *
@ -367,7 +367,7 @@
* *
* \see Pipe_GetErrorFlags() macro for information on retrieving the exact error flag. * \see Pipe_GetErrorFlags() macro for information on retrieving the exact error flag.
* *
* \return Boolean true if an error has ocurred on the selected pipe, false otherwise * \return Boolean true if an error has occurred on the selected pipe, false otherwise
*/ */
static inline bool Pipe_IsError(void); static inline bool Pipe_IsError(void);
@ -379,7 +379,7 @@
/** Gets a mask of the hardware error flags which have occurred on the currently selected pipe. This /** Gets a mask of the hardware error flags which have occurred on the currently selected pipe. This
* value can then be masked against the PIPE_ERRORFLAG_* masks to determine what error has occurred. * value can then be masked against the PIPE_ERRORFLAG_* masks to determine what error has occurred.
* *
* \return Mask comprising of PIPE_ERRORFLAG_* bits indicating what error has ocurred on the selected pipe * \return Mask comprising of PIPE_ERRORFLAG_* bits indicating what error has occurred on the selected pipe
*/ */
static inline uint8_t Pipe_GetErrorFlags(void); static inline uint8_t Pipe_GetErrorFlags(void);

@ -28,7 +28,7 @@
* on the new endpoint management macros. * on the new endpoint management macros.
* - The Endpoint_ReadWriteAllowed() macro has been renamed to Endpoint_IsReadWriteAllowed() to be more consistent with the rest of * - The Endpoint_ReadWriteAllowed() macro has been renamed to Endpoint_IsReadWriteAllowed() to be more consistent with the rest of
* the API naming scheme. * the API naming scheme.
* - The Endpoint_IsSetupINReady() and Endpoint_IsOutReceived() macros have been renamed to Endpoint_IsINReady() and * - The Endpoint_IsSetupINReady() and Endpoint_IsSetupOutReceived() macros have been renamed to Endpoint_IsINReady() and
* Endpoint_IsOUTReceived() respectively. * Endpoint_IsOUTReceived() respectively.
* - The Endpoint_IsSetupReceived() macro has been renamed to Endpoint_IsSETUPReceived(). * - The Endpoint_IsSetupReceived() macro has been renamed to Endpoint_IsSETUPReceived().
* - The Endpoint_ClearSetupReceived() macro has been renamed to Endpoint_ClearControlSETUP(). * - The Endpoint_ClearSetupReceived() macro has been renamed to Endpoint_ClearControlSETUP().
@ -60,7 +60,8 @@
* - Functions in the ConfigDescriptor.h header file no longer have "Host_" as part of their names. * - Functions in the ConfigDescriptor.h header file no longer have "Host_" as part of their names.
* - The ProcessHIDReport() has been renamed to USB_ProcessHIDReport(), GetReportItemInfo() has been renamed to USB_GetHIDReportItemInfo() * - The ProcessHIDReport() has been renamed to USB_ProcessHIDReport(), GetReportItemInfo() has been renamed to USB_GetHIDReportItemInfo()
* and SetReportItemInfo() has been renamed to USB_GetHIDReportItemInfo(). * and SetReportItemInfo() has been renamed to USB_GetHIDReportItemInfo().
* * - The values of the DSearch_Return_ErrorCodes_t and DSearch_Comp_Return_ErrorCodes_t enums have had their respective "Descriptor_Search"
* and "Descriptor_Search_Comp" prefixes changed to all caps.
* *
* \section Sec_Migration090401 Migrating from 090209 to 090401 * \section Sec_Migration090401 Migrating from 090209 to 090401
* *

@ -133,7 +133,7 @@
/** Task status mode constant, for passing to Scheduler_SetTaskMode() or Scheduler_SetGroupTaskMode(). */ /** Task status mode constant, for passing to Scheduler_SetTaskMode() or Scheduler_SetGroupTaskMode(). */
#define TASK_STOP false #define TASK_STOP false
/* Psuedo-Functions: */ /* Pseudo-Function Macros: */
#if defined(__DOXYGEN__) #if defined(__DOXYGEN__)
/** Starts the scheduler in its infinite loop, executing running tasks. This should be placed at the end /** Starts the scheduler in its infinite loop, executing running tasks. This should be placed at the end
* of the user application's main() function, as it can never return to the calling function. * of the user application's main() function, as it can never return to the calling function.

Loading…
Cancel
Save