-
Notifications
You must be signed in to change notification settings - Fork 47
/
Copy pathstatus.h
88 lines (72 loc) · 2.97 KB
/
status.h
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
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
/*
Copyright (c) 2018, Adrian Rossiter
Antiprism - http://www.antiprism.com
Permission is hereby granted, free of charge, to any person obtaining a
copy of this software and associated documentation files (the "Software"),
to deal in the Software without restriction, including without limitation
the rights to use, copy, modify, merge, publish, distribute, sublicense,
and/or sell copies of the Software, and to permit persons to whom the
Software is furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included
in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
IN THE SOFTWARE.
*/
#include "player.h"
#include "timer.h"
#include <mpd/client.h>
#include <string>
class mpd_info {
private:
Player player;
int volume;
std::string origin;
std::string title;
int song_elapsed_secs;
int song_total_secs;
int kbitrate;
enum mpd_state state;
Counter last_change;
void init_vals();
void set_vals(struct mpd_connection *conn);
void set_vals_mpd(struct mpd_connection *conn);
void set_vals_volumio(struct mpd_connection *conn);
public:
enum { SOURCE_MPD = 0, SOURCE_VOLUMIO };
mpd_info(); // Constructor
int init(); // Initialise with current status values
void set_player(Player plyr) { player = plyr; }
void print_vals() const;
int get_volume() const; // Volume: 0 - 100
std::string get_origin() const; // Song origin: station, artist, album...
std::string get_title() const; // Song title
int get_elapsed_secs() const; // Elapsed time of song in seconds
int get_total_secs() const; // Total time of song in seconds
int get_kbitrate() const; // KBitrate
std::string get_kbitrate_str() const; // KBitrate as string
std::string get_elapsed_time() const; // Elapsed time of song: hh:mm:ss
std::string get_total_time() const; // Total time of song: hh:mm:ss
float get_progress() const; // Progress through song: 0.00 - 1.00
enum mpd_state get_state() const; // MPD_STATE_: UNKNOWN, STOP, PAUSE, START
};
class connection_info {
private:
std::string if_name;
std::string ip_addr;
int type;
int link;
public:
enum { TYPE_ETH = 0, TYPE_WIFI, TYPE_UNKNOWN };
connection_info() : type(TYPE_UNKNOWN) {}
bool init();
bool is_set() const { return type != TYPE_UNKNOWN; }
std::string get_if_name() const { return if_name; }
std::string get_ip_addr() const { return ip_addr; }
int get_type() const { return (int)type; }
int get_link() const { return link; }
};