Путаница в режимах работы NFC

Я пытаюсь понять технологию NFC. У меня есть базовое понимание протокола, физики, лежащей в основе технологии, и огромной мощности, которую она привносит в широкий спектр приложений, которые могут быть там.

Теперь я пытаюсь понять различные режимы, в которых может работать устройство с поддержкой NFC (может быть смартфон).

Я понимаю, что устройство может играть роль устройства чтения/записи или карты (эмулятора карты). Однако я не понимаю, зачем нужны режимы работы инициатор и цель?

Я понимаю: -

В пассивном режиме связи между двумя устройствами с поддержкой NFC одно устройство выполняет активную роль (таким образом, действуя как устройство чтения/записи), а другое устройство выполняет пассивную роль (и, таким образом, действует как эмулятор карты).

И мы знаем, что активное устройство (в пассивном режиме связи между двумя NFC-устройствами) — это то, которое создает радиочастотное поле и постоянно опрашивает, чтобы обнаружить близлежащие устройства с поддержкой NFC, которые готовы действовать как эмулятор карты.

Так разве не очевидно, что устройство, действующее как активное устройство (принимающее на себя роль читателя/писателя), является инициатором связи? Почему требуются отдельные режимы инициатора и цели**, если их можно легко вывести из роли **считывателя/записи или карты?


person qre0ct    schedule 28.11.2014    source источник


Ответы (1)


Вы правильно поняли:

Различие между целью и инициатором имеет значение только в режиме одноранговой связи (он же Android Beam). В этом режиме одно устройство питает поле и действует как устройство чтения/записи карт. Это инициатор. Другое устройство берет на себя целевую роль и технически действует как эмулятор карты.

Разница между целью и инициатором существенна в протоколе LLCP, который реализует функциональность одноранговой сети. Причина этого в том, что цель не может отправлять данные самостоятельно. Сначала его нужно спросить у инициатора, хочет ли он что-то отправить.

Протокол LLCP (среди прочего) абстрагирует эту разницу и позволяет инициатору опрашивать цель через равные промежутки времени. Если вы пишете коммуникационный код поверх этого протокола (или где-то еще выше в стеке протоколов), вам больше не нужно беспокоиться о режиме цели/инициатора.

Для полноты здесь также есть режим работы в одноранговой сети, когда два устройства питают поле (называемый активным режимом), но он редко используется, потому что его поддержка не так велика.

Чтобы ответить на ваш вопрос:

Почему требуется отдельный режим инициатора и целевого **, если его можно легко вывести из роли ** чтения/записи или карты

Именование существует, чтобы избежать путаницы. Возьмем, к примеру, одноранговый режим инициатора: также технически он на 95% идентичен режиму чтения/записи, но все же есть некоторые незначительные отличия. Вы не хотите, чтобы ваш одноранговый инициатор подключался к реальной карте, а только, например, к одноранговым целям.

Именование инициатора этого режима вместо чтения/записи позволяет избежать путаницы.

person Nils Pipenbrinck    schedule 28.11.2014
comment
Спасибо. Но все еще есть небольшая путаница, и я был бы признателен за любую помощь и здесь. Когда устройство принимает активную роль, оно становится устройством чтения/записи и, следовательно, по умолчанию инициатором, верно? Таким образом, устройство, на котором установлен режим чтения/записи, просто начнет отправлять команды на устройство, на котором установлен режим карты (и, следовательно, по умолчанию цель), верно? Итак, снова вопрос, почему этому второму устройству, на котором установлен режим карты, явно нужно снова установить целевой режим, когда это неявно уже понятно? (И то же самое с 1-м устройством) - person qre0ct; 28.11.2014