package csp.scj.watchdog;
import javax.safetycritical.ManagedMemory;
import javax.safetycritical.Mission;
import javax.safetycritical.annotate.Level;
import javax.safetycritical.annotate.SCJAllowed;
import csp.Constants;
import csp.ImmortalEntry;
import csp.InterruptTask;
import csp.PollingTask;
public class WatchDogMission extends Mission {
@Override
protected void initialize() {
// Watchdog task
WatchdogHandler WD = new WatchdogHandler(Constants.WD_TIMEOUT, ImmortalEntry.slaves);
WD.register();
if (Constants.POLLED_MODE) {
// Polling task
PollingTask PT = new PollingTask();
PT.register();
} else {
// Interrupt task
// int 1 = i2c_a
// int 2 = i2c_b
InterruptTask IT = new InterruptTask();
IT.register(2);
}
ImmortalEntry.log.addEvent("Buff. Pool: "
+ ImmortalEntry.bufferPool.getOccupancy());
}
@Override
public long missionMemorySize() {
// TODO Auto-generated method stub
return 0;
}
@Override
@SCJAllowed(Level.SUPPORT)
protected void cleanUp() {
dumpLog();
}
private void dumpLog() {
// ImmortalEntry.dumpLog.selector = 0;
// for (int i = 0; i < ImmortalEntry.eventsLogged; i++) {
// ImmortalEntry.dumpLog.logEntry = i;
// ManagedMemory.enterPrivateMemory(1500, ImmortalEntry.dumpLog);
// }
ImmortalEntry.dumpLog.selector = 1;
for (int i = 0; i < ImmortalEntry.slaves.length; i++) {
ImmortalEntry.dumpLog.logEntry = i;
ManagedMemory.enterPrivateMemory(1500, ImmortalEntry.dumpLog);
}
}
}