package ptolemy.apps.apes.demo.OneCTaskOnePlant;
import java.util.List;
import ptolemy.actor.IOPort;
import ptolemy.actor.NoRoomException;
import ptolemy.apps.apes.CTask;
import ptolemy.data.DoubleToken;
import ptolemy.data.IntToken;
import ptolemy.data.Token;
import ptolemy.kernel.CompositeEntity;
import ptolemy.kernel.util.IllegalActionException;
import ptolemy.kernel.util.NameDuplicationException;
import ptolemy.kernel.util.Workspace;
public class Task extends CTask {
public Task() throws IllegalActionException, NameDuplicationException {
super();
}
public Task(Workspace workspace) throws IllegalActionException, NameDuplicationException {
super(workspace);
}
public Task(CompositeEntity container, String name)
throws IllegalActionException, NameDuplicationException {
super(container, name);
}
public native void setLower(double lower);
public native void setUpper(double upper);
@Override
public boolean prefire() throws IllegalActionException {
for (IOPort port : (List<IOPort>)inputPortList()) {
if (port.getName().equals("lower")) {
for (int i = 0; i < port.getWidth(); i++) {
while (port.hasToken(i)) {
IntToken t = (IntToken) port.get(0);
setLower(t.doubleValue());
}
}
} else if (port.getName().equals("upper")) {
for (int i = 0; i < port.getWidth(); i++) {
while (port.hasToken(i)) {
DoubleToken t = (DoubleToken) port.get(0);
setUpper(t.doubleValue());
}
}
}
}
return super.prefire();
}
private native void CMethod();
protected void _callCMethod() {
System.out.println(this.getName() + "._callCMethod()");
CMethod();
}
public void accessPointCallback(double extime, double minNextTime) throws NoRoomException,
IllegalActionException {
// TODO Auto-generated method stub
super.accessPointCallback(extime, minNextTime);
}
public int activateTask(int taskId) throws NoRoomException, IllegalActionException {
return cpuScheduler.activateTask(taskId);
}
public void terminateTask() throws NoRoomException, IllegalActionException {
cpuScheduler.terminateTask();
}
public void setOutputPort(String varName, double value) throws NoRoomException, IllegalActionException {
((IOPort)outputPortList().get(1)).send(0, new DoubleToken(value));
}
}