parent
cc3808d2f0
commit
a661394012
|
@ -24,6 +24,7 @@ public class PortHolder {
|
|||
private final DataListener dataListener;
|
||||
private final Logger logger;
|
||||
private final Callable<IoStream> streamFactory;
|
||||
private final Callable<IoStream> ioStreamCallable;
|
||||
private final LinkManager linkManager;
|
||||
|
||||
public ConnectionStateListener listener;
|
||||
|
@ -34,12 +35,13 @@ public class PortHolder {
|
|||
@Nullable
|
||||
private BinaryProtocol bp;
|
||||
|
||||
protected PortHolder(String port, LinkManager linkManager, Logger logger, Callable<IoStream> streamFactory) {
|
||||
protected PortHolder(String port, LinkManager linkManager, Logger logger, Callable<IoStream> streamFactory, Callable<IoStream> ioStreamCallable) {
|
||||
this.port = port;
|
||||
this.linkManager = linkManager;
|
||||
dataListener = freshData -> linkManager.getEngineState().processNewData(new String(freshData), LinkManager.ENCODER);
|
||||
this.logger = logger;
|
||||
this.streamFactory = streamFactory;
|
||||
this.ioStreamCallable = ioStreamCallable;
|
||||
}
|
||||
|
||||
boolean connectAndReadConfiguration() {
|
||||
|
@ -48,13 +50,11 @@ public class PortHolder {
|
|||
|
||||
MessagesCentral.getInstance().postMessage(logger, getClass(), "Opening port: " + port);
|
||||
|
||||
stream = streamFactory.call();
|
||||
stream = ioStreamCallable.call();
|
||||
if (stream == null) {
|
||||
// error already reported
|
||||
return false;
|
||||
}
|
||||
IncomingDataBuffer dataBuffer = IncomingDataBuffer.createDataBuffer(stream, logger);
|
||||
stream.setDataBuffer(dataBuffer);
|
||||
synchronized (portLock) {
|
||||
bp = new BinaryProtocol(linkManager, logger, stream, stream.getDataBuffer());
|
||||
portLock.notifyAll();
|
||||
|
|
|
@ -3,6 +3,7 @@ package com.rusefi.io.serial;
|
|||
import com.opensr5.Logger;
|
||||
import com.rusefi.Callable;
|
||||
import com.rusefi.binaryprotocol.BinaryProtocol;
|
||||
import com.rusefi.binaryprotocol.IncomingDataBuffer;
|
||||
import com.rusefi.core.MessagesCentral;
|
||||
import com.rusefi.io.ConnectionStateListener;
|
||||
import com.rusefi.io.IoStream;
|
||||
|
@ -23,7 +24,21 @@ public class SerialConnector implements LinkConnector {
|
|||
this.linkManager = linkManager;
|
||||
this.logger = logger;
|
||||
|
||||
portHolder = new PortHolder(portName, linkManager, logger, streamFactory);
|
||||
Callable<IoStream> ioStreamCallable = new Callable<IoStream>() {
|
||||
@Override
|
||||
public IoStream call() {
|
||||
IoStream stream = streamFactory.call();
|
||||
if (stream == null) {
|
||||
// error already reported
|
||||
return null;
|
||||
}
|
||||
IncomingDataBuffer dataBuffer = IncomingDataBuffer.createDataBuffer(stream, logger);
|
||||
stream.setDataBuffer(dataBuffer);
|
||||
return stream;
|
||||
}
|
||||
};
|
||||
|
||||
portHolder = new PortHolder(portName, linkManager, logger, streamFactory, ioStreamCallable);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
Loading…
Reference in New Issue