Skip to content

Releases: eclipse-keypop/keypop-storagecard-java-api

1.2.0

Choose a tag to compare

@andrei-cristea andrei-cristea released this 18 Mar 13:58
752b772

Added

  • System block management: New method to read system blocks during selection for compatible storage card types:
    • StorageCardSelectionExtension.prepareSt25ReadSystemBlock() method.

1.1.1

Choose a tag to compare

@andrei-cristea andrei-cristea released this 20 Feb 08:00

Removed

  • Removed SLF4J useless dependency

1.1.0

Choose a tag to compare

@jeanpierrefortune jeanpierrefortune released this 06 Feb 09:30
5d4ccbb

Added

  • Mifare Classic support: New product types MIFARE_CLASSIC_1K and MIFARE_CLASSIC_4K in ProductType enum to support NXP Mifare Classic 1K (64 blocks) and 4K (256 blocks) cards.
  • Authentication capability: New ProductType.hasAuthentication() method to indicate whether a storage card requires authentication before read/write operations.
  • Mifare Classic key types: New MifareClassicKeyType enum with KEY_A and KEY_B constants for Mifare Classic authentication.
  • Authentication methods: New authentication methods for Mifare Classic cards:
    • StorageCardSelectionExtension.prepareMifareClassicAuthenticate(int blockAddress, MifareClassicKeyType, byte[] key)
    • StorageCardSelectionExtension.prepareMifareClassicAuthenticate(int blockAddress, MifareClassicKeyType, int keyNumber)
    • StorageCardTransactionManager.prepareMifareClassicAuthenticate(int blockAddress, MifareClassicKeyType, byte[] key)
    • StorageCardTransactionManager.prepareMifareClassicAuthenticate(int blockAddress, MifareClassicKeyType, int keyNumber)
  • Authentication exception: New SCAuthenticationFailedException for handling Mifare Classic
    authentication failures.
  • ST25-specific system block methods: New dedicated methods for ST25/SRT512 system block access:
    • StorageCardTransactionManager.prepareSt25ReadSystemBlock()
    • StorageCardTransactionManager.prepareSt25WriteSystemBlock(byte[] data)

Changed

  • System block documentation: Enhanced StorageCard.getSystemBlock() documentation to clarify it is specific to ST25/SRT512 cards.

Deprecated

  • StorageCardTransactionManager.prepareReadSystemBlock() - Use prepareSt25ReadSystemBlock() instead.
  • StorageCardTransactionManager.prepareWriteSystemBlock(byte[]) - Use prepareSt25WriteSystemBlock(byte[]) instead.

1.0.0

Choose a tag to compare

@andrei-cristea andrei-cristea released this 21 Nov 09:51

Changed

  • Exception hierarchy refactoring: StorageCardException transformed from abstract class to interface.
  • Exception inheritance: All storage card exceptions now extend corresponding keypop-reader-java-api exceptions:
    • SCReaderCommunicationException extends ReaderCommunicationException and implements StorageCardException.
    • SCCardCommunicationException extends CardCommunicationException and implements StorageCardException.
    • SCInvalidCardResponseException extends InvalidCardResponseException and implements StorageCardException.
  • Transaction manager hierarchy: StorageCardTransactionManager now extends CardTransactionManager from keypop-reader-java-api, inheriting the processCommands() method.

Removed

  • Channel control: Removed ChannelControl enum, now managed by parent CardTransactionManager interface.

Upgraded

  • Keypop Reader API 2.0.1 -> 2.1.0

0.3.0

Choose a tag to compare

@jeanpierrefortune jeanpierrefortune released this 21 Jul 15:40

Added

  • Exception hierarchy: New base class StorageCardException with block address context support:
    • StorageCardException.getBlockAddress() method to retrieve the block address involved in errors.
  • Enhanced exception handling: All storage card exceptions now extend StorageCardException and include block address context:
    • CardIOException constructor now accepts blockAddress parameter.
    • ReaderIOException constructor now accepts blockAddress parameter.
    • UnexpectedCommandStatusException constructor now accepts blockAddress parameter.
  • Product type capability:
    New ProductType.hasWriteAcknowledgment() method to indicate whether a storage card provides a reliable acknowledgment after write operations.

Changed

  • Write operation behavior: API contract updated for prepareWriteBlocks() method regarding verification reads:
    • The API now specifies that implementations must handle verification reads transparently for storage cards without reliable write acknowledgment (e.g., SRT512/ST25).
    • For cards with reliable write acknowledgment, no additional reads are required by the implementation.
    • Applications can now rely on the API contract that data integrity is guaranteed without explicitly performing verification reads.

Removed

  • Deprecated exception: Removed InconsistentDataException class as it's no longer needed with the new exception hierarchy.

0.2.0

Choose a tag to compare

@jeanpierrefortune jeanpierrefortune released this 27 Jun 13:47

Added

  • System block management: New methods to handle system blocks for compatible storage card types:
    • StorageCardTransactionManager.prepareReadSystemBlock() method.
    • StorageCardTransactionManager.prepareWriteSystemBlock(byte[] data) method.
    • StorageCard.getSystemBlock() method.
    • ProductType.hasSystemBlock() method to indicate system block support by card type.

Changed

  • Parameter naming consistency across all APIs: renamed from blockNumber to blockAddress:
    • StorageCardTransactionManager.prepareReadBlock(int blockAddress) method.
    • StorageCardTransactionManager.prepareReadBlocks(int fromBlockAddress, int toBlockAddress) method.
    • StorageCardTransactionManager.prepareWriteBlocks(int fromBlockAddress, byte[] data) method.
    • StorageCardSelectionExtension.prepareReadBlock(int blockAddress) method.
    • StorageCardSelectionExtension.prepareReadBlocks(int fromBlockAddress, int toBlockAddress) method.
    • StorageCard.getBlock(int blockAddress) method.
    • StorageCard.getBlocks(int fromBlockAddress, int toBlockAddress) method.
  • Documentation improvements:
    • Clarified that block addresses start at 0 and maximum value is getBlockCount() - 1.
    • Enhanced documentation for zero-filled behavior when blocks haven't been read.
    • Fixed incorrect reference from ProductType.getBlockCount() to ProductType.getBlockSize() in write methods.
  • Write operation behavior: Write commands no longer automatically update the StorageCard memory image due to storage card technology limitations. Applications must perform explicit read operations after writes to verify actual card content.

0.1.0

Choose a tag to compare

@jeanpierrefortune jeanpierrefortune released this 25 Jun 13:26
4aae235

This is the initial release.