diff options
Diffstat (limited to 'keyboards/tzarc/ghoul/ghoul.c')
-rw-r--r-- | keyboards/tzarc/ghoul/ghoul.c | 44 |
1 files changed, 44 insertions, 0 deletions
diff --git a/keyboards/tzarc/ghoul/ghoul.c b/keyboards/tzarc/ghoul/ghoul.c new file mode 100644 index 0000000000..aceb24764b --- /dev/null +++ b/keyboards/tzarc/ghoul/ghoul.c @@ -0,0 +1,44 @@ +// Copyright 2018-2022 Nick Brassel (@tzarc) +// SPDX-License-Identifier: GPL-3.0-or-later +#include QMK_KEYBOARD_H +#include "analog.h" +#include "spi_master.h" + +void keyboard_post_init_kb(void) { + // Enable RGB current limiter and wait for a bit before allowing RGB to continue + setPinOutput(RGB_ENABLE_PIN); + writePinHigh(RGB_ENABLE_PIN); + wait_ms(20); + + // Offload to the user func + keyboard_post_init_user(); +} + +void matrix_init_custom(void) { + // SPI Matrix + setPinOutput(SPI_MATRIX_CHIP_SELECT_PIN); + writePinHigh(SPI_MATRIX_CHIP_SELECT_PIN); + spi_init(); + + // Encoder pushbutton + setPinInputLow(ENCODER_PUSHBUTTON_PIN); +} + +bool matrix_scan_custom(matrix_row_t current_matrix[]) { + static matrix_row_t temp_matrix[MATRIX_ROWS] = {0}; + + // Read from SPI the matrix + spi_start(SPI_MATRIX_CHIP_SELECT_PIN, false, 0, SPI_MATRIX_DIVISOR); + spi_receive((uint8_t*)temp_matrix, MATRIX_SHIFT_REGISTER_COUNT * sizeof(matrix_row_t)); + spi_stop(); + + // Read from the encoder pushbutton + temp_matrix[5] = readPin(ENCODER_PUSHBUTTON_PIN) ? 1 : 0; + + // Check if we've changed, return the last-read data + bool changed = memcmp(current_matrix, temp_matrix, sizeof(temp_matrix)) != 0; + if (changed) { + memcpy(current_matrix, temp_matrix, sizeof(temp_matrix)); + } + return changed; +} |