annotate Output/pjrcUSB/arm/usb_keyboard.c @ 447:56237ba5da6f

Adding auto-restart support whenever USB gets into an odd state - Somewhat aggresive, may cause restarts if the keyboard/OS hasn't fully intialized the keyboard - Added GET_IDLE handling and correct usage of SET_IDLE - Initial implementation of idle send, commented out as it causes issues on Mac OSX for sleeping (keyboard has been working without it) - MacOSX seems to have some sort of data corruption on the USB link, not sure why (other OSs have no issues) - Cleaned up some code - Added a longer sleep after the resume sequence to prevent possible issues sending keys too soon (may need to be increased more) Ipad support now seems flaky, though Mac, Windows seems solid. Init sequence on Linux seems slow, even though there are no errors.
author Jacob Alexander <haata@kiibohd.com>
date Fri, 27 May 2016 01:21:57 -0700
parents 68e19d7c953e
children 45feb80a2ad1
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
117
5ffefdf89b37 Adding in USB module updates from Teensyduino 1.18rc2.
Jacob Alexander <haata@kiibohd.com>
parents: 104
diff changeset
1 /* Teensyduino Core Library
5ffefdf89b37 Adding in USB module updates from Teensyduino 1.18rc2.
Jacob Alexander <haata@kiibohd.com>
parents: 104
diff changeset
2 * http://www.pjrc.com/teensy/
5ffefdf89b37 Adding in USB module updates from Teensyduino 1.18rc2.
Jacob Alexander <haata@kiibohd.com>
parents: 104
diff changeset
3 * Copyright (c) 2013 PJRC.COM, LLC.
285
1495b4504a59 Adding outputDebug command
Jacob Alexander <haata@kiibohd.com>
parents: 251
diff changeset
4 * Modifications by Jacob Alexander 2013-2015
117
5ffefdf89b37 Adding in USB module updates from Teensyduino 1.18rc2.
Jacob Alexander <haata@kiibohd.com>
parents: 104
diff changeset
5 *
5ffefdf89b37 Adding in USB module updates from Teensyduino 1.18rc2.
Jacob Alexander <haata@kiibohd.com>
parents: 104
diff changeset
6 * Permission is hereby granted, free of charge, to any person obtaining
5ffefdf89b37 Adding in USB module updates from Teensyduino 1.18rc2.
Jacob Alexander <haata@kiibohd.com>
parents: 104
diff changeset
7 * a copy of this software and associated documentation files (the
5ffefdf89b37 Adding in USB module updates from Teensyduino 1.18rc2.
Jacob Alexander <haata@kiibohd.com>
parents: 104
diff changeset
8 * "Software"), to deal in the Software without restriction, including
5ffefdf89b37 Adding in USB module updates from Teensyduino 1.18rc2.
Jacob Alexander <haata@kiibohd.com>
parents: 104
diff changeset
9 * without limitation the rights to use, copy, modify, merge, publish,
5ffefdf89b37 Adding in USB module updates from Teensyduino 1.18rc2.
Jacob Alexander <haata@kiibohd.com>
parents: 104
diff changeset
10 * distribute, sublicense, and/or sell copies of the Software, and to
5ffefdf89b37 Adding in USB module updates from Teensyduino 1.18rc2.
Jacob Alexander <haata@kiibohd.com>
parents: 104
diff changeset
11 * permit persons to whom the Software is furnished to do so, subject to
5ffefdf89b37 Adding in USB module updates from Teensyduino 1.18rc2.
Jacob Alexander <haata@kiibohd.com>
parents: 104
diff changeset
12 * the following conditions:
5ffefdf89b37 Adding in USB module updates from Teensyduino 1.18rc2.
Jacob Alexander <haata@kiibohd.com>
parents: 104
diff changeset
13 *
224
138e5ca7f8e4 Preparing ARM for USB NKRO
Jacob Alexander <haata@kiibohd.com>
parents: 118
diff changeset
14 * 1. The above copyright notice and this permission notice shall be
117
5ffefdf89b37 Adding in USB module updates from Teensyduino 1.18rc2.
Jacob Alexander <haata@kiibohd.com>
parents: 104
diff changeset
15 * included in all copies or substantial portions of the Software.
5ffefdf89b37 Adding in USB module updates from Teensyduino 1.18rc2.
Jacob Alexander <haata@kiibohd.com>
parents: 104
diff changeset
16 *
224
138e5ca7f8e4 Preparing ARM for USB NKRO
Jacob Alexander <haata@kiibohd.com>
parents: 118
diff changeset
17 * 2. If the Software is incorporated into a build system that allows
117
5ffefdf89b37 Adding in USB module updates from Teensyduino 1.18rc2.
Jacob Alexander <haata@kiibohd.com>
parents: 104
diff changeset
18 * selection among a list of target devices, then similar target
5ffefdf89b37 Adding in USB module updates from Teensyduino 1.18rc2.
Jacob Alexander <haata@kiibohd.com>
parents: 104
diff changeset
19 * devices manufactured by PJRC.COM must be included in the list of
5ffefdf89b37 Adding in USB module updates from Teensyduino 1.18rc2.
Jacob Alexander <haata@kiibohd.com>
parents: 104
diff changeset
20 * target devices and selectable in the same manner.
5ffefdf89b37 Adding in USB module updates from Teensyduino 1.18rc2.
Jacob Alexander <haata@kiibohd.com>
parents: 104
diff changeset
21 *
5ffefdf89b37 Adding in USB module updates from Teensyduino 1.18rc2.
Jacob Alexander <haata@kiibohd.com>
parents: 104
diff changeset
22 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
5ffefdf89b37 Adding in USB module updates from Teensyduino 1.18rc2.
Jacob Alexander <haata@kiibohd.com>
parents: 104
diff changeset
23 * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
5ffefdf89b37 Adding in USB module updates from Teensyduino 1.18rc2.
Jacob Alexander <haata@kiibohd.com>
parents: 104
diff changeset
24 * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
5ffefdf89b37 Adding in USB module updates from Teensyduino 1.18rc2.
Jacob Alexander <haata@kiibohd.com>
parents: 104
diff changeset
25 * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
5ffefdf89b37 Adding in USB module updates from Teensyduino 1.18rc2.
Jacob Alexander <haata@kiibohd.com>
parents: 104
diff changeset
26 * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
5ffefdf89b37 Adding in USB module updates from Teensyduino 1.18rc2.
Jacob Alexander <haata@kiibohd.com>
parents: 104
diff changeset
27 * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
5ffefdf89b37 Adding in USB module updates from Teensyduino 1.18rc2.
Jacob Alexander <haata@kiibohd.com>
parents: 104
diff changeset
28 * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
5ffefdf89b37 Adding in USB module updates from Teensyduino 1.18rc2.
Jacob Alexander <haata@kiibohd.com>
parents: 104
diff changeset
29 * SOFTWARE.
5ffefdf89b37 Adding in USB module updates from Teensyduino 1.18rc2.
Jacob Alexander <haata@kiibohd.com>
parents: 104
diff changeset
30 */
5ffefdf89b37 Adding in USB module updates from Teensyduino 1.18rc2.
Jacob Alexander <haata@kiibohd.com>
parents: 104
diff changeset
31
224
138e5ca7f8e4 Preparing ARM for USB NKRO
Jacob Alexander <haata@kiibohd.com>
parents: 118
diff changeset
32 // ----- Includes -----
138e5ca7f8e4 Preparing ARM for USB NKRO
Jacob Alexander <haata@kiibohd.com>
parents: 118
diff changeset
33
138e5ca7f8e4 Preparing ARM for USB NKRO
Jacob Alexander <haata@kiibohd.com>
parents: 118
diff changeset
34 // Compiler Includes
138e5ca7f8e4 Preparing ARM for USB NKRO
Jacob Alexander <haata@kiibohd.com>
parents: 118
diff changeset
35 #include <string.h> // for memcpy()
138e5ca7f8e4 Preparing ARM for USB NKRO
Jacob Alexander <haata@kiibohd.com>
parents: 118
diff changeset
36
138e5ca7f8e4 Preparing ARM for USB NKRO
Jacob Alexander <haata@kiibohd.com>
parents: 118
diff changeset
37 // Project Includes
138e5ca7f8e4 Preparing ARM for USB NKRO
Jacob Alexander <haata@kiibohd.com>
parents: 118
diff changeset
38 #include <Lib/OutputLib.h>
138e5ca7f8e4 Preparing ARM for USB NKRO
Jacob Alexander <haata@kiibohd.com>
parents: 118
diff changeset
39 #include <print.h>
138e5ca7f8e4 Preparing ARM for USB NKRO
Jacob Alexander <haata@kiibohd.com>
parents: 118
diff changeset
40
138e5ca7f8e4 Preparing ARM for USB NKRO
Jacob Alexander <haata@kiibohd.com>
parents: 118
diff changeset
41 // Local Includes
104
e84738d174bc Moving USB to Output in preparation for additional Output types.
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
42 #include "usb_dev.h"
e84738d174bc Moving USB to Output in preparation for additional Output types.
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
43 #include "usb_keyboard.h"
224
138e5ca7f8e4 Preparing ARM for USB NKRO
Jacob Alexander <haata@kiibohd.com>
parents: 118
diff changeset
44
104
e84738d174bc Moving USB to Output in preparation for additional Output types.
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
45
e84738d174bc Moving USB to Output in preparation for additional Output types.
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
46
224
138e5ca7f8e4 Preparing ARM for USB NKRO
Jacob Alexander <haata@kiibohd.com>
parents: 118
diff changeset
47 // ----- Defines -----
138e5ca7f8e4 Preparing ARM for USB NKRO
Jacob Alexander <haata@kiibohd.com>
parents: 118
diff changeset
48
104
e84738d174bc Moving USB to Output in preparation for additional Output types.
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
e84738d174bc Moving USB to Output in preparation for additional Output types.
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
50 #define TX_PACKET_LIMIT 4
e84738d174bc Moving USB to Output in preparation for additional Output types.
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
51
e84738d174bc Moving USB to Output in preparation for additional Output types.
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
52 // When the PC isn't listening, how long do we wait before discarding data?
e84738d174bc Moving USB to Output in preparation for additional Output types.
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
53 #define TX_TIMEOUT_MSEC 50
e84738d174bc Moving USB to Output in preparation for additional Output types.
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
54
368
06a54d582bf8 FIxing Media Keys and general USB compatibilty
Jacob Alexander <haata@kiibohd.com>
parents: 346
diff changeset
55 #if F_CPU == 168000000
06a54d582bf8 FIxing Media Keys and general USB compatibilty
Jacob Alexander <haata@kiibohd.com>
parents: 346
diff changeset
56 #define TX_TIMEOUT (TX_TIMEOUT_MSEC * 1100)
06a54d582bf8 FIxing Media Keys and general USB compatibilty
Jacob Alexander <haata@kiibohd.com>
parents: 346
diff changeset
57 #elif F_CPU == 144000000
06a54d582bf8 FIxing Media Keys and general USB compatibilty
Jacob Alexander <haata@kiibohd.com>
parents: 346
diff changeset
58 #define TX_TIMEOUT (TX_TIMEOUT_MSEC * 932)
06a54d582bf8 FIxing Media Keys and general USB compatibilty
Jacob Alexander <haata@kiibohd.com>
parents: 346
diff changeset
59 #elif F_CPU == 120000000
06a54d582bf8 FIxing Media Keys and general USB compatibilty
Jacob Alexander <haata@kiibohd.com>
parents: 346
diff changeset
60 #define TX_TIMEOUT (TX_TIMEOUT_MSEC * 764)
06a54d582bf8 FIxing Media Keys and general USB compatibilty
Jacob Alexander <haata@kiibohd.com>
parents: 346
diff changeset
61 #elif F_CPU == 96000000
334
9ac304aa1ab5 Adding initial dfu-upload code and debugging for Bootloader.
Jacob Alexander <haata@kiibohd.com>
parents: 326
diff changeset
62 #define TX_TIMEOUT (TX_TIMEOUT_MSEC * 596)
9ac304aa1ab5 Adding initial dfu-upload code and debugging for Bootloader.
Jacob Alexander <haata@kiibohd.com>
parents: 326
diff changeset
63 #elif F_CPU == 72000000
368
06a54d582bf8 FIxing Media Keys and general USB compatibilty
Jacob Alexander <haata@kiibohd.com>
parents: 346
diff changeset
64 #define TX_TIMEOUT (TX_TIMEOUT_MSEC * 512)
104
e84738d174bc Moving USB to Output in preparation for additional Output types.
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
65 #elif F_CPU == 48000000
334
9ac304aa1ab5 Adding initial dfu-upload code and debugging for Bootloader.
Jacob Alexander <haata@kiibohd.com>
parents: 326
diff changeset
66 #define TX_TIMEOUT (TX_TIMEOUT_MSEC * 428)
104
e84738d174bc Moving USB to Output in preparation for additional Output types.
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
67 #elif F_CPU == 24000000
334
9ac304aa1ab5 Adding initial dfu-upload code and debugging for Bootloader.
Jacob Alexander <haata@kiibohd.com>
parents: 326
diff changeset
68 #define TX_TIMEOUT (TX_TIMEOUT_MSEC * 262)
104
e84738d174bc Moving USB to Output in preparation for additional Output types.
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
69 #endif
e84738d174bc Moving USB to Output in preparation for additional Output types.
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
70
e84738d174bc Moving USB to Output in preparation for additional Output types.
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
71
224
138e5ca7f8e4 Preparing ARM for USB NKRO
Jacob Alexander <haata@kiibohd.com>
parents: 118
diff changeset
72
138e5ca7f8e4 Preparing ARM for USB NKRO
Jacob Alexander <haata@kiibohd.com>
parents: 118
diff changeset
73 // ----- Variables -----
138e5ca7f8e4 Preparing ARM for USB NKRO
Jacob Alexander <haata@kiibohd.com>
parents: 118
diff changeset
74
138e5ca7f8e4 Preparing ARM for USB NKRO
Jacob Alexander <haata@kiibohd.com>
parents: 118
diff changeset
75 static uint8_t transmit_previous_timeout = 0;
138e5ca7f8e4 Preparing ARM for USB NKRO
Jacob Alexander <haata@kiibohd.com>
parents: 118
diff changeset
76
138e5ca7f8e4 Preparing ARM for USB NKRO
Jacob Alexander <haata@kiibohd.com>
parents: 118
diff changeset
77
138e5ca7f8e4 Preparing ARM for USB NKRO
Jacob Alexander <haata@kiibohd.com>
parents: 118
diff changeset
78
138e5ca7f8e4 Preparing ARM for USB NKRO
Jacob Alexander <haata@kiibohd.com>
parents: 118
diff changeset
79 // ----- Functions -----
138e5ca7f8e4 Preparing ARM for USB NKRO
Jacob Alexander <haata@kiibohd.com>
parents: 118
diff changeset
80
104
e84738d174bc Moving USB to Output in preparation for additional Output types.
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
81 // send the contents of keyboard_keys and keyboard_modifier_keys
224
138e5ca7f8e4 Preparing ARM for USB NKRO
Jacob Alexander <haata@kiibohd.com>
parents: 118
diff changeset
82 void usb_keyboard_send()
104
e84738d174bc Moving USB to Output in preparation for additional Output types.
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
83 {
224
138e5ca7f8e4 Preparing ARM for USB NKRO
Jacob Alexander <haata@kiibohd.com>
parents: 118
diff changeset
84 uint32_t wait_count = 0;
104
e84738d174bc Moving USB to Output in preparation for additional Output types.
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
85 usb_packet_t *tx_packet;
e84738d174bc Moving USB to Output in preparation for additional Output types.
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
86
232
9a3c9f6f4866 USB NKRO working for ARM!
Jacob Alexander <haata@kiibohd.com>
parents: 224
diff changeset
87 // Wait till ready
224
138e5ca7f8e4 Preparing ARM for USB NKRO
Jacob Alexander <haata@kiibohd.com>
parents: 118
diff changeset
88 while ( 1 )
138e5ca7f8e4 Preparing ARM for USB NKRO
Jacob Alexander <haata@kiibohd.com>
parents: 118
diff changeset
89 {
138e5ca7f8e4 Preparing ARM for USB NKRO
Jacob Alexander <haata@kiibohd.com>
parents: 118
diff changeset
90 if ( !usb_configuration )
138e5ca7f8e4 Preparing ARM for USB NKRO
Jacob Alexander <haata@kiibohd.com>
parents: 118
diff changeset
91 {
138e5ca7f8e4 Preparing ARM for USB NKRO
Jacob Alexander <haata@kiibohd.com>
parents: 118
diff changeset
92 erro_print("USB not configured...");
138e5ca7f8e4 Preparing ARM for USB NKRO
Jacob Alexander <haata@kiibohd.com>
parents: 118
diff changeset
93 return;
104
e84738d174bc Moving USB to Output in preparation for additional Output types.
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
94 }
232
9a3c9f6f4866 USB NKRO working for ARM!
Jacob Alexander <haata@kiibohd.com>
parents: 224
diff changeset
95
9a3c9f6f4866 USB NKRO working for ARM!
Jacob Alexander <haata@kiibohd.com>
parents: 224
diff changeset
96 if ( USBKeys_Protocol == 0 ) // Boot Mode
224
138e5ca7f8e4 Preparing ARM for USB NKRO
Jacob Alexander <haata@kiibohd.com>
parents: 118
diff changeset
97 {
368
06a54d582bf8 FIxing Media Keys and general USB compatibilty
Jacob Alexander <haata@kiibohd.com>
parents: 346
diff changeset
98 if ( usb_tx_packet_count( KEYBOARD_ENDPOINT ) < TX_PACKET_LIMIT )
232
9a3c9f6f4866 USB NKRO working for ARM!
Jacob Alexander <haata@kiibohd.com>
parents: 224
diff changeset
99 {
9a3c9f6f4866 USB NKRO working for ARM!
Jacob Alexander <haata@kiibohd.com>
parents: 224
diff changeset
100 tx_packet = usb_malloc();
9a3c9f6f4866 USB NKRO working for ARM!
Jacob Alexander <haata@kiibohd.com>
parents: 224
diff changeset
101 if ( tx_packet )
9a3c9f6f4866 USB NKRO working for ARM!
Jacob Alexander <haata@kiibohd.com>
parents: 224
diff changeset
102 break;
9a3c9f6f4866 USB NKRO working for ARM!
Jacob Alexander <haata@kiibohd.com>
parents: 224
diff changeset
103 }
104
e84738d174bc Moving USB to Output in preparation for additional Output types.
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
104 }
232
9a3c9f6f4866 USB NKRO working for ARM!
Jacob Alexander <haata@kiibohd.com>
parents: 224
diff changeset
105 else if ( USBKeys_Protocol == 1 ) // NKRO Mode
9a3c9f6f4866 USB NKRO working for ARM!
Jacob Alexander <haata@kiibohd.com>
parents: 224
diff changeset
106 {
368
06a54d582bf8 FIxing Media Keys and general USB compatibilty
Jacob Alexander <haata@kiibohd.com>
parents: 346
diff changeset
107 if ( usb_tx_packet_count( NKRO_KEYBOARD_ENDPOINT ) < TX_PACKET_LIMIT )
06a54d582bf8 FIxing Media Keys and general USB compatibilty
Jacob Alexander <haata@kiibohd.com>
parents: 346
diff changeset
108 {
06a54d582bf8 FIxing Media Keys and general USB compatibilty
Jacob Alexander <haata@kiibohd.com>
parents: 346
diff changeset
109 tx_packet = usb_malloc();
06a54d582bf8 FIxing Media Keys and general USB compatibilty
Jacob Alexander <haata@kiibohd.com>
parents: 346
diff changeset
110 if ( tx_packet )
06a54d582bf8 FIxing Media Keys and general USB compatibilty
Jacob Alexander <haata@kiibohd.com>
parents: 346
diff changeset
111 break;
06a54d582bf8 FIxing Media Keys and general USB compatibilty
Jacob Alexander <haata@kiibohd.com>
parents: 346
diff changeset
112 }
06a54d582bf8 FIxing Media Keys and general USB compatibilty
Jacob Alexander <haata@kiibohd.com>
parents: 346
diff changeset
113 }
06a54d582bf8 FIxing Media Keys and general USB compatibilty
Jacob Alexander <haata@kiibohd.com>
parents: 346
diff changeset
114 else if ( USBKeys_Changed &
06a54d582bf8 FIxing Media Keys and general USB compatibilty
Jacob Alexander <haata@kiibohd.com>
parents: 346
diff changeset
115 ( USBKeyChangeState_System | USBKeyChangeState_Consumer )
06a54d582bf8 FIxing Media Keys and general USB compatibilty
Jacob Alexander <haata@kiibohd.com>
parents: 346
diff changeset
116 )
06a54d582bf8 FIxing Media Keys and general USB compatibilty
Jacob Alexander <haata@kiibohd.com>
parents: 346
diff changeset
117 {
06a54d582bf8 FIxing Media Keys and general USB compatibilty
Jacob Alexander <haata@kiibohd.com>
parents: 346
diff changeset
118 if ( usb_tx_packet_count( SYS_CTRL_ENDPOINT ) < TX_PACKET_LIMIT )
232
9a3c9f6f4866 USB NKRO working for ARM!
Jacob Alexander <haata@kiibohd.com>
parents: 224
diff changeset
119 {
9a3c9f6f4866 USB NKRO working for ARM!
Jacob Alexander <haata@kiibohd.com>
parents: 224
diff changeset
120 tx_packet = usb_malloc();
9a3c9f6f4866 USB NKRO working for ARM!
Jacob Alexander <haata@kiibohd.com>
parents: 224
diff changeset
121 if ( tx_packet )
9a3c9f6f4866 USB NKRO working for ARM!
Jacob Alexander <haata@kiibohd.com>
parents: 224
diff changeset
122 break;
9a3c9f6f4866 USB NKRO working for ARM!
Jacob Alexander <haata@kiibohd.com>
parents: 224
diff changeset
123 }
9a3c9f6f4866 USB NKRO working for ARM!
Jacob Alexander <haata@kiibohd.com>
parents: 224
diff changeset
124 }
9a3c9f6f4866 USB NKRO working for ARM!
Jacob Alexander <haata@kiibohd.com>
parents: 224
diff changeset
125
224
138e5ca7f8e4 Preparing ARM for USB NKRO
Jacob Alexander <haata@kiibohd.com>
parents: 118
diff changeset
126 if ( ++wait_count > TX_TIMEOUT || transmit_previous_timeout )
138e5ca7f8e4 Preparing ARM for USB NKRO
Jacob Alexander <haata@kiibohd.com>
parents: 118
diff changeset
127 {
104
e84738d174bc Moving USB to Output in preparation for additional Output types.
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
128 transmit_previous_timeout = 1;
447
56237ba5da6f Adding auto-restart support whenever USB gets into an odd state
Jacob Alexander <haata@kiibohd.com>
parents: 439
diff changeset
129 warn_print("USB Transmit Timeout...restarting device");
439
68e19d7c953e Adding proper remote wake-up support
Jacob Alexander <haata@kiibohd.com>
parents: 368
diff changeset
130 USBKeys_Changed = USBKeyChangeState_None; // Indicate packet lost
447
56237ba5da6f Adding auto-restart support whenever USB gets into an odd state
Jacob Alexander <haata@kiibohd.com>
parents: 439
diff changeset
131 usb_device_software_reset();
224
138e5ca7f8e4 Preparing ARM for USB NKRO
Jacob Alexander <haata@kiibohd.com>
parents: 118
diff changeset
132 return;
104
e84738d174bc Moving USB to Output in preparation for additional Output types.
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
133 }
e84738d174bc Moving USB to Output in preparation for additional Output types.
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
134 yield();
e84738d174bc Moving USB to Output in preparation for additional Output types.
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
135 }
224
138e5ca7f8e4 Preparing ARM for USB NKRO
Jacob Alexander <haata@kiibohd.com>
parents: 118
diff changeset
136
447
56237ba5da6f Adding auto-restart support whenever USB gets into an odd state
Jacob Alexander <haata@kiibohd.com>
parents: 439
diff changeset
137 transmit_previous_timeout = 0;
56237ba5da6f Adding auto-restart support whenever USB gets into an odd state
Jacob Alexander <haata@kiibohd.com>
parents: 439
diff changeset
138
232
9a3c9f6f4866 USB NKRO working for ARM!
Jacob Alexander <haata@kiibohd.com>
parents: 224
diff changeset
139 // Pointer to USB tx packet buffer
9a3c9f6f4866 USB NKRO working for ARM!
Jacob Alexander <haata@kiibohd.com>
parents: 224
diff changeset
140 uint8_t *tx_buf = tx_packet->buf;
9a3c9f6f4866 USB NKRO working for ARM!
Jacob Alexander <haata@kiibohd.com>
parents: 224
diff changeset
141
368
06a54d582bf8 FIxing Media Keys and general USB compatibilty
Jacob Alexander <haata@kiibohd.com>
parents: 346
diff changeset
142 // Check system control keys
06a54d582bf8 FIxing Media Keys and general USB compatibilty
Jacob Alexander <haata@kiibohd.com>
parents: 346
diff changeset
143 if ( USBKeys_Changed & USBKeyChangeState_System )
06a54d582bf8 FIxing Media Keys and general USB compatibilty
Jacob Alexander <haata@kiibohd.com>
parents: 346
diff changeset
144 {
06a54d582bf8 FIxing Media Keys and general USB compatibilty
Jacob Alexander <haata@kiibohd.com>
parents: 346
diff changeset
145 if ( Output_DebugMode )
06a54d582bf8 FIxing Media Keys and general USB compatibilty
Jacob Alexander <haata@kiibohd.com>
parents: 346
diff changeset
146 {
06a54d582bf8 FIxing Media Keys and general USB compatibilty
Jacob Alexander <haata@kiibohd.com>
parents: 346
diff changeset
147 print("SysCtrl[");
06a54d582bf8 FIxing Media Keys and general USB compatibilty
Jacob Alexander <haata@kiibohd.com>
parents: 346
diff changeset
148 printHex_op( USBKeys_SysCtrl, 2 );
06a54d582bf8 FIxing Media Keys and general USB compatibilty
Jacob Alexander <haata@kiibohd.com>
parents: 346
diff changeset
149 print( "] " NL );
06a54d582bf8 FIxing Media Keys and general USB compatibilty
Jacob Alexander <haata@kiibohd.com>
parents: 346
diff changeset
150 }
06a54d582bf8 FIxing Media Keys and general USB compatibilty
Jacob Alexander <haata@kiibohd.com>
parents: 346
diff changeset
151
06a54d582bf8 FIxing Media Keys and general USB compatibilty
Jacob Alexander <haata@kiibohd.com>
parents: 346
diff changeset
152 *tx_buf++ = 0x02; // ID
06a54d582bf8 FIxing Media Keys and general USB compatibilty
Jacob Alexander <haata@kiibohd.com>
parents: 346
diff changeset
153 *tx_buf = USBKeys_SysCtrl;
06a54d582bf8 FIxing Media Keys and general USB compatibilty
Jacob Alexander <haata@kiibohd.com>
parents: 346
diff changeset
154 tx_packet->len = 2;
06a54d582bf8 FIxing Media Keys and general USB compatibilty
Jacob Alexander <haata@kiibohd.com>
parents: 346
diff changeset
155
06a54d582bf8 FIxing Media Keys and general USB compatibilty
Jacob Alexander <haata@kiibohd.com>
parents: 346
diff changeset
156 // Send USB Packet
06a54d582bf8 FIxing Media Keys and general USB compatibilty
Jacob Alexander <haata@kiibohd.com>
parents: 346
diff changeset
157 usb_tx( SYS_CTRL_ENDPOINT, tx_packet );
06a54d582bf8 FIxing Media Keys and general USB compatibilty
Jacob Alexander <haata@kiibohd.com>
parents: 346
diff changeset
158 USBKeys_Changed &= ~USBKeyChangeState_System; // Mark sent
06a54d582bf8 FIxing Media Keys and general USB compatibilty
Jacob Alexander <haata@kiibohd.com>
parents: 346
diff changeset
159 return;
06a54d582bf8 FIxing Media Keys and general USB compatibilty
Jacob Alexander <haata@kiibohd.com>
parents: 346
diff changeset
160 }
06a54d582bf8 FIxing Media Keys and general USB compatibilty
Jacob Alexander <haata@kiibohd.com>
parents: 346
diff changeset
161
06a54d582bf8 FIxing Media Keys and general USB compatibilty
Jacob Alexander <haata@kiibohd.com>
parents: 346
diff changeset
162 // Check consumer control keys
06a54d582bf8 FIxing Media Keys and general USB compatibilty
Jacob Alexander <haata@kiibohd.com>
parents: 346
diff changeset
163 if ( USBKeys_Changed & USBKeyChangeState_Consumer )
06a54d582bf8 FIxing Media Keys and general USB compatibilty
Jacob Alexander <haata@kiibohd.com>
parents: 346
diff changeset
164 {
06a54d582bf8 FIxing Media Keys and general USB compatibilty
Jacob Alexander <haata@kiibohd.com>
parents: 346
diff changeset
165 if ( Output_DebugMode )
06a54d582bf8 FIxing Media Keys and general USB compatibilty
Jacob Alexander <haata@kiibohd.com>
parents: 346
diff changeset
166 {
06a54d582bf8 FIxing Media Keys and general USB compatibilty
Jacob Alexander <haata@kiibohd.com>
parents: 346
diff changeset
167 print("ConsCtrl[");
06a54d582bf8 FIxing Media Keys and general USB compatibilty
Jacob Alexander <haata@kiibohd.com>
parents: 346
diff changeset
168 printHex_op( USBKeys_ConsCtrl, 2 );
06a54d582bf8 FIxing Media Keys and general USB compatibilty
Jacob Alexander <haata@kiibohd.com>
parents: 346
diff changeset
169 print( "] " NL );
06a54d582bf8 FIxing Media Keys and general USB compatibilty
Jacob Alexander <haata@kiibohd.com>
parents: 346
diff changeset
170 }
06a54d582bf8 FIxing Media Keys and general USB compatibilty
Jacob Alexander <haata@kiibohd.com>
parents: 346
diff changeset
171
06a54d582bf8 FIxing Media Keys and general USB compatibilty
Jacob Alexander <haata@kiibohd.com>
parents: 346
diff changeset
172 *tx_buf++ = 0x03; // ID
06a54d582bf8 FIxing Media Keys and general USB compatibilty
Jacob Alexander <haata@kiibohd.com>
parents: 346
diff changeset
173 *tx_buf++ = (uint8_t)(USBKeys_ConsCtrl & 0x00FF);
06a54d582bf8 FIxing Media Keys and general USB compatibilty
Jacob Alexander <haata@kiibohd.com>
parents: 346
diff changeset
174 *tx_buf = (uint8_t)(USBKeys_ConsCtrl >> 8);
06a54d582bf8 FIxing Media Keys and general USB compatibilty
Jacob Alexander <haata@kiibohd.com>
parents: 346
diff changeset
175 tx_packet->len = 3;
06a54d582bf8 FIxing Media Keys and general USB compatibilty
Jacob Alexander <haata@kiibohd.com>
parents: 346
diff changeset
176
06a54d582bf8 FIxing Media Keys and general USB compatibilty
Jacob Alexander <haata@kiibohd.com>
parents: 346
diff changeset
177 // Send USB Packet
06a54d582bf8 FIxing Media Keys and general USB compatibilty
Jacob Alexander <haata@kiibohd.com>
parents: 346
diff changeset
178 usb_tx( SYS_CTRL_ENDPOINT, tx_packet );
06a54d582bf8 FIxing Media Keys and general USB compatibilty
Jacob Alexander <haata@kiibohd.com>
parents: 346
diff changeset
179 USBKeys_Changed &= ~USBKeyChangeState_Consumer; // Mark sent
06a54d582bf8 FIxing Media Keys and general USB compatibilty
Jacob Alexander <haata@kiibohd.com>
parents: 346
diff changeset
180 return;
06a54d582bf8 FIxing Media Keys and general USB compatibilty
Jacob Alexander <haata@kiibohd.com>
parents: 346
diff changeset
181 }
06a54d582bf8 FIxing Media Keys and general USB compatibilty
Jacob Alexander <haata@kiibohd.com>
parents: 346
diff changeset
182
232
9a3c9f6f4866 USB NKRO working for ARM!
Jacob Alexander <haata@kiibohd.com>
parents: 224
diff changeset
183 switch ( USBKeys_Protocol )
9a3c9f6f4866 USB NKRO working for ARM!
Jacob Alexander <haata@kiibohd.com>
parents: 224
diff changeset
184 {
9a3c9f6f4866 USB NKRO working for ARM!
Jacob Alexander <haata@kiibohd.com>
parents: 224
diff changeset
185 // Send boot keyboard interrupt packet(s)
9a3c9f6f4866 USB NKRO working for ARM!
Jacob Alexander <haata@kiibohd.com>
parents: 224
diff changeset
186 case 0:
285
1495b4504a59 Adding outputDebug command
Jacob Alexander <haata@kiibohd.com>
parents: 251
diff changeset
187 // USB Boot Mode debug output
1495b4504a59 Adding outputDebug command
Jacob Alexander <haata@kiibohd.com>
parents: 251
diff changeset
188 if ( Output_DebugMode )
1495b4504a59 Adding outputDebug command
Jacob Alexander <haata@kiibohd.com>
parents: 251
diff changeset
189 {
1495b4504a59 Adding outputDebug command
Jacob Alexander <haata@kiibohd.com>
parents: 251
diff changeset
190 dbug_msg("Boot USB: ");
1495b4504a59 Adding outputDebug command
Jacob Alexander <haata@kiibohd.com>
parents: 251
diff changeset
191 printHex_op( USBKeys_Modifiers, 2 );
1495b4504a59 Adding outputDebug command
Jacob Alexander <haata@kiibohd.com>
parents: 251
diff changeset
192 print(" ");
1495b4504a59 Adding outputDebug command
Jacob Alexander <haata@kiibohd.com>
parents: 251
diff changeset
193 printHex( 0 );
1495b4504a59 Adding outputDebug command
Jacob Alexander <haata@kiibohd.com>
parents: 251
diff changeset
194 print(" ");
1495b4504a59 Adding outputDebug command
Jacob Alexander <haata@kiibohd.com>
parents: 251
diff changeset
195 printHex_op( USBKeys_Keys[0], 2 );
1495b4504a59 Adding outputDebug command
Jacob Alexander <haata@kiibohd.com>
parents: 251
diff changeset
196 printHex_op( USBKeys_Keys[1], 2 );
1495b4504a59 Adding outputDebug command
Jacob Alexander <haata@kiibohd.com>
parents: 251
diff changeset
197 printHex_op( USBKeys_Keys[2], 2 );
1495b4504a59 Adding outputDebug command
Jacob Alexander <haata@kiibohd.com>
parents: 251
diff changeset
198 printHex_op( USBKeys_Keys[3], 2 );
1495b4504a59 Adding outputDebug command
Jacob Alexander <haata@kiibohd.com>
parents: 251
diff changeset
199 printHex_op( USBKeys_Keys[4], 2 );
1495b4504a59 Adding outputDebug command
Jacob Alexander <haata@kiibohd.com>
parents: 251
diff changeset
200 printHex_op( USBKeys_Keys[5], 2 );
1495b4504a59 Adding outputDebug command
Jacob Alexander <haata@kiibohd.com>
parents: 251
diff changeset
201 print( NL );
1495b4504a59 Adding outputDebug command
Jacob Alexander <haata@kiibohd.com>
parents: 251
diff changeset
202 }
1495b4504a59 Adding outputDebug command
Jacob Alexander <haata@kiibohd.com>
parents: 251
diff changeset
203
232
9a3c9f6f4866 USB NKRO working for ARM!
Jacob Alexander <haata@kiibohd.com>
parents: 224
diff changeset
204 // Boot Mode
9a3c9f6f4866 USB NKRO working for ARM!
Jacob Alexander <haata@kiibohd.com>
parents: 224
diff changeset
205 *tx_buf++ = USBKeys_Modifiers;
9a3c9f6f4866 USB NKRO working for ARM!
Jacob Alexander <haata@kiibohd.com>
parents: 224
diff changeset
206 *tx_buf++ = 0;
9a3c9f6f4866 USB NKRO working for ARM!
Jacob Alexander <haata@kiibohd.com>
parents: 224
diff changeset
207 memcpy( tx_buf, USBKeys_Keys, USB_BOOT_MAX_KEYS );
9a3c9f6f4866 USB NKRO working for ARM!
Jacob Alexander <haata@kiibohd.com>
parents: 224
diff changeset
208 tx_packet->len = 8;
9a3c9f6f4866 USB NKRO working for ARM!
Jacob Alexander <haata@kiibohd.com>
parents: 224
diff changeset
209
9a3c9f6f4866 USB NKRO working for ARM!
Jacob Alexander <haata@kiibohd.com>
parents: 224
diff changeset
210 // Send USB Packet
9a3c9f6f4866 USB NKRO working for ARM!
Jacob Alexander <haata@kiibohd.com>
parents: 224
diff changeset
211 usb_tx( KEYBOARD_ENDPOINT, tx_packet );
9a3c9f6f4866 USB NKRO working for ARM!
Jacob Alexander <haata@kiibohd.com>
parents: 224
diff changeset
212 USBKeys_Changed = USBKeyChangeState_None;
9a3c9f6f4866 USB NKRO working for ARM!
Jacob Alexander <haata@kiibohd.com>
parents: 224
diff changeset
213 break;
9a3c9f6f4866 USB NKRO working for ARM!
Jacob Alexander <haata@kiibohd.com>
parents: 224
diff changeset
214
9a3c9f6f4866 USB NKRO working for ARM!
Jacob Alexander <haata@kiibohd.com>
parents: 224
diff changeset
215 // Send NKRO keyboard interrupts packet(s)
9a3c9f6f4866 USB NKRO working for ARM!
Jacob Alexander <haata@kiibohd.com>
parents: 224
diff changeset
216 case 1:
285
1495b4504a59 Adding outputDebug command
Jacob Alexander <haata@kiibohd.com>
parents: 251
diff changeset
217 if ( Output_DebugMode )
1495b4504a59 Adding outputDebug command
Jacob Alexander <haata@kiibohd.com>
parents: 251
diff changeset
218 {
1495b4504a59 Adding outputDebug command
Jacob Alexander <haata@kiibohd.com>
parents: 251
diff changeset
219 dbug_msg("NKRO USB: ");
1495b4504a59 Adding outputDebug command
Jacob Alexander <haata@kiibohd.com>
parents: 251
diff changeset
220 }
1495b4504a59 Adding outputDebug command
Jacob Alexander <haata@kiibohd.com>
parents: 251
diff changeset
221
251
d3ac199593d6 Fixing NKRO on Windows 8.1
Jacob Alexander <haata@kiibohd.com>
parents: 248
diff changeset
222 // Standard HID Keyboard
d3ac199593d6 Fixing NKRO on Windows 8.1
Jacob Alexander <haata@kiibohd.com>
parents: 248
diff changeset
223 if ( USBKeys_Changed )
d3ac199593d6 Fixing NKRO on Windows 8.1
Jacob Alexander <haata@kiibohd.com>
parents: 248
diff changeset
224 {
285
1495b4504a59 Adding outputDebug command
Jacob Alexander <haata@kiibohd.com>
parents: 251
diff changeset
225 // USB NKRO Debug output
1495b4504a59 Adding outputDebug command
Jacob Alexander <haata@kiibohd.com>
parents: 251
diff changeset
226 if ( Output_DebugMode )
1495b4504a59 Adding outputDebug command
Jacob Alexander <haata@kiibohd.com>
parents: 251
diff changeset
227 {
1495b4504a59 Adding outputDebug command
Jacob Alexander <haata@kiibohd.com>
parents: 251
diff changeset
228 printHex_op( USBKeys_Modifiers, 2 );
1495b4504a59 Adding outputDebug command
Jacob Alexander <haata@kiibohd.com>
parents: 251
diff changeset
229 print(" ");
1495b4504a59 Adding outputDebug command
Jacob Alexander <haata@kiibohd.com>
parents: 251
diff changeset
230 for ( uint8_t c = 0; c < 6; c++ )
1495b4504a59 Adding outputDebug command
Jacob Alexander <haata@kiibohd.com>
parents: 251
diff changeset
231 printHex_op( USBKeys_Keys[ c ], 2 );
1495b4504a59 Adding outputDebug command
Jacob Alexander <haata@kiibohd.com>
parents: 251
diff changeset
232 print(" ");
1495b4504a59 Adding outputDebug command
Jacob Alexander <haata@kiibohd.com>
parents: 251
diff changeset
233 for ( uint8_t c = 6; c < 20; c++ )
1495b4504a59 Adding outputDebug command
Jacob Alexander <haata@kiibohd.com>
parents: 251
diff changeset
234 printHex_op( USBKeys_Keys[ c ], 2 );
1495b4504a59 Adding outputDebug command
Jacob Alexander <haata@kiibohd.com>
parents: 251
diff changeset
235 print(" ");
1495b4504a59 Adding outputDebug command
Jacob Alexander <haata@kiibohd.com>
parents: 251
diff changeset
236 printHex_op( USBKeys_Keys[20], 2 );
1495b4504a59 Adding outputDebug command
Jacob Alexander <haata@kiibohd.com>
parents: 251
diff changeset
237 print(" ");
1495b4504a59 Adding outputDebug command
Jacob Alexander <haata@kiibohd.com>
parents: 251
diff changeset
238 for ( uint8_t c = 21; c < 27; c++ )
1495b4504a59 Adding outputDebug command
Jacob Alexander <haata@kiibohd.com>
parents: 251
diff changeset
239 printHex_op( USBKeys_Keys[ c ], 2 );
1495b4504a59 Adding outputDebug command
Jacob Alexander <haata@kiibohd.com>
parents: 251
diff changeset
240 print( NL );
1495b4504a59 Adding outputDebug command
Jacob Alexander <haata@kiibohd.com>
parents: 251
diff changeset
241 }
1495b4504a59 Adding outputDebug command
Jacob Alexander <haata@kiibohd.com>
parents: 251
diff changeset
242
251
d3ac199593d6 Fixing NKRO on Windows 8.1
Jacob Alexander <haata@kiibohd.com>
parents: 248
diff changeset
243 tx_packet->len = 0;
d3ac199593d6 Fixing NKRO on Windows 8.1
Jacob Alexander <haata@kiibohd.com>
parents: 248
diff changeset
244
d3ac199593d6 Fixing NKRO on Windows 8.1
Jacob Alexander <haata@kiibohd.com>
parents: 248
diff changeset
245 // Modifiers
d3ac199593d6 Fixing NKRO on Windows 8.1
Jacob Alexander <haata@kiibohd.com>
parents: 248
diff changeset
246 *tx_buf++ = 0x01; // ID
d3ac199593d6 Fixing NKRO on Windows 8.1
Jacob Alexander <haata@kiibohd.com>
parents: 248
diff changeset
247 *tx_buf++ = USBKeys_Modifiers;
d3ac199593d6 Fixing NKRO on Windows 8.1
Jacob Alexander <haata@kiibohd.com>
parents: 248
diff changeset
248 tx_packet->len += 2;
d3ac199593d6 Fixing NKRO on Windows 8.1
Jacob Alexander <haata@kiibohd.com>
parents: 248
diff changeset
249
d3ac199593d6 Fixing NKRO on Windows 8.1
Jacob Alexander <haata@kiibohd.com>
parents: 248
diff changeset
250 // 4-49 (first 6 bytes)
d3ac199593d6 Fixing NKRO on Windows 8.1
Jacob Alexander <haata@kiibohd.com>
parents: 248
diff changeset
251 memcpy( tx_buf, USBKeys_Keys, 6 );
d3ac199593d6 Fixing NKRO on Windows 8.1
Jacob Alexander <haata@kiibohd.com>
parents: 248
diff changeset
252 tx_buf += 6;
d3ac199593d6 Fixing NKRO on Windows 8.1
Jacob Alexander <haata@kiibohd.com>
parents: 248
diff changeset
253 tx_packet->len += 6;
d3ac199593d6 Fixing NKRO on Windows 8.1
Jacob Alexander <haata@kiibohd.com>
parents: 248
diff changeset
254
d3ac199593d6 Fixing NKRO on Windows 8.1
Jacob Alexander <haata@kiibohd.com>
parents: 248
diff changeset
255 // 51-155 (Middle 14 bytes)
d3ac199593d6 Fixing NKRO on Windows 8.1
Jacob Alexander <haata@kiibohd.com>
parents: 248
diff changeset
256 memcpy( tx_buf, USBKeys_Keys + 6, 14 );
d3ac199593d6 Fixing NKRO on Windows 8.1
Jacob Alexander <haata@kiibohd.com>
parents: 248
diff changeset
257 tx_buf += 14;
d3ac199593d6 Fixing NKRO on Windows 8.1
Jacob Alexander <haata@kiibohd.com>
parents: 248
diff changeset
258 tx_packet->len += 14;
d3ac199593d6 Fixing NKRO on Windows 8.1
Jacob Alexander <haata@kiibohd.com>
parents: 248
diff changeset
259
d3ac199593d6 Fixing NKRO on Windows 8.1
Jacob Alexander <haata@kiibohd.com>
parents: 248
diff changeset
260 // 157-164 (Next byte)
d3ac199593d6 Fixing NKRO on Windows 8.1
Jacob Alexander <haata@kiibohd.com>
parents: 248
diff changeset
261 memcpy( tx_buf, USBKeys_Keys + 20, 1 );
d3ac199593d6 Fixing NKRO on Windows 8.1
Jacob Alexander <haata@kiibohd.com>
parents: 248
diff changeset
262 tx_buf += 1;
d3ac199593d6 Fixing NKRO on Windows 8.1
Jacob Alexander <haata@kiibohd.com>
parents: 248
diff changeset
263 tx_packet->len += 1;
d3ac199593d6 Fixing NKRO on Windows 8.1
Jacob Alexander <haata@kiibohd.com>
parents: 248
diff changeset
264
d3ac199593d6 Fixing NKRO on Windows 8.1
Jacob Alexander <haata@kiibohd.com>
parents: 248
diff changeset
265 // 176-221 (last 6 bytes)
d3ac199593d6 Fixing NKRO on Windows 8.1
Jacob Alexander <haata@kiibohd.com>
parents: 248
diff changeset
266 memcpy( tx_buf, USBKeys_Keys + 21, 6 );
d3ac199593d6 Fixing NKRO on Windows 8.1
Jacob Alexander <haata@kiibohd.com>
parents: 248
diff changeset
267 tx_packet->len += 6;
d3ac199593d6 Fixing NKRO on Windows 8.1
Jacob Alexander <haata@kiibohd.com>
parents: 248
diff changeset
268
d3ac199593d6 Fixing NKRO on Windows 8.1
Jacob Alexander <haata@kiibohd.com>
parents: 248
diff changeset
269 // Send USB Packet
d3ac199593d6 Fixing NKRO on Windows 8.1
Jacob Alexander <haata@kiibohd.com>
parents: 248
diff changeset
270 usb_tx( NKRO_KEYBOARD_ENDPOINT, tx_packet );
d3ac199593d6 Fixing NKRO on Windows 8.1
Jacob Alexander <haata@kiibohd.com>
parents: 248
diff changeset
271 USBKeys_Changed = USBKeyChangeState_None; // Mark sent
d3ac199593d6 Fixing NKRO on Windows 8.1
Jacob Alexander <haata@kiibohd.com>
parents: 248
diff changeset
272 }
d3ac199593d6 Fixing NKRO on Windows 8.1
Jacob Alexander <haata@kiibohd.com>
parents: 248
diff changeset
273
232
9a3c9f6f4866 USB NKRO working for ARM!
Jacob Alexander <haata@kiibohd.com>
parents: 224
diff changeset
274 break;
9a3c9f6f4866 USB NKRO working for ARM!
Jacob Alexander <haata@kiibohd.com>
parents: 224
diff changeset
275 }
224
138e5ca7f8e4 Preparing ARM for USB NKRO
Jacob Alexander <haata@kiibohd.com>
parents: 118
diff changeset
276
138e5ca7f8e4 Preparing ARM for USB NKRO
Jacob Alexander <haata@kiibohd.com>
parents: 118
diff changeset
277 return;
104
e84738d174bc Moving USB to Output in preparation for additional Output types.
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
278 }
e84738d174bc Moving USB to Output in preparation for additional Output types.
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
279