SomethingLinuxReader
This commit is contained in:
parent
516a2b740c
commit
ec535cfb66
|
@ -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")) {
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
}
|
|
@ -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",
|
||||
});
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue