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 |