-
Notifications
You must be signed in to change notification settings - Fork 0
/
DeviceModeSpotify.cpp
54 lines (43 loc) · 1.54 KB
/
DeviceModeSpotify.cpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
#include "DeviceModeSpotify.h"
#include "defines.h"
bool DeviceModeSpotify::Start()
{
hasValidAccessToken = spotify->checkAndRefreshAccessToken();
if(!hasValidAccessToken)
{
Serial.println("DeviceModeSpotify: CheckAndRefreshAccessToken failed.");
#ifdef DISPLAYTYPE_IV4
display->ShiftText("Login to Spotify...");
#endif
return hasValidAccessToken;
}
// Ensure we poll for an update immediately
timeSinceUpdate = timeBetweenUpdates;
}
bool DeviceModeSpotify::Stop()
{
return true;
}
void DeviceModeSpotify::OnTick()
{
timeSinceUpdate = millis() - lastUpdatedMillis;
// Update song time
if (currentlyPlaying.isPlaying && currentSongTime <= currentlyPlaying.durationMs)
currentSongTime = currentlyPlaying.progressMs + timeSinceUpdate;
if (currentSongTime > currentlyPlaying.durationMs)
currentSongTime = currentlyPlaying.durationMs;
// manually calculate the time in hrs, min and sec the song is playing for.
unsigned long totalSeconds = currentSongTime / 1000;
int hrs = totalSeconds / 3600;
int secsRemaining = totalSeconds % 3600;
int mins = secsRemaining / 60;
int secs = secsRemaining % 60;
display->ShiftCurrentTimeFull(hrs, mins, secs, true);
if (timeSinceUpdate < timeBetweenUpdates || !hasValidAccessToken)
return;
int status = spotify->getCurrentlyPlaying(currentlyPlaying);
if (status == 200)
currentSongTime = currentlyPlaying.progressMs;
lastUpdatedMillis = millis();
timeSinceUpdate = 0;
}