/**************************************************************************
* File name : ReleaseParameters.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.realtime;
import javax.safetycritical.annotate.Level;
import javax.safetycritical.annotate.SCJAllowed;
/**
* All schedulability analysis of safety critical software is performed off line. <br>
* Although the RTSJ allows on-line schedulability analysis, SCJ assumes any such analysis is
* performed off line and that the on-line environment is predictable. Consequently,
* the assumption is that deadlines are not missed. <br>
* However, to facilitate fault-tolerant applications, SCJ does support
* a deadline miss detection facility at Levels 1 and 2. <br>
* SCJ provides no direct mechanisms for coping with cost overruns. <p>
* The <code>ReleaseParameters</code> class is restricted so that the parameters cannot be changed or queried.
*
* @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>
*
* @scjComment
*/
@SCJAllowed
public abstract class ReleaseParameters implements Cloneable {
RelativeTime deadline;
AsyncEventHandler missHandler;
/**
* Constructs an object which has no deadline checking facility. <br>
* There is no default for deadline in this class.
* The default is set by the subclasses.
*/
protected ReleaseParameters() {
}
/**
* Constructs an object.
* @param deadline is the deadline to be checked. It is cloned to become immutable.
* @param missHandler is the event handler to be released if the deadline is missed.
*/
@SCJAllowed(Level.LEVEL_1)
protected ReleaseParameters(RelativeTime deadline,
AsyncEventHandler missHandler) {
this.deadline = (deadline == null ? null : new RelativeTime(deadline));
this.missHandler = missHandler;
}
public Object clone() throws CloneNotSupportedException {
ReleaseParameters clone = (ReleaseParameters) super.clone();
return clone;
}
// Used in JML annotations; also used in JML annotations in CyclicExecutive
RelativeTime getDeadline() {
return deadline;
}
// Used in JML annotations
AsyncEventHandler getMissHandler() // /*@ spec_public @*/
{
return missHandler;
}
}