Comandos NCI reservados do Android

A interface de controle de NFC (NCI, na sigla em inglês) é usada para interagir com um Controlador NFC (NFCC). Esta página descreve as especificações do Android comandos NCI reservados.

Definições de NCI

Os comandos NCI reservados do Android usam o ID do grupo reservado (GID, na sigla em inglês) 0xF. e o espaço de código do identificador de código de operação (OID, na sigla em inglês) do Android de 0xC.

Formato de pacote comum

O formato do 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 dispositivo Android uma mensagem proprietária, o primeiro byte do payload do pacote deverá ser definido como 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 forma semelhante a 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. O a especificação de cada pacote 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 O comando NCI_ANDROID_GET_CAPS_CMD não usa parâmetros.

A NFCC precisa responder com a resposta NCI_ANDROID_GET_CAPS_RSP com um status de STATUS_OK e a lista de funcionalidades e recursos com suporte.

Se a NFCC não oferecer suporte a NCI_ANDROID_GET_CAPS_CMD, o host precisará presumir para que cada recurso assuma o valor padrão especificado. Se um não for retornado pela NFCC na resposta, o host deverá presumir que a capacidade 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 pela NFCC.
0 x 0.000 Android 15
Número de recursos 1 octeto Número (n) de recursos compatíveis
Capacidades[0..n] (m + 2) * n octetos Recursos compatíveis
Tipo 1 octeto O identificador da capacidade.
Len 1 octeto Comprimento (m) do valor
Valor m octetos O valor da capacidade
Recursos reservados do Android
Nome do recurso ID Tamanho Valor/descrição
Modo de observação 0x00 1 octeto Compatibilidade com o modo de observação.
0x00 (padrão): não oferece suporte a esse recurso.
0x01 - Suporta o recurso com desativação de RF do host (necessário para Android 15 ou mais recente).
Todos os outros valores são RFU.
Notificação de frame de sondagem 0x01 1 octeto Compatibilidade com notificações de frame de pesquisa. 0x01 se compatível, 0x00 (padrão) se não for compatível. Todos os outros valores são RFU.
Modo de economia de energia 0x02 1 octeto Compatibilidade com 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 sondagem no firmware para ignorar o modo de observação para padrões específicos quando esse modo estiver ativado globalmente.
0x00 (padrão): não é compatível com esse recurso.
0x01: compatível com filtros de loop de sondagem
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 da NFCC para o modo de economia de energia, o host pode usar o NCI_ANDROID_POWER_SAVING_CMD. A NFCC deve responder com NCI_ANDROID_POWER_SAVING_RSP com um código de status indicando sucesso ou falha.

Enquanto estiver no modo de economia de energia, o host não deve enviar nenhum comando para o NFCC e a NFCC não deve enviar nenhuma notificação ou resposta ao host. A NFCC o Elemento de segurança incorporado (eSE) pode aceitar automaticamente as solicitações de pagamento recebidas de acordo com a configuração de roteamento definida antes de ativar a economia de energia modo

Para retornar ao modo de energia total, o host pode redefinir ou reinicializar a 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 Confira os códigos de status na tabela 140 da Especificação NCI (em inglês).

Definir o comando de modo de observação

Para ativar ou desativar o modo de observação, o host pode usar o NCI_ANDROID_PASSIVE_OBSERVE_MODE_CMD. A NFCC deve 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, a NFCC deve implementar a atividade padrão do modo de detecção de acordo com Especificação Técnica da Atividade.

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

A NFCC deve desativar o modo de observação se o host for desligado por qualquer motivo (por exemplo, sem bateria ou desligamento iniciado pelo usuário) para que o SE transações podem prosseguir.

NCI_ANDROID_PASSIVE_OBSERVE_MODE_CMD

Campos de payload Tamanho Valor/descrição
modo observar 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

A NFCC precisa enviar a notificação NCI_ANDROID_POLLING_FRAME_NTF para o host. após cada frame de loop de sondagem. Quando RF_FIELD_INFO_NTF e NCI_ANDROID_POLLING_FRAME_NTF notificações são geradas, a NFCC deve enviar NCI_ANDROID_POLLING_FRAME_NTF após RF_FIELD_INFO_NTF.

A notificação NCI_ANDROID_POLLING_FRAME_NTF independe do fato de de observar o modo está ativo ou não. Quando o modo de observação está ativo, a 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 sondagem[0..n] (m +3) * n octetos Lista de solicitações de sondagem recebidas desde a última notificação. Cada resultado fornece o tipo (tecnologia) do solicitações e dados identificáveis a partir da solicitação, dependendo da tecnologia.
Tipo 1 octeto Veja os tipos de frame.
Flags 1 octeto Consulte byte de sinalização.
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 sondagem, big endian.
Ganhar 1 octeto Força da solicitação de sondagem.
0xFF indica que o valor não está disponível.
Dados m a 5 octetos Retorna os dados identificáveis presentes na solicitação de pesquisa
Tipos de frames
Frame de enquete Tipo Tamanho Valor/Descrição
Campo remoto 0x00 1 octeto 0x00 Campo desativado
0x01 Campo ativado
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 de frames
Definição de byte da sinalização
Flags
B 0 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 pedido passivo, o host pode usar o comando NCI_ANDROID_QUERY_PASSIVE_OBSERVER_STATUS_CMD. A NFCC deve responder com NCI_ANDROID_QUERY_PASSIVE_OBSERVER_STATUS_RSP com um status que indica o sucesso da 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 Confira os códigos de status na tabela 140 da Especificação NCI (em inglês).
modo observar 1 octeto 0x00 Modo "Observar" desativado
0x01 Modo "Observar" ativado