Comandos de NCI de propiedad de Android

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