summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--data/mappings/info_config.hjson2
-rw-r--r--data/schemas/keyboard.jsonschema8
-rw-r--r--docs/reference_info_json.md7
-rw-r--r--quantum/audio/audio.c37
-rw-r--r--quantum/audio/audio.h3
-rw-r--r--quantum/eeconfig.c2
6 files changed, 42 insertions, 17 deletions
diff --git a/data/mappings/info_config.hjson b/data/mappings/info_config.hjson
index 45c50a9242..7930eed642 100644
--- a/data/mappings/info_config.hjson
+++ b/data/mappings/info_config.hjson
@@ -17,6 +17,8 @@
"APA102_DI_PIN": {"info_key": "apa102.data_pin"},
// Audio
+ "AUDIO_DEFAULT_ON": {"info_key": "audio.default.on", "value_type": "bool"},
+ "AUDIO_DEFAULT_CLICKY_ON": {"info_key": "audio.default.clicky", "value_type": "bool"},
"AUDIO_VOICES": {"info_key": "audio.voices", "value_type": "bool"},
"SENDSTRING_BELL": {"info_key": "audio.macro_beep", "value_type": "bool"},
diff --git a/data/schemas/keyboard.jsonschema b/data/schemas/keyboard.jsonschema
index 32d737a1d8..4836cf1fca 100644
--- a/data/schemas/keyboard.jsonschema
+++ b/data/schemas/keyboard.jsonschema
@@ -123,6 +123,14 @@
"type": "object",
"additionalProperties": false,
"properties": {
+ "default": {
+ "type": "object",
+ "additionalProperties": false,
+ "properties": {
+ "on": {"type": "boolean"},
+ "clicky": {"type": "boolean"}
+ }
+ },
"macro_beep": {"type": "boolean"},
"pins": {"$ref": "qmk.definitions.v1#/mcu_pin_array"},
"voices": {"type": "boolean"}
diff --git a/docs/reference_info_json.md b/docs/reference_info_json.md
index e102b9bfb9..1f73ec8fae 100644
--- a/docs/reference_info_json.md
+++ b/docs/reference_info_json.md
@@ -111,6 +111,13 @@ Configures the [APA102](apa102_driver.md) driver.
Configures the [Audio](feature_audio.md) feature.
* `audio`
+ * `default`
+ * `on`
+ * The default audio enabled state.
+ * Default: `true`
+ * `clicky`
+ * The default audio clicky enabled state.
+ * Default: `true`
* `macro_beep`
* Play a short beep for `\a` (ASCII `BEL`) characters in Send String macros.
* Default: `false`
diff --git a/quantum/audio/audio.c b/quantum/audio/audio.c
index 28c8267517..c1a1500493 100644
--- a/quantum/audio/audio.c
+++ b/quantum/audio/audio.c
@@ -17,6 +17,7 @@
#include "audio.h"
#include "eeconfig.h"
#include "timer.h"
+#include "debug.h"
#include "wait.h"
#include "util.h"
@@ -62,6 +63,13 @@
* the internal state of the audio system does its calculations with the later - ms
*/
+#ifndef AUDIO_DEFAULT_ON
+# define AUDIO_DEFAULT_ON true
+#endif
+#ifndef AUDIO_DEFAULT_CLICKY_ON
+# define AUDIO_DEFAULT_CLICKY_ON true
+#endif
+
#ifndef AUDIO_TONE_STACKSIZE
# define AUDIO_TONE_STACKSIZE 8
#endif
@@ -117,32 +125,31 @@ void eeconfig_update_audio_current(void) {
eeconfig_update_audio(audio_config.raw);
}
+void eeconfig_update_audio_default(void) {
+ audio_config.valid = true;
+ audio_config.enable = AUDIO_DEFAULT_ON;
+ audio_config.clicky_enable = AUDIO_DEFAULT_CLICKY_ON;
+ eeconfig_update_audio(audio_config.raw);
+}
+
void audio_init(void) {
if (audio_initialized) {
return;
}
- // Check EEPROM
-#ifdef EEPROM_ENABLE
- if (!eeconfig_is_enabled()) {
- eeconfig_init();
- }
audio_config.raw = eeconfig_read_audio();
-#else // EEPROM settings
- audio_config.enable = true;
-# ifdef AUDIO_CLICKY_ON
- audio_config.clicky_enable = true;
-# endif
-#endif // EEPROM settings
+ if (!audio_config.valid) {
+ dprintf("audio_init audio_config.valid = 0. Write default values to EEPROM.\n");
+ eeconfig_update_audio_default();
+ }
for (uint8_t i = 0; i < AUDIO_TONE_STACKSIZE; i++) {
tones[i] = (musical_tone_t){.time_started = 0, .pitch = -1.0f, .duration = 0};
}
- if (!audio_initialized) {
- audio_driver_initialize();
- audio_initialized = true;
- }
+ audio_driver_initialize();
+ audio_initialized = true;
+
stop_all_notes();
#ifndef AUDIO_INIT_DELAY
audio_startup();
diff --git a/quantum/audio/audio.h b/quantum/audio/audio.h
index a4a908b43c..eb0bedc6f9 100644
--- a/quantum/audio/audio.h
+++ b/quantum/audio/audio.h
@@ -33,7 +33,8 @@ typedef union {
struct {
bool enable : 1;
bool clicky_enable : 1;
- uint8_t level : 6;
+ bool valid : 1;
+ uint8_t reserved : 5;
};
} audio_config_t;
diff --git a/quantum/eeconfig.c b/quantum/eeconfig.c
index d9eea13758..2d2180b4b4 100644
--- a/quantum/eeconfig.c
+++ b/quantum/eeconfig.c
@@ -54,7 +54,7 @@ void eeconfig_init_quantum(void) {
// Enable oneshot and autocorrect by default: 0b0001 0100 0000 0000
eeprom_update_word(EECONFIG_KEYMAP, 0x1400);
eeprom_update_byte(EECONFIG_BACKLIGHT, 0);
- eeprom_update_byte(EECONFIG_AUDIO, 0xFF); // On by default
+ eeprom_update_byte(EECONFIG_AUDIO, 0);
eeprom_update_dword(EECONFIG_RGBLIGHT, 0);
eeprom_update_byte(EECONFIG_RGBLIGHT_EXTENDED, 0);
eeprom_update_byte(EECONFIG_UNUSED, 0);