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 |