1 package net.sf.mbus4j.dataframes.datablocks.vif;
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 import static net.sf.mbus4j.dataframes.datablocks.vif.SiPrefix.GIGA;
31 import static net.sf.mbus4j.dataframes.datablocks.vif.SiPrefix.KILO;
32 import static net.sf.mbus4j.dataframes.datablocks.vif.SiPrefix.MEGA;
33 import static net.sf.mbus4j.dataframes.datablocks.vif.SiPrefix.MILLI;
34 import static net.sf.mbus4j.dataframes.datablocks.vif.SiPrefix.ONE;
35 import static net.sf.mbus4j.dataframes.datablocks.vif.UnitOfMeasurement.AMERICAN_GALLON;
36 import static net.sf.mbus4j.dataframes.datablocks.vif.UnitOfMeasurement.AMERICAN_GALLON_PER_HOUR;
37 import static net.sf.mbus4j.dataframes.datablocks.vif.UnitOfMeasurement.AMERICAN_GALLON_PER_MINUTE;
38 import static net.sf.mbus4j.dataframes.datablocks.vif.UnitOfMeasurement.CUBIC_FEET;
39 import static net.sf.mbus4j.dataframes.datablocks.vif.UnitOfMeasurement.CUBIC_METER;
40 import static net.sf.mbus4j.dataframes.datablocks.vif.UnitOfMeasurement.DEGREE_CELSIUS;
41 import static net.sf.mbus4j.dataframes.datablocks.vif.UnitOfMeasurement.DEGREE_FAHRENHEIT;
42 import static net.sf.mbus4j.dataframes.datablocks.vif.UnitOfMeasurement.JOULE;
43 import static net.sf.mbus4j.dataframes.datablocks.vif.UnitOfMeasurement.JOULE_PER_HOUR;
44 import static net.sf.mbus4j.dataframes.datablocks.vif.UnitOfMeasurement.TONNS;
45 import static net.sf.mbus4j.dataframes.datablocks.vif.UnitOfMeasurement.WATT;
46 import static net.sf.mbus4j.dataframes.datablocks.vif.UnitOfMeasurement.DEGREE;
47 import static net.sf.mbus4j.dataframes.datablocks.vif.UnitOfMeasurement.VAR;
48 import static net.sf.mbus4j.dataframes.datablocks.vif.UnitOfMeasurement.VA;
49 import static net.sf.mbus4j.dataframes.datablocks.vif.UnitOfMeasurement.WATT_HOUR;
50 import static net.sf.mbus4j.dataframes.datablocks.vif.UnitOfMeasurement.VAR_HOUR;
51 import static net.sf.mbus4j.dataframes.datablocks.vif.UnitOfMeasurement.HERTZ;
52
53
54
55
56
57
58
59 public enum VifFB implements Vif {
60
61
62 ENERGY_KWH_E_2(ENERGY, KILO, WATT_HOUR, 2),
63 ENERGY_MWH_E_0(ENERGY, MEGA, WATT_HOUR, 0),
64 REACTIVE_ENERGY_KVARH_E_0(REACTIVE_ENERGY, KILO, VAR_HOUR, 0),
65 REACTIVE_ENERGY_KVARH_E_1(REACTIVE_ENERGY, KILO, VAR_HOUR, 1),
66 RESERVED_0X04(),
67 RESERVED_0X05(),
68 RESERVED_0X06(),
69 RESERVED_0X07(),
70 ENERGY_MJ_2(ENERGY, MEGA, JOULE, 2),
71 ENERGY_GJ_0(ENERGY, GIGA, JOULE, 0),
72 RESERVED_0X0A(),
73 RESERVED_0X0B(),
74 RESERVED_0X0C(),
75 RESERVED_0X0D(),
76 RESERVED_0X0E(),
77 RESERVED_0X0F(),
78 VOLUME_CBM_E_2(VOLUME, ONE, CUBIC_METER, 2),
79 VOLUME_CBM_E_3(VOLUME, ONE, CUBIC_METER, 3),
80 RESERVED_0X12(),
81 RESERVED_0X13(),
82 REACTIVE_POWER_VAR_E_0(REACTIVE_POWER, ONE, VAR, 0),
83 RESERVED_0X15(),
84 RESERVED_0X16(),
85 RESERVED_0X17(),
86 MASS_TONN_E_2(MASS, ONE, TONNS, 2),
87 MASS_KILO_TONN(MASS, KILO, TONNS, 3),
88 RESERVED_0X1A(),
89 RESERVED_0X1B(),
90 RESERVED_0X1C(),
91 RESERVED_0X1D(),
92 RESERVED_0X1E(),
93 RESERVED_0X1F(),
94 RESERVED_0X20(),
95 VOLUME_CBF_E__1(VOLUME, ONE, CUBIC_FEET, -1),
96 VOLUME_AM_GALLON_E__1(VOLUME, ONE, AMERICAN_GALLON, -1),
97 VOLUME_AM_GALLON_E_0(VOLUME, ONE, AMERICAN_GALLON, 0),
98 VOLUME_FLOW_AM_GALLON_PER_MINUTE_E__3(VOLUME_FLOW, ONE, AMERICAN_GALLON_PER_MINUTE, -3),
99 VOLUME_FLOW_AM_GALLON_PER_MINUTE_E_0(VOLUME_FLOW, ONE, AMERICAN_GALLON_PER_MINUTE, 0),
100 VOLUME_FLOW_AM_GALLON_PER_HOUR_E_0(VOLUME_FLOW, ONE, AMERICAN_GALLON_PER_HOUR, 0),
101 RESERVED_0X27(),
102 POWER_KW_E_2(POWER, KILO, WATT, 2),
103 POWER_MW_E_0(POWER, MEGA, WATT, 0),
104 RESERVED_0X2A(),
105 PHASE_U_I_E__1_DEGREE(PHASE_U_I, ONE, DEGREE, -1),
106 RESERVED_0X2C(),
107 RESERVED_0X2D(),
108 FREQUENCY_HERTZ_E__1(FREQUENCY, ONE, HERTZ, -1),
109 RESERVED_0X2F(),
110 POWER_MEGA_JOULE_PER_HOUR_E_2(POWER, MEGA, JOULE_PER_HOUR, 2),
111 POWER_GJ_PER_HOUR_E_0(POWER, GIGA, JOULE_PER_HOUR, 0),
112 RESERVED_0X32(),
113 RESERVED_0X33(),
114 RESERVED_0X34(),
115 RESERVED_0X35(),
116 RESERVED_0X36(),
117 RESERVED_0X37(),
118 RESERVED_0X38(),
119 RESERVED_0X39(),
120 RESERVED_0X3A(),
121 RESERVED_0X3B(),
122 RESERVED_0X3C(),
123 RESERVED_0X3D(),
124 RESERVED_0X3E(),
125 RESERVED_0X3F(),
126 RESERVED_0X40(),
127 RESERVED_0X41(),
128 RESERVED_0X42(),
129 RESERVED_0X43(),
130 RESERVED_0X44(),
131 RESERVED_0X45(),
132 RESERVED_0X46(),
133 RESERVED_0X47(),
134 RESERVED_0X48(),
135 RESERVED_0X49(),
136 RESERVED_0X4A(),
137 RESERVED_0X4B(),
138 RESERVED_0X4C(),
139 RESERVED_0X4D(),
140 RESERVED_0X4E(),
141 RESERVED_0X4F(),
142 RESERVED_0X50(),
143 RESERVED_0X51(),
144 RESERVED_0X52(),
145 RESERVED_0X53(),
146 COMPLEX_POWER_VA_E__1(COMPLEX_POWER, ONE, VA, -1),
147 RESERVED_0X55(),
148 RESERVED_0X56(),
149 RESERVED_0X57(),
150 FLOW_TEMPERATURE_MILLI_F_E_0(FLOW_TEMPERATURE, MILLI, DEGREE_FAHRENHEIT, 0),
151 FLOW_TEMPERATURE_MILLI_F_E_1(FLOW_TEMPERATURE, MILLI, DEGREE_FAHRENHEIT, 1),
152 FLOW_TEMPERATURE_MILLI_F_E_2(FLOW_TEMPERATURE, MILLI, DEGREE_FAHRENHEIT, 2),
153 FLOW_TEMPERATURE_F_E_0(FLOW_TEMPERATURE, ONE, DEGREE_FAHRENHEIT, 0),
154 RETURN_TEMPERATURE_MILLI_F_E_0(RETURN_TEMPERATURE, MILLI, DEGREE_FAHRENHEIT, 0),
155 RETURN_TEMPERATURE_MILLI_F_E_1(RETURN_TEMPERATURE, MILLI, DEGREE_FAHRENHEIT, 1),
156 RETURN_TEMPERATURE_MILLI_F_E_2(RETURN_TEMPERATURE, MILLI, DEGREE_FAHRENHEIT, 2),
157 RETURN_TEMPERATURE_F_E_0(RETURN_TEMPERATURE, ONE, DEGREE_FAHRENHEIT, 0),
158 TEMPERATURE_DIFFERENCE_MILLI_F_E_0(TEMPERATURE_DIFFERENCE, MILLI, DEGREE_FAHRENHEIT, 0),
159 TEMPERATURE_DIFFERENCE_MILLI_F_E_1(TEMPERATURE_DIFFERENCE, MILLI, DEGREE_FAHRENHEIT, 1),
160 TEMPERATURE_DIFFERENCE_MILLI_F_E_2(TEMPERATURE_DIFFERENCE, MILLI, DEGREE_FAHRENHEIT, 2),
161 TEMPERATURE_DIFFERENCE_F_E_0(TEMPERATURE_DIFFERENCE, ONE, DEGREE_FAHRENHEIT, 0),
162 EXTERNAL_TEMPERATURE_MILLI_F_E_0(EXTERNAL_TEMPERATURE, MILLI, DEGREE_FAHRENHEIT, 0),
163 EXTERNAL_TEMPERATURE_MILLI_F_E_1(EXTERNAL_TEMPERATURE, MILLI, DEGREE_FAHRENHEIT, 1),
164 EXTERNAL_TEMPERATURE_MILLI_F_E_2(EXTERNAL_TEMPERATURE, MILLI, DEGREE_FAHRENHEIT, 2),
165 EXTERNAL_TEMPERATURE_F_E_0(EXTERNAL_TEMPERATURE, ONE, DEGREE_FAHRENHEIT, 0),
166 RESERVED_0X68(),
167 RESERVED_0X69(),
168 RESERVED_0X6A(),
169 RESERVED_0X6B(),
170 RESERVED_0X6C(),
171 RESERVED_0X6D(),
172 RESERVED_0X6E(),
173 RESERVED_0X6F(),
174 COLD_OR_WARM_TEMPERATURE_LIMIT_MILLI_F_E_0(COLD_OR_WARM_TEMPERATURE_LIMIT, MILLI, DEGREE_FAHRENHEIT, 0),
175 COLD_OR_WARM_TEMPERATURE_LIMIT_MILLI_F_E_1(COLD_OR_WARM_TEMPERATURE_LIMIT, MILLI, DEGREE_FAHRENHEIT, 1),
176 COLD_OR_WARM_TEMPERATURE_LIMIT_MILLI_F_E_2(COLD_OR_WARM_TEMPERATURE_LIMIT, MILLI, DEGREE_FAHRENHEIT, 2),
177 COLD_OR_WARM_TEMPERATURE_LIMIT_F_E_0(COLD_OR_WARM_TEMPERATURE_LIMIT, ONE, DEGREE_FAHRENHEIT, 0),
178 COLD_OR_WARM_TEMPERATURE_LIMIT_MILLI_C_E_0(COLD_OR_WARM_TEMPERATURE_LIMIT, MILLI, DEGREE_CELSIUS, 0),
179 COLD_OR_WARM_TEMPERATURE_LIMIT_MILLI_C_E_1(COLD_OR_WARM_TEMPERATURE_LIMIT, MILLI, DEGREE_CELSIUS, 1),
180 COLD_OR_WARM_TEMPERATURE_LIMIT_MILLI_C_E_2(COLD_OR_WARM_TEMPERATURE_LIMIT, MILLI, DEGREE_CELSIUS, 2),
181 COLD_OR_WARM_TEMPERATURE_LIMIT_C_E_0(COLD_OR_WARM_TEMPERATURE_LIMIT, ONE, DEGREE_CELSIUS, 0),
182 CUMUL_COUNT_MAX_POWER_MILLI_W_E_0(CUMUL_COUNT_MAX_POWER, MILLI, WATT, 0),
183 CUMUL_COUNT_MAX_POWER_MILLI_W_E_1(CUMUL_COUNT_MAX_POWER, MILLI, WATT, 1),
184 CUMUL_COUNT_MAX_POWER_MILLI_W_E_2(CUMUL_COUNT_MAX_POWER, MILLI, WATT, 2),
185 CUMUL_COUNT_MAX_POWER_W_E_0(CUMUL_COUNT_MAX_POWER, ONE, WATT, 0),
186 CUMUL_COUNT_MAX_POWER_W_E_1(CUMUL_COUNT_MAX_POWER, ONE, WATT, 1),
187 CUMUL_COUNT_MAX_POWER_W_E_2(CUMUL_COUNT_MAX_POWER, ONE, WATT, 2),
188 CUMUL_COUNT_MAX_POWER_KILO_W_E_0(CUMUL_COUNT_MAX_POWER, KILO, WATT, 0),
189 CUMUL_COUNT_MAX_POWER_KILO_W_E_1(CUMUL_COUNT_MAX_POWER, KILO, WATT, 1);
190
191 public final static VifFB valueOfTableIndex(byte ordinal) {
192 return map[ordinal];
193 }
194 private final String label;
195 private final UnitOfMeasurement unit;
196 private final SiPrefix siPrefix;
197 private final Integer exponent;
198 private final double factor;
199 private final static VifFB[] map = values();
200
201 private VifFB() {
202 this.label = String.format("VifFB Reserved 0x%02x", ordinal());
203 this.siPrefix = null;
204 this.unit = null;
205 this.exponent = null;
206 this.factor = Double.NaN;
207 }
208
209 private VifFB(String label, SiPrefix siPrefix, UnitOfMeasurement unit, int exponent) {
210 this.label = label;
211 this.siPrefix = siPrefix;
212 this.unit = unit;
213 this.exponent = exponent;
214 this.factor = Math.pow(10, exponent);
215 }
216
217
218
219
220 @Override
221 public Integer getExponent() {
222 return exponent;
223 }
224
225 @Override
226 public String getLabel() {
227 return label;
228 }
229
230
231
232
233 @Override
234 public SiPrefix getSiPrefix() {
235 return siPrefix;
236 }
237
238 public byte getTableIndex() {
239 return (byte) ordinal();
240 }
241
242
243
244
245 @Override
246 public UnitOfMeasurement getUnitOfMeasurement() {
247 return unit;
248 }
249
250 @Override
251 public String toString() {
252 return VifToString.vifToString(this);
253 }
254
255 public static VifFB assemble(String label, UnitOfMeasurement unitOfMeasurement, SiPrefix siPrefix, Integer exponent) {
256 for (VifFB value : values()) {
257 if (value.getLabel().equals(label) && ((unitOfMeasurement == value.getUnitOfMeasurement()) || ((unitOfMeasurement != null) && unitOfMeasurement.equals(value.getUnitOfMeasurement()))) && ((siPrefix == value.getSiPrefix()) || ((siPrefix != null) && siPrefix.equals(value.getSiPrefix()))) && ((exponent == value.getExponent()) || ((exponent != null) && exponent.equals(value.getExponent())))) {
258 return value;
259 }
260 }
261 return valueOf(label);
262 }
263
264 @Override
265 public VifTypes getVifType() {
266 return VifTypes.FB_EXTENTION;
267 }
268 }