Commandes NCI propriétaires Android

L'interface de contrôleur NFC (NCI) permet d'interagir avec un contrôleur NFC (NFCC). Cette page décrit les spécifications des commandes NCI propriétaires d'Android.

Définitions NCI

Les commandes NCI propriétaires d'Android utilisent l'ID de groupe (GID) propriétaire 0xF et l'espace de code de l'OID (opcode identifier) Android de 0xC.

Format de paquet courant

Le format de paquet NCI Android suit la spécification NCI pour les paquets de contrôle à l'aide des Group_ID 0xF et Opcode_ID 0x0C propriétaires. Pour chaque message propriétaire Android, le premier octet de la charge utile du paquet doit être défini sur l'opcode 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 les commandes standards.

Le format de paquet Android est présenté dans le tableau suivant:

0 1 2 3 4 5 6 7
Message_Type PBF Group_ID = 0xF (PROPRIETARY)
réservé pour une utilisation ultérieure (RFU) Opcode_ID = 0x0C (ANDROID)
Payload_Length
Android_Opcode_ID
Android_Payload

Les identifiants d'opcode Android attribués sont indiqués dans le tableau suivant. La spécification de 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

Commande "Get capabilities" (Obtenir les fonctionnalités)

L'hôte utilise NCI_ANDROID_GET_CAPS_CMD pour interroger la liste des fonctionnalités propriétaires Android compatibles avec le NFCC. La commande NCI_ANDROID_GET_CAPS_CMD n'accepte aucun paramètre.

Le NFCC doit répondre avec la réponse NCI_ANDROID_GET_CAPS_RSP avec un état STATUS_OK et la liste des fonctionnalités et fonctionnalités compatibles.

Si le NFCC n'est pas compatible avec NCI_ANDROID_GET_CAPS_CMD, l'hôte doit supposer que les fonctionnalités prennent chacune la valeur par défaut spécifiée. Si une capacité 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 octets

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 fonctionnalités compatibles
Capabilities[0..n] (m + 2) * n octets Fonctionnalités proposées
Type 1 octet Identifiant de la capacité
Len 1 octet Longueur (m) de la valeur
Valeur m octets Valeur de la capacité
Fonctionnalités propriétaires Android
Nom de la capacité ID Taille Valeur/description
Mode observation 0x00 1 octet Prise en charge du mode Observation.
0x00 (par défaut) : cette fonctionnalité n'est pas compatible.
0x01 : compatible avec la fonctionnalité de désactivation de la RF à partir de l'hôte (requis pour Android 15 ou version ultérieure).
Toutes les autres valeurs sont RFU.
Notification de frame de sondage 0x01 1 octet Prise en charge des notifications de frame de sondage. 0x01 si compatible, 0x00 (par défaut) si non compatible. 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 pour contourner le mode d'observation pour des modèles spécifiques lorsque le mode d'observation est activé globalement.
0x00 (par défaut) : cette fonctionnalité n'est pas prise en charge
0x01 : les filtres de boucle de sondage sont acceptés
Toutes les autres valeurs sont réservées
0x04..0xFF 0 octets 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 commande NCI_ANDROID_POWER_SAVING_CMD. Le NFCC doit répondre avec NCI_ANDROID_POWER_SAVING_RSP avec 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, et le NFCC ne doit envoyer aucune notification ni réponse à l'hôte. Le NFCC ou le composant 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 Consultez les codes d'état dans le tableau 140 de la spécification NCI.

Définir la commande du mode observation

Pour activer ou désactiver le mode d'observation, l'hôte peut utiliser la commande NCI_ANDROID_PASSIVE_OBSERVE_MODE_CMD. Le NFCC doit répondre avec NCI_ANDROID_PASSIVE_OBSERVE_MODE_RSP avec un code d'état indiquant la réussite ou l'échec.

Lorsque le mode d'observation est désactivé, le NFCC doit implémenter l'activité en mode d'écoute standard conformément aux spécifications techniques de l'activité.

Lorsque le mode Observation est actif, le NFCC ne doit pas répondre à des requêtes d'interrogation pendant la boucle d'interrogation en mode écoute, sauf si l'hôte l'autorise explicitement. Le NFCC doit envoyer la notification RF_FIELD_INFO_NTF (comme défini dans la section 5.3 de la spécification NCI) lorsqu'il détecte l'activation du champ. Si la découverte du mode de requête est active, la NFCC doit implémenter l'activité en mode de requête conformément aux spécifications techniques de l'activité. Le NFCC peut mettre en cache les informations d'interrogation afin de procéder immédiatement à l'activation de 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, en cas de batterie ou d'arrêt déclenché par l'utilisateur) afin que les transactions SE puissent se poursuivre.

NCI_ANDROID_PASSIVE_OBSERVE_MODE_CMD

Champs de charge utile Taille Valeur/description
mode Observation 1 octet 0x00 Désactiver le mode d'observation (par défaut)
0x01 Activer le mode d'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 boucle de sondage. Lorsque les notifications RF_FIELD_INFO_NTF et NCI_ANDROID_POLLING_FRAME_NTF 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 de l'activation ou non du mode d'observation. Lorsque le mode d'observation est actif, le NFCC doit toujours envoyer une notification NCI_ANDROID_POLLING_FRAME_NTF avant de procéder à 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 requêtes de sondage reçues depuis la dernière notification. Chaque résultat indique le type (technologie) des requêtes reçues et les données identifiables de la requête en fonction de la technologie.
Type 1 octet Consultez les types de cadres.
Drapeaux 1 octet Voir octet d'indicateur.
Durée 1 octet Longueur (m) du rapport sur les données de sondage, y compris les champs d'horodatage et de gain.
Code temporel 4 octets Code temporel mesuré en millisecondes de la réception des requêtes de sondage, big endian.
Gain 1 octet Intensité de la requête de sondage.
 0xFF indique que la valeur n'est pas disponible.
Données m : 5 octets Renvoie les données identifiables présentes dans la requête de sondage
Types de cadres
Frame de sondage 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 (par exemple, REQ ou WUP).
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 (par exemple, REQ ou WUP).
NFC-V 0x04 n octets La valeur doit inclure une commande ISO 14443-3 (par exemple, REQ ou WUP).
Inconnu 0x07 n octets Données de frame brutes
Définition de l'octet d'indicateur
Drapeaux
b0 b1 b2 B3 b4 b5 b6 b7
0 Cadre court RFU RFU RFU RFU RFU RFU RFU
1 Cadre long

Requête de commande d'état du mode d'observation

Pour récupérer l'état actuel du mode d'ordre 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 code d'état indiquant le succès ou l'échec.

NCI_ANDROID_QUERY_PASSIVE_OBSERVER_STATUS_CMD

Champs de charge utile Taille Valeur/description
N/A 0 octets

NCI_ANDROID_QUERY_PASSIVE_OBSERVER_STATUS_RSP

Champs de charge utile Taille Valeur/description
État 1 octet Consultez les codes d'état dans le tableau 140 de la spécification NCI.
mode d'observation 1 octet 0x00 Mode Observer désactivé
0x01 Mode Observer activé