Step 7.5b2: Spotify Connect zeroconf and login work (PCM counted only)
- Zeroconf on our httpd (GET/POST /spotify_info, form body URL-decoded) and _spotify-connect._tcp via our mDNS (VERSION, CPath, Stack TXT). - Session task: waits for the app's login blob, connects with the user's client ID/secret and the configured bitrate (96/160/320 -> OGG_VORBIS_*), SpircHandler, events logged; cspot exceptions caught. Starts when source.mode is spotify/auto and credentials are set. - bell::bellGlobalLogger was NULL: every CSPOT_LOG crashed the board right after addUser (Load access fault in Session.cpp:67 / LoginBlob.cpp:58). cspot/bell logs now go to esp_log (UART + syslog); signed CDN URL tokens are cut from the log. - esp_audio_codec's own Vorbis decoder clashed with bell's Tremor symbols: CONFIG_AUDIO_DECODER_VORBIS_SUPPORT / SIMPLE_DEC_OGG off. - status.spotify_state from the session (waiting / connecting / connected / login failed / error / disabled / no client credentials). - Verified from a Mac: device appears, "connected as <user>", access token fetched with the user's client credentials, track info, audio key, CDN URL (the step broken upstream), PCM decoded. Without backpressure a track decodes in ~26 s (b3 feeds the ring). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
+2
-8
@@ -96,11 +96,7 @@ static void player_status(cJSON *st)
|
||||
s_src == SRC_SPOTIFY ? "not implemented" : s_playing ? "playing" : "buffering";
|
||||
cJSON_AddStringToObject(st, "active_source", SRC_NAME[s_src]);
|
||||
cJSON_AddStringToObject(st, "source_state", state);
|
||||
cJSON *src = cfg_get("source");
|
||||
bool creds = cJSON_GetObjectItemCaseSensitive(src, "spotify_client_id")->valuestring[0] &&
|
||||
cJSON_GetObjectItemCaseSensitive(src, "spotify_client_secret")->valuestring[0];
|
||||
cJSON_Delete(src);
|
||||
cJSON_AddStringToObject(st, "spotify_state", creds ? "not implemented" : "no client credentials");
|
||||
cJSON_AddStringToObject(st, "spotify_state", spotify_state());
|
||||
cJSON_AddNumberToObject(st, "buffer_ms", (double)(audio_ring_level() * 1000 / RATE));
|
||||
}
|
||||
|
||||
@@ -119,9 +115,7 @@ esp_err_t player_init(void)
|
||||
if (err != ESP_OK) {
|
||||
return err;
|
||||
}
|
||||
cJSON *sc = cfg_get("source");
|
||||
spotify_init(cJSON_GetObjectItemCaseSensitive(sc, "spotify_name")->valuestring);
|
||||
cJSON_Delete(sc);
|
||||
spotify_init();
|
||||
err = hls_start(decoder_feed);
|
||||
if (err != ESP_OK) {
|
||||
return err;
|
||||
|
||||
Reference in New Issue
Block a user