Child: [356136] (diff)

Download this file

avtransport.cxx    102 lines (89 with data), 4.4 kB

  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
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
/* Copyright (C) 2014 J.F.Dockes
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the
* Free Software Foundation, Inc.,
* 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
*/
#include <string>
#include <functional>
using namespace std;
using namespace std::placeholders;
#include <upnp/upnp.h>
#include "libupnpp/soaphelp.hxx"
#include "libupnpp/upnpp_p.hxx"
#include "libupnpp/log.hxx"
#include "libupnpp/control/avtransport.hxx"
#include "libupnpp/control/avlastchg.hxx"
namespace UPnPClient {
const string AVTransport::SType("urn:schemas-upnp-org:service:AVTransport:1");
// Check serviceType string (while walking the descriptions. We don't
// include a version in comparisons, as we are satisfied with version1
bool AVTransport::isAVTService(const string& st)
{
const string::size_type sz(SType.size()-2);
return !SType.compare(0, sz, st, 0, sz);
}
void AVTransport::evtCallback(
const std::unordered_map<std::string, std::string>& props)
{
//LOGDEB("AVTransport::evtCallback:" << endl);
for (auto& entry: props) {
if (entry.first.compare("LastChange")) {
LOGINF("AVTransport:event: var not lastchange: "
<< entry.first << " -> " << entry.second << endl;);
continue;
}
std::unordered_map<std::string, std::string> props1;
if (!decodeAVLastChange(entry.second, props1)) {
LOGERR("AVTransport::evtCallback: bad LastChange value: "
<< entry.second << endl);
return;
}
for (auto& entry1: props1) {
//LOGDEB(" " << entry1.first << " -> " <<
// entry1.second << endl);
if (!entry1.first.compare("TransportState")) {
} else if (!entry1.first.compare("CurrentTransportActions")) {
} else if (!entry1.first.compare("TransportStatus")) {
} else if (!entry1.first.compare("TransportPlaySpeed")) {
} else if (!entry1.first.compare("CurrentTrack")) {
} else if (!entry1.first.compare("CurrentTrackURI")) {
} else if (!entry1.first.compare("CurrentTrackMetaData")) {
} else if (!entry1.first.compare("NumberOfTracks")) {
} else if (!entry1.first.compare("CurrentMediaDuration")) {
} else if (!entry1.first.compare("CurrentTrackDuration")) {
} else if (!entry1.first.compare("AVTransportURI")) {
} else if (!entry1.first.compare("AVTransportURIMetaData")) {
} else if (!entry1.first.compare("RelativeTimePosition")) {
} else if (!entry1.first.compare("AbsoluteTimePosition")) {
} else if (!entry1.first.compare("NextAVTransportURI")) {
} else if (!entry1.first.compare("NextAVTransportURIMetaData")){
} else if (!entry1.first.compare("PlaybackStorageMedium")) {
} else if (!entry1.first.compare("PossiblePlaybackStorageMedium")) {
} else if (!entry1.first.compare("RecordStorageMedium")) {
} else if (!entry1.first.compare("RelativeCounterPosition")) {
} else if (!entry1.first.compare("AbsoluteCounterPosition")) {
} else if (!entry1.first.compare("CurrentPlayMode")) {
} else if (!entry1.first.compare("PossibleRecordStorageMedium")) {
} else if (!entry1.first.compare("RecordMediumWriteStatus")) {
} else if (!entry1.first.compare("CurrentRecordQualityMode")) {
} else if (!entry1.first.compare("PossibleRecordQualityModes")){
}
}
}
}
void AVTransport::registerCallback()
{
Service::registerCallback(bind(&AVTransport::evtCallback, this, _1));
}
} // End namespace UPnPClient