1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 package org.orekit.gnss.metric.parser;
18
19 import java.util.function.Function;
20
21
22
23
24
25
26 public enum DataType {
27
28
29 BIT_1(m -> m.extractBits(1)),
30
31
32 BIT_2(m -> m.extractBits(2)),
33
34
35 BIT_3(m -> m.extractBits(3)),
36
37
38 BIT_4(m -> m.extractBits(4)),
39
40
41 BIT_6(m -> m.extractBits(6)),
42
43
44 BIT_7(m -> m.extractBits(7)),
45
46
47 BIT_8(m -> m.extractBits(8)),
48
49
50 BIT_10(m -> m.extractBits(10)),
51
52
53 BIT_12(m -> m.extractBits(12)),
54
55
56 BIT_24(m -> m.extractBits(24)),
57
58
59 BIT_32(m -> m.extractBits(32)),
60
61
62 INT_6(m -> {
63 final long msb = 0x20l;
64 final long signed = (m.extractBits(6) ^ msb) - msb;
65 return signed == -msb ? null : signed;
66 }),
67
68
69 INT_8(m -> {
70 final long msb = 0x80l;
71 final long signed = (m.extractBits(8) ^ msb) - msb;
72 return signed == -msb ? null : signed;
73 }),
74
75
76 INT_9(m -> {
77 final long msb = 0x100l;
78 final long signed = (m.extractBits(9) ^ msb) - msb;
79 return signed == -msb ? null : signed;
80 }),
81
82
83 INT_10(m -> {
84 final long msb = 0x200l;
85 final long signed = (m.extractBits(10) ^ msb) - msb;
86 return signed == -msb ? null : signed;
87 }),
88
89
90 INT_11(m -> {
91 final long msb = 0x400l;
92 final long signed = (m.extractBits(11) ^ msb) - msb;
93 return signed == -msb ? null : signed;
94 }),
95
96
97 INT_14(m -> {
98 final long msb = 0x2000l;
99 final long signed = (m.extractBits(14) ^ msb) - msb;
100 return signed == -msb ? null : signed;
101 }),
102
103
104 INT_15(m -> {
105 final long msb = 0x4000l;
106 final long signed = (m.extractBits(15) ^ msb) - msb;
107 return signed == -msb ? null : signed;
108 }),
109
110
111 INT_16(m -> {
112 final long msb = 0x8000l;
113 final long signed = (m.extractBits(16) ^ msb) - msb;
114 return signed == -msb ? null : signed;
115 }),
116
117
118 INT_17(m -> {
119 final long msb = 0x10000l;
120 final long signed = (m.extractBits(17) ^ msb) - msb;
121 return signed == -msb ? null : signed;
122 }),
123
124
125 INT_18(m -> {
126 final long msb = 0x20000l;
127 final long signed = (m.extractBits(18) ^ msb) - msb;
128 return signed == -msb ? null : signed;
129 }),
130
131
132 INT_19(m -> {
133 final long msb = 0x40000l;
134 final long signed = (m.extractBits(19) ^ msb) - msb;
135 return signed == -msb ? null : signed;
136 }),
137
138
139 INT_20(m -> {
140 final long msb = 0x80000l;
141 final long signed = (m.extractBits(20) ^ msb) - msb;
142 return signed == -msb ? null : signed;
143 }),
144
145
146 INT_21(m -> {
147 final long msb = 0x100000l;
148 final long signed = (m.extractBits(21) ^ msb) - msb;
149 return signed == -msb ? null : signed;
150 }),
151
152
153 INT_22(m -> {
154 final long msb = 0x200000l;
155 final long signed = (m.extractBits(22) ^ msb) - msb;
156 return signed == -msb ? null : signed;
157 }),
158
159
160 INT_23(m -> {
161 final long msb = 0x400000l;
162 final long signed = (m.extractBits(23) ^ msb) - msb;
163 return signed == -msb ? null : signed;
164 }),
165
166
167 INT_24(m -> {
168 final long msb = 0x800000l;
169 final long signed = (m.extractBits(24) ^ msb) - msb;
170 return signed == -msb ? null : signed;
171 }),
172
173
174 INT_25(m -> {
175 final long msb = 0x1000000l;
176 final long signed = (m.extractBits(25) ^ msb) - msb;
177 return signed == -msb ? null : signed;
178 }),
179
180
181 INT_26(m -> {
182 final long msb = 0x2000000l;
183 final long signed = (m.extractBits(26) ^ msb) - msb;
184 return signed == -msb ? null : signed;
185 }),
186
187
188 INT_27(m -> {
189 final long msb = 0x4000000l;
190 final long signed = (m.extractBits(27) ^ msb) - msb;
191 return signed == -msb ? null : signed;
192 }),
193
194
195 INT_30(m -> {
196 final long msb = 0x20000000l;
197 final long signed = (m.extractBits(30) ^ msb) - msb;
198 return signed == -msb ? null : signed;
199 }),
200
201
202 INT_31(m -> {
203 final long msb = 0x40000000l;
204 final long signed = (m.extractBits(31) ^ msb) - msb;
205 return signed == -msb ? null : signed;
206 }),
207
208
209 INT_32(m -> {
210 final long msb = 0x80000000l;
211 final long signed = (m.extractBits(32) ^ msb) - msb;
212 return signed == -msb ? null : signed;
213 }),
214
215
216 INT_34(m -> {
217 final long msb = 0x200000000l;
218 final long signed = (m.extractBits(34) ^ msb) - msb;
219 return signed == -msb ? null : signed;
220 }),
221
222
223 INT_35(m -> {
224 final long msb = 0x400000000l;
225 final long signed = (m.extractBits(35) ^ msb) - msb;
226 return signed == -msb ? null : signed;
227 }),
228
229
230 INT_38(m -> {
231 final long msb = 0x2000000000l;
232 final long signed = (m.extractBits(38) ^ msb) - msb;
233 return signed == -msb ? null : signed;
234 }),
235
236
237 U_INT_2(m -> m.extractBits(2)),
238
239
240 U_INT_3(m -> m.extractBits(3)),
241
242
243 U_INT_4(m -> m.extractBits(4)),
244
245
246 U_INT_5(m -> m.extractBits(5)),
247
248
249 U_INT_6(m -> m.extractBits(6)),
250
251
252 U_INT_7(m -> m.extractBits(7)),
253
254
255 U_INT_8(m -> m.extractBits(8)),
256
257
258 U_INT_9(m -> m.extractBits(9)),
259
260
261 U_INT_10(m -> m.extractBits(10)),
262
263
264 U_INT_11(m -> m.extractBits(11)),
265
266
267 U_INT_12(m -> m.extractBits(12)),
268
269
270 U_INT_13(m -> m.extractBits(13)),
271
272
273 U_INT_14(m -> m.extractBits(14)),
274
275
276 U_INT_16(m -> m.extractBits(16)),
277
278
279 U_INT_17(m -> m.extractBits(17)),
280
281
282 U_INT_18(m -> m.extractBits(18)),
283
284
285 U_INT_20(m -> m.extractBits(20)),
286
287
288 U_INT_23(m -> m.extractBits(23)),
289
290
291 U_INT_24(m -> m.extractBits(24)),
292
293
294 U_INT_25(m -> m.extractBits(25)),
295
296
297 U_INT_26(m -> m.extractBits(26)),
298
299
300 U_INT_27(m -> m.extractBits(27)),
301
302
303 U_INT_30(m -> m.extractBits(30)),
304
305
306 U_INT_32(m -> m.extractBits(32)),
307
308
309 U_INT_35(m -> m.extractBits(35)),
310
311
312 U_INT_36(m -> m.extractBits(36)),
313
314
315 INT_S_5(m -> {
316 final long data = m.extractBits(5);
317 final long mask = -(data >>> 4);
318 return (~mask & data) | (mask & (16l - data));
319 }),
320
321
322 INT_S_11(m -> {
323 final long data = m.extractBits(11);
324 final long mask = -(data >>> 10);
325 return (~mask & data) | (mask & (1024l - data));
326 }),
327
328
329 INT_S_22(m -> {
330 final long data = m.extractBits(22);
331 final long mask = -(data >>> 21);
332 return (~mask & data) | (mask & (2097152l - data));
333 }),
334
335
336 INT_S_24(m -> {
337 final long data = m.extractBits(24);
338 final long mask = -(data >>> 23);
339 return (~mask & data) | (mask & (8388608l - data));
340 }),
341
342
343 INT_S_27(m -> {
344 final long data = m.extractBits(27);
345 final long mask = -(data >>> 26);
346 return (~mask & data) | (mask & (67108864l - data));
347 }),
348
349
350 INT_S_32(m -> {
351 final long data = m.extractBits(32);
352 final long mask = -(data >>> 31);
353 return (~mask & data) | (mask & (2147483648l - data));
354 });
355
356
357 private final Function<EncodedMessage, Long> decoder;
358
359
360
361
362 DataType(final Function<EncodedMessage, Long> decoder) {
363 this.decoder = decoder;
364 }
365
366
367
368
369
370 public Long decode(final EncodedMessage message) {
371 return decoder.apply(message);
372 }
373
374 }