Mercurial > louis > kiibohd-controller
annotate Output/usbMuxUart/output_com.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 | 380e1f0123d0 |
children | 45feb80a2ad1 |
rev | line source |
---|---|
420
23a1868b4ac2
Adding dynamic USB power support
Jacob Alexander <haata@kiibohd.com>
parents:
385
diff
changeset
|
1 /* Copyright (C) 2014-2016 by Jacob Alexander |
172
a30bddad4115
Adding UART and UART + USB muxed CLI output.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
2 * |
a30bddad4115
Adding UART and UART + USB muxed CLI output.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
3 * Permission is hereby granted, free of charge, to any person obtaining a copy |
a30bddad4115
Adding UART and UART + USB muxed CLI output.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
4 * of this software and associated documentation files (the "Software"), to deal |
a30bddad4115
Adding UART and UART + USB muxed CLI output.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
5 * in the Software without restriction, including without limitation the rights |
a30bddad4115
Adding UART and UART + USB muxed CLI output.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
6 * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell |
a30bddad4115
Adding UART and UART + USB muxed CLI output.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
7 * copies of the Software, and to permit persons to whom the Software is |
a30bddad4115
Adding UART and UART + USB muxed CLI output.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
8 * furnished to do so, subject to the following conditions: |
a30bddad4115
Adding UART and UART + USB muxed CLI output.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
9 * |
a30bddad4115
Adding UART and UART + USB muxed CLI output.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
10 * The above copyright notice and this permission notice shall be included in |
a30bddad4115
Adding UART and UART + USB muxed CLI output.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
11 * all copies or substantial portions of the Software. |
a30bddad4115
Adding UART and UART + USB muxed CLI output.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
12 * |
a30bddad4115
Adding UART and UART + USB muxed CLI output.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
13 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR |
a30bddad4115
Adding UART and UART + USB muxed CLI output.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
14 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, |
a30bddad4115
Adding UART and UART + USB muxed CLI output.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
15 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE |
a30bddad4115
Adding UART and UART + USB muxed CLI output.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
16 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER |
a30bddad4115
Adding UART and UART + USB muxed CLI output.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
17 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, |
a30bddad4115
Adding UART and UART + USB muxed CLI output.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
18 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN |
a30bddad4115
Adding UART and UART + USB muxed CLI output.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
19 * THE SOFTWARE. |
a30bddad4115
Adding UART and UART + USB muxed CLI output.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
20 */ |
a30bddad4115
Adding UART and UART + USB muxed CLI output.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
21 |
a30bddad4115
Adding UART and UART + USB muxed CLI output.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
22 // ----- Includes ----- |
a30bddad4115
Adding UART and UART + USB muxed CLI output.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
23 |
a30bddad4115
Adding UART and UART + USB muxed CLI output.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
24 // Compiler Includes |
a30bddad4115
Adding UART and UART + USB muxed CLI output.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
25 #include <Lib/OutputLib.h> |
a30bddad4115
Adding UART and UART + USB muxed CLI output.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
26 |
a30bddad4115
Adding UART and UART + USB muxed CLI output.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
27 // Project Includes |
a30bddad4115
Adding UART and UART + USB muxed CLI output.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
28 #include <cli.h> |
227
ed05fa3555d4
Updating usbMuxUart for NKRO
Jacob Alexander <haata@kiibohd.com>
parents:
195
diff
changeset
|
29 #include <led.h> |
172
a30bddad4115
Adding UART and UART + USB muxed CLI output.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
30 #include <print.h> |
a30bddad4115
Adding UART and UART + USB muxed CLI output.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
31 #include <scan_loop.h> |
a30bddad4115
Adding UART and UART + USB muxed CLI output.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
32 |
a30bddad4115
Adding UART and UART + USB muxed CLI output.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
33 // USB Includes |
a30bddad4115
Adding UART and UART + USB muxed CLI output.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
34 #if defined(_at90usb162_) || defined(_atmega32u4_) || defined(_at90usb646_) || defined(_at90usb1286_) |
263
9afed592bcb5
Preparing for mk20dx256vlh7
Jacob Alexander <haata@kiibohd.com>
parents:
239
diff
changeset
|
35 #elif defined(_mk20dx128_) || defined(_mk20dx128vlf5_) || defined(_mk20dx256_) || defined(_mk20dx256vlh7_) |
300
7119c2149abb
Fixing compiler errors for usbMuxUart Output module
Jacob Alexander <haata@kiibohd.com>
parents:
275
diff
changeset
|
36 #include <arm/uart_serial.h> |
7119c2149abb
Fixing compiler errors for usbMuxUart Output module
Jacob Alexander <haata@kiibohd.com>
parents:
275
diff
changeset
|
37 #include <arm/usb_dev.h> |
7119c2149abb
Fixing compiler errors for usbMuxUart Output module
Jacob Alexander <haata@kiibohd.com>
parents:
275
diff
changeset
|
38 #include <arm/usb_keyboard.h> |
7119c2149abb
Fixing compiler errors for usbMuxUart Output module
Jacob Alexander <haata@kiibohd.com>
parents:
275
diff
changeset
|
39 #include <arm/usb_serial.h> |
447
56237ba5da6f
Adding auto-restart support whenever USB gets into an odd state
Jacob Alexander <haata@kiibohd.com>
parents:
445
diff
changeset
|
40 #include "arm/usb_mouse.h" |
172
a30bddad4115
Adding UART and UART + USB muxed CLI output.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
41 #endif |
a30bddad4115
Adding UART and UART + USB muxed CLI output.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
42 |
438
f10c2dad7f55
Adding missing GET_PROTOCOL handling
Jacob Alexander <haata@kiibohd.com>
parents:
420
diff
changeset
|
43 // KLL |
f10c2dad7f55
Adding missing GET_PROTOCOL handling
Jacob Alexander <haata@kiibohd.com>
parents:
420
diff
changeset
|
44 #include <kll_defs.h> |
f10c2dad7f55
Adding missing GET_PROTOCOL handling
Jacob Alexander <haata@kiibohd.com>
parents:
420
diff
changeset
|
45 |
172
a30bddad4115
Adding UART and UART + USB muxed CLI output.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
46 // Local Includes |
a30bddad4115
Adding UART and UART + USB muxed CLI output.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
47 #include "output_com.h" |
a30bddad4115
Adding UART and UART + USB muxed CLI output.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
48 |
a30bddad4115
Adding UART and UART + USB muxed CLI output.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
49 |
a30bddad4115
Adding UART and UART + USB muxed CLI output.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
50 |
227
ed05fa3555d4
Updating usbMuxUart for NKRO
Jacob Alexander <haata@kiibohd.com>
parents:
195
diff
changeset
|
51 // ----- Macros ----- |
ed05fa3555d4
Updating usbMuxUart for NKRO
Jacob Alexander <haata@kiibohd.com>
parents:
195
diff
changeset
|
52 |
ed05fa3555d4
Updating usbMuxUart for NKRO
Jacob Alexander <haata@kiibohd.com>
parents:
195
diff
changeset
|
53 // Used to build a bitmap lookup table from a byte addressable array |
ed05fa3555d4
Updating usbMuxUart for NKRO
Jacob Alexander <haata@kiibohd.com>
parents:
195
diff
changeset
|
54 #define byteLookup( byte ) case (( byte ) * ( 8 )): bytePosition = byte; byteShift = 0; break; \ |
310 | 55 case (( byte ) * ( 8 ) + ( 1 )): bytePosition = byte; byteShift = 1; break; \ |
56 case (( byte ) * ( 8 ) + ( 2 )): bytePosition = byte; byteShift = 2; break; \ | |
57 case (( byte ) * ( 8 ) + ( 3 )): bytePosition = byte; byteShift = 3; break; \ | |
58 case (( byte ) * ( 8 ) + ( 4 )): bytePosition = byte; byteShift = 4; break; \ | |
59 case (( byte ) * ( 8 ) + ( 5 )): bytePosition = byte; byteShift = 5; break; \ | |
60 case (( byte ) * ( 8 ) + ( 6 )): bytePosition = byte; byteShift = 6; break; \ | |
61 case (( byte ) * ( 8 ) + ( 7 )): bytePosition = byte; byteShift = 7; break | |
227
ed05fa3555d4
Updating usbMuxUart for NKRO
Jacob Alexander <haata@kiibohd.com>
parents:
195
diff
changeset
|
62 |
ed05fa3555d4
Updating usbMuxUart for NKRO
Jacob Alexander <haata@kiibohd.com>
parents:
195
diff
changeset
|
63 |
ed05fa3555d4
Updating usbMuxUart for NKRO
Jacob Alexander <haata@kiibohd.com>
parents:
195
diff
changeset
|
64 |
172
a30bddad4115
Adding UART and UART + USB muxed CLI output.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
65 // ----- Function Declarations ----- |
a30bddad4115
Adding UART and UART + USB muxed CLI output.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
66 |
a30bddad4115
Adding UART and UART + USB muxed CLI output.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
67 void cliFunc_kbdProtocol( char* args ); |
347
136e47478441
UARTConnect enumeration working!
Jacob Alexander <haata@kiibohd.com>
parents:
340
diff
changeset
|
68 void cliFunc_outputDebug( char* args ); |
172
a30bddad4115
Adding UART and UART + USB muxed CLI output.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
69 void cliFunc_readLEDs ( char* args ); |
a30bddad4115
Adding UART and UART + USB muxed CLI output.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
70 void cliFunc_readUART ( char* args ); |
a30bddad4115
Adding UART and UART + USB muxed CLI output.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
71 void cliFunc_sendKeys ( char* args ); |
a30bddad4115
Adding UART and UART + USB muxed CLI output.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
72 void cliFunc_sendUART ( char* args ); |
a30bddad4115
Adding UART and UART + USB muxed CLI output.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
73 void cliFunc_setKeys ( char* args ); |
a30bddad4115
Adding UART and UART + USB muxed CLI output.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
74 void cliFunc_setMod ( char* args ); |
a30bddad4115
Adding UART and UART + USB muxed CLI output.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
75 |
a30bddad4115
Adding UART and UART + USB muxed CLI output.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
76 |
227
ed05fa3555d4
Updating usbMuxUart for NKRO
Jacob Alexander <haata@kiibohd.com>
parents:
195
diff
changeset
|
77 |
172
a30bddad4115
Adding UART and UART + USB muxed CLI output.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
78 // ----- Variables ----- |
a30bddad4115
Adding UART and UART + USB muxed CLI output.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
79 |
a30bddad4115
Adding UART and UART + USB muxed CLI output.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
80 // Output Module command dictionary |
239
2a4c99da1276
HUGE AVR RAM optimization (~28%).
Jacob Alexander <haata@kiibohd.com>
parents:
230
diff
changeset
|
81 CLIDict_Entry( kbdProtocol, "Keyboard Protocol Mode: 0 - Boot, 1 - OS/NKRO Mode" ); |
347
136e47478441
UARTConnect enumeration working!
Jacob Alexander <haata@kiibohd.com>
parents:
340
diff
changeset
|
82 CLIDict_Entry( outputDebug, "Toggle Output Debug mode." ); |
239
2a4c99da1276
HUGE AVR RAM optimization (~28%).
Jacob Alexander <haata@kiibohd.com>
parents:
230
diff
changeset
|
83 CLIDict_Entry( readLEDs, "Read LED byte:" NL "\t\t1 NumLck, 2 CapsLck, 4 ScrlLck, 16 Kana, etc." ); |
2a4c99da1276
HUGE AVR RAM optimization (~28%).
Jacob Alexander <haata@kiibohd.com>
parents:
230
diff
changeset
|
84 CLIDict_Entry( readUART, "Read UART buffer until empty." ); |
2a4c99da1276
HUGE AVR RAM optimization (~28%).
Jacob Alexander <haata@kiibohd.com>
parents:
230
diff
changeset
|
85 CLIDict_Entry( sendKeys, "Send the prepared list of USB codes and modifier byte." ); |
2a4c99da1276
HUGE AVR RAM optimization (~28%).
Jacob Alexander <haata@kiibohd.com>
parents:
230
diff
changeset
|
86 CLIDict_Entry( sendUART, "Send characters over UART0." ); |
2a4c99da1276
HUGE AVR RAM optimization (~28%).
Jacob Alexander <haata@kiibohd.com>
parents:
230
diff
changeset
|
87 CLIDict_Entry( setKeys, "Prepare a space separated list of USB codes (decimal). Waits until \033[35msendKeys\033[0m." ); |
2a4c99da1276
HUGE AVR RAM optimization (~28%).
Jacob Alexander <haata@kiibohd.com>
parents:
230
diff
changeset
|
88 CLIDict_Entry( setMod, "Set the modfier byte:" NL "\t\t1 LCtrl, 2 LShft, 4 LAlt, 8 LGUI, 16 RCtrl, 32 RShft, 64 RAlt, 128 RGUI" ); |
2a4c99da1276
HUGE AVR RAM optimization (~28%).
Jacob Alexander <haata@kiibohd.com>
parents:
230
diff
changeset
|
89 |
2a4c99da1276
HUGE AVR RAM optimization (~28%).
Jacob Alexander <haata@kiibohd.com>
parents:
230
diff
changeset
|
90 CLIDict_Def( outputCLIDict, "USB Module Commands" ) = { |
2a4c99da1276
HUGE AVR RAM optimization (~28%).
Jacob Alexander <haata@kiibohd.com>
parents:
230
diff
changeset
|
91 CLIDict_Item( kbdProtocol ), |
347
136e47478441
UARTConnect enumeration working!
Jacob Alexander <haata@kiibohd.com>
parents:
340
diff
changeset
|
92 CLIDict_Item( outputDebug ), |
239
2a4c99da1276
HUGE AVR RAM optimization (~28%).
Jacob Alexander <haata@kiibohd.com>
parents:
230
diff
changeset
|
93 CLIDict_Item( readLEDs ), |
2a4c99da1276
HUGE AVR RAM optimization (~28%).
Jacob Alexander <haata@kiibohd.com>
parents:
230
diff
changeset
|
94 CLIDict_Item( readUART ), |
2a4c99da1276
HUGE AVR RAM optimization (~28%).
Jacob Alexander <haata@kiibohd.com>
parents:
230
diff
changeset
|
95 CLIDict_Item( sendKeys ), |
2a4c99da1276
HUGE AVR RAM optimization (~28%).
Jacob Alexander <haata@kiibohd.com>
parents:
230
diff
changeset
|
96 CLIDict_Item( sendUART ), |
2a4c99da1276
HUGE AVR RAM optimization (~28%).
Jacob Alexander <haata@kiibohd.com>
parents:
230
diff
changeset
|
97 CLIDict_Item( setKeys ), |
2a4c99da1276
HUGE AVR RAM optimization (~28%).
Jacob Alexander <haata@kiibohd.com>
parents:
230
diff
changeset
|
98 CLIDict_Item( setMod ), |
172
a30bddad4115
Adding UART and UART + USB muxed CLI output.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
99 { 0, 0, 0 } // Null entry for dictionary end |
a30bddad4115
Adding UART and UART + USB muxed CLI output.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
100 }; |
a30bddad4115
Adding UART and UART + USB muxed CLI output.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
101 |
a30bddad4115
Adding UART and UART + USB muxed CLI output.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
102 |
a30bddad4115
Adding UART and UART + USB muxed CLI output.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
103 // Which modifier keys are currently pressed |
a30bddad4115
Adding UART and UART + USB muxed CLI output.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
104 // 1=left ctrl, 2=left shift, 4=left alt, 8=left gui |
a30bddad4115
Adding UART and UART + USB muxed CLI output.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
105 // 16=right ctrl, 32=right shift, 64=right alt, 128=right gui |
347
136e47478441
UARTConnect enumeration working!
Jacob Alexander <haata@kiibohd.com>
parents:
340
diff
changeset
|
106 uint8_t USBKeys_Modifiers = 0; |
136e47478441
UARTConnect enumeration working!
Jacob Alexander <haata@kiibohd.com>
parents:
340
diff
changeset
|
107 uint8_t USBKeys_ModifiersCLI = 0; // Separate CLI send buffer |
172
a30bddad4115
Adding UART and UART + USB muxed CLI output.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
108 |
a30bddad4115
Adding UART and UART + USB muxed CLI output.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
109 // Currently pressed keys, max is defined by USB_MAX_KEY_SEND |
347
136e47478441
UARTConnect enumeration working!
Jacob Alexander <haata@kiibohd.com>
parents:
340
diff
changeset
|
110 uint8_t USBKeys_Keys [USB_NKRO_BITFIELD_SIZE_KEYS]; |
136e47478441
UARTConnect enumeration working!
Jacob Alexander <haata@kiibohd.com>
parents:
340
diff
changeset
|
111 uint8_t USBKeys_KeysCLI[USB_NKRO_BITFIELD_SIZE_KEYS]; // Separate CLI send buffer |
227
ed05fa3555d4
Updating usbMuxUart for NKRO
Jacob Alexander <haata@kiibohd.com>
parents:
195
diff
changeset
|
112 |
ed05fa3555d4
Updating usbMuxUart for NKRO
Jacob Alexander <haata@kiibohd.com>
parents:
195
diff
changeset
|
113 // System Control and Consumer Control 1KRO containers |
347
136e47478441
UARTConnect enumeration working!
Jacob Alexander <haata@kiibohd.com>
parents:
340
diff
changeset
|
114 uint8_t USBKeys_SysCtrl; |
136e47478441
UARTConnect enumeration working!
Jacob Alexander <haata@kiibohd.com>
parents:
340
diff
changeset
|
115 uint16_t USBKeys_ConsCtrl; |
172
a30bddad4115
Adding UART and UART + USB muxed CLI output.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
116 |
a30bddad4115
Adding UART and UART + USB muxed CLI output.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
117 // The number of keys sent to the usb in the array |
347
136e47478441
UARTConnect enumeration working!
Jacob Alexander <haata@kiibohd.com>
parents:
340
diff
changeset
|
118 uint8_t USBKeys_Sent = 0; |
136e47478441
UARTConnect enumeration working!
Jacob Alexander <haata@kiibohd.com>
parents:
340
diff
changeset
|
119 uint8_t USBKeys_SentCLI = 0; |
172
a30bddad4115
Adding UART and UART + USB muxed CLI output.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
120 |
a30bddad4115
Adding UART and UART + USB muxed CLI output.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
121 // 1=num lock, 2=caps lock, 4=scroll lock, 8=compose, 16=kana |
227
ed05fa3555d4
Updating usbMuxUart for NKRO
Jacob Alexander <haata@kiibohd.com>
parents:
195
diff
changeset
|
122 volatile uint8_t USBKeys_LEDs = 0; |
172
a30bddad4115
Adding UART and UART + USB muxed CLI output.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
123 |
438
f10c2dad7f55
Adding missing GET_PROTOCOL handling
Jacob Alexander <haata@kiibohd.com>
parents:
420
diff
changeset
|
124 // Currently pressed mouse buttons, bitmask, 0 represents no buttons pressed |
f10c2dad7f55
Adding missing GET_PROTOCOL handling
Jacob Alexander <haata@kiibohd.com>
parents:
420
diff
changeset
|
125 volatile uint16_t USBMouse_Buttons = 0; |
f10c2dad7f55
Adding missing GET_PROTOCOL handling
Jacob Alexander <haata@kiibohd.com>
parents:
420
diff
changeset
|
126 |
f10c2dad7f55
Adding missing GET_PROTOCOL handling
Jacob Alexander <haata@kiibohd.com>
parents:
420
diff
changeset
|
127 // Relative mouse axis movement, stores pending movement |
f10c2dad7f55
Adding missing GET_PROTOCOL handling
Jacob Alexander <haata@kiibohd.com>
parents:
420
diff
changeset
|
128 volatile uint16_t USBMouse_Relative_x = 0; |
f10c2dad7f55
Adding missing GET_PROTOCOL handling
Jacob Alexander <haata@kiibohd.com>
parents:
420
diff
changeset
|
129 volatile uint16_t USBMouse_Relative_y = 0; |
f10c2dad7f55
Adding missing GET_PROTOCOL handling
Jacob Alexander <haata@kiibohd.com>
parents:
420
diff
changeset
|
130 |
172
a30bddad4115
Adding UART and UART + USB muxed CLI output.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
131 // Protocol setting from the host. |
227
ed05fa3555d4
Updating usbMuxUart for NKRO
Jacob Alexander <haata@kiibohd.com>
parents:
195
diff
changeset
|
132 // 0 - Boot Mode |
ed05fa3555d4
Updating usbMuxUart for NKRO
Jacob Alexander <haata@kiibohd.com>
parents:
195
diff
changeset
|
133 // 1 - NKRO Mode (Default, unless set by a BIOS or boot interface) |
438
f10c2dad7f55
Adding missing GET_PROTOCOL handling
Jacob Alexander <haata@kiibohd.com>
parents:
420
diff
changeset
|
134 volatile uint8_t USBKeys_Protocol = USBProtocol_define; |
227
ed05fa3555d4
Updating usbMuxUart for NKRO
Jacob Alexander <haata@kiibohd.com>
parents:
195
diff
changeset
|
135 |
ed05fa3555d4
Updating usbMuxUart for NKRO
Jacob Alexander <haata@kiibohd.com>
parents:
195
diff
changeset
|
136 // Indicate if USB should send update |
ed05fa3555d4
Updating usbMuxUart for NKRO
Jacob Alexander <haata@kiibohd.com>
parents:
195
diff
changeset
|
137 // OS only needs update if there has been a change in state |
ed05fa3555d4
Updating usbMuxUart for NKRO
Jacob Alexander <haata@kiibohd.com>
parents:
195
diff
changeset
|
138 USBKeyChangeState USBKeys_Changed = USBKeyChangeState_None; |
172
a30bddad4115
Adding UART and UART + USB muxed CLI output.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
139 |
438
f10c2dad7f55
Adding missing GET_PROTOCOL handling
Jacob Alexander <haata@kiibohd.com>
parents:
420
diff
changeset
|
140 // Indicate if USB should send update |
f10c2dad7f55
Adding missing GET_PROTOCOL handling
Jacob Alexander <haata@kiibohd.com>
parents:
420
diff
changeset
|
141 USBMouseChangeState USBMouse_Changed = 0; |
f10c2dad7f55
Adding missing GET_PROTOCOL handling
Jacob Alexander <haata@kiibohd.com>
parents:
420
diff
changeset
|
142 |
172
a30bddad4115
Adding UART and UART + USB muxed CLI output.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
143 // the idle configuration, how often we send the report to the |
a30bddad4115
Adding UART and UART + USB muxed CLI output.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
144 // host (ms * 4) even when it hasn't changed |
447
56237ba5da6f
Adding auto-restart support whenever USB gets into an odd state
Jacob Alexander <haata@kiibohd.com>
parents:
445
diff
changeset
|
145 // 0 - Disables |
56237ba5da6f
Adding auto-restart support whenever USB gets into an odd state
Jacob Alexander <haata@kiibohd.com>
parents:
445
diff
changeset
|
146 uint8_t USBKeys_Idle_Config = 0; |
172
a30bddad4115
Adding UART and UART + USB muxed CLI output.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
147 |
447
56237ba5da6f
Adding auto-restart support whenever USB gets into an odd state
Jacob Alexander <haata@kiibohd.com>
parents:
445
diff
changeset
|
148 // Count until idle timeout |
56237ba5da6f
Adding auto-restart support whenever USB gets into an odd state
Jacob Alexander <haata@kiibohd.com>
parents:
445
diff
changeset
|
149 uint32_t USBKeys_Idle_Expiry = 0; |
347
136e47478441
UARTConnect enumeration working!
Jacob Alexander <haata@kiibohd.com>
parents:
340
diff
changeset
|
150 uint8_t USBKeys_Idle_Count = 0; |
227
ed05fa3555d4
Updating usbMuxUart for NKRO
Jacob Alexander <haata@kiibohd.com>
parents:
195
diff
changeset
|
151 |
275
d5bf41d7f7ef
Initial code for USB cable detection
Jacob Alexander <haata@kiibohd.com>
parents:
263
diff
changeset
|
152 // Indicates whether the Output module is fully functional |
d5bf41d7f7ef
Initial code for USB cable detection
Jacob Alexander <haata@kiibohd.com>
parents:
263
diff
changeset
|
153 // 0 - Not fully functional, 1 - Fully functional |
d5bf41d7f7ef
Initial code for USB cable detection
Jacob Alexander <haata@kiibohd.com>
parents:
263
diff
changeset
|
154 // 0 is often used to show that a USB cable is not plugged in (but has power) |
347
136e47478441
UARTConnect enumeration working!
Jacob Alexander <haata@kiibohd.com>
parents:
340
diff
changeset
|
155 volatile uint8_t Output_Available = 0; |
275
d5bf41d7f7ef
Initial code for USB cable detection
Jacob Alexander <haata@kiibohd.com>
parents:
263
diff
changeset
|
156 |
300
7119c2149abb
Fixing compiler errors for usbMuxUart Output module
Jacob Alexander <haata@kiibohd.com>
parents:
275
diff
changeset
|
157 // Debug control variable for Output modules |
7119c2149abb
Fixing compiler errors for usbMuxUart Output module
Jacob Alexander <haata@kiibohd.com>
parents:
275
diff
changeset
|
158 // 0 - Debug disabled (default) |
7119c2149abb
Fixing compiler errors for usbMuxUart Output module
Jacob Alexander <haata@kiibohd.com>
parents:
275
diff
changeset
|
159 // 1 - Debug enabled |
347
136e47478441
UARTConnect enumeration working!
Jacob Alexander <haata@kiibohd.com>
parents:
340
diff
changeset
|
160 uint8_t Output_DebugMode = 0; |
300
7119c2149abb
Fixing compiler errors for usbMuxUart Output module
Jacob Alexander <haata@kiibohd.com>
parents:
275
diff
changeset
|
161 |
420
23a1868b4ac2
Adding dynamic USB power support
Jacob Alexander <haata@kiibohd.com>
parents:
385
diff
changeset
|
162 // mA - Set by outside module if not using USB (i.e. Interconnect) |
23a1868b4ac2
Adding dynamic USB power support
Jacob Alexander <haata@kiibohd.com>
parents:
385
diff
changeset
|
163 // Generally set to 100 mA (low power) or 500 mA (high power) |
23a1868b4ac2
Adding dynamic USB power support
Jacob Alexander <haata@kiibohd.com>
parents:
385
diff
changeset
|
164 uint16_t Output_ExtCurrent_Available = 0; |
23a1868b4ac2
Adding dynamic USB power support
Jacob Alexander <haata@kiibohd.com>
parents:
385
diff
changeset
|
165 |
23a1868b4ac2
Adding dynamic USB power support
Jacob Alexander <haata@kiibohd.com>
parents:
385
diff
changeset
|
166 // mA - Set by USB module (if exists) |
23a1868b4ac2
Adding dynamic USB power support
Jacob Alexander <haata@kiibohd.com>
parents:
385
diff
changeset
|
167 // Initially 100 mA, but may be negotiated higher (e.g. 500 mA) |
23a1868b4ac2
Adding dynamic USB power support
Jacob Alexander <haata@kiibohd.com>
parents:
385
diff
changeset
|
168 uint16_t Output_USBCurrent_Available = 0; |
23a1868b4ac2
Adding dynamic USB power support
Jacob Alexander <haata@kiibohd.com>
parents:
385
diff
changeset
|
169 |
227
ed05fa3555d4
Updating usbMuxUart for NKRO
Jacob Alexander <haata@kiibohd.com>
parents:
195
diff
changeset
|
170 |
ed05fa3555d4
Updating usbMuxUart for NKRO
Jacob Alexander <haata@kiibohd.com>
parents:
195
diff
changeset
|
171 |
ed05fa3555d4
Updating usbMuxUart for NKRO
Jacob Alexander <haata@kiibohd.com>
parents:
195
diff
changeset
|
172 // ----- Capabilities ----- |
ed05fa3555d4
Updating usbMuxUart for NKRO
Jacob Alexander <haata@kiibohd.com>
parents:
195
diff
changeset
|
173 |
300
7119c2149abb
Fixing compiler errors for usbMuxUart Output module
Jacob Alexander <haata@kiibohd.com>
parents:
275
diff
changeset
|
174 // Set Boot Keyboard Protocol |
7119c2149abb
Fixing compiler errors for usbMuxUart Output module
Jacob Alexander <haata@kiibohd.com>
parents:
275
diff
changeset
|
175 void Output_kbdProtocolBoot_capability( uint8_t state, uint8_t stateType, uint8_t *args ) |
7119c2149abb
Fixing compiler errors for usbMuxUart Output module
Jacob Alexander <haata@kiibohd.com>
parents:
275
diff
changeset
|
176 { |
7119c2149abb
Fixing compiler errors for usbMuxUart Output module
Jacob Alexander <haata@kiibohd.com>
parents:
275
diff
changeset
|
177 // Display capability name |
7119c2149abb
Fixing compiler errors for usbMuxUart Output module
Jacob Alexander <haata@kiibohd.com>
parents:
275
diff
changeset
|
178 if ( stateType == 0xFF && state == 0xFF ) |
7119c2149abb
Fixing compiler errors for usbMuxUart Output module
Jacob Alexander <haata@kiibohd.com>
parents:
275
diff
changeset
|
179 { |
7119c2149abb
Fixing compiler errors for usbMuxUart Output module
Jacob Alexander <haata@kiibohd.com>
parents:
275
diff
changeset
|
180 print("Output_kbdProtocolBoot()"); |
7119c2149abb
Fixing compiler errors for usbMuxUart Output module
Jacob Alexander <haata@kiibohd.com>
parents:
275
diff
changeset
|
181 return; |
7119c2149abb
Fixing compiler errors for usbMuxUart Output module
Jacob Alexander <haata@kiibohd.com>
parents:
275
diff
changeset
|
182 } |
7119c2149abb
Fixing compiler errors for usbMuxUart Output module
Jacob Alexander <haata@kiibohd.com>
parents:
275
diff
changeset
|
183 |
7119c2149abb
Fixing compiler errors for usbMuxUart Output module
Jacob Alexander <haata@kiibohd.com>
parents:
275
diff
changeset
|
184 // Only set if necessary |
7119c2149abb
Fixing compiler errors for usbMuxUart Output module
Jacob Alexander <haata@kiibohd.com>
parents:
275
diff
changeset
|
185 if ( USBKeys_Protocol == 0 ) |
7119c2149abb
Fixing compiler errors for usbMuxUart Output module
Jacob Alexander <haata@kiibohd.com>
parents:
275
diff
changeset
|
186 return; |
7119c2149abb
Fixing compiler errors for usbMuxUart Output module
Jacob Alexander <haata@kiibohd.com>
parents:
275
diff
changeset
|
187 |
7119c2149abb
Fixing compiler errors for usbMuxUart Output module
Jacob Alexander <haata@kiibohd.com>
parents:
275
diff
changeset
|
188 // TODO Analog inputs |
7119c2149abb
Fixing compiler errors for usbMuxUart Output module
Jacob Alexander <haata@kiibohd.com>
parents:
275
diff
changeset
|
189 // Only set on key press |
7119c2149abb
Fixing compiler errors for usbMuxUart Output module
Jacob Alexander <haata@kiibohd.com>
parents:
275
diff
changeset
|
190 if ( stateType != 0x01 ) |
7119c2149abb
Fixing compiler errors for usbMuxUart Output module
Jacob Alexander <haata@kiibohd.com>
parents:
275
diff
changeset
|
191 return; |
7119c2149abb
Fixing compiler errors for usbMuxUart Output module
Jacob Alexander <haata@kiibohd.com>
parents:
275
diff
changeset
|
192 |
7119c2149abb
Fixing compiler errors for usbMuxUart Output module
Jacob Alexander <haata@kiibohd.com>
parents:
275
diff
changeset
|
193 // Flush the key buffers |
7119c2149abb
Fixing compiler errors for usbMuxUart Output module
Jacob Alexander <haata@kiibohd.com>
parents:
275
diff
changeset
|
194 Output_flushBuffers(); |
7119c2149abb
Fixing compiler errors for usbMuxUart Output module
Jacob Alexander <haata@kiibohd.com>
parents:
275
diff
changeset
|
195 |
7119c2149abb
Fixing compiler errors for usbMuxUart Output module
Jacob Alexander <haata@kiibohd.com>
parents:
275
diff
changeset
|
196 // Set the keyboard protocol to Boot Mode |
7119c2149abb
Fixing compiler errors for usbMuxUart Output module
Jacob Alexander <haata@kiibohd.com>
parents:
275
diff
changeset
|
197 USBKeys_Protocol = 0; |
7119c2149abb
Fixing compiler errors for usbMuxUart Output module
Jacob Alexander <haata@kiibohd.com>
parents:
275
diff
changeset
|
198 } |
7119c2149abb
Fixing compiler errors for usbMuxUart Output module
Jacob Alexander <haata@kiibohd.com>
parents:
275
diff
changeset
|
199 |
7119c2149abb
Fixing compiler errors for usbMuxUart Output module
Jacob Alexander <haata@kiibohd.com>
parents:
275
diff
changeset
|
200 |
7119c2149abb
Fixing compiler errors for usbMuxUart Output module
Jacob Alexander <haata@kiibohd.com>
parents:
275
diff
changeset
|
201 // Set NKRO Keyboard Protocol |
7119c2149abb
Fixing compiler errors for usbMuxUart Output module
Jacob Alexander <haata@kiibohd.com>
parents:
275
diff
changeset
|
202 void Output_kbdProtocolNKRO_capability( uint8_t state, uint8_t stateType, uint8_t *args ) |
7119c2149abb
Fixing compiler errors for usbMuxUart Output module
Jacob Alexander <haata@kiibohd.com>
parents:
275
diff
changeset
|
203 { |
7119c2149abb
Fixing compiler errors for usbMuxUart Output module
Jacob Alexander <haata@kiibohd.com>
parents:
275
diff
changeset
|
204 // Display capability name |
7119c2149abb
Fixing compiler errors for usbMuxUart Output module
Jacob Alexander <haata@kiibohd.com>
parents:
275
diff
changeset
|
205 if ( stateType == 0xFF && state == 0xFF ) |
7119c2149abb
Fixing compiler errors for usbMuxUart Output module
Jacob Alexander <haata@kiibohd.com>
parents:
275
diff
changeset
|
206 { |
7119c2149abb
Fixing compiler errors for usbMuxUart Output module
Jacob Alexander <haata@kiibohd.com>
parents:
275
diff
changeset
|
207 print("Output_kbdProtocolNKRO()"); |
7119c2149abb
Fixing compiler errors for usbMuxUart Output module
Jacob Alexander <haata@kiibohd.com>
parents:
275
diff
changeset
|
208 return; |
7119c2149abb
Fixing compiler errors for usbMuxUart Output module
Jacob Alexander <haata@kiibohd.com>
parents:
275
diff
changeset
|
209 } |
7119c2149abb
Fixing compiler errors for usbMuxUart Output module
Jacob Alexander <haata@kiibohd.com>
parents:
275
diff
changeset
|
210 |
7119c2149abb
Fixing compiler errors for usbMuxUart Output module
Jacob Alexander <haata@kiibohd.com>
parents:
275
diff
changeset
|
211 // Only set if necessary |
7119c2149abb
Fixing compiler errors for usbMuxUart Output module
Jacob Alexander <haata@kiibohd.com>
parents:
275
diff
changeset
|
212 if ( USBKeys_Protocol == 1 ) |
7119c2149abb
Fixing compiler errors for usbMuxUart Output module
Jacob Alexander <haata@kiibohd.com>
parents:
275
diff
changeset
|
213 return; |
7119c2149abb
Fixing compiler errors for usbMuxUart Output module
Jacob Alexander <haata@kiibohd.com>
parents:
275
diff
changeset
|
214 |
7119c2149abb
Fixing compiler errors for usbMuxUart Output module
Jacob Alexander <haata@kiibohd.com>
parents:
275
diff
changeset
|
215 // TODO Analog inputs |
7119c2149abb
Fixing compiler errors for usbMuxUart Output module
Jacob Alexander <haata@kiibohd.com>
parents:
275
diff
changeset
|
216 // Only set on key press |
7119c2149abb
Fixing compiler errors for usbMuxUart Output module
Jacob Alexander <haata@kiibohd.com>
parents:
275
diff
changeset
|
217 if ( stateType != 0x01 ) |
7119c2149abb
Fixing compiler errors for usbMuxUart Output module
Jacob Alexander <haata@kiibohd.com>
parents:
275
diff
changeset
|
218 return; |
7119c2149abb
Fixing compiler errors for usbMuxUart Output module
Jacob Alexander <haata@kiibohd.com>
parents:
275
diff
changeset
|
219 |
7119c2149abb
Fixing compiler errors for usbMuxUart Output module
Jacob Alexander <haata@kiibohd.com>
parents:
275
diff
changeset
|
220 // Flush the key buffers |
7119c2149abb
Fixing compiler errors for usbMuxUart Output module
Jacob Alexander <haata@kiibohd.com>
parents:
275
diff
changeset
|
221 Output_flushBuffers(); |
7119c2149abb
Fixing compiler errors for usbMuxUart Output module
Jacob Alexander <haata@kiibohd.com>
parents:
275
diff
changeset
|
222 |
7119c2149abb
Fixing compiler errors for usbMuxUart Output module
Jacob Alexander <haata@kiibohd.com>
parents:
275
diff
changeset
|
223 // Set the keyboard protocol to NKRO Mode |
7119c2149abb
Fixing compiler errors for usbMuxUart Output module
Jacob Alexander <haata@kiibohd.com>
parents:
275
diff
changeset
|
224 USBKeys_Protocol = 1; |
7119c2149abb
Fixing compiler errors for usbMuxUart Output module
Jacob Alexander <haata@kiibohd.com>
parents:
275
diff
changeset
|
225 } |
7119c2149abb
Fixing compiler errors for usbMuxUart Output module
Jacob Alexander <haata@kiibohd.com>
parents:
275
diff
changeset
|
226 |
7119c2149abb
Fixing compiler errors for usbMuxUart Output module
Jacob Alexander <haata@kiibohd.com>
parents:
275
diff
changeset
|
227 |
445
380e1f0123d0
Adding toggleKbdProtocol capability
José Luis Salvador Rufo <salvador.joseluis@gmail.com>
parents:
439
diff
changeset
|
228 // Toggle Keyboard Protocol |
380e1f0123d0
Adding toggleKbdProtocol capability
José Luis Salvador Rufo <salvador.joseluis@gmail.com>
parents:
439
diff
changeset
|
229 void Output_toggleKbdProtocol_capability( uint8_t state, uint8_t stateType, uint8_t *args ) |
380e1f0123d0
Adding toggleKbdProtocol capability
José Luis Salvador Rufo <salvador.joseluis@gmail.com>
parents:
439
diff
changeset
|
230 { |
380e1f0123d0
Adding toggleKbdProtocol capability
José Luis Salvador Rufo <salvador.joseluis@gmail.com>
parents:
439
diff
changeset
|
231 // Display capability name |
380e1f0123d0
Adding toggleKbdProtocol capability
José Luis Salvador Rufo <salvador.joseluis@gmail.com>
parents:
439
diff
changeset
|
232 if ( stateType == 0xFF && state == 0xFF ) |
380e1f0123d0
Adding toggleKbdProtocol capability
José Luis Salvador Rufo <salvador.joseluis@gmail.com>
parents:
439
diff
changeset
|
233 { |
380e1f0123d0
Adding toggleKbdProtocol capability
José Luis Salvador Rufo <salvador.joseluis@gmail.com>
parents:
439
diff
changeset
|
234 print("Output_toggleKbdProtocol()"); |
380e1f0123d0
Adding toggleKbdProtocol capability
José Luis Salvador Rufo <salvador.joseluis@gmail.com>
parents:
439
diff
changeset
|
235 return; |
380e1f0123d0
Adding toggleKbdProtocol capability
José Luis Salvador Rufo <salvador.joseluis@gmail.com>
parents:
439
diff
changeset
|
236 } |
380e1f0123d0
Adding toggleKbdProtocol capability
José Luis Salvador Rufo <salvador.joseluis@gmail.com>
parents:
439
diff
changeset
|
237 |
380e1f0123d0
Adding toggleKbdProtocol capability
José Luis Salvador Rufo <salvador.joseluis@gmail.com>
parents:
439
diff
changeset
|
238 // Only toggle protocol if release state |
380e1f0123d0
Adding toggleKbdProtocol capability
José Luis Salvador Rufo <salvador.joseluis@gmail.com>
parents:
439
diff
changeset
|
239 if ( stateType == 0x00 && state == 0x03 ) |
380e1f0123d0
Adding toggleKbdProtocol capability
José Luis Salvador Rufo <salvador.joseluis@gmail.com>
parents:
439
diff
changeset
|
240 { |
380e1f0123d0
Adding toggleKbdProtocol capability
José Luis Salvador Rufo <salvador.joseluis@gmail.com>
parents:
439
diff
changeset
|
241 // Flush the key buffers |
380e1f0123d0
Adding toggleKbdProtocol capability
José Luis Salvador Rufo <salvador.joseluis@gmail.com>
parents:
439
diff
changeset
|
242 Output_flushBuffers(); |
380e1f0123d0
Adding toggleKbdProtocol capability
José Luis Salvador Rufo <salvador.joseluis@gmail.com>
parents:
439
diff
changeset
|
243 |
380e1f0123d0
Adding toggleKbdProtocol capability
José Luis Salvador Rufo <salvador.joseluis@gmail.com>
parents:
439
diff
changeset
|
244 // Toggle the keyboard protocol Mode |
380e1f0123d0
Adding toggleKbdProtocol capability
José Luis Salvador Rufo <salvador.joseluis@gmail.com>
parents:
439
diff
changeset
|
245 USBKeys_Protocol = !USBKeys_Protocol; |
380e1f0123d0
Adding toggleKbdProtocol capability
José Luis Salvador Rufo <salvador.joseluis@gmail.com>
parents:
439
diff
changeset
|
246 } |
380e1f0123d0
Adding toggleKbdProtocol capability
José Luis Salvador Rufo <salvador.joseluis@gmail.com>
parents:
439
diff
changeset
|
247 } |
380e1f0123d0
Adding toggleKbdProtocol capability
José Luis Salvador Rufo <salvador.joseluis@gmail.com>
parents:
439
diff
changeset
|
248 |
380e1f0123d0
Adding toggleKbdProtocol capability
José Luis Salvador Rufo <salvador.joseluis@gmail.com>
parents:
439
diff
changeset
|
249 |
227
ed05fa3555d4
Updating usbMuxUart for NKRO
Jacob Alexander <haata@kiibohd.com>
parents:
195
diff
changeset
|
250 // Sends a Consumer Control code to the USB Output buffer |
ed05fa3555d4
Updating usbMuxUart for NKRO
Jacob Alexander <haata@kiibohd.com>
parents:
195
diff
changeset
|
251 void Output_consCtrlSend_capability( uint8_t state, uint8_t stateType, uint8_t *args ) |
ed05fa3555d4
Updating usbMuxUart for NKRO
Jacob Alexander <haata@kiibohd.com>
parents:
195
diff
changeset
|
252 { |
ed05fa3555d4
Updating usbMuxUart for NKRO
Jacob Alexander <haata@kiibohd.com>
parents:
195
diff
changeset
|
253 // Display capability name |
ed05fa3555d4
Updating usbMuxUart for NKRO
Jacob Alexander <haata@kiibohd.com>
parents:
195
diff
changeset
|
254 if ( stateType == 0xFF && state == 0xFF ) |
ed05fa3555d4
Updating usbMuxUart for NKRO
Jacob Alexander <haata@kiibohd.com>
parents:
195
diff
changeset
|
255 { |
ed05fa3555d4
Updating usbMuxUart for NKRO
Jacob Alexander <haata@kiibohd.com>
parents:
195
diff
changeset
|
256 print("Output_consCtrlSend(consCode)"); |
ed05fa3555d4
Updating usbMuxUart for NKRO
Jacob Alexander <haata@kiibohd.com>
parents:
195
diff
changeset
|
257 return; |
ed05fa3555d4
Updating usbMuxUart for NKRO
Jacob Alexander <haata@kiibohd.com>
parents:
195
diff
changeset
|
258 } |
ed05fa3555d4
Updating usbMuxUart for NKRO
Jacob Alexander <haata@kiibohd.com>
parents:
195
diff
changeset
|
259 |
ed05fa3555d4
Updating usbMuxUart for NKRO
Jacob Alexander <haata@kiibohd.com>
parents:
195
diff
changeset
|
260 // Not implemented in Boot Mode |
ed05fa3555d4
Updating usbMuxUart for NKRO
Jacob Alexander <haata@kiibohd.com>
parents:
195
diff
changeset
|
261 if ( USBKeys_Protocol == 0 ) |
ed05fa3555d4
Updating usbMuxUart for NKRO
Jacob Alexander <haata@kiibohd.com>
parents:
195
diff
changeset
|
262 { |
ed05fa3555d4
Updating usbMuxUart for NKRO
Jacob Alexander <haata@kiibohd.com>
parents:
195
diff
changeset
|
263 warn_print("Consumer Control is not implemented for Boot Mode"); |
ed05fa3555d4
Updating usbMuxUart for NKRO
Jacob Alexander <haata@kiibohd.com>
parents:
195
diff
changeset
|
264 return; |
ed05fa3555d4
Updating usbMuxUart for NKRO
Jacob Alexander <haata@kiibohd.com>
parents:
195
diff
changeset
|
265 } |
ed05fa3555d4
Updating usbMuxUart for NKRO
Jacob Alexander <haata@kiibohd.com>
parents:
195
diff
changeset
|
266 |
ed05fa3555d4
Updating usbMuxUart for NKRO
Jacob Alexander <haata@kiibohd.com>
parents:
195
diff
changeset
|
267 // TODO Analog inputs |
ed05fa3555d4
Updating usbMuxUart for NKRO
Jacob Alexander <haata@kiibohd.com>
parents:
195
diff
changeset
|
268 // Only indicate USB has changed if either a press or release has occured |
ed05fa3555d4
Updating usbMuxUart for NKRO
Jacob Alexander <haata@kiibohd.com>
parents:
195
diff
changeset
|
269 if ( state == 0x01 || state == 0x03 ) |
ed05fa3555d4
Updating usbMuxUart for NKRO
Jacob Alexander <haata@kiibohd.com>
parents:
195
diff
changeset
|
270 USBKeys_Changed |= USBKeyChangeState_Consumer; |
ed05fa3555d4
Updating usbMuxUart for NKRO
Jacob Alexander <haata@kiibohd.com>
parents:
195
diff
changeset
|
271 |
ed05fa3555d4
Updating usbMuxUart for NKRO
Jacob Alexander <haata@kiibohd.com>
parents:
195
diff
changeset
|
272 // Only send keypresses if press or hold state |
ed05fa3555d4
Updating usbMuxUart for NKRO
Jacob Alexander <haata@kiibohd.com>
parents:
195
diff
changeset
|
273 if ( stateType == 0x00 && state == 0x03 ) // Release state |
347
136e47478441
UARTConnect enumeration working!
Jacob Alexander <haata@kiibohd.com>
parents:
340
diff
changeset
|
274 { |
136e47478441
UARTConnect enumeration working!
Jacob Alexander <haata@kiibohd.com>
parents:
340
diff
changeset
|
275 USBKeys_ConsCtrl = 0; |
227
ed05fa3555d4
Updating usbMuxUart for NKRO
Jacob Alexander <haata@kiibohd.com>
parents:
195
diff
changeset
|
276 return; |
347
136e47478441
UARTConnect enumeration working!
Jacob Alexander <haata@kiibohd.com>
parents:
340
diff
changeset
|
277 } |
227
ed05fa3555d4
Updating usbMuxUart for NKRO
Jacob Alexander <haata@kiibohd.com>
parents:
195
diff
changeset
|
278 |
ed05fa3555d4
Updating usbMuxUart for NKRO
Jacob Alexander <haata@kiibohd.com>
parents:
195
diff
changeset
|
279 // Set consumer control code |
ed05fa3555d4
Updating usbMuxUart for NKRO
Jacob Alexander <haata@kiibohd.com>
parents:
195
diff
changeset
|
280 USBKeys_ConsCtrl = *(uint16_t*)(&args[0]); |
ed05fa3555d4
Updating usbMuxUart for NKRO
Jacob Alexander <haata@kiibohd.com>
parents:
195
diff
changeset
|
281 } |
ed05fa3555d4
Updating usbMuxUart for NKRO
Jacob Alexander <haata@kiibohd.com>
parents:
195
diff
changeset
|
282 |
ed05fa3555d4
Updating usbMuxUart for NKRO
Jacob Alexander <haata@kiibohd.com>
parents:
195
diff
changeset
|
283 |
340 | 284 // Ignores the given key status update |
285 // Used to prevent fall-through, this is the None keyword in KLL | |
286 void Output_noneSend_capability( uint8_t state, uint8_t stateType, uint8_t *args ) | |
287 { | |
288 // Display capability name | |
289 if ( stateType == 0xFF && state == 0xFF ) | |
290 { | |
291 print("Output_noneSend()"); | |
292 return; | |
293 } | |
294 | |
295 // Nothing to do, because that's the point :P | |
296 } | |
297 | |
298 | |
227
ed05fa3555d4
Updating usbMuxUart for NKRO
Jacob Alexander <haata@kiibohd.com>
parents:
195
diff
changeset
|
299 // Sends a System Control code to the USB Output buffer |
ed05fa3555d4
Updating usbMuxUart for NKRO
Jacob Alexander <haata@kiibohd.com>
parents:
195
diff
changeset
|
300 void Output_sysCtrlSend_capability( uint8_t state, uint8_t stateType, uint8_t *args ) |
ed05fa3555d4
Updating usbMuxUart for NKRO
Jacob Alexander <haata@kiibohd.com>
parents:
195
diff
changeset
|
301 { |
ed05fa3555d4
Updating usbMuxUart for NKRO
Jacob Alexander <haata@kiibohd.com>
parents:
195
diff
changeset
|
302 // Display capability name |
ed05fa3555d4
Updating usbMuxUart for NKRO
Jacob Alexander <haata@kiibohd.com>
parents:
195
diff
changeset
|
303 if ( stateType == 0xFF && state == 0xFF ) |
ed05fa3555d4
Updating usbMuxUart for NKRO
Jacob Alexander <haata@kiibohd.com>
parents:
195
diff
changeset
|
304 { |
ed05fa3555d4
Updating usbMuxUart for NKRO
Jacob Alexander <haata@kiibohd.com>
parents:
195
diff
changeset
|
305 print("Output_sysCtrlSend(sysCode)"); |
ed05fa3555d4
Updating usbMuxUart for NKRO
Jacob Alexander <haata@kiibohd.com>
parents:
195
diff
changeset
|
306 return; |
ed05fa3555d4
Updating usbMuxUart for NKRO
Jacob Alexander <haata@kiibohd.com>
parents:
195
diff
changeset
|
307 } |
ed05fa3555d4
Updating usbMuxUart for NKRO
Jacob Alexander <haata@kiibohd.com>
parents:
195
diff
changeset
|
308 |
ed05fa3555d4
Updating usbMuxUart for NKRO
Jacob Alexander <haata@kiibohd.com>
parents:
195
diff
changeset
|
309 // Not implemented in Boot Mode |
ed05fa3555d4
Updating usbMuxUart for NKRO
Jacob Alexander <haata@kiibohd.com>
parents:
195
diff
changeset
|
310 if ( USBKeys_Protocol == 0 ) |
ed05fa3555d4
Updating usbMuxUart for NKRO
Jacob Alexander <haata@kiibohd.com>
parents:
195
diff
changeset
|
311 { |
ed05fa3555d4
Updating usbMuxUart for NKRO
Jacob Alexander <haata@kiibohd.com>
parents:
195
diff
changeset
|
312 warn_print("System Control is not implemented for Boot Mode"); |
ed05fa3555d4
Updating usbMuxUart for NKRO
Jacob Alexander <haata@kiibohd.com>
parents:
195
diff
changeset
|
313 return; |
ed05fa3555d4
Updating usbMuxUart for NKRO
Jacob Alexander <haata@kiibohd.com>
parents:
195
diff
changeset
|
314 } |
ed05fa3555d4
Updating usbMuxUart for NKRO
Jacob Alexander <haata@kiibohd.com>
parents:
195
diff
changeset
|
315 |
ed05fa3555d4
Updating usbMuxUart for NKRO
Jacob Alexander <haata@kiibohd.com>
parents:
195
diff
changeset
|
316 // TODO Analog inputs |
ed05fa3555d4
Updating usbMuxUart for NKRO
Jacob Alexander <haata@kiibohd.com>
parents:
195
diff
changeset
|
317 // Only indicate USB has changed if either a press or release has occured |
ed05fa3555d4
Updating usbMuxUart for NKRO
Jacob Alexander <haata@kiibohd.com>
parents:
195
diff
changeset
|
318 if ( state == 0x01 || state == 0x03 ) |
ed05fa3555d4
Updating usbMuxUart for NKRO
Jacob Alexander <haata@kiibohd.com>
parents:
195
diff
changeset
|
319 USBKeys_Changed |= USBKeyChangeState_System; |
ed05fa3555d4
Updating usbMuxUart for NKRO
Jacob Alexander <haata@kiibohd.com>
parents:
195
diff
changeset
|
320 |
ed05fa3555d4
Updating usbMuxUart for NKRO
Jacob Alexander <haata@kiibohd.com>
parents:
195
diff
changeset
|
321 // Only send keypresses if press or hold state |
ed05fa3555d4
Updating usbMuxUart for NKRO
Jacob Alexander <haata@kiibohd.com>
parents:
195
diff
changeset
|
322 if ( stateType == 0x00 && state == 0x03 ) // Release state |
347
136e47478441
UARTConnect enumeration working!
Jacob Alexander <haata@kiibohd.com>
parents:
340
diff
changeset
|
323 { |
136e47478441
UARTConnect enumeration working!
Jacob Alexander <haata@kiibohd.com>
parents:
340
diff
changeset
|
324 USBKeys_SysCtrl = 0; |
227
ed05fa3555d4
Updating usbMuxUart for NKRO
Jacob Alexander <haata@kiibohd.com>
parents:
195
diff
changeset
|
325 return; |
347
136e47478441
UARTConnect enumeration working!
Jacob Alexander <haata@kiibohd.com>
parents:
340
diff
changeset
|
326 } |
227
ed05fa3555d4
Updating usbMuxUart for NKRO
Jacob Alexander <haata@kiibohd.com>
parents:
195
diff
changeset
|
327 |
ed05fa3555d4
Updating usbMuxUart for NKRO
Jacob Alexander <haata@kiibohd.com>
parents:
195
diff
changeset
|
328 // Set system control code |
ed05fa3555d4
Updating usbMuxUart for NKRO
Jacob Alexander <haata@kiibohd.com>
parents:
195
diff
changeset
|
329 USBKeys_SysCtrl = args[0]; |
ed05fa3555d4
Updating usbMuxUart for NKRO
Jacob Alexander <haata@kiibohd.com>
parents:
195
diff
changeset
|
330 } |
ed05fa3555d4
Updating usbMuxUart for NKRO
Jacob Alexander <haata@kiibohd.com>
parents:
195
diff
changeset
|
331 |
ed05fa3555d4
Updating usbMuxUart for NKRO
Jacob Alexander <haata@kiibohd.com>
parents:
195
diff
changeset
|
332 |
ed05fa3555d4
Updating usbMuxUart for NKRO
Jacob Alexander <haata@kiibohd.com>
parents:
195
diff
changeset
|
333 // Adds a single USB Code to the USB Output buffer |
ed05fa3555d4
Updating usbMuxUart for NKRO
Jacob Alexander <haata@kiibohd.com>
parents:
195
diff
changeset
|
334 // Argument #1: USB Code |
ed05fa3555d4
Updating usbMuxUart for NKRO
Jacob Alexander <haata@kiibohd.com>
parents:
195
diff
changeset
|
335 void Output_usbCodeSend_capability( uint8_t state, uint8_t stateType, uint8_t *args ) |
ed05fa3555d4
Updating usbMuxUart for NKRO
Jacob Alexander <haata@kiibohd.com>
parents:
195
diff
changeset
|
336 { |
ed05fa3555d4
Updating usbMuxUart for NKRO
Jacob Alexander <haata@kiibohd.com>
parents:
195
diff
changeset
|
337 // Display capability name |
ed05fa3555d4
Updating usbMuxUart for NKRO
Jacob Alexander <haata@kiibohd.com>
parents:
195
diff
changeset
|
338 if ( stateType == 0xFF && state == 0xFF ) |
ed05fa3555d4
Updating usbMuxUart for NKRO
Jacob Alexander <haata@kiibohd.com>
parents:
195
diff
changeset
|
339 { |
ed05fa3555d4
Updating usbMuxUart for NKRO
Jacob Alexander <haata@kiibohd.com>
parents:
195
diff
changeset
|
340 print("Output_usbCodeSend(usbCode)"); |
ed05fa3555d4
Updating usbMuxUart for NKRO
Jacob Alexander <haata@kiibohd.com>
parents:
195
diff
changeset
|
341 return; |
ed05fa3555d4
Updating usbMuxUart for NKRO
Jacob Alexander <haata@kiibohd.com>
parents:
195
diff
changeset
|
342 } |
ed05fa3555d4
Updating usbMuxUart for NKRO
Jacob Alexander <haata@kiibohd.com>
parents:
195
diff
changeset
|
343 |
ed05fa3555d4
Updating usbMuxUart for NKRO
Jacob Alexander <haata@kiibohd.com>
parents:
195
diff
changeset
|
344 // Depending on which mode the keyboard is in the USB needs Press/Hold/Release events |
ed05fa3555d4
Updating usbMuxUart for NKRO
Jacob Alexander <haata@kiibohd.com>
parents:
195
diff
changeset
|
345 uint8_t keyPress = 0; // Default to key release, only used for NKRO |
ed05fa3555d4
Updating usbMuxUart for NKRO
Jacob Alexander <haata@kiibohd.com>
parents:
195
diff
changeset
|
346 switch ( USBKeys_Protocol ) |
ed05fa3555d4
Updating usbMuxUart for NKRO
Jacob Alexander <haata@kiibohd.com>
parents:
195
diff
changeset
|
347 { |
ed05fa3555d4
Updating usbMuxUart for NKRO
Jacob Alexander <haata@kiibohd.com>
parents:
195
diff
changeset
|
348 case 0: // Boot Mode |
ed05fa3555d4
Updating usbMuxUart for NKRO
Jacob Alexander <haata@kiibohd.com>
parents:
195
diff
changeset
|
349 // TODO Analog inputs |
ed05fa3555d4
Updating usbMuxUart for NKRO
Jacob Alexander <haata@kiibohd.com>
parents:
195
diff
changeset
|
350 // Only indicate USB has changed if either a press or release has occured |
ed05fa3555d4
Updating usbMuxUart for NKRO
Jacob Alexander <haata@kiibohd.com>
parents:
195
diff
changeset
|
351 if ( state == 0x01 || state == 0x03 ) |
ed05fa3555d4
Updating usbMuxUart for NKRO
Jacob Alexander <haata@kiibohd.com>
parents:
195
diff
changeset
|
352 USBKeys_Changed = USBKeyChangeState_MainKeys; |
ed05fa3555d4
Updating usbMuxUart for NKRO
Jacob Alexander <haata@kiibohd.com>
parents:
195
diff
changeset
|
353 |
ed05fa3555d4
Updating usbMuxUart for NKRO
Jacob Alexander <haata@kiibohd.com>
parents:
195
diff
changeset
|
354 // Only send keypresses if press or hold state |
ed05fa3555d4
Updating usbMuxUart for NKRO
Jacob Alexander <haata@kiibohd.com>
parents:
195
diff
changeset
|
355 if ( stateType == 0x00 && state == 0x03 ) // Release state |
ed05fa3555d4
Updating usbMuxUart for NKRO
Jacob Alexander <haata@kiibohd.com>
parents:
195
diff
changeset
|
356 return; |
ed05fa3555d4
Updating usbMuxUart for NKRO
Jacob Alexander <haata@kiibohd.com>
parents:
195
diff
changeset
|
357 break; |
ed05fa3555d4
Updating usbMuxUart for NKRO
Jacob Alexander <haata@kiibohd.com>
parents:
195
diff
changeset
|
358 case 1: // NKRO Mode |
ed05fa3555d4
Updating usbMuxUart for NKRO
Jacob Alexander <haata@kiibohd.com>
parents:
195
diff
changeset
|
359 // Only send press and release events |
ed05fa3555d4
Updating usbMuxUart for NKRO
Jacob Alexander <haata@kiibohd.com>
parents:
195
diff
changeset
|
360 if ( stateType == 0x00 && state == 0x02 ) // Hold state |
ed05fa3555d4
Updating usbMuxUart for NKRO
Jacob Alexander <haata@kiibohd.com>
parents:
195
diff
changeset
|
361 return; |
ed05fa3555d4
Updating usbMuxUart for NKRO
Jacob Alexander <haata@kiibohd.com>
parents:
195
diff
changeset
|
362 |
ed05fa3555d4
Updating usbMuxUart for NKRO
Jacob Alexander <haata@kiibohd.com>
parents:
195
diff
changeset
|
363 // Determine if setting or unsetting the bitfield (press == set) |
ed05fa3555d4
Updating usbMuxUart for NKRO
Jacob Alexander <haata@kiibohd.com>
parents:
195
diff
changeset
|
364 if ( stateType == 0x00 && state == 0x01 ) // Press state |
ed05fa3555d4
Updating usbMuxUart for NKRO
Jacob Alexander <haata@kiibohd.com>
parents:
195
diff
changeset
|
365 keyPress = 1; |
ed05fa3555d4
Updating usbMuxUart for NKRO
Jacob Alexander <haata@kiibohd.com>
parents:
195
diff
changeset
|
366 break; |
ed05fa3555d4
Updating usbMuxUart for NKRO
Jacob Alexander <haata@kiibohd.com>
parents:
195
diff
changeset
|
367 } |
ed05fa3555d4
Updating usbMuxUart for NKRO
Jacob Alexander <haata@kiibohd.com>
parents:
195
diff
changeset
|
368 |
ed05fa3555d4
Updating usbMuxUart for NKRO
Jacob Alexander <haata@kiibohd.com>
parents:
195
diff
changeset
|
369 // Get the keycode from arguments |
ed05fa3555d4
Updating usbMuxUart for NKRO
Jacob Alexander <haata@kiibohd.com>
parents:
195
diff
changeset
|
370 uint8_t key = args[0]; |
ed05fa3555d4
Updating usbMuxUart for NKRO
Jacob Alexander <haata@kiibohd.com>
parents:
195
diff
changeset
|
371 |
ed05fa3555d4
Updating usbMuxUart for NKRO
Jacob Alexander <haata@kiibohd.com>
parents:
195
diff
changeset
|
372 // Depending on which mode the keyboard is in, USBKeys_Keys array is used differently |
ed05fa3555d4
Updating usbMuxUart for NKRO
Jacob Alexander <haata@kiibohd.com>
parents:
195
diff
changeset
|
373 // Boot mode - Maximum of 6 byte codes |
ed05fa3555d4
Updating usbMuxUart for NKRO
Jacob Alexander <haata@kiibohd.com>
parents:
195
diff
changeset
|
374 // NKRO mode - Each bit of the 26 byte corresponds to a key |
347
136e47478441
UARTConnect enumeration working!
Jacob Alexander <haata@kiibohd.com>
parents:
340
diff
changeset
|
375 // Bits 0 - 45 (bytes 0 - 5) correspond to USB Codes 4 - 49 (Main) |
136e47478441
UARTConnect enumeration working!
Jacob Alexander <haata@kiibohd.com>
parents:
340
diff
changeset
|
376 // Bits 48 - 161 (bytes 6 - 20) correspond to USB Codes 51 - 164 (Secondary) |
136e47478441
UARTConnect enumeration working!
Jacob Alexander <haata@kiibohd.com>
parents:
340
diff
changeset
|
377 // Bits 168 - 213 (bytes 21 - 26) correspond to USB Codes 176 - 221 (Tertiary) |
136e47478441
UARTConnect enumeration working!
Jacob Alexander <haata@kiibohd.com>
parents:
340
diff
changeset
|
378 // Bits 214 - 216 unused |
227
ed05fa3555d4
Updating usbMuxUart for NKRO
Jacob Alexander <haata@kiibohd.com>
parents:
195
diff
changeset
|
379 uint8_t bytePosition = 0; |
ed05fa3555d4
Updating usbMuxUart for NKRO
Jacob Alexander <haata@kiibohd.com>
parents:
195
diff
changeset
|
380 uint8_t byteShift = 0; |
ed05fa3555d4
Updating usbMuxUart for NKRO
Jacob Alexander <haata@kiibohd.com>
parents:
195
diff
changeset
|
381 switch ( USBKeys_Protocol ) |
ed05fa3555d4
Updating usbMuxUart for NKRO
Jacob Alexander <haata@kiibohd.com>
parents:
195
diff
changeset
|
382 { |
ed05fa3555d4
Updating usbMuxUart for NKRO
Jacob Alexander <haata@kiibohd.com>
parents:
195
diff
changeset
|
383 case 0: // Boot Mode |
ed05fa3555d4
Updating usbMuxUart for NKRO
Jacob Alexander <haata@kiibohd.com>
parents:
195
diff
changeset
|
384 // Set the modifier bit if this key is a modifier |
ed05fa3555d4
Updating usbMuxUart for NKRO
Jacob Alexander <haata@kiibohd.com>
parents:
195
diff
changeset
|
385 if ( (key & 0xE0) == 0xE0 ) // AND with 0xE0 (Left Ctrl, first modifier) |
ed05fa3555d4
Updating usbMuxUart for NKRO
Jacob Alexander <haata@kiibohd.com>
parents:
195
diff
changeset
|
386 { |
ed05fa3555d4
Updating usbMuxUart for NKRO
Jacob Alexander <haata@kiibohd.com>
parents:
195
diff
changeset
|
387 USBKeys_Modifiers |= 1 << (key ^ 0xE0); // Left shift 1 by key XOR 0xE0 |
ed05fa3555d4
Updating usbMuxUart for NKRO
Jacob Alexander <haata@kiibohd.com>
parents:
195
diff
changeset
|
388 } |
ed05fa3555d4
Updating usbMuxUart for NKRO
Jacob Alexander <haata@kiibohd.com>
parents:
195
diff
changeset
|
389 // Normal USB Code |
ed05fa3555d4
Updating usbMuxUart for NKRO
Jacob Alexander <haata@kiibohd.com>
parents:
195
diff
changeset
|
390 else |
ed05fa3555d4
Updating usbMuxUart for NKRO
Jacob Alexander <haata@kiibohd.com>
parents:
195
diff
changeset
|
391 { |
ed05fa3555d4
Updating usbMuxUart for NKRO
Jacob Alexander <haata@kiibohd.com>
parents:
195
diff
changeset
|
392 // USB Key limit reached |
ed05fa3555d4
Updating usbMuxUart for NKRO
Jacob Alexander <haata@kiibohd.com>
parents:
195
diff
changeset
|
393 if ( USBKeys_Sent >= USB_BOOT_MAX_KEYS ) |
ed05fa3555d4
Updating usbMuxUart for NKRO
Jacob Alexander <haata@kiibohd.com>
parents:
195
diff
changeset
|
394 { |
ed05fa3555d4
Updating usbMuxUart for NKRO
Jacob Alexander <haata@kiibohd.com>
parents:
195
diff
changeset
|
395 warn_print("USB Key limit reached"); |
ed05fa3555d4
Updating usbMuxUart for NKRO
Jacob Alexander <haata@kiibohd.com>
parents:
195
diff
changeset
|
396 return; |
ed05fa3555d4
Updating usbMuxUart for NKRO
Jacob Alexander <haata@kiibohd.com>
parents:
195
diff
changeset
|
397 } |
ed05fa3555d4
Updating usbMuxUart for NKRO
Jacob Alexander <haata@kiibohd.com>
parents:
195
diff
changeset
|
398 |
ed05fa3555d4
Updating usbMuxUart for NKRO
Jacob Alexander <haata@kiibohd.com>
parents:
195
diff
changeset
|
399 // Make sure key is within the USB HID range |
ed05fa3555d4
Updating usbMuxUart for NKRO
Jacob Alexander <haata@kiibohd.com>
parents:
195
diff
changeset
|
400 if ( key <= 104 ) |
ed05fa3555d4
Updating usbMuxUart for NKRO
Jacob Alexander <haata@kiibohd.com>
parents:
195
diff
changeset
|
401 { |
ed05fa3555d4
Updating usbMuxUart for NKRO
Jacob Alexander <haata@kiibohd.com>
parents:
195
diff
changeset
|
402 USBKeys_Keys[USBKeys_Sent++] = key; |
ed05fa3555d4
Updating usbMuxUart for NKRO
Jacob Alexander <haata@kiibohd.com>
parents:
195
diff
changeset
|
403 } |
ed05fa3555d4
Updating usbMuxUart for NKRO
Jacob Alexander <haata@kiibohd.com>
parents:
195
diff
changeset
|
404 // Invalid key |
ed05fa3555d4
Updating usbMuxUart for NKRO
Jacob Alexander <haata@kiibohd.com>
parents:
195
diff
changeset
|
405 else |
ed05fa3555d4
Updating usbMuxUart for NKRO
Jacob Alexander <haata@kiibohd.com>
parents:
195
diff
changeset
|
406 { |
ed05fa3555d4
Updating usbMuxUart for NKRO
Jacob Alexander <haata@kiibohd.com>
parents:
195
diff
changeset
|
407 warn_msg("USB Code above 104/0x68 in Boot Mode: "); |
ed05fa3555d4
Updating usbMuxUart for NKRO
Jacob Alexander <haata@kiibohd.com>
parents:
195
diff
changeset
|
408 printHex( key ); |
ed05fa3555d4
Updating usbMuxUart for NKRO
Jacob Alexander <haata@kiibohd.com>
parents:
195
diff
changeset
|
409 print( NL ); |
ed05fa3555d4
Updating usbMuxUart for NKRO
Jacob Alexander <haata@kiibohd.com>
parents:
195
diff
changeset
|
410 } |
ed05fa3555d4
Updating usbMuxUart for NKRO
Jacob Alexander <haata@kiibohd.com>
parents:
195
diff
changeset
|
411 } |
ed05fa3555d4
Updating usbMuxUart for NKRO
Jacob Alexander <haata@kiibohd.com>
parents:
195
diff
changeset
|
412 break; |
ed05fa3555d4
Updating usbMuxUart for NKRO
Jacob Alexander <haata@kiibohd.com>
parents:
195
diff
changeset
|
413 |
ed05fa3555d4
Updating usbMuxUart for NKRO
Jacob Alexander <haata@kiibohd.com>
parents:
195
diff
changeset
|
414 case 1: // NKRO Mode |
ed05fa3555d4
Updating usbMuxUart for NKRO
Jacob Alexander <haata@kiibohd.com>
parents:
195
diff
changeset
|
415 // Set the modifier bit if this key is a modifier |
ed05fa3555d4
Updating usbMuxUart for NKRO
Jacob Alexander <haata@kiibohd.com>
parents:
195
diff
changeset
|
416 if ( (key & 0xE0) == 0xE0 ) // AND with 0xE0 (Left Ctrl, first modifier) |
ed05fa3555d4
Updating usbMuxUart for NKRO
Jacob Alexander <haata@kiibohd.com>
parents:
195
diff
changeset
|
417 { |
ed05fa3555d4
Updating usbMuxUart for NKRO
Jacob Alexander <haata@kiibohd.com>
parents:
195
diff
changeset
|
418 if ( keyPress ) |
ed05fa3555d4
Updating usbMuxUart for NKRO
Jacob Alexander <haata@kiibohd.com>
parents:
195
diff
changeset
|
419 { |
ed05fa3555d4
Updating usbMuxUart for NKRO
Jacob Alexander <haata@kiibohd.com>
parents:
195
diff
changeset
|
420 USBKeys_Modifiers |= 1 << (key ^ 0xE0); // Left shift 1 by key XOR 0xE0 |
ed05fa3555d4
Updating usbMuxUart for NKRO
Jacob Alexander <haata@kiibohd.com>
parents:
195
diff
changeset
|
421 } |
ed05fa3555d4
Updating usbMuxUart for NKRO
Jacob Alexander <haata@kiibohd.com>
parents:
195
diff
changeset
|
422 else // Release |
ed05fa3555d4
Updating usbMuxUart for NKRO
Jacob Alexander <haata@kiibohd.com>
parents:
195
diff
changeset
|
423 { |
ed05fa3555d4
Updating usbMuxUart for NKRO
Jacob Alexander <haata@kiibohd.com>
parents:
195
diff
changeset
|
424 USBKeys_Modifiers &= ~(1 << (key ^ 0xE0)); // Left shift 1 by key XOR 0xE0 |
ed05fa3555d4
Updating usbMuxUart for NKRO
Jacob Alexander <haata@kiibohd.com>
parents:
195
diff
changeset
|
425 } |
ed05fa3555d4
Updating usbMuxUart for NKRO
Jacob Alexander <haata@kiibohd.com>
parents:
195
diff
changeset
|
426 |
ed05fa3555d4
Updating usbMuxUart for NKRO
Jacob Alexander <haata@kiibohd.com>
parents:
195
diff
changeset
|
427 USBKeys_Changed |= USBKeyChangeState_Modifiers; |
ed05fa3555d4
Updating usbMuxUart for NKRO
Jacob Alexander <haata@kiibohd.com>
parents:
195
diff
changeset
|
428 break; |
ed05fa3555d4
Updating usbMuxUart for NKRO
Jacob Alexander <haata@kiibohd.com>
parents:
195
diff
changeset
|
429 } |
347
136e47478441
UARTConnect enumeration working!
Jacob Alexander <haata@kiibohd.com>
parents:
340
diff
changeset
|
430 // First 6 bytes |
136e47478441
UARTConnect enumeration working!
Jacob Alexander <haata@kiibohd.com>
parents:
340
diff
changeset
|
431 else if ( key >= 4 && key <= 49 ) |
227
ed05fa3555d4
Updating usbMuxUart for NKRO
Jacob Alexander <haata@kiibohd.com>
parents:
195
diff
changeset
|
432 { |
ed05fa3555d4
Updating usbMuxUart for NKRO
Jacob Alexander <haata@kiibohd.com>
parents:
195
diff
changeset
|
433 // Lookup (otherwise division or multiple checks are needed to do alignment) |
347
136e47478441
UARTConnect enumeration working!
Jacob Alexander <haata@kiibohd.com>
parents:
340
diff
changeset
|
434 // Starting at 0th position, each byte has 8 bits, starting at 4th bit |
136e47478441
UARTConnect enumeration working!
Jacob Alexander <haata@kiibohd.com>
parents:
340
diff
changeset
|
435 uint8_t keyPos = key + (0 * 8 - 4); // Starting position in array, Ignoring 4 keys |
227
ed05fa3555d4
Updating usbMuxUart for NKRO
Jacob Alexander <haata@kiibohd.com>
parents:
195
diff
changeset
|
436 switch ( keyPos ) |
ed05fa3555d4
Updating usbMuxUart for NKRO
Jacob Alexander <haata@kiibohd.com>
parents:
195
diff
changeset
|
437 { |
ed05fa3555d4
Updating usbMuxUart for NKRO
Jacob Alexander <haata@kiibohd.com>
parents:
195
diff
changeset
|
438 byteLookup( 0 ); |
ed05fa3555d4
Updating usbMuxUart for NKRO
Jacob Alexander <haata@kiibohd.com>
parents:
195
diff
changeset
|
439 byteLookup( 1 ); |
ed05fa3555d4
Updating usbMuxUart for NKRO
Jacob Alexander <haata@kiibohd.com>
parents:
195
diff
changeset
|
440 byteLookup( 2 ); |
ed05fa3555d4
Updating usbMuxUart for NKRO
Jacob Alexander <haata@kiibohd.com>
parents:
195
diff
changeset
|
441 byteLookup( 3 ); |
ed05fa3555d4
Updating usbMuxUart for NKRO
Jacob Alexander <haata@kiibohd.com>
parents:
195
diff
changeset
|
442 byteLookup( 4 ); |
ed05fa3555d4
Updating usbMuxUart for NKRO
Jacob Alexander <haata@kiibohd.com>
parents:
195
diff
changeset
|
443 byteLookup( 5 ); |
347
136e47478441
UARTConnect enumeration working!
Jacob Alexander <haata@kiibohd.com>
parents:
340
diff
changeset
|
444 } |
136e47478441
UARTConnect enumeration working!
Jacob Alexander <haata@kiibohd.com>
parents:
340
diff
changeset
|
445 |
136e47478441
UARTConnect enumeration working!
Jacob Alexander <haata@kiibohd.com>
parents:
340
diff
changeset
|
446 USBKeys_Changed |= USBKeyChangeState_MainKeys; |
136e47478441
UARTConnect enumeration working!
Jacob Alexander <haata@kiibohd.com>
parents:
340
diff
changeset
|
447 } |
136e47478441
UARTConnect enumeration working!
Jacob Alexander <haata@kiibohd.com>
parents:
340
diff
changeset
|
448 // Next 14 bytes |
136e47478441
UARTConnect enumeration working!
Jacob Alexander <haata@kiibohd.com>
parents:
340
diff
changeset
|
449 else if ( key >= 51 && key <= 155 ) |
136e47478441
UARTConnect enumeration working!
Jacob Alexander <haata@kiibohd.com>
parents:
340
diff
changeset
|
450 { |
136e47478441
UARTConnect enumeration working!
Jacob Alexander <haata@kiibohd.com>
parents:
340
diff
changeset
|
451 // Lookup (otherwise division or multiple checks are needed to do alignment) |
136e47478441
UARTConnect enumeration working!
Jacob Alexander <haata@kiibohd.com>
parents:
340
diff
changeset
|
452 // Starting at 6th byte position, each byte has 8 bits, starting at 51st bit |
136e47478441
UARTConnect enumeration working!
Jacob Alexander <haata@kiibohd.com>
parents:
340
diff
changeset
|
453 uint8_t keyPos = key + (6 * 8 - 51); // Starting position in array |
136e47478441
UARTConnect enumeration working!
Jacob Alexander <haata@kiibohd.com>
parents:
340
diff
changeset
|
454 switch ( keyPos ) |
136e47478441
UARTConnect enumeration working!
Jacob Alexander <haata@kiibohd.com>
parents:
340
diff
changeset
|
455 { |
227
ed05fa3555d4
Updating usbMuxUart for NKRO
Jacob Alexander <haata@kiibohd.com>
parents:
195
diff
changeset
|
456 byteLookup( 6 ); |
ed05fa3555d4
Updating usbMuxUart for NKRO
Jacob Alexander <haata@kiibohd.com>
parents:
195
diff
changeset
|
457 byteLookup( 7 ); |
ed05fa3555d4
Updating usbMuxUart for NKRO
Jacob Alexander <haata@kiibohd.com>
parents:
195
diff
changeset
|
458 byteLookup( 8 ); |
ed05fa3555d4
Updating usbMuxUart for NKRO
Jacob Alexander <haata@kiibohd.com>
parents:
195
diff
changeset
|
459 byteLookup( 9 ); |
ed05fa3555d4
Updating usbMuxUart for NKRO
Jacob Alexander <haata@kiibohd.com>
parents:
195
diff
changeset
|
460 byteLookup( 10 ); |
ed05fa3555d4
Updating usbMuxUart for NKRO
Jacob Alexander <haata@kiibohd.com>
parents:
195
diff
changeset
|
461 byteLookup( 11 ); |
ed05fa3555d4
Updating usbMuxUart for NKRO
Jacob Alexander <haata@kiibohd.com>
parents:
195
diff
changeset
|
462 byteLookup( 12 ); |
ed05fa3555d4
Updating usbMuxUart for NKRO
Jacob Alexander <haata@kiibohd.com>
parents:
195
diff
changeset
|
463 byteLookup( 13 ); |
ed05fa3555d4
Updating usbMuxUart for NKRO
Jacob Alexander <haata@kiibohd.com>
parents:
195
diff
changeset
|
464 byteLookup( 14 ); |
ed05fa3555d4
Updating usbMuxUart for NKRO
Jacob Alexander <haata@kiibohd.com>
parents:
195
diff
changeset
|
465 byteLookup( 15 ); |
ed05fa3555d4
Updating usbMuxUart for NKRO
Jacob Alexander <haata@kiibohd.com>
parents:
195
diff
changeset
|
466 byteLookup( 16 ); |
ed05fa3555d4
Updating usbMuxUart for NKRO
Jacob Alexander <haata@kiibohd.com>
parents:
195
diff
changeset
|
467 byteLookup( 17 ); |
ed05fa3555d4
Updating usbMuxUart for NKRO
Jacob Alexander <haata@kiibohd.com>
parents:
195
diff
changeset
|
468 byteLookup( 18 ); |
ed05fa3555d4
Updating usbMuxUart for NKRO
Jacob Alexander <haata@kiibohd.com>
parents:
195
diff
changeset
|
469 byteLookup( 19 ); |
ed05fa3555d4
Updating usbMuxUart for NKRO
Jacob Alexander <haata@kiibohd.com>
parents:
195
diff
changeset
|
470 } |
ed05fa3555d4
Updating usbMuxUart for NKRO
Jacob Alexander <haata@kiibohd.com>
parents:
195
diff
changeset
|
471 |
347
136e47478441
UARTConnect enumeration working!
Jacob Alexander <haata@kiibohd.com>
parents:
340
diff
changeset
|
472 USBKeys_Changed |= USBKeyChangeState_SecondaryKeys; |
136e47478441
UARTConnect enumeration working!
Jacob Alexander <haata@kiibohd.com>
parents:
340
diff
changeset
|
473 } |
136e47478441
UARTConnect enumeration working!
Jacob Alexander <haata@kiibohd.com>
parents:
340
diff
changeset
|
474 // Next byte |
136e47478441
UARTConnect enumeration working!
Jacob Alexander <haata@kiibohd.com>
parents:
340
diff
changeset
|
475 else if ( key >= 157 && key <= 164 ) |
136e47478441
UARTConnect enumeration working!
Jacob Alexander <haata@kiibohd.com>
parents:
340
diff
changeset
|
476 { |
136e47478441
UARTConnect enumeration working!
Jacob Alexander <haata@kiibohd.com>
parents:
340
diff
changeset
|
477 // Lookup (otherwise division or multiple checks are needed to do alignment) |
136e47478441
UARTConnect enumeration working!
Jacob Alexander <haata@kiibohd.com>
parents:
340
diff
changeset
|
478 uint8_t keyPos = key + (20 * 8 - 157); // Starting position in array, Ignoring 6 keys |
136e47478441
UARTConnect enumeration working!
Jacob Alexander <haata@kiibohd.com>
parents:
340
diff
changeset
|
479 switch ( keyPos ) |
136e47478441
UARTConnect enumeration working!
Jacob Alexander <haata@kiibohd.com>
parents:
340
diff
changeset
|
480 { |
136e47478441
UARTConnect enumeration working!
Jacob Alexander <haata@kiibohd.com>
parents:
340
diff
changeset
|
481 byteLookup( 20 ); |
136e47478441
UARTConnect enumeration working!
Jacob Alexander <haata@kiibohd.com>
parents:
340
diff
changeset
|
482 } |
136e47478441
UARTConnect enumeration working!
Jacob Alexander <haata@kiibohd.com>
parents:
340
diff
changeset
|
483 |
136e47478441
UARTConnect enumeration working!
Jacob Alexander <haata@kiibohd.com>
parents:
340
diff
changeset
|
484 USBKeys_Changed |= USBKeyChangeState_TertiaryKeys; |
227
ed05fa3555d4
Updating usbMuxUart for NKRO
Jacob Alexander <haata@kiibohd.com>
parents:
195
diff
changeset
|
485 } |
ed05fa3555d4
Updating usbMuxUart for NKRO
Jacob Alexander <haata@kiibohd.com>
parents:
195
diff
changeset
|
486 // Last 6 bytes |
ed05fa3555d4
Updating usbMuxUart for NKRO
Jacob Alexander <haata@kiibohd.com>
parents:
195
diff
changeset
|
487 else if ( key >= 176 && key <= 221 ) |
ed05fa3555d4
Updating usbMuxUart for NKRO
Jacob Alexander <haata@kiibohd.com>
parents:
195
diff
changeset
|
488 { |
ed05fa3555d4
Updating usbMuxUart for NKRO
Jacob Alexander <haata@kiibohd.com>
parents:
195
diff
changeset
|
489 // Lookup (otherwise division or multiple checks are needed to do alignment) |
347
136e47478441
UARTConnect enumeration working!
Jacob Alexander <haata@kiibohd.com>
parents:
340
diff
changeset
|
490 uint8_t keyPos = key + (21 * 8 - 176); // Starting position in array |
227
ed05fa3555d4
Updating usbMuxUart for NKRO
Jacob Alexander <haata@kiibohd.com>
parents:
195
diff
changeset
|
491 switch ( keyPos ) |
ed05fa3555d4
Updating usbMuxUart for NKRO
Jacob Alexander <haata@kiibohd.com>
parents:
195
diff
changeset
|
492 { |
ed05fa3555d4
Updating usbMuxUart for NKRO
Jacob Alexander <haata@kiibohd.com>
parents:
195
diff
changeset
|
493 byteLookup( 21 ); |
ed05fa3555d4
Updating usbMuxUart for NKRO
Jacob Alexander <haata@kiibohd.com>
parents:
195
diff
changeset
|
494 byteLookup( 22 ); |
ed05fa3555d4
Updating usbMuxUart for NKRO
Jacob Alexander <haata@kiibohd.com>
parents:
195
diff
changeset
|
495 byteLookup( 23 ); |
ed05fa3555d4
Updating usbMuxUart for NKRO
Jacob Alexander <haata@kiibohd.com>
parents:
195
diff
changeset
|
496 byteLookup( 24 ); |
ed05fa3555d4
Updating usbMuxUart for NKRO
Jacob Alexander <haata@kiibohd.com>
parents:
195
diff
changeset
|
497 byteLookup( 25 ); |
347
136e47478441
UARTConnect enumeration working!
Jacob Alexander <haata@kiibohd.com>
parents:
340
diff
changeset
|
498 byteLookup( 26 ); |
227
ed05fa3555d4
Updating usbMuxUart for NKRO
Jacob Alexander <haata@kiibohd.com>
parents:
195
diff
changeset
|
499 } |
ed05fa3555d4
Updating usbMuxUart for NKRO
Jacob Alexander <haata@kiibohd.com>
parents:
195
diff
changeset
|
500 |
347
136e47478441
UARTConnect enumeration working!
Jacob Alexander <haata@kiibohd.com>
parents:
340
diff
changeset
|
501 USBKeys_Changed |= USBKeyChangeState_QuartiaryKeys; |
136e47478441
UARTConnect enumeration working!
Jacob Alexander <haata@kiibohd.com>
parents:
340
diff
changeset
|
502 } |
136e47478441
UARTConnect enumeration working!
Jacob Alexander <haata@kiibohd.com>
parents:
340
diff
changeset
|
503 // Received 0x00 |
136e47478441
UARTConnect enumeration working!
Jacob Alexander <haata@kiibohd.com>
parents:
340
diff
changeset
|
504 // This is a special USB Code that internally indicates a "break" |
136e47478441
UARTConnect enumeration working!
Jacob Alexander <haata@kiibohd.com>
parents:
340
diff
changeset
|
505 // It is used to send "nothing" in order to break up sequences of USB Codes |
136e47478441
UARTConnect enumeration working!
Jacob Alexander <haata@kiibohd.com>
parents:
340
diff
changeset
|
506 else if ( key == 0x00 ) |
136e47478441
UARTConnect enumeration working!
Jacob Alexander <haata@kiibohd.com>
parents:
340
diff
changeset
|
507 { |
136e47478441
UARTConnect enumeration working!
Jacob Alexander <haata@kiibohd.com>
parents:
340
diff
changeset
|
508 USBKeys_Changed |= USBKeyChangeState_MainKeys; |
136e47478441
UARTConnect enumeration working!
Jacob Alexander <haata@kiibohd.com>
parents:
340
diff
changeset
|
509 |
136e47478441
UARTConnect enumeration working!
Jacob Alexander <haata@kiibohd.com>
parents:
340
diff
changeset
|
510 // Also flush out buffers just in case |
136e47478441
UARTConnect enumeration working!
Jacob Alexander <haata@kiibohd.com>
parents:
340
diff
changeset
|
511 Output_flushBuffers(); |
136e47478441
UARTConnect enumeration working!
Jacob Alexander <haata@kiibohd.com>
parents:
340
diff
changeset
|
512 break; |
227
ed05fa3555d4
Updating usbMuxUart for NKRO
Jacob Alexander <haata@kiibohd.com>
parents:
195
diff
changeset
|
513 } |
ed05fa3555d4
Updating usbMuxUart for NKRO
Jacob Alexander <haata@kiibohd.com>
parents:
195
diff
changeset
|
514 // Invalid key |
ed05fa3555d4
Updating usbMuxUart for NKRO
Jacob Alexander <haata@kiibohd.com>
parents:
195
diff
changeset
|
515 else |
ed05fa3555d4
Updating usbMuxUart for NKRO
Jacob Alexander <haata@kiibohd.com>
parents:
195
diff
changeset
|
516 { |
347
136e47478441
UARTConnect enumeration working!
Jacob Alexander <haata@kiibohd.com>
parents:
340
diff
changeset
|
517 warn_msg("USB Code not within 4-49 (0x4-0x31), 51-155 (0x33-0x9B), 157-164 (0x9D-0xA4), 176-221 (0xB0-0xDD) or 224-231 (0xE0-0xE7) NKRO Mode: "); |
227
ed05fa3555d4
Updating usbMuxUart for NKRO
Jacob Alexander <haata@kiibohd.com>
parents:
195
diff
changeset
|
518 printHex( key ); |
ed05fa3555d4
Updating usbMuxUart for NKRO
Jacob Alexander <haata@kiibohd.com>
parents:
195
diff
changeset
|
519 print( NL ); |
ed05fa3555d4
Updating usbMuxUart for NKRO
Jacob Alexander <haata@kiibohd.com>
parents:
195
diff
changeset
|
520 break; |
ed05fa3555d4
Updating usbMuxUart for NKRO
Jacob Alexander <haata@kiibohd.com>
parents:
195
diff
changeset
|
521 } |
ed05fa3555d4
Updating usbMuxUart for NKRO
Jacob Alexander <haata@kiibohd.com>
parents:
195
diff
changeset
|
522 |
ed05fa3555d4
Updating usbMuxUart for NKRO
Jacob Alexander <haata@kiibohd.com>
parents:
195
diff
changeset
|
523 // Set/Unset |
ed05fa3555d4
Updating usbMuxUart for NKRO
Jacob Alexander <haata@kiibohd.com>
parents:
195
diff
changeset
|
524 if ( keyPress ) |
ed05fa3555d4
Updating usbMuxUart for NKRO
Jacob Alexander <haata@kiibohd.com>
parents:
195
diff
changeset
|
525 { |
ed05fa3555d4
Updating usbMuxUart for NKRO
Jacob Alexander <haata@kiibohd.com>
parents:
195
diff
changeset
|
526 USBKeys_Keys[bytePosition] |= (1 << byteShift); |
ed05fa3555d4
Updating usbMuxUart for NKRO
Jacob Alexander <haata@kiibohd.com>
parents:
195
diff
changeset
|
527 USBKeys_Sent++; |
ed05fa3555d4
Updating usbMuxUart for NKRO
Jacob Alexander <haata@kiibohd.com>
parents:
195
diff
changeset
|
528 } |
ed05fa3555d4
Updating usbMuxUart for NKRO
Jacob Alexander <haata@kiibohd.com>
parents:
195
diff
changeset
|
529 else // Release |
ed05fa3555d4
Updating usbMuxUart for NKRO
Jacob Alexander <haata@kiibohd.com>
parents:
195
diff
changeset
|
530 { |
ed05fa3555d4
Updating usbMuxUart for NKRO
Jacob Alexander <haata@kiibohd.com>
parents:
195
diff
changeset
|
531 USBKeys_Keys[bytePosition] &= ~(1 << byteShift); |
ed05fa3555d4
Updating usbMuxUart for NKRO
Jacob Alexander <haata@kiibohd.com>
parents:
195
diff
changeset
|
532 USBKeys_Sent++; |
ed05fa3555d4
Updating usbMuxUart for NKRO
Jacob Alexander <haata@kiibohd.com>
parents:
195
diff
changeset
|
533 } |
ed05fa3555d4
Updating usbMuxUart for NKRO
Jacob Alexander <haata@kiibohd.com>
parents:
195
diff
changeset
|
534 |
ed05fa3555d4
Updating usbMuxUart for NKRO
Jacob Alexander <haata@kiibohd.com>
parents:
195
diff
changeset
|
535 break; |
ed05fa3555d4
Updating usbMuxUart for NKRO
Jacob Alexander <haata@kiibohd.com>
parents:
195
diff
changeset
|
536 } |
ed05fa3555d4
Updating usbMuxUart for NKRO
Jacob Alexander <haata@kiibohd.com>
parents:
195
diff
changeset
|
537 } |
ed05fa3555d4
Updating usbMuxUart for NKRO
Jacob Alexander <haata@kiibohd.com>
parents:
195
diff
changeset
|
538 |
370
39e338a6733d
Fixing default ErgoDox layout and adding FlashMode button
Jacob Alexander <haata@kiibohd.com>
parents:
347
diff
changeset
|
539 void Output_flashMode_capability( uint8_t state, uint8_t stateType, uint8_t *args ) |
39e338a6733d
Fixing default ErgoDox layout and adding FlashMode button
Jacob Alexander <haata@kiibohd.com>
parents:
347
diff
changeset
|
540 { |
39e338a6733d
Fixing default ErgoDox layout and adding FlashMode button
Jacob Alexander <haata@kiibohd.com>
parents:
347
diff
changeset
|
541 // Display capability name |
39e338a6733d
Fixing default ErgoDox layout and adding FlashMode button
Jacob Alexander <haata@kiibohd.com>
parents:
347
diff
changeset
|
542 if ( stateType == 0xFF && state == 0xFF ) |
39e338a6733d
Fixing default ErgoDox layout and adding FlashMode button
Jacob Alexander <haata@kiibohd.com>
parents:
347
diff
changeset
|
543 { |
385
d8f61e15aca1
Adding jump to bootloader key
Jacob Alexander <haata@kiibohd.com>
parents:
370
diff
changeset
|
544 print("Output_flashMode()"); |
370
39e338a6733d
Fixing default ErgoDox layout and adding FlashMode button
Jacob Alexander <haata@kiibohd.com>
parents:
347
diff
changeset
|
545 return; |
39e338a6733d
Fixing default ErgoDox layout and adding FlashMode button
Jacob Alexander <haata@kiibohd.com>
parents:
347
diff
changeset
|
546 } |
39e338a6733d
Fixing default ErgoDox layout and adding FlashMode button
Jacob Alexander <haata@kiibohd.com>
parents:
347
diff
changeset
|
547 |
39e338a6733d
Fixing default ErgoDox layout and adding FlashMode button
Jacob Alexander <haata@kiibohd.com>
parents:
347
diff
changeset
|
548 // Start flash mode |
39e338a6733d
Fixing default ErgoDox layout and adding FlashMode button
Jacob Alexander <haata@kiibohd.com>
parents:
347
diff
changeset
|
549 Output_firmwareReload(); |
39e338a6733d
Fixing default ErgoDox layout and adding FlashMode button
Jacob Alexander <haata@kiibohd.com>
parents:
347
diff
changeset
|
550 } |
39e338a6733d
Fixing default ErgoDox layout and adding FlashMode button
Jacob Alexander <haata@kiibohd.com>
parents:
347
diff
changeset
|
551 |
438
f10c2dad7f55
Adding missing GET_PROTOCOL handling
Jacob Alexander <haata@kiibohd.com>
parents:
420
diff
changeset
|
552 // Sends a mouse command over the USB Output buffer |
f10c2dad7f55
Adding missing GET_PROTOCOL handling
Jacob Alexander <haata@kiibohd.com>
parents:
420
diff
changeset
|
553 // XXX This function *will* be changing in the future |
f10c2dad7f55
Adding missing GET_PROTOCOL handling
Jacob Alexander <haata@kiibohd.com>
parents:
420
diff
changeset
|
554 // If you use it, be prepared that your .kll files will break in the future (post KLL 0.5) |
f10c2dad7f55
Adding missing GET_PROTOCOL handling
Jacob Alexander <haata@kiibohd.com>
parents:
420
diff
changeset
|
555 // Argument #1: USB Mouse Button (16 bit) |
f10c2dad7f55
Adding missing GET_PROTOCOL handling
Jacob Alexander <haata@kiibohd.com>
parents:
420
diff
changeset
|
556 // Argument #2: USB X Axis (16 bit) relative |
f10c2dad7f55
Adding missing GET_PROTOCOL handling
Jacob Alexander <haata@kiibohd.com>
parents:
420
diff
changeset
|
557 // Argument #3: USB Y Axis (16 bit) relative |
f10c2dad7f55
Adding missing GET_PROTOCOL handling
Jacob Alexander <haata@kiibohd.com>
parents:
420
diff
changeset
|
558 void Output_usbMouse_capability( uint8_t state, uint8_t stateType, uint8_t *args ) |
f10c2dad7f55
Adding missing GET_PROTOCOL handling
Jacob Alexander <haata@kiibohd.com>
parents:
420
diff
changeset
|
559 { |
f10c2dad7f55
Adding missing GET_PROTOCOL handling
Jacob Alexander <haata@kiibohd.com>
parents:
420
diff
changeset
|
560 // Display capability name |
f10c2dad7f55
Adding missing GET_PROTOCOL handling
Jacob Alexander <haata@kiibohd.com>
parents:
420
diff
changeset
|
561 if ( stateType == 0xFF && state == 0xFF ) |
f10c2dad7f55
Adding missing GET_PROTOCOL handling
Jacob Alexander <haata@kiibohd.com>
parents:
420
diff
changeset
|
562 { |
f10c2dad7f55
Adding missing GET_PROTOCOL handling
Jacob Alexander <haata@kiibohd.com>
parents:
420
diff
changeset
|
563 print("Output_usbMouse(mouseButton,relX,relY)"); |
f10c2dad7f55
Adding missing GET_PROTOCOL handling
Jacob Alexander <haata@kiibohd.com>
parents:
420
diff
changeset
|
564 return; |
f10c2dad7f55
Adding missing GET_PROTOCOL handling
Jacob Alexander <haata@kiibohd.com>
parents:
420
diff
changeset
|
565 } |
f10c2dad7f55
Adding missing GET_PROTOCOL handling
Jacob Alexander <haata@kiibohd.com>
parents:
420
diff
changeset
|
566 |
f10c2dad7f55
Adding missing GET_PROTOCOL handling
Jacob Alexander <haata@kiibohd.com>
parents:
420
diff
changeset
|
567 // Determine which mouse button was sent |
f10c2dad7f55
Adding missing GET_PROTOCOL handling
Jacob Alexander <haata@kiibohd.com>
parents:
420
diff
changeset
|
568 // The USB spec defines up to a max of 0xFFFF buttons |
f10c2dad7f55
Adding missing GET_PROTOCOL handling
Jacob Alexander <haata@kiibohd.com>
parents:
420
diff
changeset
|
569 // The usual are: |
f10c2dad7f55
Adding missing GET_PROTOCOL handling
Jacob Alexander <haata@kiibohd.com>
parents:
420
diff
changeset
|
570 // 1 - Button 1 - (Primary) |
f10c2dad7f55
Adding missing GET_PROTOCOL handling
Jacob Alexander <haata@kiibohd.com>
parents:
420
diff
changeset
|
571 // 2 - Button 2 - (Secondary) |
f10c2dad7f55
Adding missing GET_PROTOCOL handling
Jacob Alexander <haata@kiibohd.com>
parents:
420
diff
changeset
|
572 // 3 - Button 3 - (Tertiary) |
f10c2dad7f55
Adding missing GET_PROTOCOL handling
Jacob Alexander <haata@kiibohd.com>
parents:
420
diff
changeset
|
573 uint16_t mouse_button = *(uint16_t*)(&args[0]); |
f10c2dad7f55
Adding missing GET_PROTOCOL handling
Jacob Alexander <haata@kiibohd.com>
parents:
420
diff
changeset
|
574 |
f10c2dad7f55
Adding missing GET_PROTOCOL handling
Jacob Alexander <haata@kiibohd.com>
parents:
420
diff
changeset
|
575 // X/Y Relative Axis |
f10c2dad7f55
Adding missing GET_PROTOCOL handling
Jacob Alexander <haata@kiibohd.com>
parents:
420
diff
changeset
|
576 uint16_t mouse_x = *(uint16_t*)(&args[2]); |
f10c2dad7f55
Adding missing GET_PROTOCOL handling
Jacob Alexander <haata@kiibohd.com>
parents:
420
diff
changeset
|
577 uint16_t mouse_y = *(uint16_t*)(&args[4]); |
f10c2dad7f55
Adding missing GET_PROTOCOL handling
Jacob Alexander <haata@kiibohd.com>
parents:
420
diff
changeset
|
578 |
f10c2dad7f55
Adding missing GET_PROTOCOL handling
Jacob Alexander <haata@kiibohd.com>
parents:
420
diff
changeset
|
579 // Adjust for bit shift |
f10c2dad7f55
Adding missing GET_PROTOCOL handling
Jacob Alexander <haata@kiibohd.com>
parents:
420
diff
changeset
|
580 uint16_t mouse_button_shift = mouse_button - 1; |
f10c2dad7f55
Adding missing GET_PROTOCOL handling
Jacob Alexander <haata@kiibohd.com>
parents:
420
diff
changeset
|
581 |
f10c2dad7f55
Adding missing GET_PROTOCOL handling
Jacob Alexander <haata@kiibohd.com>
parents:
420
diff
changeset
|
582 // Only send mouse button if in press or hold state |
f10c2dad7f55
Adding missing GET_PROTOCOL handling
Jacob Alexander <haata@kiibohd.com>
parents:
420
diff
changeset
|
583 if ( stateType == 0x00 && state == 0x03 ) // Release state |
f10c2dad7f55
Adding missing GET_PROTOCOL handling
Jacob Alexander <haata@kiibohd.com>
parents:
420
diff
changeset
|
584 { |
f10c2dad7f55
Adding missing GET_PROTOCOL handling
Jacob Alexander <haata@kiibohd.com>
parents:
420
diff
changeset
|
585 // Release |
f10c2dad7f55
Adding missing GET_PROTOCOL handling
Jacob Alexander <haata@kiibohd.com>
parents:
420
diff
changeset
|
586 if ( mouse_button ) |
f10c2dad7f55
Adding missing GET_PROTOCOL handling
Jacob Alexander <haata@kiibohd.com>
parents:
420
diff
changeset
|
587 USBMouse_Buttons &= ~(1 << mouse_button_shift); |
f10c2dad7f55
Adding missing GET_PROTOCOL handling
Jacob Alexander <haata@kiibohd.com>
parents:
420
diff
changeset
|
588 } |
f10c2dad7f55
Adding missing GET_PROTOCOL handling
Jacob Alexander <haata@kiibohd.com>
parents:
420
diff
changeset
|
589 else |
f10c2dad7f55
Adding missing GET_PROTOCOL handling
Jacob Alexander <haata@kiibohd.com>
parents:
420
diff
changeset
|
590 { |
f10c2dad7f55
Adding missing GET_PROTOCOL handling
Jacob Alexander <haata@kiibohd.com>
parents:
420
diff
changeset
|
591 // Press or hold |
f10c2dad7f55
Adding missing GET_PROTOCOL handling
Jacob Alexander <haata@kiibohd.com>
parents:
420
diff
changeset
|
592 if ( mouse_button ) |
f10c2dad7f55
Adding missing GET_PROTOCOL handling
Jacob Alexander <haata@kiibohd.com>
parents:
420
diff
changeset
|
593 USBMouse_Buttons |= (1 << mouse_button_shift); |
f10c2dad7f55
Adding missing GET_PROTOCOL handling
Jacob Alexander <haata@kiibohd.com>
parents:
420
diff
changeset
|
594 |
f10c2dad7f55
Adding missing GET_PROTOCOL handling
Jacob Alexander <haata@kiibohd.com>
parents:
420
diff
changeset
|
595 if ( mouse_x ) |
f10c2dad7f55
Adding missing GET_PROTOCOL handling
Jacob Alexander <haata@kiibohd.com>
parents:
420
diff
changeset
|
596 USBMouse_Relative_x = mouse_x; |
f10c2dad7f55
Adding missing GET_PROTOCOL handling
Jacob Alexander <haata@kiibohd.com>
parents:
420
diff
changeset
|
597 if ( mouse_y ) |
f10c2dad7f55
Adding missing GET_PROTOCOL handling
Jacob Alexander <haata@kiibohd.com>
parents:
420
diff
changeset
|
598 USBMouse_Relative_y = mouse_y; |
f10c2dad7f55
Adding missing GET_PROTOCOL handling
Jacob Alexander <haata@kiibohd.com>
parents:
420
diff
changeset
|
599 } |
f10c2dad7f55
Adding missing GET_PROTOCOL handling
Jacob Alexander <haata@kiibohd.com>
parents:
420
diff
changeset
|
600 |
f10c2dad7f55
Adding missing GET_PROTOCOL handling
Jacob Alexander <haata@kiibohd.com>
parents:
420
diff
changeset
|
601 // Trigger updates |
f10c2dad7f55
Adding missing GET_PROTOCOL handling
Jacob Alexander <haata@kiibohd.com>
parents:
420
diff
changeset
|
602 if ( mouse_button ) |
f10c2dad7f55
Adding missing GET_PROTOCOL handling
Jacob Alexander <haata@kiibohd.com>
parents:
420
diff
changeset
|
603 USBMouse_Changed |= USBMouseChangeState_Buttons; |
f10c2dad7f55
Adding missing GET_PROTOCOL handling
Jacob Alexander <haata@kiibohd.com>
parents:
420
diff
changeset
|
604 |
f10c2dad7f55
Adding missing GET_PROTOCOL handling
Jacob Alexander <haata@kiibohd.com>
parents:
420
diff
changeset
|
605 if ( mouse_x || mouse_y ) |
f10c2dad7f55
Adding missing GET_PROTOCOL handling
Jacob Alexander <haata@kiibohd.com>
parents:
420
diff
changeset
|
606 USBMouse_Changed |= USBMouseChangeState_Relative; |
f10c2dad7f55
Adding missing GET_PROTOCOL handling
Jacob Alexander <haata@kiibohd.com>
parents:
420
diff
changeset
|
607 } |
f10c2dad7f55
Adding missing GET_PROTOCOL handling
Jacob Alexander <haata@kiibohd.com>
parents:
420
diff
changeset
|
608 |
172
a30bddad4115
Adding UART and UART + USB muxed CLI output.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
609 |
a30bddad4115
Adding UART and UART + USB muxed CLI output.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
610 |
a30bddad4115
Adding UART and UART + USB muxed CLI output.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
611 // ----- Functions ----- |
a30bddad4115
Adding UART and UART + USB muxed CLI output.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
612 |
300
7119c2149abb
Fixing compiler errors for usbMuxUart Output module
Jacob Alexander <haata@kiibohd.com>
parents:
275
diff
changeset
|
613 // Flush Key buffers |
7119c2149abb
Fixing compiler errors for usbMuxUart Output module
Jacob Alexander <haata@kiibohd.com>
parents:
275
diff
changeset
|
614 void Output_flushBuffers() |
7119c2149abb
Fixing compiler errors for usbMuxUart Output module
Jacob Alexander <haata@kiibohd.com>
parents:
275
diff
changeset
|
615 { |
7119c2149abb
Fixing compiler errors for usbMuxUart Output module
Jacob Alexander <haata@kiibohd.com>
parents:
275
diff
changeset
|
616 // Zero out USBKeys_Keys array |
7119c2149abb
Fixing compiler errors for usbMuxUart Output module
Jacob Alexander <haata@kiibohd.com>
parents:
275
diff
changeset
|
617 for ( uint8_t c = 0; c < USB_NKRO_BITFIELD_SIZE_KEYS; c++ ) |
7119c2149abb
Fixing compiler errors for usbMuxUart Output module
Jacob Alexander <haata@kiibohd.com>
parents:
275
diff
changeset
|
618 USBKeys_Keys[ c ] = 0; |
7119c2149abb
Fixing compiler errors for usbMuxUart Output module
Jacob Alexander <haata@kiibohd.com>
parents:
275
diff
changeset
|
619 |
7119c2149abb
Fixing compiler errors for usbMuxUart Output module
Jacob Alexander <haata@kiibohd.com>
parents:
275
diff
changeset
|
620 // Zero out other key buffers |
7119c2149abb
Fixing compiler errors for usbMuxUart Output module
Jacob Alexander <haata@kiibohd.com>
parents:
275
diff
changeset
|
621 USBKeys_ConsCtrl = 0; |
7119c2149abb
Fixing compiler errors for usbMuxUart Output module
Jacob Alexander <haata@kiibohd.com>
parents:
275
diff
changeset
|
622 USBKeys_Modifiers = 0; |
7119c2149abb
Fixing compiler errors for usbMuxUart Output module
Jacob Alexander <haata@kiibohd.com>
parents:
275
diff
changeset
|
623 USBKeys_SysCtrl = 0; |
7119c2149abb
Fixing compiler errors for usbMuxUart Output module
Jacob Alexander <haata@kiibohd.com>
parents:
275
diff
changeset
|
624 } |
7119c2149abb
Fixing compiler errors for usbMuxUart Output module
Jacob Alexander <haata@kiibohd.com>
parents:
275
diff
changeset
|
625 |
7119c2149abb
Fixing compiler errors for usbMuxUart Output module
Jacob Alexander <haata@kiibohd.com>
parents:
275
diff
changeset
|
626 |
172
a30bddad4115
Adding UART and UART + USB muxed CLI output.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
627 // USB Module Setup |
a30bddad4115
Adding UART and UART + USB muxed CLI output.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
628 inline void Output_setup() |
a30bddad4115
Adding UART and UART + USB muxed CLI output.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
629 { |
230
d81ad399c14f
Adding clear screen before usb initializes
Jacob Alexander <haata@kiibohd.com>
parents:
227
diff
changeset
|
630 // Setup UART |
d81ad399c14f
Adding clear screen before usb initializes
Jacob Alexander <haata@kiibohd.com>
parents:
227
diff
changeset
|
631 uart_serial_setup(); |
d81ad399c14f
Adding clear screen before usb initializes
Jacob Alexander <haata@kiibohd.com>
parents:
227
diff
changeset
|
632 |
347
136e47478441
UARTConnect enumeration working!
Jacob Alexander <haata@kiibohd.com>
parents:
340
diff
changeset
|
633 // Initialize the USB |
136e47478441
UARTConnect enumeration working!
Jacob Alexander <haata@kiibohd.com>
parents:
340
diff
changeset
|
634 // If a USB connection does not exist, just ignore it |
136e47478441
UARTConnect enumeration working!
Jacob Alexander <haata@kiibohd.com>
parents:
340
diff
changeset
|
635 // All usb related functions will non-fatally fail if called |
136e47478441
UARTConnect enumeration working!
Jacob Alexander <haata@kiibohd.com>
parents:
340
diff
changeset
|
636 // If the USB initialization is delayed, then functionality will just be delayed |
172
a30bddad4115
Adding UART and UART + USB muxed CLI output.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
637 usb_init(); |
175 | 638 |
172
a30bddad4115
Adding UART and UART + USB muxed CLI output.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
639 // Register USB Output CLI dictionary |
a30bddad4115
Adding UART and UART + USB muxed CLI output.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
640 CLI_registerDictionary( outputCLIDict, outputCLIDictName ); |
227
ed05fa3555d4
Updating usbMuxUart for NKRO
Jacob Alexander <haata@kiibohd.com>
parents:
195
diff
changeset
|
641 |
347
136e47478441
UARTConnect enumeration working!
Jacob Alexander <haata@kiibohd.com>
parents:
340
diff
changeset
|
642 // Flush key buffers |
136e47478441
UARTConnect enumeration working!
Jacob Alexander <haata@kiibohd.com>
parents:
340
diff
changeset
|
643 Output_flushBuffers(); |
172
a30bddad4115
Adding UART and UART + USB muxed CLI output.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
644 } |
a30bddad4115
Adding UART and UART + USB muxed CLI output.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
645 |
a30bddad4115
Adding UART and UART + USB muxed CLI output.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
646 |
a30bddad4115
Adding UART and UART + USB muxed CLI output.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
647 // USB Data Send |
227
ed05fa3555d4
Updating usbMuxUart for NKRO
Jacob Alexander <haata@kiibohd.com>
parents:
195
diff
changeset
|
648 inline void Output_send() |
172
a30bddad4115
Adding UART and UART + USB muxed CLI output.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
649 { |
420
23a1868b4ac2
Adding dynamic USB power support
Jacob Alexander <haata@kiibohd.com>
parents:
385
diff
changeset
|
650 // USB status checks |
23a1868b4ac2
Adding dynamic USB power support
Jacob Alexander <haata@kiibohd.com>
parents:
385
diff
changeset
|
651 // Non-standard USB state manipulation, usually does nothing |
23a1868b4ac2
Adding dynamic USB power support
Jacob Alexander <haata@kiibohd.com>
parents:
385
diff
changeset
|
652 usb_device_check(); |
23a1868b4ac2
Adding dynamic USB power support
Jacob Alexander <haata@kiibohd.com>
parents:
385
diff
changeset
|
653 |
227
ed05fa3555d4
Updating usbMuxUart for NKRO
Jacob Alexander <haata@kiibohd.com>
parents:
195
diff
changeset
|
654 // Boot Mode Only, unset stale keys |
ed05fa3555d4
Updating usbMuxUart for NKRO
Jacob Alexander <haata@kiibohd.com>
parents:
195
diff
changeset
|
655 if ( USBKeys_Protocol == 0 ) |
ed05fa3555d4
Updating usbMuxUart for NKRO
Jacob Alexander <haata@kiibohd.com>
parents:
195
diff
changeset
|
656 for ( uint8_t c = USBKeys_Sent; c < USB_BOOT_MAX_KEYS; c++ ) |
ed05fa3555d4
Updating usbMuxUart for NKRO
Jacob Alexander <haata@kiibohd.com>
parents:
195
diff
changeset
|
657 USBKeys_Keys[c] = 0; |
172
a30bddad4115
Adding UART and UART + USB muxed CLI output.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
658 |
447
56237ba5da6f
Adding auto-restart support whenever USB gets into an odd state
Jacob Alexander <haata@kiibohd.com>
parents:
445
diff
changeset
|
659 // XXX - Behaves oddly on Mac OSX, might help with corrupted packets specific to OSX? -HaaTa |
56237ba5da6f
Adding auto-restart support whenever USB gets into an odd state
Jacob Alexander <haata@kiibohd.com>
parents:
445
diff
changeset
|
660 /* |
56237ba5da6f
Adding auto-restart support whenever USB gets into an odd state
Jacob Alexander <haata@kiibohd.com>
parents:
445
diff
changeset
|
661 // Check if idle count has been exceed, this forces usb_keyboard_send and usb_mouse_send to update |
56237ba5da6f
Adding auto-restart support whenever USB gets into an odd state
Jacob Alexander <haata@kiibohd.com>
parents:
445
diff
changeset
|
662 // TODO Add joystick as well (may be endpoint specific, currently not kept track of) |
56237ba5da6f
Adding auto-restart support whenever USB gets into an odd state
Jacob Alexander <haata@kiibohd.com>
parents:
445
diff
changeset
|
663 if ( usb_configuration && USBKeys_Idle_Config && ( |
56237ba5da6f
Adding auto-restart support whenever USB gets into an odd state
Jacob Alexander <haata@kiibohd.com>
parents:
445
diff
changeset
|
664 USBKeys_Idle_Expiry < systick_millis_count || |
56237ba5da6f
Adding auto-restart support whenever USB gets into an odd state
Jacob Alexander <haata@kiibohd.com>
parents:
445
diff
changeset
|
665 USBKeys_Idle_Expiry + USBKeys_Idle_Config * 4 >= systick_millis_count ) ) |
56237ba5da6f
Adding auto-restart support whenever USB gets into an odd state
Jacob Alexander <haata@kiibohd.com>
parents:
445
diff
changeset
|
666 { |
56237ba5da6f
Adding auto-restart support whenever USB gets into an odd state
Jacob Alexander <haata@kiibohd.com>
parents:
445
diff
changeset
|
667 USBKeys_Changed = USBKeyChangeState_All; |
56237ba5da6f
Adding auto-restart support whenever USB gets into an odd state
Jacob Alexander <haata@kiibohd.com>
parents:
445
diff
changeset
|
668 USBMouse_Changed = USBMouseChangeState_All; |
56237ba5da6f
Adding auto-restart support whenever USB gets into an odd state
Jacob Alexander <haata@kiibohd.com>
parents:
445
diff
changeset
|
669 } |
56237ba5da6f
Adding auto-restart support whenever USB gets into an odd state
Jacob Alexander <haata@kiibohd.com>
parents:
445
diff
changeset
|
670 */ |
56237ba5da6f
Adding auto-restart support whenever USB gets into an odd state
Jacob Alexander <haata@kiibohd.com>
parents:
445
diff
changeset
|
671 |
56237ba5da6f
Adding auto-restart support whenever USB gets into an odd state
Jacob Alexander <haata@kiibohd.com>
parents:
445
diff
changeset
|
672 // Process mouse actions |
56237ba5da6f
Adding auto-restart support whenever USB gets into an odd state
Jacob Alexander <haata@kiibohd.com>
parents:
445
diff
changeset
|
673 while ( USBMouse_Changed ) |
56237ba5da6f
Adding auto-restart support whenever USB gets into an odd state
Jacob Alexander <haata@kiibohd.com>
parents:
445
diff
changeset
|
674 usb_mouse_send(); |
56237ba5da6f
Adding auto-restart support whenever USB gets into an odd state
Jacob Alexander <haata@kiibohd.com>
parents:
445
diff
changeset
|
675 |
227
ed05fa3555d4
Updating usbMuxUart for NKRO
Jacob Alexander <haata@kiibohd.com>
parents:
195
diff
changeset
|
676 // Send keypresses while there are pending changes |
ed05fa3555d4
Updating usbMuxUart for NKRO
Jacob Alexander <haata@kiibohd.com>
parents:
195
diff
changeset
|
677 while ( USBKeys_Changed ) |
ed05fa3555d4
Updating usbMuxUart for NKRO
Jacob Alexander <haata@kiibohd.com>
parents:
195
diff
changeset
|
678 usb_keyboard_send(); |
172
a30bddad4115
Adding UART and UART + USB muxed CLI output.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
679 |
347
136e47478441
UARTConnect enumeration working!
Jacob Alexander <haata@kiibohd.com>
parents:
340
diff
changeset
|
680 // Clear keys sent |
136e47478441
UARTConnect enumeration working!
Jacob Alexander <haata@kiibohd.com>
parents:
340
diff
changeset
|
681 USBKeys_Sent = 0; |
172
a30bddad4115
Adding UART and UART + USB muxed CLI output.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
682 |
186
50702debf278
Initial MatrixARM implementation
Jacob Alexander <haata@kiibohd.com>
parents:
178
diff
changeset
|
683 // Signal Scan Module we are finished |
227
ed05fa3555d4
Updating usbMuxUart for NKRO
Jacob Alexander <haata@kiibohd.com>
parents:
195
diff
changeset
|
684 switch ( USBKeys_Protocol ) |
ed05fa3555d4
Updating usbMuxUart for NKRO
Jacob Alexander <haata@kiibohd.com>
parents:
195
diff
changeset
|
685 { |
ed05fa3555d4
Updating usbMuxUart for NKRO
Jacob Alexander <haata@kiibohd.com>
parents:
195
diff
changeset
|
686 case 0: // Boot Mode |
347
136e47478441
UARTConnect enumeration working!
Jacob Alexander <haata@kiibohd.com>
parents:
340
diff
changeset
|
687 // Clear modifiers only in boot mode |
136e47478441
UARTConnect enumeration working!
Jacob Alexander <haata@kiibohd.com>
parents:
340
diff
changeset
|
688 USBKeys_Modifiers = 0; |
227
ed05fa3555d4
Updating usbMuxUart for NKRO
Jacob Alexander <haata@kiibohd.com>
parents:
195
diff
changeset
|
689 Scan_finishedWithOutput( USBKeys_Sent <= USB_BOOT_MAX_KEYS ? USBKeys_Sent : USB_BOOT_MAX_KEYS ); |
ed05fa3555d4
Updating usbMuxUart for NKRO
Jacob Alexander <haata@kiibohd.com>
parents:
195
diff
changeset
|
690 break; |
ed05fa3555d4
Updating usbMuxUart for NKRO
Jacob Alexander <haata@kiibohd.com>
parents:
195
diff
changeset
|
691 case 1: // NKRO Mode |
ed05fa3555d4
Updating usbMuxUart for NKRO
Jacob Alexander <haata@kiibohd.com>
parents:
195
diff
changeset
|
692 Scan_finishedWithOutput( USBKeys_Sent ); |
ed05fa3555d4
Updating usbMuxUart for NKRO
Jacob Alexander <haata@kiibohd.com>
parents:
195
diff
changeset
|
693 break; |
ed05fa3555d4
Updating usbMuxUart for NKRO
Jacob Alexander <haata@kiibohd.com>
parents:
195
diff
changeset
|
694 } |
172
a30bddad4115
Adding UART and UART + USB muxed CLI output.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
695 } |
a30bddad4115
Adding UART and UART + USB muxed CLI output.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
696 |
a30bddad4115
Adding UART and UART + USB muxed CLI output.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
697 |
a30bddad4115
Adding UART and UART + USB muxed CLI output.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
698 // Sets the device into firmware reload mode |
347
136e47478441
UARTConnect enumeration working!
Jacob Alexander <haata@kiibohd.com>
parents:
340
diff
changeset
|
699 void Output_firmwareReload() |
172
a30bddad4115
Adding UART and UART + USB muxed CLI output.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
700 { |
347
136e47478441
UARTConnect enumeration working!
Jacob Alexander <haata@kiibohd.com>
parents:
340
diff
changeset
|
701 usb_device_reload(); |
172
a30bddad4115
Adding UART and UART + USB muxed CLI output.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
702 } |
a30bddad4115
Adding UART and UART + USB muxed CLI output.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
703 |
a30bddad4115
Adding UART and UART + USB muxed CLI output.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
704 |
a30bddad4115
Adding UART and UART + USB muxed CLI output.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
705 // USB Input buffer available |
a30bddad4115
Adding UART and UART + USB muxed CLI output.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
706 inline unsigned int Output_availablechar() |
a30bddad4115
Adding UART and UART + USB muxed CLI output.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
707 { |
a30bddad4115
Adding UART and UART + USB muxed CLI output.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
708 return usb_serial_available() + uart_serial_available(); |
a30bddad4115
Adding UART and UART + USB muxed CLI output.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
709 } |
a30bddad4115
Adding UART and UART + USB muxed CLI output.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
710 |
a30bddad4115
Adding UART and UART + USB muxed CLI output.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
711 |
a30bddad4115
Adding UART and UART + USB muxed CLI output.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
712 // USB Get Character from input buffer |
a30bddad4115
Adding UART and UART + USB muxed CLI output.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
713 inline int Output_getchar() |
a30bddad4115
Adding UART and UART + USB muxed CLI output.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
714 { |
178
555d70c6764d
Removing unnecessary ifdefs
Jacob Alexander <haata@kiibohd.com>
parents:
175
diff
changeset
|
715 // XXX Make sure to check output_availablechar() first! Information is lost with the cast (error codes) (AVR) |
172
a30bddad4115
Adding UART and UART + USB muxed CLI output.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
716 if ( usb_serial_available() > 0 ) |
a30bddad4115
Adding UART and UART + USB muxed CLI output.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
717 { |
178
555d70c6764d
Removing unnecessary ifdefs
Jacob Alexander <haata@kiibohd.com>
parents:
175
diff
changeset
|
718 return (int)usb_serial_getchar(); |
172
a30bddad4115
Adding UART and UART + USB muxed CLI output.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
719 } |
a30bddad4115
Adding UART and UART + USB muxed CLI output.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
720 |
a30bddad4115
Adding UART and UART + USB muxed CLI output.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
721 if ( uart_serial_available() > 0 ) |
a30bddad4115
Adding UART and UART + USB muxed CLI output.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
722 { |
178
555d70c6764d
Removing unnecessary ifdefs
Jacob Alexander <haata@kiibohd.com>
parents:
175
diff
changeset
|
723 return (int)uart_serial_getchar(); |
172
a30bddad4115
Adding UART and UART + USB muxed CLI output.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
724 } |
a30bddad4115
Adding UART and UART + USB muxed CLI output.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
725 |
a30bddad4115
Adding UART and UART + USB muxed CLI output.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
726 return -1; |
a30bddad4115
Adding UART and UART + USB muxed CLI output.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
727 } |
a30bddad4115
Adding UART and UART + USB muxed CLI output.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
728 |
a30bddad4115
Adding UART and UART + USB muxed CLI output.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
729 |
a30bddad4115
Adding UART and UART + USB muxed CLI output.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
730 // USB Send Character to output buffer |
a30bddad4115
Adding UART and UART + USB muxed CLI output.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
731 inline int Output_putchar( char c ) |
a30bddad4115
Adding UART and UART + USB muxed CLI output.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
732 { |
a30bddad4115
Adding UART and UART + USB muxed CLI output.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
733 // First send to UART |
a30bddad4115
Adding UART and UART + USB muxed CLI output.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
734 uart_serial_putchar( c ); |
a30bddad4115
Adding UART and UART + USB muxed CLI output.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
735 |
a30bddad4115
Adding UART and UART + USB muxed CLI output.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
736 // Then send to USB |
a30bddad4115
Adding UART and UART + USB muxed CLI output.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
737 return usb_serial_putchar( c ); |
a30bddad4115
Adding UART and UART + USB muxed CLI output.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
738 } |
a30bddad4115
Adding UART and UART + USB muxed CLI output.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
739 |
a30bddad4115
Adding UART and UART + USB muxed CLI output.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
740 |
a30bddad4115
Adding UART and UART + USB muxed CLI output.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
741 // USB Send String to output buffer, null terminated |
a30bddad4115
Adding UART and UART + USB muxed CLI output.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
742 inline int Output_putstr( char* str ) |
a30bddad4115
Adding UART and UART + USB muxed CLI output.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
743 { |
a30bddad4115
Adding UART and UART + USB muxed CLI output.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
744 #if defined(_at90usb162_) || defined(_atmega32u4_) || defined(_at90usb646_) || defined(_at90usb1286_) // AVR |
178
555d70c6764d
Removing unnecessary ifdefs
Jacob Alexander <haata@kiibohd.com>
parents:
175
diff
changeset
|
745 uint16_t count = 0; |
263
9afed592bcb5
Preparing for mk20dx256vlh7
Jacob Alexander <haata@kiibohd.com>
parents:
239
diff
changeset
|
746 #elif defined(_mk20dx128_) || defined(_mk20dx128vlf5_) || defined(_mk20dx256_) || defined(_mk20dx256vlh7_) // ARM |
172
a30bddad4115
Adding UART and UART + USB muxed CLI output.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
747 uint32_t count = 0; |
a30bddad4115
Adding UART and UART + USB muxed CLI output.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
748 #endif |
a30bddad4115
Adding UART and UART + USB muxed CLI output.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
749 // Count characters until NULL character, then send the amount counted |
a30bddad4115
Adding UART and UART + USB muxed CLI output.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
750 while ( str[count] != '\0' ) |
a30bddad4115
Adding UART and UART + USB muxed CLI output.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
751 count++; |
a30bddad4115
Adding UART and UART + USB muxed CLI output.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
752 |
173
afd0f94023ff
Fixed bug with standalone UART CLI
Jacob Alexander <haata@kiibohd.com>
parents:
172
diff
changeset
|
753 // First send to UART |
afd0f94023ff
Fixed bug with standalone UART CLI
Jacob Alexander <haata@kiibohd.com>
parents:
172
diff
changeset
|
754 uart_serial_write( str, count ); |
172
a30bddad4115
Adding UART and UART + USB muxed CLI output.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
755 |
a30bddad4115
Adding UART and UART + USB muxed CLI output.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
756 // Then send to USB |
a30bddad4115
Adding UART and UART + USB muxed CLI output.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
757 return usb_serial_write( str, count ); |
a30bddad4115
Adding UART and UART + USB muxed CLI output.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
758 } |
a30bddad4115
Adding UART and UART + USB muxed CLI output.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
759 |
a30bddad4115
Adding UART and UART + USB muxed CLI output.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
760 |
a30bddad4115
Adding UART and UART + USB muxed CLI output.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
761 // Soft Chip Reset |
a30bddad4115
Adding UART and UART + USB muxed CLI output.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
762 inline void Output_softReset() |
a30bddad4115
Adding UART and UART + USB muxed CLI output.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
763 { |
178
555d70c6764d
Removing unnecessary ifdefs
Jacob Alexander <haata@kiibohd.com>
parents:
175
diff
changeset
|
764 usb_device_software_reset(); |
172
a30bddad4115
Adding UART and UART + USB muxed CLI output.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
765 } |
a30bddad4115
Adding UART and UART + USB muxed CLI output.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
766 |
a30bddad4115
Adding UART and UART + USB muxed CLI output.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
767 |
420
23a1868b4ac2
Adding dynamic USB power support
Jacob Alexander <haata@kiibohd.com>
parents:
385
diff
changeset
|
768 // Update USB current (mA) |
23a1868b4ac2
Adding dynamic USB power support
Jacob Alexander <haata@kiibohd.com>
parents:
385
diff
changeset
|
769 // Triggers power change event |
23a1868b4ac2
Adding dynamic USB power support
Jacob Alexander <haata@kiibohd.com>
parents:
385
diff
changeset
|
770 void Output_update_usb_current( unsigned int current ) |
23a1868b4ac2
Adding dynamic USB power support
Jacob Alexander <haata@kiibohd.com>
parents:
385
diff
changeset
|
771 { |
23a1868b4ac2
Adding dynamic USB power support
Jacob Alexander <haata@kiibohd.com>
parents:
385
diff
changeset
|
772 // Only signal if changed |
23a1868b4ac2
Adding dynamic USB power support
Jacob Alexander <haata@kiibohd.com>
parents:
385
diff
changeset
|
773 if ( current == Output_USBCurrent_Available ) |
23a1868b4ac2
Adding dynamic USB power support
Jacob Alexander <haata@kiibohd.com>
parents:
385
diff
changeset
|
774 return; |
23a1868b4ac2
Adding dynamic USB power support
Jacob Alexander <haata@kiibohd.com>
parents:
385
diff
changeset
|
775 |
23a1868b4ac2
Adding dynamic USB power support
Jacob Alexander <haata@kiibohd.com>
parents:
385
diff
changeset
|
776 // Update USB current |
23a1868b4ac2
Adding dynamic USB power support
Jacob Alexander <haata@kiibohd.com>
parents:
385
diff
changeset
|
777 Output_USBCurrent_Available = current; |
23a1868b4ac2
Adding dynamic USB power support
Jacob Alexander <haata@kiibohd.com>
parents:
385
diff
changeset
|
778 |
439
68e19d7c953e
Adding proper remote wake-up support
Jacob Alexander <haata@kiibohd.com>
parents:
438
diff
changeset
|
779 /* XXX Affects sleep states due to USB messages |
420
23a1868b4ac2
Adding dynamic USB power support
Jacob Alexander <haata@kiibohd.com>
parents:
385
diff
changeset
|
780 unsigned int total_current = Output_current_available(); |
23a1868b4ac2
Adding dynamic USB power support
Jacob Alexander <haata@kiibohd.com>
parents:
385
diff
changeset
|
781 info_msg("USB Available Current Changed. Total Available: "); |
23a1868b4ac2
Adding dynamic USB power support
Jacob Alexander <haata@kiibohd.com>
parents:
385
diff
changeset
|
782 printInt32( total_current ); |
23a1868b4ac2
Adding dynamic USB power support
Jacob Alexander <haata@kiibohd.com>
parents:
385
diff
changeset
|
783 print(" mA" NL); |
439
68e19d7c953e
Adding proper remote wake-up support
Jacob Alexander <haata@kiibohd.com>
parents:
438
diff
changeset
|
784 */ |
420
23a1868b4ac2
Adding dynamic USB power support
Jacob Alexander <haata@kiibohd.com>
parents:
385
diff
changeset
|
785 |
23a1868b4ac2
Adding dynamic USB power support
Jacob Alexander <haata@kiibohd.com>
parents:
385
diff
changeset
|
786 // Send new total current to the Scan Modules |
23a1868b4ac2
Adding dynamic USB power support
Jacob Alexander <haata@kiibohd.com>
parents:
385
diff
changeset
|
787 Scan_currentChange( Output_current_available() ); |
23a1868b4ac2
Adding dynamic USB power support
Jacob Alexander <haata@kiibohd.com>
parents:
385
diff
changeset
|
788 } |
23a1868b4ac2
Adding dynamic USB power support
Jacob Alexander <haata@kiibohd.com>
parents:
385
diff
changeset
|
789 |
23a1868b4ac2
Adding dynamic USB power support
Jacob Alexander <haata@kiibohd.com>
parents:
385
diff
changeset
|
790 |
23a1868b4ac2
Adding dynamic USB power support
Jacob Alexander <haata@kiibohd.com>
parents:
385
diff
changeset
|
791 // Update external current (mA) |
23a1868b4ac2
Adding dynamic USB power support
Jacob Alexander <haata@kiibohd.com>
parents:
385
diff
changeset
|
792 // Triggers power change event |
23a1868b4ac2
Adding dynamic USB power support
Jacob Alexander <haata@kiibohd.com>
parents:
385
diff
changeset
|
793 void Output_update_external_current( unsigned int current ) |
23a1868b4ac2
Adding dynamic USB power support
Jacob Alexander <haata@kiibohd.com>
parents:
385
diff
changeset
|
794 { |
23a1868b4ac2
Adding dynamic USB power support
Jacob Alexander <haata@kiibohd.com>
parents:
385
diff
changeset
|
795 // Only signal if changed |
23a1868b4ac2
Adding dynamic USB power support
Jacob Alexander <haata@kiibohd.com>
parents:
385
diff
changeset
|
796 if ( current == Output_ExtCurrent_Available ) |
23a1868b4ac2
Adding dynamic USB power support
Jacob Alexander <haata@kiibohd.com>
parents:
385
diff
changeset
|
797 return; |
23a1868b4ac2
Adding dynamic USB power support
Jacob Alexander <haata@kiibohd.com>
parents:
385
diff
changeset
|
798 |
23a1868b4ac2
Adding dynamic USB power support
Jacob Alexander <haata@kiibohd.com>
parents:
385
diff
changeset
|
799 // Update external current |
23a1868b4ac2
Adding dynamic USB power support
Jacob Alexander <haata@kiibohd.com>
parents:
385
diff
changeset
|
800 Output_ExtCurrent_Available = current; |
23a1868b4ac2
Adding dynamic USB power support
Jacob Alexander <haata@kiibohd.com>
parents:
385
diff
changeset
|
801 |
23a1868b4ac2
Adding dynamic USB power support
Jacob Alexander <haata@kiibohd.com>
parents:
385
diff
changeset
|
802 unsigned int total_current = Output_current_available(); |
23a1868b4ac2
Adding dynamic USB power support
Jacob Alexander <haata@kiibohd.com>
parents:
385
diff
changeset
|
803 info_msg("External Available Current Changed. Total Available: "); |
23a1868b4ac2
Adding dynamic USB power support
Jacob Alexander <haata@kiibohd.com>
parents:
385
diff
changeset
|
804 printInt32( total_current ); |
23a1868b4ac2
Adding dynamic USB power support
Jacob Alexander <haata@kiibohd.com>
parents:
385
diff
changeset
|
805 print(" mA" NL); |
23a1868b4ac2
Adding dynamic USB power support
Jacob Alexander <haata@kiibohd.com>
parents:
385
diff
changeset
|
806 |
23a1868b4ac2
Adding dynamic USB power support
Jacob Alexander <haata@kiibohd.com>
parents:
385
diff
changeset
|
807 // Send new total current to the Scan Modules |
23a1868b4ac2
Adding dynamic USB power support
Jacob Alexander <haata@kiibohd.com>
parents:
385
diff
changeset
|
808 Scan_currentChange( Output_current_available() ); |
23a1868b4ac2
Adding dynamic USB power support
Jacob Alexander <haata@kiibohd.com>
parents:
385
diff
changeset
|
809 } |
23a1868b4ac2
Adding dynamic USB power support
Jacob Alexander <haata@kiibohd.com>
parents:
385
diff
changeset
|
810 |
23a1868b4ac2
Adding dynamic USB power support
Jacob Alexander <haata@kiibohd.com>
parents:
385
diff
changeset
|
811 |
23a1868b4ac2
Adding dynamic USB power support
Jacob Alexander <haata@kiibohd.com>
parents:
385
diff
changeset
|
812 // Power/Current Available |
23a1868b4ac2
Adding dynamic USB power support
Jacob Alexander <haata@kiibohd.com>
parents:
385
diff
changeset
|
813 unsigned int Output_current_available() |
23a1868b4ac2
Adding dynamic USB power support
Jacob Alexander <haata@kiibohd.com>
parents:
385
diff
changeset
|
814 { |
23a1868b4ac2
Adding dynamic USB power support
Jacob Alexander <haata@kiibohd.com>
parents:
385
diff
changeset
|
815 unsigned int total_current = 0; |
23a1868b4ac2
Adding dynamic USB power support
Jacob Alexander <haata@kiibohd.com>
parents:
385
diff
changeset
|
816 |
23a1868b4ac2
Adding dynamic USB power support
Jacob Alexander <haata@kiibohd.com>
parents:
385
diff
changeset
|
817 // Check for USB current source |
23a1868b4ac2
Adding dynamic USB power support
Jacob Alexander <haata@kiibohd.com>
parents:
385
diff
changeset
|
818 total_current += Output_USBCurrent_Available; |
23a1868b4ac2
Adding dynamic USB power support
Jacob Alexander <haata@kiibohd.com>
parents:
385
diff
changeset
|
819 |
23a1868b4ac2
Adding dynamic USB power support
Jacob Alexander <haata@kiibohd.com>
parents:
385
diff
changeset
|
820 // Check for external current source |
23a1868b4ac2
Adding dynamic USB power support
Jacob Alexander <haata@kiibohd.com>
parents:
385
diff
changeset
|
821 total_current += Output_ExtCurrent_Available; |
23a1868b4ac2
Adding dynamic USB power support
Jacob Alexander <haata@kiibohd.com>
parents:
385
diff
changeset
|
822 |
23a1868b4ac2
Adding dynamic USB power support
Jacob Alexander <haata@kiibohd.com>
parents:
385
diff
changeset
|
823 // XXX If the total available current is still 0 |
23a1868b4ac2
Adding dynamic USB power support
Jacob Alexander <haata@kiibohd.com>
parents:
385
diff
changeset
|
824 // Set to 100 mA, which is generally a safe assumption at startup |
23a1868b4ac2
Adding dynamic USB power support
Jacob Alexander <haata@kiibohd.com>
parents:
385
diff
changeset
|
825 // before we've been able to determine actual available current |
23a1868b4ac2
Adding dynamic USB power support
Jacob Alexander <haata@kiibohd.com>
parents:
385
diff
changeset
|
826 if ( total_current == 0 ) |
23a1868b4ac2
Adding dynamic USB power support
Jacob Alexander <haata@kiibohd.com>
parents:
385
diff
changeset
|
827 { |
23a1868b4ac2
Adding dynamic USB power support
Jacob Alexander <haata@kiibohd.com>
parents:
385
diff
changeset
|
828 total_current = 100; |
23a1868b4ac2
Adding dynamic USB power support
Jacob Alexander <haata@kiibohd.com>
parents:
385
diff
changeset
|
829 } |
23a1868b4ac2
Adding dynamic USB power support
Jacob Alexander <haata@kiibohd.com>
parents:
385
diff
changeset
|
830 |
23a1868b4ac2
Adding dynamic USB power support
Jacob Alexander <haata@kiibohd.com>
parents:
385
diff
changeset
|
831 return total_current; |
23a1868b4ac2
Adding dynamic USB power support
Jacob Alexander <haata@kiibohd.com>
parents:
385
diff
changeset
|
832 } |
23a1868b4ac2
Adding dynamic USB power support
Jacob Alexander <haata@kiibohd.com>
parents:
385
diff
changeset
|
833 |
23a1868b4ac2
Adding dynamic USB power support
Jacob Alexander <haata@kiibohd.com>
parents:
385
diff
changeset
|
834 |
23a1868b4ac2
Adding dynamic USB power support
Jacob Alexander <haata@kiibohd.com>
parents:
385
diff
changeset
|
835 |
172
a30bddad4115
Adding UART and UART + USB muxed CLI output.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
836 // ----- CLI Command Functions ----- |
a30bddad4115
Adding UART and UART + USB muxed CLI output.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
837 |
a30bddad4115
Adding UART and UART + USB muxed CLI output.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
838 void cliFunc_kbdProtocol( char* args ) |
a30bddad4115
Adding UART and UART + USB muxed CLI output.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
839 { |
a30bddad4115
Adding UART and UART + USB muxed CLI output.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
840 print( NL ); |
a30bddad4115
Adding UART and UART + USB muxed CLI output.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
841 info_msg("Keyboard Protocol: "); |
a30bddad4115
Adding UART and UART + USB muxed CLI output.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
842 printInt8( USBKeys_Protocol ); |
a30bddad4115
Adding UART and UART + USB muxed CLI output.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
843 } |
a30bddad4115
Adding UART and UART + USB muxed CLI output.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
844 |
a30bddad4115
Adding UART and UART + USB muxed CLI output.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
845 |
347
136e47478441
UARTConnect enumeration working!
Jacob Alexander <haata@kiibohd.com>
parents:
340
diff
changeset
|
846 void cliFunc_outputDebug( char* args ) |
136e47478441
UARTConnect enumeration working!
Jacob Alexander <haata@kiibohd.com>
parents:
340
diff
changeset
|
847 { |
136e47478441
UARTConnect enumeration working!
Jacob Alexander <haata@kiibohd.com>
parents:
340
diff
changeset
|
848 // Parse number from argument |
136e47478441
UARTConnect enumeration working!
Jacob Alexander <haata@kiibohd.com>
parents:
340
diff
changeset
|
849 // NOTE: Only first argument is used |
136e47478441
UARTConnect enumeration working!
Jacob Alexander <haata@kiibohd.com>
parents:
340
diff
changeset
|
850 char* arg1Ptr; |
136e47478441
UARTConnect enumeration working!
Jacob Alexander <haata@kiibohd.com>
parents:
340
diff
changeset
|
851 char* arg2Ptr; |
136e47478441
UARTConnect enumeration working!
Jacob Alexander <haata@kiibohd.com>
parents:
340
diff
changeset
|
852 CLI_argumentIsolation( args, &arg1Ptr, &arg2Ptr ); |
136e47478441
UARTConnect enumeration working!
Jacob Alexander <haata@kiibohd.com>
parents:
340
diff
changeset
|
853 |
136e47478441
UARTConnect enumeration working!
Jacob Alexander <haata@kiibohd.com>
parents:
340
diff
changeset
|
854 // Default to 1 if no argument is given |
136e47478441
UARTConnect enumeration working!
Jacob Alexander <haata@kiibohd.com>
parents:
340
diff
changeset
|
855 Output_DebugMode = 1; |
136e47478441
UARTConnect enumeration working!
Jacob Alexander <haata@kiibohd.com>
parents:
340
diff
changeset
|
856 |
136e47478441
UARTConnect enumeration working!
Jacob Alexander <haata@kiibohd.com>
parents:
340
diff
changeset
|
857 if ( arg1Ptr[0] != '\0' ) |
136e47478441
UARTConnect enumeration working!
Jacob Alexander <haata@kiibohd.com>
parents:
340
diff
changeset
|
858 { |
136e47478441
UARTConnect enumeration working!
Jacob Alexander <haata@kiibohd.com>
parents:
340
diff
changeset
|
859 Output_DebugMode = (uint16_t)numToInt( arg1Ptr ); |
136e47478441
UARTConnect enumeration working!
Jacob Alexander <haata@kiibohd.com>
parents:
340
diff
changeset
|
860 } |
136e47478441
UARTConnect enumeration working!
Jacob Alexander <haata@kiibohd.com>
parents:
340
diff
changeset
|
861 } |
136e47478441
UARTConnect enumeration working!
Jacob Alexander <haata@kiibohd.com>
parents:
340
diff
changeset
|
862 |
136e47478441
UARTConnect enumeration working!
Jacob Alexander <haata@kiibohd.com>
parents:
340
diff
changeset
|
863 |
172
a30bddad4115
Adding UART and UART + USB muxed CLI output.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
864 void cliFunc_readLEDs( char* args ) |
a30bddad4115
Adding UART and UART + USB muxed CLI output.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
865 { |
a30bddad4115
Adding UART and UART + USB muxed CLI output.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
866 print( NL ); |
227
ed05fa3555d4
Updating usbMuxUart for NKRO
Jacob Alexander <haata@kiibohd.com>
parents:
195
diff
changeset
|
867 info_msg("LED State: "); |
172
a30bddad4115
Adding UART and UART + USB muxed CLI output.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
868 printInt8( USBKeys_LEDs ); |
a30bddad4115
Adding UART and UART + USB muxed CLI output.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
869 } |
a30bddad4115
Adding UART and UART + USB muxed CLI output.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
870 |
a30bddad4115
Adding UART and UART + USB muxed CLI output.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
871 |
a30bddad4115
Adding UART and UART + USB muxed CLI output.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
872 void cliFunc_readUART( char* args ) |
a30bddad4115
Adding UART and UART + USB muxed CLI output.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
873 { |
a30bddad4115
Adding UART and UART + USB muxed CLI output.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
874 print( NL ); |
a30bddad4115
Adding UART and UART + USB muxed CLI output.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
875 |
a30bddad4115
Adding UART and UART + USB muxed CLI output.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
876 // Read UART buffer until empty |
a30bddad4115
Adding UART and UART + USB muxed CLI output.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
877 while ( uart_serial_available() > 0 ) |
a30bddad4115
Adding UART and UART + USB muxed CLI output.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
878 { |
a30bddad4115
Adding UART and UART + USB muxed CLI output.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
879 char out[] = { (char)uart_serial_getchar(), '\0' }; |
a30bddad4115
Adding UART and UART + USB muxed CLI output.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
880 dPrint( out ); |
a30bddad4115
Adding UART and UART + USB muxed CLI output.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
881 } |
a30bddad4115
Adding UART and UART + USB muxed CLI output.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
882 } |
a30bddad4115
Adding UART and UART + USB muxed CLI output.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
883 |
a30bddad4115
Adding UART and UART + USB muxed CLI output.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
884 |
a30bddad4115
Adding UART and UART + USB muxed CLI output.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
885 void cliFunc_sendKeys( char* args ) |
a30bddad4115
Adding UART and UART + USB muxed CLI output.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
886 { |
227
ed05fa3555d4
Updating usbMuxUart for NKRO
Jacob Alexander <haata@kiibohd.com>
parents:
195
diff
changeset
|
887 // Copy USBKeys_KeysCLI to USBKeys_Keys |
172
a30bddad4115
Adding UART and UART + USB muxed CLI output.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
888 for ( uint8_t key = 0; key < USBKeys_SentCLI; ++key ) |
a30bddad4115
Adding UART and UART + USB muxed CLI output.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
889 { |
227
ed05fa3555d4
Updating usbMuxUart for NKRO
Jacob Alexander <haata@kiibohd.com>
parents:
195
diff
changeset
|
890 // TODO |
ed05fa3555d4
Updating usbMuxUart for NKRO
Jacob Alexander <haata@kiibohd.com>
parents:
195
diff
changeset
|
891 //USBKeys_Keys[key] = USBKeys_KeysCLI[key]; |
172
a30bddad4115
Adding UART and UART + USB muxed CLI output.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
892 } |
a30bddad4115
Adding UART and UART + USB muxed CLI output.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
893 USBKeys_Sent = USBKeys_SentCLI; |
a30bddad4115
Adding UART and UART + USB muxed CLI output.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
894 |
a30bddad4115
Adding UART and UART + USB muxed CLI output.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
895 // Set modifier byte |
a30bddad4115
Adding UART and UART + USB muxed CLI output.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
896 USBKeys_Modifiers = USBKeys_ModifiersCLI; |
a30bddad4115
Adding UART and UART + USB muxed CLI output.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
897 } |
a30bddad4115
Adding UART and UART + USB muxed CLI output.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
898 |
a30bddad4115
Adding UART and UART + USB muxed CLI output.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
899 |
a30bddad4115
Adding UART and UART + USB muxed CLI output.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
900 void cliFunc_sendUART( char* args ) |
a30bddad4115
Adding UART and UART + USB muxed CLI output.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
901 { |
a30bddad4115
Adding UART and UART + USB muxed CLI output.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
902 // Write all args to UART |
a30bddad4115
Adding UART and UART + USB muxed CLI output.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
903 uart_serial_write( args, lenStr( args ) ); |
a30bddad4115
Adding UART and UART + USB muxed CLI output.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
904 } |
a30bddad4115
Adding UART and UART + USB muxed CLI output.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
905 |
a30bddad4115
Adding UART and UART + USB muxed CLI output.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
906 |
a30bddad4115
Adding UART and UART + USB muxed CLI output.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
907 void cliFunc_setKeys( char* args ) |
a30bddad4115
Adding UART and UART + USB muxed CLI output.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
908 { |
a30bddad4115
Adding UART and UART + USB muxed CLI output.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
909 char* curArgs; |
a30bddad4115
Adding UART and UART + USB muxed CLI output.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
910 char* arg1Ptr; |
a30bddad4115
Adding UART and UART + USB muxed CLI output.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
911 char* arg2Ptr = args; |
a30bddad4115
Adding UART and UART + USB muxed CLI output.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
912 |
a30bddad4115
Adding UART and UART + USB muxed CLI output.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
913 // Parse up to USBKeys_MaxSize args (whichever is least) |
227
ed05fa3555d4
Updating usbMuxUart for NKRO
Jacob Alexander <haata@kiibohd.com>
parents:
195
diff
changeset
|
914 for ( USBKeys_SentCLI = 0; USBKeys_SentCLI < USB_BOOT_MAX_KEYS; ++USBKeys_SentCLI ) |
172
a30bddad4115
Adding UART and UART + USB muxed CLI output.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
915 { |
a30bddad4115
Adding UART and UART + USB muxed CLI output.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
916 curArgs = arg2Ptr; |
a30bddad4115
Adding UART and UART + USB muxed CLI output.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
917 CLI_argumentIsolation( curArgs, &arg1Ptr, &arg2Ptr ); |
a30bddad4115
Adding UART and UART + USB muxed CLI output.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
918 |
a30bddad4115
Adding UART and UART + USB muxed CLI output.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
919 // Stop processing args if no more are found |
a30bddad4115
Adding UART and UART + USB muxed CLI output.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
920 if ( *arg1Ptr == '\0' ) |
a30bddad4115
Adding UART and UART + USB muxed CLI output.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
921 break; |
a30bddad4115
Adding UART and UART + USB muxed CLI output.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
922 |
a30bddad4115
Adding UART and UART + USB muxed CLI output.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
923 // Add the USB code to be sent |
227
ed05fa3555d4
Updating usbMuxUart for NKRO
Jacob Alexander <haata@kiibohd.com>
parents:
195
diff
changeset
|
924 // TODO |
ed05fa3555d4
Updating usbMuxUart for NKRO
Jacob Alexander <haata@kiibohd.com>
parents:
195
diff
changeset
|
925 //USBKeys_KeysCLI[USBKeys_SentCLI] = numToInt( arg1Ptr ); |
172
a30bddad4115
Adding UART and UART + USB muxed CLI output.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
926 } |
a30bddad4115
Adding UART and UART + USB muxed CLI output.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
927 } |
a30bddad4115
Adding UART and UART + USB muxed CLI output.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
928 |
a30bddad4115
Adding UART and UART + USB muxed CLI output.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
929 |
a30bddad4115
Adding UART and UART + USB muxed CLI output.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
930 void cliFunc_setMod( char* args ) |
a30bddad4115
Adding UART and UART + USB muxed CLI output.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
931 { |
a30bddad4115
Adding UART and UART + USB muxed CLI output.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
932 // Parse number from argument |
a30bddad4115
Adding UART and UART + USB muxed CLI output.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
933 // NOTE: Only first argument is used |
a30bddad4115
Adding UART and UART + USB muxed CLI output.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
934 char* arg1Ptr; |
a30bddad4115
Adding UART and UART + USB muxed CLI output.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
935 char* arg2Ptr; |
a30bddad4115
Adding UART and UART + USB muxed CLI output.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
936 CLI_argumentIsolation( args, &arg1Ptr, &arg2Ptr ); |
a30bddad4115
Adding UART and UART + USB muxed CLI output.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
937 |
195
58cfcb7bac88
Changing decToInt to numToInt (adds support for Hex number interpreter)
Jacob Alexander <haata@kiibohd.com>
parents:
192
diff
changeset
|
938 USBKeys_ModifiersCLI = numToInt( arg1Ptr ); |
172
a30bddad4115
Adding UART and UART + USB muxed CLI output.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
939 } |
a30bddad4115
Adding UART and UART + USB muxed CLI output.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
940 |