View Javadoc
1   package net.sf.mbus4j.dataframes;
2   
3   import java.util.EnumSet;
4   import java.util.Set;
5   
6   /*
7    * #%L
8    * mbus4j-core
9    * %%
10   * Copyright (C) 2009 - 2014 MBus4J
11   * %%
12   * mbus4j - Drivers for the M-Bus protocol - http://mbus4j.sourceforge.net/
13   * Copyright (C) 2009-2014, mbus4j.sf.net, and individual contributors as indicated
14   * by the @authors tag. See the copyright.txt in the distribution for a
15   * full listing of individual contributors.
16   * 
17   * This is free software; you can redistribute it and/or modify it
18   * under the terms of the GNU General Public License as
19   * published by the Free Software Foundation; either version 3 of
20   * the License, or (at your option) any later version.
21   * 
22   * This software is distributed in the hope that it will be useful,
23   * but WITHOUT ANY WARRANTY; without even the implied warranty of
24   * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
25   * Lesser General Public License for more details.
26   * 
27   * You should have received a copy of the GNU Lesser General Public
28   * License along with this software; if not, write to the Free
29   * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
30   * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
31   * #L%
32   */
33  /**
34   *
35   * @author arnep@users.sourceforge.net
36   * @version $Id: MBusMedium.java 147 2015-05-13 09:57:14Z arnep $
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 }