use persistent connection for polling

This commit is contained in:
2020-03-18 12:18:29 +01:00
parent ffc9accb6c
commit 12169da8bd

View File

@@ -22,7 +22,7 @@ Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, -1);
const char* ssid = "hiddennetworkforchromecast";
const char* password = "raisingelephantsissoutterlyboring";
WiFiClient espClient;
WiFiClient songinfoClient;
struct song_info {
String title;
@@ -266,37 +266,34 @@ int get_player_info(player_info* player_info) {
}
int get_song_info(song_info* song_info) {
WiFiClient client;
if (!songinfoClient.connected()) {
Serial.println("reconnect");
if (!songinfoClient.connect(MPDHOST, MPDPORT)) {
display_error("mpd connect failed");
Serial.println("mpd connect failed");
songinfoClient.stop();
return 1;
}
}
if (client.connect(MPDHOST, MPDPORT)) {
Serial.println("connected");
client.print("currentsong\n");
songinfoClient.print("currentsong\n");
while (client.connected() || client.available())
{
if (client.available())
{
String line = client.readStringUntil('\n');
if (line.startsWith("Title: ")) {
song_info->title = line.substring(7);
}
else if (line.startsWith("Artist: ")) {
song_info->artist = line.substring(8);
}
else if (line.equals("OK")) {
client.stop();
}
}
while (songinfoClient.connected() || songinfoClient.available())
{
if (songinfoClient.available())
{
String line = songinfoClient.readStringUntil('\n');
if (line.startsWith("Title: ")) {
song_info->title = line.substring(7);
}
client.stop();
Serial.println("connection done");
}
else {
display_error("mpd connect failed");
client.stop();
return 1;
}
else if (line.startsWith("Artist: ")) {
song_info->artist = line.substring(8);
}
else if (line.equals("OK")) {
break;
}
}
}
return 0;
}