@trainbird Danke das du dran bleibst, das wird sicher ein wichtiges Feature für’s nächste Release!
Das Problem der zur Entwurfszeit festgelegten #Defines bleibt & ich hatte es auch nicht geschafft sie zur Laufzeit als Bool auszuwerten.
Mir ist da aber noch eine Idee gekommen:
Am Beispiel Mono/Stereo, aus
#define PLAY_MONO_SPEAKER
wird
const bool PLAY_MONO_SPEAKER = true // oder false
Der Code würde sich an vielen Stellen vereinfachen von z.B.
#ifdef PLAY_MONO_SPEAKER
gPlayProperties.currentPlayMono = true;
#else
gPlayProperties.currentPlayMono = false;
#endif
zu
gPlayProperties.currentPlayMono = gPrefsSettings.getBool("playMono", PLAY_MONO_SPEAKER);
Damit kann zur Compilezeit festgelegt werden ob Mono/Stereo und zur Laufzeit dann in der Weboberfläche umgeschaltet werden.
Einziger Nachteil hier ist ein „breaking-change“, die settings.h
müssen neu eingestellt werden sofern zur Compilezeit vom Anwender gewünscht. Kann dann später eh über die Weboberfläche umgeschaltet werden. Ich halte es jetzt für vertretbar weil wir eh gerade größere Änderungen gemacht haben wie z.B. Nahendes Supportende für ESP32 ohne PSRAM
Alternativ könnte man die Compilezeit Vorgabewerte komplett entfernen, hart voreinstellen, z.B. auf Stereo
gPlayProperties.currentPlayMono = gPrefsSettings.getBool("playMono", false);
und den ESPuino dann über die Web-UI an den eigenen Geschmack anpassen.
Gibt es noch andere Vorschläge?@biologist Welche Lösung würdest du bevorzugen?