193 lines
6.7 KiB
Java
193 lines
6.7 KiB
Java
package de.psychose;
|
|
|
|
import com.illposed.osc.OSCListener;
|
|
import com.illposed.osc.OSCMessage;
|
|
|
|
import javax.swing.*;
|
|
import java.awt.event.WindowAdapter;
|
|
import java.awt.event.WindowEvent;
|
|
import java.net.SocketException;
|
|
import java.net.UnknownHostException;
|
|
import java.util.Date;
|
|
|
|
/**
|
|
* @author: lucas
|
|
* @date: 25.04.14 00:23
|
|
*/
|
|
public class Main {
|
|
private ChaOSCclient chaOSCclient;
|
|
private ControlForm controlForm;
|
|
private MainForm mainForm;
|
|
|
|
private int totalMessageCount = 0;
|
|
private int messagesTempCounter = 0;
|
|
|
|
private long totalTraffic = 0;
|
|
private long lastTraffic = 0;
|
|
|
|
private final ActorData actorData1 = new ActorData();
|
|
private final ActorData actorData2 = new ActorData();
|
|
private final ActorData actorData3 = new ActorData();
|
|
|
|
|
|
public static void main(String[] args) {
|
|
new Main();
|
|
}
|
|
|
|
public Main() {
|
|
try {
|
|
UIManager.setLookAndFeel("com.sun.java.swing.plaf.gtk.GTKLookAndFeel");
|
|
} catch (Exception e) {
|
|
e.printStackTrace();
|
|
}
|
|
|
|
try {
|
|
this.chaOSCclient = new ChaOSCclient("chaosc", 7110);
|
|
this.controlForm = new ControlForm(chaOSCclient, actorData1, actorData2, actorData3);
|
|
|
|
final JFrame cframe = new JFrame("HD Control");
|
|
cframe.setContentPane(controlForm.getMainPanel());
|
|
cframe.setResizable(false);
|
|
cframe.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
|
|
cframe.pack();
|
|
|
|
|
|
this.mainForm = new MainForm(actorData1, actorData2, actorData3);
|
|
final JFrame frame = new JFrame("HD Main");
|
|
frame.setContentPane(mainForm.getMainPanel());
|
|
frame.setResizable(false);
|
|
frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
|
|
// frame.setExtendedState(JFrame.MAXIMIZED_BOTH);
|
|
frame.setUndecorated(true);
|
|
frame.pack();
|
|
|
|
frame.addWindowListener(new WindowAdapter() {
|
|
@Override
|
|
public void windowClosing(WindowEvent e) {
|
|
chaOSCclient.stopReceiver();
|
|
// snmp.stopRunning();
|
|
super.windowClosing(e);
|
|
}
|
|
});
|
|
|
|
|
|
addActor("merle", actorData1);
|
|
addActor("uwe", actorData2);
|
|
addActor("bjoern", actorData3);
|
|
|
|
cframe.setVisible(true);
|
|
frame.setVisible(true);
|
|
|
|
chaOSCclient.startReceiver();
|
|
|
|
} catch (UnknownHostException | SocketException e) {
|
|
e.printStackTrace();
|
|
}
|
|
|
|
}
|
|
|
|
private void addActor(final String actor, final ActorData actorData) {
|
|
|
|
chaOSCclient.addListener("/" + actor.toLowerCase() + "/heartbeat", new OSCListener() {
|
|
@Override
|
|
public void acceptMessage(Date time, OSCMessage message) {
|
|
if (message.getArguments().length == 3) {
|
|
totalMessageCount++;
|
|
|
|
if (message.getArguments()[1] instanceof Integer) {
|
|
int pulse = (int) (message.getArguments()[1]);
|
|
|
|
if (pulse > 60) { // try to skip the invalid pulserate from device
|
|
|
|
// set the heartrate
|
|
actorData.getPulseData().setPulse((int) (message.getArguments()[1]));
|
|
|
|
// set the beat ( 0 or 1 )
|
|
if (message.getArguments()[0] instanceof Integer) {
|
|
actorData.getPulseData().setHeartbeat((int) (message.getArguments()[0]));
|
|
}
|
|
|
|
//TODO: remove this, its for testing without tommy only
|
|
actorData.setTommyHeartbeat(((int) message.getArguments()[0]) == 1);
|
|
|
|
// set the oxy level
|
|
if (message.getArguments()[2] instanceof Integer) {
|
|
actorData.getPulseData().setOxygen((int) (message.getArguments()[2]));
|
|
}
|
|
|
|
actorData.setTimestampPulse();
|
|
}
|
|
}
|
|
}
|
|
}
|
|
});
|
|
|
|
chaOSCclient.addListener("/" + actor.toLowerCase() + "/ekg", new OSCListener() {
|
|
@Override
|
|
public void acceptMessage(Date time, OSCMessage message) {
|
|
if (message.getArguments().length == 1) {
|
|
totalMessageCount++;
|
|
|
|
if (message.getArguments()[0] instanceof Integer) {
|
|
actorData.setEkg((int) (message.getArguments()[0]));
|
|
}
|
|
}
|
|
}
|
|
});
|
|
|
|
chaOSCclient.addListener("/" + actor.toLowerCase() + "/emg", new OSCListener() {
|
|
@Override
|
|
public void acceptMessage(Date time, OSCMessage message) {
|
|
if (message.getArguments().length == 1) {
|
|
totalMessageCount++;
|
|
|
|
if (message.getArguments()[0] instanceof Integer) {
|
|
actorData.setEmg((int) (message.getArguments()[0]));
|
|
}
|
|
}
|
|
}
|
|
});
|
|
|
|
chaOSCclient.addListener("/" + actor.toLowerCase() + "/temperatur", new OSCListener() {
|
|
@Override
|
|
public void acceptMessage(Date time, OSCMessage message) {
|
|
if (message.getArguments().length == 1) {
|
|
totalMessageCount++;
|
|
|
|
if (message.getArguments()[0] instanceof Float) {
|
|
actorData.setTemperature((float) (message.getArguments()[0]));
|
|
}
|
|
}
|
|
}
|
|
});
|
|
|
|
chaOSCclient.addListener("/" + actor.toLowerCase() + "/airFlow", new OSCListener() {
|
|
@Override
|
|
public void acceptMessage(Date time, OSCMessage message) {
|
|
if (message.getArguments().length == 1) {
|
|
totalMessageCount++;
|
|
|
|
if (message.getArguments()[0] instanceof Integer) {
|
|
actorData.setAirflow((int) (message.getArguments()[0]));
|
|
}
|
|
}
|
|
}
|
|
});
|
|
|
|
chaOSCclient.addListener("/" + actor.toLowerCase() + "/tommypuls", new OSCListener() {
|
|
@Override
|
|
public void acceptMessage(Date time, OSCMessage message) {
|
|
if (message.getArguments().length == 1) {
|
|
totalMessageCount++;
|
|
|
|
if (message.getArguments()[0] instanceof Integer) {
|
|
actorData.setTommyHeartbeat((boolean) (message.getArguments()[0]));
|
|
}
|
|
//TODO: evtl muss das oben hier noch anders
|
|
}
|
|
}
|
|
});
|
|
|
|
}
|
|
}
|