Package javacardx.external
Class Memory
- java.lang.Object
-
- javacardx.external.Memory
-
public final class Memory extends Object
This class provides access to memory subsystems that are not directly addressable, typically that of other contactless state machine handlers such as MifareTM. This class could also be used to access specialized memory spaces such as that of a mass storage device.- Since:
- 2.2.2
-
-
Field Summary
Fields Modifier and Type Field Description static byte
MEMORY_TYPE_EXTENDED_STORE
Extended Memory Store type constant.static byte
MEMORY_TYPE_MIFARE
MIFARETM memory type constant.
-
Method Summary
All Methods Static Methods Concrete Methods Modifier and Type Method Description static MemoryAccess
getMemoryAccessInstance(byte memoryType, short[] memorySize, short memorySizeOffset)
Creates aMemoryAccess
object instance for the selected memory subsystem.
-
-
-
Field Detail
-
MEMORY_TYPE_MIFARE
public static final byte MEMORY_TYPE_MIFARE
MIFARETM memory type constant. When aMemoryAccess
instance of this type is requested, thememorySize
andmemorySizeOffset
parameters are ignored.To use the
MemoryAccess
instance the following parameters are applicable :- auth_key is an 8 byte password, other_len <=16
- other_sector = 0, 0<= other_block <= 63 for MIFARE 1K chip and 0<= other_block <= 255 for MIFARE 4K chip
- security related errors return 0 on readData
- security related errors return false on writeData
Note:
- The actual external memory device servicing this memory type maybe a MIFARE 1K chip or a MIFARE 4K chip.
- See Also:
- Constant Field Values
-
MEMORY_TYPE_EXTENDED_STORE
public static final byte MEMORY_TYPE_EXTENDED_STORE
Extended Memory Store type constant. When aMemoryAccess
instance of this type is requested, thememorySize
parameter contains the 32 bit number representing the size in bytes of the memory access required and must be a positive number less than or equal to2,147,483,647 (2^31 - 1)
.To use the
MemoryAccess
instance the following parameters are applicable.- auth_key parameter is not required; it is ignored
- other_len <= 32767
- (other_sector, other_block) concatenated is a 32 bit address
Note.
- To ensure optimal performance on all mass storage memory types when accessing different areas of memory, use monotonically increasing addresses.
- Each time the
getMemoryAccessInstance
method is called with this memory type parameter, a new memory access object to access a distinct memory chunk is returned. A previously obtained memory access object cannot be used to access the memory chunk obtained via this new memory access object. The new memory access object cannot be used to access the memory chuck accessible via any previously allocated memory access object.
- See Also:
- Constant Field Values
-
-
Method Detail
-
getMemoryAccessInstance
public static final MemoryAccess getMemoryAccessInstance(byte memoryType, short[] memorySize, short memorySizeOffset) throws ExternalException
Creates aMemoryAccess
object instance for the selected memory subsystem.- Parameters:
memoryType
- the desired external memory subsystem. Valid codes listed inMEMORY_TYPE_*
constants above, for exampleMEMORY_TYPE_MIFARE
.memorySize
- the array containing the desired size in bytes, if applicable, in the external memory subsystem. Check the descriptions of the MEMORY_TYPE_* constants above for more details. The 32 bit number representing the memory size in bytes is formed by concatenating the two short values at offsetmemorySizeOffset
(most significant 16 bits) andmemorySizeOffset+1
(least significant 16 bits) in this arraymemorySizeOffset
- the offset within thememorySize
array where the 32 bit memory size number in bytes is specified- Returns:
- the
MemoryAccess
object instance of the requested memory subsystem - Throws:
ExternalException
- with the following reason codes:ExternalException.NO_SUCH_SUBSYSTEM
if the requested memory subsystem is not available.ExternalException.INVALID_PARAM
if thememorySize
parameter is invalid.
-
-