Linux is asking for SocketCAN ISO-TP console connector #4123

ooops we forgot about magic 300000... packet
This commit is contained in:
rusefillc 2022-05-10 08:24:58 -04:00
parent 2d37491c37
commit 40a9bf5c31
3 changed files with 26 additions and 16 deletions

View File

@ -10,6 +10,7 @@ import java.util.Arrays;
* @see IsoTpConnector * @see IsoTpConnector
*/ */
public class IsoTpCanDecoder { public class IsoTpCanDecoder {
public static final byte[] FLOW_CONTROL = {0x30, 0, 0, 0, 0, 0, 0, 0};
private static final Logging log = Logging.getLogging(IsoTpCanDecoder.class); private static final Logging log = Logging.getLogging(IsoTpCanDecoder.class);
static { static {

View File

@ -29,7 +29,7 @@ public class PCanIoStream extends AbstractIoStream {
private final IsoTpCanDecoder canDecoder = new IsoTpCanDecoder() { private final IsoTpCanDecoder canDecoder = new IsoTpCanDecoder() {
@Override @Override
protected void onTpFirstFrame() { protected void onTpFirstFrame() {
sendCanPacket(new byte[]{0x30, 0, 0, 0, 0, 0, 0, 0}); sendCanPacket(FLOW_CONTROL);
} }
}; };
@ -38,10 +38,6 @@ public class PCanIoStream extends AbstractIoStream {
public void sendCanData(byte[] hdr, byte[] data, int dataOffset, int dataLength) { public void sendCanData(byte[] hdr, byte[] data, int dataOffset, int dataLength) {
byte[] total = combineArrays(hdr, data, dataOffset, dataLength); byte[] total = combineArrays(hdr, data, dataOffset, dataLength);
log.info("-------sendIsoTp " + total.length + " byte(s):");
log.info("Sending " + IoStream.printHexBinary(total));
sendCanPacket(total); sendCanPacket(total);
} }
@ -64,6 +60,10 @@ public class PCanIoStream extends AbstractIoStream {
} }
private void sendCanPacket(byte[] payLoad) { private void sendCanPacket(byte[] payLoad) {
log.info("-------sendIsoTp " + payLoad.length + " byte(s):");
log.info("Sending " + IoStream.printHexBinary(payLoad));
TPCANMsg msg = new TPCANMsg(Fields.CAN_ECU_SERIAL_RX_ID, PCAN_MESSAGE_STANDARD.getValue(), TPCANMsg msg = new TPCANMsg(Fields.CAN_ECU_SERIAL_RX_ID, PCAN_MESSAGE_STANDARD.getValue(),
(byte) payLoad.length, payLoad); (byte) payLoad.length, payLoad);
TPCANStatus status = can.Write(CHANNEL, msg); TPCANStatus status = can.Write(CHANNEL, msg);

View File

@ -29,13 +29,27 @@ public class SocketCANIoStream extends AbstractIoStream {
private final IncomingDataBuffer dataBuffer; private final IncomingDataBuffer dataBuffer;
private final RawCanChannel socket; private final RawCanChannel socket;
private final IsoTpCanDecoder canDecoder = new IsoTpCanDecoder(); private final IsoTpCanDecoder canDecoder = new IsoTpCanDecoder() {
@Override
protected void onTpFirstFrame() {
sendCanPacket(FLOW_CONTROL);
}
};
private final IsoTpConnector isoTpConnector = new IsoTpConnector() { private final IsoTpConnector isoTpConnector = new IsoTpConnector() {
@Override @Override
public void sendCanData(byte[] hdr, byte[] data, int dataOffset, int dataLength) { public void sendCanData(byte[] hdr, byte[] data, int dataOffset, int dataLength) {
byte[] total = combineArrays(hdr, data, dataOffset, dataLength); byte[] total = combineArrays(hdr, data, dataOffset, dataLength);
sendCanPacket(total);
}
@Override
public void receiveData() {
}
};
private void sendCanPacket(byte[] total) {
log.info("-------sendIsoTp " + total.length + " byte(s):"); log.info("-------sendIsoTp " + total.length + " byte(s):");
log.info("Sending " + IoStream.printHexBinary(total)); log.info("Sending " + IoStream.printHexBinary(total));
@ -48,11 +62,6 @@ public class SocketCANIoStream extends AbstractIoStream {
} }
} }
@Override
public void receiveData() {
}
};
public SocketCANIoStream() { public SocketCANIoStream() {
try { try {
NetworkDevice canInterface = NetworkDevice.lookup("can0"); NetworkDevice canInterface = NetworkDevice.lookup("can0");