Comandi NCI di proprietà di Android

L'interfaccia del controller NFC (NCI) viene utilizzata per interagire con un controller NFC (NFCC). Questa pagina descrive le specifiche dei comandi NCI di proprietà di Android.

Definizioni NCI

I comandi NCI di proprietà di Android utilizzano l'ID gruppo proprietario (GID) 0xF e lo spazio codice OID (Android Opcode Identifier) di 0xC.

Formato pacchetto comune

Il formato dei pacchetti NCI di Android è conforme alle specifiche NCI per i pacchetti di controllo che utilizzano le proprietà proprietarie Group_ID 0xF e Opcode_ID 0x0C. Per ogni messaggio proprietario di Android, il primo byte del payload del pacchetto deve essere impostato sul codice operativo Android (0x0C). I pacchetti di controllo Android utilizzano Message_Type e PBF per identificare comandi, risposte e notifiche in modo simile ai comandi standard.

Il formato del pacchetto Android è mostrato nella tabella seguente:

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

Gli identificatori delle opcode Android assegnati sono elencati nella tabella seguente. Le specifiche di ciascun pacchetto verranno riportate nelle sezioni successive.

OID Android Tipo di messaggio Nome del messaggio
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 Ottieni funzionalità

L'host utilizza NCI_ANDROID_GET_CAPS_CMD per eseguire query sull'elenco delle funzionalità proprietarie di Android supportate dal NFCC. Il comando NCI_ANDROID_GET_CAPS_CMD non accetta parametri.

Il NFCC deve rispondere con la risposta NCI_ANDROID_GET_CAPS_RSP con stato STATUS_OK e l'elenco delle funzionalità e delle capacità supportate.

Se l'NFCC non supporta NCI_ANDROID_GET_CAPS_CMD, l'host deve assumere che le funzionalità assumano ciascuna il valore predefinito specificato. Se una funzionalità specificata non viene restituita dal NFCC nella risposta, l'host deve presumere che la funzionalità abbia il valore predefinito specificato.

NCI_ANDROID_GET_CAPS_CMD

Campi del payload Dimensioni Valore/descrizione
N/D 0 ottetti

NCI_ANDROID_GET_CAPS_RSP

Campi payload Dimensioni Valore/descrizione
Stato 1 ottetto Consulta i codici di stato nella tabella 140 della specifica NCI.
Android_Version 2 ottetti Identifica la versione dei requisiti di Android implementata dal NFCC.
0x0000 Android 15
Numero di funzionalità 1 ottetto Numero (n) di funzionalità supportate
Capabilities[0..n] (m + 2) * n ottetti Funzionalità supportate
Digitazione 1 ottetto L'identificatore della funzionalità
Len 1 ottetto Lunghezza (m) del valore
Valore M di ottetti Il valore della capacità
Funzionalità proprietarie di Android
Nome della funzionalità ID Dimensioni Valore/descrizione
Modalità di osservazione 0x00 1 ottetto Supporto per la modalità di osservazione.
0x00 (valore predefinito): non supporta questa funzionalità.
0x01: supporta la funzionalità con la disattivazione RF dall'host (obbligatoria per Android 15 o versioni successive).
Tutti gli altri valori sono RFU.
Notifica relativa al frame di polling 0x01 1 ottetto Supporto per le notifiche del frame di polling. 0x01 se supportato, 0x00 (predefinito) se non supportato. Tutti gli altri valori sono RFU.
Modalità risparmio energetico 0x02 1 ottetto Supporto della modalità di risparmio energetico. 0x01 se supportato, 0x00 (predefinito) se non supportato. Tutti gli altri valori sono RFU.
Filtro del loop di polling Auotransact 0x03 1 ottetto Supporto per i filtri del loop di polling nel firmware per bypassare la modalità di osservazione per pattern specifici quando questa è attivata a livello globale.
0x00 (valore predefinito): non supporta questa funzionalità
0x01: supporta i filtri del loop di polling
Tutti gli altri valori sono RFU
0x04..0xFF 0 ottetti Riservato per un uso futuro

Comando di risparmio energetico

Per passare l'NFCC alla modalità di risparmio energetico, l'host può utilizzare il comando NCI_ANDROID_POWER_SAVING_CMD. Il NFCC deve rispondere con NCI_ANDROID_POWER_SAVING_RSP e un codice di stato che indica l'esito positivo o negativo.

In modalità di risparmio energetico, l'host non deve inviare alcun comando all'NFCC e quest'ultimo non deve inviare alcuna notifica o risposta all'host. L'NFCC o l'elemento di sicurezza integrato (eSE) può accettare automaticamente le richieste di pagamento in entrata in base alla configurazione di instradamento impostata prima di attivare la modalità di risparmio energetico.

Per tornare alla modalità di potenza massima, l'host può reimpostare o reinizializzare l'NCFC.

NCI_ANDROID_POWER_SAVING_CMD

Campi del payload Dimensioni Valore/descrizione
Modalità risparmio energetico 1 ottetto 0x00 Disattivare la modalità di risparmio energetico
0x01 Attivare la modalità di risparmio energetico

NCI_ANDROID_POWER_SAVING_RSP

Campi del payload Dimensioni Valore/descrizione
Stato 1 ottetto Consulta i codici di stato nella tabella 140 della specifica NCI.

Comando per impostare la modalità di osservazione

Per attivare o disattivare la modalità di osservazione, l'host può utilizzare il comando NCI_ANDROID_PASSIVE_OBSERVE_MODE_CMD. Il NFCC deve rispondere con NCI_ANDROID_PASSIVE_OBSERVE_MODE_RSP e un codice di stato che indichi l'esito positivo o negativo.

Quando la modalità di osservazione è disattivata, il NFCC deve implementare l'attività in modalità di ascolto standard in base alle Specifiche tecniche dell'attività.

Quando la modalità di osservazione è attiva, il NFCC non deve rispondere a nessuna richiesta di polling durante il ciclo di polling in modalità di ascolto, fino a quando non viene autorizzato esplicitamente dall'host. L'NFCC deve inviare la notifica RF_FIELD_INFO_NTF (come definita nella sezione 5.3 della specifica dell'NCI) quando rileva l'attivazione del campo. Se il rilevamento della modalità di sondaggio è attivo, il NFCC deve implementare l'attività in modalità di sondaggio in base alle Specifiche tecniche dell'attività. L'NCFC può memorizzare nella cache le informazioni del sondaggio in modo da procedere immediatamente con l'attivazione del dispositivo non appena la modalità di osservazione viene disattivata.

L'NCFC deve disattivare la modalità di osservazione se l'host si arresta per qualsiasi motivo (ad esempio batteria scarica o arresto avviato dall'utente) in modo che le transazioni SE possano procedere.

NCI_ANDROID_PASSIVE_OBSERVE_MODE_CMD

Campi del payload Dimensioni Valore/descrizione
modalità di osservazione 1 ottetto 0x00 Disattiva la modalità di osservazione (valore predefinito)
0x01 Attivare la modalità di osservazione

NCI_ANDROID_PASSIVE_OBSERVE_MODE_RSP

Campi del payload Dimensioni Valore/descrizione
Stato 1 ottetto Consulta i codici di stato nella tabella 140 della specifica NCI.

Notifica loop di polling

L'NCFC deve inviare la notifica NCI_ANDROID_POLLING_FRAME_NTF all'host dopo ogni frame del loop di polling. Quando vengono generate sia le notifiche RF_FIELD_INFO_NTF sia quelle NCI_ANDROID_POLLING_FRAME_NTF, l'NCFC deve inviare NCI_ANDROID_POLLING_FRAME_NTF dopo RF_FIELD_INFO_NTF.

La notifica di NCI_ANDROID_POLLING_FRAME_NTF è indipendente dal fatto che la modalità di osservazione sia attiva o meno. Quando la modalità di osservazione è attiva, NFCC deve sempre inviare una notifica NCI_ANDROID_POLLING_FRAME_NTF prima di continuare con la transazione.

NCI_ANDROID_POLLING_FRAME_NTF

Campi del payload Dimensioni Valore/descrizione
Polling Data[0..n] (m +3) * n ottetti Elenco delle richieste di polling ricevute dall'ultima notifica. Ogni risultato indica il tipo (tecnologia) delle richieste ricevute e i dati identificabili della richiesta, a seconda della tecnologia.
Digitazione 1 ottetto Consulta i tipi di frame.
Bandiere 1 ottetto Vedi byte di flag.
Lunghezza 1 ottetto Lunghezza (m) del report sui dati del sondaggio, inclusi i campi timestamp e guadagno.
Timestamp 4 ottetti Timestamp misurato in millisecondi della ricezione delle richieste di polling, big endian.
Guadagno 1 ottetto Intensità della richiesta di polling.
0xFF indica che il valore non è disponibile.
Dati m-5 ottetti Restituisce i dati identificabili presenti nella richiesta di polling
Tipi di fotogrammi
Frame di polling Digitazione Dimensioni Valore/descrizione
Campo remoto 0x00 1 ottetto 0x00 Campo non attivo
0x01 Campo attivato
0x02..0xFF RFU
NFC-A 0x01 n ottetti Il valore deve includere un comando ISO 14443-3 (ad esempio, REQ o WUP)
NFC 0x02 n ottetti Il valore deve includere un byte AIF e un comando ISO 14443-3 (ad esempio REQ o WUP)
NFC-F 0x03 n ottetti Il valore deve includere un comando ISO 14443-3 (ad esempio REQ o WUP)
NFC-V 0x04 n ottetti Il valore deve includere un comando ISO 14443-3 (ad esempio REQ o WUP)
Sconosciuto 0x07 n ottetti Dati non elaborati dei frame
Definizione dei byte del flag
Bandiere
b0 B1 b2 b3 B4 b5 b6 B7
0 Cornice corta RFU RFU RFU RFU RFU RFU RFU
1 Fotogramma lungo

Comando di stato della modalità di osservazione delle query

Per recuperare lo stato attuale della modalità di ordine passivo, l'host può utilizzare il comando NCI_ANDROID_QUERY_PASSIVE_OBSERVER_STATUS_CMD. L'NFCC deve rispondere con NCI_ANDROID_QUERY_PASSIVE_OBSERVER_STATUS_RSP con un codice di stato che indichi l'esito positivo dell'errore.

NCI_ANDROID_QUERY_PASSIVE_OBSERVER_STATUS_CMD

Campi del payload Dimensioni Valore/descrizione
N/D 0 ottetti

NCI_ANDROID_QUERY_PASSIVE_OBSERVER_STATUS_RSP

Campi payload Dimensioni Valore/descrizione
Stato 1 ottetto Consulta i codici di stato nella tabella 140 della specifica NCI.
modalità di osservazione 1 ottetto 0x00 Modalità di osservazione disattivata
0x01 Modalità di osservazione attivata