Add functions so you can configure programatically

master
Drashna Jaelre 2018-05-31 12:24:10 -07:00 committed by skullydazed
parent e72e4b6920
commit cfb1b353ee
3 changed files with 53 additions and 19 deletions

View File

@ -40,7 +40,8 @@ typedef union {
uint8_t raw; uint8_t raw;
struct { struct {
bool enable :1; bool enable :1;
uint8_t level :7; bool clicky_enable :1;
uint8_t level :6;
}; };
} audio_config_t; } audio_config_t;

View File

@ -38,29 +38,53 @@ void clicky_play(void) {
PLAY_SONG(clicky_song); PLAY_SONG(clicky_song);
} }
void clicky_freq_up(void) {
float new_freq = clicky_freq * AUDIO_CLICKY_FREQ_FACTOR;
if (new_freq < AUDIO_CLICKY_FREQ_MAX) {
clicky_freq = new_freq;
}
}
void clicky_freq_down(void) {
float new_freq = clicky_freq / AUDIO_CLICKY_FREQ_FACTOR;
if (new_freq > AUDIO_CLICKY_FREQ_MIN) {
clicky_freq = new_freq;
}
}
void clicky_freq_reset(void) {
clicky_freq = AUDIO_CLICKY_FREQ_DEFAULT;
}
void clicky_freq_toggle(void) {
audio_config.clicky_enable ^= 1;
eeconfig_update_audio(audio_config.raw);
}
void clicky_freq_on(void) {
audio_config.clicky_enable = 1;
eeconfig_update_audio(audio_config.raw);
}
void clicky_freq_off(void) {
audio_config.clicky_enable = 0;
eeconfig_update_audio(audio_config.raw);
}
bool is_clicky_on(void) {
return (audio_config.clicky_enable != 0);
}
bool process_clicky(uint16_t keycode, keyrecord_t *record) { bool process_clicky(uint16_t keycode, keyrecord_t *record) {
if (keycode == CLICKY_TOGGLE && record->event.pressed) { if (keycode == CLICKY_TOGGLE && record->event.pressed) { clicky_freq_toggle(); }
audio_config.clicky ^= 1;
eeconfig_update_audio(audio_config.raw);
}
if (keycode == CLICKY_RESET && record->event.pressed) { clicky_freq = AUDIO_CLICKY_FREQ_DEFAULT; } if (keycode == CLICKY_RESET && record->event.pressed) { clicky_freq_reset(); }
if (keycode == CLICKY_UP && record->event.pressed) { if (keycode == CLICKY_UP && record->event.pressed) { clicky_freq_up(); }
float new_freq = clicky_freq * AUDIO_CLICKY_FREQ_FACTOR; if (keycode == CLICKY_DOWN && record->event.pressed) { clicky_freq_down(); }
if (new_freq < AUDIO_CLICKY_FREQ_MAX) {
clicky_freq = new_freq;
}
}
if (keycode == CLICKY_DOWN && record->event.pressed) {
float new_freq = clicky_freq / AUDIO_CLICKY_FREQ_FACTOR;
if (new_freq > AUDIO_CLICKY_FREQ_MIN) {
clicky_freq = new_freq;
}
}
if ( audio_config.clicky ) { if ( audio_config.clicky_enable ) {
if (record->event.pressed) { if (record->event.pressed) {
clicky_play();; clicky_play();;
} }

View File

@ -4,4 +4,13 @@
void clicky_play(void); void clicky_play(void);
bool process_clicky(uint16_t keycode, keyrecord_t *record); bool process_clicky(uint16_t keycode, keyrecord_t *record);
void clicky_freq_up(void);
void clicky_freq_down(void);
void clicky_freq_reset(void);
void clicky_freq_toggle(void);
void clicky_freq_on(void);
void clicky_freq_off(void);
bool is_clicky_on(void);
#endif #endif