1 package net.sf.mbus4j.dataframes;
2
3 import java.util.EnumSet;
4 import java.util.Set;
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 public enum MBusMedium {
39
40 OTHER(0x00, "Other"),
41 OIL(0x01, "Oil"),
42 ELECTRICITY(0x02, "Electricity"),
43 GAS(0x03, "Gas"),
44 HEAT(0x04, "Heat"),
45 STEAM(0x05, "Stream"),
46 HOT_WATER(0x06, "Warm Water (30°C...90°C)"),
47 WATER(0x07, "Water"),
48 HEAT_COST_ALLOCATOR(0x08, "Heat Cost Allocator"),
49 COMPRESSED_AIR(0x09, "Compressed Air"),
50 COOLING_LOAD_METER_OUTLET(0x0A, "Cooling load meter (Volume measured at return temperature: outlet)"),
51 COOLING_LOAD_METER_INLET(0x0B, "Cooling load meter (Volume measured at flow temperature: inlet)"),
52 HEAT_INLET(0x0C, "Heat (Volume measured at flow temperature: inlet)"),
53 HEAT_COOLING_LOAD_METER(0x0D, "Heat/Cooling load meter"),
54 BUS_SYSTEM(0x0E, "Bus/System component"),
55 UNKNOWN_MEDIUM(0x0F, "Unknown Medium"),
56 RESERVED_0X10(0x10),
57 RESERVED_0X11(0x11),
58 RESERVED_0X12(0x12),
59 RESERVED_0X13(0x13),
60 RESERVED_0X14(0x14),
61 RESERVED_0X15(0x15, "Hot water (>=90°C)"),
62 COLD_WATER(0x16, "Cold Water"),
63 DUAL_WATER(0x17, "Dual register (hot/cold) Water meter"),
64 PRESSURE(0x18, "Pressure"),
65 AD_CONVERTER(0x19, "A/D Converter"),
66 RESERVED_0X1A(0x1A),
67 RESERVED_0X1B(0x1B),
68 RESERVED_0X1C(0x1C),
69 RESERVED_0X1D(0x1D),
70 RESERVED_0X1E(0x1E),
71 RESERVED_0X1F(0x1F),
72 RESERVED_0X20(0x20),
73 RESERVED_FOR_VALVE(0x21, "Reserved for valve"),
74 RESERVED_0X22(0x22),
75 RESERVED_0X23(0x23),
76 RESERVED_0X24(0x24),
77 RESERVED_0X25(0x25),
78 RESERVED_0X26(0x26),
79 RESERVED_0X27(0x27),
80 RESERVED_0X28(0x28),
81 RESERVED_0X29(0x29),
82 RESERVED_0X2A(0x2A),
83 RESERVED_0X2B(0x2B),
84 RESERVED_0X2C(0x2C),
85 RESERVED_0X2D(0x2D),
86 RESERVED_0X2E(0x2E),
87 RESERVED_0X2F(0x2F),
88 RESERVED_0X30(0x30),
89 RESERVED_0X31(0x31),
90 RESERVED_0X32(0x32),
91 RESERVED_0X33(0x33),
92 RESERVED_0X34(0x34),
93 RESERVED_0X35(0x35),
94 RESERVED_0X36(0x36),
95 RESERVED_0X37(0x37),
96 RESERVED_0X38(0x38),
97 RESERVED_0X39(0x39),
98 RESERVED_0X3A(0x3A),
99 RESERVED_0X3B(0x3B),
100 RESERVED_0X3C(0x3C),
101 RESERVED_0X3D(0x3D),
102 RESERVED_0X3E(0x3E),
103 RESERVED_0X3F(0x3F),
104 RESERVED_0X40(0x40),
105 RESERVED_0X41(0x41),
106 RESERVED_0X42(0x42),
107 RESERVED_0X43(0x43),
108 RESERVED_0X44(0x44),
109 RESERVED_0X45(0x45),
110 RESERVED_0X46(0x46),
111 RESERVED_0X47(0x47),
112 RESERVED_0X48(0x48),
113 RESERVED_0X49(0x49),
114 RESERVED_0X4A(0x4A),
115 RESERVED_0X4B(0x4B),
116 RESERVED_0X4C(0x4C),
117 RESERVED_0X4D(0x4D),
118 RESERVED_0X4E(0x4E),
119 RESERVED_0X4F(0x4F),
120 RESERVED_0X50(0x50),
121 RESERVED_0X51(0x51),
122 RESERVED_0X52(0x52),
123 RESERVED_0X53(0x53),
124 RESERVED_0X54(0x54),
125 RESERVED_0X55(0x55),
126 RESERVED_0X56(0x56),
127 RESERVED_0X57(0x57),
128 RESERVED_0X58(0x58),
129 RESERVED_0X59(0x59),
130 RESERVED_0X5A(0x5A),
131 RESERVED_0X5B(0x5B),
132 RESERVED_0X5C(0x5C),
133 RESERVED_0X5D(0x5D),
134 RESERVED_0X5E(0x5E),
135 RESERVED_0X5F(0x5F),
136 RESERVED_0X60(0x60),
137 RESERVED_0X61(0x61),
138 RESERVED_0X62(0x62),
139 RESERVED_0X63(0x63),
140 RESERVED_0X64(0x64),
141 RESERVED_0X65(0x65),
142 RESERVED_0X66(0x66),
143 RESERVED_0X67(0x67),
144 RESERVED_0X68(0x68),
145 RESERVED_0X69(0x69),
146 RESERVED_0X6A(0x6A),
147 RESERVED_0X6B(0x6B),
148 RESERVED_0X6C(0x6C),
149 RESERVED_0X6D(0x6D),
150 RESERVED_0X6E(0x6E),
151 RESERVED_0X6F(0x6F),
152 RESERVED_0X70(0x70),
153 RESERVED_0X71(0x71),
154 RESERVED_0X72(0x72),
155 RESERVED_0X73(0x73),
156 RESERVED_0X74(0x74),
157 RESERVED_0X75(0x75),
158 RESERVED_0X76(0x76),
159 RESERVED_0X77(0x77),
160 RESERVED_0X78(0x78),
161 RESERVED_0X79(0x79),
162 RESERVED_0X7A(0x7A),
163 RESERVED_0X7B(0x7B),
164 RESERVED_0X7C(0x7C),
165 RESERVED_0X7D(0x7D),
166 RESERVED_0X7E(0x7E),
167 RESERVED_0X7F(0x7F),
168 RESERVED_0X80(0x80),
169 RESERVED_0X81(0x81),
170 RESERVED_0X82(0x82),
171 RESERVED_0X83(0x83),
172 RESERVED_0X84(0x84),
173 RESERVED_0X85(0x85),
174 RESERVED_0X86(0x86),
175 RESERVED_0X87(0x87),
176 RESERVED_0X88(0x88),
177 RESERVED_0X89(0x89),
178 RESERVED_0X8A(0x8A),
179 RESERVED_0X8B(0x8B),
180 RESERVED_0X8C(0x8C),
181 RESERVED_0X8D(0x8D),
182 RESERVED_0X8E(0x8E),
183 RESERVED_0X8F(0x8F),
184 RESERVED_0X90(0x90),
185 RESERVED_0X91(0x91),
186 RESERVED_0X92(0x92),
187 RESERVED_0X93(0x93),
188 RESERVED_0X94(0x94),
189 RESERVED_0X95(0x95),
190 RESERVED_0X96(0x96),
191 RESERVED_0X97(0x97),
192 RESERVED_0X98(0x98),
193 RESERVED_0X99(0x99),
194 RESERVED_0X9A(0x9A),
195 RESERVED_0X9B(0x9B),
196 RESERVED_0X9C(0x9C),
197 RESERVED_0X9D(0x9D),
198 RESERVED_0X9E(0x9E),
199 RESERVED_0X9F(0x9F),
200 RESERVED_0XA0(0xA0),
201 RESERVED_0XA1(0xA1),
202 RESERVED_0XA2(0xA2),
203 RESERVED_0XA3(0xA3),
204 RESERVED_0XA4(0xA4),
205 RESERVED_0XA5(0xA5),
206 RESERVED_0XA6(0xA6),
207 RESERVED_0XA7(0xA7),
208 RESERVED_0XA8(0xA8),
209 RESERVED_0XA9(0xA9),
210 RESERVED_0XAA(0xAA),
211 RESERVED_0XAB(0xAB),
212 RESERVED_0XAC(0xAC),
213 RESERVED_0XAD(0xAD),
214 RESERVED_0XAE(0xAE),
215 RESERVED_0XAF(0xAF),
216 RESERVED_0XB0(0xB0),
217 RESERVED_0XB1(0xB1),
218 RESERVED_0XB2(0xB2),
219 RESERVED_0XB3(0xB3),
220 RESERVED_0XB4(0xB4),
221 RESERVED_0XB5(0xB5),
222 RESERVED_0XB6(0xB6),
223 RESERVED_0XB7(0xB7),
224 RESERVED_0XB8(0xB8),
225 RESERVED_0XB9(0xB9),
226 RESERVED_0XBA(0xBA),
227 RESERVED_0XBB(0xBB),
228 RESERVED_0XBC(0xBC),
229 RESERVED_0XBD(0xBD),
230 RESERVED_0XBE(0xBE),
231 RESERVED_0XBF(0xBF),
232 RESERVED_0XC0(0xC0),
233 RESERVED_0XC1(0xC1),
234 RESERVED_0XC2(0xC2),
235 RESERVED_0XC3(0xC3),
236 RESERVED_0XC4(0xC4),
237 RESERVED_0XC5(0xC5),
238 RESERVED_0XC6(0xC6),
239 RESERVED_0XC7(0xC7),
240 RESERVED_0XC8(0xC8),
241 RESERVED_0XC9(0xC9),
242 RESERVED_0XCA(0xCA),
243 RESERVED_0XCB(0xCB),
244 RESERVED_0XCC(0xCC),
245 RESERVED_0XCD(0xCD),
246 RESERVED_0XCE(0xCE),
247 RESERVED_0XCF(0xCF),
248 RESERVED_0XD0(0xD0),
249 RESERVED_0XD1(0xD1),
250 RESERVED_0XD2(0xD2),
251 RESERVED_0XD3(0xD3),
252 RESERVED_0XD4(0xD4),
253 RESERVED_0XD5(0xD5),
254 RESERVED_0XD6(0xD6),
255 RESERVED_0XD7(0xD7),
256 RESERVED_0XD8(0xD8),
257 RESERVED_0XD9(0xD9),
258 RESERVED_0XDA(0xDA),
259 RESERVED_0XDB(0xDB),
260 RESERVED_0XDC(0xDC),
261 RESERVED_0XDD(0xDD),
262 RESERVED_0XDE(0xDE),
263 RESERVED_0XDF(0xDF),
264 RESERVED_0XE0(0xE0),
265 RESERVED_0XE1(0xE1),
266 RESERVED_0XE2(0xE2),
267 RESERVED_0XE3(0xE3),
268 RESERVED_0XE4(0xE4),
269 RESERVED_0XE5(0xE5),
270 RESERVED_0XE6(0xE6),
271 RESERVED_0XE7(0xE7),
272 RESERVED_0XE8(0xE8),
273 RESERVED_0XE9(0xE9),
274 RESERVED_0XEA(0xEA),
275 RESERVED_0XEB(0xEB),
276 RESERVED_0XEC(0xEC),
277 RESERVED_0XED(0xED),
278 RESERVED_0XEE(0xEE),
279 RESERVED_0XEF(0xEF),
280 RESERVED_0XF0(0xF0),
281 RESERVED_0XF1(0xF1),
282 RESERVED_0XF2(0xF2),
283 RESERVED_0XF3(0xF3),
284 RESERVED_0XF4(0xF4),
285 RESERVED_0XF5(0xF5),
286 RESERVED_0XF6(0xF6),
287 RESERVED_0XF7(0xF7),
288 RESERVED_0XF8(0xF8),
289 RESERVED_0XF9(0xF9),
290 RESERVED_0XFA(0xFA),
291 RESERVED_0XFB(0xFB),
292 RESERVED_0XFC(0xFC),
293 RESERVED_0XFD(0xFD),
294 RESERVED_0XFE(0xFE),
295 RESERVED_0XFF(0xFF);
296
297 final public int id;
298 final public String label;
299 static private Set<MBusMedium> REGULAR_VALUES;
300
301 MBusMedium(int id, String label) {
302 this.id = id;
303 this.label = label;
304 }
305
306 MBusMedium(int id) {
307 this.id = id;
308 this.label = String.format("Reserved 0x%02x", id);
309 }
310
311 public int getId() {
312 return id;
313 }
314
315 @Override
316 public String toString() {
317 return label;
318 }
319
320 public String getLabel() {
321 return label;
322 }
323
324 public String getName() {
325 return name();
326 }
327
328 public static MBusMedium fromLabel(String label) {
329 for (MBusMedium value : values()) {
330 if (value.getLabel().equals(label)) {
331 return value;
332 }
333 }
334
335 return valueOf(label);
336 }
337
338 public static MBusMedium valueOf(byte b) {
339 for (MBusMedium value : values()) {
340 if (value.getId() == (b & 0xFF)) {
341 return value;
342 }
343 }
344
345 throw new IllegalArgumentException(String.format("Cant get MBusMedium from 0x%02x", b & 0xFF));
346 }
347
348 public static synchronized Set<MBusMedium> getRegularValues() {
349 if (REGULAR_VALUES == null) {
350 REGULAR_VALUES = EnumSet.noneOf(MBusMedium.class);
351 REGULAR_VALUES.add(OTHER);
352 REGULAR_VALUES.add(OIL);
353 REGULAR_VALUES.add(ELECTRICITY);
354 REGULAR_VALUES.add(GAS);
355 REGULAR_VALUES.add(HEAT);
356 REGULAR_VALUES.add(STEAM);
357 REGULAR_VALUES.add(HOT_WATER);
358 REGULAR_VALUES.add(WATER);
359 REGULAR_VALUES.add(HEAT_COST_ALLOCATOR);
360 REGULAR_VALUES.add(COMPRESSED_AIR);
361 REGULAR_VALUES.add(COOLING_LOAD_METER_OUTLET);
362 REGULAR_VALUES.add(COOLING_LOAD_METER_INLET);
363 REGULAR_VALUES.add(HEAT_INLET);
364 REGULAR_VALUES.add(HEAT_COOLING_LOAD_METER);
365 REGULAR_VALUES.add(BUS_SYSTEM);
366 REGULAR_VALUES.add(UNKNOWN_MEDIUM);
367 REGULAR_VALUES.add(COLD_WATER);
368 REGULAR_VALUES.add(DUAL_WATER);
369 REGULAR_VALUES.add(PRESSURE);
370 REGULAR_VALUES.add(AD_CONVERTER);
371 }
372 return REGULAR_VALUES;
373 }
374
375 }