Browse Source

Make quantum/split_common/serial.[ch] configurable (#4419)

* add temporary compile test shell script

* add 'CONFIG_H += serial_backward_compatibility.h' into common_features.mk:SPLIT_KEYBOARD block

* add quantum/split_common/serial_backward_compatibility.h

SERIAL_PIN_PORT and other PIN define move to serial_backward_compatibility.h
SERIAL_BACKLIT_START move to split_util.h

* quantum/split_common/serial.c change to helix-serial.c style serial configuration

* add temporary file quantum/split_common/split-keyboards-list.txt

* add '#define SOFT_SERIAL_PIN D0' to keyboards/6lit/config.h

* add '#define SOFT_SERIAL_PIN D0' to keyboards/divergetm2/config.h

* add '#define SOFT_SERIAL_PIN D0' to keyboards/ergotravel/rev1/config.h

* add '#define SOFT_SERIAL_PIN D0' to keyboards/foobar/config.h

* add '#define SOFT_SERIAL_PIN D0' to keyboards/handwired/dactyl_manuform/config.h

* add '#define SOFT_SERIAL_PIN D0' to keyboards/handwired/qc60/config.h

* add '//#define SOFT_SERIAL_PIN D0' to keyboards/handwired/xealous/config.h

* add '#define SOFT_SERIAL_PIN D0' to keyboards/iris/rev*/config.h

* add '//#define SOFT_SERIAL_PIN D0' to keyboards/lets_split_eh/config.h

* add '#define SOFT_SERIAL_PIN D0' to keyboards/levinson/rev*/config.h

* add '#define SOFT_SERIAL_PIN D0' to keyboards/miniaxe/config.h

* add '#define SOFT_SERIAL_PIN D0' to keyboards/nyquist/rev?/config.h

* add '#define SOFT_SERIAL_PIN D0' to keyboards/quefrency/rev1/config.h

* add '#define SOFT_SERIAL_PIN D0' to keyboards/qwertyydox/config.h,keyboards/qwertyydox/rev1/config.h

* add '#define SOFT_SERIAL_PIN D0' to keyboards/redox/rev1/config.h

* add '#define SOFT_SERIAL_PIN D0' to keyboards/rorschach/rev1/config.h

* remove '#define SOFT_SERIAL_PIN D0' from quantum/split_common/serial_backward_compatibility.h

* remove temporary file quantum/split_common/split-keyboards-list.txt

* remove temporary compile test shell script

* Revert "remove temporary compile test shell script"

This reverts commit 15b0021b40.

* update quantum/split_common/compile_split_test.sh for new keyboard test

* add '#define SOFT_SERIAL_PIN D0' to keyboards/diverge3/config.h

* add '#define SOFT_SERIAL_PIN D0' to keyboards/40percentclub/25/config.h

* remove temporary compile test shell script

* update docs/config_options.md, quantum/template/avr/config.h

* fix quantum/template/avr/config.h

* fix typo  docs/config_options.md
pull/4650/head
Takeshi ISHII 5 years ago
committed by Drashna Jaelre
parent
commit
155e9310ff
32 changed files with 165 additions and 14 deletions
  1. +5
    -0
      common_features.mk
  2. +3
    -0
      docs/config_options.md
  3. +2
    -0
      keyboards/40percentclub/25/config.h
  4. +3
    -0
      keyboards/40percentclub/6lit/config.h
  5. +3
    -0
      keyboards/40percentclub/foobar/config.h
  6. +3
    -0
      keyboards/diverge3/config.h
  7. +3
    -0
      keyboards/divergetm2/config.h
  8. +3
    -0
      keyboards/ergotravel/rev1/config.h
  9. +3
    -0
      keyboards/handwired/dactyl_manuform/config.h
  10. +3
    -0
      keyboards/handwired/qc60/config.h
  11. +4
    -1
      keyboards/handwired/xealous/config.h
  12. +3
    -0
      keyboards/iris/rev1/config.h
  13. +3
    -0
      keyboards/iris/rev1_led/config.h
  14. +3
    -0
      keyboards/iris/rev2/config.h
  15. +3
    -0
      keyboards/iris/rev3/config.h
  16. +3
    -0
      keyboards/lets_split_eh/config.h
  17. +3
    -0
      keyboards/levinson/rev1/config.h
  18. +3
    -0
      keyboards/levinson/rev2/config.h
  19. +3
    -0
      keyboards/miniaxe/config.h
  20. +3
    -0
      keyboards/nyquist/rev1/config.h
  21. +3
    -0
      keyboards/nyquist/rev2/config.h
  22. +3
    -0
      keyboards/nyquist/rev3/config.h
  23. +3
    -0
      keyboards/quefrency/rev1/config.h
  24. +3
    -0
      keyboards/qwertyydox/config.h
  25. +3
    -0
      keyboards/qwertyydox/rev1/config.h
  26. +3
    -0
      keyboards/redox/rev1/config.h
  27. +3
    -0
      keyboards/rorschach/rev1/config.h
  28. +53
    -0
      quantum/split_common/serial.c
  29. +10
    -13
      quantum/split_common/serial.h
  30. +11
    -0
      quantum/split_common/serial_backward_compatibility.h
  31. +3
    -0
      quantum/split_common/split_util.h
  32. +5
    -0
      quantum/template/avr/config.h

+ 5
- 0
common_features.mk View File

@ -263,6 +263,11 @@ ifneq ($(strip $(CUSTOM_MATRIX)), yes)
endif
ifeq ($(strip $(SPLIT_KEYBOARD)), yes)
SERIAL_BACKWARD_COMPAT := $(wildcard $(QUANTUM_DIR)/split_common/serial_backward_compatibility.h)
ifneq ($(SERIAL_BACKWARD_COMPAT),)
CONFIG_H += $(SERIAL_BACKWARD_COMPAT)
# $(info CONFIG_H=$(CONFIG_H))
endif
OPT_DEFS += -DSPLIT_KEYBOARD
QUANTUM_SRC += $(QUANTUM_DIR)/split_common/split_flags.c \
$(QUANTUM_DIR)/split_common/split_util.c \


+ 3
- 0
docs/config_options.md View File

@ -198,6 +198,9 @@ Split Keyboard specific options, make sure you have 'SPLIT_KEYBOARD = yes' in yo
* `#define USE_I2C`
* For using I2C instead of Serial (defaults to serial)
* `#define SOFT_SERIAL_PIN D0`
* When using serial, define this. `D0` or `D1`,`D2`,`D3`,`E6`.
# The `rules.mk` File
This is a [make](https://www.gnu.org/software/make/manual/make.html) file that is included by the top-level `Makefile`. It is used to set some information about the MCU that we will be compiling for as well as enabling and disabling certain features.


+ 2
- 0
keyboards/40percentclub/25/config.h View File

@ -27,6 +27,8 @@
#define DESCRIPTION A split 50 key keyboard
#define USE_SERIAL
/* serial.c configuration for split keyboard */
#define SOFT_SERIAL_PIN D0
/* Select hand configuration */
#define MASTER_LEFT


+ 3
- 0
keyboards/40percentclub/6lit/config.h View File

@ -28,6 +28,9 @@
#define USE_SERIAL
/* serial.c configuration for split keyboard */
#define SOFT_SERIAL_PIN D0
/* Select hand configuration */
#define MASTER_LEFT
//#define MASTER_RIGHT


+ 3
- 0
keyboards/40percentclub/foobar/config.h View File

@ -28,6 +28,9 @@
#define USE_SERIAL
/* serial.c configuration for split keyboard */
#define SOFT_SERIAL_PIN D0
/* Select hand configuration */
#define MASTER_LEFT
//#define MASTER_RIGHT


+ 3
- 0
keyboards/diverge3/config.h View File

@ -57,6 +57,9 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */
#define DEBOUNCING_DELAY 5
/* serial.c configuration for split keyboard */
#define SOFT_SERIAL_PIN D0
/* define if matrix has ghost (lacks anti-ghosting diodes) */
//#define MATRIX_HAS_GHOST


+ 3
- 0
keyboards/divergetm2/config.h View File

@ -59,6 +59,9 @@
/* Locking resynchronize hack */
#define LOCKING_RESYNC_ENABLE
/* serial.c configuration for split keyboard */
#define SOFT_SERIAL_PIN D0
/*
* Magic Key Options
*


+ 3
- 0
keyboards/ergotravel/rev1/config.h View File

@ -56,6 +56,9 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
keyboard_report->mods == (MOD_BIT(KC_LSHIFT) | MOD_BIT(KC_RSHIFT)) \
)
/* serial.c configuration for split keyboard */
#define SOFT_SERIAL_PIN D0
#define BACKLIGHT_PIN B5
#define BACKLIGHT_LEVELS 5


+ 3
- 0
keyboards/handwired/dactyl_manuform/config.h View File

@ -38,6 +38,9 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
/* Set 0 if debouncing isn't needed */
#define DEBOUNCING_DELAY 5
/* serial.c configuration for split keyboard */
#define SOFT_SERIAL_PIN D0
/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */
#define LOCKING_SUPPORT_ENABLE
/* Locking resynchronize hack */


+ 3
- 0
keyboards/handwired/qc60/config.h View File

@ -18,6 +18,9 @@
/* Set 0 if debouncing isn't needed */
#define DEBOUNCING_DELAY 5
/* serial.c configuration for split keyboard */
#define SOFT_SERIAL_PIN D0
/* key combination for command */
#define IS_COMMAND() ( \
keyboard_report->mods == (MOD_BIT(KC_LSHIFT) | MOD_BIT(KC_RSHIFT)) \


+ 4
- 1
keyboards/handwired/xealous/config.h View File

@ -21,10 +21,13 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
/* Use I2C or Serial, not both */
// #define USE_SERIAL
#define USE_I2C
#define SCL_CLOCK 400000UL
// #define USE_SERIAL
/* serial.c configuration for split keyboard */
// #define SOFT_SERIAL_PIN D0
/* Select hand configuration */
#define MASTER_LEFT


+ 3
- 0
keyboards/iris/rev1/config.h View File

@ -48,6 +48,9 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
/* Set 0 if debouncing isn't needed */
#define DEBOUNCING_DELAY 5
/* serial.c configuration for split keyboard */
#define SOFT_SERIAL_PIN D0
/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */
#define LOCKING_SUPPORT_ENABLE
/* Locking resynchronize hack */


+ 3
- 0
keyboards/iris/rev1_led/config.h View File

@ -48,6 +48,9 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
/* Set 0 if debouncing isn't needed */
#define DEBOUNCING_DELAY 5
/* serial.c configuration for split keyboard */
#define SOFT_SERIAL_PIN D0
/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */
#define LOCKING_SUPPORT_ENABLE
/* Locking resynchronize hack */


+ 3
- 0
keyboards/iris/rev2/config.h View File

@ -48,6 +48,9 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
/* Set 0 if debouncing isn't needed */
#define DEBOUNCING_DELAY 5
/* serial.c configuration for split keyboard */
#define SOFT_SERIAL_PIN D0
/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */
#define LOCKING_SUPPORT_ENABLE
/* Locking resynchronize hack */


+ 3
- 0
keyboards/iris/rev3/config.h View File

@ -48,6 +48,9 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
/* Set 0 if debouncing isn't needed */
#define DEBOUNCING_DELAY 5
/* serial.c configuration for split keyboard */
#define SOFT_SERIAL_PIN D0
/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */
#define LOCKING_SUPPORT_ENABLE
/* Locking resynchronize hack */


+ 3
- 0
keyboards/lets_split_eh/config.h View File

@ -36,6 +36,9 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
/* Set 0 if debouncing isn't needed */
#define DEBOUNCING_DELAY 5
/* serial.c configuration for split keyboard */
//#define SOFT_SERIAL_PIN D0
/* key combination for command */
#define IS_COMMAND() ( \
keyboard_report->mods == (MOD_BIT(KC_LSHIFT) | MOD_BIT(KC_RSHIFT)) \


+ 3
- 0
keyboards/levinson/rev1/config.h View File

@ -41,6 +41,9 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
/* Set 0 if debouncing isn't needed */
#define DEBOUNCING_DELAY 5
/* serial.c configuration for split keyboard */
#define SOFT_SERIAL_PIN D0
/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */
#define LOCKING_SUPPORT_ENABLE
/* Locking resynchronize hack */


+ 3
- 0
keyboards/levinson/rev2/config.h View File

@ -41,6 +41,9 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
/* Set 0 if debouncing isn't needed */
#define DEBOUNCING_DELAY 5
/* serial.c configuration for split keyboard */
#define SOFT_SERIAL_PIN D0
/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */
#define LOCKING_SUPPORT_ENABLE
/* Locking resynchronize hack */


+ 3
- 0
keyboards/miniaxe/config.h View File

@ -237,6 +237,9 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
/* Serial settings */
#define USE_SERIAL
/* serial.c configuration for split keyboard */
#define SOFT_SERIAL_PIN D0
//#define EE_HANDS
#define I2C_MASTER_LEFT
//#define I2C_MASTER_RIGHT


+ 3
- 0
keyboards/nyquist/rev1/config.h View File

@ -46,6 +46,9 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
/* Set 0 if debouncing isn't needed */
#define DEBOUNCING_DELAY 5
/* serial.c configuration for split keyboard */
#define SOFT_SERIAL_PIN D0
/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */
#define LOCKING_SUPPORT_ENABLE
/* Locking resynchronize hack */


+ 3
- 0
keyboards/nyquist/rev2/config.h View File

@ -43,6 +43,9 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
/* Set 0 if debouncing isn't needed */
#define DEBOUNCING_DELAY 5
/* serial.c configuration for split keyboard */
#define SOFT_SERIAL_PIN D0
/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */
#define LOCKING_SUPPORT_ENABLE
/* Locking resynchronize hack */


+ 3
- 0
keyboards/nyquist/rev3/config.h View File

@ -43,6 +43,9 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
/* Set 0 if debouncing isn't needed */
#define DEBOUNCING_DELAY 5
/* serial.c configuration for split keyboard */
#define SOFT_SERIAL_PIN D0
/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */
#define LOCKING_SUPPORT_ENABLE
/* Locking resynchronize hack */


+ 3
- 0
keyboards/quefrency/rev1/config.h View File

@ -41,6 +41,9 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
/* Set 0 if debouncing isn't needed */
#define DEBOUNCING_DELAY 5
/* serial.c configuration for split keyboard */
#define SOFT_SERIAL_PIN D0
/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */
#define LOCKING_SUPPORT_ENABLE
/* Locking resynchronize hack */


+ 3
- 0
keyboards/qwertyydox/config.h View File

@ -49,6 +49,9 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
/* Set 0 if debouncing isn't needed */
#define DEBOUNCING_DELAY 5
/* serial.c configuration for split keyboard */
#define SOFT_SERIAL_PIN D0
/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */
#define LOCKING_SUPPORT_ENABLE
/* Locking resynchronize hack */


+ 3
- 0
keyboards/qwertyydox/rev1/config.h View File

@ -49,6 +49,9 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
/* Set 0 if debouncing isn't needed */
#define DEBOUNCING_DELAY 5
/* serial.c configuration for split keyboard */
#define SOFT_SERIAL_PIN D0
/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */
#define LOCKING_SUPPORT_ENABLE
/* Locking resynchronize hack */


+ 3
- 0
keyboards/redox/rev1/config.h View File

@ -49,6 +49,9 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
/* Set 0 if debouncing isn't needed */
#define DEBOUNCING_DELAY 5
/* serial.c configuration for split keyboard */
#define SOFT_SERIAL_PIN D0
/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */
#define LOCKING_SUPPORT_ENABLE
/* Locking resynchronize hack */


+ 3
- 0
keyboards/rorschach/rev1/config.h View File

@ -42,6 +42,9 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
/* Set 0 if debouncing isn't needed */
#define DEBOUNCING_DELAY 5
/* serial.c configuration for split keyboard */
#define SOFT_SERIAL_PIN D0
/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */
#define LOCKING_SUPPORT_ENABLE
/* Locking resynchronize hack */


+ 53
- 0
quantum/split_common/serial.c View File

@ -14,6 +14,59 @@
#ifndef USE_I2C
#ifndef SOFT_SERIAL_PIN
#error quantum/split_common/serial.c need SOFT_SERIAL_PIN define
#endif
#ifdef __AVR_ATmega32U4__
// if using ATmega32U4 I2C, can not use PD0 and PD1 in soft serial.
#ifdef USE_I2C
#if SOFT_SERIAL_PIN == D0 || SOFT_SERIAL_PIN == D1
#error Using ATmega32U4 I2C, so can not use PD0, PD1
#endif
#endif
#if SOFT_SERIAL_PIN >= D0 && SOFT_SERIAL_PIN <= D3
#define SERIAL_PIN_DDR DDRD
#define SERIAL_PIN_PORT PORTD
#define SERIAL_PIN_INPUT PIND
#if SOFT_SERIAL_PIN == D0
#define SERIAL_PIN_MASK _BV(PD0)
#define EIMSK_BIT _BV(INT0)
#define EICRx_BIT (~(_BV(ISC00) | _BV(ISC01)))
#define SERIAL_PIN_INTERRUPT INT0_vect
#elif SOFT_SERIAL_PIN == D1
#define SERIAL_PIN_MASK _BV(PD1)
#define EIMSK_BIT _BV(INT1)
#define EICRx_BIT (~(_BV(ISC10) | _BV(ISC11)))
#define SERIAL_PIN_INTERRUPT INT1_vect
#elif SOFT_SERIAL_PIN == D2
#define SERIAL_PIN_MASK _BV(PD2)
#define EIMSK_BIT _BV(INT2)
#define EICRx_BIT (~(_BV(ISC20) | _BV(ISC21)))
#define SERIAL_PIN_INTERRUPT INT2_vect
#elif SOFT_SERIAL_PIN == D3
#define SERIAL_PIN_MASK _BV(PD3)
#define EIMSK_BIT _BV(INT3)
#define EICRx_BIT (~(_BV(ISC30) | _BV(ISC31)))
#define SERIAL_PIN_INTERRUPT INT3_vect
#endif
#elif SOFT_SERIAL_PIN == E6
#define SERIAL_PIN_DDR DDRE
#define SERIAL_PIN_PORT PORTE
#define SERIAL_PIN_INPUT PINE
#define SERIAL_PIN_MASK _BV(PE6)
#define EIMSK_BIT _BV(INT6)
#define EICRx_BIT (~(_BV(ISC60) | _BV(ISC61)))
#define SERIAL_PIN_INTERRUPT INT6_vect
#else
#error invalid SOFT_SERIAL_PIN value
#endif
#else
#error serial.c now support ATmega32U4 only
#endif
// Serial pulse period in microseconds. Its probably a bad idea to lower this
// value.
#define SERIAL_DELAY 24


+ 10
- 13
quantum/split_common/serial.h View File

@ -1,21 +1,18 @@
#ifndef MY_SERIAL_H
#define MY_SERIAL_H
#include "config.h"
#include <stdbool.h>
/* TODO: some defines for interrupt setup */
#define SERIAL_PIN_DDR DDRD
#define SERIAL_PIN_PORT PORTD
#define SERIAL_PIN_INPUT PIND
#define SERIAL_PIN_MASK _BV(PD0)
#define SERIAL_PIN_INTERRUPT INT0_vect
#define SERIAL_SLAVE_BUFFER_LENGTH MATRIX_ROWS/2
#define SERIAL_MASTER_BUFFER_LENGTH 1
// Address location defines
#define SERIAL_BACKLIT_START 0x00
// /////////////////////////////////////////////////////////////////
// Need Soft Serial defines in config.h
// /////////////////////////////////////////////////////////////////
// ex.
// /* Configuration of lower interface with the lower layer(hardware) of serial.c */
// #define SOFT_SERIAL_PIN ?? // ?? = D0,D1,D2,D3,E6
//
// /* Configuration of upper interface with the upper layer of serial.c */
// #define SERIAL_SLAVE_BUFFER_LENGTH MATRIX_ROWS/2
// #define SERIAL_MASTER_BUFFER_LENGTH 1
// Buffers for master - slave communication
extern volatile uint8_t serial_slave_buffer[SERIAL_SLAVE_BUFFER_LENGTH];


+ 11
- 0
quantum/split_common/serial_backward_compatibility.h View File

@ -0,0 +1,11 @@
/* serial.h backward compatibility */
// #ifndef SOFT_SERIAL_PIN
// #define SOFT_SERIAL_PIN D0
// #endif
#ifndef SERIAL_SLAVE_BUFFER_LENGTH
#define SERIAL_SLAVE_BUFFER_LENGTH MATRIX_ROWS/2
#define SERIAL_MASTER_BUFFER_LENGTH 1
#endif

+ 3
- 0
quantum/split_common/split_util.h View File

@ -7,6 +7,9 @@
#include <stdlib.h>
#include "eeconfig.h"
// backlight level store index in serial_master_buffer[] for slave to read
#define SERIAL_BACKLIT_START 0x00
#define SLAVE_I2C_ADDRESS 0x32
extern volatile bool isLeftHand;


+ 5
- 0
quantum/template/avr/config.h View File

@ -48,6 +48,11 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
/* COL2ROW, ROW2COL, or CUSTOM_MATRIX */
#define DIODE_DIRECTION COL2ROW
/*
* Split Keyboard specific options, make sure you have 'SPLIT_KEYBOARD = yes' in your rules.mk, and define SOFT_SERIAL_PIN.
*/
#define SOFT_SERIAL_PIN D0 // or D1, D2, D3, E6
// #define BACKLIGHT_PIN B7
// #define BACKLIGHT_BREATHING
// #define BACKLIGHT_LEVELS 3


Loading…
Cancel
Save