L'interface du contrôleur NFC (NCI) permet d'interagir avec un Contrôleur NFC (NFCC) Cette page décrit les caractéristiques techniques d'Android des commandes NCI propriétaires.
Définitions NCI
Les commandes NCI propriétaires d'Android utilisent l'ID de groupe propriétaire (GID) 0xF
.
et l'espace de code d'identifiant d'opération Android (OID) de 0xC
.
Format de paquet courant
Le format des paquets NCI Android respecte la spécification NCI pour les paquets de contrôle
à l'aide des propriétés Group_ID 0xF
et Opcode_ID 0x0C
propriétaires. Pour chaque Android
propriétaire, le premier octet de la charge utile du paquet doit être défini sur
Code d'opération Android (0x0C
). Les paquets de contrôle Android utilisent Message_Type
et
PBF
pour identifier les commandes, les réponses et les notifications de la même manière que
commandes standards.
Le tableau suivant présente le format des paquets Android:
0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
Message_Type
|
PBF
|
Group_ID = 0xF (PROPRIETARY)
|
|||||
réservés pour une utilisation future (RFU) | Opcode_ID = 0x0C (ANDROID)
|
||||||
Payload_Length
|
|||||||
Android_Opcode_ID
|
|||||||
Android_Payload
|
|||||||
Les identifiants de code d'opération Android attribués sont répertoriés dans le tableau suivant. La pour chaque paquet est présentée dans les sections suivantes.
OID Android | Type de message | Nom du message |
---|---|---|
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 |
Obtenir la commande "features"
L'hôte utilise NCI_ANDROID_GET_CAPS_CMD
pour interroger la liste.
des fonctionnalités propriétaires Android
compatibles avec le NFCC. La
La commande NCI_ANDROID_GET_CAPS_CMD
n'accepte aucun paramètre.
Le NFCC doit renvoyer la réponse NCI_ANDROID_GET_CAPS_RSP
avec un état
de STATUS_OK
et à la liste des fonctionnalités prises en charge.
Si le NFCC n'est pas compatible avec NCI_ANDROID_GET_CAPS_CMD
, l'hôte doit supposer
que chacune des capacités prenne
la valeur spécifiée par défaut. Si une valeur spécifiée
n'est pas renvoyée par le NFCC dans la réponse, l'hôte doit supposer que
la capacité a la valeur spécifiée par défaut.
NCI_ANDROID_GET_CAPS_CMD
Champs de charge utile | Taille | Valeur/description | |||||
---|---|---|---|---|---|---|---|
N/A | 0 octet |
NCI_ANDROID_GET_CAPS_RSP
Champs de charge utile | Taille | Valeur/description | |||||
---|---|---|---|---|---|---|---|
État | 1 octet | Reportez-vous aux codes d'état dans le tableau 140 de la spécification NCI. | |||||
Android_Version
|
2 octets | Identifie la version des exigences Android qui est mise en œuvre par le NFCC. | |||||
0x0000 | Android 15 | ||||||
Nombre de fonctionnalités | 1 octet | Nombre (n) de capacités prises en charge | |||||
Capacités[0..n] | (m + 2) * n octets | Fonctionnalités compatibles | |||||
Type | 1 octet | Identifiant de la capacité | |||||
Len | 1 octet | Longueur (m) de la valeur | |||||
Valeur | m octets | La valeur de la capacité |
Fonctionnalités Android propriétaires
Nom de la fonctionnalité | ID | Taille | Valeur/description | |||||
---|---|---|---|---|---|---|---|---|
Mode Observer | 0x00 | 1 octet | Prise en charge du mode Observation.
0x00 (par défaut) : cette fonctionnalité n'est pas compatible. 0x01 – Prend en charge la fonctionnalité avec la désactivation RF de l'hôte (obligatoire pour Android 15 ou version ultérieure). Toutes les autres valeurs sont RFU. |
|||||
Notification de trame de sondage | 0x01 | 1 octet | Prise en charge des notifications de cadre d'interrogation. 0x01 si compatible, 0x00 (par défaut) dans le cas contraire. Toutes les autres valeurs sont RFU. | |||||
Mode Économie d'énergie | 0x02 | 1 octet | Compatibilité avec le mode Économie d'énergie. 0x01 si compatible, 0x00 (par défaut) dans le cas contraire. Toutes les autres valeurs sont RFU. | |||||
Filtre de boucle d'interrogation auotransact | 0x03 | 1 octet | Prise en charge des filtres de boucle d'interrogation dans le micrologiciel afin de contourner le mode d'observation pour des schémas spécifiques lorsque ce mode est activé de manière globale.
0x00 (par défaut) : cette fonctionnalité n'est pas compatible. 0x01 – Prend en charge les filtres de boucle d'interrogation Toutes les autres valeurs sont RFU |
|||||
0x04..0xFF | 0 octet | Réservé pour une utilisation ultérieure |
Commande d'économie d'énergie
Pour faire passer le NFCC au mode Économie d'énergie, l'hôte peut utiliser la
NCI_ANDROID_POWER_SAVING_CMD
. Le NFCC doit répondre avec
NCI_ANDROID_POWER_SAVING_RSP
par un code d'état
indiquant la réussite ou l'échec.
En mode Économie d'énergie, l'hôte ne doit envoyer aucune commande au NFCC le NFCC ne doit envoyer aucune notification ni réponse à l'hôte. Le NFCC ou l'élément sécurisé intégré (eSE) peut accepter automatiquement les demandes de paiement entrantes en fonction de la configuration de routage définie avant d'activer le mode économie d'énergie .
Pour revenir au mode plein écran, l'hôte peut réinitialiser ou réinitialiser le NFCC.
NCI_ANDROID_POWER_SAVING_CMD
Champs de charge utile | Taille | Valeur/description | |
---|---|---|---|
Mode Économie d'énergie | 1 octet | 0x00 | Désactiver le mode Économie d'énergie |
0x01 | Activer le mode Économie d'énergie |
NCI_ANDROID_POWER_SAVING_RSP
Champs de charge utile | Taille | Valeur/description | |||||
---|---|---|---|---|---|---|---|
État | 1 octet | Reportez-vous aux codes d'état indiqués dans le tableau 140 de la spécification NCI. |
Définir la commande du mode observation
Pour activer ou désactiver le mode Observation, l'hôte peut utiliser les
NCI_ANDROID_PASSIVE_OBSERVE_MODE_CMD
. Le NFCC doit répondre avec
NCI_ANDROID_PASSIVE_OBSERVE_MODE_RSP
par un code d'état indiquant une réussite ou
l'échec.
Lorsque le mode d'observation est désactivé, le NFCC doit implémenter la l'activité standard du mode d'écoute conformément à la Caractéristiques techniques de l'activité.
Lorsque le mode Observation est actif, le NFCC ne doit répondre à aucun sondage
pendant la boucle d'interrogation en mode d'écoute, sauf autorisation explicite
l'hôte. Le NFCC doit envoyer la notification RF_FIELD_INFO_NTF
(comme défini par
la section 5.3
spécification NCI)
lorsqu'il détecte une activation de champ. Si la détection du mode sondage est active, le NFCC
devez implémenter l'activité en mode sondage conformément aux
Caractéristiques techniques de l'activité.
Le NFCC peut mettre en cache les informations du sondage afin de poursuivre immédiatement avec l’appareil
dès que le mode d'observation est désactivé.
Le NFCC doit désactiver le mode observation si l'hôte s'arrête pour une raison quelconque. (par exemple, une batterie déchargée ou un arrêt à l'initiative de l'utilisateur) afin que les transactions peuvent se poursuivre.
NCI_ANDROID_PASSIVE_OBSERVE_MODE_CMD
Champs de charge utile | Taille | Valeur/description | |
---|---|---|---|
mode Observation | 1 octet | 0x00 | Désactiver le mode Observation (par défaut) |
0x01 | Activer le mode Observation |
NCI_ANDROID_PASSIVE_OBSERVE_MODE_RSP
Champs de charge utile | Taille | Valeur/description | |||||
---|---|---|---|---|---|---|---|
État | 1 octet | Reportez-vous aux codes d'état dans le tableau 140 de la spécification NCI. |
Notification de boucle d'interrogation
Le NFCC doit envoyer la notification NCI_ANDROID_POLLING_FRAME_NTF
à l'hôte.
après chaque trame de la boucle d'interrogation. Lorsque RF_FIELD_INFO_NTF
et
NCI_ANDROID_POLLING_FRAME_NTF
notifications sont générées, le NFCC doit envoyer
NCI_ANDROID_POLLING_FRAME_NTF
après RF_FIELD_INFO_NTF
.
La notification NCI_ANDROID_POLLING_FRAME_NTF
est indépendante du fait que
le mode Observation est actif ou non. Lorsque le mode Observation est actif,
le NFCC doit toujours envoyer une notification NCI_ANDROID_POLLING_FRAME_NTF
avant
la transaction.
NCI_ANDROID_POLLING_FRAME_NTF
Champs de charge utile | Taille | Valeur/description | |||||
---|---|---|---|---|---|---|---|
Données de sondage[0..n] | (m +3) * n octets | Liste des demandes de sondage reçues depuis la dernière . Chaque résultat indique le type (technologie) de l'objet et les données identifiables associées à la demande, en fonction de la technologie utilisée. | |||||
Type | 1 octet | Consultez la section Types de cadres. | |||||
Drapeaux | 1 octet | Voir octet de l'indicateur. | |||||
Durée | 1 octet | Longueur (m) du rapport sur les données de sondage, y compris les champs de code temporel et de gain. | |||||
Code temporel | 4 octets | Horodatage mesuré en millisecondes de la réception des requêtes d'interrogation, big endian. | |||||
Gain | 1 octet | Force de la demande d'interrogation.
0xFF indique que la valeur n'est pas disponible. |
|||||
Données | m - 5 octets | Renvoie les données identifiables présentes dans la demande d'interrogation. |
Types de cadres
Frame d'interrogation | Type | Taille | Valeur/Description | |
---|---|---|---|---|
Champ distant | 0x00 | 1 octet | 0x00 | Champ désactivé |
0x01 | Champ activé | |||
0x02..0xFF | RFU | |||
NFC-A | 0x01 | n octets | La valeur doit inclure une commande ISO 14443-3 (REQ ou WUP, par exemple). | |
NFC-B | 0x02 | n octets | La valeur doit inclure un octet AIF et une commande ISO 14443-3 (par exemple, REQ ou WUP) | |
NFC-F | 0x03 | n octets | La valeur doit inclure une commande ISO 14443-3 (REQ ou WUP, par exemple). | |
NFC-V | 0x04 | n octets | La valeur doit inclure une commande ISO 14443-3 (REQ ou WUP, par exemple). | |
Inconnu | 0x07 | n octets | Données de trame brutes |
Définition de l'octet d'indicateur
Drapeaux | ||||||||
---|---|---|---|---|---|---|---|---|
O | b1 | b2 | B3 | B4 | B5 | B6 | B7 | |
0 | Cadre court | RFU | RFU | RFU | RFU | RFU | RFU | RFU |
1 | Cadre long |
Interroger la commande d'état du mode observation
Pour récupérer l'état actuel du mode de commande passif, l'hôte peut utiliser
la commande NCI_ANDROID_QUERY_PASSIVE_OBSERVER_STATUS_CMD
. Le NFCC doit
répondre avec NCI_ANDROID_QUERY_PASSIVE_OBSERVER_STATUS_RSP
avec un état
indiquant la réussite de l'échec.
NCI_ANDROID_QUERY_PASSIVE_OBSERVER_STATUS_CMD
Champs de charge utile | Taille | Valeur/description | |||||
---|---|---|---|---|---|---|---|
N/A | 0 octet |
NCI_ANDROID_QUERY_PASSIVE_OBSERVER_STATUS_RSP
Champs de charge utile | Taille | Valeur/description | |
---|---|---|---|
État | 1 octet | Reportez-vous aux codes d'état du tableau 140 de la spécification NCI. | |
mode Observation | 1 octet | 0x00 | Mode Observer désactivé |
0x01 | Mode Observer activé |