better method location
This commit is contained in:
parent
f54da4c3d3
commit
20195f5551
|
@ -4,13 +4,10 @@ import com.rusefi.core.EngineState;
|
|||
import com.rusefi.core.Sensor;
|
||||
import com.rusefi.core.SensorCentral;
|
||||
import com.rusefi.io.CommandQueue;
|
||||
import com.rusefi.io.ConnectionStateListener;
|
||||
import com.rusefi.io.InvocationConfirmationListener;
|
||||
import com.rusefi.io.LinkManager;
|
||||
import com.rusefi.io.tcp.TcpConnector;
|
||||
import jssc.SerialPortList;
|
||||
|
||||
import java.util.Arrays;
|
||||
import java.util.concurrent.CountDownLatch;
|
||||
import java.util.concurrent.TimeUnit;
|
||||
|
||||
|
@ -151,45 +148,14 @@ public class IoUtil {
|
|||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @return null if no port located
|
||||
*/
|
||||
static String getDefaultPort() {
|
||||
String[] ports = SerialPortList.getPortNames();
|
||||
if (ports.length == 0) {
|
||||
System.out.println("Port not specified and no ports found");
|
||||
return null;
|
||||
}
|
||||
String port = ports[ports.length - 1];
|
||||
System.out.println("Using last of " + ports.length + " port(s)");
|
||||
System.out.println("All ports: " + Arrays.toString(ports));
|
||||
return port;
|
||||
}
|
||||
|
||||
static void realHardwareConnect(String port) {
|
||||
LinkManager.start(port);
|
||||
final CountDownLatch connected = new CountDownLatch(1);
|
||||
LinkManager.open(new ConnectionStateListener() {
|
||||
@Override
|
||||
public void onConnectionFailed() {
|
||||
System.out.println("CONNECTION FAILED, did you specify the right port name?");
|
||||
System.exit(-1);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onConnectionEstablished() {
|
||||
connected.countDown();
|
||||
}
|
||||
});
|
||||
LinkManager.engineState.registerStringValueAction(EngineState.RUS_EFI_VERSION_TAG, (EngineState.ValueCallback<String>) EngineState.ValueCallback.VOID);
|
||||
LinkManager.engineState.registerStringValueAction(EngineState.OUTPIN_TAG, (EngineState.ValueCallback<String>) EngineState.ValueCallback.VOID);
|
||||
LinkManager.engineState.registerStringValueAction(AverageAnglesUtil.KEY, (EngineState.ValueCallback<String>) EngineState.ValueCallback.VOID);
|
||||
try {
|
||||
connected.await(60, TimeUnit.SECONDS);
|
||||
} catch (InterruptedException e) {
|
||||
throw new IllegalStateException(e);
|
||||
}
|
||||
|
||||
final CountDownLatch connected = LinkManager.connect(port);
|
||||
if (connected.getCount() > 0)
|
||||
throw new IllegalStateException("Not connected in time");
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -1,5 +1,7 @@
|
|||
package com.rusefi;
|
||||
|
||||
import com.rusefi.io.LinkManager;
|
||||
|
||||
import static com.rusefi.AutoTest.*;
|
||||
|
||||
/**
|
||||
|
@ -46,7 +48,7 @@ public class RealHwTest {
|
|||
if (args.length == 1 || args.length == 2) {
|
||||
port = args[0];
|
||||
} else if (args.length == 0) {
|
||||
port = IoUtil.getDefaultPort();
|
||||
port = LinkManager.getDefaultPort();
|
||||
} else {
|
||||
System.out.println("Only one optional argument expected: port number");
|
||||
port = null;
|
||||
|
|
|
@ -4,8 +4,10 @@ import com.rusefi.FileLog;
|
|||
import com.rusefi.core.EngineState;
|
||||
import com.rusefi.io.serial.SerialConnector;
|
||||
import com.rusefi.io.tcp.TcpConnector;
|
||||
import jssc.SerialPortList;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
import java.util.Arrays;
|
||||
import java.util.concurrent.*;
|
||||
|
||||
/**
|
||||
|
@ -13,6 +15,30 @@ import java.util.concurrent.*;
|
|||
* 3/3/14
|
||||
*/
|
||||
public class LinkManager {
|
||||
@NotNull
|
||||
public static CountDownLatch connect(String port) {
|
||||
start(port);
|
||||
final CountDownLatch connected = new CountDownLatch(1);
|
||||
open(new ConnectionStateListener() {
|
||||
@Override
|
||||
public void onConnectionFailed() {
|
||||
System.out.println("CONNECTION FAILED, did you specify the right port name?");
|
||||
System.exit(-1);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onConnectionEstablished() {
|
||||
connected.countDown();
|
||||
}
|
||||
});
|
||||
try {
|
||||
connected.await(60, TimeUnit.SECONDS);
|
||||
} catch (InterruptedException e) {
|
||||
throw new IllegalStateException(e);
|
||||
}
|
||||
return connected;
|
||||
}
|
||||
|
||||
public enum LogLevel {
|
||||
INFO,
|
||||
DEBUG,
|
||||
|
@ -44,6 +70,9 @@ public class LinkManager {
|
|||
});
|
||||
public static final String LOG_VIEWER = "log viewer";
|
||||
public static final LinkedBlockingQueue<Runnable> COMMUNICATION_QUEUE = new LinkedBlockingQueue<>();
|
||||
/**
|
||||
* All request/responses to underlying controller are happening on this single-threaded executor in a FIFO manner
|
||||
*/
|
||||
public static final ExecutorService COMMUNICATION_EXECUTOR = new ThreadPoolExecutor(1, 1,
|
||||
0L, TimeUnit.MILLISECONDS,
|
||||
COMMUNICATION_QUEUE,
|
||||
|
@ -51,7 +80,8 @@ public class LinkManager {
|
|||
@Override
|
||||
public Thread newThread(Runnable r) {
|
||||
Thread t = Executors.defaultThreadFactory().newThread(r);
|
||||
t.setName("communication executor");;
|
||||
t.setName("communication executor");
|
||||
;
|
||||
return t;
|
||||
}
|
||||
});
|
||||
|
@ -126,4 +156,19 @@ public class LinkManager {
|
|||
return message.substring(CommandQueue.CONFIRMATION_PREFIX.length());
|
||||
return null;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return null if no port located
|
||||
*/
|
||||
public static String getDefaultPort() {
|
||||
String[] ports = SerialPortList.getPortNames();
|
||||
if (ports.length == 0) {
|
||||
System.out.println("Port not specified and no ports found");
|
||||
return null;
|
||||
}
|
||||
String port = ports[ports.length - 1];
|
||||
System.out.println("Using last of " + ports.length + " port(s)");
|
||||
System.out.println("All ports: " + Arrays.toString(ports));
|
||||
return port;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,5 +1,7 @@
|
|||
package com.rusefi;
|
||||
|
||||
import com.rusefi.io.LinkManager;
|
||||
|
||||
/**
|
||||
* (c) Andrey Belomutskiy 2013-2017
|
||||
* 2/22/2015
|
||||
|
@ -12,7 +14,7 @@ public class CmdLine {
|
|||
}
|
||||
String command = args[0];
|
||||
if (args.length == 1) {
|
||||
String port = IoUtil.getDefaultPort();
|
||||
String port = LinkManager.getDefaultPort();
|
||||
if (port == null)
|
||||
return;
|
||||
executeCommand(command, port);
|
||||
|
|
Loading…
Reference in New Issue