--- a/libupnpp/control/avtransport.hxx
+++ b/libupnpp/control/avtransport.hxx
@@ -18,10 +18,14 @@
#define _AVTRANSPORT_HXX_INCLUDED_
#include <string>
+#include <memory>
#include "service.hxx"
namespace UPnPClient {
+
+class AVTransport;
+typedef std::shared_ptr<AVTransport> AVTH;
/**
* AVTransport Service client class.
@@ -42,13 +46,93 @@
AVTransport() {}
+ enum TransportState {Unknown, Stopped, Playing, Transitioning,
+ PausedPlayback, PausedRecording, Recording,
+ NoMediaPresent};
+ enum TransportStatus {TPS_Unknown, TPS_Ok, TPS_Error};
+ enum PlayMode {PM_Unknown, PM_Normal, PM_Shuffle, PM_RepeatOne,
+ PM_RepeatAll, PM_Random, PM_Direct1};
+
+
+ int setAVTransportURI(const string& uri, const string& metadata,
+ int instanceID=0)
+ {
+ return setURI(uri, metadata, instanceID, false);
+ }
+
+ int setNextAVTransportURI(const string& uri, const string& metadata,
+ int instanceID=0)
+ {
+ return setURI(uri, metadata, instanceID, true);
+ }
+
+ int setPlayMode(PlayMode pm, int instanceID=0);
+ struct MediaInfo {
+ int nrtracks;
+ int mduration; // seconds
+ std::string cururi;
+ UPnPDirObject curmeta;
+ std::string nexturi;
+ UPnPDirObject nextmeta;
+ std::string pbstoragemed;
+ std::string rcstoragemed;
+ std::string ws;
+ };
+ int getMediaInfo(MediaInfo& info, int instanceID=0);
+
+ struct TransportInfo {
+ TransportState tpstate;
+ TransportStatus tpstatus;
+ int curspeed;
+ };
+ int getTransportInfo(TransportInfo& info, int instanceID=0);
+
+ struct PositionInfo {
+ int track;
+ int trackduration; // secs
+ UPnPDirObject trackmeta;
+ std::string trackuri;
+ int reltime;
+ int abstime;
+ int relcount;
+ int abscount;
+ };
+ int getPositionInfo(PositionInfo& info, int instanceID=0);
+
+ struct DeviceCapabilities {
+ std::string playmedia;
+ std::string recmedia;
+ std::string recqualitymodes;
+ };
+ int getDeviceCapabilities(DeviceCapabilities& info, int instanceID=0);
+
+ struct TransportSettings {
+ PlayMode playmode;
+ std::string recqualitymode;
+ };
+ int getTransportSettings(TransportSettings& info, int instanceID=0);
+
+ int stop(int instanceID=0);
+ int pause(int instanceID=0);
+ int play(int speed = 1, int instanceID = 0);
+ enum SeekMode {SEEK_TRACK_NR, SEEK_ABS_TIME,
+ SEEK_REL_TIME, SEEK_ABS_COUNT,
+ SEEK_REL_COUNT, SEEK_CHANNEL_FREQ,
+ SEEK_TAPE_INDEX, SEEK_FRAME};
+ // Target in seconds for times.
+ int seek(SeekMode mode, int target, int instanceID=0);
+ int next(int instanceID=0);
+ int previous(int instanceID=0);
+
+ int getCurrentTransportActions(std::string& actions, int instanceID=0);
+
/** Test service type from discovery message */
static bool isAVTService(const std::string& st);
-
protected:
static const string SType;
-
+ int setURI(const string& uri, const string& metadata,
+ int instanceID, bool next);
private:
void evtCallback(const std::unordered_map<std::string, std::string>&);
void registerCallback();