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
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
|
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
<title>UPnP/DLNA plugin for VDR: common.h Source File</title>
<link href="tabs.css" rel="stylesheet" type="text/css">
<link href="doxygen.css" rel="stylesheet" type="text/css">
</head><body>
<!-- Generated by Doxygen 1.5.8 -->
<div class="navigation" id="top">
<div class="tabs">
<ul>
<li><a href="index.html"><span>Main Page</span></a></li>
<li><a href="annotated.html"><span>Classes</span></a></li>
<li class="current"><a href="files.html"><span>Files</span></a></li>
</ul>
</div>
<div class="tabs">
<ul>
<li><a href="files.html"><span>File List</span></a></li>
</ul>
</div>
<h1>common.h</h1><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="comment">/*</span>
<a name="l00002"></a>00002 <span class="comment"> * File: common.h</span>
<a name="l00003"></a>00003 <span class="comment"> * Author: savop</span>
<a name="l00004"></a>00004 <span class="comment"> *</span>
<a name="l00005"></a>00005 <span class="comment"> * Created on 19. April 2009, 15:22</span>
<a name="l00006"></a>00006 <span class="comment"> */</span>
<a name="l00007"></a>00007
<a name="l00008"></a>00008 <span class="preprocessor">#ifndef _COMMON_H</span>
<a name="l00009"></a>00009 <span class="preprocessor"></span><span class="preprocessor">#define _COMMON_H</span>
<a name="l00010"></a>00010 <span class="preprocessor"></span>
<a name="l00011"></a>00011 <span class="preprocessor">#include "misc/util.h"</span>
<a name="l00012"></a>00012 <span class="preprocessor">#include <libintl.h></span>
<a name="l00013"></a>00013 <span class="preprocessor">#include <string.h></span>
<a name="l00014"></a>00014 <span class="preprocessor">#include <vdr/tools.h></span>
<a name="l00015"></a>00015 <span class="preprocessor">#include <vdr/i18n.h></span>
<a name="l00016"></a>00016 <span class="preprocessor">#include <vdr/remux.h></span>
<a name="l00017"></a>00017
<a name="l00018"></a>00018 <span class="comment">/****************************************************</span>
<a name="l00019"></a>00019 <span class="comment"> *</span>
<a name="l00020"></a>00020 <span class="comment"> * Table of contents</span>
<a name="l00021"></a>00021 <span class="comment"> *</span>
<a name="l00022"></a>00022 <span class="comment"> * This file includes all (or at least most) constant</span>
<a name="l00023"></a>00023 <span class="comment"> * definitions for this plugin. As was growing very</span>
<a name="l00024"></a>00024 <span class="comment"> * fast, I decided to insert this table of contents</span>
<a name="l00025"></a>00025 <span class="comment"> * for faster navigations. However, you have to scroll</span>
<a name="l00026"></a>00026 <span class="comment"> * on your own.</span>
<a name="l00027"></a>00027 <span class="comment"> *</span>
<a name="l00028"></a>00028 <span class="comment"> * 0. Global constants</span>
<a name="l00029"></a>00029 <span class="comment"> * 1. VDR and the VDR subsystem</span>
<a name="l00030"></a>00030 <span class="comment"> * 1.1 Versioning</span>
<a name="l00031"></a>00031 <span class="comment"> * 1.2 Logging</span>
<a name="l00032"></a>00032 <span class="comment"> * 1.3 Plugin constants</span>
<a name="l00033"></a>00033 <span class="comment"> * 1.4 Plugin setup</span>
<a name="l00034"></a>00034 <span class="comment"> * 2. UPnP</span>
<a name="l00035"></a>00035 <span class="comment"> * 2.1 UPnP Namespaces</span>
<a name="l00036"></a>00036 <span class="comment"> * 2.2 Directory hierarchy</span>
<a name="l00037"></a>00037 <span class="comment"> * 2.3 internal Webserver</span>
<a name="l00038"></a>00038 <span class="comment"> * 2.4 Device description</span>
<a name="l00039"></a>00039 <span class="comment"> * 2.5 Connection Manager Service (CMS)</span>
<a name="l00040"></a>00040 <span class="comment"> * 2.6 Content Directory Service (CDS)</span>
<a name="l00041"></a>00041 <span class="comment"> * 2.7 UPnP AV Transport (AVT)</span>
<a name="l00042"></a>00042 <span class="comment"> * 2.8 Media classes</span>
<a name="l00043"></a>00043 <span class="comment"> * 2.9 Storage Media</span>
<a name="l00044"></a>00044 <span class="comment"> * 2.10 Known Errors</span>
<a name="l00045"></a>00045 <span class="comment"> * 2.11 Write Status</span>
<a name="l00046"></a>00046 <span class="comment"> * 2.12 DIDL Properties</span>
<a name="l00047"></a>00047 <span class="comment"> * 3. DLNA</span>
<a name="l00048"></a>00048 <span class="comment"> * 3.1 Protocol Info Fields</span>
<a name="l00049"></a>00049 <span class="comment"> * 3.2 Protocol Info Flags</span>
<a name="l00050"></a>00050 <span class="comment"> * 3.3 Media Profiles</span>
<a name="l00051"></a>00051 <span class="comment"> * 3.4 Container types</span>
<a name="l00052"></a>00052 <span class="comment"> * 3.5 Device types</span>
<a name="l00053"></a>00053 <span class="comment"> * 4. SQLite</span>
<a name="l00054"></a>00054 <span class="comment"> * 4.1 Database setup</span>
<a name="l00055"></a>00055 <span class="comment"> *</span>
<a name="l00056"></a>00056 <span class="comment"> ****************************************************/</span>
<a name="l00057"></a>00057
<a name="l00058"></a>00058 <span class="comment">/****************************************************</span>
<a name="l00059"></a>00059 <span class="comment"> *</span>
<a name="l00060"></a>00060 <span class="comment"> * 0. Global constants</span>
<a name="l00061"></a>00061 <span class="comment"> *</span>
<a name="l00062"></a>00062 <span class="comment"> ****************************************************/</span>
<a name="l00063"></a>00063
<a name="l00064"></a>00064 <span class="preprocessor">#define IN</span>
<a name="l00065"></a>00065 <span class="preprocessor"></span><span class="preprocessor">#define OUT</span>
<a name="l00066"></a>00066 <span class="preprocessor"></span><span class="preprocessor">#define INOUT</span>
<a name="l00067"></a>00067 <span class="preprocessor"></span>
<a name="l00068"></a>00068 <span class="comment">//#define DEBUG</span>
<a name="l00069"></a>00069
<a name="l00070"></a>00070 <span class="preprocessor">#define TOSTRING(s) #s</span>
<a name="l00071"></a>00071 <span class="preprocessor"></span>
<a name="l00072"></a>00072 <span class="preprocessor">#define FALSE 0</span>
<a name="l00073"></a>00073 <span class="preprocessor"></span><span class="preprocessor">#define TRUE 1</span>
<a name="l00074"></a>00074 <span class="preprocessor"></span>
<a name="l00075"></a>00075 <span class="preprocessor">#define bool_t uint8_t</span>
<a name="l00076"></a>00076 <span class="preprocessor"></span>
<a name="l00080"></a>00080 <span class="preprocessor">#ifndef _</span>
<a name="l00081"></a>00081 <span class="preprocessor"></span><span class="preprocessor">#define _(s) tr(s)</span>
<a name="l00082"></a>00082 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
<a name="l00083"></a>00083 <span class="preprocessor"></span>
<a name="l00084"></a>00084 <span class="preprocessor">#define KB(i) i*1024</span>
<a name="l00085"></a>00085 <span class="preprocessor"></span><span class="preprocessor">#define MB(i) i*KB(1024)</span>
<a name="l00086"></a>00086 <span class="preprocessor"></span>
<a name="l00087"></a>00087 <span class="preprocessor">#define SIZEOF_UUID_STRING 37 // 00000000-0000-0000-0000-000000000000 = 32 + 4 + 1</span>
<a name="l00088"></a>00088 <span class="preprocessor"></span>
<a name="l00089"></a>00089 <span class="preprocessor">#define strdup0(s) (s!=NULL?strdup(s):NULL)</span>
<a name="l00090"></a>00090 <span class="preprocessor"></span>
<a name="l00091"></a>00091 <span class="preprocessor">#define att(s) strchr(s,'@')!=NULL?strchr(s,'@')+1:NULL</span>
<a name="l00092"></a>00092 <span class="preprocessor"></span><span class="preprocessor">#define prop(s) substr(s, 0, strchr(s,'@')-s)</span>
<a name="l00093"></a>00093 <span class="preprocessor"></span>
<a name="l00094"></a>00094 <span class="keywordtype">void</span> message(<span class="keyword">const</span> <span class="keywordtype">char</span>* File, <span class="keywordtype">int</span> Line, <span class="keyword">const</span> <span class="keywordtype">char</span>* Format, ...) __attribute__ ((format (printf, 3, 4)));
<a name="l00095"></a>00095
<a name="l00096"></a>00096 <span class="comment">/****************************************************</span>
<a name="l00097"></a>00097 <span class="comment"> *</span>
<a name="l00098"></a>00098 <span class="comment"> * 1. VDR and the VDR subsystem</span>
<a name="l00099"></a>00099 <span class="comment"> *</span>
<a name="l00100"></a>00100 <span class="comment"> ****************************************************/</span>
<a name="l00101"></a>00101
<a name="l00102"></a>00102 <span class="preprocessor">#define VDR_RECORDFILE_PATTERN_PES "%s/%03d.vdr"</span>
<a name="l00103"></a>00103 <span class="preprocessor"></span><span class="preprocessor">#define VDR_RECORDFILE_PATTERN_TS "%s/%05d.ts"</span>
<a name="l00104"></a>00104 <span class="preprocessor"></span><span class="preprocessor">#define VDR_MAX_FILES_PER_RECORDING 65535</span>
<a name="l00105"></a>00105 <span class="preprocessor"></span><span class="preprocessor">#define VDR_FILENAME_BUFSIZE 2048</span>
<a name="l00106"></a>00106 <span class="preprocessor"></span>
<a name="l00107"></a>00107 <span class="comment">/****************************************************</span>
<a name="l00108"></a>00108 <span class="comment"> *</span>
<a name="l00109"></a>00109 <span class="comment"> * 1.1 Versioning</span>
<a name="l00110"></a>00110 <span class="comment"> *</span>
<a name="l00111"></a>00111 <span class="comment"> ****************************************************/</span>
<a name="l00112"></a>00112
<a name="l00113"></a>00113 <span class="preprocessor">#define VERSION_INT(maj, min, mic) (maj<<16 | min<<8 | mic)</span>
<a name="l00114"></a>00114 <span class="preprocessor"></span><span class="preprocessor">#define VERSION_DOT(maj, min, mic) maj ##.## min ##.## mic</span>
<a name="l00115"></a>00115 <span class="preprocessor"></span><span class="preprocessor">#define VERSION_STR(maj, min, mic) TOSTRING(maj.min.mic)</span>
<a name="l00116"></a>00116 <span class="preprocessor"></span>
<a name="l00117"></a>00117 <span class="comment">/* If any changes on the version number are commited, please change the version</span>
<a name="l00118"></a>00118 <span class="comment"> * string in the main file "upnp.c" as well to avoid errors with the makefile */</span>
<a name="l00119"></a>00119 <span class="preprocessor">#define PLUGIN_VERSION_MAJOR 0</span>
<a name="l00120"></a>00120 <span class="preprocessor"></span><span class="preprocessor">#define PLUGIN_VERSION_MINOR 0</span>
<a name="l00121"></a>00121 <span class="preprocessor"></span><span class="preprocessor">#define PLUGIN_VERSION_MICRO 1</span>
<a name="l00122"></a>00122 <span class="preprocessor"></span><span class="comment">/* The plugin version as dot-separated string */</span>
<a name="l00123"></a>00123 <span class="preprocessor">#define PLUGIN_VERSION VERSION_STR(PLUGIN_VERSION_MAJOR, \</span>
<a name="l00124"></a>00124 <span class="preprocessor"> PLUGIN_VERSION_MINOR, \</span>
<a name="l00125"></a>00125 <span class="preprocessor"> PLUGIN_VERSION_MICRO)</span>
<a name="l00126"></a>00126 <span class="preprocessor"></span><span class="comment">/* The plugin version as integer representation */</span>
<a name="l00127"></a>00127 <span class="preprocessor">#define PLUGIN_VERSION_INT VERSION_INT(PLUGIN_VERSION_MAJOR, \</span>
<a name="l00128"></a>00128 <span class="preprocessor"> PLUGIN_VERSION_MINOR, \</span>
<a name="l00129"></a>00129 <span class="preprocessor"> PLUGIN_VERSION_MICRO)</span>
<a name="l00130"></a>00130 <span class="preprocessor"></span>
<a name="l00131"></a>00131 <span class="comment">/****************************************************</span>
<a name="l00132"></a>00132 <span class="comment"> *</span>
<a name="l00133"></a>00133 <span class="comment"> * 1.2 Logging</span>
<a name="l00134"></a>00134 <span class="comment"> *</span>
<a name="l00135"></a>00135 <span class="comment"> ****************************************************/</span>
<a name="l00136"></a>00136
<a name="l00143"></a>00143 <span class="preprocessor">#define ERROR(s...) esyslog("UPnP server error:" s)</span>
<a name="l00144"></a>00144 <span class="preprocessor"></span>
<a name="l00150"></a>00150 <span class="preprocessor">#define WARNING(s...) isyslog("UPnP server warning: " s)</span>
<a name="l00151"></a>00151 <span class="preprocessor"></span>
<a name="l00157"></a>00157 <span class="preprocessor">#ifdef DEBUG</span>
<a name="l00158"></a>00158 <span class="preprocessor"></span><span class="preprocessor">#define MESSAGE(s...) message(__FILE__, __LINE__, "UPnP server message: " s)</span>
<a name="l00159"></a>00159 <span class="preprocessor"></span><span class="preprocessor">#else</span>
<a name="l00160"></a>00160 <span class="preprocessor"></span><span class="preprocessor">#define MESSAGE(s...) dsyslog("UPnP server message: " s)</span>
<a name="l00161"></a>00161 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
<a name="l00162"></a>00162 <span class="preprocessor"></span>
<a name="l00163"></a>00163 <span class="comment">/****************************************************</span>
<a name="l00164"></a>00164 <span class="comment"> *</span>
<a name="l00165"></a>00165 <span class="comment"> * 1.3 Plugin constants</span>
<a name="l00166"></a>00166 <span class="comment"> *</span>
<a name="l00167"></a>00167 <span class="comment"> ****************************************************/</span>
<a name="l00168"></a>00168
<a name="l00169"></a>00169 <span class="comment">/* The authors of the plugin */</span>
<a name="l00170"></a>00170 <span class="preprocessor">#define PLUGIN_AUTHORS "Andreas Günther, Denis Loh"</span>
<a name="l00171"></a>00171 <span class="preprocessor"></span><span class="comment">/* The web site of the plugin */</span>
<a name="l00172"></a>00172 <span class="preprocessor">#define PLUGIN_WEB_PAGE "http://upnp.methodus.de"</span>
<a name="l00173"></a>00173 <span class="preprocessor"></span><span class="comment">/* A small discription of the plugin, which is also used as the device description */</span>
<a name="l00174"></a>00174 <span class="preprocessor">#define PLUGIN_DESCRIPTION "UPnP/DLNA compliant Media Server functionality for VDR"</span>
<a name="l00175"></a>00175 <span class="preprocessor"></span><span class="comment">/* The short plugin name. This is used as the main menu of VDR */</span>
<a name="l00176"></a>00176 <span class="preprocessor">#define PLUGIN_SHORT_NAME "DLNA/UPnP"</span>
<a name="l00177"></a>00177 <span class="preprocessor"></span><span class="comment">/* A somewhat longer name, a.k.a device name */</span>
<a name="l00178"></a>00178 <span class="preprocessor">#define PLUGIN_NAME "VDR DLNA/UPnP Media Server"</span>
<a name="l00179"></a>00179 <span class="preprocessor"></span><span class="comment">/* Where the plugin can be downloaded */</span>
<a name="l00180"></a>00180 <span class="preprocessor">#define PLUGIN_DOWNLOAD_PAGE PLUGIN_WEB_PAGE</span>
<a name="l00181"></a>00181 <span class="preprocessor"></span>
<a name="l00182"></a>00182 <span class="comment">/****************************************************</span>
<a name="l00183"></a>00183 <span class="comment"> *</span>
<a name="l00184"></a>00184 <span class="comment"> * 1.4 Plugin setup</span>
<a name="l00185"></a>00185 <span class="comment"> *</span>
<a name="l00186"></a>00186 <span class="comment"> ****************************************************/</span>
<a name="l00187"></a>00187
<a name="l00188"></a>00188 <span class="preprocessor">#define SETUP_SERVER_ENABLED "ServerEnabled"</span>
<a name="l00189"></a>00189 <span class="preprocessor"></span><span class="preprocessor">#define SETUP_SERVER_INT "ServerInt"</span>
<a name="l00190"></a>00190 <span class="preprocessor"></span><span class="preprocessor">#define SETUP_SERVER_PORT "ServerPort"</span>
<a name="l00191"></a>00191 <span class="preprocessor"></span><span class="preprocessor">#define SETUP_SERVER_AUTO "ServerAutoDetect"</span>
<a name="l00192"></a>00192 <span class="preprocessor"></span><span class="preprocessor">#define SETUP_SERVER_ADDRESS "ServerAddress"</span>
<a name="l00193"></a>00193 <span class="preprocessor"></span>
<a name="l00194"></a>00194 <span class="comment">/* The server port range where the server interacts with clients */</span>
<a name="l00195"></a>00195 <span class="preprocessor">#define SERVER_MIN_PORT 49152</span>
<a name="l00196"></a>00196 <span class="preprocessor"></span><span class="preprocessor">#define SERVER_MAX_PORT 65535</span>
<a name="l00197"></a>00197 <span class="preprocessor"></span>
<a name="l00198"></a>00198 <span class="preprocessor">#define RECEIVER_LIVEBUFFER_SIZE MB(1)</span>
<a name="l00199"></a>00199 <span class="preprocessor"></span><span class="preprocessor">#define RECEIVER_OUTPUTBUFFER_SIZE MB(1)</span>
<a name="l00200"></a>00200 <span class="preprocessor"></span><span class="preprocessor">#define RECEIVER_RINGBUFFER_MARGIN 10*TS_SIZE</span>
<a name="l00201"></a>00201 <span class="preprocessor"></span>
<a name="l00202"></a>00202 <span class="comment">/****************************************************</span>
<a name="l00203"></a>00203 <span class="comment"> *</span>
<a name="l00204"></a>00204 <span class="comment"> * 2. UPnP</span>
<a name="l00205"></a>00205 <span class="comment"> *</span>
<a name="l00206"></a>00206 <span class="comment"> ****************************************************/</span>
<a name="l00207"></a>00207
<a name="l00208"></a>00208 <span class="comment">/*The maximum size of the device description file</span>
<a name="l00209"></a>00209 <span class="comment"> *must NOT exceed 20KB including HTTP headers</span>
<a name="l00210"></a>00210 <span class="comment"> */</span>
<a name="l00211"></a>00211 <span class="preprocessor">#define UPNP_DEVICE_DESCRIPTION_MAX_LEN KB(20)</span>
<a name="l00212"></a>00212 <span class="preprocessor"></span><span class="comment">/* The maximum size of the SOAP requests */</span>
<a name="l00213"></a>00213 <span class="preprocessor">#define UPNP_SOAP_MAX_LEN KB(20)</span>
<a name="l00214"></a>00214 <span class="preprocessor"></span><span class="comment">/* The max age of announcements in seconds */</span>
<a name="l00215"></a>00215 <span class="preprocessor">#define UPNP_ANNOUNCE_MAX_AGE 1800</span>
<a name="l00216"></a>00216 <span class="preprocessor"></span><span class="comment">/* Max resources per object including</span>
<a name="l00217"></a>00217 <span class="comment"> * preview images and thumbnails</span>
<a name="l00218"></a>00218 <span class="comment"> */</span>
<a name="l00219"></a>00219 <span class="preprocessor">#define UPNP_MAX_RESOURCES_PER_OBJECT 16</span>
<a name="l00220"></a>00220 <span class="preprocessor"></span>
<a name="l00221"></a>00221 <span class="keyword">enum</span> UPNP_RESOURCE_TYPES {
<a name="l00222"></a>00222 UPNP_RESOURCE_CHANNEL,
<a name="l00223"></a>00223 UPNP_RESOURCE_RECORDING,
<a name="l00224"></a>00224 UPNP_RESOURCE_FILE,
<a name="l00225"></a>00225 UPNP_RESOURCE_URL
<a name="l00226"></a>00226 };
<a name="l00227"></a>00227
<a name="l00228"></a>00228 <span class="comment">/****************************************************</span>
<a name="l00229"></a>00229 <span class="comment"> *</span>
<a name="l00230"></a>00230 <span class="comment"> * 2.1 Namespaces</span>
<a name="l00231"></a>00231 <span class="comment"> *</span>
<a name="l00232"></a>00232 <span class="comment"> ****************************************************/</span>
<a name="l00233"></a>00233
<a name="l00234"></a>00234 <span class="preprocessor">#define UPNP_XMLNS_UPNP "urn:schemas-upnp-org:metadata-1-0/upnp/"</span>
<a name="l00235"></a>00235 <span class="preprocessor"></span><span class="preprocessor">#define UPNP_XMLNS_DIDL "urn:schemas-upnp-org:metadata-1-0/DIDL-Lite"</span>
<a name="l00236"></a>00236 <span class="preprocessor"></span><span class="preprocessor">#define UPNP_XMLNS_DLNA_META "urn:schemas-dlna-org:metadata-1-0/"</span>
<a name="l00237"></a>00237 <span class="preprocessor"></span><span class="preprocessor">#define UPNP_XMLNS_UPNP_DEV "urn:schemas-upnp-org:device-1-0"</span>
<a name="l00238"></a>00238 <span class="preprocessor"></span><span class="preprocessor">#define UPNP_XMLNS_DLNA_DEV "urn:schemas-dlna-org:device-1-0"</span>
<a name="l00239"></a>00239 <span class="preprocessor"></span><span class="preprocessor">#define UPNP_XMLNS_DUBLINCORE "http://purl.org/dc/elements/1.1/"</span>
<a name="l00240"></a>00240 <span class="preprocessor"></span>
<a name="l00241"></a>00241 <span class="preprocessor">#define UPNP_XMLNS_PREFIX_UPNP "upnp"</span>
<a name="l00242"></a>00242 <span class="preprocessor"></span><span class="preprocessor">#define UPNP_XMLNS_PREFIX_DC "dc"</span>
<a name="l00243"></a>00243 <span class="preprocessor"></span><span class="preprocessor">#define UPNP_XMLNS_PREFIX_DIDL ""</span>
<a name="l00244"></a>00244 <span class="preprocessor"></span><span class="preprocessor">#define UPNP_XMLNS_PREFIX_DLNA "dlna"</span>
<a name="l00245"></a>00245 <span class="preprocessor"></span>
<a name="l00246"></a>00246 <span class="comment">/****************************************************</span>
<a name="l00247"></a>00247 <span class="comment"> *</span>
<a name="l00248"></a>00248 <span class="comment"> * 2.2 Directory hierarchy</span>
<a name="l00249"></a>00249 <span class="comment"> *</span>
<a name="l00250"></a>00250 <span class="comment"> ****************************************************/</span>
<a name="l00251"></a>00251
<a name="l00252"></a>00252 <span class="preprocessor">#define UPNP_DIR_CONTROL "/control"</span>
<a name="l00253"></a>00253 <span class="preprocessor"></span><span class="preprocessor">#define UPNP_DIR_EVENT "/event"</span>
<a name="l00254"></a>00254 <span class="preprocessor"></span><span class="preprocessor">#define UPNP_DIR_XML "/xml"</span>
<a name="l00255"></a>00255 <span class="preprocessor"></span><span class="preprocessor">#define UPNP_DIR_SHARES "/shares"</span>
<a name="l00256"></a>00256 <span class="preprocessor"></span><span class="preprocessor">#define UPNP_DIR_PRESENTATION "/web"</span>
<a name="l00257"></a>00257 <span class="preprocessor"></span><span class="preprocessor">#define UPNP_DIR_ICONS "/icons"</span>
<a name="l00258"></a>00258 <span class="preprocessor"></span>
<a name="l00259"></a>00259 <span class="comment">/****************************************************</span>
<a name="l00260"></a>00260 <span class="comment"> *</span>
<a name="l00261"></a>00261 <span class="comment"> * 2.3 internal webserver</span>
<a name="l00262"></a>00262 <span class="comment"> *</span>
<a name="l00263"></a>00263 <span class="comment"> ****************************************************/</span>
<a name="l00264"></a>00264
<a name="l00265"></a>00265 <span class="preprocessor">#define UPNP_WEB_MAX_FILE_HANDLES 512</span>
<a name="l00266"></a>00266 <span class="preprocessor"></span>
<a name="l00267"></a>00267 <span class="preprocessor">#define UPNP_WEB_PRESENTATION_URL "/index.html"</span>
<a name="l00268"></a>00268 <span class="preprocessor"></span><span class="preprocessor">#define UPNP_WEB_SERVER_ROOT_DIR UPNP_DIR_PRESENTATION</span>
<a name="l00269"></a>00269 <span class="preprocessor"></span>
<a name="l00270"></a>00270 <span class="keyword">enum</span> UPNP_WEB_METHODS {
<a name="l00271"></a>00271 UPNP_WEB_METHOD_BROWSE,
<a name="l00272"></a>00272 UPNP_WEB_METHOD_SHOW,
<a name="l00273"></a>00273 UPNP_WEB_METHOD_STREAM,
<a name="l00274"></a>00274 UPNP_WEB_METHOD_SEARCH,
<a name="l00275"></a>00275 UPNP_WEB_METHOD_DOWNLOAD
<a name="l00276"></a>00276 };
<a name="l00277"></a>00277
<a name="l00278"></a>00278 <span class="comment">/****************************************************</span>
<a name="l00279"></a>00279 <span class="comment"> *</span>
<a name="l00280"></a>00280 <span class="comment"> * 2.4 Device description</span>
<a name="l00281"></a>00281 <span class="comment"> *</span>
<a name="l00282"></a>00282 <span class="comment"> ****************************************************/</span>
<a name="l00283"></a>00283
<a name="l00284"></a>00284 <span class="comment">/*The device type of the server*/</span>
<a name="l00285"></a>00285 <span class="preprocessor">#define UPNP_DEVICE_TYPE "urn:schemas-upnp-org:device:MediaServer:1"</span>
<a name="l00286"></a>00286 <span class="preprocessor"></span><span class="comment">/*Path to device description*/</span>
<a name="l00287"></a>00287 <span class="preprocessor">#define UPNP_DEVICE_DESCRIPTION_PATH UPNP_WEB_SERVER_ROOT_DIR "/ms_desc.xml"</span>
<a name="l00288"></a>00288 <span class="preprocessor"></span><span class="comment">/*Values to identify device and services*/</span>
<a name="l00289"></a>00289 <span class="preprocessor">#define UPNP_DEVICE_UDN "uuid:b120ba52-d88d-4500-9b64-888971d83fd3"</span>
<a name="l00290"></a>00290 <span class="preprocessor"></span><span class="comment">/* The friendly device name, human readable */</span>
<a name="l00291"></a>00291 <span class="preprocessor">#define UPNP_DEVICE_FRIENDLY_NAME PLUGIN_NAME</span>
<a name="l00292"></a>00292 <span class="preprocessor"></span><span class="comment">/* The guys who wrote the crap */</span>
<a name="l00293"></a>00293 <span class="preprocessor">#define UPNP_DEVICE_MANUFACTURER PLUGIN_AUTHORS</span>
<a name="l00294"></a>00294 <span class="preprocessor"></span><span class="comment">/* The website of the manufacturer, in this case the plugin website */</span>
<a name="l00295"></a>00295 <span class="preprocessor">#define UPNP_DEVICE_MANUFACTURER_URL PLUGIN_WEB_PAGE</span>
<a name="l00296"></a>00296 <span class="preprocessor"></span><span class="comment">/* There is just the one and only model of the plugin, the plugin itself */</span>
<a name="l00297"></a>00297 <span class="preprocessor">#define UPNP_DEVICE_MODEL_DESCRIPTION PLUGIN_DESCRIPTION</span>
<a name="l00298"></a>00298 <span class="preprocessor"></span><span class="comment">/* The plugin name... */</span>
<a name="l00299"></a>00299 <span class="preprocessor">#define UPNP_DEVICE_MODEL_NAME PLUGIN_NAME</span>
<a name="l00300"></a>00300 <span class="preprocessor"></span><span class="comment">/* The plugin version */</span>
<a name="l00301"></a>00301 <span class="preprocessor">#define UPNP_DEVICE_MODEL_NUMBER PLUGIN_VERSION</span>
<a name="l00302"></a>00302 <span class="preprocessor"></span><span class="comment">/* The website of the plugin, this might be different to the manufactures homepage</span>
<a name="l00303"></a>00303 <span class="comment"> * and should redirect to a download mirror where the plugin can be obtained.</span>
<a name="l00304"></a>00304 <span class="comment"> */</span>
<a name="l00305"></a>00305 <span class="preprocessor">#define UPNP_DEVICE_MODEL_URL PLUGIN_DOWNLOAD_PAGE</span>
<a name="l00306"></a>00306 <span class="preprocessor"></span><span class="comment">/* The serial number of the plugin. This is the integer value of the version */</span>
<a name="l00307"></a>00307 <span class="preprocessor">#define UPNP_DEVICE_SERIAL_NUMBER "VDR_DLNAUPNP_" PLUGIN_VERSION</span>
<a name="l00308"></a>00308 <span class="preprocessor"></span>
<a name="l00309"></a>00309 <span class="preprocessor">#define UPNP_DEVICE_ICON_JPEG_SM UPNP_DIR_ICONS "/upnpIconSm.jpeg"</span>
<a name="l00310"></a>00310 <span class="preprocessor"></span><span class="preprocessor">#define UPNP_DEVICE_ICON_JPEG_LRG UPNP_DIR_ICONS "/upnpIconLrg.jpeg"</span>
<a name="l00311"></a>00311 <span class="preprocessor"></span><span class="preprocessor">#define UPNP_DEVICE_ICON_PNG_SM UPNP_DIR_ICONS "/upnpIconSm.png"</span>
<a name="l00312"></a>00312 <span class="preprocessor"></span><span class="preprocessor">#define UPNP_DEVICE_ICON_PNG_LRG UPNP_DIR_ICONS "/upnpIconLrg.png"</span>
<a name="l00313"></a>00313 <span class="preprocessor"></span>
<a name="l00314"></a>00314 <span class="comment">/****************************************************</span>
<a name="l00315"></a>00315 <span class="comment"> *</span>
<a name="l00316"></a>00316 <span class="comment"> * 2.5 DIDL Properties</span>
<a name="l00317"></a>00317 <span class="comment"> *</span>
<a name="l00318"></a>00318 <span class="comment"> ****************************************************/</span>
<a name="l00319"></a>00319
<a name="l00320"></a>00320 <span class="preprocessor">#define UPNP_OBJECT_ITEM "item"</span>
<a name="l00321"></a>00321 <span class="preprocessor"></span><span class="preprocessor">#define UPNP_OBJECT_CONTAINER "container"</span>
<a name="l00322"></a>00322 <span class="preprocessor"></span>
<a name="l00323"></a>00323 <span class="preprocessor">#define UPNP_PROP_OBJECTID "@id"</span>
<a name="l00324"></a>00324 <span class="preprocessor"></span><span class="preprocessor">#define UPNP_PROP_PARENTID "@parentID"</span>
<a name="l00325"></a>00325 <span class="preprocessor"></span><span class="preprocessor">#define UPNP_PROP_TITLE "dc:title"</span>
<a name="l00326"></a>00326 <span class="preprocessor"></span><span class="preprocessor">#define UPNP_PROP_CREATOR "dc:creator"</span>
<a name="l00327"></a>00327 <span class="preprocessor"></span><span class="preprocessor">#define UPNP_PROP_RESTRICTED "@restricted"</span>
<a name="l00328"></a>00328 <span class="preprocessor"></span><span class="preprocessor">#define UPNP_PROP_WRITESTATUS "upnp:writeStatus"</span>
<a name="l00329"></a>00329 <span class="preprocessor"></span><span class="preprocessor">#define UPNP_PROP_CLASS "upnp:class"</span>
<a name="l00330"></a>00330 <span class="preprocessor"></span><span class="preprocessor">#define UPNP_PROP_CLASSNAME UPNP_PROP_CLASS "@name"</span>
<a name="l00331"></a>00331 <span class="preprocessor"></span><span class="preprocessor">#define UPNP_PROP_SEARCHCLASS "upnp:searchClass"</span>
<a name="l00332"></a>00332 <span class="preprocessor"></span><span class="preprocessor">#define UPNP_PROP_SCLASSDERIVED UPNP_PROP_SEARCHCLASS "@includeDerived"</span>
<a name="l00333"></a>00333 <span class="preprocessor"></span><span class="preprocessor">#define UPNP_PROP_REFERENCEID UPNP_OBJECT_ITEM "@refID"</span>
<a name="l00334"></a>00334 <span class="preprocessor"></span><span class="preprocessor">#define UPNP_PROP_SCLASSNAME UPNP_PROP_SEARCHCLASS "@name"</span>
<a name="l00335"></a>00335 <span class="preprocessor"></span><span class="preprocessor">#define UPNP_PROP_SEARCHABLE UPNP_OBJECT_CONTAINER "@searchable"</span>
<a name="l00336"></a>00336 <span class="preprocessor"></span><span class="preprocessor">#define UPNP_PROP_CHILDCOUNT UPNP_OBJECT_CONTAINER "@childcount"</span>
<a name="l00337"></a>00337 <span class="preprocessor"></span><span class="preprocessor">#define UPNP_PROP_RESOURCE "res"</span>
<a name="l00338"></a>00338 <span class="preprocessor"></span><span class="preprocessor">#define UPNP_PROP_PROTOCOLINFO UPNP_PROP_RESOURCE "@protocolInfo"</span>
<a name="l00339"></a>00339 <span class="preprocessor"></span><span class="preprocessor">#define UPNP_PROP_SIZE UPNP_PROP_RESOURCE "@size"</span>
<a name="l00340"></a>00340 <span class="preprocessor"></span><span class="preprocessor">#define UPNP_PROP_DURATION UPNP_PROP_RESOURCE "@duration"</span>
<a name="l00341"></a>00341 <span class="preprocessor"></span><span class="preprocessor">#define UPNP_PROP_BITRATE UPNP_PROP_RESOURCE "@bitrate"</span>
<a name="l00342"></a>00342 <span class="preprocessor"></span><span class="preprocessor">#define UPNP_PROP_SAMPLEFREQUENCE UPNP_PROP_RESOURCE "@sampleFreq"</span>
<a name="l00343"></a>00343 <span class="preprocessor"></span><span class="preprocessor">#define UPNP_PROP_BITSPERSAMPLE UPNP_PROP_RESOURCE "@bitsPerSample"</span>
<a name="l00344"></a>00344 <span class="preprocessor"></span><span class="preprocessor">#define UPNP_PROP_NOAUDIOCHANNELS UPNP_PROP_RESOURCE "@nrAudioChannels"</span>
<a name="l00345"></a>00345 <span class="preprocessor"></span><span class="preprocessor">#define UPNP_PROP_COLORDEPTH UPNP_PROP_RESOURCE "@colorDepth"</span>
<a name="l00346"></a>00346 <span class="preprocessor"></span><span class="preprocessor">#define UPNP_PROP_RESOLUTION UPNP_PROP_RESOURCE "@resolution"</span>
<a name="l00347"></a>00347 <span class="preprocessor"></span><span class="preprocessor">#define UPNP_PROP_GENRE "upnp:genre"</span>
<a name="l00348"></a>00348 <span class="preprocessor"></span><span class="preprocessor">#define UPNP_PROP_LONGDESCRIPTION "upnp:longDescription"</span>
<a name="l00349"></a>00349 <span class="preprocessor"></span><span class="preprocessor">#define UPNP_PROP_PRODUCER "upnp:producer"</span>
<a name="l00350"></a>00350 <span class="preprocessor"></span><span class="preprocessor">#define UPNP_PROP_RATING "upnp:rating"</span>
<a name="l00351"></a>00351 <span class="preprocessor"></span><span class="preprocessor">#define UPNP_PROP_ACTOR "upnp:actor"</span>
<a name="l00352"></a>00352 <span class="preprocessor"></span><span class="preprocessor">#define UPNP_PROP_DIRECTOR "upnp:director"</span>
<a name="l00353"></a>00353 <span class="preprocessor"></span><span class="preprocessor">#define UPNP_PROP_DESCRIPTION "dc:description"</span>
<a name="l00354"></a>00354 <span class="preprocessor"></span><span class="preprocessor">#define UPNP_PROP_PUBLISHER "dc:publisher"</span>
<a name="l00355"></a>00355 <span class="preprocessor"></span><span class="preprocessor">#define UPNP_PROP_LANGUAGE "dc:language"</span>
<a name="l00356"></a>00356 <span class="preprocessor"></span><span class="preprocessor">#define UPNP_PROP_RELATION "dc:relation"</span>
<a name="l00357"></a>00357 <span class="preprocessor"></span><span class="preprocessor">#define UPNP_PROP_STORAGEMEDIUM "upnp:storageMedium"</span>
<a name="l00358"></a>00358 <span class="preprocessor"></span><span class="preprocessor">#define UPNP_PROP_DVDREGIONCODE "upnp:DVDRegionCode"</span>
<a name="l00359"></a>00359 <span class="preprocessor"></span><span class="preprocessor">#define UPNP_PROP_CHANNELNAME "upnp:channelName"</span>
<a name="l00360"></a>00360 <span class="preprocessor"></span><span class="preprocessor">#define UPNP_PROP_SCHEDULEDSTARTTIME "upnp:scheduledStartTime"</span>
<a name="l00361"></a>00361 <span class="preprocessor"></span><span class="preprocessor">#define UPNP_PROP_SCHEDULEDENDTIME "upnp:scheduledEndTime"</span>
<a name="l00362"></a>00362 <span class="preprocessor"></span><span class="preprocessor">#define UPNP_PROP_ICON "upnp:icon"</span>
<a name="l00363"></a>00363 <span class="preprocessor"></span><span class="preprocessor">#define UPNP_PROP_REGION "upnp:region"</span>
<a name="l00364"></a>00364 <span class="preprocessor"></span><span class="preprocessor">#define UPNP_PROP_CHANNELNR "upnp:channelNr"</span>
<a name="l00365"></a>00365 <span class="preprocessor"></span><span class="preprocessor">#define UPNP_PROP_RIGHTS "dc:rights"</span>
<a name="l00366"></a>00366 <span class="preprocessor"></span><span class="preprocessor">#define UPNP_PROP_RADIOCALLSIGN "upnp:radioCallSign"</span>
<a name="l00367"></a>00367 <span class="preprocessor"></span><span class="preprocessor">#define UPNP_PROP_RADIOSTATIONID "upnp:radioStationID"</span>
<a name="l00368"></a>00368 <span class="preprocessor"></span><span class="preprocessor">#define UPNP_PROP_RADIOBAND "upnp:radioBand"</span>
<a name="l00369"></a>00369 <span class="preprocessor"></span><span class="preprocessor">#define UPNP_PROP_CONTRIBUTOR "dc:contributor"</span>
<a name="l00370"></a>00370 <span class="preprocessor"></span><span class="preprocessor">#define UPNP_PROP_DATE "dc:date"</span>
<a name="l00371"></a>00371 <span class="preprocessor"></span><span class="preprocessor">#define UPNP_PROP_ALBUM "upnp:album"</span>
<a name="l00372"></a>00372 <span class="preprocessor"></span><span class="preprocessor">#define UPNP_PROP_ARTIST "upnp:artist"</span>
<a name="l00373"></a>00373 <span class="preprocessor"></span><span class="preprocessor">#define UPNP_PROP_DLNA_CONTAINERTYPE "dlna:container"</span>
<a name="l00374"></a>00374 <span class="preprocessor"></span>
<a name="l00375"></a>00375 <span class="preprocessor">#define UPNP_DIDL_SKELETON "<DIDL-Lite "\</span>
<a name="l00376"></a>00376 <span class="preprocessor"> "xmlns:dc=\"" UPNP_XMLNS_DUBLINCORE "\" "\</span>
<a name="l00377"></a>00377 <span class="preprocessor"> "xmlns:upnp=\"" UPNP_XMLNS_UPNP "\" "\</span>
<a name="l00378"></a>00378 <span class="preprocessor"> "xmlns:dlna=\"" UPNP_XMLNS_DLNA_META "\" "\</span>
<a name="l00379"></a>00379 <span class="preprocessor"> "xmlns=\"" UPNP_XMLNS_DIDL "\"></DIDL-Lite>"</span>
<a name="l00380"></a>00380 <span class="preprocessor"></span>
<a name="l00381"></a>00381 <span class="comment">/****************************************************</span>
<a name="l00382"></a>00382 <span class="comment"> *</span>
<a name="l00383"></a>00383 <span class="comment"> * 2.6 Connection Manager Service (CMS)</span>
<a name="l00384"></a>00384 <span class="comment"> *</span>
<a name="l00385"></a>00385 <span class="comment"> ****************************************************/</span>
<a name="l00386"></a>00386
<a name="l00387"></a>00387 <span class="comment">/*Path to service description of conection manager service*/</span>
<a name="l00388"></a>00388 <span class="preprocessor">#define UPNP_CMS_SCPD_URL UPNP_DIR_XML "/cms_scpd.xml"</span>
<a name="l00389"></a>00389 <span class="preprocessor"></span><span class="preprocessor">#define UPNP_CMS_CONTROL_URL UPNP_DIR_CONTROL "/cms_control"</span>
<a name="l00390"></a>00390 <span class="preprocessor"></span><span class="preprocessor">#define UPNP_CMS_EVENT_URL UPNP_DIR_EVENT "/cms_event"</span>
<a name="l00391"></a>00391 <span class="preprocessor"></span><span class="preprocessor">#define UPNP_CMS_SERVICE_ID "urn:upnp-org:serviceId:ConnectionManager"</span>
<a name="l00392"></a>00392 <span class="preprocessor"></span><span class="preprocessor">#define UPNP_CMS_SERVICE_TYPE "urn:schemas-upnp-org:service:ConnectionManager:1"</span>
<a name="l00393"></a>00393 <span class="preprocessor"></span>
<a name="l00394"></a>00394 <span class="comment">/* Compatibility usage only --> See DLNA Profiles */</span>
<a name="l00395"></a>00395 <span class="preprocessor">#define UPNP_CMS_SUPPORTED_PROTOCOLS "http-get:*:video/mpeg:*," \</span>
<a name="l00396"></a>00396 <span class="preprocessor"> "http-get:*:audio/mpeg:*"</span>
<a name="l00397"></a>00397 <span class="preprocessor"></span>
<a name="l00398"></a>00398 <span class="comment">/****************************************************</span>
<a name="l00399"></a>00399 <span class="comment"> *</span>
<a name="l00400"></a>00400 <span class="comment"> * The UPnP CMS actions</span>
<a name="l00401"></a>00401 <span class="comment"> *</span>
<a name="l00402"></a>00402 <span class="comment"> * This constant definitions represent all actions</span>
<a name="l00403"></a>00403 <span class="comment"> * compliant with UPnP ConnectionManager:1</span>
<a name="l00404"></a>00404 <span class="comment"> *</span>
<a name="l00405"></a>00405 <span class="comment"> ****************************************************/</span>
<a name="l00406"></a>00406
<a name="l00407"></a>00407 <span class="preprocessor">#define UPNP_CMS_ACTION_GETPROTOCOLINFO "GetProtocolInfo"</span>
<a name="l00408"></a>00408 <span class="preprocessor"></span><span class="preprocessor">#define UPNP_CMS_ACTION_GETCURRENTCONNECTIONIDS "GetCurrentConnectionIDs"</span>
<a name="l00409"></a>00409 <span class="preprocessor"></span><span class="preprocessor">#define UPNP_CMS_ACTION_GETCURRENTCONNECTIONINFO "GetCurrentConnectionInfo"</span>
<a name="l00410"></a>00410 <span class="preprocessor"></span><span class="preprocessor">#define UPNP_CMS_ACTION_PREPAREFORCONNECTION "PrepareForConnection"</span>
<a name="l00411"></a>00411 <span class="preprocessor"></span><span class="preprocessor">#define UPNP_CMS_ACTION_CONNECTIONCOMPLETE "ConnectionComplete"</span>
<a name="l00412"></a>00412 <span class="preprocessor"></span>
<a name="l00413"></a>00413 <span class="comment">/****************************************************</span>
<a name="l00414"></a>00414 <span class="comment"> *</span>
<a name="l00415"></a>00415 <span class="comment"> * 2.7 Content Directory Service (CDS)</span>
<a name="l00416"></a>00416 <span class="comment"> *</span>
<a name="l00417"></a>00417 <span class="comment"> ****************************************************/</span>
<a name="l00418"></a>00418
<a name="l00419"></a>00419 <span class="comment">/*Path to service description of content directory service*/</span>
<a name="l00420"></a>00420 <span class="preprocessor">#define UPNP_CDS_SCPD_URL UPNP_DIR_XML "/cds_scpd.xml"</span>
<a name="l00421"></a>00421 <span class="preprocessor"></span><span class="preprocessor">#define UPNP_CDS_CONTROL_URL UPNP_DIR_CONTROL "/cds_control"</span>
<a name="l00422"></a>00422 <span class="preprocessor"></span><span class="preprocessor">#define UPNP_CDS_EVENT_URL UPNP_DIR_EVENT "/cds_event"</span>
<a name="l00423"></a>00423 <span class="preprocessor"></span><span class="preprocessor">#define UPNP_CDS_SERVICE_ID "urn:upnp-org:serviceId:ContentDirectory"</span>
<a name="l00424"></a>00424 <span class="preprocessor"></span><span class="preprocessor">#define UPNP_CDS_SERVICE_TYPE "urn:schemas-upnp-org:service:ContentDirectory:1"</span>
<a name="l00425"></a>00425 <span class="preprocessor"></span>
<a name="l00426"></a>00426 <span class="preprocessor">#define UPNP_CDS_SEARCH_CAPABILITIES ""</span>
<a name="l00427"></a>00427 <span class="preprocessor"></span><span class="preprocessor">#define UPNP_CDS_SORT_CAPABILITIES UPNP_PROP_TITLE ","\</span>
<a name="l00428"></a>00428 <span class="preprocessor"> UPNP_PROP_CREATOR ","\</span>
<a name="l00429"></a>00429 <span class="preprocessor"> UPNP_PROP_WRITESTATUS ","\</span>
<a name="l00430"></a>00430 <span class="preprocessor"> UPNP_PROP_DESCRIPTION ","\</span>
<a name="l00431"></a>00431 <span class="preprocessor"> UPNP_PROP_GENRE ","\</span>
<a name="l00432"></a>00432 <span class="preprocessor"> UPNP_PROP_LONGDESCRIPTION ","\</span>
<a name="l00433"></a>00433 <span class="preprocessor"> UPNP_PROP_PUBLISHER</span>
<a name="l00434"></a>00434 <span class="preprocessor"></span>
<a name="l00435"></a>00435 <span class="comment">/****************************************************</span>
<a name="l00436"></a>00436 <span class="comment"> *</span>
<a name="l00437"></a>00437 <span class="comment"> * The UPnP CDS actions</span>
<a name="l00438"></a>00438 <span class="comment"> *</span>
<a name="l00439"></a>00439 <span class="comment"> * This constant definitions represent all actions</span>
<a name="l00440"></a>00440 <span class="comment"> * compliant with UPnP ContentDirectory:1</span>
<a name="l00441"></a>00441 <span class="comment"> *</span>
<a name="l00442"></a>00442 <span class="comment"> ****************************************************/</span>
<a name="l00443"></a>00443
<a name="l00444"></a>00444 <span class="preprocessor">#define UPNP_CDS_ACTION_SEARCHCAPABILITIES "GetSearchCapabilities"</span>
<a name="l00445"></a>00445 <span class="preprocessor"></span><span class="preprocessor">#define UPNP_CDS_ACTION_SORTCAPABILITIES "GetSortCapabilities"</span>
<a name="l00446"></a>00446 <span class="preprocessor"></span><span class="preprocessor">#define UPNP_CDS_ACTION_SYSTEMUPDATEID "GetSystemUpdateID"</span>
<a name="l00447"></a>00447 <span class="preprocessor"></span><span class="preprocessor">#define UPNP_CDS_ACTION_BROWSE "Browse"</span>
<a name="l00448"></a>00448 <span class="preprocessor"></span><span class="preprocessor">#define UPNP_CDS_ACTION_SEARCH "Search"</span>
<a name="l00449"></a>00449 <span class="preprocessor"></span><span class="preprocessor">#define UPNP_CDS_ACTION_CREATEOBJECT "CreateObject"</span>
<a name="l00450"></a>00450 <span class="preprocessor"></span><span class="preprocessor">#define UPNP_CDS_ACTION_DESTROYOBJECT "DestroyObject"</span>
<a name="l00451"></a>00451 <span class="preprocessor"></span><span class="preprocessor">#define UPNP_CDS_ACTION_UPDATEOBJECT "UpdateObject"</span>
<a name="l00452"></a>00452 <span class="preprocessor"></span><span class="preprocessor">#define UPNP_CDS_ACTION_IMPORTRESOURCE "ImportResource"</span>
<a name="l00453"></a>00453 <span class="preprocessor"></span><span class="preprocessor">#define UPNP_CDS_ACTION_EXPORTRESOURCE "ExportResource"</span>
<a name="l00454"></a>00454 <span class="preprocessor"></span><span class="preprocessor">#define UPNP_CDS_ACTION_STOPTRANSFERRES "StopTransferResource"</span>
<a name="l00455"></a>00455 <span class="preprocessor"></span><span class="preprocessor">#define UPNP_CDS_ACTION_TRANSFERPROGRESS "GetTransferProgress"</span>
<a name="l00456"></a>00456 <span class="preprocessor"></span><span class="preprocessor">#define UPNP_CDS_ACTION_DELETERESOURCE "DeleteResource"</span>
<a name="l00457"></a>00457 <span class="preprocessor"></span><span class="preprocessor">#define UPNP_CDS_ACTION_CREATEREFERENCE "CreateReference"</span>
<a name="l00458"></a>00458 <span class="preprocessor"></span>
<a name="l00459"></a>00459 <span class="comment">/****************************************************</span>
<a name="l00460"></a>00460 <span class="comment"> *</span>
<a name="l00461"></a>00461 <span class="comment"> * 2.8 UPnP AV Transport (AVT)</span>
<a name="l00462"></a>00462 <span class="comment"> *</span>
<a name="l00463"></a>00463 <span class="comment"> ****************************************************/</span>
<a name="l00464"></a>00464
<a name="l00465"></a>00465 <span class="preprocessor">#define UPNP_AVT_SCPD_URL UPNP_DIR_XML "/avt_scpd.xml"</span>
<a name="l00466"></a>00466 <span class="preprocessor"></span><span class="preprocessor">#define UPNP_AVT_CONTROL_URL UPNP_DIR_CONTROL "/avt_control"</span>
<a name="l00467"></a>00467 <span class="preprocessor"></span><span class="preprocessor">#define UPNP_AVT_EVENT_URL UPNP_DIR_EVENT "/avt_event"</span>
<a name="l00468"></a>00468 <span class="preprocessor"></span><span class="preprocessor">#define UPNP_AVT_SERVICE_ID "urn:upnp-org:serviceID:AVTransport"</span>
<a name="l00469"></a>00469 <span class="preprocessor"></span><span class="preprocessor">#define UPNP_AVT_SERVICE_TYPE "urn:schemas-upnp-org:service:AVTransport:1"</span>
<a name="l00470"></a>00470 <span class="preprocessor"></span>
<a name="l00471"></a>00471 <span class="comment">/****************************************************</span>
<a name="l00472"></a>00472 <span class="comment"> *</span>
<a name="l00473"></a>00473 <span class="comment"> * The UPnP AVT actions</span>
<a name="l00474"></a>00474 <span class="comment"> *</span>
<a name="l00475"></a>00475 <span class="comment"> * This constant definitions represent all actions</span>
<a name="l00476"></a>00476 <span class="comment"> * compliant with UPnP AVTransport:1</span>
<a name="l00477"></a>00477 <span class="comment"> *</span>
<a name="l00478"></a>00478 <span class="comment"> ****************************************************/</span>
<a name="l00479"></a>00479
<a name="l00480"></a>00480 <span class="comment">/****************************************************</span>
<a name="l00481"></a>00481 <span class="comment"> *</span>
<a name="l00482"></a>00482 <span class="comment"> * 2.9 Media classes</span>
<a name="l00483"></a>00483 <span class="comment"> *</span>
<a name="l00484"></a>00484 <span class="comment"> ****************************************************/</span>
<a name="l00485"></a>00485
<a name="l00486"></a>00486 <span class="preprocessor">#define UPNP_CLASS_OBJECT "object"</span>
<a name="l00487"></a>00487 <span class="preprocessor"></span><span class="preprocessor">#define UPNP_CLASS_ITEM UPNP_CLASS_OBJECT "." "item"</span>
<a name="l00488"></a>00488 <span class="preprocessor"></span><span class="preprocessor">#define UPNP_CLASS_CONTAINER UPNP_CLASS_OBJECT "." "container"</span>
<a name="l00489"></a>00489 <span class="preprocessor"></span><span class="preprocessor">#define UPNP_CLASS_IMAGE UPNP_CLASS_ITEM "." "imageItem"</span>
<a name="l00490"></a>00490 <span class="preprocessor"></span><span class="preprocessor">#define UPNP_CLASS_AUDIO UPNP_CLASS_ITEM "." "audioItem"</span>
<a name="l00491"></a>00491 <span class="preprocessor"></span><span class="preprocessor">#define UPNP_CLASS_VIDEO UPNP_CLASS_ITEM "." "videoItem"</span>
<a name="l00492"></a>00492 <span class="preprocessor"></span><span class="preprocessor">#define UPNP_CLASS_PLAYLIST UPNP_CLASS_ITEM "." "playlistItem"</span>
<a name="l00493"></a>00493 <span class="preprocessor"></span><span class="preprocessor">#define UPNP_CLASS_TEXT UPNP_CLASS_ITEM "." "textItem"</span>
<a name="l00494"></a>00494 <span class="preprocessor"></span><span class="preprocessor">#define UPNP_CLASS_PHOTO UPNP_CLASS_IMAGE "." "photo"</span>
<a name="l00495"></a>00495 <span class="preprocessor"></span><span class="preprocessor">#define UPNP_CLASS_MUSICTRACK UPNP_CLASS_AUDIO "." "musikTrack"</span>
<a name="l00496"></a>00496 <span class="preprocessor"></span><span class="preprocessor">#define UPNP_CLASS_AUDIOBC UPNP_CLASS_AUDIO "." "audioBroadcast"</span>
<a name="l00497"></a>00497 <span class="preprocessor"></span><span class="preprocessor">#define UPNP_CLASS_AUDIOBOOK UPNP_CLASS_AUDIO "." "audioBook"</span>
<a name="l00498"></a>00498 <span class="preprocessor"></span><span class="preprocessor">#define UPNP_CLASS_MOVIE UPNP_CLASS_VIDEO "." "movie"</span>
<a name="l00499"></a>00499 <span class="preprocessor"></span><span class="preprocessor">#define UPNP_CLASS_VIDEOBC UPNP_CLASS_VIDEO "." "videoBroadcast"</span>
<a name="l00500"></a>00500 <span class="preprocessor"></span><span class="preprocessor">#define UPNP_CLASS_MUSICVIDCLIP UPNP_CLASS_VIDEO "." "musicVideoClip"</span>
<a name="l00501"></a>00501 <span class="preprocessor"></span><span class="preprocessor">#define UPNP_CLASS_PERSON UPNP_CLASS_CONTAINER "." "person"</span>
<a name="l00502"></a>00502 <span class="preprocessor"></span><span class="preprocessor">#define UPNP_CLASS_PLAYLISTCONT UPNP_CLASS_CONTAINER "." "playlistContainer"</span>
<a name="l00503"></a>00503 <span class="preprocessor"></span><span class="preprocessor">#define UPNP_CLASS_ALBUM UPNP_CLASS_CONTAINER "." "album"</span>
<a name="l00504"></a>00504 <span class="preprocessor"></span><span class="preprocessor">#define UPNP_CLASS_GENRE UPNP_CLASS_CONTAINER "." "genre"</span>
<a name="l00505"></a>00505 <span class="preprocessor"></span><span class="preprocessor">#define UPNP_CLASS_STORAGESYS UPNP_CLASS_CONTAINER "." "storageSystem"</span>
<a name="l00506"></a>00506 <span class="preprocessor"></span><span class="preprocessor">#define UPNP_CLASS_STORAGEVOL UPNP_CLASS_CONTAINER "." "storageVolume"</span>
<a name="l00507"></a>00507 <span class="preprocessor"></span><span class="preprocessor">#define UPNP_CLASS_STORAGEFOLD UPNP_CLASS_CONTAINER "." "storageFolder"</span>
<a name="l00508"></a>00508 <span class="preprocessor"></span><span class="preprocessor">#define UPNP_CLASS_MUSICARTIST UPNP_CLASS_PERSON "." "musicArtist"</span>
<a name="l00509"></a>00509 <span class="preprocessor"></span><span class="preprocessor">#define UPNP_CLASS_MUSICALBUM UPNP_CLASS_ALBUM "." "musicAlbum"</span>
<a name="l00510"></a>00510 <span class="preprocessor"></span><span class="preprocessor">#define UPNP_CLASS_PHOTOALBUM UPNP_CLASS_ALBUM "." "photoAlbum"</span>
<a name="l00511"></a>00511 <span class="preprocessor"></span><span class="preprocessor">#define UPNP_CLASS_MUSICGENRE UPNP_CLASS_GENRE "." "musicGenre"</span>
<a name="l00512"></a>00512 <span class="preprocessor"></span><span class="preprocessor">#define UPNP_CLASS_MOVIEGENRE UPNP_CLASS_GENRE "." "movieGenre"</span>
<a name="l00513"></a>00513 <span class="preprocessor"></span>
<a name="l00514"></a>00514 <span class="comment">/****************************************************</span>
<a name="l00515"></a>00515 <span class="comment"> *</span>
<a name="l00516"></a>00516 <span class="comment"> * 2.10 Storage media</span>
<a name="l00517"></a>00517 <span class="comment"> *</span>
<a name="l00518"></a>00518 <span class="comment"> ****************************************************/</span>
<a name="l00519"></a>00519
<a name="l00520"></a>00520 <span class="preprocessor">#define UPNP_STORAGE_UNKNOWN "UNKNOWN"</span>
<a name="l00521"></a>00521 <span class="preprocessor"></span><span class="preprocessor">#define UPNP_STORAGE_DV "DV"</span>
<a name="l00522"></a>00522 <span class="preprocessor"></span><span class="preprocessor">#define UPNP_STORAGE_MINI_DV "MINI-DV"</span>
<a name="l00523"></a>00523 <span class="preprocessor"></span><span class="preprocessor">#define UPNP_STORAGE_VHS "VHS"</span>
<a name="l00524"></a>00524 <span class="preprocessor"></span><span class="preprocessor">#define UPNP_STORAGE_W_VHS "W-VHS"</span>
<a name="l00525"></a>00525 <span class="preprocessor"></span><span class="preprocessor">#define UPNP_STORAGE_S_VHS "S-VHS"</span>
<a name="l00526"></a>00526 <span class="preprocessor"></span><span class="preprocessor">#define UPNP_STORAGE_D_VHS "D-VHS"</span>
<a name="l00527"></a>00527 <span class="preprocessor"></span><span class="preprocessor">#define UPNP_STORAGE_VHSC "VHSC"</span>
<a name="l00528"></a>00528 <span class="preprocessor"></span><span class="preprocessor">#define UPNP_STORAGE_VIDEO8 "VIDEO8"</span>
<a name="l00529"></a>00529 <span class="preprocessor"></span><span class="preprocessor">#define UPNP_STORAGE_HI8 "HI8"</span>
<a name="l00530"></a>00530 <span class="preprocessor"></span><span class="preprocessor">#define UPNP_STORAGE_CD_ROM "CD-ROM"</span>
<a name="l00531"></a>00531 <span class="preprocessor"></span><span class="preprocessor">#define UPNP_STORAGE_CD_DA "CD-DA"</span>
<a name="l00532"></a>00532 <span class="preprocessor"></span><span class="preprocessor">#define UPNP_STORAGE_CD_R "CD-R"</span>
<a name="l00533"></a>00533 <span class="preprocessor"></span><span class="preprocessor">#define UPNP_STORAGE_CD_RW "CD-RW"</span>
<a name="l00534"></a>00534 <span class="preprocessor"></span><span class="preprocessor">#define UPNP_STORAGE_VIDEO_CD "VIDEO-CD"</span>
<a name="l00535"></a>00535 <span class="preprocessor"></span><span class="preprocessor">#define UPNP_STORAGE_SACD "SACD"</span>
<a name="l00536"></a>00536 <span class="preprocessor"></span><span class="preprocessor">#define UPNP_STORAGE_MD_AUDIO "MD-AUDIO"</span>
<a name="l00537"></a>00537 <span class="preprocessor"></span><span class="preprocessor">#define UPNP_STORAGE_MD_PICTURE "MD-PICTURE"</span>
<a name="l00538"></a>00538 <span class="preprocessor"></span><span class="preprocessor">#define UPNP_STORAGE_DVD_ROM "DVD-ROM"</span>
<a name="l00539"></a>00539 <span class="preprocessor"></span><span class="preprocessor">#define UPNP_STORAGE_DVD_VIDEO "DVD-VIDEO"</span>
<a name="l00540"></a>00540 <span class="preprocessor"></span><span class="preprocessor">#define UPNP_STORAGE_DVD_R_MINUS "DVD-R"</span>
<a name="l00541"></a>00541 <span class="preprocessor"></span><span class="preprocessor">#define UPNP_STORAGE_DVD_RW_PLUS "DVD+RW"</span>
<a name="l00542"></a>00542 <span class="preprocessor"></span><span class="preprocessor">#define UPNP_STORAGE_DVD_RW_MINUS "DVD-RW"</span>
<a name="l00543"></a>00543 <span class="preprocessor"></span><span class="preprocessor">#define UPNP_STORAGE_DVD_RAM "DVD-RAM"</span>
<a name="l00544"></a>00544 <span class="preprocessor"></span><span class="preprocessor">#define UPNP_STORAGE_DVD_AUDIO "DVD-AUDIO"</span>
<a name="l00545"></a>00545 <span class="preprocessor"></span><span class="preprocessor">#define UPNP_STORAGE_DAT "DAT"</span>
<a name="l00546"></a>00546 <span class="preprocessor"></span><span class="preprocessor">#define UPNP_STORAGE_LD "LD"</span>
<a name="l00547"></a>00547 <span class="preprocessor"></span><span class="preprocessor">#define UPNP_STORAGE_HDD "HDD"</span>
<a name="l00548"></a>00548 <span class="preprocessor"></span><span class="preprocessor">#define UPNP_STORAGE_MICRO_MV "MICRO-MV"</span>
<a name="l00549"></a>00549 <span class="preprocessor"></span><span class="preprocessor">#define UPNP_STORAGE_NETWORK "NETWORK"</span>
<a name="l00550"></a>00550 <span class="preprocessor"></span>
<a name="l00551"></a>00551 <span class="comment">/****************************************************</span>
<a name="l00552"></a>00552 <span class="comment"> *</span>
<a name="l00553"></a>00553 <span class="comment"> * 2.11 Known Errors</span>
<a name="l00554"></a>00554 <span class="comment"> *</span>
<a name="l00555"></a>00555 <span class="comment"> ****************************************************/</span>
<a name="l00556"></a>00556
<a name="l00557"></a>00557 <span class="comment">/* Errors 401-404, 501 are already defined in</span>
<a name="l00558"></a>00558 <span class="comment"> * Intel SDK, however 403 MUST NOT USED.</span>
<a name="l00559"></a>00559 <span class="comment"> */</span>
<a name="l00560"></a>00560
<a name="l00561"></a>00561 <span class="comment">/****** 600 Common Action Errors ******/</span>
<a name="l00562"></a>00562
<a name="l00563"></a>00563 <span class="preprocessor">#define UPNP_SOAP_E_ARGUMENT_INVALID 600</span>
<a name="l00564"></a>00564 <span class="preprocessor"></span><span class="preprocessor">#define UPNP_SOAP_E_ARGUMENT_OUT_OF_RANGE 601</span>
<a name="l00565"></a>00565 <span class="preprocessor"></span><span class="preprocessor">#define UPNP_SOAP_E_ACTION_NOT_IMPLEMENTED 602</span>
<a name="l00566"></a>00566 <span class="preprocessor"></span><span class="preprocessor">#define UPNP_SOAP_E_OUT_OF_MEMORY 603</span>
<a name="l00567"></a>00567 <span class="preprocessor"></span><span class="preprocessor">#define UPNP_SOAP_E_HUMAN_INTERVENTION 604</span>
<a name="l00568"></a>00568 <span class="preprocessor"></span><span class="preprocessor">#define UPNP_SOAP_E_STRING_TO_LONG 605</span>
<a name="l00569"></a>00569 <span class="preprocessor"></span><span class="preprocessor">#define UPNP_SOAP_E_NOT_AUTHORIZED 606</span>
<a name="l00570"></a>00570 <span class="preprocessor"></span><span class="preprocessor">#define UPNP_SOAP_E_SIGNATURE_FAILURE 607</span>
<a name="l00571"></a>00571 <span class="preprocessor"></span><span class="preprocessor">#define UPNP_SOAP_E_SIGNATURE_MISSING 608</span>
<a name="l00572"></a>00572 <span class="preprocessor"></span><span class="preprocessor">#define UPNP_SOAP_E_NOT_ENCRYPTED 609</span>
<a name="l00573"></a>00573 <span class="preprocessor"></span><span class="preprocessor">#define UPNP_SOAP_E_INVALID_SEQUENCE 610</span>
<a name="l00574"></a>00574 <span class="preprocessor"></span><span class="preprocessor">#define UPNP_SOAP_E_INVALID_CONTROL_URL 611</span>
<a name="l00575"></a>00575 <span class="preprocessor"></span><span class="preprocessor">#define UPNP_SOAP_E_NO_SUCH_SESSION 612</span>
<a name="l00576"></a>00576 <span class="preprocessor"></span>
<a name="l00577"></a>00577 <span class="comment">/****** 700 Action specific Errors ******/</span>
<a name="l00578"></a>00578
<a name="l00579"></a>00579 <span class="preprocessor">#define UPNP_CDS_E_NO_SUCH_OBJECT 701</span>
<a name="l00580"></a>00580 <span class="preprocessor"></span><span class="preprocessor">#define UPNP_CDS_E_INVALID_CURRENT_TAG 702</span>
<a name="l00581"></a>00581 <span class="preprocessor"></span><span class="preprocessor">#define UPNP_CDS_E_INVALID_NEW_TAG 703</span>
<a name="l00582"></a>00582 <span class="preprocessor"></span><span class="preprocessor">#define UPNP_CDS_E_REQUIRED_TAG 704</span>
<a name="l00583"></a>00583 <span class="preprocessor"></span><span class="preprocessor">#define UPNP_CDS_E_READ_ONLY_TAG 705</span>
<a name="l00584"></a>00584 <span class="preprocessor"></span><span class="preprocessor">#define UPNP_CDS_E_PARAMETER_MISMATCH 706</span>
<a name="l00585"></a>00585 <span class="preprocessor"></span><span class="preprocessor">#define UPNP_CDS_E_INVALID_SEARCH_CRITERIA 708</span>
<a name="l00586"></a>00586 <span class="preprocessor"></span><span class="preprocessor">#define UPNP_CDS_E_INVALID_SORT_CRITERIA 709</span>
<a name="l00587"></a>00587 <span class="preprocessor"></span><span class="preprocessor">#define UPNP_CDS_E_NO_SUCH_CONTAINER 710</span>
<a name="l00588"></a>00588 <span class="preprocessor"></span><span class="preprocessor">#define UPNP_CDS_E_RESTRICTED_OBJECT 711</span>
<a name="l00589"></a>00589 <span class="preprocessor"></span><span class="preprocessor">#define UPNP_CDS_E_BAD_METADATA 712</span>
<a name="l00590"></a>00590 <span class="preprocessor"></span><span class="preprocessor">#define UPNP_CDS_E_RESTRICTED_PARENT 713</span>
<a name="l00591"></a>00591 <span class="preprocessor"></span><span class="preprocessor">#define UPNP_CDS_E_NO_SUCH_SOURCE_RESOURCE 714</span>
<a name="l00592"></a>00592 <span class="preprocessor"></span><span class="preprocessor">#define UPNP_CDS_E_RESOURCE_ACCESS_DENIED 715</span>
<a name="l00593"></a>00593 <span class="preprocessor"></span><span class="preprocessor">#define UPNP_CDS_E_TRANSFER_BUSY 716</span>
<a name="l00594"></a>00594 <span class="preprocessor"></span><span class="preprocessor">#define UPNP_CDS_E_NO_SUCH_FILE_TRANSFER 717</span>
<a name="l00595"></a>00595 <span class="preprocessor"></span><span class="preprocessor">#define UPNP_CDS_E_NO_SUCH_DESTINATION_RESOURCE 718</span>
<a name="l00596"></a>00596 <span class="preprocessor"></span><span class="preprocessor">#define UPNP_CDS_E_DEST_RESOURCE_ACCESS_DENIED 719</span>
<a name="l00597"></a>00597 <span class="preprocessor"></span><span class="preprocessor">#define UPNP_CDS_E_CANT_PROCESS_REQUEST 720</span>
<a name="l00598"></a>00598 <span class="preprocessor"></span>
<a name="l00599"></a>00599 <span class="preprocessor">#define UPNP_CMS_E_INCOMPATIBLE_PROTOCOL_INFO 701</span>
<a name="l00600"></a>00600 <span class="preprocessor"></span><span class="preprocessor">#define UPNP_CMS_E_INCOMPATIBLE_DIRECTIONS 702</span>
<a name="l00601"></a>00601 <span class="preprocessor"></span><span class="preprocessor">#define UPNP_CMS_E_INSUFFICIENT_RESOURCES 703</span>
<a name="l00602"></a>00602 <span class="preprocessor"></span><span class="preprocessor">#define UPNP_CMS_E_LOCAL_RESTRICTIONS 704</span>
<a name="l00603"></a>00603 <span class="preprocessor"></span><span class="preprocessor">#define UPNP_CMS_E_ACCESS_DENIED 705</span>
<a name="l00604"></a>00604 <span class="preprocessor"></span><span class="preprocessor">#define UPNP_CMS_E_INVALID_CONNECTION_REFERENCE 706</span>
<a name="l00605"></a>00605 <span class="preprocessor"></span><span class="preprocessor">#define UPNP_CMS_E_NOT_IN_NETWORK 707</span>
<a name="l00606"></a>00606 <span class="preprocessor"></span>
<a name="l00607"></a>00607 <span class="comment">/****************************************************</span>
<a name="l00608"></a>00608 <span class="comment"> *</span>
<a name="l00609"></a>00609 <span class="comment"> * 2.12 Write Status</span>
<a name="l00610"></a>00610 <span class="comment"> *</span>
<a name="l00611"></a>00611 <span class="comment"> ****************************************************/</span>
<a name="l00612"></a>00612
<a name="l00613"></a>00613 <span class="keyword">enum</span> UPnPWriteStatus {
<a name="l00614"></a>00614 WS_UNKNOWN=0,
<a name="l00615"></a>00615 WS_WRITABLE,
<a name="l00616"></a>00616 WS_PROTECTED,
<a name="l00617"></a>00617 WS_NOT_WRITABLE,
<a name="l00618"></a>00618 WS_MIXED
<a name="l00619"></a>00619 };
<a name="l00620"></a>00620
<a name="l00621"></a>00621 <span class="comment">/****************************************************</span>
<a name="l00622"></a>00622 <span class="comment"> *</span>
<a name="l00623"></a>00623 <span class="comment"> * 3. DLNA</span>
<a name="l00624"></a>00624 <span class="comment"> *</span>
<a name="l00625"></a>00625 <span class="comment"> ****************************************************/</span>
<a name="l00626"></a>00626
<a name="l00627"></a>00627 <span class="preprocessor">#define DLNA_PROTOCOL_VERSION_MAJOR 1</span>
<a name="l00628"></a>00628 <span class="preprocessor"></span><span class="preprocessor">#define DLNA_PROTOCOL_VERSION_MINOR 5</span>
<a name="l00629"></a>00629 <span class="preprocessor"></span><span class="preprocessor">#define DLNA_PROTOCOL_VERSION_MICRO 0</span>
<a name="l00630"></a>00630 <span class="preprocessor"></span>
<a name="l00631"></a>00631 <span class="preprocessor">#define DLNA_PROTOCOL_VERSION_INT VERSION_INT(DLNA_PROTOCOL_VERSION_MAJOR, \</span>
<a name="l00632"></a>00632 <span class="preprocessor"> DLNA_PROTOCOL_VERSION_MINOR, \</span>
<a name="l00633"></a>00633 <span class="preprocessor"> DLNA_PROTOCOL_VERSION_MICRO)</span>
<a name="l00634"></a>00634 <span class="preprocessor"></span>
<a name="l00635"></a>00635 <span class="preprocessor">#define DLNA_PROTOCOL_VERSION_STR VERSION_STR(DLNA_PROTOCOL_VERSION_MAJOR, \</span>
<a name="l00636"></a>00636 <span class="preprocessor"> DLNA_PROTOCOL_VERSION_MINOR, \</span>
<a name="l00637"></a>00637 <span class="preprocessor"> DLNA_PROTOCOL_VERSION_MICRO)</span>
<a name="l00638"></a>00638 <span class="preprocessor"></span>
<a name="l00639"></a>00639 <span class="comment">/****************************************************</span>
<a name="l00640"></a>00640 <span class="comment"> *</span>
<a name="l00641"></a>00641 <span class="comment"> * 3.1 Protocol info fields</span>
<a name="l00642"></a>00642 <span class="comment"> *</span>
<a name="l00643"></a>00643 <span class="comment"> ****************************************************/</span>
<a name="l00644"></a>00644
<a name="l00651"></a>00651 <span class="preprocessor">#define DLNA_OPERATION_NONE 00 </span>
<a name="l00652"></a>00652 <span class="preprocessor">#define DLNA_OPERATION_TIME_SEEK_RANGE 10 </span>
<a name="l00653"></a>00653 <span class="preprocessor">#define DLNA_OPERATION_RANGE 01 </span>
<a name="l00654"></a>00654 <span class="preprocessor"></span>
<a name="l00655"></a>00655 <span class="preprocessor"></span><span class="preprocessor">#define DLNA_CONVERSION_TRANSCODED 1 </span>
<a name="l00656"></a>00656 <span class="preprocessor">#define DLNA_CONVERSION_NONE 0 </span>
<a name="l00657"></a>00657 <span class="preprocessor"></span>
<a name="l00658"></a>00658 <span class="preprocessor"></span><span class="preprocessor">#define DLNA_SUPPORTED_PLAYSPEEDS "2,4,8,-2,-4,-8"; </span>
<a name="l00659"></a>00659 <span class="preprocessor"></span>
<a name="l00660"></a>00660 <span class="preprocessor"></span><span class="preprocessor">#define DLNA_TRANSFER_PROTOCOL_HTTP 1 </span>
<a name="l00661"></a>00661 <span class="preprocessor">#define DLNA_TRANSFER_PROTOCOL_RTP 2 </span>
<a name="l00662"></a>00662 <span class="preprocessor"></span>
<a name="l00663"></a>00663 <span class="preprocessor"></span><span class="comment">/****************************************************</span>
<a name="l00664"></a>00664 <span class="comment"> *</span>
<a name="l00665"></a>00665 <span class="comment"> * 3.2 Protocol info flags</span>
<a name="l00666"></a>00666 <span class="comment"> *</span>
<a name="l00667"></a>00667 <span class="comment"> ****************************************************/</span>
<a name="l00668"></a>00668
<a name="l00669"></a>00669 <span class="preprocessor">#define DLNA_FLAG_SENDER_PACED 1 << 31 </span>
<a name="l00670"></a>00670 <span class="preprocessor">#define DLNA_FLAG_TIME_BASED_SEEK 1 << 30 </span>
<a name="l00671"></a>00671 <span class="preprocessor">#define DLNA_FLAG_BYTE_BASED_SEEK 1 << 29 </span>
<a name="l00672"></a>00672 <span class="preprocessor">#define DLNA_FLAG_PLAY_CONTAINER 1 << 28 </span>
<a name="l00673"></a>00673 <span class="preprocessor">#define DLNA_FLAG_S0_INCREASE 1 << 27 </span>
<a name="l00674"></a>00674 <span class="preprocessor">#define DLNA_FLAG_SN_INCREASE 1 << 26 </span>
<a name="l00675"></a>00675 <span class="preprocessor">#define DLNA_FLAG_RTSP_PAUSE 1 << 25 </span>
<a name="l00676"></a>00676 <span class="preprocessor">#define DLNA_FLAG_STREAMING_TRANSFER 1 << 24 </span>
<a name="l00677"></a>00677 <span class="preprocessor">#define DLNA_FLAG_INTERACTIVE_TRANSFER 1 << 23 </span>
<a name="l00678"></a>00678 <span class="preprocessor">#define DLNA_FLAG_BACKGROUND_TRANSFER 1 << 22 </span>
<a name="l00679"></a>00679 <span class="preprocessor">#define DLNA_FLAG_CONNECTION_STALLING 1 << 21 </span>
<a name="l00680"></a>00680 <span class="preprocessor">#define DLNA_FLAG_VERSION_1_5 1 << 20 </span>
<a name="l00681"></a>00681 <span class="preprocessor">#define DLNA_FLAG_CLEARTEXT_CONTENT 1 << 16 </span>
<a name="l00682"></a>00682 <span class="preprocessor">#define DLNA_FLAG_CLEARTEXT_BYTE_FULL_SEEK 1 << 15 </span>
<a name="l00683"></a>00683 <span class="preprocessor">#define DLNA_FLAG_CLEARTEXT_LIMITED_SEEK 1 << 14 </span>
<a name="l00684"></a>00684 <span class="preprocessor"></span>
<a name="l00685"></a>00685 <span class="preprocessor"></span><span class="preprocessor">#define DLNA_FLAGS_PLUGIN_SUPPORT DLNA_FLAG_BYTE_BASED_SEEK | \</span>
<a name="l00686"></a>00686 <span class="preprocessor"> DLNA_FLAG_SN_INCREASE | \</span>
<a name="l00687"></a>00687 <span class="preprocessor"> DLNA_FLAG_STREAMING_TRANSFER | \</span>
<a name="l00688"></a>00688 <span class="preprocessor"> DLNA_FLAG_BACKGROUND_TRANSFER | \</span>
<a name="l00689"></a>00689 <span class="preprocessor"> DLNA_FLAG_CONNECTION_STALLING | \</span>
<a name="l00690"></a>00690 <span class="preprocessor"> DLNA_FLAG_VERSION_1_5</span>
<a name="l00691"></a>00691 <span class="preprocessor"></span>
<a name="l00692"></a>00692 <span class="comment">/****************************************************</span>
<a name="l00693"></a>00693 <span class="comment"> *</span>
<a name="l00694"></a>00694 <span class="comment"> * 3.3 Media profiles</span>
<a name="l00695"></a>00695 <span class="comment"> *</span>
<a name="l00696"></a>00696 <span class="comment"> ****************************************************/</span>
<a name="l00697"></a>00697
<a name="l00705"></a><a class="code" href="structDLNAProfile.html">00705</a> <span class="keyword">struct </span><a class="code" href="structDLNAProfile.html">DLNAProfile</a> {
<a name="l00706"></a><a class="code" href="structDLNAProfile.html#4957399cd872c2d843a35a886f9a6a5a">00706</a> <span class="keyword">const</span> <span class="keywordtype">char</span>* <a class="code" href="structDLNAProfile.html#4957399cd872c2d843a35a886f9a6a5a" title="the DLNA profile ID">ID</a>;
<a name="l00707"></a><a class="code" href="structDLNAProfile.html#79dc39f6af5a840901ad09617792cb41">00707</a> <span class="keyword">const</span> <span class="keywordtype">char</span>* <a class="code" href="structDLNAProfile.html#79dc39f6af5a840901ad09617792cb41" title="the mime type of the resource">mime</a>;
<a name="l00708"></a>00708 };
<a name="l00709"></a>00709
<a name="l00716"></a><a class="code" href="structDLNAIconProfile.html">00716</a> <span class="keyword">struct </span><a class="code" href="structDLNAIconProfile.html">DLNAIconProfile</a> {
<a name="l00717"></a><a class="code" href="structDLNAIconProfile.html#d5dc566526b37cddf1cfd14fa1efa509">00717</a> <span class="keyword">const</span> <span class="keywordtype">char</span>* <a class="code" href="structDLNAIconProfile.html#d5dc566526b37cddf1cfd14fa1efa509" title="the mime type of the image">mime</a>;
<a name="l00718"></a><a class="code" href="structDLNAIconProfile.html#b570aed93a91d6629a5f14ac28bb474d">00718</a> <span class="keywordtype">unsigned</span> <span class="keywordtype">short</span> <a class="code" href="structDLNAIconProfile.html#b570aed93a91d6629a5f14ac28bb474d" title="image width in pixel">width</a>;
<a name="l00719"></a><a class="code" href="structDLNAIconProfile.html#80d7178a6681bef071a5c8e3598e54fb">00719</a> <span class="keywordtype">unsigned</span> <span class="keywordtype">short</span> <a class="code" href="structDLNAIconProfile.html#80d7178a6681bef071a5c8e3598e54fb" title="image height in pixel">height</a>;
<a name="l00720"></a><a class="code" href="structDLNAIconProfile.html#7c3a12a0f4673cd6d9b49895326b99c3">00720</a> <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> <a class="code" href="structDLNAIconProfile.html#7c3a12a0f4673cd6d9b49895326b99c3" title="bit depth in bits per pixel">bitDepth</a>;
<a name="l00721"></a>00721 };
<a name="l00722"></a>00722
<a name="l00723"></a>00723 <span class="comment">/* Images */</span>
<a name="l00724"></a>00724 <span class="comment">/* Audio */</span>
<a name="l00725"></a>00725 <span class="keyword">extern</span> <a class="code" href="structDLNAProfile.html">DLNAProfile</a> DLNA_PROFILE_MPEG1_L3;
<a name="l00726"></a>00726 <span class="comment">/* Video */</span>
<a name="l00727"></a>00727 <span class="keyword">extern</span> <a class="code" href="structDLNAProfile.html">DLNAProfile</a> DLNA_PROFILE_MPEG_TS_SD_EU;
<a name="l00728"></a>00728 <span class="keyword">extern</span> <a class="code" href="structDLNAProfile.html">DLNAProfile</a> DLNA_PROFILE_AVC_TS_HD_EU;
<a name="l00729"></a>00729
<a name="l00730"></a>00730 <span class="comment">/* Icons */</span>
<a name="l00731"></a>00731 <span class="keyword">extern</span> <a class="code" href="structDLNAIconProfile.html">DLNAIconProfile</a> DLNA_ICON_JPEG_SM_24;
<a name="l00732"></a>00732 <span class="keyword">extern</span> <a class="code" href="structDLNAIconProfile.html">DLNAIconProfile</a> DLNA_ICON_JPEG_LRG_24;
<a name="l00733"></a>00733 <span class="keyword">extern</span> <a class="code" href="structDLNAIconProfile.html">DLNAIconProfile</a> DLNA_ICON_PNG_SM_24A;
<a name="l00734"></a>00734 <span class="keyword">extern</span> <a class="code" href="structDLNAIconProfile.html">DLNAIconProfile</a> DLNA_ICON_PNG_LRG_24A;
<a name="l00735"></a>00735
<a name="l00736"></a>00736 <span class="comment">/****************************************************</span>
<a name="l00737"></a>00737 <span class="comment"> *</span>
<a name="l00738"></a>00738 <span class="comment"> * 3.4 Container types</span>
<a name="l00739"></a>00739 <span class="comment"> *</span>
<a name="l00740"></a>00740 <span class="comment"> ****************************************************/</span>
<a name="l00741"></a>00741
<a name="l00742"></a>00742 <span class="keyword">enum</span> DLNAContainerTypes {
<a name="l00743"></a>00743 TUNER_1_0
<a name="l00744"></a>00744 };
<a name="l00745"></a>00745
<a name="l00746"></a>00746 <span class="preprocessor">#define DLNA_CONTAINER_TUNER "Tuner_1_0" // The DLNA container type for a tuner</span>
<a name="l00747"></a>00747 <span class="preprocessor"></span>
<a name="l00748"></a>00748 <span class="comment">/****************************************************</span>
<a name="l00749"></a>00749 <span class="comment"> *</span>
<a name="l00750"></a>00750 <span class="comment"> * 3.5 Device types</span>
<a name="l00751"></a>00751 <span class="comment"> *</span>
<a name="l00752"></a>00752 <span class="comment"> ****************************************************/</span>
<a name="l00753"></a>00753
<a name="l00754"></a>00754 <span class="preprocessor">#define DLNA_DEVICE_DMS_1_0 "DMS-1.00"</span>
<a name="l00755"></a>00755 <span class="preprocessor"></span><span class="preprocessor">#define DLNA_DEVICE_DMS_1_5 "DMS-1.50"</span>
<a name="l00756"></a>00756 <span class="preprocessor"></span>
<a name="l00757"></a>00757 <span class="comment">/****************************************************</span>
<a name="l00758"></a>00758 <span class="comment"> *</span>
<a name="l00759"></a>00759 <span class="comment"> * 4. SQLite</span>
<a name="l00760"></a>00760 <span class="comment"> *</span>
<a name="l00761"></a>00761 <span class="comment"> ****************************************************/</span>
<a name="l00762"></a>00762 <span class="comment">/****************************************************</span>
<a name="l00763"></a>00763 <span class="comment"> *</span>
<a name="l00764"></a>00764 <span class="comment"> * 4.1 Database setup</span>
<a name="l00765"></a>00765 <span class="comment"> *</span>
<a name="l00766"></a>00766 <span class="comment"> ****************************************************/</span>
<a name="l00767"></a>00767
<a name="l00768"></a>00768 <span class="preprocessor">#define SQLITE_DB_FILE "metadata.db"</span>
<a name="l00769"></a>00769 <span class="preprocessor"></span>
<a name="l00770"></a>00770 <span class="comment">/****************************************************</span>
<a name="l00771"></a>00771 <span class="comment"> *</span>
<a name="l00772"></a>00772 <span class="comment"> * Please see database.h for further definitions,</span>
<a name="l00773"></a>00773 <span class="comment"> * SQL statements and triggers</span>
<a name="l00774"></a>00774 <span class="comment"> *</span>
<a name="l00775"></a>00775 <span class="comment"> ****************************************************/</span>
<a name="l00776"></a>00776
<a name="l00777"></a>00777 <span class="preprocessor">#endif </span><span class="comment">/* _COMMON_H */</span>
<a name="l00778"></a>00778
</pre></div></div>
<hr size="1"><address style="text-align: right;"><small>Generated on Sun Nov 8 15:44:08 2009 for UPnP/DLNA plugin for VDR by
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.8 </small></address>
</body>
</html>
|