Comandi NCI proprietari 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 proprietari di Android.

Definizioni di NCI

I comandi NCI proprietari di Android utilizzano l'ID gruppo (GID) proprietario 0xF e lo spazio di codice dell'identificatore opcode (OID) di Android 0xC.

Formato pacchetto comune

Il formato del pacchetto NCI Android segue la specifica NCI per i pacchetti di controllo utilizzando Group_ID 0xFe Opcode_ID 0x0C proprietari. 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 di opcode Android assegnati sono elencati nella tabella seguente. La specifica per ogni pacchetto è riportata 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
0x05 NCI_MT_CMD NCI_ANDROID_SET_PASSIVE_OBSERVER_TECH_CMD
NCI_MT_RSP NCI_ANDROID_SET_PASSIVE_OBSERVER_TECH_RSP
0x06 NCI_MT_CMD NCI_ANDROID_SET_PASSIVE_OBSERVER_EXIT_FRAME_CMD
NCI_MT_RSP NCI_ANDROID_SET_PASSIVE_OBSERVER_EXIT_FRAME_RSP
0x07 NCI_MT_CMD NCI_ANDROID_GET_PASSIVE_OBSERVER_EXIT_FRAME_CMD
NCI_MT_RSP NCI_ANDROID_GET_PASSIVE_OBSERVER_EXIT_FRAME_RSP
0x08 NCI_MT_CMD NCI_ANDROID_BLANK_NCI_CMD
NCI_MT_RSP NCI_ANDROID_BLANK_NCI_RSP
0x09 NCI_MT_CMD NCI_ANDROID_SET_POLLING_LOOP_ANNOTATION_CMD
NCI_MT_RSP NCI_ANDROID_SET_POLLING_LOOP_ANNOTATION_RSP
0x0A NCI_MT_CMD NCI_ANDROID_QUERY_POWER_SAVING_CMD
NCI_MT_RSP NCI_ANDROID_QUERY_POWER_SAVING_RSP
0x0B NCI_MT_NTF NCI_ANDROID_PASSIVE_OBSERVER_SUSPENDED_NTF
0x0C NCI_MT_NTF NCI_ANDROID_PASSIVE_OBSERVER_RESUMED_NTF
0x0D NCI_MT_CMD NCI_ANDROID_GET_POLLING_LOOP_ANNOTATION_CMD
NCI_MT_RSP NCI_ANDROID_GET_POLLING_LOOP_ANNOTATION_RSP

Comando get capabilities

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

L'NFCC deve rispondere con la risposta NCI_ANDROID_GET_CAPS_RSP con uno stato di STATUS_OK e l'elenco delle funzionalità supportate.

Se l'NFCC non supporta NCI_ANDROID_GET_CAPS_CMD, l'host deve presumere che ogni funzionalità assuma il valore predefinito specificato. Se una funzionalità specificata non viene restituita dal NFCC nella risposta, l'host deve presupporre 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 del 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 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
Tipo 1 ottetto L'identificatore della funzionalità
Len 1 ottetto Lunghezza (m) del valore
Valore m ottetti Il valore della funzionalità
Funzionalità proprietarie di Android
Nome della funzionalità ID Dimensioni Valore/descrizione
Modalità Osserva 0x00 1 ottetto Supporto della modalità di osservazione.
0x00 (predefinito) - Non supporta questa funzionalità.
0x01 - Supporta la funzionalità con disattivazione RF dall'host (richiesta per Android 15).
0x02 - Supporta la funzionalità senza disattivazione RF dall'host (richiesta per Android 16 e versioni successive).
Tutti gli altri valori sono RFU.
Notifica del frame di sondaggio 0x01 1 ottetto Supporto per le notifiche del frame di polling. 0x01 se supportato, 0x00 (valore predefinito) se non supportato. Tutti gli altri valori sono RFU.
Modalità di risparmio energetico 0x02 1 ottetto Supporto della modalità di risparmio energetico. 0x01 se supportato, 0x00 (valore predefinito) se non supportato. Tutti gli altri valori sono RFU.
Filtro del ciclo di polling di AutoTransact 0x03 1 ottetto Supporto dei filtri del ciclo di polling nel firmware per ignorare la modalità di osservazione per pattern specifici quando la modalità di osservazione è attivata a livello globale.
0x00 (predefinito) - Non supporta questa funzionalità
0x01 - Supporta i filtri del ciclo di polling
Tutti gli altri valori sono RFU
Numero di voci del frame di uscita supportate 0x04 1 ottetto Numero di voci del frame di uscita supportate. Sono necessarie almeno cinque voci del frame di uscita.
Annotazione della modalità Lettura 0x05 1 ottetto Supporto delle annotazioni in modalità Reader.
0x00 (impostazione predefinita) - Non supporta questa funzionalità.
0x01 - Supporta questa funzionalità.
Tutti gli altri valori sono RFU.
0x06..0xFF 0 ottetti Riservato per l'uso futuro

Comando di risparmio energetico

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

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

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

NCI_ANDROID_POWER_SAVING_CMD

Campi del payload Dimensioni Valore/descrizione
Modalità di 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 delle specifiche NCI.

Impostare il comando della modalità di osservazione

Per attivare o disattivare la modalità Osserva, l'organizzatore può utilizzare il comando NCI_ANDROID_PASSIVE_OBSERVE_MODE_CMD. L'NFCC deve rispondere con NCI_ANDROID_PASSIVE_OBSERVE_MODE_RSP con un codice di stato che indica l'esito positivo o negativo.

Quando la modalità di osservazione è disattivata, l'NFCC deve implementare l'attività della modalità di ascolto standard come da specifiche tecniche dell'attività.

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

L'NFCC deve disattivare la modalità di osservazione se l'host si spegne per qualsiasi motivo (ad esempio, batteria scarica o spegnimento 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 Disattivare la modalità di osservazione (impostazione predefinita)
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 del ciclo di polling

L'NFCC deve inviare la notifica NCI_ANDROID_POLLING_FRAME_NTF all'host dopo ogni frame del ciclo di polling. Quando vengono generate le notifiche RF_FIELD_INFO_NTF e NCI_ANDROID_POLLING_FRAME_NTF, il NFCC deve inviare NCI_ANDROID_POLLING_FRAME_NTF dopo RF_FIELD_INFO_NTF.

La notifica NCI_ANDROID_POLLING_FRAME_NTF è indipendente dall'attivazione o meno della modalità di osservazione. Quando la modalità di osservazione è attiva, l'NFCC deve sempre inviare una notifica NCI_ANDROID_POLLING_FRAME_NTF prima di procedere 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.
Tipo 1 ottetto Vedi i tipi di frame.
Bandiere 1 ottetto Vedi byte di flag.
Lunghezza 1 ottetto Lunghezza (m) del report sui dati di polling, 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
Polling frame Tipo Dimensioni Valore/Descrizione
Campo remoto 0x00 1 ottetto 0x00 Campo disattivato
0x01 Campo attivo
0x02..0xFF RFU
NFC-A 0x01 n ottetti Il valore deve includere un comando ISO 14443-3 (ad esempio REQ o WUP)
NFC-B 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 dei frame non elaborati
Definizione del byte di flag
Bandiere
b0 b1 b2 b3 b4 b5 b6 b7
0 Frame breve RFU RFU RFU RFU RFU RFU RFU
1 Frame lungo

Query observe mode status command

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 indica l'esito positivo o negativo.

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 del payload Dimensioni Valore/descrizione
Stato 1 ottetto Consulta i codici di stato nella tabella 140 delle specifiche NCI.
Maschera tecnologica 1 ottetto Maschera di bit che indica per quali tecnologie è attivata la modalità di osservazione:
  • Bit 0: NFC-A
  • Bit 1: NFC-B
  • Bit 2: NFC-F
  • Bit 3: NFC-V

Impostare il comando per le tecnologie di osservazione passiva

Per impostare le tecnologie di osservazione passiva, l'host può utilizzare il comando NCI_ANDROID_SET_PASSIVE_OBSERVER_TECH_CMD. Questo comando attiva o disattiva la modalità di osservazione per le tecnologie specificate senza richiedere RF_DEACTIVATE_CMD. L'NFCC deve rispondere con NCI_ANDROID_SET_PASSIVE_OBSERVER_TECH_RSP con un codice di stato che indica l'esito positivo o negativo.

NCI_ANDROID_SET_PASSIVE_OBSERVER_TECH_CMD

Campi del payload Dimensioni Valore/descrizione
Maschera tecnologica 1 ottetto Maschera di bit che indica per quali tecnologie attivare la modalità di osservazione:
  • Bit 0: NFC-A
  • Bit 1: NFC-B
  • Bit 2: NFC-F
  • Bit 3: NFC-V
Le tecnologie non impostate nella maschera devono continuare a funzionare in modalità di ascolto.

NCI_ANDROID_SET_PASSIVE_OBSERVER_TECH_RSP

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

Impostare il comando del frame di uscita dell'osservatore passivo

Per configurare la tabella dei frame di uscita della modalità Osserva, l'organizzatore può utilizzare il comando NCI_ANDROID_SET_PASSIVE_OBSERVER_EXIT_FRAME_CMD. Questo comando specifica i frame RF che attivano l'uscita dalla modalità di osservazione. Questo comando può essere inviato solo in RFST_IDLE. L'NFCC deve rispondere con NCI_ANDROID_SET_PASSIVE_OBSERVER_EXIT_FRAME_RSP con un codice di stato che indica l'esito positivo o negativo.

NCI_ANDROID_SET_PASSIVE_OBSERVER_EXIT_FRAME_CMD

Campi del payload Dimensioni Valore/descrizione
Altro 1 ottetto 0x00 - Last message
0x01 - More messages to follow
Timeout 2 ottetti Timeout in ms per ripristinare la modalità di osservazione (little endian).
Numero di voci RF Frame 1 ottetto Numero di campi di immissione del frame RF da seguire (n). 0x00 reimposta la tabella.
RF Frame entry [0..n] (2+x)*n ottetti
Qualifier-Type 1 ottetto Definisce il tipo di frame e le opzioni di corrispondenza.
Lunghezza del valore 1 ottetto Lunghezza "x" del campo Valore.
Valore x ottetti Stato di alimentazione (1), Dati di riferimento (n), Maschera (n). 1 <= n <= 16.

NCI_ANDROID_SET_PASSIVE_OBSERVER_EXIT_FRAME_RSP

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

Ottieni il comando del frame di uscita dell'osservatore passivo

Per recuperare la configurazione attuale della tabella del frame di uscita della modalità Osserva, l'host può utilizzare il comando NCI_ANDROID_GET_PASSIVE_OBSERVER_EXIT_FRAME_CMD. La NFCC deve rispondere con NCI_ANDROID_GET_PASSIVE_OBSERVER_EXIT_FRAME_RSP, seguito da NCI_ANDROID_GET_PASSIVE_OBSERVER_EXIT_FRAME_NTF.

NCI_ANDROID_GET_PASSIVE_OBSERVER_EXIT_FRAME_CMD

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

NCI_ANDROID_GET_PASSIVE_OBSERVER_EXIT_FRAME_RSP

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

NCI_ANDROID_GET_PASSIVE_OBSERVER_EXIT_FRAME_NTF

Campi del payload Dimensioni Valore/descrizione
Numero di voci di frame di uscita dalla modalità Osserva 1 ottetto Il numero di campi di inserimento del frame di uscita dalla modalità di osservazione da seguire (n).
Voce [0..n] x+2 octets Tipo di qualificatore (1), Lunghezza (1), Valore (x).

Comando NCI vuoto

Per cancellare NCI, l'host può utilizzare il comando NCI_ANDROID_BLANK_NCI_CMD. L'NFCC deve rispondere con NCI_ANDROID_BLANK_NCI_RSP con un codice di stato che indica l'esito positivo o negativo.

NCI_ANDROID_BLANK_NCI_CMD

Campi del payload Dimensioni Valore/descrizione
Lunghezza della struttura 1 ottetto Lunghezza dei dati del frame
Dati del frame n ottetti Dati del frame

NCI_ANDROID_BLANK_NCI_RSP

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

Impostare il comando di annotazione del ciclo di polling

Per impostare l'annotazione del ciclo di polling, l'organizzatore può utilizzare il comando NCI_ANDROID_SET_POLLING_LOOP_ANNOTATION_CMD per compilare la tabella dei frame di polling personalizzati. Questa tabella definisce i frame RF personalizzati da inserire all'interno di un ciclo di rilevamento standard. Questo comando può essere inviato solo in RFST_IDLE. L'NFCC deve rispondere con NCI_ANDROID_SET_POLLING_LOOP_ANNOTATION_RSP con un codice di stato che indica l'esito positivo o negativo.

NCI_ANDROID_SET_POLLING_LOOP_ANNOTATION_CMD

Campi del payload Dimensioni Valore/descrizione
Numero di voci di frame RF 1 ottetto Numero di voci da seguire (n), compreso tra 0 e 4. n=0 disattiva la funzionalità.
RF frame entry [1..n] 2 + x ottetti
Qualifier-Type 1 ottetto Definisce il tipo di frame, la tecnologia e la posizione nel ciclo di scoperta.
Lunghezza 1 ottetto Lunghezza del valore (x).
Valore x ottetti Tempo di attesa (1 byte) e frame RF (1-16 byte).

NCI_ANDROID_SET_POLLING_LOOP_ANNOTATION_RSP

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

Query sul comando di risparmio energetico

Per eseguire query sulla modalità di risparmio energetico, l'host può utilizzare il comando NCI_ANDROID_QUERY_POWER_SAVING_CMD. L'NFCC deve rispondere con NCI_ANDROID_QUERY_POWER_SAVING_RSP con un codice di stato che indica l'esito positivo o negativo.

NCI_ANDROID_QUERY_POWER_SAVING_CMD

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

NCI_ANDROID_QUERY_POWER_SAVING_RSP

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

Notifica di sospensione dell'osservatore passivo

L'NFCC deve inviare la notifica NCI_ANDROID_PASSIVE_OBSERVER_SUSPENDED_NTF all'host quando viene rilevato un frame di uscita, causando la sospensione della modalità di osservazione.

NCI_ANDROID_PASSIVE_OBSERVER_SUSPENDED_NTF

Campi del payload Dimensioni Valore/descrizione
Tipo 1 ottetto Tipo di fotogramma: 0x00=Tipo A, 0x01=Tipo B
Lunghezza 1 ottetto Lunghezza del valore (n)
Valore n ottetti Ricevuto frame corrispondente a una voce di frame di uscita.

Notifica di ripresa dell'osservatore passivo

L'NFCC deve inviare la notifica NCI_ANDROID_PASSIVE_OBSERVER_RESUMED_NTF all'host quando l'osservatore passivo viene ripristinato dopo un timeout o altre condizioni.

NCI_ANDROID_PASSIVE_OBSERVER_RESUMED_NTF

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

Ottieni il comando di annotazione del ciclo di polling

Per leggere la tabella del frame di polling personalizzato dell'NFCC, l'host può utilizzare il comando NCI_ANDROID_GET_POLLING_LOOP_ANNOTATION_CMD. Questo comando può essere inviato solo in RFST_IDLE. L'NFCC deve rispondere con NCI_ANDROID_GET_POLLING_LOOP_ANNOTATION_RSP con un codice di stato che indica l'esito positivo o negativo e le informazioni sul frame di polling personalizzato.

NCI_ANDROID_GET_POLLING_LOOP_ANNOTATION_CMD

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

NCI_ANDROID_GET_POLLING_LOOP_ANNOTATION_RSP

Campi del payload Dimensioni Valore/descrizione
Stato 1 ottetto Consulta i codici di stato nella tabella 140 della specifica NCI.
Numero di voci di frame RF 1 ottetto Numero di voci da seguire (n), compreso tra 0 e 4. n=0 disattiva la funzionalità.
RF frame entry [1..n] 2 + x ottetti Qualifier-Type 1 ottetto Definisce il tipo di frame, la tecnologia e la posizione nel ciclo di scoperta.
Lunghezza 1 ottetto Lunghezza del valore (x).
Valore x ottetti Tempo di attesa (1 byte) e frame RF (1-16 byte).

Implementazione

Per le implementazioni di riferimento, consulta quanto segue: