Mercurial > louis > kiibohd-controller
annotate Output/pjrcUSB/output_com.h @ 322:cc09f7e858bf
Adding None capability.
- Required for 0.3b update of the KLL compiler.
author | Jacob Alexander <haata@kiibohd.com> |
---|---|
date | Sat, 02 May 2015 14:29:27 -0700 |
parents | 1495b4504a59 |
children | 66eccdd9ced5 |
rev | line source |
---|---|
275
d5bf41d7f7ef
Initial code for USB cable detection
Jacob Alexander <haata@kiibohd.com>
parents:
248
diff
changeset
|
1 /* Copyright (C) 2013-2015 by Jacob Alexander |
122
2bb16439e6ca
Preparing Teensy 3.1 and CLI merge for DPH controller code.
Jacob Alexander <haata@kiibohd.com>
parents:
109
diff
changeset
|
2 * |
104
e84738d174bc
Moving USB to Output in preparation for additional Output types.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
3 * Permission is hereby granted, free of charge, to any person obtaining a copy |
e84738d174bc
Moving USB to Output in preparation for additional Output types.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
4 * of this software and associated documentation files (the "Software"), to deal |
e84738d174bc
Moving USB to Output in preparation for additional Output types.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
5 * in the Software without restriction, including without limitation the rights |
e84738d174bc
Moving USB to Output in preparation for additional Output types.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
6 * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell |
e84738d174bc
Moving USB to Output in preparation for additional Output types.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
7 * copies of the Software, and to permit persons to whom the Software is |
e84738d174bc
Moving USB to Output in preparation for additional Output types.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
8 * furnished to do so, subject to the following conditions: |
122
2bb16439e6ca
Preparing Teensy 3.1 and CLI merge for DPH controller code.
Jacob Alexander <haata@kiibohd.com>
parents:
109
diff
changeset
|
9 * |
104
e84738d174bc
Moving USB to Output in preparation for additional Output types.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
10 * The above copyright notice and this permission notice shall be included in |
e84738d174bc
Moving USB to Output in preparation for additional Output types.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
11 * all copies or substantial portions of the Software. |
122
2bb16439e6ca
Preparing Teensy 3.1 and CLI merge for DPH controller code.
Jacob Alexander <haata@kiibohd.com>
parents:
109
diff
changeset
|
12 * |
104
e84738d174bc
Moving USB to Output in preparation for additional Output types.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
13 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR |
e84738d174bc
Moving USB to Output in preparation for additional Output types.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
14 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, |
e84738d174bc
Moving USB to Output in preparation for additional Output types.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
15 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE |
e84738d174bc
Moving USB to Output in preparation for additional Output types.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
16 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER |
e84738d174bc
Moving USB to Output in preparation for additional Output types.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
17 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, |
e84738d174bc
Moving USB to Output in preparation for additional Output types.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
18 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN |
e84738d174bc
Moving USB to Output in preparation for additional Output types.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
19 * THE SOFTWARE. |
e84738d174bc
Moving USB to Output in preparation for additional Output types.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
20 */ |
e84738d174bc
Moving USB to Output in preparation for additional Output types.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
21 |
e84738d174bc
Moving USB to Output in preparation for additional Output types.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
22 #ifndef __output_com_h |
e84738d174bc
Moving USB to Output in preparation for additional Output types.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
23 #define __output_com_h |
e84738d174bc
Moving USB to Output in preparation for additional Output types.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
24 |
e84738d174bc
Moving USB to Output in preparation for additional Output types.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
25 // ----- Includes ----- |
e84738d174bc
Moving USB to Output in preparation for additional Output types.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
26 |
e84738d174bc
Moving USB to Output in preparation for additional Output types.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
27 // Compiler Includes |
e84738d174bc
Moving USB to Output in preparation for additional Output types.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
28 #include <stdint.h> |
e84738d174bc
Moving USB to Output in preparation for additional Output types.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
29 |
e84738d174bc
Moving USB to Output in preparation for additional Output types.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
30 // Local Includes |
e84738d174bc
Moving USB to Output in preparation for additional Output types.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
31 #include <buildvars.h> // Defines USB Parameters, partially generated by CMake |
e84738d174bc
Moving USB to Output in preparation for additional Output types.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
32 |
e84738d174bc
Moving USB to Output in preparation for additional Output types.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
33 |
e84738d174bc
Moving USB to Output in preparation for additional Output types.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
34 |
e84738d174bc
Moving USB to Output in preparation for additional Output types.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
35 // ----- Defines ----- |
e84738d174bc
Moving USB to Output in preparation for additional Output types.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
36 |
223
fc3b9cb190cc
Adding NKRO support to AVR/DPH.
Jacob Alexander <haata@kiibohd.com>
parents:
218
diff
changeset
|
37 // Max size of key buffer needed for NKRO |
fc3b9cb190cc
Adding NKRO support to AVR/DPH.
Jacob Alexander <haata@kiibohd.com>
parents:
218
diff
changeset
|
38 // Boot mode uses only the first 6 bytes |
237
01b686cc94e8
Fixing USB NKRO key buffer bug
Jacob Alexander <haata@kiibohd.com>
parents:
236
diff
changeset
|
39 #define USB_NKRO_BITFIELD_SIZE_KEYS 27 |
223
fc3b9cb190cc
Adding NKRO support to AVR/DPH.
Jacob Alexander <haata@kiibohd.com>
parents:
218
diff
changeset
|
40 #define USB_BOOT_MAX_KEYS 6 |
fc3b9cb190cc
Adding NKRO support to AVR/DPH.
Jacob Alexander <haata@kiibohd.com>
parents:
218
diff
changeset
|
41 |
fc3b9cb190cc
Adding NKRO support to AVR/DPH.
Jacob Alexander <haata@kiibohd.com>
parents:
218
diff
changeset
|
42 |
fc3b9cb190cc
Adding NKRO support to AVR/DPH.
Jacob Alexander <haata@kiibohd.com>
parents:
218
diff
changeset
|
43 |
fc3b9cb190cc
Adding NKRO support to AVR/DPH.
Jacob Alexander <haata@kiibohd.com>
parents:
218
diff
changeset
|
44 // ----- Enumerations ----- |
fc3b9cb190cc
Adding NKRO support to AVR/DPH.
Jacob Alexander <haata@kiibohd.com>
parents:
218
diff
changeset
|
45 |
fc3b9cb190cc
Adding NKRO support to AVR/DPH.
Jacob Alexander <haata@kiibohd.com>
parents:
218
diff
changeset
|
46 // USB NKRO state transitions (indicates which Report ID's need refreshing) |
fc3b9cb190cc
Adding NKRO support to AVR/DPH.
Jacob Alexander <haata@kiibohd.com>
parents:
218
diff
changeset
|
47 // Boot mode just checks if any keys were changed (as everything is sent every time) |
fc3b9cb190cc
Adding NKRO support to AVR/DPH.
Jacob Alexander <haata@kiibohd.com>
parents:
218
diff
changeset
|
48 typedef enum USBKeyChangeState { |
fc3b9cb190cc
Adding NKRO support to AVR/DPH.
Jacob Alexander <haata@kiibohd.com>
parents:
218
diff
changeset
|
49 USBKeyChangeState_None = 0x00, |
fc3b9cb190cc
Adding NKRO support to AVR/DPH.
Jacob Alexander <haata@kiibohd.com>
parents:
218
diff
changeset
|
50 USBKeyChangeState_Modifiers = 0x01, |
fc3b9cb190cc
Adding NKRO support to AVR/DPH.
Jacob Alexander <haata@kiibohd.com>
parents:
218
diff
changeset
|
51 USBKeyChangeState_MainKeys = 0x02, |
fc3b9cb190cc
Adding NKRO support to AVR/DPH.
Jacob Alexander <haata@kiibohd.com>
parents:
218
diff
changeset
|
52 USBKeyChangeState_SecondaryKeys = 0x04, |
236
d494b74d5242
Fixed Linux NKRO bitmap bug.
Jacob Alexander <haata@kiibohd.com>
parents:
234
diff
changeset
|
53 USBKeyChangeState_TertiaryKeys = 0x08, |
248
2e098cf8f71d
Fixing Linux NKRO Delete bug
Jacob Alexander <haata@kiibohd.com>
parents:
244
diff
changeset
|
54 USBKeyChangeState_QuartiaryKeys = 0x10, |
2e098cf8f71d
Fixing Linux NKRO Delete bug
Jacob Alexander <haata@kiibohd.com>
parents:
244
diff
changeset
|
55 USBKeyChangeState_System = 0x20, |
2e098cf8f71d
Fixing Linux NKRO Delete bug
Jacob Alexander <haata@kiibohd.com>
parents:
244
diff
changeset
|
56 USBKeyChangeState_Consumer = 0x40, |
2e098cf8f71d
Fixing Linux NKRO Delete bug
Jacob Alexander <haata@kiibohd.com>
parents:
244
diff
changeset
|
57 USBKeyChangeState_All = 0x7F, |
223
fc3b9cb190cc
Adding NKRO support to AVR/DPH.
Jacob Alexander <haata@kiibohd.com>
parents:
218
diff
changeset
|
58 } USBKeyChangeState; |
104
e84738d174bc
Moving USB to Output in preparation for additional Output types.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
59 |
e84738d174bc
Moving USB to Output in preparation for additional Output types.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
60 |
e84738d174bc
Moving USB to Output in preparation for additional Output types.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
61 |
e84738d174bc
Moving USB to Output in preparation for additional Output types.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
62 // ----- Variables ----- |
e84738d174bc
Moving USB to Output in preparation for additional Output types.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
63 |
125
8dab4014c398
Major code cleanup and preparation for PartialMap Macro Module
Jacob Alexander <haata@kiibohd.com>
parents:
123
diff
changeset
|
64 // Variables used to communciate to the output module |
8dab4014c398
Major code cleanup and preparation for PartialMap Macro Module
Jacob Alexander <haata@kiibohd.com>
parents:
123
diff
changeset
|
65 // XXX Even if the output module is not USB, this is internally understood keymapping scheme |
223
fc3b9cb190cc
Adding NKRO support to AVR/DPH.
Jacob Alexander <haata@kiibohd.com>
parents:
218
diff
changeset
|
66 extern uint8_t USBKeys_Modifiers; |
fc3b9cb190cc
Adding NKRO support to AVR/DPH.
Jacob Alexander <haata@kiibohd.com>
parents:
218
diff
changeset
|
67 extern uint8_t USBKeys_Keys[USB_NKRO_BITFIELD_SIZE_KEYS]; |
fc3b9cb190cc
Adding NKRO support to AVR/DPH.
Jacob Alexander <haata@kiibohd.com>
parents:
218
diff
changeset
|
68 extern uint8_t USBKeys_Sent; |
fc3b9cb190cc
Adding NKRO support to AVR/DPH.
Jacob Alexander <haata@kiibohd.com>
parents:
218
diff
changeset
|
69 extern volatile uint8_t USBKeys_LEDs; |
104
e84738d174bc
Moving USB to Output in preparation for additional Output types.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
70 |
223
fc3b9cb190cc
Adding NKRO support to AVR/DPH.
Jacob Alexander <haata@kiibohd.com>
parents:
218
diff
changeset
|
71 extern uint8_t USBKeys_SysCtrl; // 1KRO container for System Control HID table |
fc3b9cb190cc
Adding NKRO support to AVR/DPH.
Jacob Alexander <haata@kiibohd.com>
parents:
218
diff
changeset
|
72 extern uint16_t USBKeys_ConsCtrl; // 1KRO container for Consumer Control HID table |
fc3b9cb190cc
Adding NKRO support to AVR/DPH.
Jacob Alexander <haata@kiibohd.com>
parents:
218
diff
changeset
|
73 |
fc3b9cb190cc
Adding NKRO support to AVR/DPH.
Jacob Alexander <haata@kiibohd.com>
parents:
218
diff
changeset
|
74 extern volatile uint8_t USBKeys_Protocol; // 0 - Boot Mode, 1 - NKRO Mode |
104
e84738d174bc
Moving USB to Output in preparation for additional Output types.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
75 |
e84738d174bc
Moving USB to Output in preparation for additional Output types.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
76 // Misc variables (XXX Some are only properly utilized using AVR) |
223
fc3b9cb190cc
Adding NKRO support to AVR/DPH.
Jacob Alexander <haata@kiibohd.com>
parents:
218
diff
changeset
|
77 extern uint8_t USBKeys_Idle_Config; |
fc3b9cb190cc
Adding NKRO support to AVR/DPH.
Jacob Alexander <haata@kiibohd.com>
parents:
218
diff
changeset
|
78 extern uint8_t USBKeys_Idle_Count; |
fc3b9cb190cc
Adding NKRO support to AVR/DPH.
Jacob Alexander <haata@kiibohd.com>
parents:
218
diff
changeset
|
79 |
fc3b9cb190cc
Adding NKRO support to AVR/DPH.
Jacob Alexander <haata@kiibohd.com>
parents:
218
diff
changeset
|
80 extern USBKeyChangeState USBKeys_Changed; |
104
e84738d174bc
Moving USB to Output in preparation for additional Output types.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
81 |
275
d5bf41d7f7ef
Initial code for USB cable detection
Jacob Alexander <haata@kiibohd.com>
parents:
248
diff
changeset
|
82 extern uint8_t Output_Available; // 0 - Output module not fully functional, 1 - Output module working |
d5bf41d7f7ef
Initial code for USB cable detection
Jacob Alexander <haata@kiibohd.com>
parents:
248
diff
changeset
|
83 |
285
1495b4504a59
Adding outputDebug command
Jacob Alexander <haata@kiibohd.com>
parents:
275
diff
changeset
|
84 extern uint8_t Output_DebugMode; // 0 - Debug disabled, 1 - Debug enabled |
1495b4504a59
Adding outputDebug command
Jacob Alexander <haata@kiibohd.com>
parents:
275
diff
changeset
|
85 |
104
e84738d174bc
Moving USB to Output in preparation for additional Output types.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
86 |
e84738d174bc
Moving USB to Output in preparation for additional Output types.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
87 |
191
3404be65670b
Adding generic layerToggle and USB Key Output capabilities.
Jacob Alexander <haata@kiibohd.com>
parents:
165
diff
changeset
|
88 // ----- Capabilities ----- |
3404be65670b
Adding generic layerToggle and USB Key Output capabilities.
Jacob Alexander <haata@kiibohd.com>
parents:
165
diff
changeset
|
89 |
234
aaf14110ea7b
Adding NKRO and Boot mode capabilities.
Jacob Alexander <haata@kiibohd.com>
parents:
223
diff
changeset
|
90 // Output capabilities |
223
fc3b9cb190cc
Adding NKRO support to AVR/DPH.
Jacob Alexander <haata@kiibohd.com>
parents:
218
diff
changeset
|
91 void Output_consCtrlSend_capability( uint8_t state, uint8_t stateType, uint8_t *args ); |
322
cc09f7e858bf
Adding None capability.
Jacob Alexander <haata@kiibohd.com>
parents:
285
diff
changeset
|
92 void Output_noneSend_capability( uint8_t state, uint8_t stateType, uint8_t *args ); |
223
fc3b9cb190cc
Adding NKRO support to AVR/DPH.
Jacob Alexander <haata@kiibohd.com>
parents:
218
diff
changeset
|
93 void Output_sysCtrlSend_capability( uint8_t state, uint8_t stateType, uint8_t *args ); |
191
3404be65670b
Adding generic layerToggle and USB Key Output capabilities.
Jacob Alexander <haata@kiibohd.com>
parents:
165
diff
changeset
|
94 void Output_usbCodeSend_capability( uint8_t state, uint8_t stateType, uint8_t *args ); |
3404be65670b
Adding generic layerToggle and USB Key Output capabilities.
Jacob Alexander <haata@kiibohd.com>
parents:
165
diff
changeset
|
95 |
234
aaf14110ea7b
Adding NKRO and Boot mode capabilities.
Jacob Alexander <haata@kiibohd.com>
parents:
223
diff
changeset
|
96 // Configuration capabilities |
aaf14110ea7b
Adding NKRO and Boot mode capabilities.
Jacob Alexander <haata@kiibohd.com>
parents:
223
diff
changeset
|
97 void Output_kbdProtocolBoot_capability( uint8_t state, uint8_t stateType, uint8_t *args ); |
aaf14110ea7b
Adding NKRO and Boot mode capabilities.
Jacob Alexander <haata@kiibohd.com>
parents:
223
diff
changeset
|
98 void Output_kbdProtocolNKRO_capability( uint8_t state, uint8_t stateType, uint8_t *args ); |
aaf14110ea7b
Adding NKRO and Boot mode capabilities.
Jacob Alexander <haata@kiibohd.com>
parents:
223
diff
changeset
|
99 |
191
3404be65670b
Adding generic layerToggle and USB Key Output capabilities.
Jacob Alexander <haata@kiibohd.com>
parents:
165
diff
changeset
|
100 |
3404be65670b
Adding generic layerToggle and USB Key Output capabilities.
Jacob Alexander <haata@kiibohd.com>
parents:
165
diff
changeset
|
101 |
104
e84738d174bc
Moving USB to Output in preparation for additional Output types.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
102 // ----- Functions ----- |
e84738d174bc
Moving USB to Output in preparation for additional Output types.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
103 |
125
8dab4014c398
Major code cleanup and preparation for PartialMap Macro Module
Jacob Alexander <haata@kiibohd.com>
parents:
123
diff
changeset
|
104 void Output_setup(); |
8dab4014c398
Major code cleanup and preparation for PartialMap Macro Module
Jacob Alexander <haata@kiibohd.com>
parents:
123
diff
changeset
|
105 void Output_send(); |
122
2bb16439e6ca
Preparing Teensy 3.1 and CLI merge for DPH controller code.
Jacob Alexander <haata@kiibohd.com>
parents:
109
diff
changeset
|
106 |
234
aaf14110ea7b
Adding NKRO and Boot mode capabilities.
Jacob Alexander <haata@kiibohd.com>
parents:
223
diff
changeset
|
107 void Output_flushBuffers(); |
aaf14110ea7b
Adding NKRO and Boot mode capabilities.
Jacob Alexander <haata@kiibohd.com>
parents:
223
diff
changeset
|
108 |
125
8dab4014c398
Major code cleanup and preparation for PartialMap Macro Module
Jacob Alexander <haata@kiibohd.com>
parents:
123
diff
changeset
|
109 void Output_firmwareReload(); |
8dab4014c398
Major code cleanup and preparation for PartialMap Macro Module
Jacob Alexander <haata@kiibohd.com>
parents:
123
diff
changeset
|
110 void Output_softReset(); |
123
0c5d1fe99302
Adding CLI and CDC Serial support for Teensy 2.0 and Teensy 2.0++
Jacob Alexander <haata@kiibohd.com>
parents:
122
diff
changeset
|
111 |
0c5d1fe99302
Adding CLI and CDC Serial support for Teensy 2.0 and Teensy 2.0++
Jacob Alexander <haata@kiibohd.com>
parents:
122
diff
changeset
|
112 // Relies on USB serial module |
125
8dab4014c398
Major code cleanup and preparation for PartialMap Macro Module
Jacob Alexander <haata@kiibohd.com>
parents:
123
diff
changeset
|
113 unsigned int Output_availablechar(); |
123
0c5d1fe99302
Adding CLI and CDC Serial support for Teensy 2.0 and Teensy 2.0++
Jacob Alexander <haata@kiibohd.com>
parents:
122
diff
changeset
|
114 |
125
8dab4014c398
Major code cleanup and preparation for PartialMap Macro Module
Jacob Alexander <haata@kiibohd.com>
parents:
123
diff
changeset
|
115 int Output_getchar(); |
8dab4014c398
Major code cleanup and preparation for PartialMap Macro Module
Jacob Alexander <haata@kiibohd.com>
parents:
123
diff
changeset
|
116 int Output_putchar( char c ); |
8dab4014c398
Major code cleanup and preparation for PartialMap Macro Module
Jacob Alexander <haata@kiibohd.com>
parents:
123
diff
changeset
|
117 int Output_putstr( char* str ); |
104
e84738d174bc
Moving USB to Output in preparation for additional Output types.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
118 |
e84738d174bc
Moving USB to Output in preparation for additional Output types.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
119 #endif |
e84738d174bc
Moving USB to Output in preparation for additional Output types.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
120 |