blob: 0c3afa049632a09369b734e2821bf29fe409531b [file] [log] [blame]
Casimir
=======
Introduction
------------
Casimir aims to provide virtual tag discovery and emulation for NFC
applications, in order to unlock NFC capability in various testing
contexes.
Casimir includes a virtual NFCC implementation, and internally emulates
RF communications between multiple connected hosts. Cf the RF packets
specification in ``src/rf_packets.pdl``.
Usage
-----
Standalone
^^^^^^^^^^
Casimir may be built and run as a standalone server.
.. sourcecode:: bash
Usage: casimir [--nci-port <nci-port>] [--rf-port <rf-port>]
Nfc emulator.
Options:
--nci-port configure the TCP port for the NCI server.
--rf-port configure the TCP port for the RF server.
--help display usage information
Cuttlefish
^^^^^^^^^^
Cuttlefish runs casimir as a host service for emulating the NFC chipset inside
the Android phone. The port numbers for a *local instance* can be obtained from
the instance number:
- ``nci_port`` is ``7100 + instance_num - 1``
- ``rf_port`` is ``8100 + instance_num - 1``
Tests
^^^^^
The script ``scripts/t4at.py`` may be used to emulate a Type 4-A Tag device on
the RF port, in either listen or poll mode.
.. sourcecode:: bash
usage: t4at.py [-h] [--address ADDRESS] [--rf-port RF_PORT] [--mode {poll,listen}
options:
-h, --help show this help message and exit
--address ADDRESS Select the casimir server address
--rf-port RF_PORT Select the casimir TCP RF port
--mode {poll,listen} Select the tag mode
To run a basic tag detection test on Cuttlefish:
.. sourcecode:: bash
# Start the cuttlefish instance (numbered 1)
# Wait for NFC start up.
launch_cvd
# Create a tag device connected to the casimir instance.
cd $ANDROID_TOP/system/nfc/tools/casimir
./scripts/t4at.py --rf-port 8100 --mode listen
Supported features
------------------
Casimir currently supports a subset of the NFC features described in the
following technical specification documents:
- ``[NCI]`` NFC Controller Interface Technical Specification Version 2.2
- ``[DIGITAL]`` Digital Protocol Technical Specification Version 2.3
- ``[ACTIVITY]`` Activity Technical Specification Version 2.2
Supported technologies: ``NFC_A``
Supported protocols: ``ISO_DEP``, ``NFC_DEP``
Supported RF interfaces: ``ISO_DEP``, ``NFC_DEP``
NCI Commands
^^^^^^^^^^^^
Core management
"""""""""""""""
+---------------------------------+--------------+-------------------------------------------------+
| CORE_RESET_CMD | Completed | |
| CORE_RESET_RSP | | |
| CORE_RESET_NTF | | |
+---------------------------------+--------------+-------------------------------------------------+
| CORE_INIT_CMD | Completed | To be defined: number and type of RF |
| CORE_INIT_RSP | | interfaces. It seems that the mandated default |
| | | is 1 : frame RF interface. |
| | | To be defined: default configuration for the |
| | | NFCC, best is to get one from a real phone |
| | | NCI trace. |
+---------------------------------+--------------+-------------------------------------------------+
| CORE_SET_CONFIG_CMD | Completed | The configuration is saved but currently |
| CORE_SET_CONFIG_RSP | | unused. Basic validation is implemented. |
+---------------------------------+--------------+-------------------------------------------------+
| CORE_GET_CONFIG_CMD | Completed | |
| CORE_GET_CONFIG_RSP | | |
+---------------------------------+--------------+-------------------------------------------------+
| CORE_CONN_CREATE_CMD | Completed | |
| CORE_CONN_CREATE_RSP | | |
+---------------------------------+--------------+-------------------------------------------------+
| CORE_CONN_CLOSE_CMD | Completed | |
| CORE_CONN_CLOSE_RSP | | |
+---------------------------------+--------------+-------------------------------------------------+
| CORE_CONN_CREDITS_NTF | Completed | |
+---------------------------------+--------------+-------------------------------------------------+
| CORE_GENERIC_ERROR_NTF | Not started | Unused in the implementation so far |
| CORE_INTERFACE_ERROR_NTF | | |
+---------------------------------+--------------+-------------------------------------------------+
| CORE_SET_POWER_SUB_STATE_CMD | In progress | Implemented as stub |
| CORE_SET_POWER_SUB_STATE_RSP | | |
+---------------------------------+--------------+-------------------------------------------------+
RF management
"""""""""""""
+---------------------------------+--------------+-------------------------------------------------+
| RF_DISCOVER_MAP_CMD | Completed | |
| RF_DISCOVER_MAP_RSP | | |
+---------------------------------+--------------+-------------------------------------------------+
| RF_SET_LISTEN_MODE_ROUTING_CMD | In progress | Implemented as stub |
| RF_SET_LISTEN_MODE_ROUTING_RSP | | |
+---------------------------------+--------------+-------------------------------------------------+
| RF_GET_LISTEN_MODE_ROUTING_CMD | In progress | Implemented as stub |
| RF_GET_LISTEN_MODE_ROUTING_RSP | | |
| RF_GET_LISTEN_MODE_ROUTING_NTF | | |
+---------------------------------+--------------+-------------------------------------------------+
| RF_DISCOVER_CMD | Completed | |
| RF_DISCOVER_RSP | | |
| RF_DISCOVER_NTF | | |
+---------------------------------+--------------+-------------------------------------------------+
| RF_DISCOVER_SELECT_CMD | In progress | Missing protocol and interface combinations |
| RF_DISCOVER_SELECT_RSP | | |
+---------------------------------+--------------+-------------------------------------------------+
| RF_INTF_ACTIVATED_NTF | Completed | |
+---------------------------------+--------------+-------------------------------------------------+
| RF_DEACTIVATE_CMD | In progress | |
| RF_DEACTIVATE_RSP | | |
| RF_DEACTIVATE_NTF | | |
+---------------------------------+--------------+-------------------------------------------------+
| RF_FIELD_INFO_NTF | Completed | |
+---------------------------------+--------------+-------------------------------------------------+
| RF_T3T_POLLING_CMD | Not started | |
| RF_T3T_POLLING_RSP | | |
| RF_T3T_POLLING_NTF | | |
+---------------------------------+--------------+-------------------------------------------------+
| RF_NFCEE_ACTION_NTF | Not started | |
+---------------------------------+--------------+-------------------------------------------------+
| RF_NFCEE_DISCOVERY_REQ_NTF | Completed | |
+---------------------------------+--------------+-------------------------------------------------+
| RF_PARAMETER_UPDATE_CMD | Not started | |
| RF_PARAMETER_UPDATE_RSP | | |
+---------------------------------+--------------+-------------------------------------------------+
| RF_INTF_EXT_START_CMD | Not started | |
| RF_INTF_EXT_START_RSP | | |
+---------------------------------+--------------+-------------------------------------------------+
| RF_INTF_EXT_STOP_CMD | Not started | |
| RF_INTF_EXT_STOP_RSP | | |
+---------------------------------+--------------+-------------------------------------------------+
| RF_EXT_AGG_ABORT_CMD | Not started | |
| RF_EXT_AGG_ABORT_RSP | | |
+---------------------------------+--------------+-------------------------------------------------+
| RF_NDEF_ABORT_CMD | Not started | |
| RF_NDEF_ABORT_RSP | | |
+---------------------------------+--------------+-------------------------------------------------+
| RF_ISO_DEP_NAK_PRESENCE_CMD | Not started | |
| RF_ISO_DEP_NAK_PRESENCE_RSP | | |
| RF_ISO_DEP_NAK_PRESENCE_NTF | | |
+---------------------------------+--------------+-------------------------------------------------+
| RF_SET_FORCED_NFCEE_ROUTING_CMD | Not started | |
| RF_SET_FORCED_NFCEE_ROUTING_RSP | | |
+---------------------------------+--------------+-------------------------------------------------+
NFCEE management
""""""""""""""""
+---------------------------------+--------------+-------------------------------------------------+
| NFCEE_DISCOVER_CMD | In progress | Implemented discovery for one NFCEE (eSE (ST)) |
| NFCEE_DISCOVER_RSP | | reproducing the configuration found on Pixel7 |
| NFCEE_DISCOVER_NTF | | devices. |
+---------------------------------+--------------+-------------------------------------------------+
| NFCEE_MODE_SET_CMD | Completed | |
| NFCEE_MODE_SET_RSP | | |
| NFCEE_MODE_SET_NTF | | |
+---------------------------------+--------------+-------------------------------------------------+
| NFCEE_STATUS_NTF | Not started | |
+---------------------------------+--------------+-------------------------------------------------+
| NFCEE_POWER_AND_LINK_CNTRL_CMD | Not started | |
| NFCEE_POWER_AND_LINK_CNTRL_RSP | | |
+---------------------------------+--------------+-------------------------------------------------+