/*
* 作成日: 2009/03/19
*/
package jp.ac.fit.asura.nao.naoji;
import jp.ac.fit.asura.nao.AsuraCore;
import jp.ac.fit.asura.nao.glue.SchemeGlue;
import jp.ac.fit.asura.nao.naoji.NaojiDriver.NaojiEffector;
import jp.ac.fit.asura.nao.naoji.NaojiDriver.NaojiSensor;
import jp.ac.fit.asura.naoji.Naoji;
import jp.ac.fit.asura.naoji.NaojiContext;
import jp.ac.fit.asura.naoji.NaojiFactory;
import org.apache.log4j.Logger;
/**
*
* Naoji用のbootstrapクラス.
*
* @author $Author: sey $
*
* @version $Id: $
*
*/
public class NaojiPlayer implements Naoji {
public static class Factory implements NaojiFactory {
public Naoji create() {
return new NaojiPlayer();
}
}
private static final Logger log = Logger.getLogger(NaojiPlayer.class);
private AsuraCore core;
private boolean isValid;
public synchronized void init(NaojiContext arg0) {
isValid = true;
NaojiDriver driver = new NaojiDriver(arg0);
NaojiSensor sensor = driver.new NaojiSensor();
NaojiEffector effector = driver.new NaojiEffector();
NaojiCamera camera = new NaojiCamera("/dev/video0", "/dev/i2c-0");
DatagramSocketService dss = new DatagramSocketService();
core = new AsuraCore(effector, sensor, dss, camera);
log.info("NaojiPlayer init.");
try {
core.init();
SchemeGlue glue = core.getRobotContext().getGlue();
glue.setValue("naoji", arg0);
glue.setValue("jalmotion", driver.motion);
glue.setValue("jalmemory", driver.memory);
} catch (Throwable e) {
log.fatal("Initialization failed.", e);
isValid = false;
assert false;
}
}
public void start() {
// not implemented.
log.info("NaojiPlayer start.");
if (!isValid) {
log.warn("NaojiPlayer is invalid.");
return;
}
try {
core.start();
} catch (Throwable e) {
log.fatal("Start failed.", e);
isValid = false;
assert false;
}
if (!isValid) {
log.warn("NaojiPlayer is invalid.");
return;
}
}
public void stop() {
log.info("NaojiPlayer stop.");
if (!isValid) {
log.warn("NaojiPlayer is invalid.");
return;
}
try {
core.stop();
} catch (Exception e) {
log.error("", e);
}
core.getRobotContext().getEffector().setPower(0.0f);
}
public synchronized void exit() {
log.info("NaojiPlayer exit.");
// core.exit();
}
}