1 /***
2 * Java DAB EPG API - Serialize/Deserialize To/From POJOs to XML/Binary as per
3 * ETSI specifications TS 102 818 (XML Specification for DAB EPG) and TS 102
4 * 371 (Transportation and Binary Encoding Specification for EPG).
5 *
6 * Copyright (C) 2007 GCap Media PLC
7 *
8 * This library is free software; you can redistribute it and/or
9 * modify it under the terms of the GNU Lesser General Public
10 * License as published by the Free Software Foundation; either
11 * version 2.1 of the License, or (at your option) any later version.
12 *
13 * This library is distributed in the hope that it will be useful,
14 * but WITHOUT ANY WARRANTY; without even the implied warranty of
15 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
16 * Lesser General Public License for more details.
17 *
18 * You should have received a copy of the GNU Lesser General Public
19 * License along with this library; if not, write to the Free Software
20 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
21 */
22 package com.gcapmedia.dab.epg.binary;
23
24
25 /***
26 * List all defined tag types as per ETSI TS 101 371 V1.2.1 (2006-02)
27 */
28 public enum ElementTag implements Encodable {
29
30 /***
31 * Top level tags
32 */
33 epg(0x02),
34 serviceInformation(0x03),
35
36 /***
37 * Subtags
38 */
39 tokenTableElement(0x04),
40 defaultContentIdElement(0x05),
41 shortName(0x10),
42 mediumName(0x11),
43 longName(0x12),
44 mediaDescription(0x13),
45 genre(0x14),
46 CA(0x15),
47 keywords(0x16),
48 memberOf(0x17),
49 link(0x18),
50 location(0x19),
51 shortDescription(0x1A),
52 longDescription(0x1B),
53 programme(0x1C),
54 programmeGroups(0x20),
55 schedule(0x21),
56 alternateSource(0x22),
57 programmeGroup(0x23),
58 scope(0x24),
59 serviceScope(0x25),
60 ensemble(0x26),
61 frequency(0x27),
62 service(0x28),
63 serviceID(0x29),
64 epgLanguage(0x2A),
65 multimedia(0x2B),
66 time(0x2C),
67 bearer(0x2D),
68 programmeEvent(0x2E),
69 relativeTime(0x2F),
70 simulcast(0x30);
71
72 /***
73 *
74 */
75 private byte value;
76
77 /***
78 *
79 * @param value
80 */
81 ElementTag(int value) {
82 this.value = (byte)value;
83 }
84
85 /***
86 * @see com.gcapmedia.dab.epg.binary.Encodable#getBytes()
87 */
88 public byte[] getBytes() {
89 byte[] bytes = new byte[1];
90 bytes[0] = value;
91 return bytes;
92 }
93
94 /***
95 * @see com.gcapmedia.dab.epg.binary.Encodable#getLength()
96 */
97 public int getLength() {
98 return 1;
99 }
100
101 /***
102 * Parse an object from its byte array representation
103 * @param parent Tag parent
104 * @param bytes Byte array representation
105 */
106 public static ElementTag fromBytes(byte[] bytes) {
107 BitParser parser = new BitParser(bytes);
108 int value = parser.getInt(0, 8);
109 ElementTag result = null;
110 for(ElementTag tag : values()) {
111 if(tag.value == value) {
112 result = tag;
113 break;
114 }
115 }
116 return result;
117 }
118 }