2022-02-15 13:17:28 -08:00
|
|
|
package com.rusefi.can.reader.impl;
|
2022-02-02 16:48:51 -08:00
|
|
|
|
|
|
|
import com.rusefi.can.CANPacket;
|
2022-02-15 13:17:28 -08:00
|
|
|
import com.rusefi.can.reader.CANLineReader;
|
2022-02-02 16:48:51 -08:00
|
|
|
|
2022-11-12 19:13:12 -08:00
|
|
|
/**
|
|
|
|
* @see PcanTrcReader1_1 for version 1.1 format
|
|
|
|
* TODO: merge these two?
|
|
|
|
*/
|
|
|
|
public enum PcanTrcReader2_0 implements CANLineReader {
|
2022-02-15 13:17:28 -08:00
|
|
|
INSTANCE;
|
|
|
|
|
2022-11-12 19:13:12 -08:00
|
|
|
public static final String FILEVERSION = ";$FILEVERSION";
|
|
|
|
|
2022-02-02 19:37:29 -08:00
|
|
|
@Override
|
2022-02-02 16:48:51 -08:00
|
|
|
public CANPacket readLine(String line) {
|
2022-02-15 13:17:28 -08:00
|
|
|
line = line.trim();
|
2022-11-12 19:13:12 -08:00
|
|
|
if (line.startsWith(FILEVERSION) && !line.startsWith(FILEVERSION + "=2.0"))
|
|
|
|
throw new IllegalStateException("Unexpected fileversion " + line);
|
2022-02-15 13:17:28 -08:00
|
|
|
if (line.startsWith(";"))
|
2022-02-02 19:37:29 -08:00
|
|
|
return null;
|
2022-02-15 13:17:28 -08:00
|
|
|
String[] tokens = line.split("\\s+");
|
|
|
|
double timeStamp = Double.parseDouble(tokens[1]);
|
|
|
|
int sid = Integer.parseInt(tokens[3], 16);
|
|
|
|
int size = Integer.parseInt(tokens[5]);
|
2022-02-02 16:48:51 -08:00
|
|
|
|
2022-02-15 13:17:28 -08:00
|
|
|
byte[] data = CANLineReader.readHexArray(tokens, 6, size);
|
2022-02-02 16:48:51 -08:00
|
|
|
|
|
|
|
|
|
|
|
return new CANPacket(timeStamp, sid, data);
|
2022-02-02 19:37:29 -08:00
|
|
|
}
|
2022-02-02 16:48:51 -08:00
|
|
|
}
|