2013-07-23 4 views
6

Je travaille avec un lecteur sans contact pour communiquer avec mon appareil Android.Comment Android interroge les appareils NFC

J'ai remarqué que je ne peux pas me connecter à mon appareil Android en utilisant le P2P. Si je veux me connecter pour lancer un transfert Android Beam, je dois continuellement essayer de me connecter à l'appareil plusieurs fois sur une période d'une seconde.

Un appareil Android NFC peut détecter des cartes sans contact, des cibles P2P NFC et des initiateurs P2P NFC, c'est-à-dire 3 modes différents. Je commence à penser qu'il y a une sorte de sondage en coulisse qui passe très rapidement entre les trois modes.

Cela signifie qu'à tout moment lorsque j'essaie de me connecter au téléphone, il peut ou non être dans le bon mode et échouera. C'est pourquoi j'ai besoin de tenter plusieurs connexions.

J'ai regardé la source Android pour essayer de comprendre cela sans vraiment de chance. here est le fichier le plus prometteur que j'ai vu, mais ça n'a toujours pas de sens.

Ma question est: Comment Android détecte-t-il plusieurs modes NFC, utilise-t-il un algorithme de commutation et si oui, quelles sont les spécificités de l'algorithme?

Merci.

Répondre

5

Je commence à penser qu'il ya un certain genre de sondages se passe dans les coulisses qui passe entre les trois modes très rapidement.

Exactement cela se passe. Les différentes technologies sont multiplexées dans le temps. C'est beaucoup plus que trois modes cependant. En général, un dispositif NFC sondera pour:

  • Lecteur ISO14443 A
  • lecteur ISO14443 B
  • lecteur FeliCa (aka type de balise 3)
  • Reader ISO15693
  • Card Emulation ISO14443 A
  • carte Émulation ISO14443 B
  • Émulation de carte Felica

Le mode Peer-to-Peer utilise le lecteur A, Reader FeliCa comme initiateur. L'émulation de cartes A et l'émulation de cartes Felica sont également utilisées en tant que technologie de mode cible Peer-to-Peer.

La synchronisation exacte de l'interrogation n'est pas publique et vous ne trouverez pas grand-chose à ce sujet dans le code source. Ceci est géré par la puce NFC en interne.

+0

Grande réponse pour confirmer mes soupçons, merci. Est-ce que ça vous dérange de demander comment vous le savez? Avez-vous des liens de référence que je pourrais avoir un balayage sur? Merci. – conor

+0

Eh bien, je connais chaque puce NFC à l'envers parce que dans mon travail je développe des puces et des middleware NFC. (partie d'une équipe de cause). Si les puces ne fonctionnent pas et ont des problèmes de connexion, mon travail consiste souvent à brancher un traceur RF, à capturer ce qui se passe et à creuser au niveau du bit là où se trouve le problème. Donc, je vois la boucle d'interrogation tous les jours. –