NymphCast Client Library
nymphcast_client.h
1 /*
2  nymphcast_client.h - Header file for the NymphCast client library.
3 
4  Revision 0
5 
6  Notes:
7  -
8 
9  2019/10/26, Maya Posch
10 */
11 
12 
13 #ifndef NYMPHCAST_CLIENT_H
14 #define NYMPHCAST_CLIENT_H
15 
16 
17 #include <string>
18 #include <fstream>
19 #include <functional>
20 #include <vector>
21 
22 #include <nymph/nymph.h>
23 
24 
26  std::string name;
27  std::string ipv4;
28  std::string ipv6;
29  uint16_t port;
30 };
31 
32 
33 enum NymphRemoteStatus {
34  NYMPH_PLAYBACK_STATUS_STOPPED = 1,
35  NYMPH_PLAYBACK_STATUS_PLAYING = 2,
36  NYMPH_PLAYBACK_STATUS_PAUSED = 3
37 };
38 
39 
41  NymphRemoteStatus status;
42  bool error;
43  bool playing;
44  uint64_t duration;
45  double position;
46  uint8_t volume;
47  std::string title;
48  std::string artist;
49 };
50 
51 
53  NymphCastRemote mediaserver;
54  uint32_t id;
55  std::string name;
56  std::string section;
57 };
58 
59 
60 typedef std::function<void(std::string appId, std::string message)> AppMessageFunction;
61 typedef std::function<void(uint32_t handle, NymphPlaybackStatus status)> StatusUpdateFunction;
62 
63 
65  std::string clientId = "NymphClient_21xb";
66  std::ifstream source;
67 
68  AppMessageFunction appMessageFunction;
69  StatusUpdateFunction statusUpdateFunction;
70 
71  void MediaReadCallback(uint32_t session, NymphMessage* msg, void* data);
72  void MediaStopCallback(uint32_t session, NymphMessage* msg, void* data);
73  void MediaSeekCallback(uint32_t session, NymphMessage* msg, void* data);
74  void MediaStatusCallback(uint32_t session, NymphMessage* msg, void* data);
75  void ReceiveFromAppCallback(uint32_t session, NymphMessage* msg, void* data);
76 
77 public:
79  ~NymphCastClient();
80 
81  void setClientId(std::string id);
82  void setApplicationCallback(AppMessageFunction function);
83  void setStatusUpdateCallback(StatusUpdateFunction function);
84  std::string getApplicationList(uint32_t handle);
85  std::string sendApplicationMessage(uint32_t handle, std::string appId, std::string message);
86  std::string loadResource(uint32_t handle, std::string appId, std::string name);
87 
88  std::vector<NymphCastRemote> findServers();
89  std::vector<NymphCastRemote> findShares();
90  bool connectServer(std::string ip, uint32_t &handle);
91  bool disconnectServer(uint32_t handle);
92 
93  std::vector<NymphMediaFile> getShares(NymphCastRemote mediaserver);
94  bool playShare(NymphMediaFile file, std::vector<NymphCastRemote> receivers);
95 
96  bool addSlaves(uint32_t handle, std::vector<NymphCastRemote> remotes);
97  bool castFile(uint32_t handle, std::string filename);
98  bool castUrl(uint32_t handle, std::string url);
99 
100  uint8_t volumeSet(uint32_t handle, uint8_t volume);
101  uint8_t volumeUp(uint32_t handle);
102  uint8_t volumeDown(uint32_t handle);
103 
104  uint8_t playbackStart(uint32_t handle);
105  uint8_t playbackStop(uint32_t handle);
106  uint8_t playbackPause(uint32_t handle);
107  uint8_t playbackRewind(uint32_t handle);
108  uint8_t playbackForward(uint32_t handle);
109  uint8_t playbackSeek(uint32_t handle, uint64_t location);
110  uint8_t playbackSeek(uint32_t handle, uint8_t percentage);
111  NymphPlaybackStatus playbackStatus(uint32_t handle);
112 };
113 
114 
115 #endif
Definition: nymphcast_client.h:64
bool castUrl(uint32_t handle, std::string url)
Definition: nymphcast_client.cpp:756
NymphCastClient()
Definition: nymphcast_client.cpp:199
uint8_t playbackStop(uint32_t handle)
Definition: nymphcast_client.cpp:904
uint8_t playbackStart(uint32_t handle)
Definition: nymphcast_client.cpp:875
uint8_t playbackRewind(uint32_t handle)
Definition: nymphcast_client.cpp:962
bool disconnectServer(uint32_t handle)
Definition: nymphcast_client.cpp:502
bool playShare(NymphMediaFile file, std::vector< NymphCastRemote > receivers)
Definition: nymphcast_client.cpp:594
std::vector< NymphCastRemote > findShares()
Definition: nymphcast_client.cpp:400
std::string sendApplicationMessage(uint32_t handle, std::string appId, std::string message)
Definition: nymphcast_client.cpp:286
void setStatusUpdateCallback(StatusUpdateFunction function)
Definition: nymphcast_client.cpp:243
std::vector< NymphCastRemote > findServers()
Definition: nymphcast_client.cpp:360
std::vector< NymphMediaFile > getShares(NymphCastRemote mediaserver)
Definition: nymphcast_client.cpp:535
uint8_t playbackForward(uint32_t handle)
Definition: nymphcast_client.cpp:991
uint8_t volumeDown(uint32_t handle)
Definition: nymphcast_client.cpp:846
std::string getApplicationList(uint32_t handle)
Definition: nymphcast_client.cpp:256
std::string loadResource(uint32_t handle, std::string appId, std::string name)
Definition: nymphcast_client.cpp:319
uint8_t playbackSeek(uint32_t handle, uint64_t location)
Definition: nymphcast_client.cpp:1021
uint8_t volumeSet(uint32_t handle, uint8_t volume)
Definition: nymphcast_client.cpp:787
void setApplicationCallback(AppMessageFunction function)
Definition: nymphcast_client.cpp:232
void setClientId(std::string id)
Definition: nymphcast_client.cpp:221
bool addSlaves(uint32_t handle, std::vector< NymphCastRemote > remotes)
Definition: nymphcast_client.cpp:656
bool castFile(uint32_t handle, std::string filename)
Definition: nymphcast_client.cpp:694
NymphPlaybackStatus playbackStatus(uint32_t handle)
Definition: nymphcast_client.cpp:1092
uint8_t volumeUp(uint32_t handle)
Definition: nymphcast_client.cpp:817
bool connectServer(std::string ip, uint32_t &handle)
Definition: nymphcast_client.cpp:436
uint8_t playbackPause(uint32_t handle)
Definition: nymphcast_client.cpp:933
Definition: nymphcast_client.h:25
Definition: nymphcast_client.h:52
Definition: nymphcast_client.h:40