SomethingLinuxReader

This commit is contained in:
rusefillc 2024-02-09 23:00:42 -05:00
parent 516a2b740c
commit ec535cfb66
4 changed files with 65 additions and 0 deletions

View File

@ -28,11 +28,14 @@ public class AutoFormatReader implements CANLineReader {
String firstLine = Files.lines(Paths.get(fileName)).findFirst().get();
if (!firstLine.contains(PcanTrcReader2_0.FILEVERSION)
&& !firstLine.contains(CanHackerReader.HEADER)
&& !firstLine.contains(SomethingLinuxReader.HEADER)
&& !firstLine.contains(BusMasterReader.HEADER)
)
throw new IllegalStateException(PcanTrcReader2_0.FILEVERSION + " expected in first line");
if (firstLine.contains(CanHackerReader.HEADER)) {
delegate = CanHackerReader.INSTANCE;
} else if (firstLine.contains(SomethingLinuxReader.HEADER)) {
delegate = SomethingLinuxReader.INSTANCE;
} else if (firstLine.contains(BusMasterReader.HEADER)) {
delegate = BusMasterReader.INSTANCE;
} else if (firstLine.contains("1.1")) {

View File

@ -0,0 +1,38 @@
package com.rusefi.can.reader.impl;
import com.rusefi.can.CANPacket;
import com.rusefi.can.reader.CANLineReader;
public enum SomethingLinuxReader implements CANLineReader {
INSTANCE;
public static final CharSequence HEADER = ") can0 ";
@Override
public CANPacket readLine(String line, String fileName, int lineIndex) {
String trimmed = line.trim();
if (trimmed.isEmpty())
return null;
String[] tokens = trimmed.split("\\s+");
if (tokens.length != 3)
throw new IllegalStateException("Three tokens expected [" + trimmed + "]");
String time = tokens[0].substring(1, tokens[0].length() - 2);
String mainToken = tokens[2];
int poundIndex = mainToken.indexOf('#');
int sid = Integer.parseInt(mainToken.substring(0, poundIndex), 16);
String hex = mainToken.substring(poundIndex + 1);
if (hex.length() % 2 != 0)
throw new IllegalStateException("Even length expected " + hex);
byte[] data = new byte[hex.length() / 2];
for (int i = 0 ;i < data.length; i++) {
String twoSymbols = hex.substring(2 * i, 2 * i + 2);
data[i] = (byte) Integer.parseInt(twoSymbols, 16);
}
return new CANPacket(Double.parseDouble(time), sid, data);
}
}

View File

@ -8,6 +8,8 @@ public class RallySandbox {
"C:\\stuff\\rusefi_documentation\\OEM-Docs\\Mitsubishi\\2009-rallyart",
Launcher.FILENAME_SUFFIX_PROPERTY,
".log",
// Launcher.FILENAME_FILTER_PROPERTY,
// "auto",
});
}
}

View File

@ -0,0 +1,22 @@
package com.rusefi.can.reader.impl;
import com.rusefi.can.CANPacket;
import org.junit.Test;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.StringReader;
import static org.junit.Assert.assertEquals;
public class SomethingLinuxReaderTest {
@Test
public void test() throws IOException {
String line = "(1666123717.446553) can0 215#09344FA34F8E01";
BufferedReader reader = new BufferedReader(new StringReader(line));
CANPacket packet = SomethingLinuxReader.INSTANCE.readLine(reader.readLine());
assertEquals(packet.getData().length, 7);
assertEquals(packet.getData()[0], 0x09);
assertEquals(packet.getData()[6], 0x01);
}
}