Directly start a song from list

This commit is contained in:
Stefan Ostermann 2023-08-28 10:05:45 +02:00
parent 0697ad90be
commit 183c17c37c
3 changed files with 43 additions and 2 deletions

View File

@ -66,6 +66,7 @@ const char index_html[] PROGMEM = R"rawliteral(
var liText = this.innerText; var liText = this.innerText;
var inputField = document.getElementById('titleid'); var inputField = document.getElementById('titleid');
inputField.value = liText; inputField.value = liText;
playNamedSong(liText);
}); });
}); });
@ -92,6 +93,16 @@ const char index_html[] PROGMEM = R"rawliteral(
document.getElementById("state").innerHTML = state; document.getElementById("state").innerHTML = state;
} }
function playNamedSong(song) {
var xhr = new XMLHttpRequest();
xhr.open("POST", "/playnamed");
xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded; charset=UTF-8");
//application/x-www-form-urlencoded
var body = song;
xhr.send("title="+encodeURIComponent(body));
}
</script> </script>
</body> </body>
</html>)rawliteral"; </html>)rawliteral";

View File

@ -5,6 +5,8 @@ void stop();
void start(); void start();
bool playFile(const char* filename, uint32_t resumeFilePos = 0);
void loop2(void* parameter); void loop2(void* parameter);
void named_song_action(AsyncWebServerRequest *request); void named_song_action(AsyncWebServerRequest *request);
@ -30,6 +32,22 @@ String getRFIDString(byte uidByte[10])
return uidString; return uidString;
} }
void writeFile(fs::FS &fs, const char * path, const char * message){
Serial.printf("Writing file: %s\n", path);
File file = fs.open(path, FILE_WRITE);
if(!file){
Serial.println("Failed to open file for writing");
return;
}
if(file.print(message)){
Serial.println("File written");
} else {
Serial.println("Write failed");
}
file.close();
}
unsigned long lastStart = 0; unsigned long lastStart = 0;
const int startDelay = 250; const int startDelay = 250;

View File

@ -88,7 +88,7 @@ void playSongByName(String song) {
Serial.println(mp3File.c_str()); Serial.println(mp3File.c_str());
deactivateRFID(); deactivateRFID();
activateSD(); activateSD();
audio.connecttoSD(mp3File.c_str()); playFile(mp3File.c_str());
activateRFID(); activateRFID();
deactivateSD(); deactivateSD();
} }
@ -101,6 +101,18 @@ void playSongByRFID(String id) {
} }
/**
* @brief Wrapper, so that we can intercept each call for other stuff.
*
* @param filename
* @param resumeFilePos
* @return true
* @return false
*/
bool playFile(const char* filename, uint32_t resumeFilePos) {
return audio.connecttoSD(filename, resumeFilePos);
}
void playNextMp3() void playNextMp3()
@ -123,7 +135,7 @@ void playNextMp3()
Serial.println(mp3File.c_str()); Serial.println(mp3File.c_str());
deactivateRFID(); deactivateRFID();
activateSD(); activateSD();
audio.connecttoSD(mp3File.c_str()); playFile(mp3File.c_str());
activateRFID(); activateRFID();
deactivateSD(); deactivateSD();
} }