Additional ‘Reader Plugins’ provided by CNA
The Keyple project already hosts several plugins for interfacing with “standard” smartcard reader solutions (PC/SC, Android NFC / OMAPI), or for emulating readers.
In addition, CNA has released the following plugins under the Eclipse Public License version 2 to illustrate further integration patterns:
- When the native library of a reader solution is publicly available, the plugin can be compiled autonomously.
- When it is not publicly available, a mock is provided as a substitute; the actual native library must be obtained directly from the manufacturer to build the plugin.
Four plugins target Android-based embedded ticketing terminals, each equipped with a contactless card reader and one or more SAM contact slots:
- Famoco β interfaces with SAM readers only; the contactless reader on Famoco terminals relies on the standard Android NFC API, which Keyple supports natively.
- Coppernic, Arrive and Bluebird β manage both SAM readers and an observable contactless reader (capable of detecting card insertion and removal).
Two additional plugins target server or workstation environments:
- The Legacy HSM plugin enables a Calypso legacy HSM to be interfaced on a Linux server equipped with a Spirtech HSM.
- The Paragon ID Gen5XX plugin provides access to the 4 SAM slot readers of Gen5XX PC/SC devices on Windows and Linux. It is designed to complement the standard Keyple PC/SC plugin, which handles the contactless interface of the same device.
| Name | Supported Device | Native reader library accessibility | Interface | OS | Language |
|---|---|---|---|---|---|
| Coppernic | C-One v2 | public | Internal | Android | Kotlin |
| Famoco | FX100, FX105, FX200, FX205, FX300, FX915, FX920 | public | |||
| Arrive | Axio Touch Validator/MTBorne validator, Magnetic Axio Touch Validator, Axio 4 Validator, Infigo Driver Console, Voyager Embedded Ticketing Vending Machine, Coppernic C-One, Coppernic C-One V2, Zebra TC77, ACTIA PSDT | private | |||
| Bluebird | EF501, EF551 | private | |||
| Legacy HSM | Spirtech HSM | private | IP | Linux | Java |
| Paragon ID Gen5XX | GEN5XX CCID, CPL108 | public | PC/SC | Windows, Linux, macOS | Java |
Some special features of the Android plugins:
- The embedded terminals targeted by these plugins only support static configurations for their readers. However, the Coppernic and Famoco plugins implement the observable plugin pattern: when the terminal enters standby mode, its readers lose power and behave as if unplugged, so the plugin must detect and report these connect/disconnect events autonomously.
- All four Android plugins expose βconfigurableβ readers to enable support for specific communication protocols. In addition, the Bluebird plugin can be configured to support the Enhanced Contactless Polling (ECP) protocol specific to Apple NFC devices.
| Plugin API implemented interfaces for each plugin | Coppernic | Famoco | Arrive | Bluebird | Legacy HSM | Paragon ID Gen5XX | |
|---|---|---|---|---|---|---|---|
| plugin | PluginSpi | β | β | β | β | β | β |
| ObservablePluginSpi | β | β | |||||
| AutonomousObservablePluginSpi | β | ||||||
| PoolPluginSpi | β | ||||||
| contact | ReaderSpi | β | β | β | β | β | β |
| ConfigurableReaderSpi | β | ||||||
| AutonomousSelectionReaderSpi | |||||||
| PoolReaderSpi | β | ||||||
| contact -less | ReaderSpi | β | β | β | |||
| ConfigurableReaderSpi | β | β | β | ||||
| ObservableReaderSpi | β | β | β | ||||
| CardInsertionWaiterAsynchronousSpi | β | β | |||||
| CardInsertionWaiterBlockingSpi | β | ||||||
| CardInsertionWaiterNonBlockingSpi | |||||||
| CardRemovalWaiterAsynchronousSpi | β | ||||||
| CardRemovalWaiterBlockingSpi | |||||||
| CardRemovalWaiterNonBlockingSpi | β | β | |||||
| CardPresenceMonitorBlockingSpi | |||||||
| β | β | β | |||||