1
0
Fork 0

Planck Matrix Fixes (#21196)

* fix non-default keymap compiling, initial matrix state, watchdog options

* fix: allow planck/rev7 to be used with ENCODER_ENABLE = no

* chore: update function name on all cases.

* remove old midi tone option

Co-authored-by: Ryan <fauxpark@gmail.com>

* fixes abhixec's planck keymap

* add audio enable condition to abhixec's planck keymap

* add audio enable condition to all muse includes

* Revert "add audio enable condition to all muse includes"

This reverts commit 9779e908970dbf7cf81b1a3f968ef2e85ae2b76f.

* Revert "add audio enable condition to abhixec's planck keymap"

This reverts commit 24c742a5e8ddd55c45ce9f1917b0cb237d4bf721.

* Revert "fixes abhixec's planck keymap"

This reverts commit 4bb085d1ff00febc92ff6211da4fb776c6379fad.

---------

Co-authored-by: Peter.Falken <luis@bitjester.com>
Co-authored-by: Ryan <fauxpark@gmail.com>
This commit is contained in:
Jack Humbert 2023-06-20 20:32:32 -04:00 committed by GitHub
parent ac14fce06d
commit 42cd55e08d
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
5 changed files with 42 additions and 31 deletions

View file

@ -31,21 +31,36 @@
#define STM32_IWDG_RL_MS(s) STM32_IWDG_RL_US(s * 1000.0)
#define STM32_IWDG_RL_S(s) STM32_IWDG_RL_US(s * 1000000.0)
#if !defined(PLANCK_ENCODER_RESOLUTION)
# define PLANCK_ENCODER_RESOLUTION 4
#endif
#if !defined(PLANCK_WATCHDOG_TIMEOUT)
# define PLANCK_WATCHDOG_TIMEOUT 1.0
#endif
#ifdef ENCODER_MAP_ENABLE
#error "The encoder map feature is not currently supported by the Planck's encoder matrix"
#endif
/* matrix state(1:on, 0:off) */
static pin_t matrix_row_pins[MATRIX_ROWS] = MATRIX_ROW_PINS;
static pin_t matrix_col_pins[MATRIX_COLS] = MATRIX_COL_PINS;
static matrix_row_t matrix_inverted[MATRIX_COLS];
#ifdef ENCODER_ENABLE
int8_t encoder_LUT[] = {0, -1, 1, 0, 1, 0, 0, -1, -1, 0, 0, 1, 0, 1, -1, 0};
uint8_t encoder_state[8] = {0};
int8_t encoder_pulses[8] = {0};
uint8_t encoder_value[8] = {0};
#endif
void matrix_init_custom(void) {
// actual matrix setup - cols
for (int i = 0; i < MATRIX_COLS; i++) {
setPinOutput(matrix_col_pins[i]);
writePinLow(matrix_col_pins[i]);
}
// rows
@ -57,50 +72,47 @@ void matrix_init_custom(void) {
setPinInputLow(B12);
setPinInputLow(B13);
// setup watchdog timer for 1 second
#ifndef PLANCK_WATCHDOG_DISABLE
wdgInit();
static WDGConfig wdgcfg;
wdgcfg.pr = STM32_IWDG_PR_S(1.0);
wdgcfg.rlr = STM32_IWDG_RL_S(1.0);
wdgcfg.pr = STM32_IWDG_PR_S(PLANCK_WATCHDOG_TIMEOUT);
wdgcfg.rlr = STM32_IWDG_RL_S(PLANCK_WATCHDOG_TIMEOUT);
wdgcfg.winr = STM32_IWDG_WIN_DISABLED;
wdgStart(&WDGD1, &wdgcfg);
#endif
}
#ifdef ENCODER_ENABLE
bool encoder_update(uint8_t index, uint8_t state) {
bool changed = false;
uint8_t i = index;
encoder_pulses[i] += encoder_LUT[state & 0xF];
if (encoder_pulses[i] >= ENCODER_RESOLUTION) {
if (encoder_pulses[i] >= PLANCK_ENCODER_RESOLUTION) {
encoder_value[index]++;
changed = true;
#ifdef ENCODER_MAP_ENABLE
encoder_exec_mapping(index, false);
#else // ENCODER_MAP_ENABLE
encoder_update_kb(index, false);
#endif // ENCODER_MAP_ENABLE
}
if (encoder_pulses[i] <= -ENCODER_RESOLUTION) {
if (encoder_pulses[i] <= -PLANCK_ENCODER_RESOLUTION) {
encoder_value[index]--;
changed = true;
#ifdef ENCODER_MAP_ENABLE
encoder_exec_mapping(index, true);
#else // ENCODER_MAP_ENABLE
encoder_update_kb(index, true);
#endif // ENCODER_MAP_ENABLE
}
encoder_pulses[i] %= ENCODER_RESOLUTION;
encoder_pulses[i] %= PLANCK_ENCODER_RESOLUTION;
#ifdef ENCODER_DEFAULT_POS
encoder_pulses[i] = 0;
#endif
return changed;
}
#endif
bool matrix_scan_custom(matrix_row_t current_matrix[]) {
#ifndef PLANCK_WATCHDOG_DISABLE
// reset watchdog
wdgReset(&WDGD1);
#endif
bool changed = false;
@ -136,6 +148,7 @@ bool matrix_scan_custom(matrix_row_t current_matrix[]) {
changed |= old != current_matrix[row];
}
#ifdef ENCODER_ENABLE
// encoder-matrix functionality
// set up C/rows for encoder read
@ -168,6 +181,7 @@ bool matrix_scan_custom(matrix_row_t current_matrix[]) {
for (int i = 0; i < MATRIX_ROWS; i++) {
setPinInputLow(matrix_row_pins[i]);
}
#endif
return changed;
}