|
@@ -0,0 +1,228 @@
|
|
|
|
|
+package cz.senslog.telemetry.protocol;
|
|
|
|
|
+
|
|
|
|
|
+import cz.senslog.telemetry.domain.IOProperty;
|
|
|
|
|
+import cz.senslog.telemetry.domain.TelemetryAVLRecord;
|
|
|
|
|
+import io.vertx.core.buffer.Buffer;
|
|
|
|
|
+import org.junit.jupiter.api.Test;
|
|
|
|
|
+
|
|
|
|
|
+import java.io.IOException;
|
|
|
|
|
+import java.net.URISyntaxException;
|
|
|
|
|
+import java.net.URL;
|
|
|
|
|
+import java.nio.file.Files;
|
|
|
|
|
+import java.nio.file.Path;
|
|
|
|
|
+import java.nio.file.Paths;
|
|
|
|
|
+import java.time.Instant;
|
|
|
|
|
+import java.util.Arrays;
|
|
|
|
|
+import java.util.List;
|
|
|
|
|
+import java.util.Objects;
|
|
|
|
|
+import java.util.stream.Stream;
|
|
|
|
|
+
|
|
|
|
|
+import static org.junit.jupiter.api.Assertions.assertEquals;
|
|
|
|
|
+
|
|
|
|
|
+public class Fm4exByFileTest {
|
|
|
|
|
+
|
|
|
|
|
+ private static void printAsBinary(byte[] bytes) {
|
|
|
|
|
+ for (byte b : bytes) {
|
|
|
|
|
+ System.out.print(String.format("%8s", Integer.toBinaryString(b & 0xFF)).replace(' ', '0'));
|
|
|
|
|
+ }
|
|
|
|
|
+ System.out.print("\n");
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ private static Buffer readResourceFile(String filePath) {
|
|
|
|
|
+ try {
|
|
|
|
|
+ URL url = Fm4exByFileTest.class.getClassLoader().getResource(filePath);
|
|
|
|
|
+ Path path = Paths.get(Objects.requireNonNull(url).toURI());
|
|
|
|
|
+ byte[] fileBytes = Files.readAllBytes(path);
|
|
|
|
|
+ return Buffer.buffer(fileBytes);
|
|
|
|
|
+ } catch (URISyntaxException | IOException e) {
|
|
|
|
|
+ System.err.println(Arrays.toString(e.getStackTrace()));
|
|
|
|
|
+ return Buffer.buffer();
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ @Test
|
|
|
|
|
+ void test1_AVLData() {
|
|
|
|
|
+ Buffer buffer = readResourceFile("Fm4exC8Ex_AVLData/test1.bin");
|
|
|
|
|
+
|
|
|
|
|
+ TelemetryAVLRecord[] records = Fm4ex.parseAVL(buffer);
|
|
|
|
|
+ assertEquals(15, records.length);
|
|
|
|
|
+
|
|
|
|
|
+ TelemetryAVLRecord r1 = records[0];
|
|
|
|
|
+ assertEquals(Instant.parse("2023-11-30T17:22:31.542Z"), r1.getTimestamp());
|
|
|
|
|
+ assertEquals(0, r1.getPriority());
|
|
|
|
|
+ assertEquals(14.699616432189941, r1.getLongitude());
|
|
|
|
|
+ assertEquals(49.40732955932617, r1.getLatitude());
|
|
|
|
|
+ assertEquals(451, r1.getAltitude());
|
|
|
|
|
+ assertEquals(271, r1.getAngle());
|
|
|
|
|
+ assertEquals(7, r1.getSatellites());
|
|
|
|
|
+ assertEquals(0, r1.getSpeed());
|
|
|
|
|
+ List<IOProperty> r1io = r1.getIoProperties();
|
|
|
|
|
+ assertEquals(5, r1io.size());
|
|
|
|
|
+ assertEquals(239, r1io.get(0).getId());
|
|
|
|
|
+ assertEquals(1, r1io.get(0).getValue());
|
|
|
|
|
+ assertEquals(67, r1io.get(1).getId());
|
|
|
|
|
+ assertEquals(9866, r1io.get(1).getValue());
|
|
|
|
|
+ assertEquals(66, r1io.get(2).getId());
|
|
|
|
|
+ assertEquals(13509, r1io.get(2).getValue());
|
|
|
|
|
+ assertEquals(24, r1io.get(3).getId());
|
|
|
|
|
+ assertEquals(0, r1io.get(3).getValue());
|
|
|
|
|
+ assertEquals(78, r1io.get(4).getId());
|
|
|
|
|
+ assertEquals(0, r1io.get(4).getValue());
|
|
|
|
|
+
|
|
|
|
|
+ // records r2 - r14
|
|
|
|
|
+
|
|
|
|
|
+ TelemetryAVLRecord r15 = records[14];
|
|
|
|
|
+ assertEquals(Instant.parse("2023-11-30T16:12:31.421Z"), r15.getTimestamp());
|
|
|
|
|
+ assertEquals(0, r15.getPriority());
|
|
|
|
|
+ assertEquals(14.699616432189941, r15.getLongitude());
|
|
|
|
|
+ assertEquals(49.40732955932617, r15.getLatitude());
|
|
|
|
|
+ assertEquals(444, r15.getAltitude());
|
|
|
|
|
+ assertEquals(271, r15.getAngle());
|
|
|
|
|
+ assertEquals(9, r15.getSatellites());
|
|
|
|
|
+ assertEquals(0, r15.getSpeed());
|
|
|
|
|
+ List<IOProperty> r15io = r15.getIoProperties();
|
|
|
|
|
+ assertEquals(5, r15io.size());
|
|
|
|
|
+ assertEquals(239, r15io.get(0).getId());
|
|
|
|
|
+ assertEquals(1, r15io.get(0).getValue());
|
|
|
|
|
+ assertEquals(67, r15io.get(1).getId());
|
|
|
|
|
+ assertEquals(9855, r15io.get(1).getValue());
|
|
|
|
|
+ assertEquals(66, r15io.get(2).getId());
|
|
|
|
|
+ assertEquals(13471, r15io.get(2).getValue());
|
|
|
|
|
+ assertEquals(24, r15io.get(3).getId());
|
|
|
|
|
+ assertEquals(0, r15io.get(3).getValue());
|
|
|
|
|
+ assertEquals(78, r15io.get(4).getId());
|
|
|
|
|
+ assertEquals(0, r15io.get(4).getValue());
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ @Test
|
|
|
|
|
+ void test2_AVLData() {
|
|
|
|
|
+ Buffer buffer = readResourceFile("Fm4exC8Ex_AVLData/test2.bin");
|
|
|
|
|
+
|
|
|
|
|
+ TelemetryAVLRecord[] records = Fm4ex.parseAVL(buffer);
|
|
|
|
|
+
|
|
|
|
|
+ assertEquals(15, records.length);
|
|
|
|
|
+
|
|
|
|
|
+ TelemetryAVLRecord r1 = records[0];
|
|
|
|
|
+ assertEquals(Instant.parse("2023-11-30T17:27:31.550Z"), r1.getTimestamp());
|
|
|
|
|
+ assertEquals(0, r1.getPriority());
|
|
|
|
|
+ assertEquals(14.699616432189941, r1.getLongitude());
|
|
|
|
|
+ assertEquals(49.40732955932617, r1.getLatitude());
|
|
|
|
|
+ assertEquals(448, r1.getAltitude());
|
|
|
|
|
+ assertEquals(271, r1.getAngle());
|
|
|
|
|
+ assertEquals(7, r1.getSatellites());
|
|
|
|
|
+ assertEquals(0, r1.getSpeed());
|
|
|
|
|
+ List<IOProperty> r1io = r1.getIoProperties();
|
|
|
|
|
+ assertEquals(5, r1io.size());
|
|
|
|
|
+ assertEquals(239, r1io.get(0).getId());
|
|
|
|
|
+ assertEquals(1, r1io.get(0).getValue());
|
|
|
|
|
+ assertEquals(67, r1io.get(1).getId());
|
|
|
|
|
+ assertEquals(9866, r1io.get(1).getValue());
|
|
|
|
|
+ assertEquals(66, r1io.get(2).getId());
|
|
|
|
|
+ assertEquals(13446, r1io.get(2).getValue());
|
|
|
|
|
+ assertEquals(24, r1io.get(3).getId());
|
|
|
|
|
+ assertEquals(0, r1io.get(3).getValue());
|
|
|
|
|
+ assertEquals(78, r1io.get(4).getId());
|
|
|
|
|
+ assertEquals(0, r1io.get(4).getValue());
|
|
|
|
|
+
|
|
|
|
|
+ // records r2 - r14
|
|
|
|
|
+
|
|
|
|
|
+ TelemetryAVLRecord r15 = records[14];
|
|
|
|
|
+ assertEquals(Instant.parse("2023-11-30T16:17:31.433Z"), r15.getTimestamp());
|
|
|
|
|
+ assertEquals(0, r15.getPriority());
|
|
|
|
|
+ assertEquals(14.699616432189941, r15.getLongitude());
|
|
|
|
|
+ assertEquals(49.40732955932617, r15.getLatitude());
|
|
|
|
|
+ assertEquals(444, r15.getAltitude());
|
|
|
|
|
+ assertEquals(271, r15.getAngle());
|
|
|
|
|
+ assertEquals(8, r15.getSatellites());
|
|
|
|
|
+ assertEquals(0, r15.getSpeed());
|
|
|
|
|
+ List<IOProperty> r15io = r15.getIoProperties();
|
|
|
|
|
+ assertEquals(5, r15io.size());
|
|
|
|
|
+ assertEquals(239, r15io.get(0).getId());
|
|
|
|
|
+ assertEquals(1, r15io.get(0).getValue());
|
|
|
|
|
+ assertEquals(67, r15io.get(1).getId());
|
|
|
|
|
+ assertEquals(9866, r15io.get(1).getValue());
|
|
|
|
|
+ assertEquals(66, r15io.get(2).getId());
|
|
|
|
|
+ assertEquals(13506, r15io.get(2).getValue());
|
|
|
|
|
+ assertEquals(24, r15io.get(3).getId());
|
|
|
|
|
+ assertEquals(0, r15io.get(3).getValue());
|
|
|
|
|
+ assertEquals(78, r15io.get(4).getId());
|
|
|
|
|
+ assertEquals(0, r15io.get(4).getValue());
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ @Test
|
|
|
|
|
+ void test3_AVLData() {
|
|
|
|
|
+ Buffer buffer = readResourceFile("Fm4exC8Ex_AVLData/test3.bin");
|
|
|
|
|
+
|
|
|
|
|
+ TelemetryAVLRecord[] records = Fm4ex.parseAVL(buffer);
|
|
|
|
|
+
|
|
|
|
|
+ assertEquals(15, records.length);
|
|
|
|
|
+
|
|
|
|
|
+ TelemetryAVLRecord r1 = records[0];
|
|
|
|
|
+ assertEquals(Instant.parse("2023-11-30T17:42:31.574Z"), r1.getTimestamp());
|
|
|
|
|
+ assertEquals(0, r1.getPriority());
|
|
|
|
|
+ assertEquals(14.699616432189941, r1.getLongitude());
|
|
|
|
|
+ assertEquals(49.40732955932617, r1.getLatitude());
|
|
|
|
|
+ assertEquals(456, r1.getAltitude());
|
|
|
|
|
+ assertEquals(271, r1.getAngle());
|
|
|
|
|
+ assertEquals(9, r1.getSatellites());
|
|
|
|
|
+ assertEquals(0, r1.getSpeed());
|
|
|
|
|
+ List<IOProperty> r1io = r1.getIoProperties();
|
|
|
|
|
+ assertEquals(5, r1io.size());
|
|
|
|
|
+ assertEquals(239, r1io.get(0).getId());
|
|
|
|
|
+ assertEquals(1, r1io.get(0).getValue());
|
|
|
|
|
+ assertEquals(67, r1io.get(1).getId());
|
|
|
|
|
+ assertEquals(9865, r1io.get(1).getValue());
|
|
|
|
|
+ assertEquals(66, r1io.get(2).getId());
|
|
|
|
|
+ assertEquals(13499, r1io.get(2).getValue());
|
|
|
|
|
+ assertEquals(24, r1io.get(3).getId());
|
|
|
|
|
+ assertEquals(0, r1io.get(3).getValue());
|
|
|
|
|
+ assertEquals(78, r1io.get(4).getId());
|
|
|
|
|
+ assertEquals(0, r1io.get(4).getValue());
|
|
|
|
|
+
|
|
|
|
|
+ // records r2 - r14
|
|
|
|
|
+
|
|
|
|
|
+ TelemetryAVLRecord r15 = records[14];
|
|
|
|
|
+ assertEquals(Instant.parse("2023-11-30T16:32:31.457Z"), r15.getTimestamp());
|
|
|
|
|
+ assertEquals(0, r15.getPriority());
|
|
|
|
|
+ assertEquals(14.699616432189941, r15.getLongitude());
|
|
|
|
|
+ assertEquals(49.40732955932617, r15.getLatitude());
|
|
|
|
|
+ assertEquals(453, r15.getAltitude());
|
|
|
|
|
+ assertEquals(271, r15.getAngle());
|
|
|
|
|
+ assertEquals(9, r15.getSatellites());
|
|
|
|
|
+ assertEquals(0, r15.getSpeed());
|
|
|
|
|
+ List<IOProperty> r15io = r15.getIoProperties();
|
|
|
|
|
+ assertEquals(5, r15io.size());
|
|
|
|
|
+ assertEquals(239, r15io.get(0).getId());
|
|
|
|
|
+ assertEquals(1, r15io.get(0).getValue());
|
|
|
|
|
+ assertEquals(67, r15io.get(1).getId());
|
|
|
|
|
+ assertEquals(9870, r15io.get(1).getValue());
|
|
|
|
|
+ assertEquals(66, r15io.get(2).getId());
|
|
|
|
|
+ assertEquals(13507, r15io.get(2).getValue());
|
|
|
|
|
+ assertEquals(24, r15io.get(3).getId());
|
|
|
|
|
+ assertEquals(0, r15io.get(3).getValue());
|
|
|
|
|
+ assertEquals(78, r15io.get(4).getId());
|
|
|
|
|
+ assertEquals(0, r15io.get(4).getValue());
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
|
|
+ @Test
|
|
|
|
|
+ void test1_IMEI() {
|
|
|
|
|
+ Buffer buffer = readResourceFile("Fm4exC8Ex_IMEI/test1.bin");
|
|
|
|
|
+ String imei = Fm4ex.parseIMEI(buffer);
|
|
|
|
|
+ assertEquals("867648041484898", imei);
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ @Test
|
|
|
|
|
+ void test2_IMEI() {
|
|
|
|
|
+ Buffer buffer = readResourceFile("Fm4exC8Ex_IMEI/test2.bin");
|
|
|
|
|
+ String imei = Fm4ex.parseIMEI(buffer);
|
|
|
|
|
+ assertEquals("867648041484898", imei);
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ @Test
|
|
|
|
|
+ void test3_IMEI() {
|
|
|
|
|
+ Buffer buffer = readResourceFile("Fm4exC8Ex_IMEI/test3.bin");
|
|
|
|
|
+ String imei = Fm4ex.parseIMEI(buffer);
|
|
|
|
|
+ assertEquals("867648041484898", imei);
|
|
|
|
|
+ }
|
|
|
|
|
+}
|