1 /*
2 $Id: dsmcc_str.c,v 1.38 2006/03/06 20:25:38 rasc Exp $
3
4
5 DVBSNOOP
6
7 a dvb sniffer and mpeg2 stream analyzer tool
8 http://dvbsnoop.sourceforge.net/
9
10 (c) 2001-2006 Rainer.Scherg@gmx.de
11
12
13 -- DSM-CC -Strings
14
15
16
17 $Log: dsmcc_str.c,v $
18 Revision 1.38 2006/03/06 20:25:38 rasc
19 DSM-CC Carousell, lots of Bugfixes, BIOP::Message not yet decodable (ddb has to collect Modules)
20
21 Revision 1.37 2006/03/06 01:14:50 rasc
22 Bugfixes... DSMCC BIOPs...
23
24 Revision 1.36 2006/03/06 00:05:03 rasc
25 More DSM-CC stuff: BIOP::FileMessage, BIOP::DirectoryMessage,
26 BIOP::Stream::BIOP::StreamEvent, BIOP::ServiceGateway, DSM-TAPs, etc.
27 this is a preparation for a patch sent in by Richard Case (DSMCC-Save).
28 Attention: Code is still untested and may considered to be buggy (some teststreams are needed)...
29
30 Revision 1.35 2006/01/02 18:24:32 rasc
31 just update copyright and prepare for a new public tar ball
32
33 Revision 1.34 2004/07/25 20:12:59 rasc
34 - New: content_identifier_descriptor (TS 102 323)
35 - New: TVA_id_descriptor (TS 102 323)
36 - New: related_content_descriptor (TS 102 323)
37 - New: default_authority_descriptor (TS 102 323)
38
39 Revision 1.33 2004/07/24 11:44:45 rasc
40 EN 301 192 update
41 - New: ECM_repetition_rate_descriptor (EN 301 192 v1.4.1)
42 - New: time_slice_fec_identifier_descriptor (EN 301 192 v1.4.1)
43 - New: Section MPE_FEC EN 301 192 v1.4
44 - Bugfixes
45
46 Revision 1.32 2004/02/24 23:03:07 rasc
47 private data of DSMCC::DSI
48 BIOP::ServiceGatewayInformation()
49 IOP::IOR()
50
51 Revision 1.31 2004/02/20 23:13:17 rasc
52 BIOP: TapUse
53
54 Revision 1.30 2004/02/20 22:18:42 rasc
55 DII complete (hopefully)
56 BIOP::ModuleInfo (damned, who is spreading infos over several standards???)
57 maybe someone give me a hint on the selector_byte info!!!
58 some minor changes...
59
60 Revision 1.29 2004/02/15 20:46:10 rasc
61 DSM-CC data/object carousell continued (DSI, DII, DDB, DCancel)
62
63 Revision 1.28 2004/02/15 18:58:30 rasc
64 DSM-CC data/object carousell continued (DSI, DII, DDB, DCancel)
65
66 Revision 1.27 2004/02/15 01:01:04 rasc
67 DSM-CC DDB (DownloadDataBlock Message)
68 DSM-CC U-N-Message started
69 Carousel Descriptors completed
70
71 Revision 1.26 2004/02/14 01:24:45 rasc
72 DSM-CC started (DSI/DII, DDB)
73
74 Revision 1.25 2004/02/12 21:21:22 rasc
75 MHP AIT descriptors
76 some smaller changes
77
78 Revision 1.24 2004/02/07 01:28:07 rasc
79 MHP Application Information Table
80 some AIT descriptors
81
82 Revision 1.23 2004/01/25 21:37:28 rasc
83 bugfixes, minor changes & enhancments
84
85 Revision 1.22 2004/01/17 23:06:10 rasc
86 minor stuff, some restructs in output
87
88 Revision 1.21 2004/01/15 21:27:22 rasc
89 DSM-CC stream descriptors
90
91 Revision 1.20 2004/01/12 22:49:53 rasc
92 get rid of stream descriptor module
93
94 Revision 1.19 2004/01/11 21:01:33 rasc
95 PES stream directory, PES restructured
96
97 Revision 1.18 2004/01/05 02:12:20 rasc
98 no message
99
100 Revision 1.17 2004/01/02 22:25:39 rasc
101 DSM-CC MODULEs descriptors complete
102
103 Revision 1.16 2004/01/02 16:40:43 rasc
104 DSM-CC INT/UNT descriptors complete
105 minor changes and fixes
106
107 Revision 1.15 2004/01/02 02:18:34 rasc
108 more DSM-CC INT/UNT descriptors
109
110 Revision 1.14 2004/01/01 20:09:40 rasc
111 DSM-CC INT/UNT descriptors
112 PES-sync changed, TS sync changed,
113 descriptor scope
114 other changes
115
116 Revision 1.13 2003/12/29 22:14:54 rasc
117 more dsm-cc INT UNT descriptors
118
119 Revision 1.12 2003/12/28 22:53:41 rasc
120 some minor changes/cleanup
121
122 Revision 1.11 2003/12/27 22:02:44 rasc
123 dsmcc INT UNT descriptors started
124
125 Revision 1.10 2003/12/27 18:17:18 rasc
126 dsmcc PES dsmcc_program_stream_descriptorlist
127
128 Revision 1.9 2003/12/26 23:27:40 rasc
129 DSM-CC UNT section
130
131 Revision 1.8 2003/12/17 23:15:05 rasc
132 PES DSM-CC ack and control commands according ITU H.222.0 Annex B
133
134 Revision 1.7 2003/11/29 23:11:43 rasc
135 no message
136
137 Revision 1.6 2003/11/26 23:54:49 rasc
138 -- bugfixes on Linkage descriptor
139
140 Revision 1.5 2003/11/01 21:40:27 rasc
141 some broadcast/linkage descriptor stuff
142
143 Revision 1.4 2003/10/29 20:54:57 rasc
144 more PES stuff, DSM descriptors, testdata
145
146 Revision 1.3 2003/10/26 21:36:20 rasc
147 private DSM-CC descriptor Tags started,
148 INT-Section completed..
149
150 Revision 1.2 2003/10/25 19:11:50 rasc
151 no message
152
153 Revision 1.1 2003/10/16 19:02:28 rasc
154 some updates to dvbsnoop...
155 - small bugfixes
156 - tables updates from ETR 162
157
158
159 */
160
161
162
163 #include "dvbsnoop.h"
164 #include "dsmcc_str.h"
165 #include "strtable_misc.h"
166
167
168
169
170
171 /*
172 -- DSM-CC CAROUSEL Descriptors
173 -- Private Tag Space (DII, DSI)
174 -- see EN 301 192
175 -- ... shows in DVB-descriptor lower ranges
176 */
177
dsmccStrDSMCC_CAROUSEL_DescriptorTAG(u_int i)178 char *dsmccStrDSMCC_CAROUSEL_DescriptorTAG (u_int i)
179 {
180 STR_TABLE Table[] = {
181 { 0x00, 0x00, "reserved" },
182 { 0x01, 0x01, "type_descriptor" },
183 { 0x02, 0x02, "name_descriptor" },
184 { 0x03, 0x03, "info_descriptor" },
185 { 0x04, 0x04, "module_link_descriptor" },
186 { 0x05, 0x05, "CRC32_descriptor" },
187 { 0x06, 0x06, "location_descriptor" },
188 { 0x07, 0x07, "estimated_download_time_descriptor" },
189 { 0x08, 0x08, "group_link_descriptor" },
190 { 0x09, 0x09, "compressed_module_descriptor" },
191 { 0x0A, 0x0A, "subgroup_association_descriptor" },
192 { 0x0B, 0x6F, "reserved for future use by DVB" },
193 { 0x70, 0x70, "label_descriptor" }, // MHP
194 { 0x71, 0x71, "caching_priority_descriptor" }, // MHP
195 { 0x72, 0x7F, "reserved MHP" },
196 { 0x80, 0xFF, "private_descriptor" },
197 { 0,0, NULL }
198 };
199
200 return findTableID (Table, i);
201 }
202
203
204
205
206 /*
207 -- DSM-CC INT (UNT, SSU-UNT) Descriptors
208 -- Private INT, UNT, SSU-UNT Tag Space
209 -- see EN 301 192 // TS 102 006
210 */
211
dsmccStrDSMCC_INT_UNT_DescriptorTAG(u_int i)212 char *dsmccStrDSMCC_INT_UNT_DescriptorTAG (u_int i)
213 {
214 STR_TABLE Table[] = {
215 { 0x00, 0x00, "reserved" },
216 { 0x01, 0x01, "scheduling_descriptor" },
217 { 0x02, 0x02, "update_descriptor" },
218 { 0x03, 0x03, "ssu_location_descriptor" },
219 { 0x04, 0x04, "message_descriptor" },
220 { 0x05, 0x05, "ssu_event_name_descriptor" },
221 { 0x06, 0x06, "target_smartcard_descriptor" },
222 { 0x07, 0x07, "target_MAC_address_descriptor" },
223 { 0x08, 0x08, "target_serial_number_descriptor" },
224 { 0x09, 0x09, "target_IP_address_descriptor" },
225 { 0x0A, 0x0A, "target_IPv6_address_descriptor" },
226 { 0x0B, 0x0B, "ssu_subgroup_association_descriptor" },
227 { 0x0C, 0x0C, "IP/MAC_platform_name_descriptor" },
228 { 0x0D, 0x0D, "IP/MAC_platform_provider_name_descriptor" },
229 { 0x0E, 0x0E, "target_MAC_address_range_descriptor" },
230 { 0x0F, 0x0F, "target_IP_slash_descriptor" },
231 { 0x10, 0x10, "target_IP_source_slash_descriptor" },
232 { 0x11, 0x11, "target_IPv6_slash_descriptor" },
233 { 0x12, 0x12, "target_IPv6_source_slash_descriptor" },
234 { 0x13, 0x13, "IP/MAC_stream_location_descriptor" },
235 { 0x14, 0x14, "ISP_access_mode_descriptor" },
236 { 0x15, 0x3F, "reserved" },
237 // { 0x40, 0x7F, "DVB-SI scope" }, Telphone, private_data_spec, use: dvb scope
238 { 0x80, 0xFE, "user_private_descriptor" },
239 { 0xFF, 0xFF, "reserved" },
240 { 0,0, NULL }
241 };
242
243 return findTableID (Table, i);
244 }
245
246
247
248
249 /*
250 -- MHP AIT Descriptors
251 -- Private Tag Space (AIT)
252 -- see TS 102 812
253 */
254
dsmccStrMHP_AIT_DescriptorTAG(u_int i)255 char *dsmccStrMHP_AIT_DescriptorTAG (u_int i)
256 {
257 STR_TABLE Table[] = {
258 { 0x00, 0x00, "Application descriptor" },
259 { 0x01, 0x01, "Application name descriptor" },
260 { 0x02, 0x02, "Transport protocol descriptor" },
261 { 0x03, 0x03, "DVB-J application descriptor" },
262 { 0x04, 0x04, "DVB-J application location descriptor" },
263 { 0x05, 0x05, "External application authorisation descriptor" },
264 { 0x06, 0x06, "Routing Descriptor IPv4" },
265 { 0x07, 0x07, "Routing Descriptor IPv6" },
266 { 0x08, 0x08, "DVB-HTML application descriptor" },
267 { 0x09, 0x09, "DVB-HTML application location descriptor" },
268 { 0x0A, 0x0A, "DVB-HTML application boundary descriptor" },
269 { 0x0B, 0x0B, "Application icons descriptor" },
270 { 0x0C, 0x0C, "Pre-fetch descriptor" },
271 { 0x0D, 0x0D, "DII location descriptor" },
272 { 0x0E, 0x0E, "delegated application descriptor" },
273 { 0x0F, 0x0F, "Plug-in descriptor" },
274 { 0x10, 0x10, "Application storage descriptor" },
275 { 0x11, 0x5E, "reserved to MHP" },
276 { 0x5F, 0x5F, "private data specifier descriptor" },
277 { 0x60, 0x7F, "reserved to MHP" },
278 { 0x80, 0xFF, "user defined" },
279 { 0,0, NULL }
280 };
281
282 return findTableID (Table, i);
283 }
284
285
286
287
288
289
290
291
292 /*
293 -- MHP Organisations
294 */
295
dsmccStrMHPOrg(u_int id)296 char *dsmccStrMHPOrg (u_int id)
297
298 {
299 STR_TABLE TableIDs[] = {
300 // --{ MHP Organisation ID, MHP Organisation ID, "Organisation Supplying MHP Applications" },
301 { 0x0000, 0x0000, "Reserved" },
302 { 0x0001, 0x0001, "MTV Oy" },
303 { 0x0002, 0x0002, "Digita Oy" },
304 { 0x0003, 0x0003, "NRK" },
305 { 0x0004, 0x0004, "Premiere Medien GmbH & Co KG" },
306 { 0x0005, 0x0005, "Platco Oy" },
307 { 0x0006, 0x0006, "NOB" },
308 { 0x0007, 0x0007, "Sofia Digital Oy" },
309 { 0x0008, 0x0008, "YLE (Finnish Broadcasting Company)" },
310 { 0x0009, 0x0009, "IRT (Institut f�r Rundfunktechnik GmbH)" },
311 { 0x000A, 0x000A, "Cardinal Information Systems Ltd" },
312 { 0x000B, 0x000B, "Mediaset s.p.a." },
313 { 0x000C, 0x000C, "Ortikon Interactive Oy" },
314 { 0x000D, 0x000D, "Austrian Broadcastion Corporation (ORF)" },
315 { 0x000E, 0x000E, "Strategy & Technology Ltd" },
316 { 0x000F, 0x000F, "Canal+ Technologies" },
317 { 0x0010, 0x0010, "TV2Nord Digital" },
318 { 0x0011, 0x0011, "Zweites Deutsches Fernsehen - ZDF" },
319 { 0x0012, 0x0012, "SCIP AG" },
320 { 0x0013, 0x0013, "ARD" },
321 { 0x0014, 0x0014, "Sveng.com" },
322 { 0x0015, 0x0015, "UniSoft Corporation" },
323 { 0x0016, 0x0016, "Microsoft Corp" },
324 { 0x0017, 0x0017, "Nokia" },
325 { 0x0018, 0x0018, "SWelcom Oy" },
326 { 0x0019, 0x0019, "Fraunhofer Institut Medienkommunikation - IMK" },
327 { 0x001A, 0x001A, "RTL NewMedia GmbH" },
328 { 0x001B, 0x001B, "Fraunhofer FOKUS" },
329 { 0x001C, 0x001C, "TwonkyVision GmbH" },
330 { 0x001D, 0x001D, "Gist Communications" },
331 { 0x001E, 0x001E, "Televisi� de Catalunya SA" },
332 { 0,0, NULL }
333 };
334
335
336 return findTableID (TableIDs, id);
337 }
338
339
340
341
342 /*
343 -- Action Type (Linkage) EN 301 192 7.6.x
344 -- ETSI TS 102006 $$$ TODO (is there a conflict?)
345 */
346
dsmccStrAction_Type(u_int id)347 char *dsmccStrAction_Type (u_int id)
348
349 {
350 STR_TABLE TableIDs[] = {
351 { 0x00, 0x00, "reserved" },
352 { 0x01, 0x01, "location of IP/MAC streams in DVB networks // System Software Update" },
353 { 0x02, 0xff, "reserved" },
354 { 0,0, NULL }
355 };
356
357
358 return findTableID (TableIDs, id);
359 }
360
361
362
363 /*
364 -- Processing Order (INT) EN 301 192
365 */
366
dsmccStrProcessing_order(u_int id)367 char *dsmccStrProcessing_order (u_int id)
368
369 {
370 STR_TABLE TableIDs[] = {
371 { 0x00, 0x00, "first action" },
372 { 0x01, 0xfe, "subsequent actions (ascending)" },
373 { 0xff, 0xff, "no ordering implied" },
374 { 0,0, NULL }
375 };
376
377
378 return findTableID (TableIDs, id);
379 }
380
381
382
383 /*
384 -- Payload scrambling control (INT) EN 301 192
385 -- Address scrambling control (INT) EN 301 192
386 */
387
388 // $$$ TODO according to mpeg/ scrambling control?
389
dsmccStrPayload_scrambling_control(u_int id)390 char *dsmccStrPayload_scrambling_control (u_int id)
391
392 {
393 STR_TABLE TableIDs[] = {
394 { 0x00, 0x00, "unscrambled" },
395 { 0x01, 0x03, "defined by service" },
396 { 0,0, NULL }
397 };
398
399
400 return findTableID (TableIDs, id);
401 }
402
403
dsmccStrAddress_scrambling_control(u_int id)404 char *dsmccStrAddress_scrambling_control (u_int id)
405
406 {
407 STR_TABLE TableIDs[] = {
408 { 0x00, 0x00, "unscrambled" },
409 { 0x01, 0x03, "defined by service" },
410 { 0,0, NULL }
411 };
412
413
414 return findTableID (TableIDs, id);
415 }
416
417
418
419
420 /*
421 * -- LinkageDescriptor0x0C Table_type EN301192
422 *
423 */
424
dsmccStrLinkage0CTable_TYPE(u_int i)425 char *dsmccStrLinkage0CTable_TYPE (u_int i)
426
427 {
428 STR_TABLE Table[] = {
429 { 0x00, 0x00, "not defined" },
430 { 0x01, 0x01, "NIT" },
431 { 0x02, 0x02, "BAT" },
432 { 0x03, 0xFF, "reserved" },
433 { 0,0, NULL }
434 };
435
436 return findTableID (Table, i);
437 }
438
439
440
441
442
443 /*
444 * -- MultiProtocolEncapsulationMACAddressRangeField
445 * -- EN 301 192
446 */
447
dsmccStrMultiProtEncapsMACAddrRangeField(u_int i)448 char *dsmccStrMultiProtEncapsMACAddrRangeField (u_int i)
449
450 {
451 STR_TABLE Table[] = {
452 { 0x00, 0x00, "reserved" },
453 { 0x01, 0x01, "6" },
454 { 0x02, 0x02, "6,5" },
455 { 0x03, 0x03, "6,5,4" },
456 { 0x04, 0x04, "6,5,4,3" },
457 { 0x05, 0x05, "6,5,4,3,2" },
458 { 0x06, 0x06, "6,5,4,3,2,1" },
459 { 0x07, 0x07, "reserved" },
460 { 0,0, NULL }
461 };
462
463 return findTableID (Table, i);
464 }
465
466
467
468
469
470
471
472 /*
473 -- Platform ID ETR 162
474 */
475
dsmccStrPlatform_ID(u_int id)476 char *dsmccStrPlatform_ID (u_int id)
477
478 {
479 STR_TABLE TableIDs[] = {
480 /* $$$ TODO Platform ID ETR 162 ... */
481 { 0,0, NULL }
482 };
483
484
485 return findTableID (TableIDs, id);
486 }
487
488
489
490
491 /*
492 -- Carousel Type ID EN 301 192
493 */
494
dsmccStrCarouselType_ID(u_int id)495 char *dsmccStrCarouselType_ID (u_int id)
496
497 {
498 STR_TABLE TableIDs[] = {
499 { 0x00, 0x00, "reserved" },
500 { 0x01, 0x01, "one layer carousel" },
501 { 0x02, 0x02, "two layer carousel" },
502 { 0x03, 0x03, "reserved" },
503 { 0,0, NULL }
504 };
505
506
507 return findTableID (TableIDs, id);
508 }
509
510
511
512
513 /*
514 -- Higher Protocol ID EN 301 192
515 */
516
dsmccStrHigherProtocol_ID(u_int id)517 char *dsmccStrHigherProtocol_ID (u_int id)
518
519 {
520 STR_TABLE TableIDs[] = {
521 { 0x00, 0x00, "reserved" },
522 { 0x01, 0x01, "dGNSS data" },
523 { 0x02, 0x02, "TPEG" },
524 { 0x03, 0x0F, "reserved" },
525 { 0,0, NULL }
526 };
527
528
529 return findTableID (TableIDs, id);
530 }
531
532
533
534 /*
535 -- Update Type Table TR 102 006
536 */
537
dsmccStrUpdateType_ID(u_int id)538 char *dsmccStrUpdateType_ID (u_int id)
539
540 {
541 STR_TABLE TableIDs[] = {
542 { 0x00, 0x00, "proprietary update solution" },
543 { 0x01, 0x01, "standard update carousel via broadcast" },
544 { 0x02, 0x02, "system software update with notification table (UNT) via broadcast" },
545 { 0x03, 0x03, "system software update using return channel with UNT" },
546 { 0x04, 0x0F, "reserved" },
547 { 0,0, NULL }
548 };
549
550
551 return findTableID (TableIDs, id);
552 }
553
554
555
556
557
558
559
560 /*
561 -- Command_ID
562 -- also dsmcc_discriminator
563 -- e.g. from ITU H.222.0 Annex B
564 --
565 */
566
dsmccStr_Command_ID(u_int id)567 char *dsmccStr_Command_ID (u_int id)
568
569 {
570 STR_TABLE TableIDs[] = {
571 { 0x00, 0x00, "forbidden" },
572 { 0x01, 0x01, "control" },
573 { 0x02, 0x02, "Acknownledge" },
574 { 0x03, 0x7F, "reserved" },
575 { 0x80, 0x80, "DSMCC_program_stream_descriptor_list" },
576 { 0x81, 0xFF, "reserved" },
577 { 0,0, NULL }
578 };
579
580 return findTableID (TableIDs, id);
581 }
582
583
584
585 /*
586 -- Command_ID
587 -- e.g. from ITU H.222.0 Annex B
588 --
589 */
590
dsmccStr_SelectMode_ID(u_int id)591 char *dsmccStr_SelectMode_ID (u_int id)
592
593 {
594 STR_TABLE TableIDs[] = {
595 { 0x00, 0x00, "forbidden" },
596 { 0x01, 0x01, "storage" },
597 { 0x02, 0x02, "retrieval" },
598 { 0x03, 0x1F, "reserved" },
599 { 0,0, NULL }
600 };
601
602 return findTableID (TableIDs, id);
603 }
604
605
606
607 /*
608 -- direction_indicator
609 -- e.g. from ITU H.222.0 Annex B
610 --
611 */
612
dsmccStr_DirectionIndicator(u_int id)613 char *dsmccStr_DirectionIndicator (u_int id)
614
615 {
616 STR_TABLE TableIDs[] = {
617 { 0x00, 0x00, "Forward" },
618 { 0x01, 0x01, "Backward" },
619 { 0,0, NULL }
620 };
621
622 return findTableID (TableIDs, id);
623 }
624
625
626
627 /*
628 -- DSM-CC (UNT) (Compatibility) Descriptor type
629 -- e.g. from ISO 13818-6 // TS 102006
630 --
631 */
632
dsmccStr_DescriptorType(u_int id)633 char *dsmccStr_DescriptorType (u_int id)
634
635 {
636 STR_TABLE TableIDs[] = {
637 { 0x00, 0x00, "Pad descriptor" },
638 { 0x01, 0x01, "System Hardware descriptor" },
639 { 0x02, 0x02, "System Software descriptor" },
640 { 0x03, 0x3F, "ISO/IEC 13818-6 reserved" },
641 { 0x40, 0x7F, "DVB reserved" },
642 { 0x80, 0xFF, "User defined" },
643 { 0,0, NULL }
644 };
645
646 return findTableID (TableIDs, id);
647 }
648
649
650
651
652 /*
653 -- DSM-CC (UNT) Specifier type
654 -- e.g. from ISO 13818-6 // TS 102006
655 --
656 */
657
dsmccStr_SpecifierType(u_int id)658 char *dsmccStr_SpecifierType (u_int id)
659 {
660 STR_TABLE TableIDs[] = {
661 { 0x00, 0x00, "ISO/IEC 13818-6 reserved" },
662 { 0x01, 0x01, "IEEE OUI" },
663 { 0x02, 0xFF, "ISO/IEC 13818-6 reserved" },
664 { 0,0, NULL }
665 };
666
667 return findTableID (TableIDs, id);
668 }
669
670
671
672
673 /*
674 -- DSM-CC (INT) AccessMode
675 -- e.g. from ISO 13818-6 // EN 301 192
676 --
677 */
678
dsmccStr_AccessMode(u_int id)679 char *dsmccStr_AccessMode (u_int id)
680
681 {
682 STR_TABLE TableIDs[] = {
683 { 0x00, 0x00, "not used" },
684 { 0x01, 0x01, "dialup" },
685 { 0x02, 0xFF, "reserved" },
686 { 0,0, NULL }
687 };
688
689 return findTableID (TableIDs, id);
690 }
691
692
693
694
695 /*
696 -- DSM-CC (INT) Update_flag
697 -- e.g. from ISO 13818-6 // TS 102 006
698 --
699 */
700
dsmccStr_UpdateFlag(u_int id)701 char *dsmccStr_UpdateFlag (u_int id)
702
703 {
704 STR_TABLE TableIDs[] = {
705 { 0x00, 0x00, "to be activated manually" },
706 { 0x01, 0x01, "may be performed automatically" },
707 { 0x02, 0x03, "reserved" },
708 { 0,0, NULL }
709 };
710
711 return findTableID (TableIDs, id);
712 }
713
714
715
716 /*
717 -- DSM-CC (INT) Update_method
718 -- e.g. from ISO 13818-6 // TS 102 006
719 --
720 */
721
dsmccStr_UpdateMethod(u_int id)722 char *dsmccStr_UpdateMethod (u_int id)
723
724 {
725 STR_TABLE TableIDs[] = {
726 { 0x00, 0x00, "immediate update: performed whatever the IRD state" },
727 { 0x01, 0x01, "IRD available: the update is available in the stream; it will be taken into account when it does not interfere with the normal user operation" },
728 { 0x02, 0x02, "next restart: the update is available in the stream; it will be taken into account at the next IRD restart" },
729 { 0x03, 0x07, "reserved" },
730 { 0x08, 0x0E, "private use" },
731 { 0x0F, 0x0F, "reserved" },
732 { 0,0, NULL }
733 };
734
735 return findTableID (TableIDs, id);
736 }
737
738
739
740 /*
741 -- DSM-CC (INT) Time Units
742 -- e.g. from ISO 13818-6 // TS 102 006
743 --
744 */
745
dsmccStr_TimeUnits(u_int id)746 char *dsmccStr_TimeUnits (u_int id)
747
748 {
749 STR_TABLE TableIDs[] = {
750 { 0x00, 0x00, "second" },
751 { 0x01, 0x01, "minute" },
752 { 0x02, 0x02, "hour" },
753 { 0x03, 0x03, "day" },
754 { 0,0, NULL }
755 };
756
757 return findTableID (TableIDs, id);
758 }
759
760
761
762 /*
763 -- DSM-CC Module Link Position
764 -- e.g. from ISO 13818-6 // EN 301 192
765 --
766 */
767
dsmccStr_GroupModuleLinkPosition(u_int id)768 char *dsmccStr_GroupModuleLinkPosition (u_int id)
769
770 {
771 STR_TABLE TableIDs[] = {
772 { 0x00, 0x00, "first in list" },
773 { 0x01, 0x01, "intermediate in list" },
774 { 0x02, 0x02, "last in list" },
775 { 0,0, NULL }
776 };
777
778 return findTableID (TableIDs, id);
779 }
780
781
782 /*
783 -- DSM-CC compression_method
784 -- e.g. from ISO 13818-6 // EN 301 192
785 --
786 */
787
dsmccStr_compression_method(u_int id)788 char *dsmccStr_compression_method (u_int id)
789
790 {
791 return (char *) "compression method used, see: RFC 1950";
792 }
793
794
795
796
797 /*
798 -- DSM-CC Stream Mode
799 -- ISO 13818-6 (stream desc. 8.5)
800 --
801 */
802
dsmccStr_streamMode(u_int id)803 char *dsmccStr_streamMode (u_int id)
804 {
805 STR_TABLE TableIDs[] = {
806 { 0x00, 0x00, "Open" },
807 { 0x01, 0x01, "Pause" },
808 { 0x02, 0x02, "Transport" },
809 { 0x03, 0x03, "Transport Pause" },
810 { 0x04, 0x04, "Search Transport" },
811 { 0x05, 0x05, "Search Transport Pause" },
812 { 0x06, 0x06, "Pause Search Transport" },
813 { 0x07, 0x07, "End of Stream" },
814 { 0x08, 0x08, "Pre Search Transport" },
815 { 0x09, 0x09, "Pre Search Transport Pause" },
816 { 0x0A, 0xFF, "ISO/IEC 13818-6 reserved" },
817 { 0,0, NULL }
818 };
819
820 return findTableID (TableIDs, id);
821 }
822
823
824
825
826
827 /*
828 -- DSM-CC postDiscontinuityIndicator
829 -- ISO 13818-6 (stream desc. 8.5)
830 --
831 */
832
dsmccStr_postDiscontinuityIndicator(u_int id)833 char *dsmccStr_postDiscontinuityIndicator (u_int id)
834 {
835 STR_TABLE TableIDs[] = {
836 { 0x00, 0x00, "now valid" },
837 { 0x01, 0x01, "valid at the next system time base discontinuity" },
838 { 0,0, NULL }
839 };
840
841 return findTableID (TableIDs, id);
842 }
843
844
845
846
847 /*
848 -- OUI Table (e.g.: LLC-SNAP IEEE 802)
849 -- real table is very large!!
850 -- see: http://standards.ieee.org/regauth/oui/index.shtml
851 */
852
dsmccStrOUI(u_int id)853 char *dsmccStrOUI (u_int id)
854 {
855 STR_TABLE TableIDs[] = {
856 { 0x000000, 0x000000, "EtherType or routed non-OSI protocol" },
857 { 0x000979, 0x000979, "ATSC" }, // ATSC a_95
858 { 0x0080c2, 0x0080c2, "Bridged protocol" },
859 { 0x000000, 0xFFFFFF, "http://standards.ieee.org/regauth/oui/" },
860 { 0,0, NULL }
861 };
862
863 // http://standards.ieee.org/cgi-bin/ouisearch?hex-id
864 return findTableID (TableIDs, id);
865 }
866
867
868
869
870 /*
871 -- DSM-CC LLC SNAP protocol
872 */
873
dsmccStr_LLC_SNAP_prot(u_int id)874 char *dsmccStr_LLC_SNAP_prot (u_int id)
875 {
876 STR_TABLE TableIDs[] = {
877 { 0x0800, 0x0800, "IP protocol" },
878 { 0,0, NULL }
879 };
880
881 return findTableID (TableIDs, id);
882 }
883
884
885
886
887
888
889
890
891
892
893 /*
894 -- MHP application type
895 */
896
dsmccStrMHP_application_type(u_int id)897 char *dsmccStrMHP_application_type (u_int id)
898 {
899 STR_TABLE TableIDs[] = {
900 { 0x0000, 0x0000, "reserved" },
901 { 0x0001, 0x0001, "DVB-J application" },
902 { 0x0002, 0x0002, "DVB-HTML application" },
903 { 0x0003, 0x7FFF, "subject to registration with DVB" }, // $$$ TODO ??
904 { 0,0, NULL }
905 };
906
907 return findTableID (TableIDs, id);
908 }
909
910
911
912
913 /*
914 -- MHP application type
915 */
916
dsmccStrMHP_application_id(u_int id)917 char *dsmccStrMHP_application_id (u_int id)
918 {
919 STR_TABLE TableIDs[] = {
920 { 0x0000, 0x3FFF, "unsigned applications" },
921 { 0x4000, 0x7FFF, "signed applications" },
922 { 0x8000, 0xFFFD, "reserved" },
923 { 0xFFFE, 0xFFFE, "wildcard value for signed applications of an org." },
924 { 0xFFFF, 0xFFFF, "wildcard value all applications of an org." },
925 { 0,0, NULL }
926 };
927
928 return findTableID (TableIDs, id);
929 }
930
931
932
933
934 /*
935 -- MHP application control code
936 */
937
dsmccStrMHP_application_control_code(u_int id)938 char *dsmccStrMHP_application_control_code (u_int id)
939 {
940 STR_TABLE TableIDs[] = {
941 { 0x00, 0x00, "reserved" },
942 { 0x01, 0x01, "AUTOSTART" },
943 { 0x02, 0x02, "PRESENT" },
944 { 0x03, 0x03, "DESTROY" },
945 { 0x04, 0x04, "KILL" },
946 { 0x05, 0x05, "PREFETCH" },
947 { 0x06, 0x06, "REMOTE" },
948 { 0x07, 0xFF, "reserved" },
949 { 0,0, NULL }
950 };
951
952 return findTableID (TableIDs, id);
953 }
954
955
956
957
958 /*
959 -- MHP visibility state
960 */
961
dsmccStrMHP_visibility_state(u_int id)962 char *dsmccStrMHP_visibility_state (u_int id)
963 {
964 STR_TABLE TableIDs[] = {
965 { 0x00, 0x00, "application not visible to user and appl. listening api" },
966 { 0x01, 0x01, "application not visible to user, but visible to appl. listening api" },
967 { 0x02, 0x02, "reserved" },
968 { 0x03, 0x03, "application visible to user and appl. listening api" },
969 { 0,0, NULL }
970 };
971
972 return findTableID (TableIDs, id);
973 }
974
975
976
977
978 /*
979 -- MHP protocol_id
980 -- ETR162
981 */
982
dsmccStrMHP_protocol_id(u_int id)983 char *dsmccStrMHP_protocol_id (u_int id)
984 {
985 STR_TABLE TableIDs[] = {
986 { 0x0000, 0x0000, "reserved" },
987 { 0x0001, 0x0001, "MHP Object Carousel" },
988 { 0x0002, 0x0002, "IP via DVB multiprotocol encapsulation" },
989 { 0x0003, 0x0003, "Transport via HTTP over the interaction channel" },
990 { 0x0004, 0x00FF, "Reserved for use by DVB" },
991 { 0x0100, 0xFFFF, "Subject to registration in ETSI TR 101 162" },
992 { 0,0, NULL }
993 };
994
995 return findTableID (TableIDs, id);
996 }
997
998
999
1000
1001 /*
1002 -- MHP storage property
1003 -- ETR162
1004 */
1005
dsmccStrMHP_storage_property(u_int id)1006 char *dsmccStrMHP_storage_property (u_int id)
1007 {
1008 STR_TABLE TableIDs[] = {
1009 { 0x00, 0x00, "broadcast related" },
1010 { 0x01, 0x01, "stand alone" },
1011 { 0x02, 0xFF, "reserved" },
1012 { 0,0, NULL }
1013 };
1014
1015 return findTableID (TableIDs, id);
1016 }
1017
1018
1019
1020
1021
1022 /*
1023 -- DSM-CC MHP caching transparency level
1024 -- ISO/IEC 13816-6
1025 -- TS 102 812 v1.2.1 B.2.7
1026 */
1027
dsmccStrMHP_caching_transparency_level(u_int id)1028 char *dsmccStrMHP_caching_transparency_level (u_int id)
1029 {
1030 STR_TABLE TableIDs[] = {
1031 { 0x00, 0x00, "reserved" },
1032 { 0x01, 0x01, "transparent caching" },
1033 { 0x02, 0x02, "semi-transparent caching" },
1034 { 0x03, 0x03, "static caching" },
1035 { 0x04, 0xFF, "reserved" },
1036 { 0,0, NULL }
1037 };
1038
1039 return findTableID (TableIDs, id);
1040 }
1041
1042
1043
1044
1045
1046
1047
1048
1049 /*
1050 -- DSM-CC Adaptation Type
1051 -- ISO/IEC 13816-6
1052 */
1053
dsmccStr_adaptationType(u_int id)1054 char *dsmccStr_adaptationType (u_int id)
1055 {
1056 STR_TABLE TableIDs[] = {
1057 { 0x00, 0x00, "reserved" },
1058 { 0x01, 0x01, "DSM-CC Conditional Access adaptation format" },
1059 { 0x02, 0x02, "DSM-CC User ID adaptation format" },
1060 { 0x03, 0x7F, "reserved" },
1061 { 0x80, 0xFF, "user defined" },
1062 { 0,0, NULL }
1063 };
1064
1065 return findTableID (TableIDs, id);
1066 }
1067
1068
1069
1070
1071 /*
1072 -- DSM-CC dsmcc Type
1073 -- ISO/IEC 13816-6
1074 */
1075
dsmccStr_dsmccType(u_int id)1076 char *dsmccStr_dsmccType (u_int id)
1077 {
1078 STR_TABLE TableIDs[] = {
1079 { 0x00, 0x00, "reserved" },
1080 { 0x01, 0x01, "User-to-Network configuration message" },
1081 { 0x02, 0x02, "User-to-Network session message" },
1082 { 0x03, 0x03, "Download message" },
1083 { 0x04, 0x04, "SDB Channel Change Protocol message" },
1084 { 0x05, 0x05, "User-to- Network pass-thru message" },
1085 { 0x06, 0x7F, "reserved" },
1086 { 0x80, 0xFF, "user defined" },
1087 { 0,0, NULL }
1088 };
1089
1090 return findTableID (TableIDs, id);
1091 }
1092
1093
1094
1095 /*
1096 -- DSM-CC Download Message ID
1097 -- ISO/IEC 13816-6
1098 */
1099
dsmccStr_messageID(u_int id)1100 char *dsmccStr_messageID (u_int id)
1101 {
1102 STR_TABLE TableIDs[] = {
1103 { 0x1001, 0x1001, "DownloadInfoRequest" },
1104 { 0x1002, 0x1002, "DownloadInfoIndication (DII)" }, // also: DownloadInfoResponse
1105 { 0x1003, 0x1003, "DownloadDataBlock (DDB)" },
1106 { 0x1004, 0x1004, "DownloadDataRequest" },
1107 { 0x1005, 0x1005, "DownloadCancel" },
1108 { 0x1006, 0x1006, "DownloadServerInitiate (DSI)" },
1109 { 0,0, NULL }
1110 };
1111
1112 return findTableID (TableIDs, id);
1113 }
1114
1115
1116
1117
1118 /*
1119 -- DSM-CC TransactionID originator
1120 -- ISO/IEC 13816-6
1121 -- TS 102 812 v1.2.1 B.2.7
1122 */
1123
dsmccStr_transactionID_originator(u_int id)1124 char *dsmccStr_transactionID_originator (u_int id)
1125 {
1126 STR_TABLE TableIDs[] = {
1127 { 0x00, 0x00, "assigned by the client" },
1128 { 0x01, 0x01, "assigned by the server" },
1129 { 0x02, 0x02, "assigned by the network" },
1130 { 0x03, 0x03, "reserved" },
1131 { 0,0, NULL }
1132 };
1133
1134 return findTableID (TableIDs, id);
1135 }
1136
1137
1138
1139
1140
1141 /*
1142 -- DSM-CC IOP ProfileID
1143 -- ISO/IEC 13816-6
1144 -- Profile Tags 0x49534F00 - 0x49534F0F (the first 3 octets spell ISO)
1145 -- TR 101 202
1146 -- TS 102 812
1147 */
1148
dsmccStrIOP_ProfileID(u_int id)1149 char *dsmccStrIOP_ProfileID (u_int id)
1150 {
1151 STR_TABLE TableIDs[] = {
1152 { 0x49534f00, 0x49534f00, "TAG_MIN" },
1153 { 0x49534f01, 0x49534f01, "TAG_CHILD" },
1154 { 0x49534f02, 0x49534f02, "TAG_OPTIONS" },
1155 { 0x49534f03, 0x49534f03, "TAG_LITE_MIN" },
1156 { 0x49534f04, 0x49534f04, "TAG_LITE_CHILD" },
1157 { 0x49534f05, 0x49534f05, "TAG_LITE_OPTIONS" },
1158 { 0x49534f06, 0x49534f06, "TAG_BIOP" },
1159 { 0x49534f07, 0x49534f07, "TAG_ONC" },
1160 { 0x49534f40, 0x49534f40, "TAG_ConnBinder" },
1161 { 0x49534f41, 0x49534f41, "TAG_IIOPAddr" },
1162 { 0x49534f42, 0x49534f42, "TAG_Addr" },
1163 { 0x49534f43, 0x49534f43, "TAG_NameId" },
1164 { 0x49534f44, 0x49534f44, "TAG_IntfCode" },
1165 { 0x49534f45, 0x49534f45, "TAG_ObjectKey" },
1166 { 0x49534f46, 0x49534f46, "TAG_ServiceLocation" },
1167 { 0x49534f50, 0x49534f50, "TAG_ObjectLocation" },
1168 { 0x49534f58, 0x49534f58, "TAG_Intf" },
1169 { 0,0, NULL }
1170 };
1171
1172 return findTableID (TableIDs, id);
1173 }
1174
1175
1176
1177
1178 /*
1179 -- DSM-CC BIOP tap use
1180 -- ISO/IEC 13816-6
1181 */
1182
dsmccStrBIOP_TAP_Use(u_int id)1183 char *dsmccStrBIOP_TAP_Use (u_int id)
1184 {
1185 STR_TABLE TableIDs[] = {
1186 { 0x0000, 0x0000, "UNKNOWN" },
1187 { 0x0001, 0x0001, "MPEG_TS_UP_USE" },
1188 { 0x0002, 0x0002, "MPEG_TS_DOWN_USE" },
1189 { 0x0003, 0x0003, "MPEG_ES_UP_USE" },
1190 { 0x0004, 0x0004, "MPEG_ES_DOWN_USE" },
1191 { 0x0005, 0x0005, "DOWNLOAD_CTRL_USE" },
1192 { 0x0006, 0x0006, "DOWNLOAD_CTRL_UP_USE" },
1193 { 0x0007, 0x0007, "DOWNLOAD_CTRL_DOWN_USE" },
1194 { 0x0008, 0x0008, "DOWNLOAD_DATA_USE" },
1195 { 0x0009, 0x0009, "DOWNLOAD_DATA_UP_USE" },
1196 { 0x000A, 0x000A, "DOWNLOAD_DATA_DOWN_USE" },
1197 { 0x000B, 0x000B, "STR_NPT_USE" },
1198 { 0x000C, 0x000C, "STR_STATUS_AND_EVENT_USE" },
1199 { 0x000D, 0x000D, "STR_EVENT_USE" },
1200 { 0x000E, 0x000E, "STR_STATUS_USE" },
1201 { 0x000F, 0x000F, "RPC_USE" },
1202 { 0x0010, 0x0010, "IP_USE" },
1203 { 0x0011, 0x0011, "SDB_CTRL_USE" },
1204 { 0x0012, 0x0015, "T120_TAP reserved" },
1205 { 0x0016, 0x0016, "BIOP_DELIVERY_PARA_USE" },
1206 { 0x0017, 0x0017, "BIOP_OBJECT_USE" },
1207 { 0x0018, 0x0018, "BIOP_ES_USE" },
1208 { 0x0019, 0x0019, "BIOP_PROGRAM_USE" },
1209 { 0x001A, 0x001A, "BIOP_DNL_CTRL_USE" },
1210 { 0,0, NULL }
1211 };
1212
1213 return findTableID (TableIDs, id);
1214 }
1215
1216
1217
1218
1219
1220
1221 /*
1222 -- BIOP/DSM::TAP selector_type (MessageSelector)
1223 -- ISO/IEC 13816-6
1224 -- ATSC A95, A47
1225 */
1226
dsmccStrBIOP_TAP_SelectorType(u_int id)1227 char *dsmccStrBIOP_TAP_SelectorType (u_int id)
1228 {
1229 STR_TABLE TableIDs[] = {
1230 { 0x0000, 0x0000, "ISO/IEC reserved" },
1231 { 0x0001, 0x0001, "MessageSelector" },
1232 { 0x0109, 0x0109, "TSFS_Selector" },
1233 { 0,0, NULL }
1234 };
1235
1236 return findTableID (TableIDs, id);
1237 }
1238
1239
1240
1241 /*
1242 -- BIOP/DSM::TAP selector_type (MessageSelector)
1243 -- ISO/IEC 13816-6
1244 -- ATSC A95, A47
1245 */
1246
dsmccStrBIOP_EndianType(u_int id)1247 char *dsmccStrBIOP_EndianType (u_int id)
1248 {
1249 STR_TABLE TableIDs[] = {
1250 { 0x00, 0x00, "Big Endian" },
1251 { 0x01, 0xFF, "Little Endian" },
1252 { 0,0, NULL }
1253 };
1254
1255 return findTableID (TableIDs, id);
1256 }
1257
1258
1259
1260
1261 /*
1262 -- BIOP ObjectKind / TypeID Aliases
1263 -- ISO/IEC 13816-6
1264 */
1265
dsmccStrBIOP_TypeID_Alias(u_int id)1266 char *dsmccStrBIOP_TypeID_Alias (u_int id)
1267 {
1268 STR_TABLE TableIDs[] = {
1269 { 0x64697200, 0x64697200, "dir (DSM::Directory)" },
1270 { 0x66696c00, 0x66696c00, "fil (DSM::File)" },
1271 { 0x73726700, 0x73726700, "srg (DSM::ServiceGateway)" },
1272 { 0x73746500, 0x73746500, "ste (DSM::StreamEvent)" },
1273 { 0x73747200, 0x73747200, "str (BIOP::Stream)" },
1274 { 0,0, NULL }
1275 };
1276
1277 return findTableID (TableIDs, id);
1278 }
1279
1280
1281
1282
1283
1284 /*
1285 -- BIOP BindingType
1286 -- e.g. TS 102 812
1287 */
1288
dsmccStrBIOP_BindingType(u_int id)1289 char *dsmccStrBIOP_BindingType (u_int id)
1290 {
1291 STR_TABLE TableIDs[] = {
1292 { 0x01, 0x01, "nobject" },
1293 { 0x02, 0x02, "ncontext" },
1294 { 0,0, NULL }
1295 };
1296
1297 return findTableID (TableIDs, id);
1298 }
1299
1300
1301
1302
1303 /*
1304 -- BIOP "Magic" ID
1305 -- e.g. TS 102 812
1306 */
1307
dsmccStrBIOP_MAGIC(u_int id)1308 char *dsmccStrBIOP_MAGIC (u_int id)
1309 {
1310 STR_TABLE TableIDs[] = {
1311 { 0x42494F50, 0x42494F50, "BIOP" },
1312 { 0,0, NULL }
1313 };
1314
1315 return findTableID (TableIDs, id);
1316 }
1317
1318
1319
1320
1321
1322
1323
1324