27 "scpd",
"xmlns=\"urn:schemas-upnp-org:service-1-0\"");
39 result += xml.
printNode(
"name",
"GetCurrentTransportActions");
41 result += xml.
printArgument(
"InstanceID",
"in",
"A_ARG_TYPE_InstanceID");
42 result += xml.
printArgument(
"Actions",
"out",
"CurrentTransportActions");
48 result += xml.
printNode(
"name",
"GetDeviceCapabilities");
50 result += xml.
printArgument(
"InstanceID",
"in",
"A_ARG_TYPE_InstanceID");
52 xml.
printArgument(
"PlayMedia",
"out",
"PossiblePlaybackStorageMedia");
54 xml.
printArgument(
"RecMedia",
"out",
"PossibleRecordStorageMedia");
56 "PossibleRecordQualityModes");
62 result += xml.
printNode(
"name",
"GetMediaInfo");
64 result += xml.
printArgument(
"InstanceID",
"in",
"A_ARG_TYPE_InstanceID");
65 result += xml.
printArgument(
"NrTracks",
"out",
"NumberOfTracks");
66 result += xml.
printArgument(
"MediaDuration",
"out",
"CurrentMediaDuration");
67 result += xml.
printArgument(
"CurrentURI",
"out",
"AVTransportURI");
69 "AVTransportURIMetaData");
70 result += xml.
printArgument(
"NextURI",
"out",
"NextAVTransportURI");
72 "NextAVTransportURIMetaData");
73 result += xml.
printArgument(
"PlayMedium",
"out",
"PlaybackStorageMedium");
74 result += xml.
printArgument(
"RecordMedium",
"out",
"RecordStorageMedium");
76 xml.
printArgument(
"WriteStatus",
"out",
"RecordMediumWriteStatus");
82 result += xml.
printNode(
"name",
"GetPositionInfo");
84 result += xml.
printArgument(
"InstanceID",
"in",
"A_ARG_TYPE_InstanceID");
86 result += xml.
printArgument(
"TrackDuration",
"out",
"CurrentTrackDuration");
87 result += xml.
printArgument(
"TrackMetaData",
"out",
"CurrentTrackMetaData");
88 result += xml.
printArgument(
"TrackURI",
"out",
"CurrentTrackURI");
89 result += xml.
printArgument(
"RelTime",
"out",
"RelativeTimePosition");
90 result += xml.
printArgument(
"AbsTime",
"out",
"AbsoluteTimePosition");
91 result += xml.
printArgument(
"RelCount",
"out",
"RelativeCounterPosition");
92 result += xml.
printArgument(
"AbsCount",
"out",
"AbsoluteCounterPosition");
98 result += xml.
printNode(
"name",
"GetTransportInfo");
100 result += xml.
printArgument(
"InstanceID",
"in",
"A_ARG_TYPE_InstanceID");
102 xml.
printArgument(
"CurrentTransportState",
"out",
"TransportState");
104 xml.
printArgument(
"CurrentTransportStatus",
"out",
"TransportStatus");
105 result += xml.
printArgument(
"CurrentSpeed",
"out",
"TransportPlaySpeed");
111 result += xml.
printNode(
"name",
"GetTransportSettings");
113 result += xml.
printArgument(
"InstanceID",
"in",
"A_ARG_TYPE_InstanceID");
114 result += xml.
printArgument(
"PlayMode",
"out",
"CurrentPlayMode");
116 xml.
printArgument(
"RecQualityMode",
"out",
"CurrentRecordQualityMode");
122 result += xml.
printNode(
"name",
"Pause");
124 result += xml.
printArgument(
"InstanceID",
"in",
"A_ARG_TYPE_InstanceID");
132 result += xml.
printArgument(
"InstanceID",
"in",
"A_ARG_TYPE_InstanceID");
133 result += xml.
printArgument(
"Speed",
"in",
"TransportPlaySpeed");
141 result += xml.
printArgument(
"InstanceID",
"in",
"A_ARG_TYPE_InstanceID");
142 result += xml.
printArgument(
"Unit",
"in",
"A_ARG_TYPE_SeekMode");
143 result += xml.
printArgument(
"Target",
"in",
"A_ARG_TYPE_SeekTarget");
149 result += xml.
printNode(
"name",
"SetAVTransportURI");
151 result += xml.
printArgument(
"InstanceID",
"in",
"A_ARG_TYPE_InstanceID");
152 result += xml.
printArgument(
"CurrentURI",
"in",
"AVTransportURI");
154 xml.
printArgument(
"CurrentURIMetaData",
"in",
"AVTransportURIMetaData");
162 result += xml.
printArgument(
"InstanceID",
"in",
"A_ARG_TYPE_InstanceID");
168 result += xml.
printNode(
"name",
"SetNextAVTransportURI");
170 result += xml.
printArgument(
"InstanceID",
"in",
"A_ARG_TYPE_InstanceID");
171 result += xml.
printArgument(
"NextURI",
"in",
"NextAVTransportURI");
173 "NextAVTransportURIMetaData");
184 result += xml.
printNode(
"name",
"TransportStatus");
185 result += xml.
printNode(
"dataType",
"string");
187 result += xml.
printNode(
"allowedValue",
"OK");
188 result += xml.
printNode(
"allowedValue",
"ERROR_OCCURRED");
189 result += xml.
printNode(
"allowedValue",
" vendor-defined ");
195 result += xml.
printNode(
"name",
"NextAVTransportURI");
196 result += xml.
printNode(
"dataType",
"string");
201 result += xml.
printNode(
"name",
"NextAVTransportURIMetaData");
202 result += xml.
printNode(
"dataType",
"string");
207 result += xml.
printNode(
"name",
"CurrentTrackMetaData");
208 result += xml.
printNode(
"dataType",
"string");
213 result += xml.
printNode(
"name",
"RelativeCounterPosition");
214 result += xml.
printNode(
"dataType",
"i4");
219 result += xml.
printNode(
"name",
"A_ARG_TYPE_InstanceID");
220 result += xml.
printNode(
"dataType",
"ui4");
225 result += xml.
printNode(
"name",
"A_ARG_TYPE_SeekTarget");
226 result += xml.
printNode(
"dataType",
"string");
231 result += xml.
printNode(
"name",
"PlaybackStorageMedium");
232 result += xml.
printNode(
"dataType",
"string");
235 result += xml.
printNode(
"allowedValue",
"UNKNOWN");
236 result += xml.
printNode(
"allowedValue",
"DV");
237 result += xml.
printNode(
"allowedValue",
"MINI-DV");
238 result += xml.
printNode(
"allowedValue",
"VHS");
239 result += xml.
printNode(
"allowedValue",
"W-VHS");
240 result += xml.
printNode(
"allowedValue",
"S-VHS");
241 result += xml.
printNode(
"allowedValue",
"D-VHS");
242 result += xml.
printNode(
"allowedValue",
"VHSC");
243 result += xml.
printNode(
"allowedValue",
"VIDEO8");
244 result += xml.
printNode(
"allowedValue",
"HI8");
245 result += xml.
printNode(
"allowedValue",
"CD-ROM");
246 result += xml.
printNode(
"allowedValue",
"CD-DA");
247 result += xml.
printNode(
"allowedValue",
"CD-R");
248 result += xml.
printNode(
"allowedValue",
"CD-RW");
249 result += xml.
printNode(
"allowedValue",
"VIDEO-CD");
250 result += xml.
printNode(
"allowedValue",
"SACD");
251 result += xml.
printNode(
"allowedValue",
"MD-AUDIO");
252 result += xml.
printNode(
"allowedValue",
"MD-PICTURE");
253 result += xml.
printNode(
"allowedValue",
"DVD-ROM");
254 result += xml.
printNode(
"allowedValue",
"DVD-VIDEO");
255 result += xml.
printNode(
"allowedValue",
"DVD-R");
256 result += xml.
printNode(
"allowedValue",
"DVD+RW");
257 result += xml.
printNode(
"allowedValue",
"DVD-RW");
258 result += xml.
printNode(
"allowedValue",
"DVD-RAM");
259 result += xml.
printNode(
"allowedValue",
"DVD-AUDIO");
260 result += xml.
printNode(
"allowedValue",
"DAT");
261 result += xml.
printNode(
"allowedValue",
"LD");
262 result += xml.
printNode(
"allowedValue",
"HDD");
263 result += xml.
printNode(
"allowedValue",
"MICRO-MV");
264 result += xml.
printNode(
"allowedValue",
"NETWORK");
265 result += xml.
printNode(
"allowedValue",
"NONE");
266 result += xml.
printNode(
"allowedValue",
"NOT_IMPLEMENTED");
267 result += xml.
printNode(
"allowedValue",
" vendor-defined ");
273 result += xml.
printNode(
"name",
"RelativeTimePosition");
274 result += xml.
printNode(
"dataType",
"string");
279 result += xml.
printNode(
"name",
"PossibleRecordStorageMedia");
280 result += xml.
printNode(
"dataType",
"string");
285 result += xml.
printNode(
"name",
"CurrentPlayMode");
286 result += xml.
printNode(
"dataType",
"string");
288 result += xml.
printNode(
"allowedValue",
"NORMAL");
289 result += xml.
printNode(
"allowedValue",
"REPEAT_ALL");
290 result += xml.
printNode(
"allowedValue",
"INTRO");
292 result += xml.
printNode(
"defaultValue",
"NORMAL");
297 result += xml.
printNode(
"name",
"TransportPlaySpeed");
298 result += xml.
printNode(
"dataType",
"string");
300 result += xml.
printNode(
"allowedValue",
"1");
301 result += xml.
printNode(
"allowedValue",
" vendor-defined ");
307 result += xml.
printNode(
"name",
"PossiblePlaybackStorageMedia");
308 result += xml.
printNode(
"dataType",
"string");
313 result += xml.
printNode(
"name",
"AbsoluteTimePosition");
314 result += xml.
printNode(
"dataType",
"string");
319 result += xml.
printNode(
"name",
"CurrentTrack");
320 result += xml.
printNode(
"dataType",
"ui4");
323 result += xml.
printNode(
"maximum",
"4294967295");
330 result += xml.
printNode(
"name",
"CurrentTrackURI");
331 result += xml.
printNode(
"dataType",
"string");
336 result += xml.
printNode(
"name",
"CurrentTransportActions");
337 result += xml.
printNode(
"dataType",
"string");
342 result += xml.
printNode(
"name",
"NumberOfTracks");
343 result += xml.
printNode(
"dataType",
"ui4");
346 result += xml.
printNode(
"maximum",
"4294967295");
352 result += xml.
printNode(
"name",
"AVTransportURI");
353 result += xml.
printNode(
"dataType",
"string");
358 result += xml.
printNode(
"name",
"AbsoluteCounterPosition");
359 result += xml.
printNode(
"dataType",
"i4");
364 result += xml.
printNode(
"name",
"CurrentRecordQualityMode");
365 result += xml.
printNode(
"dataType",
"string");
367 result += xml.
printNode(
"allowedValue",
"0:EP");
368 result += xml.
printNode(
"allowedValue",
"1:LP");
369 result += xml.
printNode(
"allowedValue",
"2:SP");
370 result += xml.
printNode(
"allowedValue",
"0:BASIC");
371 result += xml.
printNode(
"allowedValue",
"1:MEDIUM");
372 result += xml.
printNode(
"allowedValue",
"2:HIGH");
373 result += xml.
printNode(
"allowedValue",
"NOT_IMPLEMENTED");
374 result += xml.
printNode(
"allowedValue",
" vendor-defined ");
380 result += xml.
printNode(
"name",
"CurrentMediaDuration");
381 result += xml.
printNode(
"dataType",
"string");
386 result += xml.
printNode(
"name",
"A_ARG_TYPE_SeekMode");
387 result += xml.
printNode(
"dataType",
"string");
389 result += xml.
printNode(
"allowedValue",
"ABS_TIME");
390 result += xml.
printNode(
"allowedValue",
"REL_TIME");
391 result += xml.
printNode(
"allowedValue",
"ABS_COUNT");
392 result += xml.
printNode(
"allowedValue",
"REL_COUNT");
393 result += xml.
printNode(
"allowedValue",
"TRACK_NR");
394 result += xml.
printNode(
"allowedValue",
"CHANNEL_FREQ");
395 result += xml.
printNode(
"allowedValue",
"TAPE-INDEX");
396 result += xml.
printNode(
"allowedValue",
"FRAME");
402 result += xml.
printNode(
"name",
"AVTransportURIMetaData");
403 result += xml.
printNode(
"dataType",
"string");
408 result += xml.
printNode(
"name",
"RecordStorageMedium");
409 result += xml.
printNode(
"dataType",
"string");
412 result += xml.
printNode(
"allowedValue",
"UNKNOWN");
413 result += xml.
printNode(
"allowedValue",
"DV");
414 result += xml.
printNode(
"allowedValue",
"MINI-DV");
415 result += xml.
printNode(
"allowedValue",
"VHS");
416 result += xml.
printNode(
"allowedValue",
"W-VHS");
417 result += xml.
printNode(
"allowedValue",
"S-VHS");
418 result += xml.
printNode(
"allowedValue",
"D-VHS");
419 result += xml.
printNode(
"allowedValue",
"VHSC");
420 result += xml.
printNode(
"allowedValue",
"VIDEO8");
421 result += xml.
printNode(
"allowedValue",
"HI8");
422 result += xml.
printNode(
"allowedValue",
"CD-ROM");
423 result += xml.
printNode(
"allowedValue",
"CD-DA");
424 result += xml.
printNode(
"allowedValue",
"CD-R");
425 result += xml.
printNode(
"allowedValue",
"CD-RW");
426 result += xml.
printNode(
"allowedValue",
"VIDEO-CD");
427 result += xml.
printNode(
"allowedValue",
"SACD");
428 result += xml.
printNode(
"allowedValue",
"MD-AUDIO");
429 result += xml.
printNode(
"allowedValue",
"MD-PICTURE");
430 result += xml.
printNode(
"allowedValue",
"DVD-ROM");
431 result += xml.
printNode(
"allowedValue",
"DVD-VIDEO");
432 result += xml.
printNode(
"allowedValue",
"DVD-R");
433 result += xml.
printNode(
"allowedValue",
"DVD+RW");
434 result += xml.
printNode(
"allowedValue",
"DVD-RW");
435 result += xml.
printNode(
"allowedValue",
"DVD-RAM");
436 result += xml.
printNode(
"allowedValue",
"DVD-AUDIO");
437 result += xml.
printNode(
"allowedValue",
"DAT");
438 result += xml.
printNode(
"allowedValue",
"LD");
439 result += xml.
printNode(
"allowedValue",
"HDD");
440 result += xml.
printNode(
"allowedValue",
"MICRO-MV");
441 result += xml.
printNode(
"allowedValue",
"NETWORK");
442 result += xml.
printNode(
"allowedValue",
"NONE");
443 result += xml.
printNode(
"allowedValue",
"NOT_IMPLEMENTED");
444 result += xml.
printNode(
"allowedValue",
" vendor-defined ");
450 result += xml.
printNode(
"name",
"RecordMediumWriteStatus");
451 result += xml.
printNode(
"dataType",
"string");
453 result += xml.
printNode(
"allowedValue",
"WRITABLE");
454 result += xml.
printNode(
"allowedValue",
"PROTECTED");
455 result += xml.
printNode(
"allowedValue",
"NOT_WRITABLE");
456 result += xml.
printNode(
"allowedValue",
"UNKNOWN");
457 result += xml.
printNode(
"allowedValue",
"NOT_IMPLEMENTED");
463 result += xml.
printNode(
"name",
"LastChange");
464 result += xml.
printNode(
"dataType",
"string");
469 result += xml.
printNode(
"name",
"CurrentTrackDuration");
470 result += xml.
printNode(
"dataType",
"string");
475 result += xml.
printNode(
"name",
"TransportState");
476 result += xml.
printNode(
"dataType",
"string");
478 result += xml.
printNode(
"allowedValue",
"STOPPED");
479 result += xml.
printNode(
"allowedValue",
"PLAYING");
480 result += xml.
printNode(
"allowedValue",
"TRANSITIONING");
481 result += xml.
printNode(
"allowedValue",
"PAUSED_PLAYBACK");
482 result += xml.
printNode(
"allowedValue",
"PAUSED_RECORDING");
483 result += xml.
printNode(
"allowedValue",
"RECORDING");
484 result += xml.
printNode(
"allowedValue",
"NO_MEDIA_PRESENT");
490 result += xml.
printNode(
"name",
"PossibleRecordQualityModes");
491 result += xml.
printNode(
"dataType",
"string");
518 "scpd",
"xmlns=\"urn:schemas-upnp-org:service-1-0\"");
530 result += xml.
printNode(
"name",
"GetMute");
532 result += xml.
printArgument(
"InstanceID",
"in",
"A_ARG_TYPE_InstanceID");
533 result += xml.
printArgument(
"Channel",
"in",
"A_ARG_TYPE_Channel");
539 result += xml.
printNode(
"name",
"GetVolume");
541 result += xml.
printArgument(
"InstanceID",
"in",
"A_ARG_TYPE_InstanceID");
542 result += xml.
printArgument(
"Channel",
"in",
"A_ARG_TYPE_Channel");
543 result += xml.
printArgument(
"CurrentVolume",
"out",
"Volume");
548 result += xml.
printNode(
"name",
"SetVolume");
550 result += xml.
printArgument(
"InstanceID",
"in",
"A_ARG_TYPE_InstanceID");
551 result += xml.
printArgument(
"Channel",
"in",
"A_ARG_TYPE_Channel");
552 result += xml.
printArgument(
"DesiredVolume",
"in",
"Volume");
557 result += xml.
printNode(
"name",
"SetMute");
559 result += xml.
printArgument(
"InstanceID",
"in",
"A_ARG_TYPE_InstanceID");
560 result += xml.
printArgument(
"Channel",
"in",
"A_ARG_TYPE_Channel");
571 result += xml.
printNode(
"name",
"A_ARG_TYPE_PresetName");
572 result += xml.
printNode(
"dataType",
"string");
574 result += xml.
printNode(
"allowedValue",
"FactoryDefault");
580 result += xml.
printNode(
"name",
"Volume");
581 result += xml.
printNode(
"dataType",
"ui2");
593 result += xml.
printNode(
"name",
"A_ARG_TYPE_Channel");
594 result += xml.
printNode(
"dataType",
"string");
596 result += xml.
printNode(
"allowedValue",
"Master");
627 "scpd",
"xmlns=\"urn:schemas-upnp-org:service-1-0\"");
637 result += xml.
printNode(
"name",
"GetCurrentConnectionIDs");
639 result += xml.
printArgument(
"ConnectionIDs",
"out",
"CurrentConnectionIDs");
644 result += xml.
printNode(
"name",
"GetProtocolInfo");
646 result += xml.
printArgument(
"Source",
"out",
"SourceProtocolInfo");
647 result += xml.
printArgument(
"Sink",
"out",
"SinkProtocolInfo");
652 result += xml.
printNode(
"name",
"GetCurrentConnectionInfo");
655 xml.
printArgument(
"ConnectionID",
"in",
"A_ARG_TYPE_ConnectionID");
656 result += xml.
printArgument(
"RcsID",
"out",
"A_ARG_TYPE_RcsID");
658 xml.
printArgument(
"AVTransportID",
"out",
"A_ARG_TYPE_AVTransportID");
660 xml.
printArgument(
"ProtocolInfo",
"out",
"A_ARG_TYPE_ProtocolInfo");
662 "A_ARG_TYPE_ConnectionManager");
664 xml.
printArgument(
"PeerConnectionID",
"out",
"A_ARG_TYPE_ConnectionID");
665 result += xml.
printArgument(
"Direction",
"out",
"A_ARG_TYPE_Direction");
666 result += xml.
printArgument(
"Status",
"out",
"A_ARG_TYPE_ConnectionStatus");
682 result += xml.
printNode(
"name",
"A_ARG_TYPE_ConnectionStatus");
683 result += xml.
printNode(
"dataType",
"string");
685 result += xml.
printNode(
"allowedValue",
"OK");
686 result += xml.
printNode(
"allowedValue",
"ContentFormatMismatch");
687 result += xml.
printNode(
"allowedValue",
"InsufficientBandwidth");
688 result += xml.
printNode(
"allowedValue",
"UnreliableChannel");
689 result += xml.
printNode(
"allowedValue",
"Unknown");
695 result += xml.
printNode(
"name",
"A_ARG_TYPE_Direction");
696 result += xml.
printNode(
"dataType",
"string");
698 result += xml.
printNode(
"allowedValue",
"Output");
699 result += xml.
printNode(
"allowedValue",
"Input");
Abstract DLNA Descriptor Generation.
Definition: DLNADescr.h:9
Definition: Allocator.h:13
Functions to efficiently output XML. XML data contains a lot of redundancy so it is more memory effic...
Definition: XMLPrinter.h:56
size_t printNodeBeginNl(const char *node, const char *attributes=nullptr, const char *ns=nullptr)
Prints the beginning of an XML node and a newline.
Definition: XMLPrinter.h:339
size_t printNode(XMLNode node)
Prints an XML node from XMLNode struct.
Definition: XMLPrinter.h:89
size_t printNodeEnd(const char *node, const char *ns=nullptr)
Prints the end of an XML node.
Definition: XMLPrinter.h:352
size_t printArgument(const char *name, const char *direction, const char *relatedStateVariable=nullptr)
Helper to print a UPnP <argument> element with name, direction and optional relatedStateVariable.
Definition: XMLPrinter.h:267
size_t printXMLHeader()
Prints the XML header.
Definition: XMLPrinter.h:79
size_t printStateVariable(const char *name, const char *dataType, bool sendEvents=false, std::function< void()> extra=nullptr)
Helper to print a UPnP <stateVariable> element with name, dataType and optional sendEvents attribute ...
Definition: XMLPrinter.h:289