summaryrefslogtreecommitdiffstats
path: root/keyboards/planck
diff options
context:
space:
mode:
authorJack Humbert <jack.humb@gmail.com>2018-10-26 22:19:23 +0200
committerDrashna Jaelre <drashna@live.com>2018-10-26 23:24:13 +0200
commit85688e5b52112c86895171d3dc8b26610480e932 (patch)
tree03f3f7bf585ebdf158576aeb6a8cf0c8c5319d6f /keyboards/planck
parente22c3992454ade93ccaef70ab077e79a4b2a5ef0 (diff)
downloadqmk_firmware-85688e5b52112c86895171d3dc8b26610480e932.tar.gz
qmk_firmware-85688e5b52112c86895171d3dc8b26610480e932.tar.xz
add support for encoders to core
Diffstat (limited to 'keyboards/planck')
-rw-r--r--keyboards/planck/planck.h2
-rw-r--r--keyboards/planck/rev6/config.h4
-rw-r--r--keyboards/planck/rev6/matrix.c29
-rw-r--r--keyboards/planck/rev6/rules.mk1
4 files changed, 7 insertions, 29 deletions
diff --git a/keyboards/planck/planck.h b/keyboards/planck/planck.h
index f0a12d933..d908d80ec 100644
--- a/keyboards/planck/planck.h
+++ b/keyboards/planck/planck.h
@@ -3,6 +3,8 @@
#include "quantum.h"
+#define encoder_update(clockwise) encoder_update_user(uint8_t index, clockwise)
+
#ifdef __AVR__
#define LAYOUT_planck_mit( \
k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, \
diff --git a/keyboards/planck/rev6/config.h b/keyboards/planck/rev6/config.h
index afd69f7d8..c0fbb412e 100644
--- a/keyboards/planck/rev6/config.h
+++ b/keyboards/planck/rev6/config.h
@@ -43,6 +43,10 @@
* #define UNUSED_PINS
*/
+#define NUMBER_OF_ENCODERS 1
+#define ENCODERS_PAD_A { B12 }
+#define ENCODERS_PAD_B { B13 }
+
#define MUSIC_MAP
#undef AUDIO_VOICES
#undef C6_AUDIO
diff --git a/keyboards/planck/rev6/matrix.c b/keyboards/planck/rev6/matrix.c
index e4ebe48ac..2df588cef 100644
--- a/keyboards/planck/rev6/matrix.c
+++ b/keyboards/planck/rev6/matrix.c
@@ -21,10 +21,6 @@ static matrix_row_t matrix_debouncing[MATRIX_COLS];
static bool debouncing = false;
static uint16_t debouncing_time = 0;
-static uint8_t encoder_state = 0;
-static int8_t encoder_value = 0;
-static int8_t encoder_LUT[] = { 0, -1, 1, 0, 1, 0, 0, -1, -1, 0, 0, 1, 0, 1, -1, 0 };
-
static bool dip_switch[4] = {0, 0, 0, 0};
__attribute__ ((weak))
@@ -53,12 +49,6 @@ void matrix_init(void) {
palSetPadMode(GPIOA, 10, PAL_MODE_INPUT_PULLUP);
palSetPadMode(GPIOB, 9, PAL_MODE_INPUT_PULLUP);
- // encoder setup
- palSetPadMode(GPIOB, 12, PAL_MODE_INPUT_PULLUP);
- palSetPadMode(GPIOB, 13, PAL_MODE_INPUT_PULLUP);
-
- encoder_state = (palReadPad(GPIOB, 12) << 0) | (palReadPad(GPIOB, 13) << 1);
-
// actual matrix setup
palSetPadMode(GPIOB, 11, PAL_MODE_OUTPUT_PUSHPULL);
palSetPadMode(GPIOB, 10, PAL_MODE_OUTPUT_PUSHPULL);
@@ -87,15 +77,8 @@ void matrix_init(void) {
__attribute__ ((weak))
void dip_update(uint8_t index, bool active) { }
-__attribute__ ((weak))
-void encoder_update(bool clockwise) { }
-
bool last_dip_switch[4] = {0};
-#ifndef ENCODER_RESOLUTION
- #define ENCODER_RESOLUTION 4
-#endif
-
uint8_t matrix_scan(void) {
// dip switch
dip_switch[0] = !palReadPad(GPIOB, 14);
@@ -108,18 +91,6 @@ uint8_t matrix_scan(void) {
}
memcpy(last_dip_switch, dip_switch, sizeof(&dip_switch));
- // encoder on B12 and B13
- encoder_state <<= 2;
- encoder_state |= (palReadPad(GPIOB, 12) << 0) | (palReadPad(GPIOB, 13) << 1);
- encoder_value += encoder_LUT[encoder_state & 0xF];
- if (encoder_value >= ENCODER_RESOLUTION) {
- encoder_update(0);
- }
- if (encoder_value <= -ENCODER_RESOLUTION) { // direction is arbitrary here, but this clockwise
- encoder_update(1);
- }
- encoder_value %= ENCODER_RESOLUTION;
-
// actual matrix
for (int col = 0; col < MATRIX_COLS; col++) {
matrix_row_t data = 0;
diff --git a/keyboards/planck/rev6/rules.mk b/keyboards/planck/rev6/rules.mk
index 3603e287b..dce683a7f 100644
--- a/keyboards/planck/rev6/rules.mk
+++ b/keyboards/planck/rev6/rules.mk
@@ -54,3 +54,4 @@ CUSTOM_MATRIX = yes # Custom matrix file
AUDIO_ENABLE = yes
RGBLIGHT_ENABLE = no
# SERIAL_LINK_ENABLE = yes
+ENCODER_ENABLE = yes