summaryrefslogtreecommitdiff
path: root/drivers/haptic/haptic.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/haptic/haptic.c')
-rw-r--r--drivers/haptic/haptic.c67
1 files changed, 67 insertions, 0 deletions
diff --git a/drivers/haptic/haptic.c b/drivers/haptic/haptic.c
index ded6d8a44a..989970beee 100644
--- a/drivers/haptic/haptic.c
+++ b/drivers/haptic/haptic.c
@@ -168,6 +168,15 @@ void haptic_set_mode(uint8_t mode) {
xprintf("haptic_config.mode = %u\n", haptic_config.mode);
}
+void haptic_set_amplitude(uint8_t amp) {
+ haptic_config.amplitude = amp;
+ eeconfig_update_haptic(haptic_config.raw);
+ xprintf("haptic_config.amplitude = %u\n", haptic_config.amplitude);
+ #ifdef DRV2605L
+ DRV_amplitude(amp);
+ #endif
+}
+
void haptic_set_buzz(uint8_t buzz) {
haptic_config.buzz = buzz;
eeconfig_update_haptic(haptic_config.raw);
@@ -201,6 +210,53 @@ uint8_t haptic_get_dwell(void) {
return haptic_config.dwell;
}
+void haptic_enable_continuous(void) {
+ haptic_config.cont = 1;
+ xprintf("haptic_config.cont = %u\n", haptic_config.cont);
+ eeconfig_update_haptic(haptic_config.raw);
+ #ifdef DRV2605L
+ DRV_rtp_init();
+ #endif
+}
+
+void haptic_disable_continuous(void) {
+ haptic_config.cont = 0;
+ xprintf("haptic_config.cont = %u\n", haptic_config.cont);
+ eeconfig_update_haptic(haptic_config.raw);
+ #ifdef DRV2605L
+ DRV_write(DRV_MODE,0x00);
+ #endif
+}
+
+void haptic_toggle_continuous(void) {
+#ifdef DRV2605L
+if (haptic_config.cont) {
+ haptic_disable_continuous();
+ } else {
+ haptic_enable_continuous();
+ }
+ eeconfig_update_haptic(haptic_config.raw);
+#endif
+}
+
+
+void haptic_cont_increase(void) {
+ uint8_t amp = haptic_config.amplitude + 10;
+ if (haptic_config.amplitude >= 120) {
+ amp = 120;
+ }
+ haptic_set_amplitude(amp);
+}
+
+void haptic_cont_decrease(void) {
+ uint8_t amp = haptic_config.amplitude - 10;
+ if (haptic_config.amplitude < 20) {
+ amp = 20;
+ }
+ haptic_set_amplitude(amp);
+}
+
+
void haptic_play(void) {
#ifdef DRV2605L
uint8_t play_eff = 0;
@@ -213,6 +269,7 @@ void haptic_play(void) {
}
bool process_haptic(uint16_t keycode, keyrecord_t *record) {
+
if (keycode == HPT_ON && record->event.pressed) {
haptic_enable();
}
@@ -243,6 +300,16 @@ bool process_haptic(uint16_t keycode, keyrecord_t *record) {
if (keycode == HPT_DWLD && record->event.pressed) {
haptic_dwell_decrease();
}
+ if (keycode == HPT_CONT && record->event.pressed) {
+ haptic_toggle_continuous();
+ }
+ if (keycode == HPT_CONI && record->event.pressed) {
+ haptic_cont_increase();
+ }
+ if (keycode == HPT_COND && record->event.pressed) {
+ haptic_cont_decrease();
+ }
+
if (haptic_config.enable) {
if (record->event.pressed) {
// keypress