#ifndef CONFIG_H
#define CONFIG_H
-/* controller configuration */
-#include "controller_teensy.h"
-
#define VENDOR_ID 0xFEED
#define PRODUCT_ID 0x3333
+#define DEVICE_VER 0x0100
#define MANUFACTURER t.m.k.
#define PRODUCT Sun keyboard converter
#define DESCRIPTION converts Sun keyboard protocol into USB
-
/* matrix size */
#define MATRIX_ROWS 16
#define MATRIX_COLS 8
-
/* key combination for command */
#define IS_COMMAND() ( \
keyboard_report->mods == (MOD_BIT(KC_LALT) | MOD_BIT(KC_RALT)) || \
- keyboard_report->mods == (MOD_BIT(KC_LCTRL) | MOD_BIT(KC_RSHIFT)) \
+ keyboard_report->mods == (MOD_BIT(KC_LGUI) | MOD_BIT(KC_RGUI)) || \
+ keyboard_report->mods == (MOD_BIT(KC_LSHIFT) | MOD_BIT(KC_RSHIFT)) \
)
+/* legacy keymap support */
+#define USE_LEGACY_KEYMAP
+
/* Serial(USART) configuration
* asynchronous, negative logic, 1200baud, no flow control
* 1-start bit, 8-data bit, non parity, 1-stop bit
*/
-#ifdef __AVR_ATmega32U4__
-# define SERIAL_RX_VECT USART1_RX_vect
-# define SERIAL_RX_DATA UDR1
-# define SERIAL_RX_BAUD 1200
-# define SERIAL_RX_UBBR ((F_CPU/(16UL*SERIAL_RX_BAUD))-1)
-# define SERIAL_RX_INIT() do { \
- UBRR1L = (uint8_t) SERIAL_RX_UBBR; \
- UBRR1H = (uint8_t) (SERIAL_RX_UBBR>>8); \
- UCSR1B |= (1<<RXCIE1) | (1<<RXEN1); \
- } while(0)
+#define SERIAL_SOFT_BAUD 1200
+#define SERIAL_SOFT_PARITY_NONE
+#define SERIAL_SOFT_BIT_ORDER_LSB
+#define SERIAL_SOFT_LOGIC_NEGATIVE
+/* RXD Port */
+#define SERIAL_SOFT_RXD_ENABLE
+#define SERIAL_SOFT_RXD_DDR DDRD
+#define SERIAL_SOFT_RXD_PORT PORTD
+#define SERIAL_SOFT_RXD_PIN PIND
+#define SERIAL_SOFT_RXD_BIT 2
+#define SERIAL_SOFT_RXD_VECT INT2_vect
+/* RXD Interupt */
+#ifdef SERIAL_SOFT_LOGIC_NEGATIVE
+/* enable interrupt: INT2(rising edge) */
+#define INTR_TRIG_EDGE ((1<<ISC21)|(1<<ISC20))
#else
-# error "Serial(USART) configuration is needed."
+/* enable interrupt: INT2(falling edge) */
+#define INTR_TRIG_EDGE ((1<<ISC21)|(0<<ISC20))
#endif
+#define SERIAL_SOFT_RXD_INIT() do { \
+ /* pin configuration: input with pull-up */ \
+ SERIAL_SOFT_RXD_DDR &= ~(1<<SERIAL_SOFT_RXD_BIT); \
+ SERIAL_SOFT_RXD_PORT |= (1<<SERIAL_SOFT_RXD_BIT); \
+ EICRA |= INTR_TRIG_EDGE; \
+ EIMSK |= (1<<INT2); \
+ sei(); \
+} while (0)
+#define SERIAL_SOFT_RXD_INT_ENTER()
+#define SERIAL_SOFT_RXD_INT_EXIT() do { \
+ /* clear interrupt flag */ \
+ EIFR = (1<<INTF2); \
+} while (0)
+#define SERIAL_SOFT_RXD_READ() (SERIAL_SOFT_RXD_PIN&(1<<SERIAL_SOFT_RXD_BIT))
+/* TXD Port */
+#define SERIAL_SOFT_TXD_ENABLE
+#define SERIAL_SOFT_TXD_DDR DDRD
+#define SERIAL_SOFT_TXD_PORT PORTD
+#define SERIAL_SOFT_TXD_PIN PIND
+#define SERIAL_SOFT_TXD_BIT 3
+#define SERIAL_SOFT_TXD_HI() do { SERIAL_SOFT_TXD_PORT |= (1<<SERIAL_SOFT_TXD_BIT); } while (0)
+#define SERIAL_SOFT_TXD_LO() do { SERIAL_SOFT_TXD_PORT &= ~(1<<SERIAL_SOFT_TXD_BIT); } while (0)
+#define SERIAL_SOFT_TXD_INIT() do { \
+ /* pin configuration: output */ \
+ SERIAL_SOFT_TXD_DDR |= (1<<SERIAL_SOFT_TXD_BIT); \
+ /* idle */ \
+ SERIAL_SOFT_TXD_ON(); \
+} while (0)
#endif