Add full solenoid support on split keyboards (#21583)
Co-authored-by: Jacob Gable <jacob.gable@statheros.tech>
This commit is contained in:
parent
7a761ebf7d
commit
99290b4c7e
4 changed files with 21 additions and 12 deletions
|
@ -298,7 +298,7 @@ This enables transmitting the pointing device status to the master side of the s
|
|||
#define SPLIT_HAPTIC_ENABLE
|
||||
```
|
||||
|
||||
This enables triggering of haptic feedback on the slave side of the split keyboard. For DRV2605L this will send the mode, but for solenoids it is expected that the desired mode is already set up on the slave.
|
||||
This enables the triggering of haptic feedback on the slave side of the split keyboard. This will send information to the slave side such as the mode, dwell, and whether buzz is enabled.
|
||||
|
||||
```c
|
||||
#define SPLIT_ACTIVITY_ENABLE
|
||||
|
|
|
@ -23,7 +23,6 @@
|
|||
#include "util.h"
|
||||
#include <stdlib.h>
|
||||
|
||||
uint8_t solenoid_dwell = SOLENOID_DEFAULT_DWELL;
|
||||
static pin_t solenoid_pads[] = SOLENOID_PINS;
|
||||
#define NUMBER_OF_SOLENOIDS ARRAY_SIZE(solenoid_pads)
|
||||
bool solenoid_on[NUMBER_OF_SOLENOIDS] = {false};
|
||||
|
@ -53,7 +52,7 @@ void solenoid_set_buzz(uint8_t buzz) {
|
|||
}
|
||||
|
||||
void solenoid_set_dwell(uint8_t dwell) {
|
||||
solenoid_dwell = dwell;
|
||||
haptic_set_dwell(dwell);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -119,7 +118,7 @@ void solenoid_check(void) {
|
|||
elapsed[i] = timer_elapsed(solenoid_start[i]);
|
||||
|
||||
// Check if it's time to finish this solenoid click cycle
|
||||
if (elapsed[i] > solenoid_dwell) {
|
||||
if (elapsed[i] > haptic_config.dwell) {
|
||||
solenoid_stop(i);
|
||||
continue;
|
||||
}
|
||||
|
|
|
@ -20,6 +20,7 @@
|
|||
#include "debug.h"
|
||||
#include "usb_device_state.h"
|
||||
#include "gpio.h"
|
||||
#include "keyboard.h"
|
||||
|
||||
#ifdef HAPTIC_DRV2605L
|
||||
# include "drv2605l.h"
|
||||
|
@ -58,6 +59,11 @@ static void set_haptic_config_enable(bool enabled) {
|
|||
}
|
||||
|
||||
void haptic_init(void) {
|
||||
// only initialize on secondary boards if the user desires
|
||||
#if defined(SPLIT_KEYBOARD) && !defined(SPLIT_HAPTIC_ENABLE)
|
||||
if (!is_keyboard_master()) return;
|
||||
#endif
|
||||
|
||||
if (!eeconfig_is_enabled()) {
|
||||
eeconfig_init();
|
||||
}
|
||||
|
@ -99,8 +105,12 @@ void haptic_init(void) {
|
|||
|
||||
void haptic_task(void) {
|
||||
#ifdef HAPTIC_SOLENOID
|
||||
// Only run task on seconary boards if the user desires
|
||||
# if defined(SPLIT_KEYBOARD) && !defined(SPLIT_HAPTIC_ENABLE)
|
||||
if (!is_keyboard_master()) return;
|
||||
# endif
|
||||
solenoid_check();
|
||||
#endif
|
||||
#endif // HAPTIC_SOLENOID
|
||||
}
|
||||
|
||||
void eeconfig_debug_haptic(void) {
|
||||
|
|
|
@ -395,9 +395,6 @@ void quantum_init(void) {
|
|||
#if defined(UNICODE_COMMON_ENABLE)
|
||||
unicode_input_mode_init();
|
||||
#endif
|
||||
#ifdef HAPTIC_ENABLE
|
||||
haptic_init();
|
||||
#endif
|
||||
}
|
||||
|
||||
/** \brief keyboard_init
|
||||
|
@ -462,6 +459,9 @@ void keyboard_init(void) {
|
|||
#ifdef BLUETOOTH_ENABLE
|
||||
bluetooth_init();
|
||||
#endif
|
||||
#ifdef HAPTIC_ENABLE
|
||||
haptic_init();
|
||||
#endif
|
||||
|
||||
#if defined(DEBUG_MATRIX_SCAN_RATE) && defined(CONSOLE_ENABLE)
|
||||
debug_enable = true;
|
||||
|
@ -617,10 +617,6 @@ void quantum_task(void) {
|
|||
decay_wpm();
|
||||
#endif
|
||||
|
||||
#ifdef HAPTIC_ENABLE
|
||||
haptic_task();
|
||||
#endif
|
||||
|
||||
#ifdef DIP_SWITCH_ENABLE
|
||||
dip_switch_read(false);
|
||||
#endif
|
||||
|
@ -726,5 +722,9 @@ void keyboard_task(void) {
|
|||
bluetooth_task();
|
||||
#endif
|
||||
|
||||
#ifdef HAPTIC_ENABLE
|
||||
haptic_task();
|
||||
#endif
|
||||
|
||||
led_task();
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue