]> git.donarmstrong.com Git - qmk_firmware.git/blob - keyboard/planck/config.h
bluetooth
[qmk_firmware.git] / keyboard / planck / config.h
1 /*
2 Copyright 2012 Jun Wako <wakojun@gmail.com>
3
4 This program is free software: you can redistribute it and/or modify
5 it under the terms of the GNU General Public License as published by
6 the Free Software Foundation, either version 2 of the License, or
7 (at your option) any later version.
8
9 This program is distributed in the hope that it will be useful,
10 but WITHOUT ANY WARRANTY; without even the implied warranty of
11 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
12 GNU General Public License for more details.
13
14 You should have received a copy of the GNU General Public License
15 along with this program.  If not, see <http://www.gnu.org/licenses/>.
16 */
17
18 #ifndef CONFIG_H
19 #define CONFIG_H
20
21 #include "config_definitions.h"
22
23 /* USB Device descriptor parameter */
24 #define VENDOR_ID       0xFEED
25 #define PRODUCT_ID      0x6060
26 #define DEVICE_VER      0x0001
27 #define MANUFACTURER    Ortholinear Keyboards
28 #define PRODUCT         The Planck Keyboard
29 #define DESCRIPTION     A compact ortholinear keyboard
30
31 /* key matrix size */
32 #define MATRIX_ROWS 4
33 #define MATRIX_COLS 12
34
35 /* Planck PCB default pin-out */
36 #define COLS (int []){ F1, F0, B0, C7, F4, F5, F6, F7, D4, D6, B4, D7 }
37 #define ROWS (int []){ D0, D5, B5, B6 }
38
39 /* COL2ROW or ROW2COL */
40 #define DIODE_DIRECTION COL2ROW
41
42 /* define if matrix has ghost */
43 //#define MATRIX_HAS_GHOST
44
45 /* number of backlight levels */
46 #define BACKLIGHT_LEVELS 3
47
48 /* Set 0 if debouncing isn't needed */
49 #define DEBOUNCE    5
50
51 /* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */
52 #define LOCKING_SUPPORT_ENABLE
53 /* Locking resynchronize hack */
54 #define LOCKING_RESYNC_ENABLE
55
56 /* key combination for command */
57 #define IS_COMMAND() ( \
58     keyboard_report->mods == (MOD_BIT(KC_LSHIFT) | MOD_BIT(KC_RSHIFT)) \
59 )
60
61 #ifdef BLUETOOTH_ENABLE
62 #ifdef __AVR_ATmega32U4__
63     #define SERIAL_UART_BAUD       9600
64     #define SERIAL_UART_DATA       UDR1
65     #define SERIAL_UART_UBRR       ((F_CPU/(16UL*SERIAL_UART_BAUD))-1)
66     #define SERIAL_UART_RXD_VECT   USART1_RX_vect
67     #define SERIAL_UART_TXD_READY  (UCSR1A&(1<<UDRE1))
68     #define SERIAL_UART_INIT()     do { \
69         UBRR1L = (uint8_t) SERIAL_UART_UBRR;       /* baud rate */ \
70         UBRR1H = (uint8_t) (SERIAL_UART_UBRR>>8);  /* baud rate */ \
71         UCSR1B = (1<<TXEN1);                /* TX: enable */ \
72         UCSR1C = (0<<UPM11) | (0<<UPM10) | /* parity: none(00), even(01), odd(11) */ \
73                  (0<<UCSZ12) | (1<<UCSZ11) | (1<<UCSZ10); /* data-8bit(011) */ \
74                 sei(); \
75     } while(0)
76 #else
77 #   error "USART configuration is needed."
78 #endif
79
80
81 // I'm fairly sure these aren't needed, but oh well - Jack
82
83 /*
84  * PS/2 Interrupt configuration
85  */
86 #ifdef PS2_USE_INT
87 /* uses INT1 for clock line(ATMega32U4) */
88 #define PS2_CLOCK_PORT  PORTD
89 #define PS2_CLOCK_PIN   PIND
90 #define PS2_CLOCK_DDR   DDRD
91 #define PS2_CLOCK_BIT   1
92
93 #define PS2_DATA_PORT   PORTD
94 #define PS2_DATA_PIN    PIND
95 #define PS2_DATA_DDR    DDRD
96 #define PS2_DATA_BIT    0
97
98 #define PS2_INT_INIT()  do {    \
99     EICRA |= ((1<<ISC11) |      \
100               (0<<ISC10));      \
101 } while (0)
102 #define PS2_INT_ON()  do {      \
103     EIMSK |= (1<<INT1);         \
104 } while (0)
105 #define PS2_INT_OFF() do {      \
106     EIMSK &= ~(1<<INT1);        \
107 } while (0)
108 #define PS2_INT_VECT    INT1_vect
109 #endif
110
111 /*
112  * PS/2 Busywait configuration
113  */
114 #ifdef PS2_USE_BUSYWAIT
115 #define PS2_CLOCK_PORT  PORTD
116 #define PS2_CLOCK_PIN   PIND
117 #define PS2_CLOCK_DDR   DDRD
118 #define PS2_CLOCK_BIT   1
119
120 #define PS2_DATA_PORT   PORTD
121 #define PS2_DATA_PIN    PIND
122 #define PS2_DATA_DDR    DDRD
123 #define PS2_DATA_BIT    0
124 #endif
125
126 #endif
127
128 /*
129  * Feature disable options
130  *  These options are also useful to firmware size reduction.
131  */
132
133 /* disable debug print */
134 // #define NO_DEBUG
135
136 /* disable print */
137 // #define NO_PRINT
138
139 /* disable action features */
140 //#define NO_ACTION_LAYER
141 //#define NO_ACTION_TAPPING
142 //#define NO_ACTION_ONESHOT
143 //#define NO_ACTION_MACRO
144 //#define NO_ACTION_FUNCTION
145
146 #endif