diff options
| author | skullY <skullydazed@gmail.com> | 2019-08-30 11:19:03 -0700 |
|---|---|---|
| committer | skullydazed <skullydazed@users.noreply.github.com> | 2019-08-30 15:01:52 -0700 |
| commit | b624f32f944acdc59dcb130674c09090c5c404cb (patch) | |
| tree | bc13adbba137d122d9a2c2fb2fafcbb08ac10e25 /quantum/encoder.c | |
| parent | 61af76a10d00aba185b8338604171de490a13e3b (diff) | |
| download | qmk_firmware-b624f32f944acdc59dcb130674c09090c5c404cb.tar.gz qmk_firmware-b624f32f944acdc59dcb130674c09090c5c404cb.zip | |
clang-format changes
Diffstat (limited to 'quantum/encoder.c')
| -rw-r--r-- | quantum/encoder.c | 88 |
1 files changed, 40 insertions, 48 deletions
diff --git a/quantum/encoder.c b/quantum/encoder.c index 10d8cf7da..b3b1cd9f2 100644 --- a/quantum/encoder.c +++ b/quantum/encoder.c | |||
| @@ -17,27 +17,25 @@ | |||
| 17 | 17 | ||
| 18 | #include "encoder.h" | 18 | #include "encoder.h" |
| 19 | #ifdef SPLIT_KEYBOARD | 19 | #ifdef SPLIT_KEYBOARD |
| 20 | #include "split_util.h" | 20 | # include "split_util.h" |
| 21 | #endif | 21 | #endif |
| 22 | 22 | ||
| 23 | // for memcpy | 23 | // for memcpy |
| 24 | #include <string.h> | 24 | #include <string.h> |
| 25 | 25 | ||
| 26 | |||
| 27 | #ifndef ENCODER_RESOLUTION | 26 | #ifndef ENCODER_RESOLUTION |
| 28 | #define ENCODER_RESOLUTION 4 | 27 | # define ENCODER_RESOLUTION 4 |
| 29 | #endif | 28 | #endif |
| 30 | 29 | ||
| 31 | #if !defined(ENCODERS_PAD_A) || !defined(ENCODERS_PAD_B) | 30 | #if !defined(ENCODERS_PAD_A) || !defined(ENCODERS_PAD_B) |
| 32 | #error "No encoder pads defined by ENCODERS_PAD_A and ENCODERS_PAD_B" | 31 | # error "No encoder pads defined by ENCODERS_PAD_A and ENCODERS_PAD_B" |
| 33 | #endif | 32 | #endif |
| 34 | 33 | ||
| 35 | 34 | #define NUMBER_OF_ENCODERS (sizeof(encoders_pad_a) / sizeof(pin_t)) | |
| 36 | #define NUMBER_OF_ENCODERS (sizeof(encoders_pad_a)/sizeof(pin_t)) | ||
| 37 | static pin_t encoders_pad_a[] = ENCODERS_PAD_A; | 35 | static pin_t encoders_pad_a[] = ENCODERS_PAD_A; |
| 38 | static pin_t encoders_pad_b[] = ENCODERS_PAD_B; | 36 | static pin_t encoders_pad_b[] = ENCODERS_PAD_B; |
| 39 | 37 | ||
| 40 | static int8_t encoder_LUT[] = { 0, -1, 1, 0, 1, 0, 0, -1, -1, 0, 0, 1, 0, 1, -1, 0 }; | 38 | static int8_t encoder_LUT[] = {0, -1, 1, 0, 1, 0, 0, -1, -1, 0, 0, 1, 0, 1, -1, 0}; |
| 41 | 39 | ||
| 42 | static uint8_t encoder_state[NUMBER_OF_ENCODERS] = {0}; | 40 | static uint8_t encoder_state[NUMBER_OF_ENCODERS] = {0}; |
| 43 | 41 | ||
| @@ -48,64 +46,58 @@ static int8_t encoder_value[NUMBER_OF_ENCODERS * 2] = {0}; | |||
| 48 | static int8_t encoder_value[NUMBER_OF_ENCODERS] = {0}; | 46 | static int8_t encoder_value[NUMBER_OF_ENCODERS] = {0}; |
| 49 | #endif | 47 | #endif |
| 50 | 48 | ||
| 51 | __attribute__ ((weak)) | 49 | __attribute__((weak)) void encoder_update_user(int8_t index, bool clockwise) {} |
| 52 | void encoder_update_user(int8_t index, bool clockwise) { } | ||
| 53 | 50 | ||
| 54 | __attribute__ ((weak)) | 51 | __attribute__((weak)) void encoder_update_kb(int8_t index, bool clockwise) { encoder_update_user(index, clockwise); } |
| 55 | void encoder_update_kb(int8_t index, bool clockwise) { | ||
| 56 | encoder_update_user(index, clockwise); | ||
| 57 | } | ||
| 58 | 52 | ||
| 59 | void encoder_init(void) { | 53 | void encoder_init(void) { |
| 60 | #if defined(SPLIT_KEYBOARD) && defined(ENCODERS_PAD_A_RIGHT) && defined(ENCODERS_PAD_B_RIGHT) | 54 | #if defined(SPLIT_KEYBOARD) && defined(ENCODERS_PAD_A_RIGHT) && defined(ENCODERS_PAD_B_RIGHT) |
| 61 | if (!isLeftHand) { | 55 | if (!isLeftHand) { |
| 62 | const pin_t encoders_pad_a_right[] = ENCODERS_PAD_A_RIGHT; | 56 | const pin_t encoders_pad_a_right[] = ENCODERS_PAD_A_RIGHT; |
| 63 | const pin_t encoders_pad_b_right[] = ENCODERS_PAD_B_RIGHT; | 57 | const pin_t encoders_pad_b_right[] = ENCODERS_PAD_B_RIGHT; |
| 64 | for (uint8_t i = 0; i < NUMBER_OF_ENCODERS; i++) { | 58 | for (uint8_t i = 0; i < NUMBER_OF_ENCODERS; i++) { |
| 65 | encoders_pad_a[i] = encoders_pad_a_right[i]; | 59 | encoders_pad_a[i] = encoders_pad_a_right[i]; |
| 66 | encoders_pad_b[i] = encoders_pad_b_right[i]; | 60 | encoders_pad_b[i] = encoders_pad_b_right[i]; |
| 61 | } | ||
| 67 | } | 62 | } |
| 68 | } | ||
| 69 | #endif | 63 | #endif |
| 70 | 64 | ||
| 71 | for (int i = 0; i < NUMBER_OF_ENCODERS; i++) { | 65 | for (int i = 0; i < NUMBER_OF_ENCODERS; i++) { |
| 72 | setPinInputHigh(encoders_pad_a[i]); | 66 | setPinInputHigh(encoders_pad_a[i]); |
| 73 | setPinInputHigh(encoders_pad_b[i]); | 67 | setPinInputHigh(encoders_pad_b[i]); |
| 74 | 68 | ||
| 75 | encoder_state[i] = (readPin(encoders_pad_a[i]) << 0) | (readPin(encoders_pad_b[i]) << 1); | 69 | encoder_state[i] = (readPin(encoders_pad_a[i]) << 0) | (readPin(encoders_pad_b[i]) << 1); |
| 76 | } | 70 | } |
| 77 | } | 71 | } |
| 78 | 72 | ||
| 79 | void encoder_read(void) { | 73 | void encoder_read(void) { |
| 80 | for (int i = 0; i < NUMBER_OF_ENCODERS; i++) { | 74 | for (int i = 0; i < NUMBER_OF_ENCODERS; i++) { |
| 81 | encoder_state[i] <<= 2; | 75 | encoder_state[i] <<= 2; |
| 82 | encoder_state[i] |= (readPin(encoders_pad_a[i]) << 0) | (readPin(encoders_pad_b[i]) << 1); | 76 | encoder_state[i] |= (readPin(encoders_pad_a[i]) << 0) | (readPin(encoders_pad_b[i]) << 1); |
| 83 | encoder_value[i] += encoder_LUT[encoder_state[i] & 0xF]; | 77 | encoder_value[i] += encoder_LUT[encoder_state[i] & 0xF]; |
| 84 | if (encoder_value[i] >= ENCODER_RESOLUTION) { | 78 | if (encoder_value[i] >= ENCODER_RESOLUTION) { |
| 85 | encoder_update_kb(i, false); | 79 | encoder_update_kb(i, false); |
| 80 | } | ||
| 81 | if (encoder_value[i] <= -ENCODER_RESOLUTION) { // direction is arbitrary here, but this clockwise | ||
| 82 | encoder_update_kb(i, true); | ||
| 83 | } | ||
| 84 | encoder_value[i] %= ENCODER_RESOLUTION; | ||
| 86 | } | 85 | } |
| 87 | if (encoder_value[i] <= -ENCODER_RESOLUTION) { // direction is arbitrary here, but this clockwise | ||
| 88 | encoder_update_kb(i, true); | ||
| 89 | } | ||
| 90 | encoder_value[i] %= ENCODER_RESOLUTION; | ||
| 91 | } | ||
| 92 | } | 86 | } |
| 93 | 87 | ||
| 94 | #ifdef SPLIT_KEYBOARD | 88 | #ifdef SPLIT_KEYBOARD |
| 95 | void encoder_state_raw(uint8_t* slave_state) { | 89 | void encoder_state_raw(uint8_t* slave_state) { memcpy(slave_state, encoder_state, sizeof(encoder_state)); } |
| 96 | memcpy(slave_state, encoder_state, sizeof(encoder_state)); | ||
| 97 | } | ||
| 98 | 90 | ||
| 99 | void encoder_update_raw(uint8_t* slave_state) { | 91 | void encoder_update_raw(uint8_t* slave_state) { |
| 100 | for (int i = 0; i < NUMBER_OF_ENCODERS; i++) { | 92 | for (int i = 0; i < NUMBER_OF_ENCODERS; i++) { |
| 101 | encoder_value[NUMBER_OF_ENCODERS + i] += encoder_LUT[slave_state[i] & 0xF]; | 93 | encoder_value[NUMBER_OF_ENCODERS + i] += encoder_LUT[slave_state[i] & 0xF]; |
| 102 | if (encoder_value[NUMBER_OF_ENCODERS + i] >= ENCODER_RESOLUTION) { | 94 | if (encoder_value[NUMBER_OF_ENCODERS + i] >= ENCODER_RESOLUTION) { |
| 103 | encoder_update_kb(NUMBER_OF_ENCODERS + i, false); | 95 | encoder_update_kb(NUMBER_OF_ENCODERS + i, false); |
| 104 | } | 96 | } |
| 105 | if (encoder_value[NUMBER_OF_ENCODERS + i] <= -ENCODER_RESOLUTION) { // direction is arbitrary here, but this clockwise | 97 | if (encoder_value[NUMBER_OF_ENCODERS + i] <= -ENCODER_RESOLUTION) { // direction is arbitrary here, but this clockwise |
| 106 | encoder_update_kb(NUMBER_OF_ENCODERS + i, true); | 98 | encoder_update_kb(NUMBER_OF_ENCODERS + i, true); |
| 99 | } | ||
| 100 | encoder_value[NUMBER_OF_ENCODERS + i] %= ENCODER_RESOLUTION; | ||
| 107 | } | 101 | } |
| 108 | encoder_value[NUMBER_OF_ENCODERS + i] %= ENCODER_RESOLUTION; | ||
| 109 | } | ||
| 110 | } | 102 | } |
| 111 | #endif | 103 | #endif |
