package org.kevoree.library.javase.kinect;
import org.kevoree.annotation.*;
import org.kevoree.framework.AbstractComponentType;
import org.kevoree.framework.MessagePort;
import org.kevoree.framework.message.StdKevoreeMessage;
import org.kevoree.library.javase.kinect.tester.KinectReconfigurationTester;
/**
* User: Erwan Daubert - erwan.daubert@gmail.com
* Date: 24/01/12
* Time: 14:45
*
* @author Erwan Daubert
* @version 1.0
*/
@Library(name = "JavaSE")
@ComponentType
@Provides({
@ProvidedPort(name = "motion", type = PortType.MESSAGE)
})
@Requires({
@RequiredPort(name = "start_scan", type = PortType.MESSAGE),
@RequiredPort(name = "stop_scan", type = PortType.MESSAGE),
@RequiredPort(name = "motor", type = PortType.MESSAGE, optional = true)
})
public class KinectTester extends AbstractComponentType {
@Start
@Stop
public void emptyMethod () {
}
private boolean ok = true;
@Port(name = "motion")
public void motion (Object message) {
System.out.println("\n\n\n\n\t\t\t" + message + "\n\n\n");
/*if (i == 0) {
i++;*/
if (ok) {
ok = false;
new Thread() {
@Override
public void run () {
try {
// reconfigure using kev script to unbind all motor event sender on the kinect
// reconfigure using kev script to bind our motor port to the motor of the kinect
String[] previouslyBounds = KinectReconfigurationTester
.bind(getModelService().getLastModel(), getKevScriptEngineFactory(),
KinectTester.this.getName(),
getNodeName());
// send start_scan even
if (isPortBinded("start_scan")) {
getPortByName("start_scan", MessagePort.class).process("start_scan");
}
Thread.sleep(2000);
// starting to send motor event to scan from bottom to top
if (isPortBinded("motor")) {
StdKevoreeMessage msg = new StdKevoreeMessage();
msg.putValue("percent", new Integer(0));
getPortByName("motor", MessagePort.class).process(msg);
Thread.sleep(2000);
msg = new StdKevoreeMessage();
msg.putValue("percent", new Integer(100));
getPortByName("motor", MessagePort.class).process(msg);
}
Thread.sleep(3000);
// send stop_scan event
if (isPortBinded("stop_scan")) {
getPortByName("stop_scan", MessagePort.class).process("stop_scan");
}
// reconfigure using kev script to bind all motor event sender on the kinect
// reconfigure using kev script to unbind our motor port to the motor of the kinect
KinectReconfigurationTester
.unbind(getModelService().getLastModel(), getKevScriptEngineFactory(),
KinectTester.this.getName(), getNodeName(), previouslyBounds);
// }
} catch (Exception e) {
e.printStackTrace();
}
ok = true;
}
}.start();
}
}
}