Skip to content
GitLab
Menu
Projects
Groups
Snippets
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
Menu
Open sidebar
Erik Strand
lufa
Commits
ba8ffa4c
Commit
ba8ffa4c
authored
Nov 04, 2009
by
Dean Camera
Browse files
Add support for Mouse Scrollwheel to the MouseHostWithParser demos.
parent
87b2572a
Changes
17
Hide whitespace changes
Inline
Side-by-side
Demos/Host/ClassDriver/MouseHostWithParser/MouseHostWithParser.c
View file @
ba8ffa4c
...
...
@@ -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
))
&&
...
...
Demos/Host/ClassDriver/MouseHostWithParser/MouseHostWithParser.h
View file @
ba8ffa4c
...
...
@@ -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
);
...
...
Demos/Host/ClassDriver/MouseHostWithParser/MouseHostWithParser.txt
View file @
ba8ffa4c
...
...
@@ -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.
*
...
...
Demos/Host/LowLevel/CDCHost/ConfigDescriptor.c
View file @
ba8ffa4c
...
...
@@ -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
)
{
...
...
Demos/Host/LowLevel/GenericHIDHost/ConfigDescriptor.c
View file @
ba8ffa4c
...
...
@@ -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
)
{
...
...
Demos/Host/LowLevel/JoystickHostWithParser/ConfigDescriptor.c
View file @
ba8ffa4c
...
...
@@ -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
)
{
...
...
Demos/Host/LowLevel/KeyboardHost/ConfigDescriptor.c
View file @
ba8ffa4c
...
...
@@ -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
)
{
...
...
Demos/Host/LowLevel/KeyboardHostWithParser/ConfigDescriptor.c
View file @
ba8ffa4c
...
...
@@ -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
)
{
...
...
Demos/Host/LowLevel/MIDIHost/ConfigDescriptor.c
View file @
ba8ffa4c
...
...
@@ -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
)
{
...
...
Demos/Host/LowLevel/MassStorageHost/ConfigDescriptor.c
View file @
ba8ffa4c
...
...
@@ -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
)
{
...
...
Demos/Host/LowLevel/MouseHost/ConfigDescriptor.c
View file @
ba8ffa4c
...
...
@@ -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
)
{
...
...
Demos/Host/LowLevel/MouseHostWithParser/ConfigDescriptor.c
View file @
ba8ffa4c
...
...
@@ -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
)
{
...
...
Demos/Host/LowLevel/MouseHostWithParser/HIDReport.h
View file @
ba8ffa4c
...
...
@@ -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
...
...
Demos/Host/LowLevel/MouseHostWithParser/MouseHostWithParser.c
View file @
ba8ffa4c
...
...
@@ -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
))
&&
...
...
Demos/Host/LowLevel/MouseHostWithParser/MouseHostWithParser.txt
View file @
ba8ffa4c
...
...
@@ -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.
*
...
...
Demos/Host/LowLevel/PrinterHost/ConfigDescriptor.c
View file @
ba8ffa4c
...
...
@@ -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
)
{
...
...
Demos/Host/LowLevel/StillImageHost/ConfigDescriptor.c
View file @
ba8ffa4c
...
...
@@ -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
)
{
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment