diff --git a/keyboard/tentapad/Makefile b/keyboard/tentapad/Makefile
index 490a8810..21c6b5ba 100644
--- a/keyboard/tentapad/Makefile
+++ b/keyboard/tentapad/Makefile
@@ -53,7 +53,8 @@ SRC = keymap_common.c \
matrix.c \
led.c \
backlight.c \
- ledmap.c
+ ledmap.c \
+ vibration.c
ifdef KEYMAP
SRC := keymap_$(KEYMAP).c $(SRC)
diff --git a/keyboard/tentapad/Makefile_gh60 b/keyboard/tentapad/Makefile_gh60
index 717dc33d..b746f685 100644
--- a/keyboard/tentapad/Makefile_gh60
+++ b/keyboard/tentapad/Makefile_gh60
@@ -49,10 +49,12 @@ TARGET_DIR = .
# project specific files
SRC = keymap_common.c \
+ tentapad.c \
matrix.c \
led.c \
backlight.c \
- ledmap.c
+ ledmap.c \
+ vibration.c
ifdef KEYMAP
SRC := keymap_$(KEYMAP).c $(SRC)
diff --git a/keyboard/tentapad/matrix.c b/keyboard/tentapad/matrix.c
index 09df9048..cf105923 100644
--- a/keyboard/tentapad/matrix.c
+++ b/keyboard/tentapad/matrix.c
@@ -30,6 +30,7 @@ along with this program. If not, see .
#ifdef PS2_MOUSE_ENABLE
#include "ps2.h"
#endif
+#include "vibration.h"
#include "keymap_common.h"
@@ -80,6 +81,8 @@ void matrix_init(void)
keymaps_cache_init();
+ vibration_init();
+
// initialize cols
init_cols();
}
@@ -126,6 +129,8 @@ uint8_t matrix_scan(void)
}
*/
+ vibration_task();
+
return 1;
}
diff --git a/keyboard/tentapad/tentapad.c b/keyboard/tentapad/tentapad.c
index c75e235f..ce671615 100644
--- a/keyboard/tentapad/tentapad.c
+++ b/keyboard/tentapad/tentapad.c
@@ -22,6 +22,7 @@ along with this program. If not, see .
#include "softpwm_led.h"
#include "eeconfig.h"
#include "keymap_common.h"
+#include "vibration.h"
#include "tentapad.h"
#include "debug.h"
@@ -87,6 +88,7 @@ void action_keyevent(keyevent_t event)
break;
case KEY_TT:
if (event.pressed) {
+ vibration(64);
switch (backlight_mode) {
case 1: case 2:
softpwm_led_increase(LED_KEY_SIDE - 1 + backlight_mode, 32);
diff --git a/keyboard/tentapad/vibration.c b/keyboard/tentapad/vibration.c
new file mode 100644
index 00000000..5b0af66a
--- /dev/null
+++ b/keyboard/tentapad/vibration.c
@@ -0,0 +1,71 @@
+/*
+Copyright 2014 Kai Ryu
+
+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 .
+*/
+
+#include
+#include "timer.h"
+#include "vibration.h"
+
+static uint8_t vibration_state = 0;
+static uint16_t vibration_start;
+static uint16_t vibration_duration;
+
+void vibration_task(void)
+{
+ if (vibration_state) {
+ if (timer_elapsed(vibration_start) > vibration_duration) {
+ vibration_state = 0;
+ vibration_disable();
+ }
+ }
+}
+
+void vibration_init(void)
+{
+#ifndef EXPERIMENTAL
+ DDRD |= (1<
+
+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 .
+*/
+
+#include
+
+void vibration_init(void);
+void vibration_task(void);
+void vibration_enable(void);
+void vibration_disable(void);
+void vibration(uint16_t duration);