uicc.suspendresume

## Interface SuspendMechanism

-     public interface SuspendMechanism

  Provides callbacks to applet to behave with suspension mechanism. The interface `uicc.suspendresume.SuspendMechanism` provides a callback interface for applets to be notified by the UICC Runtime Environment about suspension operations. An applet Class (which extends the `javacard.framework.Applet` class) must implement this interface if their instances needs to be involved for suspension and resume operations.

- - ### Method Summary

    All Methods Instance Methods Abstract Methods
    Modifier and Type | Method and Description
    --- | ---
    `void` | `resumeIndication()` This method is called by the UICC runtime environment to inform the applet that a resume operation will be done.
    `void` | `suspendOperation(byte newMaxTimeUnit, short newMaxTimeValue)` This method is called by the UICC runtime environment to inform the applet that a suspend operation has been accepted with a maximum suspension time interval.
    `short` | `suspendRequest(byte minTimeUnit, short minTimeValue, byte maxTimeUnit, short maxTimeValue)` This method is called by the UICC runtime environment to inform the applet that a suspend operation has been requested with a proposed suspension time interval.

- - ### Method Detail

    - #### suspendRequest

          short suspendRequest(byte minTimeUnit,
                               short minTimeValue,
                               byte maxTimeUnit,
                               short maxTimeValue)

      This method is called by the UICC runtime environment to inform the applet that a suspend operation has been requested with a proposed suspension time interval.

      The applet should, within this method, check if the minimum time proposed is acceptable, meaning lower than the maximum suspension time acceptable for the applet. If the minimum time does not exceed the acceptable suspension time for the applet, the applet should return the maximum acceptable suspension time in the proposed range or reject the request.
      If the applet returns a higher suspension time than proposed by the terminal, this value will be ignored by the UICC Runtime environment. If the applet returns a value below the proposed minimal, an invalid time unit or raise an exception, the UICC Runtime Environment shall then reject the suspension.

      This method is executed in the context of the active applet instance as the currently selected applet instance.

      Note:

      - As the UICC Runtime Environment may reject the suspension, the applet should not perform any action based on the assumption that the supension will succeed.
      - If the applet accepts the suspension, it is allowed to use any time unit constant defined in `SuspendConstants` interface.
      Parameters:
        `minTimeUnit` - proposed minimum time unit.
        `minTimeValue` - proposed minimum time value.
        `maxTimeUnit` - proposed maximum time unit.
        `maxTimeValue` - proposed maximum time value.
      Returns:
        - `SUSPEND_REQUEST_REJECTED` to reject the request or,
        - Maximum acceptable time to accept the request encoded as:
          - In MSB byte: the maximum acceptable time unit selected from the predefined constants in ``SuspendConstants`` interface
          - In LSB byte: the maximum acceptable time value as un unsigned byte.

    - #### suspendOperation

          void suspendOperation(byte newMaxTimeUnit,
                                short newMaxTimeValue)

      This method is called by the UICC runtime environment to inform the applet that a suspend operation has been accepted with a maximum suspension time interval. Applet should, within this method, proceed with all their necessary operation for suspension.

      This method is executed in the context of the active applet instance as the currently selected applet instance.

      Note:

      - Exceptions thrown by this method are caught by the UICC runtime environment and ignored.
      - The applet should be prepared that a subsequent resume operation may not follow. Instead an invocation in another card session may occur without previous resume operation.
      Parameters:
        `newMaxTimeUnit` - new maximum interval time unit.
        `newMaxTimeValue` - new maximum interval time value.

    - #### resumeIndication

          void resumeIndication()

      This method is called by the UICC runtime environment to inform the applet that a resume operation will be done. The applet should proceed with all its necessary operations for a proper resume process.

      This method is executed in the context of the active applet instance as the currently selected applet instance.

      Note:

      - Exceptions thrown by this method are caught by the UICC runtime environment and ignored.

Copyright © 2017 ETSI All Rights Reserved.