diff options
Diffstat (limited to 'keyboards/cipulot/ec_alveus/1_2_0')
16 files changed, 58 insertions, 479 deletions
diff --git a/keyboards/cipulot/ec_alveus/1_2_0/config.h b/keyboards/cipulot/ec_alveus/1_2_0/config.h index 1947c30802..775c7906ad 100644 --- a/keyboards/cipulot/ec_alveus/1_2_0/config.h +++ b/keyboards/cipulot/ec_alveus/1_2_0/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 5 #define MATRIX_COLS 16 -/* Custom matrix pins and port select array */ #define MATRIX_ROW_PINS \ { A14, B3, A15, B5, B4 } -#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 100 +#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 EECONFIG_KB_DATA_SIZE 170 + /* 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_alveus/1_2_0/ec_switch_matrix.c b/keyboards/cipulot/ec_alveus/1_2_0/ec_switch_matrix.c deleted file mode 100644 index 783c00457c..0000000000 --- a/keyboards/cipulot/ec_alveus/1_2_0/ec_switch_matrix.c +++ /dev/null @@ -1,183 +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]); - } -} - -/* 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]); - 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(¤t_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(¤t_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_alveus/1_2_0/ec_switch_matrix.h b/keyboards/cipulot/ec_alveus/1_2_0/ec_switch_matrix.h deleted file mode 100644 index 9dcb216caa..0000000000 --- a/keyboards/cipulot/ec_alveus/1_2_0/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_alveus/1_2_0/halconf.h b/keyboards/cipulot/ec_alveus/1_2_0/halconf.h index 5b71acecbb..835d43b6a0 100644 --- a/keyboards/cipulot/ec_alveus/1_2_0/halconf.h +++ b/keyboards/cipulot/ec_alveus/1_2_0/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_alveus/1_2_0/info.json b/keyboards/cipulot/ec_alveus/1_2_0/info.json index 65af74e99b..8b63d02f77 100644 --- a/keyboards/cipulot/ec_alveus/1_2_0/info.json +++ b/keyboards/cipulot/ec_alveus/1_2_0/info.json @@ -8,18 +8,11 @@ }, "diode_direction": "COL2ROW", "features": { - "audio": false, - "backlight": false, - "bootmagic": true, - "command": false, + "bootmagic": false, "console": true, "extrakey": true, "mousekey": true, - "nkro": true, - "rgblight": false - }, - "mouse_key": { - "enabled": true + "nkro": true }, "processor": "STM32F401", "usb": { diff --git a/keyboards/cipulot/ec_alveus/1_2_0/keymaps/default/keymap.c b/keyboards/cipulot/ec_alveus/1_2_0/keymaps/default/keymap.c index d111c6a685..bff38f1fa8 100644 --- a/keyboards/cipulot/ec_alveus/1_2_0/keymaps/default/keymap.c +++ b/keyboards/cipulot/ec_alveus/1_2_0/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, @@ -33,14 +33,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { _______, _______, _______, _______, _______, _______, _______, _______), [2] = LAYOUT_tkl_nofrow_ansi_tsangan_wkl( - QK_BOOT, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______), - - [3] = LAYOUT_tkl_nofrow_ansi_tsangan_wkl( - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + QK_BOOT, NK_TOGG, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, diff --git a/keyboards/cipulot/ec_alveus/1_2_0/keymaps/tkl_nofrow_ansi_tsangan_wkl_split_bs/keymap.c b/keyboards/cipulot/ec_alveus/1_2_0/keymaps/tkl_nofrow_ansi_tsangan_wkl_split_bs/keymap.c index 4552cd6457..163f05202e 100644 --- a/keyboards/cipulot/ec_alveus/1_2_0/keymaps/tkl_nofrow_ansi_tsangan_wkl_split_bs/keymap.c +++ b/keyboards/cipulot/ec_alveus/1_2_0/keymaps/tkl_nofrow_ansi_tsangan_wkl_split_bs/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, @@ -33,14 +33,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { _______, _______, _______, _______, _______, _______, _______, _______), [2] = LAYOUT_tkl_nofrow_ansi_tsangan_wkl_split_bs( - QK_BOOT, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______), - - [3] = LAYOUT_tkl_nofrow_ansi_tsangan_wkl_split_bs( - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + QK_BOOT, NK_TOGG, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, diff --git a/keyboards/cipulot/ec_alveus/1_2_0/keymaps/via/config.h b/keyboards/cipulot/ec_alveus/1_2_0/keymaps/via/config.h index ebf954d07a..1ab0d3d9aa 100644 --- a/keyboards/cipulot/ec_alveus/1_2_0/keymaps/via/config.h +++ b/keyboards/cipulot/ec_alveus/1_2_0/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_alveus/1_2_0/keymaps/via/keymap.c b/keyboards/cipulot/ec_alveus/1_2_0/keymaps/via/keymap.c index 54a8f3b4f0..2134def61a 100644 --- a/keyboards/cipulot/ec_alveus/1_2_0/keymaps/via/keymap.c +++ b/keyboards/cipulot/ec_alveus/1_2_0/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, @@ -33,14 +33,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { _______, _______, _______, _______, _______, _______, _______, _______, _______, _______), [2] = LAYOUT_all( - QK_BOOT, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______), - - [3] = LAYOUT_all( - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + QK_BOOT, NK_TOGG, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, diff --git a/keyboards/cipulot/ec_alveus/1_2_0/keymaps/via/rules.mk b/keyboards/cipulot/ec_alveus/1_2_0/keymaps/via/rules.mk index 520b11f203..1e5b99807c 100644 --- a/keyboards/cipulot/ec_alveus/1_2_0/keymaps/via/rules.mk +++ b/keyboards/cipulot/ec_alveus/1_2_0/keymaps/via/rules.mk @@ -1,3 +1 @@ VIA_ENABLE = yes - -SRC += via_apc.c diff --git a/keyboards/cipulot/ec_alveus/1_2_0/keymaps/via/via_apc.c b/keyboards/cipulot/ec_alveus/1_2_0/keymaps/via/via_apc.c deleted file mode 100644 index 5ea77af44c..0000000000 --- a/keyboards/cipulot/ec_alveus/1_2_0/keymaps/via/via_apc.c +++ /dev/null @@ -1,156 +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 "action.h" -#include "via.h" - -void apc_init_thresholds(void); -void apc_set_threshold(bool is_for_actuation); - -// Declaring an _apc_config_t struct that will store our data -typedef struct _apc_config_t { - uint16_t actuation_threshold; - uint16_t release_threshold; -} apc_config; - -// Check if the size of the reserved persistent memory is the same as the size of struct apc_config -_Static_assert(sizeof(apc_config) == EECONFIG_USER_DATA_SIZE, "Mismatch in keyboard EECONFIG stored data"); - -// Declaring a new variable apc of type apc_config -apc_config apc; - -// Declaring enums for VIA config menu -enum via_apc_enums { - // clang-format off - id_apc_actuation_threshold = 1, - id_apc_release_threshold = 2 - // clang-format on -}; - -// Initializing persistent memory configuration: default values are declared and stored in PMEM -void eeconfig_init_user(void) { - // Default values - apc.actuation_threshold = DEFAULT_ACTUATION_LEVEL; - apc.release_threshold = DEFAULT_RELEASE_LEVEL; - // Write default value to EEPROM now - eeconfig_update_user_datablock(&apc); -} - -// On Keyboard startup -void keyboard_post_init_user(void) { - // Read custom menu variables from memory - eeconfig_read_user_datablock(&apc); - apc_init_thresholds(); -} - -// Handle the data received by the keyboard from the VIA menus -void apc_config_set_value(uint8_t *data) { - // data = [ value_id, value_data ] - uint8_t *value_id = &(data[0]); - uint8_t *value_data = &(data[1]); - - switch (*value_id) { - case id_apc_actuation_threshold: { - apc.actuation_threshold = value_data[1] | (value_data[0] << 8); - apc_set_threshold(true); - break; - } - case id_apc_release_threshold: { - apc.release_threshold = value_data[1] | (value_data[0] << 8); - apc_set_threshold(false); - break; - } - } -} - -// Handle the data sent by the keyboard to the VIA menus -void apc_config_get_value(uint8_t *data) { - // data = [ value_id, value_data ] - uint8_t *value_id = &(data[0]); - uint8_t *value_data = &(data[1]); - - switch (*value_id) { - case id_apc_actuation_threshold: { - value_data[0] = apc.actuation_threshold >> 8; - value_data[1] = apc.actuation_threshold & 0xFF; - break; - } - case id_apc_release_threshold: { - value_data[0] = apc.release_threshold >> 8; - value_data[1] = apc.release_threshold & 0xFF; - break; - } - } -} - -// Save the data to persistent memory after changes are made -void apc_config_save(void) { - eeconfig_update_user_datablock(&apc); -} - -void via_custom_value_command_kb(uint8_t *data, uint8_t length) { - // data = [ command_id, channel_id, value_id, value_data ] - uint8_t *command_id = &(data[0]); - uint8_t *channel_id = &(data[1]); - uint8_t *value_id_and_data = &(data[2]); - - if (*channel_id == id_custom_channel) { - switch (*command_id) { - case id_custom_set_value: { - apc_config_set_value(value_id_and_data); - break; - } - case id_custom_get_value: { - apc_config_get_value(value_id_and_data); - break; - } - case id_custom_save: { - apc_config_save(); - break; - } - default: { - // Unhandled message. - *command_id = id_unhandled; - break; - } - } - return; - } - - *command_id = id_unhandled; -} - -// Initialize the thresholds -void apc_init_thresholds(void) { - ecsm_config.ecsm_actuation_threshold = apc.actuation_threshold; - ecsm_config.ecsm_release_threshold = apc.release_threshold; - - // Update the ecsm_config - ecsm_update(&ecsm_config); -} - -// Set the thresholds -void apc_set_threshold(bool is_for_actuation) { - if (is_for_actuation) { - ecsm_config.ecsm_actuation_threshold = apc.actuation_threshold; - - } else { - ecsm_config.ecsm_release_threshold = apc.release_threshold; - } - // Update the ecsm_config - ecsm_update(&ecsm_config); -} diff --git a/keyboards/cipulot/ec_alveus/1_2_0/matrix.c b/keyboards/cipulot/ec_alveus/1_2_0/matrix.c deleted file mode 100644 index 1850acf264..0000000000 --- a/keyboards/cipulot/ec_alveus/1_2_0/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_alveus/1_2_0/mcuconf.h b/keyboards/cipulot/ec_alveus/1_2_0/mcuconf.h index d91f576bd4..fa3c955e0d 100644 --- a/keyboards/cipulot/ec_alveus/1_2_0/mcuconf.h +++ b/keyboards/cipulot/ec_alveus/1_2_0/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_alveus/1_2_0/post_rules.mk b/keyboards/cipulot/ec_alveus/1_2_0/post_rules.mk new file mode 100644 index 0000000000..d726a112a8 --- /dev/null +++ b/keyboards/cipulot/ec_alveus/1_2_0/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_alveus/1_2_0/readme.md b/keyboards/cipulot/ec_alveus/1_2_0/readme.md index e4c3ef86c3..43a39b06d8 100644 --- a/keyboards/cipulot/ec_alveus/1_2_0/readme.md +++ b/keyboards/cipulot/ec_alveus/1_2_0/readme.md @@ -20,8 +20,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_alveus/1_2_0/rules.mk b/keyboards/cipulot/ec_alveus/1_2_0/rules.mk index fc2dcf32ab..70494b635f 100644 --- a/keyboards/cipulot/ec_alveus/1_2_0/rules.mk +++ b/keyboards/cipulot/ec_alveus/1_2_0/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 |