Comandos NCI reservados do Android

A interface do controlador NFC (NCI) é usada para interagir com um controlador NFC (NFCC). Esta página descreve as especificações dos comandos NCI proprietários do Android.

Definições de NCI

Os comandos NCI reservados do Android usam o ID de grupo reservado (GID) 0xF e o espaço de código do identificador de opcode (OID) do Android 0xC.

Formato de pacote comum

O formato de pacote de NCI do Android segue a especificação do NCI para pacotes de controle usando o Group_ID 0xF e o Opcode_ID 0x0C reservados. Para cada mensagem proprietária do Android, o primeiro byte do payload do pacote precisa ser definido como o código de operação do Android (0x0C). Os pacotes de controle do Android usam Message_Type e PBF para identificar comandos, respostas e notificações de maneira semelhante aos comandos padrão.

O formato do pacote do Android é mostrado na tabela abaixo:

0 1 2 3 4 5 6 7
Message_Type PBF Group_ID = 0xF (PROPRIETARY)
reservado para uso futuro (RFU) Opcode_ID = 0x0C (ANDROID)
Payload_Length
Android_Opcode_ID
Android_Payload

Os identificadores de código de operação do Android atribuídos estão listados na tabela a seguir. A especificação de cada pacote é apresentada nas próximas seções.

OID do Android Tipo de mensagem Nome da mensagem
0x00 NCI_MT_CMD NCI_ANDROID_GET_CAPS_CMD
NCI_MT_RSP NCI_ANDROID_GET_CAPS_RSP
0x01 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

Comando de recursos

O host usa NCI_ANDROID_GET_CAPS_CMD para consultar a lista de recursos reservados do Android com suporte da NFCC. O comando NCI_ANDROID_GET_CAPS_CMD não usa nenhum parâmetro.

O NFCC precisa responder com a resposta NCI_ANDROID_GET_CAPS_RSP com um status de STATUS_OK e a lista de recursos e recursos compatíveis.

Se o NFCC não tiver suporte para NCI_ANDROID_GET_CAPS_CMD, o host precisará assumir que os recursos terão o valor padrão especificado. Se um recurso especificado não for retornado pela NFCC na resposta, o host precisará presumir que o recurso tem o valor padrão especificado.

NCI_ANDROID_GET_CAPS_CMD

Campos de payload Tamanho Valor/descrição
N/A 0 octetos

NCI_ANDROID_GET_CAPS_RSP

Campos de payload Tamanho Valor/descrição
Status 1 octeto Consulte os códigos de status na tabela 140 da Especificação NCI (link em inglês).
Android_Version 2 octetos Identifica a versão dos requisitos do Android implementada pelo NFCC.
0x0000 Android 15
Número de recursos 1 octeto Número (n) de recursos compatíveis
Capabilities[0..n] (m + 2) * n octetos Recursos compatíveis
Tipo 1 octeto O identificador do capability
Len 1 octeto Comprimento (m) do valor
Valor m octetos O valor da capacidade
Recursos exclusivos do Android
Nome do recurso ID Tamanho Valor/descrição
Modo de observação 0x00 1 octeto Suporte para o modo de observação.
0x00 (padrão): não oferece suporte a esse recurso.
0x01: oferece suporte ao recurso com desativação de RF do host (obrigatório para o Android 15 ou versões mais recentes).
Todos os outros valores são RFU.
Notificação de frame de pesquisa 0x01 1 octeto Compatibilidade com notificações de frame de pesquisa. 0x01, se houver suporte; 0x00 (padrão), se não houver. Todos os outros valores são RFU.
Modo de economia de energia 0x02 1 octeto Suporte para o modo de economia de energia. 0x01 se compatível, 0x00 (padrão) se não for compatível. Todos os outros valores são RFU.
Filtro de loop de pesquisa "autotransact" 0x03 1 octeto Suporte a filtros de loop de pesquisa no firmware para ignorar o modo de observação de padrões específicos quando o modo de observação está ativado globalmente.
0x00 (padrão): não oferece suporte a esse recurso
0x01: oferece suporte a filtros de loop de pesquisa
Todos os outros valores são RFU
0x04..0xFF 0 octetos Reservado para uso futuro

Comando de economia de energia

Para fazer a transição do NFCC para o modo de economia de energia, o host pode usar o comando NCI_ANDROID_POWER_SAVING_CMD. O NFCC precisa responder com NCI_ANDROID_POWER_SAVING_RSP com um código de status que indique sucesso ou falha.

Enquanto estiver no modo de economia de energia, o host não pode enviar nenhum comando para o NFCC, e o NFCC não pode enviar nenhuma notificação ou resposta para o host. O NFCC ou o elemento de segurança integrado (eSE, na sigla em inglês) pode aceitar automaticamente as solicitações de pagamento recebidas de acordo com a configuração de roteamento definida antes de ativar o modo de economia de energia.

Para retornar ao modo de energia total, o host pode redefinir ou reinicializar o NFCC.

NCI_ANDROID_POWER_SAVING_CMD

Campos de payload Tamanho Valor/descrição
Modo de economia de energia 1 octeto 0x00 Desativar o modo de economia de energia
0x01 Ativar o modo de economia de energia

NCI_ANDROID_POWER_SAVING_RSP

Campos de payload Tamanho Valor/descrição
Status 1 octeto Consulte os códigos de status na tabela 140 da especificação NCI.

Definir comando do modo de observação

Para ativar ou desativar o modo de observação, o host pode usar o comando NCI_ANDROID_PASSIVE_OBSERVE_MODE_CMD. O NFCC precisa responder com NCI_ANDROID_PASSIVE_OBSERVE_MODE_RSP com um código de status indicando sucesso ou falha.

Quando o modo de observação está desativado, o NFCC precisa implementar a atividade padrão do modo de escuta de acordo com a especificação técnica da atividade.

Quando o modo de observação está ativo, a NFCC não pode responder a nenhuma solicitação de pesquisa durante o loop de pesquisa no modo de detecção até que seja explicitamente autorizado pelo host. A NFCC precisa enviar a notificação RF_FIELD_INFO_NTF (conforme definido pela seção 5.3 da especificação NCI) quando detecta a ativação do campo. Se a descoberta do modo de pesquisa estiver ativa, o NFCC precisa implementar a atividade do modo de pesquisa de acordo com a especificação técnica da atividade. A NFCC pode armazenar as informações da enquete em cache para continuar imediatamente com a ativação do dispositivo assim que o modo de observação for desativado.

O NFCC precisa desativar o modo de observação se o host for encerrado por qualquer motivo (por exemplo, por falta de bateria ou desligamento iniciado pelo usuário) para que as transações SE possam prosseguir.

NCI_ANDROID_PASSIVE_OBSERVE_MODE_CMD

Campos de payload Tamanho Valor/descrição
modo de observação 1 octeto 0x00 Desativar o modo de observação (padrão)
0x01 Ativar o modo de observação

NCI_ANDROID_PASSIVE_OBSERVE_MODE_RSP

Campos de payload Tamanho Valor/descrição
Status 1 octeto Consulte os códigos de status na tabela 140 da Especificação NCI (link em inglês).

Notificação de loop de pesquisa

O NFCC precisa enviar a notificação NCI_ANDROID_POLLING_FRAME_NTF ao host após cada frame do loop de pesquisa. Quando as notificações RF_FIELD_INFO_NTF e NCI_ANDROID_POLLING_FRAME_NTF são geradas, a NFCC precisa enviar NCI_ANDROID_POLLING_FRAME_NTF após RF_FIELD_INFO_NTF.

A notificação NCI_ANDROID_POLLING_FRAME_NTF é independente de se o modo de observação está ativo ou não. Quando o modo de observação está ativo, o NFCC precisa sempre enviar uma notificação NCI_ANDROID_POLLING_FRAME_NTF antes de prosseguir com a transação.

NCI_ANDROID_POLLING_FRAME_NTF

Campos de payload Tamanho Valor/descrição
Dados de pesquisa[0..n] (m +3) * n octetos Lista de solicitações de pesquisa recebidas desde a última notificação. Cada resultado mostra o tipo (tecnologia) das solicitações recebidas e os dados identificáveis da solicitação, dependendo da tecnologia.
Tipo 1 octeto Consulte tipos de frame.
Flags 1 octeto Consulte flag byte.
Duração 1 octeto Tamanho (m) do relatório de dados de sondagem, incluindo os campos de carimbo de data/hora e ganho.
Carimbo de data/hora 4 octetos Carimbo de data/hora medido em milissegundos da recepção das solicitações de pesquisa, big endian.
Ganho 1 octeto Força da solicitação de sondagem.
0xFF indica que o valor não está disponível.
Dados m: 5 octetos Retorna os dados identificáveis presentes na solicitação de pesquisa
Tipos de frames
Frame de pesquisa Tipo Tamanho Valor/descrição
Campo remoto 0x00 1 octeto 0x00 Campo desativado
0x01 Campo em
0x02..0xFF RFU
NFC-A 0x01 n octetos O valor precisa incluir um comando ISO 14443-3 (por exemplo, REQ ou WUP).
NFC-B 0x02 n octetos O valor precisa incluir um byte AIF e um comando ISO 14443-3 (por exemplo, REQ ou WUP)
NFC-F 0x03 n octetos O valor precisa incluir um comando ISO 14443-3 (por exemplo, REQ ou WUP)
NFC V 0x04 n octetos O valor precisa incluir um comando ISO 14443-3 (por exemplo, REQ ou WUP).
Desconhecido 0x07 n octetos Dados brutos do frame
Definição de byte da sinalização
Flags
b0 b1 b2 b3 b4 B5 b6 b7
0 Frame curto RFU RFU RFU RFU RFU RFU RFU
1 Frame longo

Consultar o comando de status do modo observação

Para recuperar o status atual do modo de ordem passiva, o host pode usar o comando NCI_ANDROID_QUERY_PASSIVE_OBSERVER_STATUS_CMD. O NFCC precisa responder com NCI_ANDROID_QUERY_PASSIVE_OBSERVER_STATUS_RSP com um código de status indicando sucesso ou falha.

NCI_ANDROID_QUERY_PASSIVE_OBSERVER_STATUS_CMD

Campos de payload Tamanho Valor/descrição
N/A 0 octetos

NCI_ANDROID_QUERY_PASSIVE_OBSERVER_STATUS_RSP

Campos de payload Tamanho Valor/descrição
Status 1 octeto Consulte os códigos de status na tabela 140 da especificação NCI.
modo observar 1 octeto 0x00 Modo de observação desativado
0x01 Modo "Observar" ativado