2014-04-22 15:15:49 -07:00
|
|
|
package com.irnems;
|
|
|
|
|
|
|
|
import com.irnems.core.EngineState;
|
|
|
|
import com.irnems.core.MessagesCentral;
|
2014-08-23 15:37:21 -07:00
|
|
|
import com.rusefi.*;
|
2014-04-22 15:15:49 -07:00
|
|
|
import com.rusefi.io.LinkManager;
|
2014-07-09 18:15:49 -07:00
|
|
|
import com.rusefi.ui.*;
|
2014-04-22 15:15:49 -07:00
|
|
|
import jssc.SerialPortList;
|
|
|
|
|
|
|
|
import javax.swing.*;
|
|
|
|
|
|
|
|
/**
|
|
|
|
* this is the main entry point of rusEfi ECU console
|
|
|
|
* <p/>
|
|
|
|
* <p/>
|
|
|
|
* Date: 12/25/12
|
|
|
|
* (c) Andrey Belomutskiy
|
|
|
|
*
|
|
|
|
* @see WavePanel
|
|
|
|
*/
|
|
|
|
public class Launcher extends FrameHelper {
|
2014-12-13 16:03:15 -08:00
|
|
|
public static final int CONSOLE_VERSION = 20141213;
|
2014-08-23 15:37:21 -07:00
|
|
|
public static final boolean SHOW_STIMULATOR = true;
|
2014-09-07 16:02:51 -07:00
|
|
|
private final String port;
|
2014-04-22 15:15:49 -07:00
|
|
|
|
|
|
|
public Launcher(String port) {
|
2014-09-07 16:02:51 -07:00
|
|
|
this.port = port;
|
2014-04-22 15:15:49 -07:00
|
|
|
FileLog.MAIN.start();
|
|
|
|
|
|
|
|
LinkManager.start(port);
|
|
|
|
|
2014-07-09 18:15:49 -07:00
|
|
|
FileLog.MAIN.logLine("Console " + CONSOLE_VERSION);
|
|
|
|
|
2014-04-22 15:15:49 -07:00
|
|
|
JTabbedPane tabbedPane = new JTabbedPane();
|
|
|
|
|
2014-09-29 16:02:50 -07:00
|
|
|
if (LinkManager.isLogViewerMode(port))
|
|
|
|
tabbedPane.add("Log Viewer", new LogViewer());
|
|
|
|
|
2014-04-22 15:15:49 -07:00
|
|
|
RpmPanel rpmPanel = new RpmPanel();
|
|
|
|
tabbedPane.addTab("Main", rpmPanel.createRpmPanel());
|
2014-08-23 15:37:21 -07:00
|
|
|
tabbedPane.addTab("Gauges", new GaugesPanel().getContent());
|
|
|
|
tabbedPane.addTab("Digital Sniffer", WavePanel.getInstance().getPanel());
|
2014-04-22 15:15:49 -07:00
|
|
|
tabbedPane.addTab("Analog Sniffer", new AnalogChartPanel());
|
|
|
|
|
2014-10-10 07:04:42 -07:00
|
|
|
tabbedPane.addTab("LE controls", new FlexibleControls().getPanel());
|
|
|
|
|
2014-04-22 15:15:49 -07:00
|
|
|
// tabbedPane.addTab("ADC", new AdcPanel(new BooleanInputsModel()).createAdcPanel());
|
2014-12-10 14:03:23 -08:00
|
|
|
if (SHOW_STIMULATOR && !LinkManager.isStimulationMode) {
|
2014-08-23 15:37:21 -07:00
|
|
|
EcuStimulator stimulator = EcuStimulator.getInstance();
|
2014-08-29 15:06:31 -07:00
|
|
|
tabbedPane.add("ECU stimulation", stimulator.getPanel());
|
2014-08-23 15:37:21 -07:00
|
|
|
}
|
2014-04-22 15:15:49 -07:00
|
|
|
// tabbedPane.addTab("live map adjustment", new Live3DReport().getControl());
|
2014-08-29 15:06:31 -07:00
|
|
|
tabbedPane.add("Messages", new MsgPanel(true).getContent());
|
2014-04-22 15:15:49 -07:00
|
|
|
|
|
|
|
|
2014-09-29 16:02:50 -07:00
|
|
|
if (!LinkManager.isLogViewerMode(port))
|
|
|
|
tabbedPane.setSelectedIndex(2);
|
2014-04-22 15:15:49 -07:00
|
|
|
|
|
|
|
showFrame(tabbedPane);
|
|
|
|
}
|
|
|
|
|
|
|
|
@Override
|
|
|
|
protected void onWindowOpened() {
|
|
|
|
super.onWindowOpened();
|
|
|
|
setTitle("N/A");
|
|
|
|
|
|
|
|
LinkManager.open();
|
|
|
|
|
|
|
|
LinkManager.engineState.registerStringValueAction("rusEfiVersion", new EngineState.ValueCallback<String>() {
|
|
|
|
@Override
|
2014-08-23 15:37:21 -07:00
|
|
|
public void onUpdate(String firmwareVersion) {
|
|
|
|
setTitle(firmwareVersion);
|
|
|
|
VersionChecker.getInstance().onFirmwareVersion(firmwareVersion);
|
2014-04-22 15:15:49 -07:00
|
|
|
}
|
|
|
|
});
|
|
|
|
}
|
|
|
|
|
|
|
|
private void setTitle(String value) {
|
2014-09-07 16:02:51 -07:00
|
|
|
frame.setTitle("Console " + CONSOLE_VERSION + "; firmware=" + value + "@" + port);
|
2014-04-22 15:15:49 -07:00
|
|
|
}
|
|
|
|
|
|
|
|
@Override
|
|
|
|
protected void onWindowClosed() {
|
|
|
|
super.onWindowClosed();
|
|
|
|
/**
|
|
|
|
* looks like reconnectTimer in {@link RpmPanel} keeps AWT alive. Simplest solution would be to 'exit'
|
|
|
|
*/
|
2014-08-23 15:37:21 -07:00
|
|
|
SimulatorHelper.onWindowClosed();
|
2014-04-22 15:15:49 -07:00
|
|
|
System.exit(0);
|
|
|
|
}
|
|
|
|
|
|
|
|
public static void main(final String[] args) throws Exception {
|
|
|
|
Thread.setDefaultUncaughtExceptionHandler(new DefaultExceptionHandler());
|
2014-08-23 15:37:21 -07:00
|
|
|
VersionChecker.start();
|
2014-04-22 15:15:49 -07:00
|
|
|
SwingUtilities.invokeAndWait(new Runnable() {
|
|
|
|
public void run() {
|
|
|
|
awtCode(args);
|
|
|
|
}
|
|
|
|
});
|
|
|
|
}
|
|
|
|
|
|
|
|
private static void awtCode(String[] args) {
|
|
|
|
try {
|
|
|
|
|
|
|
|
boolean isPortDefined = args.length > 0;
|
|
|
|
if (isPortDefined) {
|
|
|
|
new Launcher(args[0]);
|
|
|
|
} else {
|
2014-09-07 16:02:51 -07:00
|
|
|
for (String p : SerialPortList.getPortNames())
|
|
|
|
MessagesCentral.getInstance().postMessage(Launcher.class, "Available port: " + p);
|
2014-04-22 15:15:49 -07:00
|
|
|
PortLookupFrame.chooseSerialPort();
|
|
|
|
}
|
|
|
|
|
|
|
|
} catch (Throwable e) {
|
|
|
|
throw new IllegalStateException(e);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|