Por que um leitor e uma tag nunca podem falar ao mesmo tempo?
O leitor fornece o campo que mantém a tag viva, e a tag responde modulando esse mesmo campo. Existe um único canal e uma única fonte de energia, então os dois lados têm de se alternar. Toda troca é estritamente pergunta e resposta, nunca as duas ao mesmo tempo.
Por que o canal só leva uma voz
O leitor não é apenas um interlocutor, ele é a fonte de alimentação. O campo dele tem de se manter no ar continuamente ou a tag deixa de existir eletricamente. A tag não pode tomar o canal para si, porque fazer isso seria cortar o galho em que ela está sentada.
Então a tag responde do único modo que pode: variando quanta energia tira desse campo. O leitor está ao mesmo tempo falando, alimentando e escutando, e a tag só consegue responder nos espaços que o leitor deixa.
Quanto custa uma ida e volta
Cada troca é uma pergunta, uma pausa, uma resposta e outra pausa antes da pergunta seguinte. Essas pausas são curtas, mas acontecem por ida e volta e não por byte.
A consequência é contraintuitiva: duzentos bytes numa única troca são mais rápidos que duzentos bytes divididos em cinco. No NFC o recurso escasso não é a banda, é a troca de turno.
Por que muitos registros pequenos são lidos lentamente
Uma tag que guarda um registro com um endereço da web é lida em um punhado de trocas. O mesmo conteúdo dividido em seis registros curtos leva mais bytes de cabeçalho, então precisa de algumas trocas a mais e passa um pouco mais do tempo dela esperando entre uma e outra.
Vale saber disso antes de desenhar o conteúdo de uma tag. Se um toque parece arrastado, a pergunta útil é quantas coisas separadas o celular teve de pedir, e não quantos bytes voltaram.
O que acontece quando um turno é cortado
Mova o celular no meio de uma troca e a tag perde a alimentação entre uma pergunta e a resposta dela. Não existe buffer nem retomada: a sequência simplesmente para.
Para uma leitura isso é inofensivo, você não recebe nada e tenta de novo. Para uma gravação não é. A tag pode ficar com o começo de uma mensagem e nada mais, num estado que é lido como corrompido em vez de vazio. É essa a razão mecânica por trás do conselho de verificar uma gravação em vez de confiar que ela deu certo, e a razão pela qual um lote de tags gravado às pressas deve ser conferido antes de ser enviado.
Perguntas frequentes
Uma tag poderia interromper o leitor se precisasse?
Não. Ela não tem como sinalizar nada fora do campo que a alimenta, e não tem nenhuma autoridade sobre o canal. Uma tag só pode responder, e só quando o leitor deixou espaço para uma resposta.
É por isso que o NFC é mais lento do que a taxa de bits sugere?
Em grande parte, sim. As taxas definidas descrevem o canal enquanto ele está levando dados, e uma troca real passa boa parte do tempo nas pausas entre turnos. A vazão efetiva de uma leitura fica bem abaixo do número nominal.
A mesma limitação vale para a emulação de cartão?
Sim. Quando um celular emula um cartão, ele assume o papel que a tag teria, respondendo a um terminal externo que fornece o campo. A alternância de turnos é idêntica, só os papéis estão trocados.
Eu devo verificar cada gravação?
Para qualquer coisa que vá para produção, sim. Uma gravação cortada no meio da sequência deixa uma tag que parece gravada e não está, e o custo de conferir é um segundo por tag contra o custo de mil tags inúteis.