1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
|
/***************************************************************************
* Copyright (c) 2024 Microsoft Corporation
* Copyright (c) 2026-present Eclipse ThreadX contributors
*
* This program and the accompanying materials are made available under the
* terms of the MIT License which is available at
* https://opensource.org/licenses/MIT.
*
* SPDX-License-Identifier: MIT
**************************************************************************/
/**************************************************************************/
/**************************************************************************/
/** */
/** USBX Component */
/** */
/** HID Mouse Client Class */
/** */
/**************************************************************************/
/**************************************************************************/
/**************************************************************************/
/* */
/* COMPONENT DEFINITION RELEASE */
/* */
/* ux_host_class_hid_mouse.h PORTABLE C */
/* 6.1.11 */
/* AUTHOR */
/* */
/* Chaoqiong Xiao, Microsoft Corporation */
/* */
/* DESCRIPTION */
/* */
/* This file contains all the header and extern functions used by the */
/* USBX HID mouse class. */
/* */
/**************************************************************************/
#ifndef UX_HOST_CLASS_HID_MOUSE_H
#define UX_HOST_CLASS_HID_MOUSE_H
/* Determine if a C++ compiler is being used. If so, ensure that standard
C is used to process the API information. */
#ifdef __cplusplus
/* Yes, C++ compiler is present. Use standard C. */
extern "C" {
#endif
/* Internal option: enable the basic USBX error checking. This define is typically used
while debugging application. */
#if defined(UX_ENABLE_ERROR_CHECKING) && !defined(UX_DEVICE_CLASS_HID_MOUSE_ENABLE_ERROR_CHECKING)
#define UX_DEVICE_CLASS_HID_MOUSE_ENABLE_ERROR_CHECKING
#endif
/* Define HID Mouse Class constants. */
#define UX_HOST_CLASS_HID_MOUSE_BUFFER_LENGTH 128
#define UX_HOST_CLASS_HID_MOUSE_USAGE_ARRAY_LENGTH 64
#define UX_HOST_CLASS_HID_MOUSE_BUTTON_1 0x00090001
#define UX_HOST_CLASS_HID_MOUSE_BUTTON_2 0x00090002
#define UX_HOST_CLASS_HID_MOUSE_BUTTON_3 0x00090003
#define UX_HOST_CLASS_HID_MOUSE_AXIS_X 0x00010030
#define UX_HOST_CLASS_HID_MOUSE_AXIS_Y 0x00010031
#define UX_HOST_CLASS_HID_MOUSE_BUTTON_1_PRESSED 0x01
#define UX_HOST_CLASS_HID_MOUSE_BUTTON_2_PRESSED 0x02
#define UX_HOST_CLASS_HID_MOUSE_BUTTON_3_PRESSED 0x04
#define UX_HOST_CLASS_HID_MOUSE_WHEEL 0x00010038
/* Define HID Mouse Class structure. */
typedef struct UX_HOST_CLASS_HID_MOUSE_STRUCT
{
ULONG ux_host_class_hid_mouse_state;
UX_HOST_CLASS_HID *ux_host_class_hid_mouse_hid;
USHORT ux_host_class_hid_mouse_id;
SLONG ux_host_class_hid_mouse_x_position;
SLONG ux_host_class_hid_mouse_y_position;
ULONG ux_host_class_hid_mouse_buttons;
SLONG ux_host_class_hid_mouse_wheel;
#if defined(UX_HOST_STANDALONE)
UINT ux_host_class_hid_mouse_enum_state;
UINT ux_host_class_hid_mouse_status;
#endif
} UX_HOST_CLASS_HID_MOUSE;
typedef struct UX_HOST_CLASS_HID_CLIENT_MOUSE_STRUCT
{
UX_HOST_CLASS_HID_MOUSE ux_host_class_hid_client_mouse_mouse;
UX_HOST_CLASS_HID_CLIENT ux_host_class_hid_client_mouse_client;
} UX_HOST_CLASS_HID_CLIENT_MOUSE;
/* Define HID Mouse Class function prototypes. */
UINT _ux_host_class_hid_mouse_activate(UX_HOST_CLASS_HID_CLIENT_COMMAND *command);
VOID _ux_host_class_hid_mouse_callback(UX_HOST_CLASS_HID_REPORT_CALLBACK *callback);
UINT _ux_host_class_hid_mouse_deactivate(UX_HOST_CLASS_HID_CLIENT_COMMAND *command);
UINT _ux_host_class_hid_mouse_entry(UX_HOST_CLASS_HID_CLIENT_COMMAND *command);
UINT _ux_host_class_hid_mouse_buttons_get(UX_HOST_CLASS_HID_MOUSE *mouse_instance,
ULONG *mouse_buttons);
UINT _ux_host_class_hid_mouse_position_get(UX_HOST_CLASS_HID_MOUSE *mouse_instance,
SLONG *mouse_x_position,
SLONG *mouse_y_position);
UINT _ux_host_class_hid_mouse_wheel_get(UX_HOST_CLASS_HID_MOUSE *mouse_instance,
SLONG *mouse_wheel_movement);
UINT _uxe_host_class_hid_mouse_buttons_get(UX_HOST_CLASS_HID_MOUSE *mouse_instance,
ULONG *mouse_buttons);
UINT _uxe_host_class_hid_mouse_position_get(UX_HOST_CLASS_HID_MOUSE *mouse_instance,
SLONG *mouse_x_position,
SLONG *mouse_y_position);
UINT _uxe_host_class_hid_mouse_wheel_get(UX_HOST_CLASS_HID_MOUSE *mouse_instance,
SLONG *mouse_wheel_movement);
/* Define HID Mouse Class API prototypes. */
#define ux_host_class_hid_mouse_entry _ux_host_class_hid_mouse_entry
#if defined(UX_DEVICE_CLASS_HID_MOUSE_ENABLE_ERROR_CHECKING)
#define ux_host_class_hid_mouse_buttons_get _uxe_host_class_hid_mouse_buttons_get
#define ux_host_class_hid_mouse_position_get _uxe_host_class_hid_mouse_position_get
#define ux_host_class_hid_mouse_wheel_get _uxe_host_class_hid_mouse_wheel_get
#else
#define ux_host_class_hid_mouse_buttons_get _ux_host_class_hid_mouse_buttons_get
#define ux_host_class_hid_mouse_position_get _ux_host_class_hid_mouse_position_get
#define ux_host_class_hid_mouse_wheel_get _ux_host_class_hid_mouse_wheel_get
#endif
/* Determine if a C++ compiler is being used. If so, complete the standard
C conditional started above. */
#ifdef __cplusplus
}
#endif
#endif
|