/**
* This file is part of miniCDx benchmark of oSCJ.
*
* miniCDx is free software: you can redistribute it and/or modify
* it under the terms of the GNU Lesser General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* miniCDx is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License
* along with miniCDx. If not, see <http://www.gnu.org/licenses/>.
*
*
* Copyright 2009, 2010
* @authors Daniel Tang, Ales Plsek
*
* See: http://sss.cs.purdue.edu/projects/oscj/
*/
package minicdj.simulator.immortal;
/*@javax.safetycritical.annotate.Scope("immortal")*/
public abstract class PrecompiledSimulator {
public static void dumpStats() {}
protected Object[] positions;
protected Object[] lengths;
protected Object[] callsigns;
// args .. ignored
public static void generate(final String[] args) {
(new Simulator()).generate();
}
public void generate() {
/*
synchronized (ImmortalEntry.initMonitor) {
/* if (!immortal.Constants.PRESIMULATE) {
ImmortalEntry.simulatorReady = true;
ImmortalEntry.initMonitor.notifyAll();
}
while (!ImmortalEntry.detectorReady) {
try {
ImmortalEntry.initMonitor.wait();
} catch (InterruptedException e) {
}
} */
/*}
if (positions.length < immortal.Constants.MAX_FRAMES) {
throw new RuntimeException("Not enough frames in pre-compiled simulator.");
}
for(int frameIndex=0; frameIndex<immortal.Constants.MAX_FRAMES;frameIndex++) {
immortal.ImmortalEntry.frameBuffer.putFrame( (float[])positions[frameIndex],
(int[])lengths[frameIndex],
(byte[])callsigns[frameIndex]);
}
//devices.Console.println("Generated "+immortal.Constants.MAX_FRAMES+" frames.");
/* if (immortal.Constants.PRESIMULATE) {
synchronized (ImmortalEntry.initMonitor) {
ImmortalEntry.simulatorReady = true;
ImmortalEntry.initMonitor.notifyAll();
}
} */
}
}