From ba8ffa4cb70a45f4e487a874276759d81ae8ae2e Mon Sep 17 00:00:00 2001
From: Dean Camera <dean@fourwalledcubicle.com>
Date: Wed, 4 Nov 2009 05:18:43 +0000
Subject: [PATCH] Add support for Mouse Scrollwheel to the MouseHostWithParser
 demos.

---
 .../MouseHostWithParser/MouseHostWithParser.c     | 15 +++++++++++++++
 .../MouseHostWithParser/MouseHostWithParser.h     |  3 +++
 .../MouseHostWithParser/MouseHostWithParser.txt   |  8 ++++----
 Demos/Host/LowLevel/CDCHost/ConfigDescriptor.c    |  6 +++---
 .../LowLevel/GenericHIDHost/ConfigDescriptor.c    |  4 ++--
 .../JoystickHostWithParser/ConfigDescriptor.c     |  6 +++---
 .../Host/LowLevel/KeyboardHost/ConfigDescriptor.c |  4 ++--
 .../KeyboardHostWithParser/ConfigDescriptor.c     |  6 +++---
 Demos/Host/LowLevel/MIDIHost/ConfigDescriptor.c   |  4 ++--
 .../LowLevel/MassStorageHost/ConfigDescriptor.c   |  4 ++--
 Demos/Host/LowLevel/MouseHost/ConfigDescriptor.c  |  4 ++--
 .../MouseHostWithParser/ConfigDescriptor.c        |  6 +++---
 .../Host/LowLevel/MouseHostWithParser/HIDReport.h |  3 +++
 .../MouseHostWithParser/MouseHostWithParser.c     | 15 +++++++++++++++
 .../MouseHostWithParser/MouseHostWithParser.txt   |  8 ++++----
 .../Host/LowLevel/PrinterHost/ConfigDescriptor.c  |  4 ++--
 .../LowLevel/StillImageHost/ConfigDescriptor.c    |  4 ++--
 17 files changed, 70 insertions(+), 34 deletions(-)

diff --git a/Demos/Host/ClassDriver/MouseHostWithParser/MouseHostWithParser.c b/Demos/Host/ClassDriver/MouseHostWithParser/MouseHostWithParser.c
index b9edee1e1..80ddc5527 100644
--- a/Demos/Host/ClassDriver/MouseHostWithParser/MouseHostWithParser.c
+++ b/Demos/Host/ClassDriver/MouseHostWithParser/MouseHostWithParser.c
@@ -141,6 +141,21 @@ int main(void)
 							if (ReportItem->Value)
 							  LEDMask = LEDS_ALL_LEDS;
 						}
+						else if ((ReportItem->Attributes.Usage.Page   == USAGE_PAGE_GENERIC_DCTRL) &&
+								 (ReportItem->Attributes.Usage.Usage  == USAGE_SCROLL_WHEEL)       &&
+								 (ReportItem->ItemType                == REPORT_ITEM_TYPE_In))
+						{
+							/* Get the mouse wheel value if it is contained within the current 
+							 * report, if not, skip to the next item in the parser list
+							 */
+							if (!(USB_GetHIDReportItemInfo(MouseReport, ReportItem)))
+							  continue;							  
+
+							int16_t WheelDelta = (int16_t)(ReportItem->Value << (16 - ReportItem->Attributes.BitSize));
+							
+							if (WheelDelta)
+							  LEDMask = (LEDS_LED1 | LEDS_LED2 | ((WheelDelta > 0) ? LEDS_LED3 : LEDS_LED4));
+						}
 						else if ((ReportItem->Attributes.Usage.Page   == USAGE_PAGE_GENERIC_DCTRL) &&
 								 ((ReportItem->Attributes.Usage.Usage == USAGE_X)                  ||
 								  (ReportItem->Attributes.Usage.Usage == USAGE_Y))                 &&
diff --git a/Demos/Host/ClassDriver/MouseHostWithParser/MouseHostWithParser.h b/Demos/Host/ClassDriver/MouseHostWithParser/MouseHostWithParser.h
index 894c1d28a..6eed93d94 100644
--- a/Demos/Host/ClassDriver/MouseHostWithParser/MouseHostWithParser.h
+++ b/Demos/Host/ClassDriver/MouseHostWithParser/MouseHostWithParser.h
@@ -78,6 +78,9 @@
 		/** HID Report Descriptor Usage value for a Y axis movement */
 		#define USAGE_Y                     0x31
 		
+		/** HID Report Descriptor Usage value for a Scroll Wheel movement */
+		#define USAGE_SCROLL_WHEEL          0x38
+
 	/* Function Prototypes: */
 		void SetupHardware(void);
 	
diff --git a/Demos/Host/ClassDriver/MouseHostWithParser/MouseHostWithParser.txt b/Demos/Host/ClassDriver/MouseHostWithParser/MouseHostWithParser.txt
index 79bc5c432..a6f05ac40 100644
--- a/Demos/Host/ClassDriver/MouseHostWithParser/MouseHostWithParser.txt
+++ b/Demos/Host/ClassDriver/MouseHostWithParser/MouseHostWithParser.txt
@@ -47,10 +47,10 @@
  *  reports, allowing for correct operation across all USB mice. This
  *  demo supports mice with a single HID report.
  *  
- *  Mouse movement and button presses are displayed on the board LEDs.
- *  On connection to a USB mouse, the report items will be processed and
- *  printed as a formatted list through the USART before the mouse is
- *  fully enumerated.
+ *  Mouse and scroll wheel movement and button presses are displayed
+ *  on the board LEDs. On connection to a USB mouse, the report items
+ *  will be processed and printed as a formatted list through the USART
+ *  before the mouse is fully enumerated.
  *  
  *  Currently only single interface mice are supported.
  *
diff --git a/Demos/Host/LowLevel/CDCHost/ConfigDescriptor.c b/Demos/Host/LowLevel/CDCHost/ConfigDescriptor.c
index be0e46766..a3e6b778e 100644
--- a/Demos/Host/LowLevel/CDCHost/ConfigDescriptor.c
+++ b/Demos/Host/LowLevel/CDCHost/ConfigDescriptor.c
@@ -174,7 +174,7 @@ uint8_t ProcessConfigurationDescriptor(void)
  *
  *  This comparator searches for the next Interface descriptor of the correct CDC control Class, Subclass and Protocol values.
  *
- *  \return A value from the \ref DSEARCH_Return_ErrorCodes_t enum
+ *  \return A value from the DSEARCH_Return_ErrorCodes_t enum
  */
 uint8_t DComp_NextCDCControlInterface(void* CurrentDescriptor)
 {
@@ -198,7 +198,7 @@ uint8_t DComp_NextCDCControlInterface(void* CurrentDescriptor)
  *
  *  This comparator searches for the next Interface descriptor of the correct CDC data Class, Subclass and Protocol values.
  *
- *  \return A value from the \ref DSEARCH_Return_ErrorCodes_t enum
+ *  \return A value from the DSEARCH_Return_ErrorCodes_t enum
  */
 uint8_t DComp_NextCDCDataInterface(void* CurrentDescriptor)
 {
@@ -224,7 +224,7 @@ uint8_t DComp_NextCDCDataInterface(void* CurrentDescriptor)
  *  aborting the search if another interface descriptor is found before the required endpoint (so that it may be compared
  *  using a different comparator to determine if it is another CDC class interface).
  *
- *  \return A value from the \ref DSEARCH_Return_ErrorCodes_t enum
+ *  \return A value from the DSEARCH_Return_ErrorCodes_t enum
  */
 uint8_t DComp_NextCDCDataInterfaceEndpoint(void* CurrentDescriptor)
 {
diff --git a/Demos/Host/LowLevel/GenericHIDHost/ConfigDescriptor.c b/Demos/Host/LowLevel/GenericHIDHost/ConfigDescriptor.c
index b02d9f61b..b035862a1 100644
--- a/Demos/Host/LowLevel/GenericHIDHost/ConfigDescriptor.c
+++ b/Demos/Host/LowLevel/GenericHIDHost/ConfigDescriptor.c
@@ -120,7 +120,7 @@ uint8_t ProcessConfigurationDescriptor(void)
  *
  *  This comparator searches for the next Interface descriptor of the correct HID Class value.
  *
- *  \return A value from the \ref DSEARCH_Return_ErrorCodes_t enum
+ *  \return A value from the DSEARCH_Return_ErrorCodes_t enum
  */
 uint8_t DComp_NextHIDInterface(void* CurrentDescriptor)
 {
@@ -146,7 +146,7 @@ uint8_t DComp_NextHIDInterface(void* CurrentDescriptor)
  *  This comparator searches for the next Endpoint descriptor inside the current interface descriptor,
  *  aborting the search if another interface descriptor is found before the required endpoint.
  *
- *  \return A value from the \ref DSEARCH_Return_ErrorCodes_t enum
+ *  \return A value from the DSEARCH_Return_ErrorCodes_t enum
  */
 uint8_t DComp_NextHIDInterfaceDataEndpoint(void* CurrentDescriptor)
 {
diff --git a/Demos/Host/LowLevel/JoystickHostWithParser/ConfigDescriptor.c b/Demos/Host/LowLevel/JoystickHostWithParser/ConfigDescriptor.c
index 77392dc93..9d4b20121 100644
--- a/Demos/Host/LowLevel/JoystickHostWithParser/ConfigDescriptor.c
+++ b/Demos/Host/LowLevel/JoystickHostWithParser/ConfigDescriptor.c
@@ -108,7 +108,7 @@ uint8_t ProcessConfigurationDescriptor(void)
  *
  *  This comparator searches for the next Interface descriptor of the correct Joystick HID Class and Protocol values.
  *
- *  \return A value from the \ref DSEARCH_Return_ErrorCodes_t enum
+ *  \return A value from the DSEARCH_Return_ErrorCodes_t enum
  */
 uint8_t DComp_NextJoystickInterface(void* CurrentDescriptor)
 {
@@ -132,7 +132,7 @@ uint8_t DComp_NextJoystickInterface(void* CurrentDescriptor)
  *  This comparator searches for the next IN Endpoint descriptor inside the current interface descriptor,
  *  aborting the search if another interface descriptor is found before the required endpoint.
  *
- *  \return A value from the \ref DSEARCH_Return_ErrorCodes_t enum
+ *  \return A value from the DSEARCH_Return_ErrorCodes_t enum
  */
 uint8_t DComp_NextJoystickInterfaceDataEndpoint(void* CurrentDescriptor)
 {
@@ -155,7 +155,7 @@ uint8_t DComp_NextJoystickInterfaceDataEndpoint(void* CurrentDescriptor)
  *
  *  This comparator searches for the next HID descriptor within the current HID interface descriptor.
  *
- *  \return A value from the \ref DSEARCH_Return_ErrorCodes_t enum
+ *  \return A value from the DSEARCH_Return_ErrorCodes_t enum
  */
 uint8_t DComp_NextHID(void* CurrentDescriptor)
 {
diff --git a/Demos/Host/LowLevel/KeyboardHost/ConfigDescriptor.c b/Demos/Host/LowLevel/KeyboardHost/ConfigDescriptor.c
index 67bc86416..03ee2cd16 100644
--- a/Demos/Host/LowLevel/KeyboardHost/ConfigDescriptor.c
+++ b/Demos/Host/LowLevel/KeyboardHost/ConfigDescriptor.c
@@ -97,7 +97,7 @@ uint8_t ProcessConfigurationDescriptor(void)
  *
  *  This comparator searches for the next Interface descriptor of the correct Keyboard HID Class and Protocol values.
  *
- *  \return A value from the \ref DSEARCH_Return_ErrorCodes_t enum
+ *  \return A value from the DSEARCH_Return_ErrorCodes_t enum
  */
 uint8_t DComp_NextKeyboardInterface(void* CurrentDescriptor)
 {
@@ -121,7 +121,7 @@ uint8_t DComp_NextKeyboardInterface(void* CurrentDescriptor)
  *  This comparator searches for the next IN Endpoint descriptor inside the current interface descriptor,
  *  aborting the search if another interface descriptor is found before the required endpoint.
  *
- *  \return A value from the \ref DSEARCH_Return_ErrorCodes_t enum
+ *  \return A value from the DSEARCH_Return_ErrorCodes_t enum
  */
 uint8_t DComp_NextKeyboardInterfaceDataEndpoint(void* CurrentDescriptor)
 {
diff --git a/Demos/Host/LowLevel/KeyboardHostWithParser/ConfigDescriptor.c b/Demos/Host/LowLevel/KeyboardHostWithParser/ConfigDescriptor.c
index 52f9a0f69..e587a7532 100644
--- a/Demos/Host/LowLevel/KeyboardHostWithParser/ConfigDescriptor.c
+++ b/Demos/Host/LowLevel/KeyboardHostWithParser/ConfigDescriptor.c
@@ -108,7 +108,7 @@ uint8_t ProcessConfigurationDescriptor(void)
  *
  *  This comparator searches for the next Interface descriptor of the correct Keyboard HID Class and Protocol values.
  *
- *  \return A value from the \ref DSEARCH_Return_ErrorCodes_t enum
+ *  \return A value from the DSEARCH_Return_ErrorCodes_t enum
  */
 uint8_t DComp_NextKeyboardInterface(void* CurrentDescriptor)
 {
@@ -132,7 +132,7 @@ uint8_t DComp_NextKeyboardInterface(void* CurrentDescriptor)
  *  This comparator searches for the next IN Endpoint descriptor inside the current interface descriptor,
  *  aborting the search if another interface descriptor is found before the required endpoint.
  *
- *  \return A value from the \ref DSEARCH_Return_ErrorCodes_t enum
+ *  \return A value from the DSEARCH_Return_ErrorCodes_t enum
  */
 uint8_t DComp_NextKeyboardInterfaceDataEndpoint(void* CurrentDescriptor)
 {
@@ -155,7 +155,7 @@ uint8_t DComp_NextKeyboardInterfaceDataEndpoint(void* CurrentDescriptor)
  *
  *  This comparator searches for the next HID descriptor within the current HID interface descriptor.
  *
- *  \return A value from the \ref DSEARCH_Return_ErrorCodes_t enum
+ *  \return A value from the DSEARCH_Return_ErrorCodes_t enum
  */
 uint8_t DComp_NextHID(void* CurrentDescriptor)
 {
diff --git a/Demos/Host/LowLevel/MIDIHost/ConfigDescriptor.c b/Demos/Host/LowLevel/MIDIHost/ConfigDescriptor.c
index ae75c8e48..655e7795d 100644
--- a/Demos/Host/LowLevel/MIDIHost/ConfigDescriptor.c
+++ b/Demos/Host/LowLevel/MIDIHost/ConfigDescriptor.c
@@ -117,7 +117,7 @@ uint8_t ProcessConfigurationDescriptor(void)
  *
  *  This comparator searches for the next Interface descriptor of the correct MIDI Streaming Class, Subclass and Protocol values.
  *
- *  \return A value from the \ref DSEARCH_Return_ErrorCodes_t enum
+ *  \return A value from the DSEARCH_Return_ErrorCodes_t enum
  */
 uint8_t DComp_NextMIDIStreamingInterface(void* CurrentDescriptor)
 {
@@ -142,7 +142,7 @@ uint8_t DComp_NextMIDIStreamingInterface(void* CurrentDescriptor)
  *  This comparator searches for the next bulk IN or OUT endpoint within the current interface, aborting the search if
  *  another interface descriptor is found before the required endpoint.
  *
- *  \return A value from the \ref DSEARCH_Return_ErrorCodes_t enum
+ *  \return A value from the DSEARCH_Return_ErrorCodes_t enum
  */
 uint8_t DComp_NextMIDIStreamingDataEndpoint(void* CurrentDescriptor)
 {
diff --git a/Demos/Host/LowLevel/MassStorageHost/ConfigDescriptor.c b/Demos/Host/LowLevel/MassStorageHost/ConfigDescriptor.c
index 3feb624ca..a18d7ce69 100644
--- a/Demos/Host/LowLevel/MassStorageHost/ConfigDescriptor.c
+++ b/Demos/Host/LowLevel/MassStorageHost/ConfigDescriptor.c
@@ -119,7 +119,7 @@ uint8_t ProcessConfigurationDescriptor(void)
  *
  *  This comparator searches for the next Interface descriptor of the correct Mass Storage Class, Subclass and Protocol values.
  *
- *  \return A value from the \ref DSEARCH_Return_ErrorCodes_t enum
+ *  \return A value from the DSEARCH_Return_ErrorCodes_t enum
  */
 uint8_t DComp_NextMSInterface(void* CurrentDescriptor)
 {
@@ -144,7 +144,7 @@ uint8_t DComp_NextMSInterface(void* CurrentDescriptor)
  *  This comparator searches for the next Bulk Endpoint descriptor of the correct MSD interface, aborting the search if
  *  another interface descriptor is found before the next endpoint.
  *
- *  \return A value from the \ref DSEARCH_Return_ErrorCodes_t enum
+ *  \return A value from the DSEARCH_Return_ErrorCodes_t enum
  */
 uint8_t DComp_NextMSInterfaceBulkDataEndpoint(void* CurrentDescriptor)
 {
diff --git a/Demos/Host/LowLevel/MouseHost/ConfigDescriptor.c b/Demos/Host/LowLevel/MouseHost/ConfigDescriptor.c
index 8df0566b4..ee260ab1d 100644
--- a/Demos/Host/LowLevel/MouseHost/ConfigDescriptor.c
+++ b/Demos/Host/LowLevel/MouseHost/ConfigDescriptor.c
@@ -97,7 +97,7 @@ uint8_t ProcessConfigurationDescriptor(void)
  *
  *  This comparator searches for the next Interface descriptor of the correct Mouse HID Class and Protocol values.
  *
- *  \return A value from the \ref DSEARCH_Return_ErrorCodes_t enum
+ *  \return A value from the DSEARCH_Return_ErrorCodes_t enum
  */
 uint8_t DComp_NextMouseInterface(void* CurrentDescriptor)
 {
@@ -124,7 +124,7 @@ uint8_t DComp_NextMouseInterface(void* CurrentDescriptor)
  *  This comparator searches for the next IN Endpoint descriptor inside the current interface descriptor,
  *  aborting the search if another interface descriptor is found before the required endpoint.
  *
- *  \return A value from the \ref DSEARCH_Return_ErrorCodes_t enum
+ *  \return A value from the DSEARCH_Return_ErrorCodes_t enum
  */
 uint8_t DComp_NextMouseInterfaceDataEndpoint(void* CurrentDescriptor)
 {
diff --git a/Demos/Host/LowLevel/MouseHostWithParser/ConfigDescriptor.c b/Demos/Host/LowLevel/MouseHostWithParser/ConfigDescriptor.c
index 6347fd841..3c051185c 100644
--- a/Demos/Host/LowLevel/MouseHostWithParser/ConfigDescriptor.c
+++ b/Demos/Host/LowLevel/MouseHostWithParser/ConfigDescriptor.c
@@ -108,7 +108,7 @@ uint8_t ProcessConfigurationDescriptor(void)
  *
  *  This comparator searches for the next Interface descriptor of the correct Mouse HID Class and Protocol values.
  *
- *  \return A value from the \ref DSEARCH_Return_ErrorCodes_t enum
+ *  \return A value from the DSEARCH_Return_ErrorCodes_t enum
  */
 uint8_t DComp_NextMouseInterface(void* CurrentDescriptor)
 {
@@ -132,7 +132,7 @@ uint8_t DComp_NextMouseInterface(void* CurrentDescriptor)
  *  This comparator searches for the next IN Endpoint descriptor inside the current interface descriptor,
  *  aborting the search if another interface descriptor is found before the required endpoint.
  *
- *  \return A value from the \ref DSEARCH_Return_ErrorCodes_t enum
+ *  \return A value from the DSEARCH_Return_ErrorCodes_t enum
  */
 uint8_t DComp_NextMouseInterfaceDataEndpoint(void* CurrentDescriptor)
 {
@@ -155,7 +155,7 @@ uint8_t DComp_NextMouseInterfaceDataEndpoint(void* CurrentDescriptor)
  *
  *  This comparator searches for the next HID descriptor within the current HID interface descriptor.
  *
- *  \return A value from the \ref DSEARCH_Return_ErrorCodes_t enum
+ *  \return A value from the DSEARCH_Return_ErrorCodes_t enum
  */
 uint8_t DComp_NextHID(void* CurrentDescriptor)
 {
diff --git a/Demos/Host/LowLevel/MouseHostWithParser/HIDReport.h b/Demos/Host/LowLevel/MouseHostWithParser/HIDReport.h
index 41966da17..cbbac3ee5 100644
--- a/Demos/Host/LowLevel/MouseHostWithParser/HIDReport.h
+++ b/Demos/Host/LowLevel/MouseHostWithParser/HIDReport.h
@@ -58,6 +58,9 @@
 		/** HID Report Descriptor Usage value for a Y axis movement */
 		#define USAGE_Y                     0x31
 
+		/** HID Report Descriptor Usage value for a Scroll Wheel movement */
+		#define USAGE_SCROLL_WHEEL          0x38
+		
 	/* Enums: */
 		/** Enum for the possible return codes of the GetHIDReportData() function. */
 		enum MouseHostWithParser_GetHIDReportDataCodes_t
diff --git a/Demos/Host/LowLevel/MouseHostWithParser/MouseHostWithParser.c b/Demos/Host/LowLevel/MouseHostWithParser/MouseHostWithParser.c
index 736ab522a..d84e2d3ce 100644
--- a/Demos/Host/LowLevel/MouseHostWithParser/MouseHostWithParser.c
+++ b/Demos/Host/LowLevel/MouseHostWithParser/MouseHostWithParser.c
@@ -270,6 +270,21 @@ void ProcessMouseReport(uint8_t* MouseReport)
 			if (ReportItem->Value)
 			  LEDMask = LEDS_ALL_LEDS;
 		}
+		else if ((ReportItem->Attributes.Usage.Page   == USAGE_PAGE_GENERIC_DCTRL) &&
+				 (ReportItem->Attributes.Usage.Usage  == USAGE_SCROLL_WHEEL)       &&
+				 (ReportItem->ItemType                == REPORT_ITEM_TYPE_In))
+		{
+			/* Get the mouse wheel value if it is contained within the current 
+			 * report, if not, skip to the next item in the parser list
+			 */
+			if (!(USB_GetHIDReportItemInfo(MouseReport, ReportItem)))
+			  continue;							  
+
+			int16_t WheelDelta = (int16_t)(ReportItem->Value << (16 - ReportItem->Attributes.BitSize));
+			
+			if (WheelDelta)
+			  LEDMask = (LEDS_LED1 | LEDS_LED2 | ((WheelDelta > 0) ? LEDS_LED3 : LEDS_LED4));
+		}
 		else if ((ReportItem->Attributes.Usage.Page   == USAGE_PAGE_GENERIC_DCTRL) &&
 				 ((ReportItem->Attributes.Usage.Usage == USAGE_X)                  ||
 				  (ReportItem->Attributes.Usage.Usage == USAGE_Y))                 &&
diff --git a/Demos/Host/LowLevel/MouseHostWithParser/MouseHostWithParser.txt b/Demos/Host/LowLevel/MouseHostWithParser/MouseHostWithParser.txt
index 79bc5c432..a6f05ac40 100644
--- a/Demos/Host/LowLevel/MouseHostWithParser/MouseHostWithParser.txt
+++ b/Demos/Host/LowLevel/MouseHostWithParser/MouseHostWithParser.txt
@@ -47,10 +47,10 @@
  *  reports, allowing for correct operation across all USB mice. This
  *  demo supports mice with a single HID report.
  *  
- *  Mouse movement and button presses are displayed on the board LEDs.
- *  On connection to a USB mouse, the report items will be processed and
- *  printed as a formatted list through the USART before the mouse is
- *  fully enumerated.
+ *  Mouse and scroll wheel movement and button presses are displayed
+ *  on the board LEDs. On connection to a USB mouse, the report items
+ *  will be processed and printed as a formatted list through the USART
+ *  before the mouse is fully enumerated.
  *  
  *  Currently only single interface mice are supported.
  *
diff --git a/Demos/Host/LowLevel/PrinterHost/ConfigDescriptor.c b/Demos/Host/LowLevel/PrinterHost/ConfigDescriptor.c
index 043f1ad9c..9ee5ec684 100644
--- a/Demos/Host/LowLevel/PrinterHost/ConfigDescriptor.c
+++ b/Demos/Host/LowLevel/PrinterHost/ConfigDescriptor.c
@@ -122,7 +122,7 @@ uint8_t ProcessConfigurationDescriptor(void)
  *  This comparator searches for the next Bidirectional Printer Interface descriptor of the current Printer interface,
  *  aborting the search if the end of the descriptors is found.
  *
- *  \return A value from the \ref DSEARCH_Return_ErrorCodes_t enum
+ *  \return A value from the DSEARCH_Return_ErrorCodes_t enum
  */
 uint8_t DComp_NextBidirectionalPrinterInterface(void* CurrentDescriptor)
 {
@@ -147,7 +147,7 @@ uint8_t DComp_NextBidirectionalPrinterInterface(void* CurrentDescriptor)
  *  This comparator searches for the next Bulk Endpoint descriptor of the current Printer interface, aborting the
  *  search if another interface descriptor is found before the next endpoint.
  *
- *  \return A value from the \ref DSEARCH_Return_ErrorCodes_t enum
+ *  \return A value from the DSEARCH_Return_ErrorCodes_t enum
  */
 uint8_t DComp_NextPrinterInterfaceBulkDataEndpoint(void* CurrentDescriptor)
 {
diff --git a/Demos/Host/LowLevel/StillImageHost/ConfigDescriptor.c b/Demos/Host/LowLevel/StillImageHost/ConfigDescriptor.c
index 8163beb45..5cee61bf0 100644
--- a/Demos/Host/LowLevel/StillImageHost/ConfigDescriptor.c
+++ b/Demos/Host/LowLevel/StillImageHost/ConfigDescriptor.c
@@ -139,7 +139,7 @@ uint8_t ProcessConfigurationDescriptor(void)
  *
  *  This comparator searches for the next Interface descriptor of the correct Still Image Class, Subclass and Protocol values.
  *
- *  \return A value from the \ref DSEARCH_Return_ErrorCodes_t enum
+ *  \return A value from the DSEARCH_Return_ErrorCodes_t enum
  */
 uint8_t DComp_NextStillImageInterface(void* CurrentDescriptor)
 {
@@ -164,7 +164,7 @@ uint8_t DComp_NextStillImageInterface(void* CurrentDescriptor)
  *  This comparator searches for the next Interrupt or Bulk Endpoint descriptor of the current SI interface, aborting the
  *  search if another interface descriptor is found before the next endpoint.
  *
- *  \return A value from the \ref DSEARCH_Return_ErrorCodes_t enum
+ *  \return A value from the DSEARCH_Return_ErrorCodes_t enum
  */
 uint8_t DComp_NextStillImageInterfaceDataEndpoint(void* CurrentDescriptor)
 {
-- 
GitLab