Add functions so you can configure programatically

This commit is contained in:
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;
struct {
bool enable :1;
uint8_t level :7;
bool clicky_enable :1;
uint8_t level :6;
};
} audio_config_t;

View file

@ -38,29 +38,53 @@ void clicky_play(void) {
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) {
if (keycode == CLICKY_TOGGLE && record->event.pressed) {
audio_config.clicky ^= 1;
eeconfig_update_audio(audio_config.raw);
}
if (keycode == CLICKY_TOGGLE && record->event.pressed) { clicky_freq_toggle(); }
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) {
float new_freq = clicky_freq * AUDIO_CLICKY_FREQ_FACTOR;
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 (keycode == CLICKY_UP && record->event.pressed) { clicky_freq_up(); }
if (keycode == CLICKY_DOWN && record->event.pressed) { clicky_freq_down(); }
if ( audio_config.clicky ) {
if ( audio_config.clicky_enable ) {
if (record->event.pressed) {
clicky_play();;
}

View file

@ -4,4 +4,13 @@
void clicky_play(void);
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