@@ -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) |
@@ -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) |
@@ -30,6 +30,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>. | |||
#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; | |||
} | |||
@@ -22,6 +22,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>. | |||
#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); |
@@ -0,0 +1,71 @@ | |||
/* | |||
Copyright 2014 Kai Ryu <[email protected]> | |||
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 <avr/io.h> | |||
#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<<PD6); | |||
PORTD &= ~(1<<PD6); | |||
#else | |||
DDRD |= (1<<PD5); | |||
PORTD &= ~(1<<PD5); | |||
#endif | |||
} | |||
void vibration_enable(void) | |||
{ | |||
#ifndef EXPERIMENTAL | |||
PORTD |= (1<<PD6); | |||
#else | |||
PORTD |= (1<<PD5); | |||
#endif | |||
} | |||
void vibration_disable(void) | |||
{ | |||
#ifndef EXPERIMENTAL | |||
PORTD &= ~(1<<PD6); | |||
#else | |||
PORTD &= ~(1<<PD5); | |||
#endif | |||
} | |||
void vibration(uint16_t duration) | |||
{ | |||
vibration_state = 1; | |||
vibration_start = timer_read(); | |||
vibration_duration = duration; | |||
vibration_enable(); | |||
} |
@@ -0,0 +1,24 @@ | |||
/* | |||
Copyright 2014 Kai Ryu <[email protected]> | |||
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 <stdint.h> | |||
void vibration_init(void); | |||
void vibration_task(void); | |||
void vibration_enable(void); | |||
void vibration_disable(void); | |||
void vibration(uint16_t duration); |