diff --git a/src/AudioPlayer.cpp b/src/AudioPlayer.cpp index 29d980e4..66f04117 100644 --- a/src/AudioPlayer.cpp +++ b/src/AudioPlayer.cpp @@ -751,9 +751,18 @@ void AudioPlayer_Task(void *parameter) { audioReturnCode = false; if (gPlayProperties.playMode == WEBSTREAM || (gPlayProperties.playMode == LOCAL_M3U && gPlayProperties.isWebstream)) { // Webstream - audioReturnCode = audio->connecttohost(gPlayProperties.playlist->at(gPlayProperties.currentTrackNumber)); - gPlayProperties.playlistFinished = false; - gTriedToConnectToHost = true; + // wait for wlan to connect or fail to connect before continuing + // NOTE: In the current implementation, the Wifi only tries to connect for a few seconds. So this should not block too long. + while (Wlan_ConnectionTryInProgress()) { + vTaskDelay(portTICK_PERIOD_MS * 100u); + } + if (!Wlan_IsConnected()) { + Log_Println(webstreamNotAvailable, LOGLEVEL_ERROR); + audioReturnCode = false; + } else { + audioReturnCode = audio->connecttohost(gPlayProperties.playlist->at(gPlayProperties.currentTrackNumber)); + gPlayProperties.playlistFinished = false; + } } else if (gPlayProperties.playMode != WEBSTREAM && !gPlayProperties.isWebstream) { // Files from SD if (!gFSystem.exists(gPlayProperties.playlist->at(gPlayProperties.currentTrackNumber))) { // Check first if file/folder exists @@ -1140,10 +1149,6 @@ void AudioPlayer_TrackQueueDispatcher(const char *_itemToPlay, const uint32_t _l case WEBSTREAM: { // This is always just one "track" Log_Println(modeWebstream, LOGLEVEL_NOTICE); - if (!Wlan_IsConnected()) { - Log_Println(webstreamNotAvailable, LOGLEVEL_ERROR); - error = true; - } break; } diff --git a/src/Wlan.cpp b/src/Wlan.cpp index 76802121..151dd0b0 100644 --- a/src/Wlan.cpp +++ b/src/Wlan.cpp @@ -496,18 +496,6 @@ void handleWifiStateConnectionSuccess() { delete dnsServer; dnsServer = nullptr; - bool playLastRfidAfterReboot; -#ifdef PLAY_LAST_RFID_AFTER_REBOOT - playLastRfidAfterReboot = gPrefsSettings.getBool("playLastOnBoot", true); -#else - playLastRfidAfterReboot = gPrefsSettings.getBool("playLastOnBoot", false); -#endif - - if (playLastRfidAfterReboot && gPlayLastRfIdWhenWiFiConnected && gTriedToConnectToHost) { - gPlayLastRfIdWhenWiFiConnected = false; - recoverLastRfidPlayedFromNvs(true); - } - wifiState = WIFI_STATE_CONNECTED; Mqtt_OnWifiConnected(); } @@ -720,7 +708,7 @@ bool Wlan_DeleteNetwork(String ssid) { } bool Wlan_ConnectionTryInProgress(void) { - return wifiState == WIFI_STATE_SCAN_CONN; + return wifiState == WIFI_STATE_INIT || wifiState == WIFI_STATE_CONNECT_LAST || wifiState == WIFI_STATE_SCAN_CONN; } String Wlan_GetIpAddress(void) { diff --git a/src/main.cpp b/src/main.cpp index 4bca7c2f..bbc9b792 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -30,9 +30,6 @@ #include -bool gPlayLastRfIdWhenWiFiConnected = false; -bool gTriedToConnectToHost = false; - static constexpr const char *logo = R"literal( _____ ____ ____ _ | ____| / ___| | _ \ _ _ (_) _ __ ___ @@ -94,8 +91,8 @@ void recoverBootCountFromNvs(void) { } // Get last RFID-tag applied from NVS -void recoverLastRfidPlayedFromNvs(bool force) { - if (recoverLastRfid || force) { +void recoverLastRfidPlayedFromNvs() { + if (recoverLastRfid) { if (System_GetOperationMode() == OPMODE_BLUETOOTH_SINK) { // Don't recover if BT-mode is desired recoverLastRfid = false; return; @@ -106,7 +103,6 @@ void recoverLastRfidPlayedFromNvs(bool force) { Log_Println(unableToRestoreLastRfidFromNVS, LOGLEVEL_INFO); } else { xQueueSend(gRfidCardQueue, lastRfidPlayed.c_str(), 0); - gPlayLastRfIdWhenWiFiConnected = !force; Log_Printf(LOGLEVEL_INFO, restoredLastRfidFromNVS, lastRfidPlayed.c_str()); } } diff --git a/src/main.h b/src/main.h index f0e32ae7..aea863f8 100644 --- a/src/main.h +++ b/src/main.h @@ -1,6 +1,3 @@ #pragma once -extern bool gPlayLastRfIdWhenWiFiConnected; -extern bool gTriedToConnectToHost; - -extern void recoverLastRfidPlayedFromNvs(bool force = false); +extern void recoverLastRfidPlayedFromNvs(); diff --git a/src/revision.h b/src/revision.h index 33d1982b..39078bc2 100644 --- a/src/revision.h +++ b/src/revision.h @@ -1,4 +1,5 @@ #pragma once #include "gitrevision.h" -constexpr const char softwareRevision[] = "Software-revision: 20250515-1-DEV"; + +constexpr const char softwareRevision[] = "Software-revision: 20250613-1-DEV";