rusefi/java_console/ui/src/com/irnems/Launcher.java

119 lines
3.6 KiB
Java
Raw Normal View History

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);
}
}
}