package javax.safetycritical.test.cyclic;
import javax.realtime.AbsoluteTime;
import javax.realtime.Clock;
import javax.realtime.PeriodicParameters;
import javax.realtime.PriorityParameters;
import javax.safetycritical.Mission;
import javax.safetycritical.PeriodicEventHandler;
import javax.safetycritical.StorageParameters;
public class PeriodicEvhStub extends PeriodicEventHandler
{
int number;
int count = 0;
protected PeriodicEvhStub (PriorityParameters priority,
PeriodicParameters periodic,
StorageParameters storage,
int number)
{
super(priority, periodic, storage);
this.number = number;
}
public void handleAsyncEvent()
{
count++;
TestCyclicExecutive.timeRecord[TestCyclicExecutive.idx++] = getCurrentTimeInNano();
System.out.println("Periodic pevh" + number);
// testing one cycle only:
if (number == 6 && count == 2)
Mission.getMission().requestTermination();
}
private long getCurrentTimeInNano()
{
AbsoluteTime time = Clock.getRealtimeClock().getTime();
long nanos = time.getMilliseconds() * 1000000 + time.getNanoseconds();
if (nanos < 0)
nanos = Long.MAX_VALUE;
System.out.println("getCurrentTimeInNano: " + nanos);
return nanos;
}
}