2014-04-17 17:03:45 +00:00
|
|
|
package de.psychose;
|
|
|
|
|
2014-04-17 09:25:14 +00:00
|
|
|
import com.illposed.osc.OSCListener;
|
|
|
|
import com.illposed.osc.OSCMessage;
|
|
|
|
|
|
|
|
import javax.swing.*;
|
2014-04-18 01:06:41 +00:00
|
|
|
import java.awt.event.ActionEvent;
|
2014-04-17 09:25:14 +00:00
|
|
|
import java.util.Date;
|
2014-05-03 09:46:11 +00:00
|
|
|
import java.util.Observable;
|
|
|
|
import java.util.Observer;
|
2014-04-17 09:25:14 +00:00
|
|
|
|
|
|
|
/**
|
|
|
|
* @author: lucas
|
|
|
|
* @date: 14.04.14 21:43
|
|
|
|
*/
|
|
|
|
public class MainForm {
|
2014-05-03 09:46:11 +00:00
|
|
|
private final ChaOSCclient osCclient;
|
2014-04-17 09:25:14 +00:00
|
|
|
private JPanel mainPanel;
|
|
|
|
private ActorDisplay actor1;
|
|
|
|
private ActorDisplay actor2;
|
|
|
|
private ActorDisplay actor3;
|
2014-04-18 01:06:41 +00:00
|
|
|
private StatsDisplay statDisplay;
|
2014-05-03 09:46:11 +00:00
|
|
|
private PulseControl pulse1;
|
|
|
|
private PulseControl pulse2;
|
|
|
|
private PulseControl pulse3;
|
2014-04-17 09:25:14 +00:00
|
|
|
|
2014-04-18 01:06:41 +00:00
|
|
|
private int totalMessageCount = 0;
|
|
|
|
private int messagesTempCounter = 0;
|
|
|
|
|
2014-04-23 10:53:48 +00:00
|
|
|
private long totalTraffic = 0;
|
|
|
|
private long lastTraffic = 0;
|
|
|
|
|
2014-05-03 09:46:11 +00:00
|
|
|
public JPanel getMainPanel() {
|
|
|
|
return mainPanel;
|
|
|
|
}
|
|
|
|
|
|
|
|
public MainForm(final boolean showErrors, final ChaOSCclient chaOSCclient, final SnmpStatClient snmpStatClient) {
|
2014-04-23 10:53:48 +00:00
|
|
|
this.osCclient = chaOSCclient;
|
2014-04-17 09:25:14 +00:00
|
|
|
|
2014-05-03 09:46:11 +00:00
|
|
|
addActor("merle", "Körper 1", actor1, pulse1);
|
|
|
|
addActor("uwe", "Körper 2", actor2, pulse2);
|
|
|
|
addActor("bjoern", "Körper 3", actor3, pulse3);
|
2014-04-18 01:06:41 +00:00
|
|
|
|
|
|
|
|
|
|
|
final Timer timer = new Timer(1000, new AbstractAction() {
|
|
|
|
@Override
|
|
|
|
public void actionPerformed(ActionEvent e) {
|
|
|
|
statDisplay.setMessagesPerSec(String.valueOf(totalMessageCount - messagesTempCounter));
|
|
|
|
statDisplay.setMessageCount(String.valueOf(totalMessageCount));
|
|
|
|
messagesTempCounter = totalMessageCount;
|
|
|
|
}
|
|
|
|
});
|
|
|
|
timer.setRepeats(true);
|
|
|
|
timer.start();
|
2014-04-23 10:53:48 +00:00
|
|
|
|
|
|
|
final Timer snmpTimer = new Timer(5000, new AbstractAction() {
|
|
|
|
@Override
|
|
|
|
public void actionPerformed(ActionEvent e) {
|
2014-05-03 09:46:11 +00:00
|
|
|
totalTraffic = snmpStatClient.getTrafficSum(); // in kB
|
|
|
|
statDisplay.setTotalTraffic(String.valueOf(totalTraffic));
|
|
|
|
statDisplay.setBandwidth(String.valueOf((totalTraffic - lastTraffic) / 5));
|
2014-04-23 10:53:48 +00:00
|
|
|
lastTraffic = totalTraffic;
|
|
|
|
}
|
|
|
|
});
|
|
|
|
snmpTimer.setRepeats(true);
|
2014-10-27 21:04:11 +00:00
|
|
|
snmpStatClient.start();
|
2014-05-03 09:46:11 +00:00
|
|
|
|
|
|
|
|
|
|
|
if(showErrors) {
|
|
|
|
actor1.startErrorTimer();
|
|
|
|
actor2.startErrorTimer();
|
|
|
|
actor3.startErrorTimer();
|
|
|
|
snmpTimer.start();
|
|
|
|
} else {
|
|
|
|
pulse1.hide();
|
|
|
|
pulse2.hide();
|
|
|
|
pulse3.hide();
|
|
|
|
statDisplay.hide();
|
|
|
|
}
|
2014-10-27 21:04:11 +00:00
|
|
|
|
|
|
|
|
2014-04-17 09:25:14 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
|
2014-05-03 09:46:11 +00:00
|
|
|
private void addActor(final String actor, final String label, final ActorDisplay actorDisplay, final PulseControl pulse) {
|
2014-04-17 09:25:14 +00:00
|
|
|
actorDisplay.setCaption(label);
|
|
|
|
osCclient.addListener("/" + actor.toLowerCase() + "/heartbeat", new OSCListener() {
|
|
|
|
@Override
|
|
|
|
public void acceptMessage(Date time, OSCMessage message) {
|
|
|
|
if (message.getArguments().length == 3) {
|
2014-04-18 01:06:41 +00:00
|
|
|
totalMessageCount++;
|
2014-04-23 10:53:48 +00:00
|
|
|
actorDisplay.setHeartbeat(message.getArguments()[0].toString().equals("0") ? "Systole" : "Diastole");
|
2014-04-17 09:25:14 +00:00
|
|
|
actorDisplay.setPulse(message.getArguments()[1].toString());
|
|
|
|
actorDisplay.setOxy(message.getArguments()[2].toString());
|
|
|
|
}
|
|
|
|
}
|
|
|
|
});
|
|
|
|
|
|
|
|
osCclient.addListener("/" + actor.toLowerCase() + "/ekg", new OSCListener() {
|
|
|
|
@Override
|
|
|
|
public void acceptMessage(Date time, OSCMessage message) {
|
|
|
|
if (message.getArguments().length == 1) {
|
2014-04-18 01:06:41 +00:00
|
|
|
totalMessageCount++;
|
2014-04-17 09:25:14 +00:00
|
|
|
actorDisplay.setEkg(message.getArguments()[0].toString());
|
|
|
|
}
|
|
|
|
}
|
|
|
|
});
|
|
|
|
|
|
|
|
osCclient.addListener("/" + actor.toLowerCase() + "/emg", new OSCListener() {
|
|
|
|
@Override
|
|
|
|
public void acceptMessage(Date time, OSCMessage message) {
|
|
|
|
if (message.getArguments().length == 1) {
|
2014-04-18 01:06:41 +00:00
|
|
|
totalMessageCount++;
|
2014-04-17 09:25:14 +00:00
|
|
|
actorDisplay.setEmg(message.getArguments()[0].toString());
|
|
|
|
}
|
|
|
|
}
|
|
|
|
});
|
|
|
|
|
|
|
|
osCclient.addListener("/" + actor.toLowerCase() + "/temperatur", new OSCListener() {
|
|
|
|
@Override
|
|
|
|
public void acceptMessage(Date time, OSCMessage message) {
|
|
|
|
if (message.getArguments().length == 1) {
|
2014-04-18 01:06:41 +00:00
|
|
|
totalMessageCount++;
|
2014-04-17 09:25:14 +00:00
|
|
|
actorDisplay.setTemperature(message.getArguments()[0].toString());
|
|
|
|
}
|
|
|
|
}
|
|
|
|
});
|
2014-04-17 15:27:19 +00:00
|
|
|
|
|
|
|
osCclient.addListener("/" + actor.toLowerCase() + "/airFlow", new OSCListener() {
|
|
|
|
@Override
|
|
|
|
public void acceptMessage(Date time, OSCMessage message) {
|
|
|
|
if (message.getArguments().length == 1) {
|
2014-04-18 01:06:41 +00:00
|
|
|
totalMessageCount++;
|
2014-04-17 15:27:19 +00:00
|
|
|
actorDisplay.setBreath(message.getArguments()[0].toString());
|
|
|
|
}
|
|
|
|
}
|
|
|
|
});
|
2014-04-17 09:25:14 +00:00
|
|
|
|
2014-05-03 09:46:11 +00:00
|
|
|
pulse.addObserver(new Observer() {
|
|
|
|
@Override
|
|
|
|
public void update(Observable o, Object arg) {
|
|
|
|
if(arg instanceof PulseData) {
|
|
|
|
final PulseData data = (PulseData)arg;
|
|
|
|
osCclient.sendPulse(actor, data.getHeartbeat(), data.getPulse(), data.getOxygen());
|
2014-04-17 09:25:14 +00:00
|
|
|
}
|
2014-05-03 09:46:11 +00:00
|
|
|
}
|
|
|
|
});
|
|
|
|
}
|
2014-04-17 09:25:14 +00:00
|
|
|
|
|
|
|
|
|
|
|
|
2014-10-27 21:04:11 +00:00
|
|
|
|
2014-04-17 09:25:14 +00:00
|
|
|
}
|