Sfoglia il codice sorgente

Support vibration motor for TentaPad

old_master
Kai Ryu 9 anni fa
parent
commit
ea9dbf1dba

+ 2
- 1
keyboard/tentapad/Makefile Vedi File

matrix.c \ matrix.c \
led.c \ led.c \
backlight.c \ backlight.c \
ledmap.c
ledmap.c \
vibration.c


ifdef KEYMAP ifdef KEYMAP
SRC := keymap_$(KEYMAP).c $(SRC) SRC := keymap_$(KEYMAP).c $(SRC)

+ 3
- 1
keyboard/tentapad/Makefile_gh60 Vedi File



# project specific files # project specific files
SRC = keymap_common.c \ SRC = keymap_common.c \
tentapad.c \
matrix.c \ matrix.c \
led.c \ led.c \
backlight.c \ backlight.c \
ledmap.c
ledmap.c \
vibration.c


ifdef KEYMAP ifdef KEYMAP
SRC := keymap_$(KEYMAP).c $(SRC) SRC := keymap_$(KEYMAP).c $(SRC)

+ 5
- 0
keyboard/tentapad/matrix.c Vedi File

#ifdef PS2_MOUSE_ENABLE #ifdef PS2_MOUSE_ENABLE
#include "ps2.h" #include "ps2.h"
#endif #endif
#include "vibration.h"
#include "keymap_common.h" #include "keymap_common.h"






keymaps_cache_init(); keymaps_cache_init();


vibration_init();

// initialize cols // initialize cols
init_cols(); init_cols();
} }
} }
*/ */


vibration_task();

return 1; return 1;
} }



+ 2
- 0
keyboard/tentapad/tentapad.c Vedi File

#include "softpwm_led.h" #include "softpwm_led.h"
#include "eeconfig.h" #include "eeconfig.h"
#include "keymap_common.h" #include "keymap_common.h"
#include "vibration.h"
#include "tentapad.h" #include "tentapad.h"
#include "debug.h" #include "debug.h"


break; break;
case KEY_TT: case KEY_TT:
if (event.pressed) { if (event.pressed) {
vibration(64);
switch (backlight_mode) { switch (backlight_mode) {
case 1: case 2: case 1: case 2:
softpwm_led_increase(LED_KEY_SIDE - 1 + backlight_mode, 32); softpwm_led_increase(LED_KEY_SIDE - 1 + backlight_mode, 32);

+ 71
- 0
keyboard/tentapad/vibration.c Vedi File

/*
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();
}

+ 24
- 0
keyboard/tentapad/vibration.h Vedi File

/*
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);