Mercurial > louis > kiibohd-controller
annotate Output/pjrcUSB/arm/usb_mouse.c @ 369:ce9720634c15
Forgot to add these files in an earlier commit
author | Jacob Alexander <haata@kiibohd.com> |
---|---|
date | Fri, 21 Aug 2015 18:26:46 -0700 |
parents | |
children | 970dab727f47 |
rev | line source |
---|---|
369
ce9720634c15
Forgot to add these files in an earlier commit
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
1 /* Teensyduino Core Library |
ce9720634c15
Forgot to add these files in an earlier commit
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
2 * http://www.pjrc.com/teensy/ |
ce9720634c15
Forgot to add these files in an earlier commit
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
3 * Copyright (c) 2013 PJRC.COM, LLC. |
ce9720634c15
Forgot to add these files in an earlier commit
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
4 * Modified by Jacob Alexander (2015) |
ce9720634c15
Forgot to add these files in an earlier commit
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
5 * |
ce9720634c15
Forgot to add these files in an earlier commit
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
6 * Permission is hereby granted, free of charge, to any person obtaining |
ce9720634c15
Forgot to add these files in an earlier commit
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
7 * a copy of this software and associated documentation files (the |
ce9720634c15
Forgot to add these files in an earlier commit
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
8 * "Software"), to deal in the Software without restriction, including |
ce9720634c15
Forgot to add these files in an earlier commit
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
9 * without limitation the rights to use, copy, modify, merge, publish, |
ce9720634c15
Forgot to add these files in an earlier commit
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
10 * distribute, sublicense, and/or sell copies of the Software, and to |
ce9720634c15
Forgot to add these files in an earlier commit
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
11 * permit persons to whom the Software is furnished to do so, subject to |
ce9720634c15
Forgot to add these files in an earlier commit
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
12 * the following conditions: |
ce9720634c15
Forgot to add these files in an earlier commit
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
13 * |
ce9720634c15
Forgot to add these files in an earlier commit
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
14 * 1. The above copyright notice and this permission notice shall be |
ce9720634c15
Forgot to add these files in an earlier commit
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
15 * included in all copies or substantial portions of the Software. |
ce9720634c15
Forgot to add these files in an earlier commit
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
16 * |
ce9720634c15
Forgot to add these files in an earlier commit
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
17 * 2. If the Software is incorporated into a build system that allows |
ce9720634c15
Forgot to add these files in an earlier commit
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
18 * selection among a list of target devices, then similar target |
ce9720634c15
Forgot to add these files in an earlier commit
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
19 * devices manufactured by PJRC.COM must be included in the list of |
ce9720634c15
Forgot to add these files in an earlier commit
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
20 * target devices and selectable in the same manner. |
ce9720634c15
Forgot to add these files in an earlier commit
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
21 * |
ce9720634c15
Forgot to add these files in an earlier commit
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
22 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, |
ce9720634c15
Forgot to add these files in an earlier commit
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
23 * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF |
ce9720634c15
Forgot to add these files in an earlier commit
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
24 * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND |
ce9720634c15
Forgot to add these files in an earlier commit
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
25 * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS |
ce9720634c15
Forgot to add these files in an earlier commit
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
26 * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN |
ce9720634c15
Forgot to add these files in an earlier commit
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
27 * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN |
ce9720634c15
Forgot to add these files in an earlier commit
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
28 * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE |
ce9720634c15
Forgot to add these files in an earlier commit
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
29 * SOFTWARE. |
ce9720634c15
Forgot to add these files in an earlier commit
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
30 */ |
ce9720634c15
Forgot to add these files in an earlier commit
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
31 |
ce9720634c15
Forgot to add these files in an earlier commit
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
32 // ----- Includes ----- |
ce9720634c15
Forgot to add these files in an earlier commit
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
33 |
ce9720634c15
Forgot to add these files in an earlier commit
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
34 // Compiler Includes |
ce9720634c15
Forgot to add these files in an earlier commit
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
35 #include <string.h> // for memcpy() |
ce9720634c15
Forgot to add these files in an earlier commit
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
36 |
ce9720634c15
Forgot to add these files in an earlier commit
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
37 // Project Includes |
ce9720634c15
Forgot to add these files in an earlier commit
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
38 #include <Lib/OutputLib.h> |
ce9720634c15
Forgot to add these files in an earlier commit
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
39 #include <print.h> |
ce9720634c15
Forgot to add these files in an earlier commit
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
40 |
ce9720634c15
Forgot to add these files in an earlier commit
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
41 // Local Includes |
ce9720634c15
Forgot to add these files in an earlier commit
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
42 #include "usb_dev.h" |
ce9720634c15
Forgot to add these files in an earlier commit
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
43 #include "usb_mouse.h" |
ce9720634c15
Forgot to add these files in an earlier commit
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
44 |
ce9720634c15
Forgot to add these files in an earlier commit
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
45 |
ce9720634c15
Forgot to add these files in an earlier commit
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
46 |
ce9720634c15
Forgot to add these files in an earlier commit
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
47 // ----- Defines ----- |
ce9720634c15
Forgot to add these files in an earlier commit
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
48 |
ce9720634c15
Forgot to add these files in an earlier commit
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
49 // Maximum number of transmit packets to queue so we don't starve other endpoints for memory |
ce9720634c15
Forgot to add these files in an earlier commit
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
50 #define TX_PACKET_LIMIT 3 |
ce9720634c15
Forgot to add these files in an earlier commit
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
51 |
ce9720634c15
Forgot to add these files in an earlier commit
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
52 // When the PC isn't listening, how long do we wait before discarding data? |
ce9720634c15
Forgot to add these files in an earlier commit
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
53 #define TX_TIMEOUT_MSEC 30 |
ce9720634c15
Forgot to add these files in an earlier commit
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
54 |
ce9720634c15
Forgot to add these files in an earlier commit
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
55 #if F_CPU == 168000000 |
ce9720634c15
Forgot to add these files in an earlier commit
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
56 #define TX_TIMEOUT (TX_TIMEOUT_MSEC * 1100) |
ce9720634c15
Forgot to add these files in an earlier commit
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
57 #elif F_CPU == 144000000 |
ce9720634c15
Forgot to add these files in an earlier commit
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
58 #define TX_TIMEOUT (TX_TIMEOUT_MSEC * 932) |
ce9720634c15
Forgot to add these files in an earlier commit
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
59 #elif F_CPU == 120000000 |
ce9720634c15
Forgot to add these files in an earlier commit
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
60 #define TX_TIMEOUT (TX_TIMEOUT_MSEC * 764) |
ce9720634c15
Forgot to add these files in an earlier commit
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
61 #elif F_CPU == 96000000 |
ce9720634c15
Forgot to add these files in an earlier commit
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
62 #define TX_TIMEOUT (TX_TIMEOUT_MSEC * 596) |
ce9720634c15
Forgot to add these files in an earlier commit
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
63 #elif F_CPU == 72000000 |
ce9720634c15
Forgot to add these files in an earlier commit
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
64 #define TX_TIMEOUT (TX_TIMEOUT_MSEC * 512) |
ce9720634c15
Forgot to add these files in an earlier commit
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
65 #elif F_CPU == 48000000 |
ce9720634c15
Forgot to add these files in an earlier commit
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
66 #define TX_TIMEOUT (TX_TIMEOUT_MSEC * 428) |
ce9720634c15
Forgot to add these files in an earlier commit
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
67 #elif F_CPU == 24000000 |
ce9720634c15
Forgot to add these files in an earlier commit
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
68 #define TX_TIMEOUT (TX_TIMEOUT_MSEC * 262) |
ce9720634c15
Forgot to add these files in an earlier commit
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
69 #endif |
ce9720634c15
Forgot to add these files in an earlier commit
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
70 |
ce9720634c15
Forgot to add these files in an earlier commit
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
71 //#define DEFAULT_XRES 640 |
ce9720634c15
Forgot to add these files in an earlier commit
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
72 //#define DEFAULT_YRES 480 |
ce9720634c15
Forgot to add these files in an earlier commit
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
73 |
ce9720634c15
Forgot to add these files in an earlier commit
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
74 //#define DEFAULT_XRES 800 |
ce9720634c15
Forgot to add these files in an earlier commit
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
75 //#define DEFAULT_YRES 600 |
ce9720634c15
Forgot to add these files in an earlier commit
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
76 |
ce9720634c15
Forgot to add these files in an earlier commit
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
77 //#define DEFAULT_XRES 1024 |
ce9720634c15
Forgot to add these files in an earlier commit
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
78 //#define DEFAULT_YRES 768 |
ce9720634c15
Forgot to add these files in an earlier commit
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
79 |
ce9720634c15
Forgot to add these files in an earlier commit
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
80 //#define DEFAULT_XRES 1280 |
ce9720634c15
Forgot to add these files in an earlier commit
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
81 //#define DEFAULT_YRES 720 |
ce9720634c15
Forgot to add these files in an earlier commit
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
82 |
ce9720634c15
Forgot to add these files in an earlier commit
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
83 //#define DEFAULT_XRES 1280 |
ce9720634c15
Forgot to add these files in an earlier commit
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
84 //#define DEFAULT_YRES 800 |
ce9720634c15
Forgot to add these files in an earlier commit
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
85 |
ce9720634c15
Forgot to add these files in an earlier commit
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
86 #define DEFAULT_XRES 1366 |
ce9720634c15
Forgot to add these files in an earlier commit
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
87 #define DEFAULT_YRES 768 |
ce9720634c15
Forgot to add these files in an earlier commit
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
88 |
ce9720634c15
Forgot to add these files in an earlier commit
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
89 //#define DEFAULT_XRES 1440 |
ce9720634c15
Forgot to add these files in an earlier commit
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
90 //#define DEFAULT_YRES 900 |
ce9720634c15
Forgot to add these files in an earlier commit
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
91 |
ce9720634c15
Forgot to add these files in an earlier commit
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
92 //#define DEFAULT_XRES 1920 |
ce9720634c15
Forgot to add these files in an earlier commit
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
93 //#define DEFAULT_YRES 1080 |
ce9720634c15
Forgot to add these files in an earlier commit
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
94 |
ce9720634c15
Forgot to add these files in an earlier commit
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
95 //#define DEFAULT_XRES 2560 |
ce9720634c15
Forgot to add these files in an earlier commit
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
96 //#define DEFAULT_YRES 1440 |
ce9720634c15
Forgot to add these files in an earlier commit
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
97 |
ce9720634c15
Forgot to add these files in an earlier commit
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
98 //#define DEFAULT_XRES 2560 |
ce9720634c15
Forgot to add these files in an earlier commit
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
99 //#define DEFAULT_YRES 1600 |
ce9720634c15
Forgot to add these files in an earlier commit
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
100 |
ce9720634c15
Forgot to add these files in an earlier commit
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
101 //#define DEFAULT_XRES 2880 |
ce9720634c15
Forgot to add these files in an earlier commit
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
102 //#define DEFAULT_YRES 1800 |
ce9720634c15
Forgot to add these files in an earlier commit
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
103 |
ce9720634c15
Forgot to add these files in an earlier commit
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
104 //#define DEFAULT_XRES 3840 |
ce9720634c15
Forgot to add these files in an earlier commit
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
105 //#define DEFAULT_YRES 2160 |
ce9720634c15
Forgot to add these files in an earlier commit
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
106 |
ce9720634c15
Forgot to add these files in an earlier commit
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
107 //#define DEFAULT_XRES 7680 |
ce9720634c15
Forgot to add these files in an earlier commit
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
108 //#define DEFAULT_YRES 4320 |
ce9720634c15
Forgot to add these files in an earlier commit
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
109 |
ce9720634c15
Forgot to add these files in an earlier commit
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
110 |
ce9720634c15
Forgot to add these files in an earlier commit
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
111 #define DEFAULT_XSCALE ((0x80000000ul+DEFAULT_XRES/2)/DEFAULT_XRES) |
ce9720634c15
Forgot to add these files in an earlier commit
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
112 #define DEFAULT_YSCALE ((0x80000000ul+DEFAULT_YRES/2)/DEFAULT_YRES) |
ce9720634c15
Forgot to add these files in an earlier commit
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
113 |
ce9720634c15
Forgot to add these files in an earlier commit
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
114 |
ce9720634c15
Forgot to add these files in an earlier commit
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
115 |
ce9720634c15
Forgot to add these files in an earlier commit
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
116 // ----- Variables ----- |
ce9720634c15
Forgot to add these files in an earlier commit
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
117 |
ce9720634c15
Forgot to add these files in an earlier commit
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
118 // which buttons are currently pressed |
ce9720634c15
Forgot to add these files in an earlier commit
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
119 uint8_t usb_mouse_buttons_state=0; |
ce9720634c15
Forgot to add these files in an earlier commit
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
120 |
ce9720634c15
Forgot to add these files in an earlier commit
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
121 static uint16_t usb_mouse_resolution_x=DEFAULT_XRES; |
ce9720634c15
Forgot to add these files in an earlier commit
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
122 static uint16_t usb_mouse_resolution_y=DEFAULT_YRES; |
ce9720634c15
Forgot to add these files in an earlier commit
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
123 static uint16_t usb_mouse_position_x=DEFAULT_XRES/2; |
ce9720634c15
Forgot to add these files in an earlier commit
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
124 static uint16_t usb_mouse_position_y=DEFAULT_YRES/2; |
ce9720634c15
Forgot to add these files in an earlier commit
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
125 static uint32_t usb_mouse_scale_x=DEFAULT_XSCALE; |
ce9720634c15
Forgot to add these files in an earlier commit
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
126 static uint32_t usb_mouse_scale_y=DEFAULT_YSCALE; |
ce9720634c15
Forgot to add these files in an earlier commit
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
127 static uint32_t usb_mouse_offset_x=DEFAULT_XSCALE/2-1; |
ce9720634c15
Forgot to add these files in an earlier commit
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
128 static uint32_t usb_mouse_offset_y=DEFAULT_YSCALE/2-1; |
ce9720634c15
Forgot to add these files in an earlier commit
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
129 |
ce9720634c15
Forgot to add these files in an earlier commit
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
130 |
ce9720634c15
Forgot to add these files in an earlier commit
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
131 |
ce9720634c15
Forgot to add these files in an earlier commit
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
132 // ----- Functions ----- |
ce9720634c15
Forgot to add these files in an earlier commit
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
133 |
ce9720634c15
Forgot to add these files in an earlier commit
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
134 // Set the mouse buttons. To create a "click", 2 calls are needed, |
ce9720634c15
Forgot to add these files in an earlier commit
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
135 // one to push the button down and the second to release it |
ce9720634c15
Forgot to add these files in an earlier commit
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
136 int usb_mouse_buttons(uint8_t left, uint8_t middle, uint8_t right) |
ce9720634c15
Forgot to add these files in an earlier commit
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
137 { |
ce9720634c15
Forgot to add these files in an earlier commit
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
138 uint8_t mask=0; |
ce9720634c15
Forgot to add these files in an earlier commit
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
139 |
ce9720634c15
Forgot to add these files in an earlier commit
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
140 if (left) mask |= 1; |
ce9720634c15
Forgot to add these files in an earlier commit
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
141 if (middle) mask |= 4; |
ce9720634c15
Forgot to add these files in an earlier commit
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
142 if (right) mask |= 2; |
ce9720634c15
Forgot to add these files in an earlier commit
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
143 usb_mouse_buttons_state = mask; |
ce9720634c15
Forgot to add these files in an earlier commit
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
144 return usb_mouse_move(0, 0, 0); |
ce9720634c15
Forgot to add these files in an earlier commit
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
145 } |
ce9720634c15
Forgot to add these files in an earlier commit
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
146 |
ce9720634c15
Forgot to add these files in an earlier commit
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
147 |
ce9720634c15
Forgot to add these files in an earlier commit
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
148 static uint8_t transmit_previous_timeout=0; |
ce9720634c15
Forgot to add these files in an earlier commit
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
149 |
ce9720634c15
Forgot to add these files in an earlier commit
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
150 // Move the mouse. x, y and wheel are -127 to 127. Use 0 for no movement. |
ce9720634c15
Forgot to add these files in an earlier commit
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
151 int usb_mouse_move(int8_t x, int8_t y, int8_t wheel) |
ce9720634c15
Forgot to add these files in an earlier commit
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
152 { |
ce9720634c15
Forgot to add these files in an earlier commit
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
153 uint32_t wait_count=0; |
ce9720634c15
Forgot to add these files in an earlier commit
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
154 usb_packet_t *tx_packet; |
ce9720634c15
Forgot to add these files in an earlier commit
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
155 |
ce9720634c15
Forgot to add these files in an earlier commit
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
156 //serial_print("move"); |
ce9720634c15
Forgot to add these files in an earlier commit
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
157 //serial_print("\n"); |
ce9720634c15
Forgot to add these files in an earlier commit
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
158 if (x == -128) x = -127; |
ce9720634c15
Forgot to add these files in an earlier commit
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
159 if (y == -128) y = -127; |
ce9720634c15
Forgot to add these files in an earlier commit
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
160 if (wheel == -128) wheel = -127; |
ce9720634c15
Forgot to add these files in an earlier commit
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
161 |
ce9720634c15
Forgot to add these files in an earlier commit
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
162 while (1) { |
ce9720634c15
Forgot to add these files in an earlier commit
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
163 if (!usb_configuration) { |
ce9720634c15
Forgot to add these files in an earlier commit
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
164 return -1; |
ce9720634c15
Forgot to add these files in an earlier commit
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
165 } |
ce9720634c15
Forgot to add these files in an earlier commit
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
166 if (usb_tx_packet_count(MOUSE_ENDPOINT) < TX_PACKET_LIMIT) { |
ce9720634c15
Forgot to add these files in an earlier commit
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
167 tx_packet = usb_malloc(); |
ce9720634c15
Forgot to add these files in an earlier commit
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
168 if (tx_packet) break; |
ce9720634c15
Forgot to add these files in an earlier commit
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
169 } |
ce9720634c15
Forgot to add these files in an earlier commit
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
170 if (++wait_count > TX_TIMEOUT || transmit_previous_timeout) { |
ce9720634c15
Forgot to add these files in an earlier commit
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
171 transmit_previous_timeout = 1; |
ce9720634c15
Forgot to add these files in an earlier commit
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
172 return -1; |
ce9720634c15
Forgot to add these files in an earlier commit
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
173 } |
ce9720634c15
Forgot to add these files in an earlier commit
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
174 yield(); |
ce9720634c15
Forgot to add these files in an earlier commit
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
175 } |
ce9720634c15
Forgot to add these files in an earlier commit
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
176 transmit_previous_timeout = 0; |
ce9720634c15
Forgot to add these files in an earlier commit
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
177 *(tx_packet->buf + 0) = 1; |
ce9720634c15
Forgot to add these files in an earlier commit
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
178 *(tx_packet->buf + 1) = usb_mouse_buttons_state; |
ce9720634c15
Forgot to add these files in an earlier commit
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
179 *(tx_packet->buf + 2) = x; |
ce9720634c15
Forgot to add these files in an earlier commit
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
180 *(tx_packet->buf + 3) = y; |
ce9720634c15
Forgot to add these files in an earlier commit
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
181 *(tx_packet->buf + 4) = wheel; |
ce9720634c15
Forgot to add these files in an earlier commit
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
182 tx_packet->len = 5; |
ce9720634c15
Forgot to add these files in an earlier commit
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
183 usb_tx(MOUSE_ENDPOINT, tx_packet); |
ce9720634c15
Forgot to add these files in an earlier commit
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
184 return 0; |
ce9720634c15
Forgot to add these files in an earlier commit
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
185 } |
ce9720634c15
Forgot to add these files in an earlier commit
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
186 |
ce9720634c15
Forgot to add these files in an earlier commit
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
187 int usb_mouse_position(uint16_t x, uint16_t y) |
ce9720634c15
Forgot to add these files in an earlier commit
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
188 { |
ce9720634c15
Forgot to add these files in an earlier commit
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
189 uint32_t wait_count=0, val32; |
ce9720634c15
Forgot to add these files in an earlier commit
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
190 usb_packet_t *tx_packet; |
ce9720634c15
Forgot to add these files in an earlier commit
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
191 |
ce9720634c15
Forgot to add these files in an earlier commit
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
192 if (x >= usb_mouse_resolution_x) x = usb_mouse_resolution_x - 1; |
ce9720634c15
Forgot to add these files in an earlier commit
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
193 usb_mouse_position_x = x; |
ce9720634c15
Forgot to add these files in an earlier commit
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
194 if (y >= usb_mouse_resolution_y) y = usb_mouse_resolution_y - 1; |
ce9720634c15
Forgot to add these files in an earlier commit
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
195 usb_mouse_position_y = y; |
ce9720634c15
Forgot to add these files in an earlier commit
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
196 |
ce9720634c15
Forgot to add these files in an earlier commit
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
197 while (1) { |
ce9720634c15
Forgot to add these files in an earlier commit
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
198 if (!usb_configuration) { |
ce9720634c15
Forgot to add these files in an earlier commit
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
199 return -1; |
ce9720634c15
Forgot to add these files in an earlier commit
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
200 } |
ce9720634c15
Forgot to add these files in an earlier commit
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
201 if (usb_tx_packet_count(MOUSE_ENDPOINT) < TX_PACKET_LIMIT) { |
ce9720634c15
Forgot to add these files in an earlier commit
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
202 tx_packet = usb_malloc(); |
ce9720634c15
Forgot to add these files in an earlier commit
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
203 if (tx_packet) break; |
ce9720634c15
Forgot to add these files in an earlier commit
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
204 } |
ce9720634c15
Forgot to add these files in an earlier commit
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
205 if (++wait_count > TX_TIMEOUT || transmit_previous_timeout) { |
ce9720634c15
Forgot to add these files in an earlier commit
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
206 transmit_previous_timeout = 1; |
ce9720634c15
Forgot to add these files in an earlier commit
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
207 return -1; |
ce9720634c15
Forgot to add these files in an earlier commit
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
208 } |
ce9720634c15
Forgot to add these files in an earlier commit
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
209 yield(); |
ce9720634c15
Forgot to add these files in an earlier commit
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
210 } |
ce9720634c15
Forgot to add these files in an earlier commit
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
211 transmit_previous_timeout = 0; |
ce9720634c15
Forgot to add these files in an earlier commit
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
212 *(tx_packet->buf + 0) = 2; |
ce9720634c15
Forgot to add these files in an earlier commit
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
213 val32 = usb_mouse_position_x * usb_mouse_scale_x + usb_mouse_offset_x; |
ce9720634c15
Forgot to add these files in an earlier commit
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
214 //serial_print("position:"); |
ce9720634c15
Forgot to add these files in an earlier commit
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
215 //serial_phex16(usb_mouse_position_x); |
ce9720634c15
Forgot to add these files in an earlier commit
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
216 //serial_print("->"); |
ce9720634c15
Forgot to add these files in an earlier commit
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
217 //serial_phex32(val32); |
ce9720634c15
Forgot to add these files in an earlier commit
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
218 *(tx_packet->buf + 1) = val32 >> 16; |
ce9720634c15
Forgot to add these files in an earlier commit
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
219 *(tx_packet->buf + 2) = val32 >> 24; |
ce9720634c15
Forgot to add these files in an earlier commit
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
220 val32 = usb_mouse_position_y * usb_mouse_scale_y + usb_mouse_offset_y; |
ce9720634c15
Forgot to add these files in an earlier commit
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
221 //serial_print(","); |
ce9720634c15
Forgot to add these files in an earlier commit
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
222 //serial_phex16(usb_mouse_position_y); |
ce9720634c15
Forgot to add these files in an earlier commit
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
223 //serial_print("->"); |
ce9720634c15
Forgot to add these files in an earlier commit
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
224 //serial_phex32(val32); |
ce9720634c15
Forgot to add these files in an earlier commit
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
225 //serial_print("\n"); |
ce9720634c15
Forgot to add these files in an earlier commit
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
226 *(tx_packet->buf + 3) = val32 >> 16; |
ce9720634c15
Forgot to add these files in an earlier commit
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
227 *(tx_packet->buf + 4) = val32 >> 24; |
ce9720634c15
Forgot to add these files in an earlier commit
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
228 tx_packet->len = 5; |
ce9720634c15
Forgot to add these files in an earlier commit
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
229 usb_tx(MOUSE_ENDPOINT, tx_packet); |
ce9720634c15
Forgot to add these files in an earlier commit
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
230 return 0; |
ce9720634c15
Forgot to add these files in an earlier commit
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
231 } |
ce9720634c15
Forgot to add these files in an earlier commit
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
232 |
ce9720634c15
Forgot to add these files in an earlier commit
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
233 void usb_mouse_screen_size(uint16_t width, uint16_t height, uint8_t mac) |
ce9720634c15
Forgot to add these files in an earlier commit
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
234 { |
ce9720634c15
Forgot to add these files in an earlier commit
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
235 if (width < 128) width = 128; |
ce9720634c15
Forgot to add these files in an earlier commit
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
236 else if (width > 7680) width = 7680; |
ce9720634c15
Forgot to add these files in an earlier commit
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
237 if (height < 128) height = 128; |
ce9720634c15
Forgot to add these files in an earlier commit
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
238 else if (height > 7680) height = 7680; |
ce9720634c15
Forgot to add these files in an earlier commit
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
239 usb_mouse_resolution_x = width; |
ce9720634c15
Forgot to add these files in an earlier commit
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
240 usb_mouse_resolution_y = height; |
ce9720634c15
Forgot to add these files in an earlier commit
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
241 usb_mouse_position_x = width / 2; |
ce9720634c15
Forgot to add these files in an earlier commit
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
242 usb_mouse_position_y = height / 2; |
ce9720634c15
Forgot to add these files in an earlier commit
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
243 usb_mouse_scale_x = (0x80000000ul + (width >> 1)) / width; |
ce9720634c15
Forgot to add these files in an earlier commit
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
244 usb_mouse_scale_y = (0x80000000ul + (height >> 1)) / height; |
ce9720634c15
Forgot to add these files in an earlier commit
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
245 usb_mouse_offset_x = (usb_mouse_scale_x >> 1) - 1; |
ce9720634c15
Forgot to add these files in an earlier commit
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
246 usb_mouse_offset_y = (usb_mouse_scale_y >> 1) - 1; |
ce9720634c15
Forgot to add these files in an earlier commit
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
247 if (mac) { |
ce9720634c15
Forgot to add these files in an earlier commit
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
248 // ugly workaround for Mac's HID coordinate scaling: |
ce9720634c15
Forgot to add these files in an earlier commit
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
249 // http://lists.apple.com/archives/usb/2011/Jun/msg00032.html |
ce9720634c15
Forgot to add these files in an earlier commit
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
250 usb_mouse_offset_x += 161061273ul; |
ce9720634c15
Forgot to add these files in an earlier commit
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
251 usb_mouse_offset_y += 161061273ul; |
ce9720634c15
Forgot to add these files in an earlier commit
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
252 usb_mouse_scale_x = (1825361101ul + (width >> 1)) / width; |
ce9720634c15
Forgot to add these files in an earlier commit
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
253 usb_mouse_scale_y = (1825361101ul + (height >> 1)) / height; |
ce9720634c15
Forgot to add these files in an earlier commit
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
254 } |
ce9720634c15
Forgot to add these files in an earlier commit
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
255 } |
ce9720634c15
Forgot to add these files in an earlier commit
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
256 |