La interfaz de controlador de NFC (NCI) se utiliza para interactuar con un Controlador NFC (NFCC). En esta página, se describen las especificaciones de Android de NCI de Google.
Definiciones de NCI
Los comandos de NCI de propiedad de Android usan el ID de grupo propio (GID) 0xF
y el espacio de código identificador de código de operación (OID) de Android de 0xC
.
Formato de paquete común
El formato de paquetes de NCI de Android sigue la especificación de NCI para los paquetes de control
con Group_ID 0xF
y Opcode_ID 0x0C
, que son propiedad de Google. Para dispositivos Android
el primer byte de la carga útil del paquete se debe establecer
Código de operación de Android (0x0C
). Los paquetes de control de Android usan Message_Type
y
PBF
para identificar comandos, respuestas y notificaciones de manera similar a
comandos estándar.
El formato de paquete de Android se muestra en la siguiente tabla:
0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
Message_Type
|
PBF
|
Group_ID = 0xF (PROPRIETARY)
|
|||||
reservada para uso futuro (RFU) | Opcode_ID = 0x0C (ANDROID)
|
||||||
Payload_Length
|
|||||||
Android_Opcode_ID
|
|||||||
Android_Payload
|
|||||||
En la siguiente tabla, se enumeran los identificadores de código de operación de Android asignados. El la especificación para cada paquete sigue en las siguientes secciones.
OID de Android | Tipo de mensaje | Nombre del mensaje |
---|---|---|
0 × 00 | NCI_MT_CMD | NCI_ANDROID_GET_CAPS_CMD |
NCI_MT_RSP | NCI_ANDROID_GET_CAPS_RSP
|
|
0 × 01 | NCI_MT_CMD | NCI_ANDROID_POWER_SAVING_CMD
|
NCI_MT_RSP | NCI_ANDROID_POWER_SAVING_RSP
|
|
0x02 | NCI_MT_CMD | NCI_ANDROID_PASSIVE_OBSERVE_MODE_CMD |
NCI_MT_RSP | NCI_ANDROID_PASSIVE_OBSERVE_MODE_RSP
|
|
0x03 | NCI_MT_NTF | NCI_ANDROID_POLLING_FRAME_NTF
|
0x04 | NCI_MT_CMD | NCI_ANDROID_QUERY_PASSIVE_OBSERVER_STATUS_CMD |
NCI_MT_RSP | NCI_ANDROID_QUERY_PASSIVE_OBSERVER_STATUS_RSP |
Obtener comando capabilities
El host usa NCI_ANDROID_GET_CAPS_CMD
para consultar la lista
de las funciones de propiedad de Android compatibles con la NFCC. El
El comando NCI_ANDROID_GET_CAPS_CMD
no toma ningún parámetro.
La NFCC debe responder con la respuesta NCI_ANDROID_GET_CAPS_RSP
con un estado.
de STATUS_OK
y la lista de capacidades y funciones compatibles.
Si NFCC no admite NCI_ANDROID_GET_CAPS_CMD
, el host debe suponer
que las capacidades tomen el valor especificado predeterminado. Si se especifica
no devuelve la NFCC en la respuesta, el host debe suponer
la función tiene el valor especificado predeterminado.
NCI_ANDROID_GET_CAPS_CMD
Campos de carga útil | Tamaño | Valor/descripción | |||||
---|---|---|---|---|---|---|---|
N/A | 0 octetos |
NCI_ANDROID_GET_CAPS_RSP
Campos de carga útil | Tamaño | Valor o descripción | |||||
---|---|---|---|---|---|---|---|
Estado | 1 octeto | Consulta los códigos de estado en la tabla 140 de la especificación de NCI. | |||||
Android_Version
|
2 octetos | Identifica la versión de los requisitos de Android que implementa la NFCC. | |||||
0x0000 | Android 15 | ||||||
Cantidad de capacidades | 1 octeto | Cantidad (n) de capacidades admitidas | |||||
Funciones | (m + 2) * n octetos | Funciones admitidas | |||||
Tipo | 1 octeto | El identificador de la capability | |||||
Len | 1 octeto | Longitud (m) del valor | |||||
Valor | m octetos | El valor de la capability |
Capacidades de propiedad de Android
Nombre de la función | ID | Tamaño | Valor/descripción | |||||
---|---|---|---|---|---|---|---|---|
Modo de observación | 0 × 00 | 1 octeto | Compatibilidad con el modo de observación
0x00 (predeterminado): No es compatible con esta función. 0x01: Admite la función con desactivación de RF del host (necesario para Android 15 o versiones posteriores). Todos los demás valores son RFU. |
|||||
Notificación de marco de sondeo | 0 × 01 | 1 octeto | Compatibilidad con las notificaciones del marco de sondeo. 0x01 si se admite, 0x00 (predeterminado) si no se admite. Todos los demás valores son RFU. | |||||
Modo de ahorro de energía | 0x02 | 1 octeto | Compatibilidad con el modo de ahorro de energía 0x01 si se admite, 0x00 (predeterminado) si no se admite. Todos los demás valores son RFU. | |||||
Filtro de bucle de sondeo Auotransact | 0x03 | 1 octeto | Compatibilidad con filtros de bucle de sondeo en el firmware para omitir el modo de observación para patrones específicos cuando el modo de observación está habilitado globalmente
0x00 (predeterminado): no es compatible con esta función. 0x01: Admite filtros de bucle de sondeo Todos los demás valores son RFU |
|||||
0x04...0xFF | 0 octetos | Reservado para uso futuro |
Comando de ahorro de energía
Para hacer la transición de NFCC al modo de ahorro de energía, el host puede usar el
Comando NCI_ANDROID_POWER_SAVING_CMD
. La NFCC debe responder con
NCI_ANDROID_POWER_SAVING_RSP
con un código de estado
que indica éxito o fracaso.
Mientras el host está en modo de ahorro de energía, no debe enviar ningún comando a la NFCC y la NFCC no debe enviar ninguna notificación ni respuesta al host. El campo NFCC o el Elemento seguro incorporado (eSE) puede aceptar automáticamente solicitudes de pago entrantes según la configuración de enrutamiento establecida antes de habilitar la función .
Para regresar al modo de energía completa, el host puede restablecer o reiniciar la NFCC.
NCI_ANDROID_POWER_SAVING_CMD
Campos de carga útil | Tamaño | Valor/descripción | |
---|---|---|---|
Modo de ahorro de energía | 1 octeto | 0 × 00 | Inhabilitar el modo de ahorro de energía |
0 × 01 | Habilitar el modo de ahorro de energía |
NCI_ANDROID_POWER_SAVING_RSP
Campos de carga útil | Tamaño | Valor o descripción | |||||
---|---|---|---|---|---|---|---|
Estado | 1 octeto | Consulta los códigos de estado en la tabla 140 de la especificación de NCI. |
Comando para configurar el modo de observación
Para activar o desactivar el modo de observación, el host puede usar la
Comando NCI_ANDROID_PASSIVE_OBSERVE_MODE_CMD
. La NFCC debe responder con
NCI_ANDROID_PASSIVE_OBSERVE_MODE_RSP
por un código de estado que indica que la prueba se realizó correctamente
falla.
Cuando el modo de observación está inhabilitado, la NFCC debe implementar el de la actividad del modo de escucha estándar Especificación técnica de la actividad.
Cuando el modo de observación está activo, la NFCC no debe responder a ninguna encuesta
solicitudes durante el bucle de sondeo en el modo de escucha, hasta que lo autoricen explícitamente
el host. La NFCC debe enviar la notificación RF_FIELD_INFO_NTF
(como se define en
artículo 5.3 de la
especificación de NCI)
cuando detecta la activación de campos. Si el descubrimiento del modo de encuesta está activo, el NFCC
debes implementar la actividad del modo de sondeo según el
Especificación técnica de la actividad.
La NFCC puede almacenar en caché la información de la encuesta para continuar inmediatamente con el dispositivo
activación en cuanto se desactiva el modo de observación.
El NFCC debe desactivar el modo de observación si el host se apaga por algún motivo (por ejemplo, sin batería o apagado iniciado por el usuario) para que SE transacciones pueden continuar.
NCI_ANDROID_PASSIVE_OBSERVE_MODE_CMD
Campos de carga útil | Tamaño | Valor/descripción | |
---|---|---|---|
modo de observación | 1 octeto | 0 × 00 | Inhabilitar el modo de observación (predeterminado) |
0 × 01 | Habilitar el modo de observación |
NCI_ANDROID_PASSIVE_OBSERVE_MODE_RSP
Campos de carga útil | Tamaño | Valor o descripción | |||||
---|---|---|---|---|---|---|---|
Estado | 1 octeto | Consulta los códigos de estado en la tabla 140 de la especificación de NCI. |
Notificación de bucle de sondeo
La NFCC debe enviar la notificación de NCI_ANDROID_POLLING_FRAME_NTF
al host.
después de cada marco del bucle de sondeo. Cuando tanto RF_FIELD_INFO_NTF
como
NCI_ANDROID_POLLING_FRAME_NTF
notificaciones, la NFCC debe enviar
NCI_ANDROID_POLLING_FRAME_NTF
después de RF_FIELD_INFO_NTF
.
La notificación NCI_ANDROID_POLLING_FRAME_NTF
es independiente de si
si el modo de observación está activo o no. Cuando el modo de observación está activo,
la NFCC siempre debe enviar una notificación de NCI_ANDROID_POLLING_FRAME_NTF
antes
continuar con la transacción.
NCI_ANDROID_POLLING_FRAME_NTF
Campos de carga útil | Tamaño | Valor/descripción | |||||
---|---|---|---|---|---|---|---|
Datos de encuestas[0..n] | (m +3) * n octetos | Lista de solicitudes de sondeo recibidas desde la última notificación. Cada resultado da el tipo (tecnología) de lo recibido y los datos identificables de la solicitud según la tecnología. | |||||
Tipo | 1 octeto | Consulta los tipos de marcos. | |||||
Marcas | 1 octeto | Consulta byte de marca. | |||||
Duración | 1 octeto | Longitud (m) del informe de datos de sondeo que incluye los campos de marca de tiempo y ganancia. | |||||
Marca de tiempo | 4 octetos | Marca de tiempo medida en milisegundos de la recepción de las solicitudes de sondeo, big endian. | |||||
Ganancia | 1 octeto | La calidad de la solicitud de sondeo.
0xFF indica que el valor no está disponible. |
|||||
Datos | m - 5 octetos | Muestra los datos identificables presentes en la solicitud de sondeo |
Tipos de marcos
Marco de sondeo | Tipo | Tamaño | Valor o descripción | |
---|---|---|---|---|
Campo remoto | 0 × 00 | 1 octeto | 0 × 00 | Campo desactivado |
0 × 01 | Campo activado | |||
0x02..0xFF | RFU | |||
NFC-A | 0 × 01 | n octetos | El valor debe incluir un comando ISO 14443-3 (por ejemplo, REQ o WUP). | |
NFC-B | 0x02 | n octetos | El valor debe incluir un byte de AIF y un comando ISO 14443-3 (por ejemplo, REQ o WUP) | |
NFC-F | 0x03 | n octetos | El valor debe incluir un comando ISO 14443-3 (por ejemplo, REQ o WUP). | |
NFC-V | 0x04 | n octetos | El valor debe incluir un comando ISO 14443-3 (por ejemplo, REQ o WUP). | |
Desconocido | 0x07 | n octetos | Datos de fotogramas sin procesar |
Definición de byte de marca
Marcas | ||||||||
---|---|---|---|---|---|---|---|---|
b0 | B1 | B2 | B3 | B4 | B5 | B6 | B7 | |
0 | Marco corto | RFU | RFU | RFU | RFU | RFU | RFU | RFU |
1 | Marco largo |
Comando de estado del modo de consulta de observación
Para recuperar el estado actual del modo de pedido pasivo, el host puede usar
el comando NCI_ANDROID_QUERY_PASSIVE_OBSERVER_STATUS_CMD
La NFCC debe
responder con NCI_ANDROID_QUERY_PASSIVE_OBSERVER_STATUS_RSP
con un estado
código que indica el éxito del error.
NCI_ANDROID_QUERY_PASSIVE_OBSERVER_STATUS_CMD
Campos de carga útil | Tamaño | Valor/descripción | |||||
---|---|---|---|---|---|---|---|
N/A | 0 octetos |
NCI_ANDROID_QUERY_PASSIVE_OBSERVER_STATUS_RSP
Campos de carga útil | Tamaño | Valor o descripción | |
---|---|---|---|
Estado | 1 octeto | Consulta los códigos de estado en la tabla 140 de la especificación de NCI. | |
modo de observación | 1 octeto | 0 × 00 | Se inhabilitó el modo de observación |
0 × 01 | Se habilitó el modo de observación |