/************************************************************************** * File name : Safelet.java * * This file is part a SCJ Level 0 and Level 1 implementation, * based on SCJ Draft, Version 0.94 25 June 2013. * * It 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. * * This SCJ Level 0 and Level 1 implementation 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 this SCJ Level 0 and Level 1 implementation. * If not, see <http://www.gnu.org/licenses/>. * * Copyright 2012 * @authors Anders P. Ravn, Aalborg University, DK * Stephan E. Korsholm and Hans Søndergaard, * VIA University College, DK *************************************************************************/ package javax.safetycritical; import javax.realtime.MemoryArea; import javax.safetycritical.annotate.Level; import javax.safetycritical.annotate.Phase; import javax.safetycritical.annotate.SCJAllowed; import javax.safetycritical.annotate.SCJRestricted; /** * A safety-critical application consists of one or more missions, executed * concurrently or in sequence. Every safety-critical application is * represented by an implementation of <code>Safelet</code> which identifies * the outer-most <code>MissionSequencer</code>. * This outer-most <code>MissionSequencer</code> takes responsibility for * running the sequence of missions that comprise this safety-critical application. * * @version 1.2; - December 2013 * * @author Anders P. Ravn, Aalborg University, * <A HREF="mailto:apr@cs.aau.dk">apr@cs.aau.dk</A>, <br> * Hans Søndergaard, VIA University College, Denmark, * <A HREF="mailto:hso@viauc.dk">hso@via.dk</A> */ @SuppressWarnings("unused") @SCJAllowed(Level.SUPPORT) @SCJRestricted(Phase.INITIALIZE) public interface Safelet<MissionType extends Mission> { /** * The infrastructure invokes <code>getSequencer</code> to obtain the * <code>MissionSequencer</code> object that oversees execution of missions * for this application. The returned sequencer must reside in immortal memory. * * @return The <code>MissionSequencer</code> responsible for selecting * the sequence of <code>Mission</code>s that represent this safety-critical * application. */ @SCJAllowed(Level.SUPPORT) @SCJRestricted(Phase.INITIALIZE) public MissionSequencer<MissionType> getSequencer(); /** * @return the amount of immortal memory that must be available for * allocations to be performed by this application. */ @SCJAllowed(Level.SUPPORT) public long immortalMemorySize(); @SCJAllowed(Level.SUPPORT) @SCJRestricted(Phase.INITIALIZE) public void initializeApplication(); }