summaryrefslogtreecommitdiff
path: root/keyboards/cipulot/ec_theca
diff options
context:
space:
mode:
authorCipulot <40441626+Cipulot@users.noreply.github.com>2024-02-26 03:05:10 +0100
committerGitHub <noreply@github.com>2024-02-26 13:05:10 +1100
commited791972e1bf812c432655de31e3cf92f3bcf397 (patch)
treeff94f4f7f9f6281ad563459b5100e6df95eeec86 /keyboards/cipulot/ec_theca
parent34a113c97b192fbe28d963178a4d672fb780e27f (diff)
Cipulot refactoring (#22368)
Co-authored-by: Drashna Jaelre <drashna@live.com> Co-authored-by: Joel Challis <git@zvecr.com>
Diffstat (limited to 'keyboards/cipulot/ec_theca')
-rw-r--r--keyboards/cipulot/ec_theca/config.h52
-rw-r--r--keyboards/cipulot/ec_theca/ec_switch_matrix.c191
-rw-r--r--keyboards/cipulot/ec_theca/ec_switch_matrix.h36
-rw-r--r--keyboards/cipulot/ec_theca/halconf.h2
-rw-r--r--keyboards/cipulot/ec_theca/info.json2
-rw-r--r--keyboards/cipulot/ec_theca/keymaps/default/keymap.c4
-rw-r--r--keyboards/cipulot/ec_theca/keymaps/tkl_ansi_tsangan/keymap.c4
-rw-r--r--keyboards/cipulot/ec_theca/keymaps/tkl_ansi_tsangan_wkl/keymap.c4
-rw-r--r--keyboards/cipulot/ec_theca/keymaps/via/config.h6
-rw-r--r--keyboards/cipulot/ec_theca/keymaps/via/keymap.c4
-rw-r--r--keyboards/cipulot/ec_theca/keymaps/via/rules.mk2
-rw-r--r--keyboards/cipulot/ec_theca/matrix.c44
-rw-r--r--keyboards/cipulot/ec_theca/mcuconf.h2
-rw-r--r--keyboards/cipulot/ec_theca/post_rules.mk3
-rw-r--r--keyboards/cipulot/ec_theca/readme.md3
-rw-r--r--keyboards/cipulot/ec_theca/rules.mk4
16 files changed, 59 insertions, 304 deletions
diff --git a/keyboards/cipulot/ec_theca/config.h b/keyboards/cipulot/ec_theca/config.h
index 481183b80c..23a0bb4eb4 100644
--- a/keyboards/cipulot/ec_theca/config.h
+++ b/keyboards/cipulot/ec_theca/config.h
@@ -2,7 +2,7 @@
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
+ * the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
@@ -19,27 +19,53 @@
#define MATRIX_ROWS 6
#define MATRIX_COLS 16
-/* Custom matrix pins and port select array */
#define MATRIX_ROW_PINS \
{ B4, A14, B3, A15, B6, B5 }
-#define MATRIX_COL_CHANNELS \
- { 3, 0, 1, 2, 6, 5, 7, 4 }
-#define MUX_SEL_PINS \
+
+#define AMUX_COUNT 2
+#define AMUX_MAX_COLS_COUNT 8
+
+#define AMUX_EN_PINS \
+ { C13, C14 }
+
+#define AMUX_SEL_PINS \
{ B7, B8, B9 }
-/* Hardware peripherals pins */
-#define APLEX_EN_PIN_0 C13
-#define APLEX_EN_PIN_1 C14
+#define AMUX_COL_CHANNELS_SIZES \
+ { 8, 8 }
+
+#define AMUX_0_COL_CHANNELS \
+ { 3, 0, 1, 2, 6, 5, 7, 4 }
+
+#define AMUX_1_COL_CHANNELS AMUX_0_COL_CHANNELS
+
+#define AMUX_COL_CHANNELS AMUX_0_COL_CHANNELS, AMUX_1_COL_CHANNELS
+
#define DISCHARGE_PIN B1
#define ANALOG_PORT A3
+#define DEFAULT_ACTUATION_MODE 0
+#define DEFAULT_MODE_0_ACTUATION_LEVEL 550
+#define DEFAULT_MODE_0_RELEASE_LEVEL 500
+#define DEFAULT_MODE_1_INITIAL_DEADZONE_OFFSET DEFAULT_MODE_0_ACTUATION_LEVEL
+#define DEFAULT_MODE_1_ACTUATION_OFFSET 70
+#define DEFAULT_MODE_1_RELEASE_OFFSET 70
+#define DEFAULT_EXTREMUM 1023
+#define EXPECTED_NOISE_FLOOR 0
+#define NOISE_FLOOR_THRESHOLD 50
+#define BOTTOMING_CALIBRATION_THRESHOLD 50
+#define DEFAULT_NOISE_FLOOR_SAMPLING_COUNT 30
+#define DEFAULT_BOTTOMING_READING 1023
+#define DEFAULT_CALIBRATION_STARTER true
+
+#define DISCHARGE_TIME 10
+
+// #define DEBUG_MATRIX_SCAN_RATE
+#define DYNAMIC_KEYMAP_LAYER_COUNT 3
+#define EECONFIG_KB_DATA_SIZE 202
+
/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */
#define LOCKING_SUPPORT_ENABLE
/* Locking resynchronize hack */
#define LOCKING_RESYNC_ENABLE
-
-#define DEFAULT_ACTUATION_LEVEL 550
-#define DEFAULT_RELEASE_LEVEL 500
-
-#define DISCHARGE_TIME 10
diff --git a/keyboards/cipulot/ec_theca/ec_switch_matrix.c b/keyboards/cipulot/ec_theca/ec_switch_matrix.c
deleted file mode 100644
index fdf4479423..0000000000
--- a/keyboards/cipulot/ec_theca/ec_switch_matrix.c
+++ /dev/null
@@ -1,191 +0,0 @@
-/* Copyright 2023 Cipulot
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#include "ec_switch_matrix.h"
-#include "analog.h"
-#include "atomic_util.h"
-#include "print.h"
-#include "wait.h"
-
-/* Pin and port array */
-const uint32_t row_pins[] = MATRIX_ROW_PINS;
-const uint8_t col_channels[] = MATRIX_COL_CHANNELS;
-const uint32_t mux_sel_pins[] = MUX_SEL_PINS;
-
-static ecsm_config_t config;
-static uint16_t ecsm_sw_value[MATRIX_ROWS][MATRIX_COLS];
-
-static adc_mux adcMux;
-
-static inline void discharge_capacitor(void) {
- writePinLow(DISCHARGE_PIN);
-}
-static inline void charge_capacitor(uint8_t row) {
- writePinHigh(DISCHARGE_PIN);
- writePinHigh(row_pins[row]);
-}
-
-static inline void init_mux_sel(void) {
- for (int idx = 0; idx < 3; idx++) {
- setPinOutput(mux_sel_pins[idx]);
- }
-}
-
-static inline void select_mux(uint8_t col) {
- uint8_t ch = col_channels[col];
- writePin(mux_sel_pins[0], ch & 1);
- writePin(mux_sel_pins[1], ch & 2);
- writePin(mux_sel_pins[2], ch & 4);
-}
-
-static inline void init_row(void) {
- for (int idx = 0; idx < MATRIX_ROWS; idx++) {
- setPinOutput(row_pins[idx]);
- writePinLow(row_pins[idx]);
- }
-}
-
-static inline void clear_row(void) {
- for (int idx = 0; idx < MATRIX_ROWS; idx++) {
- setPinOutput(row_pins[idx]);
- writePinLow(row_pins[idx]);
- }
-}
-
-/* Initialize the peripherals pins */
-int ecsm_init(ecsm_config_t const* const ecsm_config) {
- // Initialize config
- config = *ecsm_config;
-
- palSetLineMode(ANALOG_PORT, PAL_MODE_INPUT_ANALOG);
- adcMux = pinToMux(ANALOG_PORT);
-
- // Dummy call to make sure that adcStart() has been called in the appropriate state
- adc_read(adcMux);
-
- // Initialize discharge pin as discharge mode
- writePinLow(DISCHARGE_PIN);
- setPinOutputOpenDrain(DISCHARGE_PIN);
-
- // Initialize drive lines
- init_row();
-
- // Initialize multiplexer select pin
- init_mux_sel();
-
- // Enable AMUX
- setPinOutput(APLEX_EN_PIN_0);
- writePinLow(APLEX_EN_PIN_0);
- setPinOutput(APLEX_EN_PIN_1);
- writePinLow(APLEX_EN_PIN_1);
-
- return 0;
-}
-
-int ecsm_update(ecsm_config_t const* const ecsm_config) {
- // Save config
- config = *ecsm_config;
- return 0;
-}
-
-// Read the capacitive sensor value
-uint16_t ecsm_readkey_raw(uint8_t channel, uint8_t row, uint8_t col) {
- uint16_t sw_value = 0;
-
- // Select the multiplexer
- if (channel == 0) {
- writePinHigh(APLEX_EN_PIN_0);
- select_mux(col);
- writePinLow(APLEX_EN_PIN_0);
- } else {
- writePinHigh(APLEX_EN_PIN_1);
- select_mux(col);
- writePinLow(APLEX_EN_PIN_1);
- }
-
- // Set strobe pins to low state
- //writePinLow(row_pins[row]);
- clear_row();
- ATOMIC_BLOCK_FORCEON {
- // Set the row pin to high state and have capacitor charge
- charge_capacitor(row);
- // Read the ADC value
- sw_value = adc_read(adcMux);
- }
- // Discharge peak hold capacitor
- discharge_capacitor();
- // Waiting for the ghost capacitor to discharge fully
- wait_us(DISCHARGE_TIME);
-
- return sw_value;
-}
-
-// Update press/release state of key
-bool ecsm_update_key(matrix_row_t* current_row, uint8_t row, uint8_t col, uint16_t sw_value) {
- bool current_state = (*current_row >> col) & 1;
-
- // Press to release
- if (current_state && sw_value < config.ecsm_actuation_threshold) {
- *current_row &= ~(1 << col);
- return true;
- }
-
- // Release to press
- if ((!current_state) && sw_value > config.ecsm_release_threshold) {
- *current_row |= (1 << col);
- return true;
- }
-
- return false;
-}
-
-// Scan key values and update matrix state
-bool ecsm_matrix_scan(matrix_row_t current_matrix[]) {
- bool updated = false;
-
- // Disable AMUX of channel 1
- writePinHigh(APLEX_EN_PIN_1);
- for (int col = 0; col < sizeof(col_channels); col++) {
- for (int row = 0; row < MATRIX_ROWS; row++) {
- ecsm_sw_value[row][col] = ecsm_readkey_raw(0, row, col);
- updated |= ecsm_update_key(&current_matrix[row], row, col, ecsm_sw_value[row][col]);
- }
- }
-
- // Disable AMUX of channel 1
- writePinHigh(APLEX_EN_PIN_0);
- for (int col = 0; col < sizeof(col_channels); col++) {
- for (int row = 0; row < MATRIX_ROWS; row++) {
- ecsm_sw_value[row][col + 8] = ecsm_readkey_raw(1, row, col);
- updated |= ecsm_update_key(&current_matrix[row], row, col + 8, ecsm_sw_value[row][col + 8]);
- }
- }
- return updated;
-}
-
-// Debug print key values
-void ecsm_print_matrix(void) {
- for (int row = 0; row < MATRIX_ROWS; row++) {
- for (int col = 0; col < MATRIX_COLS; col++) {
- uprintf("%4d", ecsm_sw_value[row][col]);
- if (col < (MATRIX_COLS - 1)) {
- print(",");
- }
- }
- print("\n");
- }
- print("\n");
-}
diff --git a/keyboards/cipulot/ec_theca/ec_switch_matrix.h b/keyboards/cipulot/ec_theca/ec_switch_matrix.h
deleted file mode 100644
index 9dcb216caa..0000000000
--- a/keyboards/cipulot/ec_theca/ec_switch_matrix.h
+++ /dev/null
@@ -1,36 +0,0 @@
-/* Copyright 2023 Cipulot
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#pragma once
-
-#include <stdint.h>
-#include <stdbool.h>
-
-#include "matrix.h"
-
-typedef struct {
- uint16_t ecsm_actuation_threshold; // threshold for key release
- uint16_t ecsm_release_threshold; // threshold for key press
-} ecsm_config_t;
-
-ecsm_config_t ecsm_config;
-
-int ecsm_init(ecsm_config_t const* const ecsm_config);
-int ecsm_update(ecsm_config_t const* const ecsm_config);
-bool ecsm_matrix_scan(matrix_row_t current_matrix[]);
-uint16_t ecsm_readkey_raw(uint8_t channel, uint8_t row, uint8_t col);
-bool ecsm_update_key(matrix_row_t* current_row, uint8_t row, uint8_t col, uint16_t sw_value);
-void ecsm_print_matrix(void);
diff --git a/keyboards/cipulot/ec_theca/halconf.h b/keyboards/cipulot/ec_theca/halconf.h
index 5b71acecbb..835d43b6a0 100644
--- a/keyboards/cipulot/ec_theca/halconf.h
+++ b/keyboards/cipulot/ec_theca/halconf.h
@@ -2,7 +2,7 @@
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
+ * the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
diff --git a/keyboards/cipulot/ec_theca/info.json b/keyboards/cipulot/ec_theca/info.json
index a80a92a7f5..fbd7d7ec47 100644
--- a/keyboards/cipulot/ec_theca/info.json
+++ b/keyboards/cipulot/ec_theca/info.json
@@ -8,7 +8,7 @@
},
"diode_direction": "COL2ROW",
"features": {
- "bootmagic": true,
+ "bootmagic": false,
"console": true,
"extrakey": true,
"mousekey": true,
diff --git a/keyboards/cipulot/ec_theca/keymaps/default/keymap.c b/keyboards/cipulot/ec_theca/keymaps/default/keymap.c
index 2ad75a0f3e..caadf93c1c 100644
--- a/keyboards/cipulot/ec_theca/keymaps/default/keymap.c
+++ b/keyboards/cipulot/ec_theca/keymaps/default/keymap.c
@@ -2,7 +2,7 @@
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
+ * the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
@@ -27,7 +27,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, MO(1), KC_RCTL, KC_LEFT, KC_DOWN, KC_RIGHT),
[1] = LAYOUT_tkl_ansi(
- QK_BOOT, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ QK_BOOT, NK_TOGG, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
diff --git a/keyboards/cipulot/ec_theca/keymaps/tkl_ansi_tsangan/keymap.c b/keyboards/cipulot/ec_theca/keymaps/tkl_ansi_tsangan/keymap.c
index a8f569b189..7945b62db9 100644
--- a/keyboards/cipulot/ec_theca/keymaps/tkl_ansi_tsangan/keymap.c
+++ b/keyboards/cipulot/ec_theca/keymaps/tkl_ansi_tsangan/keymap.c
@@ -2,7 +2,7 @@
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
+ * the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
@@ -27,7 +27,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_RCTL, KC_LEFT, KC_DOWN, KC_RIGHT),
[1] = LAYOUT_tkl_ansi_tsangan(
- QK_BOOT, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ QK_BOOT, NK_TOGG, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
diff --git a/keyboards/cipulot/ec_theca/keymaps/tkl_ansi_tsangan_wkl/keymap.c b/keyboards/cipulot/ec_theca/keymaps/tkl_ansi_tsangan_wkl/keymap.c
index 56548302dd..7205d9fad0 100644
--- a/keyboards/cipulot/ec_theca/keymaps/tkl_ansi_tsangan_wkl/keymap.c
+++ b/keyboards/cipulot/ec_theca/keymaps/tkl_ansi_tsangan_wkl/keymap.c
@@ -2,7 +2,7 @@
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
+ * the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
@@ -27,7 +27,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
KC_LCTL, KC_LALT, KC_SPC, KC_RALT, KC_RCTL, KC_LEFT, KC_DOWN, KC_RIGHT),
[1] = LAYOUT_tkl_ansi_wkl(
- QK_BOOT, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ QK_BOOT, NK_TOGG, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
diff --git a/keyboards/cipulot/ec_theca/keymaps/via/config.h b/keyboards/cipulot/ec_theca/keymaps/via/config.h
index ebf954d07a..1ab0d3d9aa 100644
--- a/keyboards/cipulot/ec_theca/keymaps/via/config.h
+++ b/keyboards/cipulot/ec_theca/keymaps/via/config.h
@@ -2,7 +2,7 @@
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
+ * the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
@@ -16,5 +16,5 @@
#pragma once
-// This is the size of the EEPROM for the custom VIA-specific data
-#define EECONFIG_USER_DATA_SIZE 4
+// This is the firmware version for VIA support to avoid conflicts on menu fetching
+#define VIA_FIRMWARE_VERSION 1
diff --git a/keyboards/cipulot/ec_theca/keymaps/via/keymap.c b/keyboards/cipulot/ec_theca/keymaps/via/keymap.c
index a8fc1b961a..ca11bf60fc 100644
--- a/keyboards/cipulot/ec_theca/keymaps/via/keymap.c
+++ b/keyboards/cipulot/ec_theca/keymaps/via/keymap.c
@@ -2,7 +2,7 @@
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
+ * the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
@@ -27,7 +27,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), MO(1), KC_RCTL, KC_LEFT, KC_DOWN, KC_RIGHT),
[1] = LAYOUT_all(
- QK_BOOT, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ QK_BOOT, NK_TOGG, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
diff --git a/keyboards/cipulot/ec_theca/keymaps/via/rules.mk b/keyboards/cipulot/ec_theca/keymaps/via/rules.mk
index 72e314e694..1e5b99807c 100644
--- a/keyboards/cipulot/ec_theca/keymaps/via/rules.mk
+++ b/keyboards/cipulot/ec_theca/keymaps/via/rules.mk
@@ -1,3 +1 @@
VIA_ENABLE = yes
-
-SRC += keyboards/cipulot/common/via_apc.c
diff --git a/keyboards/cipulot/ec_theca/matrix.c b/keyboards/cipulot/ec_theca/matrix.c
deleted file mode 100644
index 1850acf264..0000000000
--- a/keyboards/cipulot/ec_theca/matrix.c
+++ /dev/null
@@ -1,44 +0,0 @@
-/* Copyright 2023 Cipulot
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#include "ec_switch_matrix.h"
-#include "matrix.h"
-
-/* matrix state(1:on, 0:off) */
-extern matrix_row_t raw_matrix[MATRIX_ROWS]; // raw values
-extern matrix_row_t matrix[MATRIX_ROWS]; // debounced values
-
-void matrix_init_custom(void) {
- // Default values, overwritten by VIA if enabled later
- ecsm_config.ecsm_actuation_threshold = DEFAULT_ACTUATION_LEVEL;
- ecsm_config.ecsm_release_threshold = DEFAULT_RELEASE_LEVEL;
-
- ecsm_init(&ecsm_config);
-}
-
-bool matrix_scan_custom(matrix_row_t current_matrix[]) {
- bool updated = ecsm_matrix_scan(current_matrix);
-
-// RAW matrix values on console
-#ifdef CONSOLE_ENABLE
- static int cnt = 0;
- if (cnt++ == 350) {
- cnt = 0;
- ecsm_print_matrix();
- }
-#endif
- return updated;
-}
diff --git a/keyboards/cipulot/ec_theca/mcuconf.h b/keyboards/cipulot/ec_theca/mcuconf.h
index d91f576bd4..fa3c955e0d 100644
--- a/keyboards/cipulot/ec_theca/mcuconf.h
+++ b/keyboards/cipulot/ec_theca/mcuconf.h
@@ -2,7 +2,7 @@
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
+ * the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
diff --git a/keyboards/cipulot/ec_theca/post_rules.mk b/keyboards/cipulot/ec_theca/post_rules.mk
new file mode 100644
index 0000000000..d726a112a8
--- /dev/null
+++ b/keyboards/cipulot/ec_theca/post_rules.mk
@@ -0,0 +1,3 @@
+ifeq ($(strip $(VIA_ENABLE)), yes)
+ SRC += keyboards/cipulot/common/via_ec.c
+endif
diff --git a/keyboards/cipulot/ec_theca/readme.md b/keyboards/cipulot/ec_theca/readme.md
index c25e498434..47a70867fa 100644
--- a/keyboards/cipulot/ec_theca/readme.md
+++ b/keyboards/cipulot/ec_theca/readme.md
@@ -18,8 +18,7 @@ See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_to
## Bootloader
-Enter the bootloader in 3 ways:
+Enter the bootloader in 2 ways:
-* **Bootmagic reset**: Hold down the key at (0,0) in the matrix (usually the top left key or Escape) and plug in the keyboard
* **Physical reset**: Long short the exposed pads on the top of the PCB
* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available
diff --git a/keyboards/cipulot/ec_theca/rules.mk b/keyboards/cipulot/ec_theca/rules.mk
index fc2dcf32ab..70494b635f 100644
--- a/keyboards/cipulot/ec_theca/rules.mk
+++ b/keyboards/cipulot/ec_theca/rules.mk
@@ -1,4 +1,4 @@
CUSTOM_MATRIX = lite
-SRC += matrix.c ec_switch_matrix.c
-
ANALOG_DRIVER_REQUIRED = yes
+SRC += keyboards/cipulot/common/matrix.c keyboards/cipulot/common/ec_board.c keyboards/cipulot/common/ec_switch_matrix.c
+OPT = 3